/** * @fileoverview InputOTP primitive — one-time password input with individual character slots. * Built on the input-otp library. Part of the Saasflare base component layer. * @module packages/ui/components/ui/input-otp * @layer core * * @component * @example * import { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator } from '@saasflare/ui'; * * * * * * * * * * * * * */ import * as React from "react"; import { OTPInput } from "input-otp"; import { type SaasflareComponentProps } from "../../providers"; /** * Props for {@link InputOTP}. * * Extends the `input-otp` OTPInput props with {@link SaasflareComponentProps}. * `containerClassName` styles the outer flex wrapper; `className` styles the * underlying input element. */ type InputOTPProps = React.ComponentProps & SaasflareComponentProps & { containerClassName?: string; }; /** * Root one-time-password input. Owns focus management and the hidden input * via the `input-otp` library; resolves the Saasflare contract axes and emits * `data-surface`/`data-radius`/`data-animated` for downstream theming. */ declare function InputOTP({ className, containerClassName, surface, radius, animated, iconWeight, ...props }: InputOTPProps): import("react/jsx-runtime").JSX.Element; /** Props for {@link InputOTPGroup}. */ interface InputOTPGroupProps extends Omit, keyof SaasflareComponentProps>, SaasflareComponentProps { } /** * Visual grouping for a run of {@link InputOTPSlot}s. Resolves the contract * axes and emits `data-surface`/`data-radius`/`data-animated` so the group * stays consistent with the rest of the OTP family. */ declare function InputOTPGroup({ className, surface, radius, animated, iconWeight, ...props }: InputOTPGroupProps): import("react/jsx-runtime").JSX.Element; /** Props for {@link InputOTPSlot}. */ interface InputOTPSlotProps extends Omit, keyof SaasflareComponentProps>, SaasflareComponentProps { /** Zero-based position of this slot within the OTP value. */ index: number; } /** * A single visible character box. Renders the bordered/rounded cell plus the * blinking fake caret. Resolves the contract axes and emits * `data-surface`/`data-radius`/`data-animated` so per-slot theming applies. */ declare function InputOTPSlot({ index, className, surface, radius, animated, iconWeight, ...props }: InputOTPSlotProps): import("react/jsx-runtime").JSX.Element; /** Props for {@link InputOTPSeparator}. */ interface InputOTPSeparatorProps extends Omit, keyof SaasflareComponentProps>, SaasflareComponentProps { } /** * Visual divider between OTP groups, rendering a Phosphor `MinusIcon` whose * weight follows the resolved `iconWeight` axis. */ declare function InputOTPSeparator({ surface, radius, animated, iconWeight, ...props }: InputOTPSeparatorProps): import("react/jsx-runtime").JSX.Element; export { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator, type InputOTPProps, type InputOTPGroupProps, type InputOTPSlotProps, type InputOTPSeparatorProps, };