Skip to content

feat: Add Sana Canvas indicator component updates - #4087

Merged
sheelah merged 35 commits into
Workday:prerelease/majorfrom
sheelah:sana-canvas-indicators
Jul 28, 2026
Merged

feat: Add Sana Canvas indicator component updates#4087
sheelah merged 35 commits into
Workday:prerelease/majorfrom
sheelah:sana-canvas-indicators

Conversation

@sheelah

@sheelah sheelah commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Summary

Fixes: #3982

Release Category

Components

BREAKING CHANGES

An API change has been made in InformationHighlight: The default variant changed from informational to default. Add variant="informational" explicitly to preserve the previous appearance.


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

  • New Features
    • Added ctaPlacement to Information Highlight (supports an end layout), including updated stories/examples (now covers RTL).
    • Added variant="default" support to Information Highlight.
  • Breaking Changes
    • Information Highlight’s default variant behavior changed.
  • Visual Updates
    • Refreshed styling across the Indicators family (Banner, Count Badge, Pill, Status Indicator, Skeleton), including updated typography/spacing, icon sizing, and focus/hover behavior, plus updated skeleton shimmer styling.
  • Documentation
    • Updated the v16 upgrade guide and Information Highlight docs/stories to reflect the Indicators grouping and new CTA/variant details.
  • Tests
    • Added SSR smoke tests and expanded visual coverage for ctaPlacement="end".

@coderabbitai

coderabbitai Bot commented Jul 24, 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

This change updates Canvas Kit v16 indicator styling across Banner, Count Badge, Information Highlight, Pill, Skeleton, and Status Indicator. Information Highlight adds variant="default" and ctaPlacement, Skeleton components share shimmer styling, and both upgrade guides document the changes.

Changes

Indicators v16

Layer / File(s) Summary
InformationHighlight API and layout
modules/react/information-highlight/...
Adds the default variant and ctaPlacement state, updates layout and part styling, and adds CTA placement examples, RTL coverage, visual states, and SSR coverage.
Banner, badge, pill, and status styling
modules/react/banner/..., modules/react/badge/..., modules/react/pill/..., modules/preview-react/status-indicator/...
Updates typography, spacing, colors, shapes, hover/focus behavior, and icon sizing.
Skeleton surface stencil refactor
modules/react/skeleton/lib/parts/*
Introduces shared shimmer background styling for Skeleton Shape, Header, and Text.
v16 upgrade documentation
modules/docs/.../16.0-UPGRADE-GUIDE.*
Adds Indicators table-of-contents entries and documents the component styling and InformationHighlight API changes.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Possibly related issues

  • Workday/canvas-kit issue 3975 — Tracks the v16 Indicators updates covered by this change.

Possibly related PRs

Suggested reviewers: rayredgoose, williamjstanton, josh-bagwell

Sequence Diagram(s)

sequenceDiagram
  participant Consumer
  participant InformationHighlight
  participant useInformationHighlightModel
  participant informationHighlightStencil
  Consumer->>InformationHighlight: set variant and ctaPlacement
  InformationHighlight->>useInformationHighlightModel: read component state
  useInformationHighlightModel->>informationHighlightStencil: pass variant, emphasis, and ctaPlacement
  informationHighlightStencil->>InformationHighlight: apply CTA grid layout
Loading
🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Linked Issues check ⚠️ Warning The PR misses Loading Dots deprecation/codemod work and adds InformationHighlight API changes that the ticket marked as no-API-change. Add the Loading Dots deprecation/codemod changes and remove or separate the InformationHighlight API changes to match the ticket scope.
Out of Scope Changes check ⚠️ Warning InformationHighlight's new default variant and ctaPlacement API go beyond the issue's no-API-change requirement. Move the InformationHighlight API changes to a separate issue or revert them if this PR must stay within #3982.
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the indicator-component update and matches the PR scope.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ 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.

@cypress

cypress Bot commented Jul 24, 2026

Copy link
Copy Markdown

Workday/canvas-kit    Run #11375

Run Properties:  status check passed Passed #11375  •  git commit cef4262326 ℹ️: Merge c2c12ad83c2e6d1772c2b74d4075c295a21b069b into 4dfa841c465972c75aae17c5c3ea...
Project Workday/canvas-kit
Branch Review sana-canvas-indicators
Run status status check passed Passed #11375
Run duration 02m 38s
Commit git commit cef4262326 ℹ️: Merge c2c12ad83c2e6d1772c2b74d4075c295a21b069b into 4dfa841c465972c75aae17c5c3ea...
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.54%
  Untested elements 1534  
  Tested elements 370  
Accessibility  99.47%
  Failed rules  5 critical   5 serious   0 moderate   2 minor
  Failed elements 72  

@sheelah sheelah changed the title Sana canvas indicators feat: Add Sana Canvas indicator component updates Jul 24, 2026
@sheelah
sheelah marked this pull request as ready for review July 24, 2026 22:39
@sheelah
sheelah requested a review from a team as a code owner July 24, 2026 22:40
@sheelah sheelah added needs-a11y Extra attention from accessibility is needed ready for review Code is ready for review labels Jul 24, 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: 2

🤖 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 304-305: Update the Count Badge `inverse` entries in
modules/docs/llm/upgrade-guides/16.0-UPGRADE-GUIDE.md lines 304-305 and
modules/docs/mdx/16.0-UPGRADE-GUIDE.mdx lines 308-309 to explicitly state that
the variant is deprecated and provide the recommended replacement or migration
path, while retaining the existing color-change information.

In `@modules/react/information-highlight/stories/InformationHighlight.mdx`:
- Around line 80-83: Update the ctaPlacement “end” description in
modules/react/information-highlight/stories/InformationHighlight.mdx lines 80-83
to describe the link as vertically centered at the logical inline end rather
than right-aligned. Update
modules/react/information-highlight/stories/examples/CtaPlacementEnd.tsx lines
18-19 to replace “on the right” with equivalent logical-end wording.
🪄 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: 7a36fbf3-3a53-4f77-aa6d-bbd2b53498f5

📥 Commits

Reviewing files that changed from the base of the PR and between 1345e0f and a559678.

📒 Files selected for processing (26)
  • modules/docs/llm/upgrade-guides/16.0-UPGRADE-GUIDE.md
  • modules/docs/mdx/16.0-UPGRADE-GUIDE.mdx
  • modules/preview-react/status-indicator/lib/StatusIndicator.tsx
  • modules/preview-react/status-indicator/lib/StatusIndicatorIcon.tsx
  • modules/preview-react/status-indicator/lib/StatusIndicatorLabel.tsx
  • modules/react/badge/lib/CountBadge.tsx
  • modules/react/banner/lib/Banner.tsx
  • modules/react/banner/lib/hooks/useBannerIcon.tsx
  • modules/react/information-highlight/lib/InformationHighlight.tsx
  • modules/react/information-highlight/lib/hooks/useInformationHighlightModel.ts
  • modules/react/information-highlight/lib/parts/Body.tsx
  • modules/react/information-highlight/lib/parts/Heading.tsx
  • modules/react/information-highlight/lib/parts/Icon.tsx
  • modules/react/information-highlight/lib/parts/Link.tsx
  • modules/react/information-highlight/spec/InformationHighlight.spec.tsx
  • modules/react/information-highlight/stories/InformationHighlight.mdx
  • modules/react/information-highlight/stories/InformationHighlight.stories.ts
  • modules/react/information-highlight/stories/examples/Basic.tsx
  • modules/react/information-highlight/stories/examples/CtaPlacementEnd.tsx
  • modules/react/information-highlight/stories/visual_testing/testing.stories.tsx
  • modules/react/pill/lib/Pill.tsx
  • modules/react/pill/lib/PillIcon.tsx
  • modules/react/pill/lib/PillIconButton.tsx
  • modules/react/skeleton/lib/parts/SkeletonHeader.tsx
  • modules/react/skeleton/lib/parts/SkeletonShape.tsx
  • modules/react/skeleton/lib/parts/SkeletonText.tsx

Comment thread modules/docs/llm/upgrade-guides/16.0-UPGRADE-GUIDE.md
Comment thread modules/react/information-highlight/stories/InformationHighlight.mdx Outdated

@williamjstanton williamjstanton left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I stumbled on the Storybook Skeleton > Simulation example, and it is such a cool example!

I really wish we could incorporate our documented (on LoadingDots) screen reader live announcement support from here: https://workday.github.io/canvas-kit/?path=/docs/components-indicators-loading-dots--docs#accessibility

Comment thread modules/react/information-highlight/lib/InformationHighlight.tsx Outdated
Comment thread modules/react/skeleton/lib/parts/SkeletonShape.tsx
Comment thread modules/preview-react/status-indicator/lib/StatusIndicatorLabel.tsx
Comment thread modules/react/information-highlight/stories/InformationHighlight.mdx Outdated
@sheelah

sheelah commented Jul 27, 2026

Copy link
Copy Markdown
Contributor Author

I stumbled on the Storybook Skeleton > Simulation example, and it is such a cool example!

I really wish we could incorporate our documented (on LoadingDots) screen reader live announcement support from here: https://workday.github.io/canvas-kit/?path=/docs/components-indicators-loading-dots--docs#accessibility

Good point. What's the best practice in terms of a11y for skeleton loaders? My understanding is that it's often best to hide them from assistive technology & have a single aria live polite status message. I can an issue to our backlog for this so we can take our time & get this right in our docs.

Also adds documentation on link text recommendations

@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/react/information-highlight/lib/parts/Link.tsx`:
- Around line 29-44: Update the Link component’s Hyperlink props ordering so the
fixed variant="secondary" is applied after handleCsProp(elemProps, ...),
preventing consumer-provided variant values from overriding the intended
styling.
🪄 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: 7d805342-0da6-46a6-9616-b9ae4c42be97

📥 Commits

Reviewing files that changed from the base of the PR and between 0744e41 and 099fee4.

📒 Files selected for processing (6)
  • modules/react/information-highlight/lib/InformationHighlight.tsx
  • modules/react/information-highlight/lib/parts/Body.tsx
  • modules/react/information-highlight/lib/parts/Heading.tsx
  • modules/react/information-highlight/lib/parts/Link.tsx
  • modules/react/information-highlight/stories/InformationHighlight.mdx
  • modules/react/information-highlight/stories/examples/CtaPlacementEnd.tsx
🚧 Files skipped from review as they are similar to previous changes (2)
  • modules/react/information-highlight/stories/InformationHighlight.mdx
  • modules/react/information-highlight/lib/InformationHighlight.tsx

Comment thread modules/react/information-highlight/lib/parts/Link.tsx
Comment thread modules/preview-react/status-indicator/lib/StatusIndicatorIcon.tsx Outdated
Comment thread modules/react/information-highlight/lib/parts/Heading.tsx Outdated
sheelah added 3 commits July 27, 2026 15:55
This is so that variant=secondary isn't overridden
Colocate part names with Heading, Body, and Link stencils and spread
stencil.parts instead of hardcoding data-part attributes
@sheelah
sheelah force-pushed the sana-canvas-indicators branch from 1743d35 to 02e69e6 Compare July 27, 2026 22:09
@williamjstanton

Copy link
Copy Markdown
Collaborator

Good point. What's the best practice in terms of a11y for skeleton loaders? My understanding is that it's often best to hide them from assistive technology & have a single aria live polite status message. I can an issue to our backlog for this so we can take our time & get this right in our docs.

Yep, you got it!. Our LoadingDots example uses both our AccessibleHide and AriaLiveRegion components to do this. It's useful to notify users to please wait, and also notify when loading is complete. We also need to be careful not to 'spam' users when you have a screen with multiple loading components. That'd get annoying.

@williamjstanton williamjstanton left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

LG!

@sheelah

sheelah commented Jul 28, 2026

Copy link
Copy Markdown
Contributor Author

I stumbled on the Storybook Skeleton > Simulation example, and it is such a cool example!
I really wish we could incorporate our documented (on LoadingDots) screen reader live announcement support from here: https://workday.github.io/canvas-kit/?path=/docs/components-indicators-loading-dots--docs#accessibility

Good point. What's the best practice in terms of a11y for skeleton loaders? My understanding is that it's often best to hide them from assistive technology & have a single aria live polite status message. I can an issue to our backlog for this so we can take our time & get this right in our docs.

Added #4096 for this.

@sheelah
sheelah enabled auto-merge (squash) July 28, 2026 22:13
@sheelah
sheelah merged commit 8be8764 into Workday:prerelease/major Jul 28, 2026
20 checks passed
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.

3 participants