Skip to content

feat: Add Sana Canvas Navigation component updates#4068

Open
sheelah wants to merge 26 commits into
Workday:prerelease/majorfrom
sheelah:sana-canvas-navigation
Open

feat: Add Sana Canvas Navigation component updates#4068
sheelah wants to merge 26 commits into
Workday:prerelease/majorfrom
sheelah:sana-canvas-navigation

Conversation

@sheelah

@sheelah sheelah commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Summary

Fixes: #3986.

Note: I filed #4070 for the Breadcrumbs overflow button rendering issues we're seeing in Storybook.

Release Category

Components

Release Note

This introduces a new type variant for Hyperlink and ExternalHyperlink, defaulting to "inline". Set it to "standalone" to remove a link's underline.

BREAKING CHANGES

The Hyperlink and ExternalHyperlink standalone and standaloneInverse variants have been removed, in favor of using a new type prop which is either inline (default) or standalone. A codemod is available to migrate to the new component API.


Checklist

For the Reviewer

  • PR title is short and descriptive
  • PR summary describes the change (Fixes/Resolves linked correctly)
  • PR Release Notes describes additional information useful to call out in a release message or removed if not applicable
  • Breaking Changes provides useful information to upgrade to this code or removed if not applicable

Where Should the Reviewer Start?

Areas for Feedback? (optional)

  • Code
  • Documentation
  • Testing
  • Codemods

Testing Manually

Screenshots or GIFs (if applicable)

Thank You Gif (optional)

Summary by CodeRabbit

Summary by CodeRabbit

  • New Features
    • Hyperlinks now separate color variants and underline styling via variant (color) and type (underline).
    • Updated ExternalHyperlink to apply the same type-driven underline behavior, plus new Secondary hyperlink examples and visual-state coverage.
  • Bug Fixes
    • Refined Breadcrumbs and Pagination visuals (colors, icon sizing, focus/hover/active states, and GoTo layout/alignment).
  • Documentation
    • Updated the v16 upgrade guides with the new Hyperlink semantics and migration instructions.
  • Chores
    • Expanded the v16 codemod to automatically migrate legacy Hyperlink prop configurations.

@sheelah
sheelah requested a review from a team as a code owner July 15, 2026 23:17
@sheelah sheelah added the needs-a11y Extra attention from accessibility is needed label Jul 15, 2026
@coderabbitai

coderabbitai Bot commented Jul 15, 2026

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

The PR updates Hyperlink APIs and migration tooling for v16, aligns Breadcrumbs and Pagination styling with new tokens, refreshes Storybook examples and visual states, and documents the navigation changes and codemod usage.

Changes

Sana navigation updates

Layer / File(s) Summary
Hyperlink API and styling
modules/react/button/lib/Hyperlink.tsx, modules/react/button/lib/ExternalHyperlink.tsx
Hyperlink variants and underline behavior are separated into variant and type, with updated styling tokens and modifiers.
Hyperlink migration codemod
modules/codemod/lib/v16/...
The v16 pipeline registers updateHyperlinkProps, which converts legacy Hyperlink variants and handles existing type props across supported imports and JSX forms.
Hyperlink examples and visual states
modules/react/button/stories/button/..., modules/react/button/stories/visual-testing/...
Stories and visual permutations add the secondary variant and update inverse and standalone examples to the new prop contract.
Breadcrumbs, Pagination, and token alignment
modules/react/breadcrumbs/..., modules/react/pagination/...
Breadcrumbs and Pagination receive updated colors, interaction states, icon sizing, spacing, label sizing, and input alignment.
Hyperlink migration documentation
modules/docs/llm/upgrade-guides/..., modules/docs/mdx/...
Upgrade guides describe the new navigation APIs, visual changes, migration mappings, and v16 codemod commands; Menu interaction tables are also updated.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant v16Codemod
  participant updateHyperlinkProps
  participant JSXAST
  v16Codemod->>updateHyperlinkProps: execute registered transform
  updateHyperlinkProps->>JSXAST: inspect imports and JSX props
  JSXAST-->>updateHyperlinkProps: return matching elements
  updateHyperlinkProps->>JSXAST: rewrite variant and type props
  JSXAST-->>v16Codemod: serialize transformed source
Loading

Possibly related PRs

Suggested reviewers: rayredgoose, williamjstanton, josh-bagwell

🚥 Pre-merge checks | ✅ 2 | ❌ 3

❌ Failed checks (3 warnings)

Check name Status Explanation Resolution
Linked Issues check ⚠️ Warning The PR keeps the Hyperlink inverse variant and adds secondary, but the linked issue requires removing inverse. Remove the inverse variant as required, or update the issue scope if the intended API is to keep inverse and deprecate standalone variants.
Out of Scope Changes check ⚠️ Warning The upgrade guide also changes Menu interaction-state documentation, which is unrelated to the navigation-component scope. Remove or justify the Menu documentation edits unless they are part of the intended v16 navigation work.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title is concise and broadly matches the PR’s main navigation component updates.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@sheelah sheelah added the ready for review Code is ready for review label Jul 15, 2026

@coderabbitai coderabbitai 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.

Actionable comments posted: 1

🧹 Nitpick comments (4)
modules/react/button/lib/Hyperlink.tsx (1)

35-52: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Remove extraneous space in the padding value.

While it is valid CSS, removing the trailing space in the padding template literal improves code cleanliness.

♻️ Proposed refactor
-    padding: `0 ${px2rem(2)} `,
+    padding: `0 ${px2rem(2)}`,
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@modules/react/button/lib/Hyperlink.tsx` around lines 35 - 52, Update the
padding declaration in the Hyperlink styles to remove the extraneous trailing
space from its template literal while preserving the existing horizontal padding
value.
modules/react/button/stories/visual-testing/ExternalHyperlink.stories.tsx (1)

35-35: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Include the type prop in visual permutations.

Consider adding the type prop to the ComponentStatesTable permutations so that the standalone behavior (no underline) of ExternalHyperlink is visually tested, matching the test coverage just added to Hyperlink.stories.tsx.

♻️ Proposed refactor
           rowProps={permutateProps({
             variant: [
               {label: 'Default', value: undefined},
               {label: 'Inverse', value: 'inverse'},
               {label: 'Secondary', value: 'secondary'},
             ],
+            type: [
+              {label: 'Inline', value: undefined},
+              {label: 'Standalone', value: 'standalone'},
+            ],
           })}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@modules/react/button/stories/visual-testing/ExternalHyperlink.stories.tsx` at
line 35, Update the ComponentStatesTable permutations in
ExternalHyperlink.stories.tsx to include the ExternalHyperlink type values,
including standalone, so its no-underline behavior is covered by visual testing
consistently with Hyperlink.stories.tsx.
modules/react/button/stories/button/examples/SecondaryHyperlink.tsx (1)

1-1: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Remove unused import.

ExternalHyperlink is imported but never used in this example.

♻️ Proposed fix
-import {ExternalHyperlink, Hyperlink} from '`@workday/canvas-kit-react/button`';
+import {Hyperlink} from '`@workday/canvas-kit-react/button`';
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@modules/react/button/stories/button/examples/SecondaryHyperlink.tsx` at line
1, Remove the unused ExternalHyperlink import from the SecondaryHyperlink
example, while retaining the Hyperlink import used by the example.
modules/react/button/stories/button/Hyperlink.mdx (1)

55-55: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Simplify the phrasing.

As per static analysis hints, the phrase "outside of a" can be slightly redundant. Consider using "outside a" to be more concise.

♻️ Proposed fix
-Use `type="standalone"` when you need to place a `Hyperlink` outside of a paragraph or body text.
+Use `type="standalone"` when you need to place a `Hyperlink` outside a paragraph or body text.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@modules/react/button/stories/button/Hyperlink.mdx` at line 55, Update the
Hyperlink usage guidance to replace “outside of a paragraph or body text” with
the more concise “outside a paragraph or body text,” preserving the existing
meaning and the type="standalone" instruction.

Source: Linters/SAST tools

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@modules/codemod/lib/v16/updateHyperlinkProps.ts`:
- Around line 28-37: Update ensureTypeStandalone and its existing type-attribute
detection so any JSX type attribute is recognized, regardless of value, then
overwrite that attribute in place with standalone instead of appending a
duplicate. Preserve the current behavior for elements without a type attribute
and add coverage for a Hyperlink with variant="standalone" and type="inline".

---

Nitpick comments:
In `@modules/react/button/lib/Hyperlink.tsx`:
- Around line 35-52: Update the padding declaration in the Hyperlink styles to
remove the extraneous trailing space from its template literal while preserving
the existing horizontal padding value.

In `@modules/react/button/stories/button/examples/SecondaryHyperlink.tsx`:
- Line 1: Remove the unused ExternalHyperlink import from the SecondaryHyperlink
example, while retaining the Hyperlink import used by the example.

In `@modules/react/button/stories/button/Hyperlink.mdx`:
- Line 55: Update the Hyperlink usage guidance to replace “outside of a
paragraph or body text” with the more concise “outside a paragraph or body
text,” preserving the existing meaning and the type="standalone" instruction.

In `@modules/react/button/stories/visual-testing/ExternalHyperlink.stories.tsx`:
- Line 35: Update the ComponentStatesTable permutations in
ExternalHyperlink.stories.tsx to include the ExternalHyperlink type values,
including standalone, so its no-underline behavior is covered by visual testing
consistently with Hyperlink.stories.tsx.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 16a5837f-747e-4b60-bf75-32c29bfe23de

📥 Commits

Reviewing files that changed from the base of the PR and between f077a91 and 346a132.

⛔ Files ignored due to path filters (1)
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (31)
  • modules/codemod/lib/v16/index.ts
  • modules/codemod/lib/v16/spec/updateHyperlinkProps.spec.ts
  • modules/codemod/lib/v16/updateHyperlinkProps.ts
  • modules/docs/llm/upgrade-guides/16.0-UPGRADE-GUIDE.md
  • modules/docs/mdx/16.0-UPGRADE-GUIDE.mdx
  • modules/docs/package.json
  • modules/labs-react/package.json
  • modules/preview-react/package.json
  • modules/react/breadcrumbs/lib/BreadcrumbsCurrentItem.tsx
  • modules/react/breadcrumbs/lib/BreadcrumbsItem.tsx
  • modules/react/breadcrumbs/lib/BreadcrumbsLink.tsx
  • modules/react/breadcrumbs/lib/BreadcrumbsOverflowButton.tsx
  • modules/react/button/lib/ExternalHyperlink.tsx
  • modules/react/button/lib/Hyperlink.tsx
  • modules/react/button/stories/button/Hyperlink.mdx
  • modules/react/button/stories/button/Hyperlink.stories.tsx
  • modules/react/button/stories/button/examples/ExternalHyperlinkInverse.tsx
  • modules/react/button/stories/button/examples/HyperlinkInverse.tsx
  • modules/react/button/stories/button/examples/SecondaryHyperlink.tsx
  • modules/react/button/stories/button/examples/StandaloneHyperlink.tsx
  • modules/react/button/stories/visual-testing/ExternalHyperlink.stories.tsx
  • modules/react/button/stories/visual-testing/Hyperlink.stories.tsx
  • modules/react/package.json
  • modules/react/pagination/lib/Pagination/Controls.tsx
  • modules/react/pagination/lib/Pagination/GoTo/Form.tsx
  • modules/react/pagination/lib/Pagination/GoTo/Label.tsx
  • modules/react/pagination/lib/Pagination/GoTo/TextInput.tsx
  • modules/react/pagination/lib/Pagination/PageButton.tsx
  • modules/styling-transform/package.json
  • modules/styling/package.json
  • package.json

Comment thread modules/codemod/lib/v16/updateHyperlinkProps.ts Outdated
@cypress

cypress Bot commented Jul 15, 2026

Copy link
Copy Markdown

Workday/canvas-kit    Run #11276

Run Properties:  status check passed Passed #11276  •  git commit 2fa8a76156 ℹ️: Merge f4d1e900070f2250a27377e4b3e0c48f5b12d6da into f21d7cc4d8f56e8a7ffffbb5881a...
Project Workday/canvas-kit
Branch Review sana-canvas-navigation
Run status status check passed Passed #11276
Run duration 02m 30s
Commit git commit 2fa8a76156 ℹ️: Merge f4d1e900070f2250a27377e4b3e0c48f5b12d6da into f21d7cc4d8f56e8a7ffffbb5881a...
Committer Sheelah Brennan
View all properties for this run ↗︎

Test results
Tests that failed  Failures 0
Tests that were flaky  Flaky 0
Tests that did not run due to a developer annotating a test with .skip  Pending 17
Tests that did not run due to a failure in a mocha hook  Skipped 0
Tests that passed  Passing 809
View all changes introduced in this branch ↗︎
UI Coverage  19.6%
  Untested elements 1532  
  Tested elements 371  
Accessibility  99.47%
  Failed rules  5 critical   5 serious   0 moderate   2 minor
  Failed elements 72  

@coderabbitai coderabbitai 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.

Actionable comments posted: 1

🧹 Nitpick comments (1)
modules/docs/mdx/16.0-UPGRADE-GUIDE.mdx (1)

440-441: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Remove the unnecessary comma.

The comma before "and" is unnecessary when listing only two items ("standalone and standaloneInverse").

  • modules/docs/mdx/16.0-UPGRADE-GUIDE.mdx#L440-L441: Remove the comma after `standalone`.
  • modules/docs/llm/upgrade-guides/16.0-UPGRADE-GUIDE.md#L434-L435: Remove the comma after `standalone`.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@modules/docs/mdx/16.0-UPGRADE-GUIDE.mdx` around lines 440 - 441, Remove the
unnecessary comma after `standalone` in the compound-variants sentence in both
modules/docs/mdx/16.0-UPGRADE-GUIDE.mdx (lines 440-441) and
modules/docs/llm/upgrade-guides/16.0-UPGRADE-GUIDE.md (lines 434-435), leaving
the wording otherwise unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@modules/docs/llm/upgrade-guides/16.0-UPGRADE-GUIDE.md`:
- Line 77: Insert an empty line before each fenced shell code block in
modules/docs/llm/upgrade-guides/16.0-UPGRADE-GUIDE.md at lines 77 and 579,
ensuring the preceding prose ends on its own line and both ```sh fences render
as code blocks.

---

Nitpick comments:
In `@modules/docs/mdx/16.0-UPGRADE-GUIDE.mdx`:
- Around line 440-441: Remove the unnecessary comma after `standalone` in the
compound-variants sentence in both modules/docs/mdx/16.0-UPGRADE-GUIDE.mdx
(lines 440-441) and modules/docs/llm/upgrade-guides/16.0-UPGRADE-GUIDE.md (lines
434-435), leaving the wording otherwise unchanged.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 0814d628-6e6e-408c-b02a-a40302431b74

📥 Commits

Reviewing files that changed from the base of the PR and between 346a132 and 66880c2.

📒 Files selected for processing (2)
  • modules/docs/llm/upgrade-guides/16.0-UPGRADE-GUIDE.md
  • modules/docs/mdx/16.0-UPGRADE-GUIDE.mdx

@coderabbitai coderabbitai 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.

Caution

Inline review comments failed to post. This is likely due to GitHub's internal server error or limits when posting large numbers of comments. If you are seeing this consistently it is likely a permissions issue. Please check "Moderation" -> "Code review limits" under your organization settings.

Actionable comments posted: 1

🧹 Nitpick comments (1)
modules/docs/mdx/16.0-UPGRADE-GUIDE.mdx (1)

440-441: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Remove the unnecessary comma.

The comma before "and" is unnecessary when listing only two items ("standalone and standaloneInverse").

  • modules/docs/mdx/16.0-UPGRADE-GUIDE.mdx#L440-L441: Remove the comma after `standalone`.
  • modules/docs/llm/upgrade-guides/16.0-UPGRADE-GUIDE.md#L434-L435: Remove the comma after `standalone`.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@modules/docs/mdx/16.0-UPGRADE-GUIDE.mdx` around lines 440 - 441, Remove the
unnecessary comma after `standalone` in the compound-variants sentence in both
modules/docs/mdx/16.0-UPGRADE-GUIDE.mdx (lines 440-441) and
modules/docs/llm/upgrade-guides/16.0-UPGRADE-GUIDE.md (lines 434-435), leaving
the wording otherwise unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@modules/docs/llm/upgrade-guides/16.0-UPGRADE-GUIDE.md`:
- Line 77: Insert an empty line before each fenced shell code block in
modules/docs/llm/upgrade-guides/16.0-UPGRADE-GUIDE.md at lines 77 and 579,
ensuring the preceding prose ends on its own line and both ```sh fences render
as code blocks.

---

Nitpick comments:
In `@modules/docs/mdx/16.0-UPGRADE-GUIDE.mdx`:
- Around line 440-441: Remove the unnecessary comma after `standalone` in the
compound-variants sentence in both modules/docs/mdx/16.0-UPGRADE-GUIDE.mdx
(lines 440-441) and modules/docs/llm/upgrade-guides/16.0-UPGRADE-GUIDE.md (lines
434-435), leaving the wording otherwise unchanged.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 0814d628-6e6e-408c-b02a-a40302431b74

📥 Commits

Reviewing files that changed from the base of the PR and between 346a132 and 66880c2.

📒 Files selected for processing (2)
  • modules/docs/llm/upgrade-guides/16.0-UPGRADE-GUIDE.md
  • modules/docs/mdx/16.0-UPGRADE-GUIDE.mdx
🛑 Comments failed to post (1)
modules/docs/llm/upgrade-guides/16.0-UPGRADE-GUIDE.md (1)

77-77: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Add a newline before the code block.

Markdown requires an empty line before a code block (```) to render it properly. Without it, the code block will not format as expected and will display inline.

  • modules/docs/llm/upgrade-guides/16.0-UPGRADE-GUIDE.md#L77-L77: Add a line break before ```sh.
  • modules/docs/llm/upgrade-guides/16.0-UPGRADE-GUIDE.md#L579-L579: Add a line break before ```sh.
📍 Affects 1 file
  • modules/docs/llm/upgrade-guides/16.0-UPGRADE-GUIDE.md#L77-L77 (this comment)
  • modules/docs/llm/upgrade-guides/16.0-UPGRADE-GUIDE.md#L579-L579
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@modules/docs/llm/upgrade-guides/16.0-UPGRADE-GUIDE.md` at line 77, Insert an
empty line before each fenced shell code block in
modules/docs/llm/upgrade-guides/16.0-UPGRADE-GUIDE.md at lines 77 and 579,
ensuring the preceding prose ends on its own line and both ```sh fences render
as code blocks.

@coderabbitai coderabbitai 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.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@modules/docs/llm/upgrade-guides/16.0-UPGRADE-GUIDE.md`:
- Around line 581-584: Normalize both codemod examples in the upgrade guide,
including the additionally affected block, by placing `npx` inside each `sh`
fenced code block with the command and replacing every four-backtick closing
fence with a standard three-backtick fence.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: efdef4cd-af11-498b-b3d9-7446df323434

📥 Commits

Reviewing files that changed from the base of the PR and between 66880c2 and a69e39e.

⛔ Files ignored due to path filters (1)
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (14)
  • modules/codemod/lib/v16/spec/updateHyperlinkProps.spec.ts
  • modules/codemod/lib/v16/updateHyperlinkProps.ts
  • modules/docs/llm/upgrade-guides/16.0-UPGRADE-GUIDE.md
  • modules/docs/package.json
  • modules/labs-react/package.json
  • modules/preview-react/package.json
  • modules/react/button/lib/Hyperlink.tsx
  • modules/react/button/stories/button/Hyperlink.mdx
  • modules/react/button/stories/button/examples/SecondaryHyperlink.tsx
  • modules/react/checkbox/lib/CheckboxInput.tsx
  • modules/react/package.json
  • modules/styling-transform/package.json
  • modules/styling/package.json
  • package.json
💤 Files with no reviewable changes (1)
  • modules/react/checkbox/lib/CheckboxInput.tsx
🚧 Files skipped from review as they are similar to previous changes (4)
  • modules/react/button/stories/button/examples/SecondaryHyperlink.tsx
  • modules/codemod/lib/v16/updateHyperlinkProps.ts
  • modules/codemod/lib/v16/spec/updateHyperlinkProps.spec.ts
  • modules/react/button/lib/Hyperlink.tsx

Comment thread modules/docs/llm/upgrade-guides/16.0-UPGRADE-GUIDE.md Outdated

@coderabbitai coderabbitai 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.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@modules/docs/llm/upgrade-guides/16.0-UPGRADE-GUIDE.md`:
- Around line 614-615: Replace the interpolated ${canvasKitMajorVersionNumber}
argument in the codemod command with the concrete v16 version, matching the
static guide’s existing examples.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 02f0f09c-b656-49f5-8360-61f4f45ebaa2

📥 Commits

Reviewing files that changed from the base of the PR and between a69e39e and d8909fb.

📒 Files selected for processing (2)
  • modules/docs/llm/upgrade-guides/16.0-UPGRADE-GUIDE.md
  • modules/docs/mdx/16.0-UPGRADE-GUIDE.mdx
🚧 Files skipped from review as they are similar to previous changes (1)
  • modules/docs/mdx/16.0-UPGRADE-GUIDE.mdx

Comment thread modules/docs/llm/upgrade-guides/16.0-UPGRADE-GUIDE.md
Comment thread modules/react/button/lib/Hyperlink.tsx Outdated
'&:active, &.active': {
color: system.legacy.color.fg.info.strong,
background: system.legacy.color.surface.alt.default,
color: system.sana.color.brand.fg.link.hover,

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.

should this be a brandable token? same for above?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

@mannycarrera4 That's a good question. Still wrapping my head around our current token hierarchy (legacy vs non-legacy etc). At the end of the day, who decides what gets a brandable token?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Left the color as-is for the Hyperlink states as there is no system.legacy.* or system.* equivalent, but I updated the focus ring color to be brandable.

system.legacy.color.brand.border.primary is not brandable but system.legacy.color.brand.focus.primary is according to CanvasProvider 's focusOutline theme, so I swapped that in.

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.

anything that has the brand word in it is brandable

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.

I just don't think that hyperlinks should be brandable if someone choose purple, i think a hyperlink should still be blue

Comment thread modules/docs/llm/upgrade-guides/16.0-UPGRADE-GUIDE.md

@mannycarrera4 mannycarrera4 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.

LGTM

Comment thread modules/react/button/lib/Hyperlink.tsx Outdated
@sheelah
sheelah force-pushed the sana-canvas-navigation branch from ba72c7d to 0222b51 Compare July 17, 2026 18:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs-a11y Extra attention from accessibility is needed ready for review Code is ready for review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants