Focus Ring
Preview: Default
Import
import { FocusRing } from '@marbleui/ui'Props
<FocusRing>
Re-exported from React Aria FocusRing; see its documentation for props.
Usage notes
Adds a class only when focus should be visible (keyboard, not mouse), for your own custom focusable elements. Built-in Marble UI components already include focus styles.
<FocusRing focusRingClass="outline-2 outline-offset-2 outline-ring">
<a href="#" className="outline-none">Link</a>
</FocusRing>
- Re-exported from React Aria.
withintracks focus on any descendant, andfocusRingClasssets the class applied. Pass a single child element. useFocusRing()returnsisFocusVisibleandfocusPropsfor manual wiring.focusRing(lowercase) is the Marble UI helper used insideclassNamerender props of React Aria components, taking{ isFocusVisible }.- Remove the default outline (
outline-none) only when you supply a visible replacement.
Example source · show· hide
import { FocusRing } from './focus-ring'
export const styles = {
Default: () => (
<div className="flex flex-col items-center gap-3 text-sm text-fg-muted">
<FocusRing focusRingClass="outline-(length:--focus-width) outline-offset-(--focus-offset) outline-ring">
<a href="#" className="rounded-xs text-accent-ink outline-none">Tab to me: ring shows for keyboard only</a>
</FocusRing>
<FocusRing within focusRingClass="ring-3 ring-ring/30 border-ring">
<div className="flex w-72 rounded-md border border-border-strong">
<input aria-label="Focus within" placeholder="Ring wraps the whole group" className="flex-1 bg-transparent px-3 py-2 text-fg outline-none" />
</div>
</FocusRing>
</div>
),
}Source: packages/ui/src/focus-ring/focus-ring.tsx
Catalog
- Category
- utilities
- Priority
- Core
- Primitive
- react-aria
- React Aria
- FocusRing