Purpose

Styled native <select> element — accessible and tiny. Mirrors shadcn NativeSelect.

Island model

island: true when controlled with onChange. As an uncontrolled <select name="..."> inside a server form, it works with zero JS — the build downgrades it.

Peer dependencies

None.

Public API

export function NativeSelect(props: React.SelectHTMLAttributes<HTMLSelectElement> & { className?: string }): JSX.Element
export const island = true

Patties adjustments

  • This is the recommended select for server forms; 44-select is for richer client-only UX.

Acceptance criteria

  • Native form submission carries the selected value with no JS.
  • Renders a chevron icon on the trailing edge via background-image (no extra DOM).
  • Disabled state styles match the design system.