import { defineManifest } from '../../../../scripts/build-docs/manifest-schema'; import { Controlled, Default, Disabled, Email, Number, Password, ReadOnly, Required, Uncontrolled, WithRef, } from './PixelBareInput.examples'; export default defineManifest({ name: 'PixelBareInput', category: 'forms', since: '1.0.0', status: 'stable', description: 'Unstyled, forwardRef-enabled `` primitive used as an escape hatch for fully custom field compositions.', highlights: [ 'Native `` semantics — accepts every `InputHTMLAttributes` prop verbatim.', 'forwardRef passthrough exposes the underlying `HTMLInputElement` for measurement, focus, or imperative APIs.', 'Zero styling — pair with parent surfaces (PixelInputGroup, PixelFieldset) when building bespoke field widgets.', 'SSR-safe and tree-shakable — no client effects or runtime dependencies.', ], examples: [ { id: 'default', label: 'Default', Component: Default }, { id: 'uncontrolled', label: 'Uncontrolled', Component: Uncontrolled }, { id: 'controlled', label: 'Controlled', Component: Controlled }, { id: 'email', label: 'Email', Component: Email }, { id: 'password', label: 'Password', Component: Password }, { id: 'number', label: 'Number', Component: Number }, { id: 'disabled', label: 'Disabled', Component: Disabled }, { id: 'read-only', label: 'Read-only', Component: ReadOnly }, { id: 'required', label: 'Required', Component: Required }, { id: 'with-ref', label: 'With ref', Component: WithRef }, ], props: 'auto', a11y: { wcag: '2.1 AA', patterns: ['textbox'], keyboard: [ { key: 'Tab', does: 'Moves focus into / out of the input.' }, { key: 'Enter', does: 'Submits the surrounding form when present.' }, ], notes: 'Because this primitive is unstyled, callers MUST supply an accessible name via `aria-label`, `aria-labelledby`, or an associated `