input-otp
agentmesh/input-otpFreeComponent
shadcn/ui publishes no description for this item.
Live preview
live · rendered by the registry
Rendered by shadcn/ui on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://raw.githubusercontent.com/ombhanushaliii/agentmesh/main/example/ui/apps/v4/public/r/styles/base-vega/input-otp.jsonSource
1"use client"23import * as React from "react"4import { OTPInput, OTPInputContext } from "input-otp"56import { cn } from "@/registry/base-vega/lib/utils"7import { IconPlaceholder } from "@/app/(create)/components/icon-placeholder"89function InputOTP({10 className,11 containerClassName,12 ...props13}: React.ComponentProps<typeof OTPInput> & {14 containerClassName?: string15}) {16 return (17 <OTPInput18 data-slot="input-otp"19 containerClassName={cn(20 "cn-input-otp flex items-center has-disabled:opacity-50",21 containerClassName22 )}23 spellCheck={false}24 className={cn("disabled:cursor-not-allowed", className)}25 {...props}26 />27 )28}2930function InputOTPGroup({ className, ...props }: React.ComponentProps<"div">) {31 return (32 <div33 data-slot="input-otp-group"34 className={cn(35 "flex items-center rounded-md has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40",36 className37 )}38 {...props}39 />40 )41}4243function InputOTPSlot({44 index,45 className,46 ...props47}: React.ComponentProps<"div"> & {48 index: number49}) {50 const inputOTPContext = React.useContext(OTPInputContext)51 const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {}5253 return (54 <div55 data-slot="input-otp-slot"56 data-active={isActive}57 className={cn(58 "relative flex size-9 items-center justify-center border-y border-r border-input text-sm shadow-xs transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md aria-invalid:border-destructive data-[active=true]:z-10 data-[active=true]:border-ring data-[active=true]:ring-3 data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:border-destructive data-[active=true]:aria-invalid:ring-destructive/20 dark:bg-input/30 dark:data-[active=true]:aria-invalid:ring-destructive/40",59 className60 )}61 {...props}62 >63 {char}64 {hasFakeCaret && (65 <div className="pointer-events-none absolute inset-0 flex items-center justify-center">66 <div className="h-4 w-px animate-caret-blink bg-foreground duration-1000" />67 </div>68 )}69 </div>70 )71}7273function InputOTPSeparator({ ...props }: React.ComponentProps<"div">) {74 return (75 <div76 data-slot="input-otp-separator"77 className="flex items-center [&_svg:not([class*='size-'])]:size-4"78 role="separator"79 {...props}80 >81// … truncated
What it pulls in
npm packages
Files it writes
More from shadcn/ui
All 201 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| accordionaccordion | shadcn/ui | Components | Free | no deps | |
| alertalert | shadcn/ui | Components | Free | no deps | |
| alert-dialogalert-dialog | shadcn/ui | Components | Free | no deps | |
| aspect-ratioaspect-ratio | shadcn/ui | Components | Free | no deps | |
| avataravatar | shadcn/ui | Components | Free | no deps | |
| badgebadge | shadcn/ui | Components | Free | no deps | |
| breadcrumbbreadcrumb | shadcn/ui | Components | Free | no deps | |
| buttonbutton | shadcn/ui | Components | Free | no deps |
