• Docs
  • Blog
    • 0.25.1

    • 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