Skip to content

docs(foundations): add motion, RTL, status, and Code Connect coverage docs#736

Merged
QuintonJason merged 11 commits into
mainfrom
docs/foundations
Jun 2, 2026
Merged

docs(foundations): add motion, RTL, status, and Code Connect coverage docs#736
QuintonJason merged 11 commits into
mainfrom
docs/foundations

Conversation

@QuintonJason

@QuintonJason QuintonJason commented May 15, 2026

Copy link
Copy Markdown
Contributor

Description

Lands four cross-cutting documents that close several gaps in the Pine design-system maturity map:

  • Guides / Motion (libs/core/src/stories/guides/motion.docs.mdx) — principles and implementation hints for component animation; explicitly flags the absence of dedicated motion tokens so consumers know where to align until tokens ship.
  • Guides / RTL and localization (libs/core/src/stories/guides/rtl-and-localization.docs.mdx) — what teams should assume today plus a per-component audit checklist that PRs check off as RTL behavior gets verified.
  • Resources / Component status (libs/core/src/stories/resources/component-status.docs.mdx) — central Stable / Beta / Deprecated table covering all 35 components, with a documented update process tied to changelog entries.
  • Code Connect coverage (libs/figma/CODE_CONNECT_COVERAGE.md) — tracks which Pine components and patterns have a matching .figma.ts file, with a list of unmapped components.

Also cross-links the new Component status and RTL pages from the Support docs page so the team can find them from the channel directory.

This PR is foundation for follow-up quick-win PRs that build on these docs (per-component status badges, RTL audit execution, motion tokens). No code or behavior changes.

Fixes #(no-issue)

Type of change

  • This change requires a documentation update (it is the documentation update)

How Has This Been Tested?

Verified locally:

  • The four new MDX docs render in Storybook (Guides/Motion, Guides/RTL and localization, Resources/Component status).

  • The Code Connect coverage table cross-references real files under libs/figma/.

  • The Support docs cross-links resolve.

  • unit tests

  • e2e tests

  • accessibility tests

  • tested manually

  • other:

Test Configuration:

  • Pine versions: 3.25.1 (current main)
  • OS: macOS 25.3.0
  • Browsers: Storybook preview
  • Screen readers: n/a
  • Misc: documentation-only

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
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing tests pass locally with my changes
  • Design has QA'ed and approved this PR

Follow-ups (separate PRs)

  • Per-component status badges sourced from the central status table.
  • Execute the RTL audit rows component-by-component.
  • Add motion tokens to close the gap motion.docs.mdx flags.

cc @Kajabi/dss-devs


Note

Medium Risk
Touches overlay positioning (filters), horizontal scroll semantics (tables), and visual states across many form components; regressions are possible in LTR and especially RTL, though changes are mostly CSS and shared scroll helpers with tests.

Overview
Adds RTL-aware layout and behavior across Pine core: Storybook gets a Direction toolbar (withDirection on the preview iframe only), plus new Guides/RTL and localization and Support cross-links.

Introduces scroll utilities (RTL scrollLeft models, getScrollOffsetFromStart, isScrolledFromInlineStart) with unit tests, wired into pds-table responsive shadows and fixed-column scroll state. pds-filter popover flipping and fallback positioning now respect inline-end overflow under RTL; several form controls swap physical left/right for logical inset/border properties (checkbox checkmarks, combobox icon, input/select, switch thumb, table cells).

Ships Pine-internal motion tokens (_motion.scss, imported in app.scss), documents them in Guides/Motion, and adopts them on pds-modal backdrop transitions (with prefers-reduced-motion duration collapse). Also adds libs/figma/CODE_CONNECT_COVERAGE.md and small polish (e.g. disabled select chevron, tooltip fit-content).

Reviewed by Cursor Bugbot for commit 716f220. Bugbot is set up for automated code reviews on this repo. Configure here.

@netlify

netlify Bot commented May 15, 2026

Copy link
Copy Markdown

Deploy Preview for pine-design-system ready!

Name Link
🔨 Latest commit 716f220
🔍 Latest deploy log https://app.netlify.com/projects/pine-design-system/deploys/6a1f18d0885b6900083f6a62
😎 Deploy Preview https://deploy-preview-736--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.

Comment thread libs/core/src/components/pds-tooltip/pds-tooltip.scss Outdated
Comment thread libs/core/src/components/pds-table/pds-table.tsx
Comment thread libs/core/src/components/pds-table/pds-table.tsx Outdated
Comment thread libs/core/src/utils/scroll.ts
Comment thread libs/core/src/components/pds-table/pds-table.scss
Comment thread libs/core/src/utils/scroll.ts Outdated
@QuintonJason QuintonJason self-assigned this May 29, 2026
… docs

Land four cross-cutting documents that close several gaps in the Pine
design-system maturity map:

- Guides/Motion — principles and implementation hints for component
  animation; flags the absence of dedicated motion tokens.
- Guides/RTL and localization — assumptions teams should make today
  plus an audit checklist with every Pine component.
- Resources/Component status — central Stable/Beta/Deprecated table
  covering all 35 Pine components.
- libs/figma/CODE_CONNECT_COVERAGE.md — tracks which Pine components
  have a matching Code Connect mapping.

Also cross-link the new Component status and RTL pages from the
Support docs page.
Replace physical left/right with inset-inline properties in combobox,
input, table sticky cells, tooltip arrows, and scroll shadows. Make
table scroll-shadow visibility respect RTL scroll positions. Remove
the per-component audit checklist from the RTL guide.
Add shared scroll utils with cross-browser RTL scrollLeft detection.
Use them for table shadows and fixed-column has-scrolled state. Revert
tooltip arrow positioning to physical left/right to match Floating UI
placement classes.
Fix swapped default/reverse RTL scrollLeft normalization, add scrollable
content to the browser probe, use valid gradient directions with RTL
overrides, and expand scroll utility tests.
* feat(storybook): add LTR/RTL preview toggle and audit pointer

Add a Direction global type with an LTR/RTL toolbar control. The
withDirection decorator applies dir on documentElement and body for
the active story (and the parent docs frame), matching the consumer
contract for RTL surfaces.

Update the RTL and localization guide with a How to audit section
pointing teams at the toggle. The audit checklist stays intentionally
unchecked; rows should be marked off in the PR that proves behavior.

* fix(storybook): use direction icon for RTL toolbar

* fix(storybook): scope RTL dir to preview iframe only

* fix(storybook): use valid transfer icon for direction toolbar

* docs(storybook): update RTL guide cross-reference in preview
* feat(motion): add Pine-internal motion token scaffold

Add libs/core/src/global/styles/_motion.scss exposing duration and
easing CSS custom properties (--pine-motion-duration-{fast,base,slow}
and --pine-motion-easing-{out,in,in-out}). Wired into app.scss so the
tokens land in the global stylesheet alongside fonts.

Durations collapse to 0ms under prefers-reduced-motion so consumer
components inherit the override without per-component media queries.

Update the Guides/Motion doc to remove the no-tokens disclaimer,
document the new tokens with usage tables, and call out the upstream
follow-up to consolidate into @kajabi-ui/styles.

* feat(motion): strengthen contract comment, migrate pds-modal backdrop

Address review feedback on the motion-tokens PR:

- Strengthen the namespace contract comment in _motion.scss to make
  clear Pine is claiming the upstream-canonical names and that the
  file is to be removed when @kajabi-ui/styles publishes motion.
- Migrate pds-modal __backdrop transition from raw 0.2s ease to
  var(--pine-motion-duration-base) var(--pine-motion-easing-out) so
  the new tokens have at least one production consumer.
- Document the reduced-motion limitation (override applies to
  duration only; JS-driven animations need their own matchMedia check).

* style(pds-modal): use ease-in on backdrop exit, ease-out on enter

@pixelflips pixelflips left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see this is a docs update, so nothing is blocking here, but I did notice a few issues with components when trying out the LTR & RTL toggle. Will note the issues below, but feel free to ticket or fix in a follow-up.

RTL:

  • checkbox - checked icon is backwards.
  • checkbox - indeterminite - is out of alignment.
  • filters - may have to check positioning of dropdown
  • input (with prepend select) - on the dropdown button, radius seems off
  • input (with append select) - on the dropdown button, radius seems off
  • select - icon doesn't dim on disabled state (existing but noting)
  • switch - toggle control layout broken when off
  • tooltip (html content) - arrow doesn't align properly on the tooltip container

Otherwise LGTM! 👍🏼

Correct checkbox checkmark mirroring, switch knob positioning, filter
popover anchor placement, input addon select radii, select disabled icon
dimming, and tooltip html-content arrow alignment under dir=rtl.
Comment thread libs/core/src/components/pds-select/pds-select.scss
Comment thread libs/core/src/components/pds-filters/pds-filter/pds-filter.tsx
Drop the border-radius shorthand that reset per-corner overrides on
pds-select, and detect RTL via computed direction on the filter host
instead of documentElement.dir only.

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit af9470d. Configure here.

Comment thread libs/core/src/components/pds-filters/pds-filter/pds-filter.tsx
Popover anchors at inline-start (trigger right in RTL), so inline-end
overflow must measure from triggerRect.right not left.
@QuintonJason QuintonJason merged commit 5445514 into main Jun 2, 2026
30 of 33 checks passed
@QuintonJason QuintonJason deleted the docs/foundations branch June 2, 2026 19:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation package: core Changes have been made to the Core package

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants