Field
adn-ui/fieldFreeComponent
Provides labeling, helper text, and validation error messages for form controls.
Live preview
live · rendered by the registry
Rendered by adn-ui on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://ui.awaiden.com/r/field.jsonSource
1"use client";23import "./field.css";4import { Field as BaseField } from "@base-ui/react/field";5import type React from "react";6import { cn } from "tailwind-variants";78import { FieldContext, useFieldContext } from "./field.context";9import { fieldVariants, type FieldVariants } from "./field.variants";1011export type FieldProps = FieldVariants & React.ComponentProps<typeof BaseField.Root>;1213export const FieldRoot = ({ children, className, size, ...props }: FieldProps) => {14 const slots = fieldVariants({ size });1516 return (17 <FieldContext.Provider value={{ slots }}>18 <BaseField.Root className={cn(slots.root(), className)} {...props}>19 {children}20 </BaseField.Root>21 </FieldContext.Provider>22 );23};2425export type FieldLabelProps = React.ComponentProps<typeof BaseField.Label>;2627export const FieldLabel = ({ className, ...props }: FieldLabelProps) => {28 const { slots } = useFieldContext();29 return <BaseField.Label className={cn(slots.label(), className)} {...props} />;30};3132export type FieldControlProps = React.ComponentProps<typeof BaseField.Control>;3334export const FieldControl = ({ className, ...props }: FieldControlProps) => {35 const { slots } = useFieldContext();36 return <BaseField.Control className={cn(slots.control(), className)} {...props} />;37};3839export type FieldErrorProps = React.ComponentProps<typeof BaseField.Error>;4041export const FieldError = ({ className, ...props }: FieldErrorProps) => {42 const { slots } = useFieldContext();43 return <BaseField.Error className={cn(slots.error(), className)} {...props} />;44};4546export type FieldDescriptionProps = React.ComponentProps<typeof BaseField.Description>;4748export const FieldDescription = ({ className, ...props }: FieldDescriptionProps) => {49 const { slots } = useFieldContext();50 return <BaseField.Description className={cn(slots.description(), className)} {...props} />;51};5253export type FieldItemProps = React.ComponentProps<typeof BaseField.Item>;5455export const FieldItem = ({ className, ...props }: FieldItemProps) => {56 const { slots } = useFieldContext();57 return <BaseField.Item className={cn(slots.item(), className)} {...props} />;58};5960export type FieldValidityProps = React.ComponentProps<typeof BaseField.Validity>;6162export const FieldValidity = (props: FieldValidityProps) => {63 return <BaseField.Validity {...props} />;64};
What it pulls in
npm packages
Files it writes
More from adn-ui
All 46 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Accordionaccordion | adn-ui | Components | Free | 2 deps · 5 files | |
| Alert Dialogalert-dialog | adn-ui | Components | Free | 2 deps · 5 files | |
| Aspect Ratioaspect-ratio | adn-ui | Components | Free | 1 dep · 5 files | |
| Autocompleteautocomplete | adn-ui | Components | Free | 2 deps · 5 files | |
| Avataravatar | adn-ui | Components | Free | 2 deps · 5 files | |
| Badgebadge | adn-ui | Components | Free | 1 dep · 5 files | |
| Breadcrumbbreadcrumb | adn-ui | Components | Free | 1 dep · 5 files | |
| Buttonbutton | adn-ui | Components | Free | 1 dep · 4 files |
