Skip to content

Expo SDK 58, web basics and Toast, render on every web part - #258

Merged
Khalidabdi1 merged 10 commits into
mainfrom
feat/sdk-58-issues-254-256-257
Nov 2, 2026
Merged

Khalidabdi1 merged 10 commits into
mainfrom
feat/sdk-58-issues-254-256-257

Conversation

@Khalidabdi1

@Khalidabdi1 Khalidabdi1 commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

What this changes

The example, the templates and the tooling move to Expo SDK 58, and the native library compiles and runs on React Native 0.88 and Reanimated 4.7. The web collection gains seven components (Badge, Chip, Checkbox, Radio Group, Field, Table and a dithered Toast), and every web part now takes render.

Why

Refs #254, #255, #256, #257. The issues are closed once npm serves the release.

Type of change

  • Bug fix
  • New component
  • New prop, variant, or behaviour on an existing component
  • Breaking change — an existing API is renamed, removed, or behaves differently
  • Documentation only
  • Internal: refactor, tooling, CI

How it was tested

  • iOS: the example ran on an iOS Simulator with Expo Go 58.0.7. About 30 component screens were opened, the gesture, masked-view, Reanimated and native-control ones among them. None crashed, and the Reanimated 4.7 warnings were fixed and re-checked. The maintainer also checked it on a phone.
  • Android
  • Light and dark themes: the new web components and the Toast versions were screenshotted in both.

The library was typechecked against React Native 0.86 and 0.88 type declarations. The rendered markup of all 47 web docs pages was compared before and after the render change, and no element, class or attribute changed.

Checklist

  • npm run typecheck passes
  • npm run build passes
  • Commits follow Conventional Commits
  • Animations use Reanimated on the UI thread, not the React Native Animated API
  • No hardcoded colours — everything resolves through the theme tokens
  • Interactive parts wire up accessibilityRole and mirror their state
  • Every new part accepts className

If this touches a component's API

  • meta.json / web-meta.json and the usage files are updated, with addedIn set
  • npm run docs:generate --workspace=docs has been run and the generated files are committed
  • Props tables read correctly

Notes for the reviewer

  • The lockfile was regenerated. The commit body lists what moved, including next 16.3 → 16.4 and the map style spec 24 → 26. The map component now translates the four new properties that native cannot parse.
  • React is pinned to 19.3.0 across the workspace, so the docs app no longer pulls a second copy.

🤖 Generated with Claude Code

Khalidabdi1 and others added 9 commits November 2, 2026 17:23
Apps can now add a glyph the built-in set does not carry and have it
resolve colour, weight, direction and fill exactly like the rest.
createIcon is the same function under a second name.

Refs #256

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
React Native 0.88 declares View, Text and TextInput as function components,
so forwardRef<View, ...> stops compiling there. Every forwardRef now names
ViewRef, TextRef or TextInputRef (ComponentRef<typeof X>), which compile on
0.86 and 0.88 and keep focus/clear/isFocused on the ref. The aliases are
exported from the root, and React.ElementRef<typeof Text> is folded into
TextRef so there is one way to name a ref type.

Refs #257

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The web docs built several demos from the docs site's own copies of these
components, so a reader who installed panelui-web found them missing. They
are now part of the package:

- Badge: tinted status variants, with a dot that can pulse while a state changes.
- Chip: a toggle pill in Chip.Group, or a removable value with onRemove.
- Checkbox: a tick that draws itself, indeterminate, and Checkbox.Group with
  a parent box.
- Radio Group: Radio, plus RadioGroup.Card in outline, filled and dither
  versions.
- Field: label, description and error wired to the control by Base UI's field.
- Table: aligned number columns, compact and striped rows, a pinned header.

Input and Textarea now render through the field control, so a Field labels
and validates them. Button takes a render prop, to be drawn as a link.

Every web demo now imports panelui-web only, and a contract test keeps it so.

Refs #254

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Expo SDK 58 brings React Native 0.88, Reanimated 4.7 and a newer map
style spec. The library now builds against them and still against
React Native 0.86 (SDK 57):

- Every ref, ref callback and imperative handle is typed with ViewRef,
  TextRef, TextInputRef or ScrollViewRef. They are interfaces, so the
  published declarations can name them, and ScrollViewRef is exported too.
- The TextInput event types and ViewToken that 0.88 removed are read off
  the props both versions share.
- Charts take their accessibility label and hint from ViewProps, which
  0.88 declares read-only.
- The masked view is typed by its props: its own declarations are built
  from a type 0.88 removed.
- Reanimated hooks get their dependency list on the web only, through
  webDeps(). Native ignores it, and 4.7 warns about it in development.
- Sortable passes no scroll ref rather than an unattached one, which 4.7
  warns about.
- Map drops symbol-height-offset and symbol-height-anchor, and folds
  fill-layer-opacity and line-layer-opacity into the feature opacity
  where both are numbers, so hosted styles keep those layers on native.

Checked against both type versions with tsc, and on an iOS Simulator
running Expo Go 58.0.7.

Refs #257

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The pins follow the Expo Go 58.0.7 client, measured from its binary,
rather than the SDK manifest: react-native 0.88.0 (the manifest says
0.88.1, which the client does not contain), gesture-handler 3.3.0,
screens 4.30.0. Reanimated 4.7.1 and worklets 0.13.0 are not in the
binary's strings; the example starting up on the client confirms them.

React is pinned to 19.3.0 across the workspace, and the test renderer
with it, so the docs app's range no longer pulls a second copy.

The lockfile was regenerated. 374 top-level packages moved; the ones
that matter:

- expo 57.0.7 -> 58.0.22, expo-modules-core 57.0.6 -> 58.0.29
- react-native 0.86.2 -> 0.88.0, react 19.2.3 -> 19.3.0
- @expo/ui 57.0.7 -> 58.0.26, expo-router 57.0.7 -> 58.0.29
- react-native-screens 4.25.2 -> 4.30.0, safe-area-context 5.8.0 -> 5.10.1
- @maplibre/maplibre-react-native 11.3.6 -> 11.5.1, style spec 24.8.5 -> 26.4.4
- next 16.3.0 -> 16.4.4

The example-export check reads Expo 58's indexed source map as well as a
flat one. The installation and troubleshooting pages name SDK 58, and
CLAUDE.md records the 58.0.7 client.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Generated alongside the React Native 0.88 fix and left out of it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Toast is a short message that leaves on its own, raised with useToast()
under one Toast.Provider. Its text changes through dither cells instead of
being swapped, in three versions set by effect:

- type (default): the title resolves out of dither cells behind a caret,
  dissolves into the next title on update, and back out when it leaves.
- materialize: the card is built from dither cells the way the text is,
  a head sweeping across it, and then its title and description resolve
  inside it. Leaving, the words go first and then the card.
- timer: the title as type, with a dithered bar running down the
  toast's time that pauses while the stack is open.

One toast can pick its own with data: { effect }. The mark beside the
title is a 2x2 Bayer cell in the type's colour, cycling while loading.
Built on Base UI's toast for stacking, swipe, timers and announcements;
reduced motion holds every effect still.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Button was a styled <button>. It now renders Base UI's button, so render
composes it with another element, such as a link or a router's link,
keeping its look, ref, disabled handling and keyboard behaviour:
<Button render={<a href="/" />}>Home</Button>. nativeButton is set from
the element, and can be passed when render is a function.

Refs #255

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Discussion #255 asked for the web components to compose like headless
ones do: a part drawn as another element or component, keeping its look
and behaviour. Every part that draws a plain element now does it through
Base UI's useRender, so each takes render, an element or a function of
its props and state, and merges its classes, styles and handlers with
the element's own. Parts already built on Base UI primitives took render
already.

Card.Title and Card keep as, and take render too. The parts that render
through useRender are client components now; they still render on the
server. The rendered markup of every web docs page was compared before
and after: no element, class or attribute changed.

A Composition page under Get started explains the prop, and the contract
test counts useRender as a hook.

Refs #255

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

coderabbitai Bot commented Nov 2, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 555 files, which is 405 over the limit of 150.

To get a review, reduce the PR to 150 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

Usage-priced reviews support at most 300 files.

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: fa281820-2539-4937-9db1-e874d56b2234
Commits

Reviewing files that changed from the base of the PR and between 98523dd and e95e2e2.

Files ignored due to path filters: 4
  • apps/docs/components/web-demos/index.generated.tsx is excluded by !**/*.generated.*
  • apps/docs/lib/icons.generated.json is excluded by !**/*.generated.*
  • apps/docs/lib/public-api.generated.json is excluded by !**/*.generated.*
  • package-lock.json is excluded by !**/package-lock.json
Files selected for processing: 555
  • CLAUDE.md
  • apps/docs/components/showcase/themer.tsx
  • apps/docs/components/web-demos/badge/icons.tsx
  • apps/docs/components/web-demos/badge/overview.tsx
  • apps/docs/components/web-demos/badge/sizes.tsx
  • apps/docs/components/web-demos/badge/statuses.tsx
  • apps/docs/components/web-demos/badge/thumb.tsx
  • apps/docs/components/web-demos/card/footer.tsx
  • apps/docs/components/web-demos/card/form.tsx
  • apps/docs/components/web-demos/card/image.tsx
  • apps/docs/components/web-demos/card/list.tsx
  • apps/docs/components/web-demos/card/sizes.tsx
  • apps/docs/components/web-demos/checkbox/colors.tsx
  • apps/docs/components/web-demos/checkbox/form.tsx
  • apps/docs/components/web-demos/checkbox/overview.tsx
  • apps/docs/components/web-demos/checkbox/parent.tsx
  • apps/docs/components/web-demos/checkbox/thumb.tsx
  • apps/docs/components/web-demos/chip/colors.tsx
  • apps/docs/components/web-demos/chip/overview.tsx
  • apps/docs/components/web-demos/chip/removable.tsx
  • apps/docs/components/web-demos/chip/single.tsx
  • apps/docs/components/web-demos/chip/thumb.tsx
  • apps/docs/components/web-demos/feedback/blur.tsx
  • apps/docs/components/web-demos/feedback/dialog.tsx
  • apps/docs/components/web-demos/feedback/draft.tsx
  • apps/docs/components/web-demos/feedback/failed.tsx
  • apps/docs/components/web-demos/feedback/score.tsx
  • apps/docs/components/web-demos/feedback/tags.tsx
  • apps/docs/components/web-demos/field/controls.tsx
  • apps/docs/components/web-demos/field/overview.tsx
  • apps/docs/components/web-demos/field/server.tsx
  • apps/docs/components/web-demos/field/thumb.tsx
  • apps/docs/components/web-demos/field/validation.tsx
  • apps/docs/components/web-demos/flow/builder.tsx
  • apps/docs/components/web-demos/flow/pipeline.tsx
  • apps/docs/components/web-demos/flow/positions.tsx
  • apps/docs/components/web-demos/flow/wiring.tsx
  • apps/docs/components/web-demos/frame/deploys.tsx
  • apps/docs/components/web-demos/frame/inset.tsx
  • apps/docs/components/web-demos/frame/plain.tsx
  • apps/docs/components/web-demos/frame/sections.tsx
  • apps/docs/components/web-demos/input/fields.tsx
  • apps/docs/components/web-demos/label/controls.tsx
  • apps/docs/components/web-demos/not-found/dissolve.tsx
  • apps/docs/components/web-demos/not-found/page.tsx
  • apps/docs/components/web-demos/not-found/scramble.tsx
  • apps/docs/components/web-demos/not-found/server-error.tsx
  • apps/docs/components/web-demos/planet/fly-to.tsx
  • apps/docs/components/web-demos/radio-group/cards-dither.tsx
  • apps/docs/components/web-demos/radio-group/cards-filled.tsx
  • apps/docs/components/web-demos/radio-group/cards.tsx
  • apps/docs/components/web-demos/radio-group/colors.tsx
  • apps/docs/components/web-demos/radio-group/disabled.tsx
  • apps/docs/components/web-demos/radio-group/horizontal.tsx
  • apps/docs/components/web-demos/radio-group/overview.tsx
  • apps/docs/components/web-demos/radio-group/thumb.tsx
  • apps/docs/components/web-demos/rolling-number/currency.tsx
  • apps/docs/components/web-demos/rolling-number/formats.tsx
  • apps/docs/components/web-demos/rolling-number/slow.tsx
  • apps/docs/components/web-demos/select/plans.tsx
  • apps/docs/components/web-demos/sheet/copy.tsx
  • apps/docs/components/web-demos/sheet/deep.tsx
  • apps/docs/components/web-demos/sheet/event.tsx
  • apps/docs/components/web-demos/sheet/header.tsx
  • apps/docs/components/web-demos/sheet/nested-sides.tsx
  • apps/docs/components/web-demos/sheet/nested.tsx
  • apps/docs/components/web-demos/sheet/no-close.tsx
  • apps/docs/components/web-demos/sheet/own-close.tsx
  • apps/docs/components/web-demos/sheet/payload.tsx
  • apps/docs/components/web-demos/sheet/sides.tsx
  • apps/docs/components/web-demos/sheet/stage.tsx
  • apps/docs/components/web-demos/sheet/thumb.tsx
  • apps/docs/components/web-demos/table/dense.tsx
  • apps/docs/components/web-demos/table/frame.tsx
  • apps/docs/components/web-demos/table/overview.tsx
  • apps/docs/components/web-demos/table/scroll.tsx
  • apps/docs/components/web-demos/table/thumb.tsx
  • apps/docs/components/web-demos/tabs/vertical.tsx
  • apps/docs/components/web-demos/toast/action.tsx
  • apps/docs/components/web-demos/toast/materialize-update.tsx
  • apps/docs/components/web-demos/toast/materialize.tsx
  • apps/docs/components/web-demos/toast/mixed.tsx
  • apps/docs/components/web-demos/toast/morph.tsx
  • apps/docs/components/web-demos/toast/overview.tsx
  • apps/docs/components/web-demos/toast/positions.tsx
  • apps/docs/components/web-demos/toast/promise.tsx
  • apps/docs/components/web-demos/toast/thumb.tsx
  • apps/docs/components/web-demos/toast/timer.tsx
  • apps/docs/components/web-demos/toast/types.tsx
  • apps/docs/content/docs/customization/icons.mdx
  • apps/docs/content/docs/installation.mdx
  • apps/docs/content/docs/reference/foundations.mdx
  • apps/docs/content/docs/reference/index.mdx
  • apps/docs/content/docs/troubleshooting.mdx
  • apps/docs/content/docs/web/components/alert-dialog.mdx
  • apps/docs/content/docs/web/components/alert.mdx
  • apps/docs/content/docs/web/components/avatar.mdx
  • apps/docs/content/docs/web/components/badge.mdx
  • apps/docs/content/docs/web/components/bar-picker.mdx
  • apps/docs/content/docs/web/components/button-group.mdx
  • apps/docs/content/docs/web/components/button.mdx
  • apps/docs/content/docs/web/components/canvas.mdx
  • apps/docs/content/docs/web/components/card.mdx
  • apps/docs/content/docs/web/components/checkbox.mdx
  • apps/docs/content/docs/web/components/chip.mdx
  • apps/docs/content/docs/web/components/choice-cards.mdx
  • apps/docs/content/docs/web/components/command-dock.mdx
  • apps/docs/content/docs/web/components/day-grid.mdx
  • apps/docs/content/docs/web/components/dialog.mdx
  • apps/docs/content/docs/web/components/feedback.mdx
  • apps/docs/content/docs/web/components/field.mdx
  • apps/docs/content/docs/web/components/flow.mdx
  • apps/docs/content/docs/web/components/frame.mdx
  • apps/docs/content/docs/web/components/index.mdx
  • apps/docs/content/docs/web/components/input.mdx
  • apps/docs/content/docs/web/components/inspector.mdx
  • apps/docs/content/docs/web/components/kpi.mdx
  • apps/docs/content/docs/web/components/label.mdx
  • apps/docs/content/docs/web/components/lane-board.mdx
  • apps/docs/content/docs/web/components/menu.mdx
  • apps/docs/content/docs/web/components/message.mdx
  • apps/docs/content/docs/web/components/meta.json
  • apps/docs/content/docs/web/components/not-found.mdx
  • apps/docs/content/docs/web/components/planet.mdx
  • apps/docs/content/docs/web/components/prompt.mdx
  • apps/docs/content/docs/web/components/radio-group.mdx
  • apps/docs/content/docs/web/components/range-meter.mdx
  • apps/docs/content/docs/web/components/rolling-number.mdx
  • apps/docs/content/docs/web/components/select.mdx
  • apps/docs/content/docs/web/components/sheet.mdx
  • apps/docs/content/docs/web/components/soundwave.mdx
  • apps/docs/content/docs/web/components/stat.mdx
  • apps/docs/content/docs/web/components/table.mdx
  • apps/docs/content/docs/web/components/tabs.mdx
  • apps/docs/content/docs/web/components/textarea.mdx
  • apps/docs/content/docs/web/components/tilt-card.mdx
  • apps/docs/content/docs/web/components/timeline.mdx
  • apps/docs/content/docs/web/components/toast.mdx
  • apps/docs/content/docs/web/components/toolbar.mdx
  • apps/docs/content/docs/web/components/workbench.mdx
  • apps/docs/content/docs/web/components/xy-pad.mdx
  • apps/docs/content/docs/web/composition.mdx
  • apps/docs/content/docs/web/meta.json
  • apps/docs/public/r/accordion.json
  • apps/docs/public/r/ai-input.json
  • apps/docs/public/r/alert.json
  • apps/docs/public/r/animated-badge.json
  • apps/docs/public/r/animated-pressable.json
  • apps/docs/public/r/attachment.json
  • apps/docs/public/r/avatar-cropper.json
  • apps/docs/public/r/avatar.json
  • apps/docs/public/r/badge.json
  • apps/docs/public/r/breadcrumb.json
  • apps/docs/public/r/button-group.json
  • apps/docs/public/r/button.json
  • apps/docs/public/r/calendar.json
  • apps/docs/public/r/card.json
  • apps/docs/public/r/chart-accessibility.json
  • apps/docs/public/r/checkbox.json
  • apps/docs/public/r/chip.json
  • apps/docs/public/r/collapsible.json
  • apps/docs/public/r/color-picker.json
  • apps/docs/public/r/combobox.json
  • apps/docs/public/r/context-menu.json
  • apps/docs/public/r/countdown.json
  • apps/docs/public/r/dialog.json
  • apps/docs/public/r/empty-state.json
  • apps/docs/public/r/fab.json
  • apps/docs/public/r/feedback.json
  • apps/docs/public/r/field.json
  • apps/docs/public/r/file-upload.json
  • apps/docs/public/r/flip-card.json
  • apps/docs/public/r/frame.json
  • apps/docs/public/r/glass.json
  • apps/docs/public/r/grid-item.json
  • apps/docs/public/r/heatmap-chart.json
  • apps/docs/public/r/icons.json
  • apps/docs/public/r/image-viewer.json
  • apps/docs/public/r/index.json
  • apps/docs/public/r/input-group.json
  • apps/docs/public/r/input.json
  • apps/docs/public/r/item.json
  • apps/docs/public/r/kpi.json
  • apps/docs/public/r/label.json
  • apps/docs/public/r/leaderboard.json
  • apps/docs/public/r/live-line-chart.json
  • apps/docs/public/r/map.json
  • apps/docs/public/r/markdown-editor.json
  • apps/docs/public/r/marker.json
  • apps/docs/public/r/marquee.json
  • apps/docs/public/r/message-scroller.json
  • apps/docs/public/r/message.json
  • apps/docs/public/r/meter.json
  • apps/docs/public/r/number-input.json
  • apps/docs/public/r/otp-input.json
  • apps/docs/public/r/page-header.json
  • apps/docs/public/r/pagination.json
  • apps/docs/public/r/panelside.json
  • apps/docs/public/r/planner.json
  • apps/docs/public/r/popover.json
  • apps/docs/public/r/post.json
  • apps/docs/public/r/progress-button.json
  • apps/docs/public/r/progress.json
  • apps/docs/public/r/qr-code.json
  • apps/docs/public/r/questionnaire.json
  • apps/docs/public/r/radio-group.json
  • apps/docs/public/r/rating.json
  • apps/docs/public/r/refs.json
  • apps/docs/public/r/scroll-header.json
  • apps/docs/public/r/scroll-progress.json
  • apps/docs/public/r/search-bar.json
  • apps/docs/public/r/section-progress.json
  • apps/docs/public/r/select.json
  • apps/docs/public/r/separator.json
  • apps/docs/public/r/shimmer.json
  • apps/docs/public/r/signature.json
  • apps/docs/public/r/sketch.json
  • apps/docs/public/r/slide-button.json
  • apps/docs/public/r/slider.json
  • apps/docs/public/r/sortable.json
  • apps/docs/public/r/splitter.json
  • apps/docs/public/r/stack-card.json
  • apps/docs/public/r/steps.json
  • apps/docs/public/r/support.json
  • apps/docs/public/r/surface.json
  • apps/docs/public/r/swipe.json
  • apps/docs/public/r/switch.json
  • apps/docs/public/r/table.json
  • apps/docs/public/r/tabs.json
  • apps/docs/public/r/tag-input.json
  • apps/docs/public/r/text-animation.json
  • apps/docs/public/r/text.json
  • apps/docs/public/r/textarea.json
  • apps/docs/public/r/time-picker.json
  • apps/docs/public/r/timeline.json
  • apps/docs/public/r/toast.json
  • apps/docs/public/r/toggle-button.json
  • apps/docs/public/r/tooltip.json
  • apps/docs/public/r/tour.json
  • apps/docs/public/r/tree.json
  • apps/docs/public/r/typography.json
  • apps/docs/public/r/use-keyboard-avoidance.json
  • apps/docs/public/r/use-reveal-progress.json
  • apps/docs/public/r/use-scroll-sections.json
  • apps/docs/public/r/web-deps.json
  • apps/docs/public/r/web/alert-dialog.json
  • apps/docs/public/r/web/alert.json
  • apps/docs/public/r/web/avatar.json
  • apps/docs/public/r/web/badge.json
  • apps/docs/public/r/web/bar-picker.json
  • apps/docs/public/r/web/button-group.json
  • apps/docs/public/r/web/button.json
  • apps/docs/public/r/web/canvas.json
  • apps/docs/public/r/web/card.json
  • apps/docs/public/r/web/checkbox.json
  • apps/docs/public/r/web/chip.json
  • apps/docs/public/r/web/choice-cards.json
  • apps/docs/public/r/web/command-dock.json
  • apps/docs/public/r/web/day-grid.json
  • apps/docs/public/r/web/dialog.json
  • apps/docs/public/r/web/feedback.json
  • apps/docs/public/r/web/field.json
  • apps/docs/public/r/web/flow.json
  • apps/docs/public/r/web/frame.json
  • apps/docs/public/r/web/input.json
  • apps/docs/public/r/web/inspector.json
  • apps/docs/public/r/web/kpi.json
  • apps/docs/public/r/web/label.json
  • apps/docs/public/r/web/lane-board.json
  • apps/docs/public/r/web/menu.json
  • apps/docs/public/r/web/message.json
  • apps/docs/public/r/web/not-found.json
  • apps/docs/public/r/web/planet.json
  • apps/docs/public/r/web/prompt.json
  • apps/docs/public/r/web/radio-group.json
  • apps/docs/public/r/web/range-meter.json
  • apps/docs/public/r/web/registry.json
  • apps/docs/public/r/web/rolling-number.json
  • apps/docs/public/r/web/select.json
  • apps/docs/public/r/web/sheet.json
  • apps/docs/public/r/web/slider.json
  • apps/docs/public/r/web/soundwave.json
  • apps/docs/public/r/web/stat.json
  • apps/docs/public/r/web/table.json
  • apps/docs/public/r/web/tabs.json
  • apps/docs/public/r/web/textarea.json
  • apps/docs/public/r/web/tilt-card.json
  • apps/docs/public/r/web/timeline.json
  • apps/docs/public/r/web/toast.json
  • apps/docs/public/r/web/toolbar.json
  • apps/docs/public/r/web/workbench.json
  • apps/docs/public/r/web/xy-pad.json
  • apps/docs/public/skills/panelui-web/components.md
  • apps/docs/public/skills/panelui-web/components/alert-dialog.md
  • apps/docs/public/skills/panelui-web/components/alert.md
  • apps/docs/public/skills/panelui-web/components/avatar.md
  • apps/docs/public/skills/panelui-web/components/badge.md
  • apps/docs/public/skills/panelui-web/components/button-group.md
  • apps/docs/public/skills/panelui-web/components/button.md
  • apps/docs/public/skills/panelui-web/components/canvas.md
  • apps/docs/public/skills/panelui-web/components/card.md
  • apps/docs/public/skills/panelui-web/components/checkbox.md
  • apps/docs/public/skills/panelui-web/components/chip.md
  • apps/docs/public/skills/panelui-web/components/choice-cards.md
  • apps/docs/public/skills/panelui-web/components/command-dock.md
  • apps/docs/public/skills/panelui-web/components/day-grid.md
  • apps/docs/public/skills/panelui-web/components/dialog.md
  • apps/docs/public/skills/panelui-web/components/feedback.md
  • apps/docs/public/skills/panelui-web/components/field.md
  • apps/docs/public/skills/panelui-web/components/flow.md
  • apps/docs/public/skills/panelui-web/components/frame.md
  • apps/docs/public/skills/panelui-web/components/input.md
  • apps/docs/public/skills/panelui-web/components/inspector.md
  • apps/docs/public/skills/panelui-web/components/kpi.md
  • apps/docs/public/skills/panelui-web/components/label.md
  • apps/docs/public/skills/panelui-web/components/lane-board.md
  • apps/docs/public/skills/panelui-web/components/menu.md
  • apps/docs/public/skills/panelui-web/components/message.md
  • apps/docs/public/skills/panelui-web/components/not-found.md
  • apps/docs/public/skills/panelui-web/components/planet.md
  • apps/docs/public/skills/panelui-web/components/prompt.md
  • apps/docs/public/skills/panelui-web/components/radio-group.md
  • apps/docs/public/skills/panelui-web/components/range-meter.md
  • apps/docs/public/skills/panelui-web/components/select.md
  • apps/docs/public/skills/panelui-web/components/sheet.md
  • apps/docs/public/skills/panelui-web/components/soundwave.md
  • apps/docs/public/skills/panelui-web/components/stat.md
  • apps/docs/public/skills/panelui-web/components/table.md
  • apps/docs/public/skills/panelui-web/components/tabs.md
  • apps/docs/public/skills/panelui-web/components/tilt-card.md
  • apps/docs/public/skills/panelui-web/components/timeline.md
  • apps/docs/public/skills/panelui-web/components/toast.md
  • apps/docs/public/skills/panelui-web/components/toolbar.md
  • apps/docs/public/skills/panelui-web/components/workbench.md
  • apps/docs/public/skills/panelui-web/components/xy-pad.md
  • apps/docs/scripts/build-registry.mjs
  • apps/docs/scripts/web-meta.json
  • apps/docs/scripts/web-usage/badge.json
  • apps/docs/scripts/web-usage/checkbox.json
  • apps/docs/scripts/web-usage/chip.json
  • apps/docs/scripts/web-usage/field.json
  • apps/docs/scripts/web-usage/radio-group.json
  • apps/docs/scripts/web-usage/table.json
  • apps/docs/scripts/web-usage/toast.json
  • apps/docs/test/web-registry.test.mjs
  • apps/example/app/components/[slug]/index.tsx
  • apps/example/app/components/index.tsx
  • apps/example/package.json
  • apps/example/src/data/demos/chunk-08.tsx
  • apps/example/src/data/demos/chunk-14.tsx
  • catalogue.json
  • package.json
  • packages/panelui/package.json
  • packages/panelui/src/components/accordion/index.tsx
  • packages/panelui/src/components/ai-input/index.tsx
  • packages/panelui/src/components/alert/index.tsx
  • packages/panelui/src/components/animated-badge/index.tsx
  • packages/panelui/src/components/attachment/index.tsx
  • packages/panelui/src/components/avatar-cropper/index.tsx
  • packages/panelui/src/components/avatar/index.tsx
  • packages/panelui/src/components/badge/index.tsx
  • packages/panelui/src/components/breadcrumb/index.tsx
  • packages/panelui/src/components/button-group/index.tsx
  • packages/panelui/src/components/button/index.tsx
  • packages/panelui/src/components/calendar/index.tsx
  • packages/panelui/src/components/card/index.tsx
  • packages/panelui/src/components/checkbox/index.tsx
  • packages/panelui/src/components/chip/index.tsx
  • packages/panelui/src/components/collapsible/index.tsx
  • packages/panelui/src/components/color-picker/index.tsx
  • packages/panelui/src/components/combobox/index.tsx
  • packages/panelui/src/components/context-menu/index.tsx
  • packages/panelui/src/components/countdown/index.tsx
  • packages/panelui/src/components/dialog/index.tsx
  • packages/panelui/src/components/empty-state/index.tsx
  • packages/panelui/src/components/fab/index.tsx
  • packages/panelui/src/components/feedback/index.tsx
  • packages/panelui/src/components/field/index.tsx
  • packages/panelui/src/components/file-upload/index.tsx
  • packages/panelui/src/components/flip-card/index.tsx
  • packages/panelui/src/components/frame/index.tsx
  • packages/panelui/src/components/grid-item/index.tsx
  • packages/panelui/src/components/heatmap-chart/index.tsx
  • packages/panelui/src/components/image-viewer/index.tsx
  • packages/panelui/src/components/input-group/index.tsx
  • packages/panelui/src/components/input/index.tsx
  • packages/panelui/src/components/item/index.tsx
  • packages/panelui/src/components/kpi/index.tsx
  • packages/panelui/src/components/label/index.tsx
  • packages/panelui/src/components/leaderboard/index.tsx
  • packages/panelui/src/components/live-line-chart/index.tsx
  • packages/panelui/src/components/map/native-style.ts
  • packages/panelui/src/components/markdown-editor/index.tsx
  • packages/panelui/src/components/marker/index.tsx
  • packages/panelui/src/components/marquee/index.tsx
  • packages/panelui/src/components/message-scroller/index.tsx
  • packages/panelui/src/components/message/index.tsx
  • packages/panelui/src/components/meter/index.tsx
  • packages/panelui/src/components/number-input/index.tsx
  • packages/panelui/src/components/otp-input/index.tsx
  • packages/panelui/src/components/page-header/index.tsx
  • packages/panelui/src/components/pagination/index.tsx
  • packages/panelui/src/components/panelside/index.tsx
  • packages/panelui/src/components/planner/index.tsx
  • packages/panelui/src/components/popover/index.tsx
  • packages/panelui/src/components/post/index.tsx
  • packages/panelui/src/components/progress-button/index.tsx
  • packages/panelui/src/components/progress/index.tsx
  • packages/panelui/src/components/qr-code/index.tsx
  • packages/panelui/src/components/questionnaire/index.tsx
  • packages/panelui/src/components/radio-group/index.tsx
  • packages/panelui/src/components/rating/index.tsx
  • packages/panelui/src/components/scroll-header/index.tsx
  • packages/panelui/src/components/search-bar/index.tsx
  • packages/panelui/src/components/section-progress/index.tsx
  • packages/panelui/src/components/select/index.tsx
  • packages/panelui/src/components/separator/index.tsx
  • packages/panelui/src/components/shimmer/index.tsx
  • packages/panelui/src/components/signature/index.tsx
  • packages/panelui/src/components/sketch/index.tsx
  • packages/panelui/src/components/slide-button/index.tsx
  • packages/panelui/src/components/slider/index.tsx
  • packages/panelui/src/components/sortable/index.tsx
  • packages/panelui/src/components/splitter/index.tsx
  • packages/panelui/src/components/stack-card/index.tsx
  • packages/panelui/src/components/steps/index.tsx
  • packages/panelui/src/components/support/index.tsx
  • packages/panelui/src/components/surface/index.tsx
  • packages/panelui/src/components/swipe/index.tsx
  • packages/panelui/src/components/switch/index.tsx
  • packages/panelui/src/components/table/index.tsx
  • packages/panelui/src/components/tabs/index.tsx
  • packages/panelui/src/components/tag-input/index.tsx
  • packages/panelui/src/components/text-animation/index.tsx
  • packages/panelui/src/components/textarea/index.tsx
  • packages/panelui/src/components/time-picker/index.tsx
  • packages/panelui/src/components/timeline/index.tsx
  • packages/panelui/src/components/toast/index.tsx
  • packages/panelui/src/components/toggle-button/index.tsx
  • packages/panelui/src/components/tooltip/index.tsx
  • packages/panelui/src/components/tour/index.tsx
  • packages/panelui/src/components/tree/index.tsx
  • packages/panelui/src/components/typography/index.tsx
  • packages/panelui/src/hooks/use-keyboard-avoidance.ts
  • packages/panelui/src/hooks/use-reveal-progress.ts
  • packages/panelui/src/hooks/use-scroll-sections.ts
  • packages/panelui/src/icons/index.tsx
  • packages/panelui/src/index.ts
  • packages/panelui/src/primitives/animated-pressable.tsx
  • packages/panelui/src/primitives/chart-accessibility.ts
  • packages/panelui/src/primitives/glass.tsx
  • packages/panelui/src/primitives/refs.ts
  • packages/panelui/src/primitives/scroll-progress.tsx
  • packages/panelui/src/primitives/text.tsx
  • packages/panelui/src/primitives/web-deps.ts
  • packages/panelui/test/map-native-style.test.mjs
  • packages/panelui/test/tabs-scrollable-measurement.test.mjs
  • packages/panelui/tsconfig.type-tests.json
  • packages/panelui/type-tests/ref-api.type-test.tsx
  • packages/web/src/components/alert-dialog/index.tsx
  • packages/web/src/components/alert/index.tsx
  • packages/web/src/components/avatar/index.tsx
  • packages/web/src/components/badge/index.tsx
  • packages/web/src/components/bar-picker/index.tsx
  • packages/web/src/components/button-group/index.tsx
  • packages/web/src/components/button/index.tsx
  • packages/web/src/components/canvas/index.tsx
  • packages/web/src/components/card/index.tsx
  • packages/web/src/components/checkbox/index.tsx
  • packages/web/src/components/chip/index.tsx
  • packages/web/src/components/choice-cards/index.tsx
  • packages/web/src/components/command-dock/index.tsx
  • packages/web/src/components/day-grid/index.tsx
  • packages/web/src/components/dialog/index.tsx
  • packages/web/src/components/feedback/index.tsx
  • packages/web/src/components/field/index.tsx
  • packages/web/src/components/flow/index.tsx
  • packages/web/src/components/frame/index.tsx
  • packages/web/src/components/input/index.tsx
  • packages/web/src/components/inspector/index.tsx
  • packages/web/src/components/kpi/index.tsx
  • packages/web/src/components/label/index.tsx
  • packages/web/src/components/lane-board/index.tsx
  • packages/web/src/components/menu/index.tsx
  • packages/web/src/components/message/index.tsx
  • packages/web/src/components/not-found/index.tsx
  • packages/web/src/components/planet/index.tsx
  • packages/web/src/components/prompt/index.tsx
  • packages/web/src/components/radio-group/index.tsx
  • packages/web/src/components/range-meter/index.tsx
  • packages/web/src/components/rolling-number/index.tsx
  • packages/web/src/components/select/index.tsx
  • packages/web/src/components/sheet/index.tsx
  • packages/web/src/components/slider/index.tsx
  • packages/web/src/components/soundwave/index.tsx
  • packages/web/src/components/stat/index.tsx
  • packages/web/src/components/table/index.tsx
  • packages/web/src/components/tabs/index.tsx
  • packages/web/src/components/textarea/index.tsx
  • packages/web/src/components/tilt-card/index.tsx
  • packages/web/src/components/timeline/index.tsx
  • packages/web/src/components/toast/dither-text.tsx
  • packages/web/src/components/toast/dither.tsx
  • packages/web/src/components/toast/index.tsx
  • packages/web/src/components/toolbar/index.tsx
  • packages/web/src/components/workbench/index.tsx
  • packages/web/src/components/xy-pad/index.tsx
  • packages/web/src/index.ts
  • packages/web/test/package-contract.test.mjs
  • scripts/verify-example-export.mjs
  • skills/panelui-web/components.md
  • skills/panelui-web/components/alert-dialog.md
  • skills/panelui-web/components/alert.md
  • skills/panelui-web/components/avatar.md
  • skills/panelui-web/components/badge.md
  • skills/panelui-web/components/button-group.md
  • skills/panelui-web/components/button.md
  • skills/panelui-web/components/canvas.md
  • skills/panelui-web/components/card.md
  • skills/panelui-web/components/checkbox.md
  • skills/panelui-web/components/chip.md
  • skills/panelui-web/components/choice-cards.md
  • skills/panelui-web/components/command-dock.md
  • skills/panelui-web/components/day-grid.md
  • skills/panelui-web/components/dialog.md
  • skills/panelui-web/components/feedback.md
  • skills/panelui-web/components/field.md
  • skills/panelui-web/components/flow.md
  • skills/panelui-web/components/frame.md
  • skills/panelui-web/components/input.md
  • skills/panelui-web/components/inspector.md
  • skills/panelui-web/components/kpi.md
  • skills/panelui-web/components/label.md
  • skills/panelui-web/components/lane-board.md
  • skills/panelui-web/components/menu.md
  • skills/panelui-web/components/message.md
  • skills/panelui-web/components/not-found.md
  • skills/panelui-web/components/planet.md
  • skills/panelui-web/components/prompt.md
  • skills/panelui-web/components/radio-group.md
  • skills/panelui-web/components/range-meter.md
  • skills/panelui-web/components/select.md
  • skills/panelui-web/components/sheet.md
  • skills/panelui-web/components/soundwave.md
  • skills/panelui-web/components/stat.md
  • skills/panelui-web/components/table.md
  • skills/panelui-web/components/tabs.md
  • skills/panelui-web/components/tilt-card.md
  • skills/panelui-web/components/timeline.md
  • skills/panelui-web/components/toast.md
  • skills/panelui-web/components/toolbar.md
  • skills/panelui-web/components/workbench.md
  • skills/panelui-web/components/xy-pad.md
  • templates/expo-app/package.json
  • templates/expo-starter/package.json

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

axe 4.14 flags a control whose accessible name leaves out its visible
text. The home page toggle read "Dark" but was named "Switch the site
to light mode", so a voice command for "Dark" could not reach it. The
name now starts with the visible word, and aria-pressed, which contradicts
a name that describes an action, is gone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Khalidabdi1
Khalidabdi1 merged commit f65e42c into main Nov 2, 2026
3 checks passed
@Khalidabdi1
Khalidabdi1 deleted the feat/sdk-58-issues-254-256-257 branch November 2, 2026 16:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant