Danny White
37dded67d1
feat: unify SkipToContent across studio, docs, www, and design-system ( #48314 )
...
## What kind of change does this PR introduce?
Feature / a11y polish
## What is the current behavior?
Studio and Docs each had their own skip-to-content link (different
styling and behaviour). www and design-system had none.
## What is the new behavior?
Shared `SkipToContent` in `ui-patterns`, adopted by Studio, Docs, www,
and design-system. Documented as a fragment with a short note under
Accessibility → Jumping ahead.
Tab once to reveal the button (top-left), Enter to jump to a
content-only `<main>`.
| After |
| --- |
| <img width="836" height="324" alt="CleanShot 2026-07-24 at 14 08
47@2x"
src="https://github.com/user-attachments/assets/6df29452-e53a-4eca-8f64-946f2b9f605d "
/> |
## To test
Shared steps for every app: enable Tab key navigation if needed, load
the preview, press **Tab** once — skip button should slide in top-left.
Press **Enter** — focus jumps to main content (no blue ring on
`<main>`). Press **Tab** again — first interactive control in the page
body, not the sidebar/nav. Hover the skip button — solid fill, clear
hover state, no chrome showing through.
- **Studio** —
[preview](https://studio-staging-git-dnywh-featskip-to-content-supabase.vercel.app )
→ sign in → any project page
- **Docs** —
[preview](https://docs-git-dnywh-featskip-to-content-supabase.vercel.app )
→ any docs page with sidebar
- **www** —
[preview](https://zone-www-dot-com-git-dnywh-featskip-to-content-supabase.vercel.app )
→ homepage or any marketing page with the default nav
- **Design system** —
[preview](https://design-system-git-dnywh-featskip-to-content-supabase.vercel.app )
→ any docs page (confirm Tab from content does **not** walk the
sidebar), plus [Skip to Content
fragment](https://design-system-git-dnywh-featskip-to-content-supabase.vercel.app/docs/fragments/skip-to-content )
## Additional context
Follow-up to #47694 / #48303 (Studio) and #47515 (Docs).
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **New Features**
- Added a reusable “Skip to content” accessibility link across key
layouts and pages.
- Updated main landmarks to support keyboard focus and skip-link
navigation (`id="main"`).
- **Accessibility**
- Skip links now follow consistent landmark-target conventions and
remain hidden until focused.
- Improved documentation for skip links/jump shortcuts in persistent
chrome layouts.
- **Documentation**
- Added a dedicated Skip to Content fragment, navigation entry, and
expanded accessibility guidance.
- Updated button description wording in component docs.
- **Tests**
- Added component tests for SkipToContent.
- **Chores**
- Exposed SkipToContent via additional public package entry points.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-07-29 06:21:50 +10:00
..
2026-05-19 17:04:00 +02:00
2026-07-29 00:48:56 +08:00
2026-07-29 00:48:56 +08:00
2026-07-29 00:48:56 +08:00
2026-07-29 00:48:56 +08:00
2026-07-29 00:48:56 +08:00
2026-07-29 00:48:56 +08:00
2026-07-29 00:48:56 +08:00
2026-07-29 00:48:56 +08:00
2026-07-29 00:48:56 +08:00
2026-05-15 14:55:37 +02:00
2026-07-29 00:48:56 +08:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-02-05 13:54:10 +01:00
2026-04-30 10:53:24 +00:00
2024-09-30 21:41:26 +02:00
2024-05-23 17:39:56 +08:00
2025-12-02 11:15:50 +11:00
2024-05-23 17:39:56 +08:00
2025-12-02 11:15:50 +11:00
2026-06-30 16:13:50 +00:00
2026-06-30 16:13:50 +00:00
2026-06-30 16:13:50 +00:00
2026-06-30 16:13:50 +00:00
2026-06-30 16:13:50 +00:00
2026-06-30 16:13:50 +00:00
2026-02-05 13:54:10 +01:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2024-05-23 17:39:56 +08:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-07-03 10:14:12 +10:00
2026-06-16 23:59:58 +02:00
2026-02-05 13:54:10 +01:00
2026-02-05 13:54:10 +01:00
2026-07-10 11:40:33 +01:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2024-08-30 16:51:05 +08:00
2024-08-30 16:51:05 +08:00
2026-02-05 13:54:10 +01:00
2026-02-05 13:54:10 +01:00
2026-02-05 13:54:10 +01:00
2026-04-30 10:53:24 +00:00
2026-04-27 11:07:06 +02:00
2026-04-27 11:07:06 +02:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-04-27 11:07:06 +02:00
2026-05-15 15:29:16 +10:00
2026-05-22 18:24:17 +10:00
2026-06-16 23:59:58 +02:00
2026-04-30 10:53:24 +00:00
2026-02-05 13:54:10 +01:00
2026-02-05 13:54:10 +01:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-05-20 15:45:32 +02:00
2026-05-20 15:45:32 +02:00
2026-05-20 14:05:59 +02:00
2026-05-20 14:05:59 +02:00
2026-05-20 14:05:59 +02:00
2026-05-20 14:05:59 +02:00
2026-05-20 14:05:59 +02:00
2026-05-20 14:05:59 +02:00
2026-05-20 14:05:59 +02:00
2026-05-20 14:05:59 +02:00
2026-06-16 23:59:58 +02:00
2026-07-22 00:08:32 +10:00
2026-07-22 00:08:32 +10:00
2026-07-29 00:48:56 +08:00
2026-07-23 02:20:42 +10:00
2026-07-23 02:20:42 +10:00
2026-07-23 02:20:42 +10:00
2026-05-15 15:09:25 +02:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-06-30 09:23:17 +02:00
2025-12-15 10:44:08 +00:00
2026-05-15 15:55:33 +02:00
2026-06-16 23:59:58 +02:00
2025-12-15 10:44:08 +00:00
2026-06-16 23:59:58 +02:00
2026-04-30 10:53:24 +00:00
2026-04-30 10:53:24 +00:00
2025-10-16 13:44:40 +11:00
2025-10-16 13:44:40 +11:00
2025-10-16 13:44:40 +11:00
2026-03-31 09:14:56 +02:00
2026-03-31 09:14:56 +02:00
2025-10-16 13:44:40 +11:00
2026-06-16 23:59:58 +02:00
2026-06-17 12:24:42 +02:00
2026-06-17 12:24:42 +02:00
2026-06-17 12:24:42 +02:00
2026-06-17 12:24:42 +02:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-07-03 15:00:43 +10:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-07-29 00:48:56 +08:00
2026-06-30 09:23:17 +02:00
2026-06-30 09:23:17 +02:00
2026-06-30 09:23:17 +02:00
2025-12-11 13:38:26 +11:00
2026-03-26 15:27:35 +01:00
2026-03-26 15:27:35 +01:00
2024-07-12 11:32:20 +02:00
2026-04-27 11:07:06 +02:00
2026-02-05 13:54:10 +01:00
2026-06-16 23:59:58 +02:00
2026-05-15 14:55:37 +02:00
2026-04-27 11:07:06 +02:00
2026-04-30 10:53:24 +00:00
2026-05-15 14:55:37 +02:00
2026-02-05 13:54:10 +01:00
2026-06-16 23:59:58 +02:00
2026-02-05 13:54:10 +01:00
2026-02-05 13:54:10 +01:00
2026-02-05 13:54:10 +01:00
2026-02-05 13:54:10 +01:00
2026-06-30 09:23:17 +02:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-07-23 05:21:15 +10:00
2026-07-23 08:52:22 +10:00
2026-06-16 23:59:58 +02:00
2024-05-24 09:40:15 +00:00
2026-02-05 13:54:10 +01:00
2026-06-16 23:59:58 +02:00
2024-10-31 00:55:08 +08:00
2026-02-05 13:54:10 +01:00
2026-02-05 13:54:10 +01:00
2026-02-05 13:54:10 +01:00
2026-05-15 14:55:37 +02:00
2026-05-15 14:55:37 +02:00
2026-05-15 15:55:33 +02:00
2026-06-16 23:59:58 +02:00
2026-02-05 13:54:10 +01:00
2024-05-23 17:39:56 +08:00
2026-06-16 23:59:58 +02:00
2024-10-01 11:29:37 +02:00
2026-02-05 13:54:10 +01:00
2026-06-16 23:59:58 +02:00
2026-05-15 15:55:33 +02:00
2026-05-15 15:55:33 +02:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-04-08 09:42:55 -06:00
2026-05-15 15:55:33 +02:00
2025-12-10 13:10:18 +00:00
2026-05-26 17:19:18 +02:00
2026-05-26 17:19:18 +02:00
2026-05-26 17:19:18 +02:00
2026-05-26 17:19:18 +02:00
2026-05-26 17:19:18 +02:00
2026-05-26 17:19:18 +02:00
2026-05-26 17:19:18 +02:00
2026-05-26 17:19:18 +02:00
2026-05-26 17:19:18 +02:00
2026-05-26 17:19:18 +02:00
2026-05-26 17:19:18 +02:00
2026-05-26 17:19:18 +02:00
2026-05-26 17:19:18 +02:00
2026-05-26 17:19:18 +02:00
2024-05-23 17:39:56 +08:00
2026-03-30 10:58:37 +02:00
2026-03-30 10:58:37 +02:00
2026-03-30 10:58:37 +02:00
2026-03-30 10:58:37 +02:00
2026-03-30 10:58:37 +02:00
2026-03-30 10:58:37 +02:00
2026-03-30 10:58:37 +02:00
2026-03-30 10:58:37 +02:00
2026-03-30 10:58:37 +02:00
2026-03-30 10:58:37 +02:00
2026-02-05 13:54:10 +01:00
2026-02-05 13:54:10 +01:00
2026-02-05 13:54:10 +01:00
2026-02-05 13:54:10 +01:00
2026-06-16 23:59:58 +02:00
2024-10-25 15:43:15 +02:00
2026-06-16 23:59:58 +02:00
2025-02-11 10:40:51 +08:00
2024-10-25 15:43:15 +02:00
2024-10-25 15:43:15 +02:00
2024-10-25 15:43:15 +02:00
2024-10-25 15:43:15 +02:00
2026-05-15 15:55:33 +02:00
2024-10-25 15:43:15 +02:00
2025-10-08 10:18:43 +11:00
2025-10-08 10:18:43 +11:00
2026-02-05 13:54:10 +01:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2025-11-11 04:02:30 +00:00
2026-06-16 23:59:58 +02:00
2026-07-29 00:48:56 +08:00
2026-06-16 23:59:58 +02:00
2026-07-23 05:21:15 +10:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-06-30 09:23:17 +02:00
2026-06-16 23:59:58 +02:00
2026-07-23 05:21:15 +10:00
2026-06-16 23:59:58 +02:00
2026-02-05 13:54:10 +01:00
2026-01-21 10:18:15 +08:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-02-05 13:54:10 +01:00
2024-05-23 17:44:45 +02:00
2026-06-16 23:59:58 +02:00
2026-02-05 13:54:10 +01:00
2026-05-15 15:55:33 +02:00
2026-06-16 23:59:58 +02:00
2024-05-23 17:44:45 +02:00
2026-06-16 23:59:58 +02:00
2026-02-23 19:48:19 +01:00
2026-02-23 19:48:19 +01:00
2026-02-23 19:48:19 +01:00
2026-02-23 19:48:19 +01:00
2026-02-05 13:54:10 +01:00
2026-04-30 10:53:24 +00:00
2026-05-15 16:39:57 +02:00
2026-06-16 23:59:58 +02:00
2026-05-15 16:39:57 +02:00
2024-05-23 17:39:56 +08:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2024-05-23 17:39:56 +08:00
2024-05-23 17:39:56 +08:00
2026-07-29 06:21:50 +10:00
2026-02-05 13:54:10 +01:00
2026-02-05 13:54:10 +01:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-06-30 09:23:17 +02:00
2026-07-15 14:09:08 +00:00
2026-07-15 14:09:08 +00:00
2026-07-23 05:21:15 +10:00
2026-05-15 15:55:33 +02:00
2026-06-24 14:14:47 +02:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2025-12-11 13:38:26 +11:00
2025-12-11 13:38:26 +11:00
2026-07-22 12:10:07 -04:00
2026-07-22 12:10:07 -04:00
2026-02-05 13:54:10 +01:00
2026-07-06 15:29:16 +02:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2026-06-16 23:59:58 +02:00
2024-05-23 17:39:56 +08:00
2024-05-23 17:39:56 +08:00
2026-06-24 14:14:47 +02:00
2026-02-05 13:54:10 +01:00
2026-05-15 15:55:33 +02:00
2026-05-15 15:55:33 +02:00
2026-06-30 09:23:17 +02:00
2026-06-30 09:23:17 +02:00
2026-05-15 12:14:31 +02:00
2026-05-15 12:14:31 +02:00
2026-02-05 13:54:10 +01:00
2026-02-05 13:54:10 +01:00
2026-02-05 13:54:10 +01:00
2026-02-05 13:54:10 +01:00
2026-02-05 13:54:10 +01:00
2026-02-05 13:54:10 +01:00
2026-05-15 12:14:31 +02:00
2026-05-15 12:14:31 +02:00
2026-05-15 12:14:31 +02:00
2026-05-15 12:14:31 +02:00
2026-06-16 23:59:58 +02:00
2026-02-05 13:54:10 +01:00
2026-02-05 13:54:10 +01:00
2026-05-15 15:09:25 +02:00
2026-05-15 15:09:25 +02:00
2025-12-02 14:18:21 +00:00
2026-04-30 10:53:24 +00:00
2024-05-23 17:39:56 +08:00
2024-05-23 17:39:56 +08:00
2024-05-23 17:39:56 +08:00
2024-05-23 17:39:56 +08:00
2026-04-30 10:53:24 +00:00
2024-05-23 17:39:56 +08:00
2024-05-23 17:39:56 +08:00
2024-05-23 17:39:56 +08:00
2024-05-23 17:39:56 +08:00
2026-04-30 10:53:24 +00:00
2024-05-23 17:39:56 +08:00
2026-04-30 10:53:24 +00:00