Skip to main content

Textfield

Textfield is a customizable component used for capturing user input. It supports various keyboard types and validation options.

Import

Phaselis exports one main component for Textfield.

import { Textfield } from "phaselis";
  • Textfield: Main Component import for Textfield

Usage

Basic Usage

import { Textfield } from "phaselis";

const Example = () => {
return (
<Textfield
placeholder="Enter your name"
onChange={(e, value) => console.log("Input changed:", value)}
/>
);
};

export default Example;

Textarea Usage

import { required, Textfield } from "phaselis";

const Example = () => {
return (
<Textfield
name="address"
placeholder="Enter your address information here!"
textarea
validations={[required("required")]}
/>
);
};

export default Example;

Masked Textfield Usage

import { required, Textfield } from "phaselis";
import { Masks } from "react-native-mask-input";

const Example = () => {
return (
<Textfield
name="phone"
placeholder="Enter your phone number"
mask={Masks.USA_PHONE}
maxLength={17}
validations={[required("required")]}
/>
);
};

export default Example;

Props

tip

Other than listed props below, you can pass any prop that a TextInput component accepts.

value

string

The current value of the input field.

<Textfield value="Initial text" />

onChange

(event: any, value: string) => void

Callback function that triggers when the input value changes.

<Textfield onChange={(e, value) => console.log("New value:", value)} />

placeholder

string

Placeholder text displayed when the input field is empty.

<Textfield placeholder="Enter your name" />

style

NameTypeDescription
containerViewStyleStyle for the outer container of the input field.
textTextStyleStyle for the input text.
leftSlotViewStyleStyle for the component or icon on the left side.
rightSlotViewStyleStyle for the component or icon on the right side.

You can style the Textfield with the style prop using either an object with named styles or directly provide TextStyle properties that will be applied to the text input.

// Object with named styles
<Textfield
style={{
container: { padding: 10, backgroundColor: "#eef8ff" },
text: { color: "#323439", fontSize: 16 },
leftSlot: { marginRight: 10 },
rightSlot: { marginLeft: 10 },
}}
/>

// Direct text styling
<Textfield
style={{ color: "#0066cc", fontSize: 18, fontWeight: "bold" }}
/>

containerStyle

ViewStyle

Additional style applied directly to the container View.

<Textfield containerStyle={{ borderRadius: 8, padding: 12 }} />

leftSlotStyle

IconStyle

Additional style applied directly to the left slot or icon.

<Textfield leftIcon="User" leftSlotStyle={{ color: "#0066cc" }} />

rightSlotStyle

IconStyle

Additional style applied directly to the right slot or icon.

<Textfield rightIcon="Search" rightSlotStyle={{ color: "#0066cc" }} />

type

default | text | number | email | phone | password

Specifies the type of input, which determines the keyboard type and behavior. Defaults to "default".

<Textfield type="email" placeholder="Enter your email" />

size

ComponentSize

Defines the size of the input field, affecting padding and font size. Defaults to "md".

<Textfield size="lg" />

mask

Mask

Applies a mask to format the input as the user types. Useful for phone numbers, dates, and more.

import { Masks } from "react-native-mask-input";
<Textfield mask={Masks.DATE_DDMMYYYY} placeholder="Enter date" />

textarea

boolean

If true, the Textfield behaves as a multi-line text input.

<Textfield textarea numberOfLines={5} />

leftIcon

SlotIconName

Displays an icon on the left side of the input field.

<Textfield
placeholder="Search"
leftIcon="Search"
/>

rightIcon

SlotIconName

Displays an icon on the right side of the input field.

<Textfield
placeholder="Password"
rightIcon="Eye"
/>

LeftSlot

ReactNode

A custom component or element rendered on the left side of the input field.

import { LucideIcon } from "phaselis";
<Textfield
placeholder="Enter text"
LeftSlot={() => <LucideIcon name={"User"} />}
/>

RightSlot

ReactNode

A custom component or element rendered on the right side of the input field.

import { LucideIcon } from "phaselis";
<TextField
placeholder="Search"
RightSlot={() => <LucideIcon name={"Search"} />}
/>

disabled

boolean

If true, the input field is disabled and non-editable.

<Textfield disabled />