NeonKit
esc
  • IntroductionGetting started
  • InstallationGetting started
  • ThemingGetting started
  • Use with AIGetting started
  • All componentsGetting started
  • ButtonSolid, outline, soft, ghost and link buttons that light up on hover.Forms
  • InputText field with an animated neon focus ring, icons, labels and error states.Forms
  • TextareaMulti-line field that grows with its content and counts characters.Forms
  • SelectKeyboard-friendly listbox with a glowing popover and typeahead.Forms
  • CheckboxCheckbox with a drawn-on checkmark and indeterminate state.Forms
  • Radio GroupSingle choice from a set, with arrow-key navigation and card layouts.Forms
  • SwitchA toggle that powers on like a neon tube.Forms
  • SliderPointer and keyboard slider with a glowing track and optional range.Forms
  • OTP InputOne-time code input with auto-advance, paste and backspace handling.Forms
  • BadgeStatus labels with optional live dot and remove button.Data Display
  • AvatarProfile image with initials fallback, status light and stacked groups.Data Display
  • CardSurface with header, content and footer slots and a lit edge.Data Display
  • KbdKeyboard keys and shortcuts that glow when pressed.Data Display
  • TabsTabbed panels with a sliding light indicator and roving focus.Data Display
  • AccordionCollapsible sections with smooth height animation.Data Display
  • ProgressLinear and circular progress with a moving highlight.Feedback
  • SpinnerRing, dots and bars loaders in any neon color.Feedback
  • SkeletonLoading placeholders with a scanning shimmer.Feedback
  • AlertInline messages for info, success, warning and errors.Feedback
  • ToastStacked notifications with a tiny toast() API. No provider needed.Feedback
  • DialogAccessible modal built on the native dialog element.Overlay
  • TooltipHover and focus hints on four sides.Overlay
  • Neon TextText rendered as a glowing tube sign, with optional power-on flicker.Effects
  • Border BeamA beam of light that travels around any element's border.Effects
  • Spotlight CardCard whose border and surface light up under the cursor.Effects
  • Retro GridSynthwave perspective grid that scrolls toward the horizon.Effects

Components/Forms

Input

Text field with an animated neon focus ring, icons, labels and error states.

Installation#

npx shadcn@latest add https://get-neonkit.vercel.app/r/input.json

Usage#

import { Input } from "@/components/ui/input"

<Input label="Email" type="email" placeholder="you@company.com" />

Examples#

trailing holds hints and small buttons. Press / to focus this one.

/

Validation

error turns the field red, sets aria-invalid and takes the description's place. leading also takes text addons.

neonkit.dev/

That one is taken. Try aadi-dev.

Read-only and disabled

Read-only fields keep a quieter focus state so they don't read as editable.

Read-only. Roll the key from the dashboard if it leaks.

Managed by your organization owner.

Sizes

Heights match Button: 32, 40 and 48px.

API reference#

Input

Also accepts every native input attribute, and the ref points at the <input>. className and style go to the field box around it.

PropTypeDefault
labelReactNode

Visible label, linked to the input.

—
descriptionReactNode

Helper text under the field.

—
errorReactNode

Red invalid state and message. Replaces description. Pass true for the state without a message.

—
leadingReactNode

Icon or text addon before the value. Icons light up on focus.

—
trailingReactNode

Icon, hint or small button after the value.

—
colorNeonColor

Palette name or hex. Falls back to --neon-accent, then cyan.

inherited
size"sm" | "md" | "lg"

Height, padding and text size.

"md"
classNamestring

Classes for the field box: border, background, height.

—
containerClassNamestring

Classes for the outer block with the label and message. Use it for width and margins.

—

Accessibility#

  • The label is a native <label>, and the description or error is linked with aria-describedby.
  • Clicking the padding or the leading icon focuses the input, like a native field.
  • Fields without a visible label need an aria-label.
  • Buttons inside trailing need their own aria-label and stay in the tab order after the input.