Number Field
adn-ui/number-fieldFreeComponent
A numeric input element with increment and decrement buttons, and scrub area.
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/number-field.jsonSource
1"use client";23import "./number-field.css";4import { NumberField as BaseNumberField } from "@base-ui/react/number-field";5import type React from "react";6import { cn } from "tailwind-variants";78import { NumberFieldContext, useNumberFieldContext } from "./number-field.context";9import { numberFieldVariants, type NumberFieldVariants } from "./number-field.variants";1011export type NumberFieldProps = NumberFieldVariants &12 React.ComponentProps<typeof BaseNumberField.Root>;1314export const NumberFieldRoot = ({ children, className, size, ...props }: NumberFieldProps) => {15 const slots = numberFieldVariants({ size });1617 return (18 <NumberFieldContext.Provider value={{ slots }}>19 <BaseNumberField.Root className={cn(slots.root(), className)} {...props}>20 {children}21 </BaseNumberField.Root>22 </NumberFieldContext.Provider>23 );24};2526export type NumberFieldGroupProps = React.ComponentProps<typeof BaseNumberField.Group>;2728export const NumberFieldGroup = ({ className, ...props }: NumberFieldGroupProps) => {29 const { slots } = useNumberFieldContext();30 return <BaseNumberField.Group className={cn(slots.group(), className)} {...props} />;31};3233export type NumberFieldInputProps = React.ComponentProps<typeof BaseNumberField.Input>;3435export const NumberFieldInput = ({36 className,37 children: _children,38 dangerouslySetInnerHTML: _dangerouslySetInnerHTML,39 ...props40}: NumberFieldInputProps & { children?: React.ReactNode; dangerouslySetInnerHTML?: any }) => {41 const { slots } = useNumberFieldContext();42 return <BaseNumberField.Input className={cn(slots.input(), className)} {...props} />;43};4445export type NumberFieldDecrementProps = React.ComponentProps<typeof BaseNumberField.Decrement>;4647export const NumberFieldDecrement = ({48 children,49 className,50 ...props51}: NumberFieldDecrementProps) => {52 const { slots } = useNumberFieldContext();53 return (54 <BaseNumberField.Decrement className={cn(slots.decrement(), className)} {...props}>55 {children ?? (56 <svg className="h-3.5 w-3.5 stroke-current" fill="none" strokeWidth="2" viewBox="0 0 24 24">57 <path d="M5 12h14" />58 </svg>59 )}60 </BaseNumberField.Decrement>61 );62};6364export type NumberFieldIncrementProps = React.ComponentProps<typeof BaseNumberField.Increment>;6566export const NumberFieldIncrement = ({67 children,68 className,69 ...props70}: NumberFieldIncrementProps) => {71 const { slots } = useNumberFieldContext();72 return (73// … truncated
What it pulls in
npm packages
Files it writes
More from adn-ui
All 48 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 · 4 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 · 4 files | |
| Breadcrumbbreadcrumb | adn-ui | Components | Free | 1 dep · 5 files | |
| Buttonbutton | adn-ui | Components | Free | 1 dep · 4 files |
