@hyperauth/ui
All components accept className for style overrides. All components forward additional HTML props to their underlying element via spread unless noted.
Badge
<span> by default. Supports asChild to merge props onto a child element via Radix Slot.
Props
ExtendsReact.ComponentProps<'span'>.
BadgeVariant
'default' | 'secondary' | 'destructive' | 'outline' | 'ghost' | 'link'
badgeVariants
cva variant helper. Accepts { variant }. Returns a class string.
Button
<button> by default. Supports asChild.
Props
ExtendsReact.ComponentProps<'button'>.
ButtonVariant
'default' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link'
ButtonSize
'default' | 'xs' | 'sm' | 'lg' | 'icon' | 'icon-xs' | 'icon-sm' | 'icon-lg'
buttonVariants
cva variant helper. Accepts { variant, size }.
Card
React.ComponentProps<'div'>.
Command
cmdk.
Command
Extends React.ComponentProps<typeof CommandPrimitive> (cmdk root).
CommandDialog
Extends React.ComponentProps<typeof Dialog>.
CommandInput
Extends React.ComponentProps<typeof CommandPrimitive.Input>.
CommandList
Extends React.ComponentProps<typeof CommandPrimitive.List>. Max height: 300px.
CommandEmpty
Extends React.ComponentProps<typeof CommandPrimitive.Empty>.
CommandGroup
Extends React.ComponentProps<typeof CommandPrimitive.Group>.
CommandItem
Extends React.ComponentProps<typeof CommandPrimitive.Item>.
CommandSeparator
Extends React.ComponentProps<typeof CommandPrimitive.Separator>.
CommandShortcut
Extends React.ComponentProps<'span'>. Right-aligned muted keyboard shortcut display.
Dialog
Dialog
Extends React.ComponentProps<typeof DialogPrimitive.Root>.
DialogTrigger
Extends React.ComponentProps<typeof DialogPrimitive.Trigger>.
DialogPortal
Extends React.ComponentProps<typeof DialogPrimitive.Portal>.
DialogOverlay
Extends React.ComponentProps<typeof DialogPrimitive.Overlay>.
DialogClose
Extends React.ComponentProps<typeof DialogPrimitive.Close>.
DialogContent
Extends React.ComponentProps<typeof DialogPrimitive.Content>.
DialogHeader
Extends React.ComponentProps<'div'>.
DialogFooter
Extends React.ComponentProps<'div'>.
DialogTitle
Extends React.ComponentProps<typeof DialogPrimitive.Title>.
DialogDescription
Extends React.ComponentProps<typeof DialogPrimitive.Description>.
Input
React.ComponentProps<'input'>. No additional props beyond standard <input> attributes.
InputGroup
InputGroup
Container. Extends React.ComponentProps<'div'>. Sets role="group".
InputGroupAddon
Extends React.ComponentProps<'div'>.
AddonAlign
'inline-start' | 'inline-end' | 'block-start' | 'block-end'
InputGroupButton
Extends Omit<React.ComponentProps<typeof Button>, 'size'>.
InputGroupButtonSize
'xs' | 'sm' | 'icon-xs' | 'icon-sm'
InputGroupText
Extends React.ComponentProps<'span'>. Muted text element inside the group.
InputGroupInput
Extends React.ComponentProps<'input'>. Sets data-slot="input-group-control".
InputGroupTextarea
Extends React.ComponentProps<'textarea'>. Sets data-slot="input-group-control".
Label
React.ComponentProps<typeof LabelPrimitive.Root> (Radix UI Label). No additional props.
Logo
Props
ExtendsReact.SVGProps<SVGSVGElement>.
Sets
aria-hidden="true". viewBox="0 0 164 164".
PasskeyIcon
Props
ExtendsReact.SVGProps<SVGSVGElement>.
Sets
aria-hidden="true". viewBox="0 0 24 24".
Popover
"use client".
Popover
Extends React.ComponentProps<typeof PopoverPrimitive.Root>.
PopoverTrigger
Extends React.ComponentProps<typeof PopoverPrimitive.Trigger>.
PopoverContent
Extends React.ComponentProps<typeof PopoverPrimitive.Content>.
Renders inside a
PopoverPrimitive.Portal.
PopoverAnchor
Extends React.ComponentProps<typeof PopoverPrimitive.Anchor>.
PopoverHeader
Extends React.ComponentProps<'div'>.
PopoverTitle
Extends React.ComponentProps<'h2'>. Renders as <div>.
PopoverDescription
Extends React.ComponentProps<'p'>.
ScrollArea
ScrollArea
Extends React.ComponentProps<typeof ScrollAreaPrimitive.Root>.
ScrollBar
Extends React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>.
Separator
"use client". Built on Radix UI Separator primitive.
Props
ExtendsReact.ComponentProps<typeof SeparatorPrimitive.Root>.
Status
Status
StatusVariant
'default' | 'success' | 'error' | 'warning' | 'info'
StatusIndicator
Extends React.ComponentProps<'div'>. Animated ping dot. Sets data-slot="status-indicator".
StatusLabel
Extends React.ComponentProps<'div'>. Sets data-slot="status-label".
statusVariants
cva variant helper. Accepts { variant }.
TextMorph
Props
Default
variants: { initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 } }.
Default transition: { type: 'spring', stiffness: 280, damping: 18, mass: 0.3 }.
Sets aria-label={children} on the root element. Individual characters set aria-hidden="true".
Textarea
React.ComponentProps<'textarea'>. No additional props. Auto-sizes via field-sizing-content. Minimum height: min-h-16.
Timeline
"use client".
Timeline
Sets
role="list" and aria-orientation.
TimelineItem
Extends React.ComponentProps<'div'>. Accepts asChild.
Sets role="listitem". Sets aria-current="step" when status === 'active'. Sets data-status to the derived item status.
TimelineDot
Extends React.ComponentProps<'div'>. Accepts asChild. Sets data-status.
Visual indicator dot. Border color reflects item status: border-primary for 'completed' and 'active', border-border for 'pending'.
TimelineConnector
Extends React.ComponentProps<'div'>. Accepts asChild.
Sets
aria-hidden="true". Not rendered on the last item unless forceMount is set. Connector is colored bg-primary when the next item’s status is 'completed' or 'active'.
TimelineContent
Extends React.ComponentProps<'div'>. Accepts asChild. Sets data-status.
TimelineHeader
Extends React.ComponentProps<'div'>. Accepts asChild.
TimelineTitle
Extends React.ComponentProps<'div'>. Accepts asChild.
TimelineDescription
Extends React.ComponentProps<'div'>. Accepts asChild.
TimelineTime
<time> by default.
VisuallyHiddenInput
<input> that mirrors the value of a visible control element. Used to bridge custom UI controls into native form submission. Marked "use client".
Props
The element is absolutely positioned off-screen. When
control is provided, its dimensions are observed via ResizeObserver and reflected on the hidden input.
Hooks
useAsRef
useIsomorphicLayoutEffect. Returns a ref whose .current always reflects the latest value without triggering re-renders.
useIsomorphicLayoutEffect
React.useLayoutEffect in browser environments, React.useEffect in server/SSR environments. Prevents the useLayoutEffect does nothing on the server warning.
useLazyRef
fn on first render. Subsequent renders return the same ref without re-running fn.
Utility
cn
clsx and tailwind-merge. Resolves conflicting utility classes in favor of the last class.