Skip to main content
Version: v1 (Current)

API Reference

Complete reference of all exports from @gxp-dev/uikit.

UI Primitives

shadcn-vue components built on reka-ui primitives.

Form Controls

// Basic inputs
import { Input, Textarea, Label } from '@gxp-dev/uikit'

// Selection
import { Checkbox, Switch, RadioGroup, RadioGroupItem } from '@gxp-dev/uikit'
import { Select, SelectContent, SelectGroup, SelectItem, SelectItemText, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue } from '@gxp-dev/uikit'

// Slider
import { Slider } from '@gxp-dev/uikit'

Buttons & Badges

import { Button, buttonVariants, type ButtonVariants } from '@gxp-dev/uikit'
import { Badge, badgeVariants, type BadgeVariants } from '@gxp-dev/uikit'

Layout & Containers

import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from '@gxp-dev/uikit'
import { Separator } from '@gxp-dev/uikit'
import { AspectRatio } from '@gxp-dev/uikit'
import { ScrollArea, ScrollBar } from '@gxp-dev/uikit'
import { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, sheetVariants, type SheetVariants } from '@gxp-dev/uikit'

Dialogs & Overlays

import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogScrollContent, DialogTitle, DialogTrigger } from '@gxp-dev/uikit'
import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger } from '@gxp-dev/uikit'
import { Popover, PopoverContent, PopoverTrigger } from '@gxp-dev/uikit'
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@gxp-dev/uikit'
import { HoverCard, HoverCardContent, HoverCardTrigger } from '@gxp-dev/uikit'
import { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger } from '@gxp-dev/uikit'
import { ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger } from '@gxp-dev/uikit'
import { Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger } from '@gxp-dev/uikit'
import { NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, navigationMenuTriggerStyle } from '@gxp-dev/uikit'

Tabs & Accordions

import { Tabs, TabsContent, TabsList, TabsTrigger } from '@gxp-dev/uikit'
import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@gxp-dev/uikit'
import { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@gxp-dev/uikit'

Data Display

import { Table, TableBody, TableCaption, TableCell, TableEmpty, TableFooter, TableHead, TableHeader, TableRow } from '@gxp-dev/uikit'
import { Avatar, AvatarFallback, AvatarImage, avatarVariant, type AvatarVariants } from '@gxp-dev/uikit'
import { Alert, AlertDescription, AlertTitle, alertVariants, type AlertVariants } from '@gxp-dev/uikit'
import { Skeleton } from '@gxp-dev/uikit'
import { Progress } from '@gxp-dev/uikit'

Pagination

import { Pagination, PaginationContent, PaginationEllipsis, PaginationFirst, PaginationItem, PaginationLast, PaginationNext, PaginationPrevious } from '@gxp-dev/uikit'

Forms

import { Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage } from '@gxp-dev/uikit'

Command & Calendar

import { Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut } from '@gxp-dev/uikit'
import { Calendar, CalendarCell, CalendarCellTrigger, CalendarGrid, CalendarGridBody, CalendarGridHead, CalendarGridRow, CalendarHeadCell, CalendarHeader, CalendarHeading, CalendarNextButton, CalendarPrevButton } from '@gxp-dev/uikit'

Toasts

import { Toaster } from '@gxp-dev/uikit'

Domain Components

Application-specific components with business logic.

Spinner

Loading spinner with size variants.

import { Spinner, type SpinnerProps } from '@gxp-dev/uikit'

interface SpinnerProps {
size?: 'sm' | 'md' | 'lg'
class?: string
}

Branded header with background image/video and logo support.

import { Header, type HeaderProps } from '@gxp-dev/uikit'

interface HeaderProps {
backgroundImage?: string
logoImage?: string
videoSrc?: string
hideVideo?: boolean
class?: string
}

Countdown

Inactivity timer that emits event on timeout.

import { Countdown, type CountdownProps } from '@gxp-dev/uikit'

interface CountdownProps {
timeoutLength?: number // seconds
ignoreTimeout?: boolean
class?: string
}

// Events: 'countdown-completed'

VideoPlayer

Video player with event hooks.

import { VideoPlayer, type VideoPlayerProps } from '@gxp-dev/uikit'

interface VideoPlayerProps {
src: string
height?: string
controls?: boolean
autoplay?: boolean
muted?: boolean
loop?: boolean
class?: string
}

// Events: 'play', 'pause', 'ended', 'error', 'loadedmetadata'

FileUploader

File upload with image/video support and HEIC conversion.

import { FileUploader, type FileUploaderProps, type FileSelectedPayload } from '@gxp-dev/uikit'

interface FileUploaderProps {
buttonText?: string
acceptImages?: boolean
acceptVideos?: boolean
multiple?: boolean
class?: string
}

interface FileSelectedPayload {
file: File
type: 'image' | 'video' | 'audio'
size: number
name: string
mimeType: string
}

// Events: 'file-selected', 'file-cleared', 'upload-error', 'upload-started', 'upload-cancelled'

BarcodeScanner

Camera-based barcode scanner using Quagga2.

import { BarcodeScanner, type BarcodeScannerProps } from '@gxp-dev/uikit'

interface BarcodeScannerProps {
instructions?: string
backText?: string
scanButtonText?: string
autoStart?: boolean
facingMode?: 'user' | 'environment'
readers?: string[] // default: ['code_128_reader']
class?: string
}

// Events: 'scan', 'error', 'scanner-opened', 'scanner-closed'

Leaderboard

Gamification components for rankings and activity feeds.

import {
Leaderboard,
ActivityNotifications,
AwardIcon,
type LeaderboardProps,
type LeaderboardEntry,
type ActivityNotificationsProps,
type ActivityItem,
type AwardIconProps
} from '@gxp-dev/uikit'

AudioVisualizer

Real-time audio visualization in frequency or waveform mode.

import { AudioVisualizer, type AudioVisualizerProps } from '@gxp-dev/uikit'

interface AudioVisualizerProps {
active?: boolean
stream?: MediaStream | null
mode?: 'frequency' | 'waveform'
waveformData?: number[]
audioSrc?: string
timeLimitSeconds?: number
marksPerSecond?: number
minHeight?: number
class?: string
}

// Events: 'ended', 'volume-data'

Composables

Reusable composition functions for common patterns.

useMedia

Media device management (camera, microphone, recording).

import { useMedia, type UseMediaReturn } from '@gxp-dev/uikit'

interface UseMediaReturn {
devices: Ref<MediaDevice[]>
videoStream: Ref<MediaStream | null>
videoDeviceId: ComputedRef<string | undefined>
audioStream: Ref<MediaStream | null>
audioDeviceId: ComputedRef<string | undefined>
changingDevice: Ref<boolean>
videoBlob: Ref<Blob | null>
videoURL: Ref<string | null>
audioBlob: Ref<Blob | null>
audioURL: Ref<string | null>
audioVolumeWave: Ref<number[]>
photoBlob: Ref<Blob | null>
photoURL: Ref<string | null>
facingMode: ComputedRef<string | undefined>
currentFacingMode: Ref<string>
// ... plus methods for device control, recording, photo capture
}

useScanning

Barcode scanner state management.

import { useScanning, type UseScanningReturn } from '@gxp-dev/uikit'

interface UseScanningReturn {
scanIsOpen: Ref<boolean>
registeredQuagga: Ref<boolean>
ocr: Ref<boolean>
openScanner: () => void
closeScanner: () => void
resetScanState: () => void
}

useAnimations

Page transition animations with animate.css support.

import { useAnimations, type UseAnimationsReturn, type AnimationSettings } from '@gxp-dev/uikit'

interface UseAnimationsReturn {
animatingClasses: ComputedRef<string[]>
pageAnimation: Ref<string>
init: (props: { globalSettings?: AnimationSettings }) => void
animatePage: (vars?: AnimationVars, reverse?: boolean) => Promise<void>
}

useErrors

Global error state management.

import { useErrors, type UseErrorsReturn } from '@gxp-dev/uikit'

interface UseErrorsReturn {
errorMessages: Ref<string[]>
addError: (message: string) => void
removeError: (index: number) => void
clearErrors: () => void
}

useNfcListener

NFC tag scanning listener (postMessage-based).

import { useNfcListener, simulateNfcScan, type UseNfcListenerReturn, type NfcScanData } from '@gxp-dev/uikit'

interface UseNfcListenerReturn {
registerHandler: (handler: NfcHandler) => () => void
}

interface NfcScanData {
uid: string
tagType: string
timestamp: number
}

type NfcHandler = (data: NfcScanData) => void

Utilities

cn()

Tailwind CSS class merging with conflict resolution.

import { cn } from '@gxp-dev/uikit'

function cn(...inputs: ClassValue[]): string

Image Processing

import { processUploadedImage, convertToCanvasBlob } from '@gxp-dev/uikit'

// HEIC/HEIF conversion and image optimization
async function processUploadedImage(file: File): Promise<Blob>
async function convertToCanvasBlob(canvas: HTMLCanvasElement, type?: string, quality?: number): Promise<Blob>

Types

All component props interfaces and composable return types are exported for TypeScript consumers.

// Component variants
import type {
ButtonVariants,
BadgeVariants,
AlertVariants,
AvatarVariants,
SheetVariants
} from '@gxp-dev/uikit'

// Domain component props
import type {
SpinnerProps,
HeaderProps,
CountdownProps,
VideoPlayerProps,
FileUploaderProps,
FileSelectedPayload,
BarcodeScannerProps,
LeaderboardProps,
LeaderboardEntry,
ActivityNotificationsProps,
ActivityItem,
AwardIconProps,
AudioVisualizerProps,
} from '@gxp-dev/uikit'

// Composable types
import type {
UseMediaReturn,
MediaDevice,
SetDeviceOptions,
RecordingOptions,
UseScanningReturn,
UseAnimationsReturn,
AnimationSettings,
UseErrorsReturn,
UseNfcListenerReturn,
NfcScanData,
NfcHandler,
} from '@gxp-dev/uikit'

Styles

Full Styles

Includes Tailwind base, components, and default theme:

import '@gxp-dev/uikit/styles'

Base Styles

Tailwind base and components without theme:

import '@gxp-dev/uikit/styles/base'

Theme Only

Just the default theme CSS variables:

import '@gxp-dev/uikit/styles/themes/default.css'

Version

import { VERSION } from '@gxp-dev/uikit'

console.log(VERSION) // '0.1.0'

Package Exports

The package exports are defined in package.json:

{
"exports": {
".": {
"import": "./dist/index.js",
"types": "./dist/index.d.ts"
},
"./styles": "./dist/styles/index.css",
"./styles/base": "./dist/styles/base.css",
"./styles/themes/*": "./dist/styles/themes/*"
}
}