Skip to content

style: remove positive letter spacing from Inter headings#780

Draft
croswell wants to merge 3 commits into
mainfrom
style/remove-inter-positive-letter-spacing
Draft

style: remove positive letter spacing from Inter headings#780
croswell wants to merge 3 commits into
mainfrom
style/remove-inter-positive-letter-spacing

Conversation

@croswell

Copy link
Copy Markdown

Description

Inter headings and body copy currently inherit small positive letter spacing from the upstream @kajabi-ui/styles heading tokens (--pine-letter-spacing-heading-1…6, ranging .26px.16px), which reads as too spread out. Most notably the large headings are missing the tight tracking they should have.

This adds a local token override — following the existing _motion.scss pattern — that normalizes the values without renaming any tokens:

  • --pine-letter-spacing (body/default) → 0 (also cleans up the invalid upstream .16px * -1 value, which browsers already ignore)
  • --pine-letter-spacing-heading-1 / -2-0.025em (matches Tailwind's tracking-tight)
  • --pine-letter-spacing-heading-3-60

The new file libs/core/src/global/styles/_letter-spacing.scss is @used in app.scss immediately after the upstream import so its :root definitions win. Consuming components need no changes — they inherit the updated values. pds-filter's direct use of the raw core token --pine-letter-spacing-114 is intentionally left as-is.

No new dependencies.

Note

This is a deliberately narrow, incremental fix. It stops the bleeding on Inter's positive tracking by overriding token values in place, without restructuring the token API. See "Follow-up" below for the more holistic work.

Follow-up (root-cause / holistic)

This PR intentionally does not tackle the following, which should be handled in a dedicated follow-up:

  • Restructure the scale to a named Tailwind-style API (--pine-letter-spacing-tighter / tight / normal / wide / wider / widest) instead of the role-based --pine-letter-spacing-heading-* tokens, and repoint all consumers. This is the "at the root" cleanup and is a larger, purely-structural change (~16 SCSS files + Storybook chrome).
  • Fix upstream in @kajabi-ui/styles so the override file can be deleted (the base --pine-letter-spacing value there is invalid CSS, and headings ship positive tracking). This override is designed to be removed in the same PR that bumps to a corrected @kajabi-ui/styles.
  • Reconcile the docs tables: <DocTokenTable category="letter-spacing" /> reads the upstream JSON, so it still shows the old upstream values.
  • Remove the now-dead , normal fallback in libs/core/src/utils/truncation-tooltip.ts (it guarded the previously-invalid upstream value).

Before / after

Real Pine typography (Inter, correct weights/sizes) with the current upstream letter spacing (left) vs. this PR's values (right). The visible win is the tighter h1/h2; h3–h6 and body are effectively unchanged because the upstream positive tracking there was already sub-pixel/no-op.

Letter spacing before/after comparison

Zoomed in on a heading — the end-of-line markers expose the width delta (grey = before, purple = after tracking-tight):

Zoomed h1 before/after tracking-tight

Type of change

  • Bug fix (non-breaking change which fixes an issue)

How Has This Been Tested?

  • unit tests
  • tested manually

Verified via the core build/lint/test targets (@pine-ds/core:build, :lint, :test — 2906 tests passing). Confirmed the override wins in the compiled pine-core.css (our :root block emits after the upstream one). CSS custom-property overrides live in the global stylesheet and are not represented in Stencil spec snapshots, so existing component tests are unaffected.

Checklist:

  • My code follows the style guidelines of this project
  • I have performed a self-review of my code
  • I have commented my code, particularly in hard-to-understand areas
  • My changes generate no new warnings
  • Design has QA'ed and approved this PR

Review: The Pine gauntlet (design + existence reviewers) was run on this branch — APPROVED, no blockers or should-fix items; three CONSIDER notes (two folded into the file's comments, one is the truncation-tooltip.ts cleanup listed under Follow-up).

To show artifacts inline, enable in settings.

Open in Web Open in Cursor 

@netlify

netlify Bot commented Jul 19, 2026

Copy link
Copy Markdown

Deploy Preview for pine-design-system ready!

Name Link
🔨 Latest commit e06b89b
🔍 Latest deploy log https://app.netlify.com/projects/pine-design-system/deploys/6a5d123b63211900080a55e1
😎 Deploy Preview https://deploy-preview-780--pine-design-system.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@github-actions github-actions Bot added the package: core Changes have been made to the Core package label Jul 19, 2026
@croswell croswell added the ran-gauntlet Multi-agent review gauntlet has been run on this branch label Jul 19, 2026 — with Cursor
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

package: core Changes have been made to the Core package ran-gauntlet Multi-agent review gauntlet has been run on this branch

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants