skills/base-ui/SKILL.md
Base UI unstyled React components. Covers forms, menus, overlays, composition. Use when building accessible, unstyled React UI components with @base-ui/react, composing with render props, or implementing custom-styled form controls, menus, and overlays. Keywords: @base-ui/react, render props, unstyled components.
npx skillsauth add itechmeat/llm-code base-uiInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Base UI provides unstyled, composable React components. This skill focuses on assembling multi-part components, composing with the render prop, and meeting accessibility requirements while you supply styling.
mergeProps now forwards multi-argument event handlers correctly, which matters for wrapped callbacks that receive extra details/state alongside the event.display: contents was fixed; retest custom wrappers and render-prop compositions that flatten DOM structure.OTPField replaces sanitizeValue() with normalizeValue() and improves keyboard shortcut plus validation-composition behavior.open state more consistently, which affects Popover, Menu, PreviewCard, and related overlays.Form, Field, and OTPField avoid older flushSync-style validation timing patterns; retest any local validation scheduling workarounds before keeping them.NavigationMenu, Popover, and ScrollArea.Drawer.Viewport now forwards style, which is useful for custom viewport sizing and animated layout constraints.OTPField arrives as a preview primitive for one-time-password and verification-code entry.form and suppressHydrationWarning, which matters when controls submit to external forms or hydrate across SSR boundaries.render warnings and preventBaseUIHandler() runtime behavior are more reliable in composed components.Drawer, NavigationMenu, Select, Slider, Toast, and Switch.InputGroup; Combobox, Select, and Slider add Label parts.SwipeArea for explicit swipe affordances.closeOnClick; Toast can close all toasts.aria-labelledby support.render prop support from v1.2.0 remains relevant, including lazy elements.Root + subparts (Trigger, Popup, Item, etc.). Assemble them explicitly.render prop: replace the default element or wrap with your own component; when using the function form, merge props manually with mergeProps.data-[popup-open], data-[highlighted], data-[pressed], data-[checked], data-[invalid], etc.Portal + Positioner + Popup for popovers, menus, tooltips, select, navigation menu content, and preview cards.Form for submission and error aggregation.Field.Root with a name, then Field.Label, Field.Control, and Field.Error for labels and errors.Fieldset.Root + Fieldset.Legend.Radio groups, either use RadioGroup with aria-labelledby, or render RadioGroup via Fieldset.Root and use Field.Label for each option.Field/Fieldset labeling pattern).render + mergePropsrender, Base UI merges props automatically.render, merge Base UI props and your props with mergeProps.event.preventBaseUIHandler() inside merged event handlers to stop Base UI’s internal behavior when needed (synthetic events only).Root + Trigger + Portal + Positioner + Popup.Item, Separator, Arrow, and list/viewport parts as needed.NavigationMenu.Link supports render for framework router links.Toast.Provider.Toast.useToastManager() to create toasts.Toast.Viewport inside Toast.Portal, then map toasts to Toast.Root entries with Toast.Content, Toast.Title, Toast.Description, and Toast.Close.DirectionProvider and also set dir="rtl" (provider does not set the DOM direction).CSPProvider and pass nonce, or disable inline style elements if your app supplies external styles. Beware inline style attributes are not controlled by CSPProvider.Slider.Thumb.Slider.Thumb per value; add index for SSR alignment.thumbAlignment when edge alignment is required.Portal for overlays that need to escape stacking/overflow contexts.mergeProps when using the function form of render.When responding to the user, provide:
data-ai
Zvec in-process vector database. Covers collections, indexing, embeddings, reranking, and persistence. Use when embedding Zvec into applications or tuning retrieval/storage behavior. Keywords: Zvec, HNSW-RaBitQ, vector database, ANN.
development
Vitest testing framework: Vite-powered tests, Jest-compatible API, mocking, snapshots, coverage, browser mode, and TypeScript support. Use when writing or configuring tests with Vitest, setting up mocking/snapshots, configuring coverage, or running browser-mode tests. Keywords: Vitest, testing, Vite, Jest, mocking, coverage.
tools
Vite next-gen frontend tooling: dev server, HMR, build, config, plugins, Environment API, Rolldown. Use when setting up or running a Vite project, configuring vite.config.*, authoring plugins, working with HMR or JS API, or managing environment variables and modes. Keywords: vite.config, bundler, Vite, HMR, Rolldown.
development
Orchestrate AI coding with Vibe Kanban: tasks, review, sessions, workspaces, and isolated git worktrees. Use when managing AI-generated code in isolated environments, planning coding tasks, reviewing AI output, or configuring Vibe Kanban workspaces and agents. Keywords: Vibe Kanban, AI orchestration, worktrees.