DocsBlog
  • 0.25.3

  • light

    dark

    system

    Switch mode
  • Cerberus

    Acheron

    Elysium

Get Started
Components
Styling
Theming

Concepts

OverviewCompositionTesting

Layout

Aspect RatioBleedBoxCenterContainerDividerFlexFloatGridLink OverlayScrollableStackWrap

Components

AccordionAdmonitionAvatarButtonCarouselCheckboxClipboardCollapsibleComboboxConfirm ModalCTAModalDate PickerDialogFieldFieldsetFile UploaderIcon ButtonInputLoading StatesMenuNotificationsNumber InputPin InputProgressPrompt ModalRadioRatingSelectSplit ButtonSwitchTableTabsTagTextTextareaToggleTooltip

Utilities

Client OnlyDownload TriggerEnvironmentFeature FlagsFocus TrapForFormat ByteFormat NumberFormat Relative TimeFrameHighlightJSON Tree ViewLocaleLocal StoragePortalPresenceShowsplitPropsTheme

Input

The Input component displays a text-based input field.

  • npm
  • source
  • recipe
  • Ark
import {
Field,
Input,
} from '@cerberus/react'

Usage

The Input component displays a text-based input field.

We'll never share your email with anyone else.
A name is required to submit this form. It replaces the helper text.
This will help us learn more about you.0/300
Copy
some-form.tsx
import { Field, Input, Textarea } from '@cerberus/react'
import { Box, VStack } from 'styled-system/jsx'
export function BasicFieldPreview() {
return (
<form action={someAction} method="post">
<Box w="1/2">
<VStack alignItems="flex-start" gap="lg" w="full">
<Field
label="Enter your email"
helperText="We'll never share your email with anyone else."
required
>
<Input name="email" type="email" />
</Field>
<Field
label="Invalid example"
helperText="This is an example of an invalid field."
errorText="A name is required to submit this form. It replaces the helper text."
invalid
required
>
<Input name="invalid-name" type="text" />
</Field>
<Field
label="Anything else you want to tell us?"
helperText="This will help us learn more about you."
secondaryHelperText="0/300"
>
<Textarea name="message" />
</Field>
</VStack>
</Box>
</form>
)
}

With Icons

You can utilize the startIcon or endIcon props to add icons to the input.

Copy
search-input.tsx
import { Field, Input } from '@cerberus/react'
import { Search } from '@carbon/icons-react'
import { VStack } from 'styled-system/jsx'
export function SearchInputExample() {
return (
<VStack gap="md" w="1/2">
<Field>
<Input startIcon={<Search />} placeholder="Search for anything" />
</Field>
<Field>
<Input endIcon={<Search />} placeholder="Search for anything" />
</Field>
<Field invalid>
<Input endIcon={<Search />} placeholder="Search for anything" />
</Field>
</VStack>
)
}

Note

When and input is marked as invalid, the endIcon will be replaced by the invalid icon.

Customizing

You can customize the input by passing styles directly into the component. The Input is a re-export of the FieldInput primitive.

Custom Helper Text
Copy
import { FieldParts } from '@cerberus/react'
import { Box } from 'styled-system/jsx'
export function CustomField() {
return (
<Box w="1/2">
<FieldParts.Root>
<FieldParts.Label
css={{
fontSize: 'xl',
fontWeight: 'black',
textTransform: 'uppercase',
}}
>
Custom Label
</FieldParts.Label>
<FieldParts.Input
css={{
transform: 'skewX(-10deg)',
}}
type="text"
/>
<FieldParts.HelperText
css={{
fontStyle: 'italic',
}}
>
Custom Helper Text
</FieldParts.HelperText>
</FieldParts.Root>
</Box>
)
}

API

Props

The Input accepts the following props in addition to any native input props:

NameDefaultDescription
startIconAn ElementType to display at the start of the input
endIconAn ElementType to display at the end of the input
sizeThis size variant of the input

The Input component also accepts any of the props from the FieldParts.Input primitive.

On this page

  • Edit this page on Github
Cerberus Design System | Docs