Skip to content

feat(mosaic): add a skeleton loading state for the user profile API keys panel - #10031

Draft
maxyinger wants to merge 1 commit into
section-skeletonsfrom
api-keys-skeleton
Draft

maxyinger wants to merge 1 commit into
section-skeletonsfrom
api-keys-skeleton

Conversation

@maxyinger

@maxyinger maxyinger commented Oct 2, 2026 •

Copy link
Copy Markdown
Collaborator

Description

Adds a skeleton for the user profile API keys panel's first load, built on the skeleton wave from #10029.

  • Table.Root, Table.HeaderCell, and Table.Cell take skeleton. A skeleton cell renders one placeholder line in place of its children. A skeleton Table.Root is hidden from assistive technology and drops the viewport's tabIndex.
  • UserProfileApiKeysPanelSkeleton (in user-profile-api-keys-panel.skeleton.tsx) renders the title, toolbar, column headers, and three rows as bones. It matches the wired panel's columns: name, created, last used, and actions. The name cell holds two lines, like a loaded key. The actions cell draws nothing and keeps the menu trigger's column width.
  • Only the view is added. The panel's isLoading spinner stays until wire-up, which will add the delay/min-duration gate and swap in the skeleton.

Open question:

  • Toolbar controls on first load. I made the search field and Create button bones (sized 17rem × 32px and 112px × 32px), so the first load is one loading state. The other option is real controls, disabled. The bones are local to the panel skeleton, not a Table.Search skeleton API, so either choice is cheap to change.

Note: every skeletonStyles.line bone measures 1/32px shorter than the text it replaces (a 32px title measures 31.97px, a 63px row 62.97px). Chrome snaps 0.6lh and both 0.2lh margins down to 1/64px each. This comes from the shared primitive in #10029, so Section skeletons have it too.

Preview: UserProfileApiKeysPanel, the Loading story at the end of Examples. Reload replays a 2s fake load.

Light Dark
API keys loading story, light API keys loading story, dark

Checklist

  • pnpm test runs as expected.
  • pnpm build runs as expected.
  • (If applicable) JSDoc comments have been added or updated for any package exports
  • (If applicable) Documentation has been updated

Type of change

  • 🐛 Bug fix
  • 🌟 New feature
  • 🔨 Breaking change
  • 📖 Refactoring / dependency upgrade / documentation
  • other:

🤖 Generated with Claude Code

…eys panel

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@changeset-bot

changeset-bot Bot commented Oct 2, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 7e4c5d7

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 0 packages

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@vercel

vercel Bot commented Oct 2, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
clerk-js-sandbox Ready Ready Preview Oct 2, 2026 12:13am UTC
swingset Ready Ready Preview Oct 2, 2026 12:13am UTC

Request Review

@coderabbitai

coderabbitai Bot commented Oct 2, 2026

Copy link
Copy Markdown
Contributor

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Autopilot is currently an internal CodeRabbit preview.


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

This branch was successfully deployed

2 active deployments
Preview – swingset — 7e4c5d7a Deployed Oct 2, 2026 by vercel[bot]
Preview – clerk-js-sandbox — 7e4c5d7a Deployed Oct 2, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant