Section, SectionHeader and PublicPageShell move onto wire-* classes with local style blocks, variants as data attributes. SectionHeader loses 38 utility lines, and Section stops spending one line per variant and colour pairing: tinted and solid now select on two attributes. PageHeader was already on the convention and only needed the audit. examples/basic-app/app/pages/layout.wrn composes the whole set into one page. Building it surfaced a library-wide bug. Ten custom properties were referenced by components and defined by nothing: --wire-color-focus, --wire-color-surface-soft, --wire-color-on-danger, --wire-color-surface-subtle and the input-* family, plus hover and contrast for every semantic colour except primary and secondary. An undefined custom property does not warn, it resolves to nothing, so focus rings drew with no colour and every soft surface rendered transparent -- 27 components referenced surface-soft alone. They are derived in the theme now, and a test checks every token a component references against the rendered theme CSS rather than the source, since most are generated. The semantic spread also had to move ahead of the primary and secondary entries so the palette keeps winning for those two. Known and unresolved: LayoutSplitter emits its sizeChange output and the component does fire it, but a parent binding on the tag is not invoked. The tour page therefore points at the handle aria-valuenow rather than wiring a handler that would never update. Outputs work elsewhere, so this is narrower than an outputs-are-broken problem and needs its own investigation. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
97 KiB
WRNexus UI component reference
This reference is generated from the 108 packaged .wrn component sources. Props marked required have no default; all others show their runtime default.
Advanced-forms
AdvancedSelect
Theme-aware, responsive advanced select component.
- Mount:
data-component="AdvancedSelect" - Props:
size: string = "default",color: string = "primary",label: string = "Advanced Select",name: string = "",value: string = "",values: unknown[] = [],options: unknown[] = [],groups: unknown[] = [],placeholder: string = "Select an option",placeholderIcon: string = "",searchPlaceholder: string = "Search options…",multiple: boolean = false,searchable: boolean = true,defaultOpen: boolean = false,clearable: boolean = true,allowEmpty: boolean = true,tags: boolean = false,disabled: boolean = false,required: boolean = false,invalid: boolean = false,validationMessage: string = "",helpText: string = "",loading: boolean = false,loadingLabel: string = "Loading options…",emptyLabel: string = "No options found",selectedOptionsLabel: string = "Selected options",clearLabel: string = "Clear selection",createLabel: string = "Create",loadMoreLabel: string = "Load more",searchMode: string = "contains",searchFields: string = "label,description",minSearchLength: number = 0,searchResultLimit: number = 0,maxSelections: number = 0,showCounter: boolean = false,counterTemplate: string = "{selected} selected",optionTemplate: string = "default",selectedTemplate: string = "default",closeOnSelect: boolean = true,scrollToSelected: boolean = true,fixed: boolean = false,placement: string = "bottom",remote: boolean = false,remoteUrl: string = "",remoteQueryParam: string = "q",remoteDebounce: number = 250,remoteAutoLoad: boolean = true,infinite: boolean = false,hasMore: boolean = false,page: number = 1,class: string = "" - Slots: None
- Outputs:
search({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),select({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),change({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),clear({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),open({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),close({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),load({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),error({ error: Error | string; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | Error | string)
ComboBox
Editable autocomplete combobox with local and remote suggestions.
- Mount:
data-component="ComboBox" - Props:
size: string = "default",color: string = "primary",label: string = "ComboBox",name: string = "",value: string = "",options: unknown[] = [],groups: unknown[] = [],placeholder: string = "Search or select an option",searchPlaceholder: string = "Start typing…",clearable: boolean = true,allowCustomValue: boolean = false,disabled: boolean = false,required: boolean = false,invalid: boolean = false,validationMessage: string = "",helpText: string = "",loading: boolean = false,loadingLabel: string = "Loading suggestions…",emptyLabel: string = "No matching options",clearLabel: string = "Clear value",toggleLabel: string = "Toggle suggestions",searchMode: string = "contains",searchFields: string = "label,description",minSearchLength: number = 0,searchResultLimit: number = 0,optionTemplate: string = "default",defaultOpen: boolean = false,closeOnSelect: boolean = true,fixed: boolean = false,placement: string = "bottom",autocomplete: string = "off",remote: boolean = false,remoteUrl: string = "",remoteQueryParam: string = "q",remoteDebounce: number = 250,remoteAutoLoad: boolean = true,infinite: boolean = false,hasMore: boolean = false,page: number = 1,loadMoreLabel: string = "Load more",class: string = "" - Slots: None
- Outputs:
search({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),select({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),change({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),clear({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),open({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),close({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),load({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),error({ error: Error | string; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | Error | string)
CopyMarkup
Theme-aware, responsive copy markup component.
- Mount:
data-component="CopyMarkup" - Props:
size: string = "default",color: string = "primary",label: string = "Copy Markup",name: string = "",value: string = "",placeholder: string = "",type: string = "text",min: string = "",max: string = "",step: string = "",disabled: boolean = false,required: boolean = false,class: string = "" - Slots: None
- Outputs:
copy({ sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[]),success({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),error({ error: Error | string; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | Error | string)
InputNumber
Theme-aware, responsive input number component.
- Mount:
data-component="InputNumber" - Props:
size: string = "default",color: string = "primary",variant: string = "default",class: string = "",id: string = "",name: string = "quantity",value: number = 0,min: string = "",max: string = "",step: number = 1,precision: string = "auto",label: string = "",description: string = "",helpText: string = "",error: string = "",invalid: boolean = false,prefix: string = "",suffix: string = "",placeholder: string = "",autocomplete: string = "off",inputMode: string = "decimal",ariaLabel: string = "",required: boolean = false,disabled: boolean = false,inputDisabled: boolean = false,buttonsDisabled: boolean = false,readonly: boolean = false,allowInput: boolean = true,keyboard: boolean = true,wheel: boolean = false,clamp: boolean = true,fullWidth: boolean = false,showButtons: boolean = true,showValidationMessage: boolean = true,decrementLabel: string = "Decrease value",incrementLabel: string = "Increase value",controlsLabel: string = "Quantity controls",requiredMessage: string = "A value is required.",minMessage: string = "Value is below the minimum.",maxMessage: string = "Value is above the maximum." - Slots: None
- Outputs:
input({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),change({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),increment({ value: number; previousValue?: number; sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),decrement({ value: number; previousValue?: number; sourceEvent?: Event; [key: string]: string | number | boolean | null | object })
PinInput
Secure multi-cell PIN and verification-code input with regex and paste support.
- Mount:
data-component="PinInput" - Props:
size: string = "default",color: string = "primary",label: string = "Verification code",name: string = "pin",value: string = "",length: number = 4,pattern: string = "[0-9]",type: string = "text",inputMode: string = "numeric",placeholder: string = "○",autocomplete: string = "one-time-code",masked: boolean = false,disabled: boolean = false,readonly: boolean = false,required: boolean = false,autoFocus: boolean = false,autoSubmit: boolean = false,allowPaste: boolean = true,clearable: boolean = true,clearLabel: string = "Clear code",separator: string = "",groupSize: number = 0,helpText: string = "",invalid: boolean = false,validationMessage: string = "",class: string = "" - Slots: None
- Outputs:
input({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),change({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),complete({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),paste({ sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[]),clear({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),error({ error: Error | string; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | Error | string)
StrongPassword
Theme-aware, responsive strong password component.
- Mount:
data-component="StrongPassword" - Props:
size: string = "default",color: string = "primary",label: string = "Password",name: string = "password",value: string = "",placeholder: string = "Create a strong password",autocomplete: string = "new-password",minLength: number = 8,specialCharactersSet: string = "!@#$%^&*()_+-=[]{}|;:,.<>?",requireLowercase: boolean = true,requireUppercase: boolean = true,requireNumber: boolean = true,requireSpecialCharacter: boolean = true,showRequirements: boolean = true,presentation: string = "inline",hintText: string = "Use a unique password you do not use elsewhere.",emptyLabel: string = "Enter a password",weakLabel: string = "Weak",fairLabel: string = "Fair",goodLabel: string = "Good",strongLabel: string = "Strong",disabled: boolean = false,readonly: boolean = false,required: boolean = false,invalid: boolean = false,validationMessage: string = "",class: string = "" - Slots: None
- Outputs:
input({ value: string; score: number; maximumScore: number; percent: number; level: string }),change({ value: string; score: number; maximumScore: number; percent: number; level: string }),strength({ value: string; score: number; maximumScore: number; percent: number; level: string })
ToggleCount
Theme-aware, responsive toggle count component.
- Mount:
data-component="ToggleCount" - Props:
size: string = "default",color: string = "primary",variant: string = "segmented",class: string = "",name: string = "billing-cycle",value: string = "monthly",firstValue: string = "monthly",firstLabel: string = "Monthly",secondValue: string = "annual",secondLabel: string = "Annual",ariaLabel: string = "Billing frequency",items: unknown[] = [],currency: string = "$",suffix: string = "",firstValueKey: string = "monthly",secondValueKey: string = "annual",emptyValue: string = "—",align: string = "end",fullWidth: boolean = true,disabled: boolean = false,animate: boolean = true,animationDuration: number = 450,animationSteps: number = 18 - Slots: None
- Outputs:
change({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),toggle({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object })
TogglePassword
Accessible password field with optional show and hide controls.
- Mount:
data-component="TogglePassword" - Props:
size: string = "default",color: string = "primary",label: string = "Password",name: string = "password",value: string = "",placeholder: string = "Enter your password",autocomplete: string = "current-password",minlength: string = "",maxlength: string = "",pattern: string = "(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[^A-Za-z0-9]).{8,}",fields: unknown[] = [],visible: boolean = false,toggleable: boolean = true,toggleMode: string = "button",checkboxLabel: string = "Show password",showLabel: string = "Show password",hideLabel: string = "Hide password",disabled: boolean = false,readonly: boolean = false,required: boolean = false,invalid: boolean = false,helpText: string = "",validationMessage: string = "",class: string = "" - Slots: None
- Outputs:
input({ name?: string; value: string | number | boolean | null | object; visible: boolean }),change({ name?: string; value: string | number | boolean | null | object; visible: boolean }),toggle({ visible: boolean })
Base
Accordion
Theme-aware, responsive accordion component.
- Mount:
data-component="Accordion" - Props:
size: string = "default",color: string = "primary",variant: string = "default",class: string = "",id: string = "accordion",items: unknown[] = [],defaultOpen: unknown[] = [],multiple: boolean = false,alwaysOpen: boolean = false,disabled: boolean = false,indicator: string = "plus",indicatorPosition: string = "start",showIndicator: boolean = true,bordered: boolean = false,separated: boolean = false,flush: boolean = false,contentItalic: boolean = false - Slots: None
- Outputs:
change({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),open({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),close({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object })
Alert
Theme-aware, responsive alert component.
- Mount:
data-component="Alert" - Props:
size: string = "default",color: string = "info",variant: string = "soft",class: string = "",radius: string = "md",shadow: string = "sm",title: string = "Alert",description: string = "",items: unknown[] = [],actions: unknown[] = [],showIcon: boolean = false,icon: string = "",dismissible: boolean = false,dismissLabel: string = "Dismiss alert",role: string = "alert",live: string = "polite",linkLabel: string = "",linkHref: string = "",actionLabel: string = "",actionHref: string = "",compact: boolean = false - Slots: None
- Outputs:
dismiss({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),action({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object })
Avatar
Theme-aware, responsive avatar component.
- Mount:
data-component="Avatar" - Props:
src: string = "",alt: string = "",initials: string = "",size: string = "md",color: string = "primary",variant: string = "solid",shape: string = "circle",status: string = "",statusLabel: string = "",statusPosition: string = "bottom",badge: string = "",badgeIcon: string = "",badgeLabel: string = "",tooltip: string = "",name: string = "",description: string = "",loading: string = "lazy",class: string = "" - Slots: None
- Outputs:
load({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),error({ error: Error | string; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | Error | string),click({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object })
AvatarGroup
Theme-aware, responsive avatar group component.
- Mount:
data-component="AvatarGroup" - Props:
items: unknown[] = [],size: string = "md",color: string = "primary",variant: string = "solid",shape: string = "circle",layout: string = "stack",maxVisible: number = 4,columns: number = 3,borderColor: string = "",showTooltips: boolean = true,overflowLabel: string = "Show remaining members",class: string = "" - Slots: None
- Outputs:
overflow({ sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[])
Badge
Theme-aware, responsive badge component.
- Mount:
data-component="Badge" - Props:
label: string = "Badge",size: string = "md",color: string = "primary",variant: string = "solid",shape: string = "pill",class: string = "",icon: string = "",iconPosition: string = "start",dot: boolean = false,dotOnly: boolean = false,dotLabel: string = "Status",animated: boolean = false,avatarSrc: string = "",avatarAlt: string = "",dismissible: boolean = false,dismissLabel: string = "Remove badge",truncate: boolean = false,maxWidth: string = "12rem",anchorLabel: string = "",anchorIcon: string = "",placement: string = "inline",anchorLabelText: string = "Badge anchor" - Slots: None
- Outputs:
dismiss({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object })
Blockquote
Theme-aware, responsive blockquote component.
- Mount:
data-component="Blockquote" - Props:
quote: string = "I just wanted to say that I'm very happy with my purchase so far. The documentation is outstanding - clear and detailed.",citation: string = "",citationTitle: string = "",citationUrl: string = "",avatarSrc: string = "",avatarAlt: string = "",size: string = "md",color: string = "primary",align: string = "left",variant: string = "default",quoteMark: boolean = true,italic: boolean = true,class: string = "" - Slots:
default - Outputs: None
Button
Theme-aware, responsive button component.
- Mount:
data-component="Button" - Props:
label: string = "Button",loadingLabel: string = "Loading…",description: string = "",as: string = "",href: string = "",target: string = "",rel: string = "",type: string = "button",variant: string = "default",color: string = "primary",size: string = "default",disabled: boolean = false,loading: boolean = false,pill: boolean = false,fullWidth: boolean = false,icon: string = "",iconPosition: string = "start",ariaLabel: string = "",ariaPressed: string = "",ariaExpanded: string = "",ariaControls: string = "",title: string = "",autofocus: boolean = false,controlClass: string = "",class: string = "" - Slots:
default - Outputs:
click({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),focus({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),blur({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object })
ButtonGroup
Theme-aware, responsive button group component.
- Mount:
data-component="ButtonGroup" - Props:
items: unknown[] = [],value: string = "",size: string = "md",color: string = "primary",variant: string = "default",orientation: string = "horizontal",responsive: boolean = false,attached: boolean = true,selectable: boolean = false,toolbar: boolean = false,disabled: boolean = false,ariaLabel: string = "Button group",class: string = "" - Slots:
default - Outputs:
click({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),select({ value: string | number | boolean | null | object; previousValue: string | number | boolean | null | object; item: string | number | boolean | null | object; index: number }),change({ value: string | number | boolean | null | object; previousValue: string | number | boolean | null | object; item: string | number | boolean | null | object; index: number })
Card
Group related content in a responsive themed surface with title, description, content, and supporting slots.
- Mount:
data-component="Card" - Props:
title: string = "Card title",subtitle: string = "",description: string = "",header: string = "",footer: string = "",imageSrc: string = "",imageAlt: string = "",imagePosition: string = "top",actionLabel: string = "",actionHref: string = "",headerActions: unknown[] = [],navigation: unknown[] = [],activeNav: string = "",mobileNavigation: boolean = false,alertTitle: string = "",alertDescription: string = "",empty: boolean = false,emptyTitle: string = "No data to show",emptyIcon: string = "icon-[lucide--inbox]",items: unknown[] = [],size: string = "md",color: string = "primary",variant: string = "default",layout: string = "vertical",align: string = "left",hover: string = "none",scrollable: boolean = false,maxHeight: string = "18rem",dismissible: boolean = false,ariaLabel: string = "",class: string = "" - Slots:
default - Outputs:
click({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),action({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),navigate({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),dismiss({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),load({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),error({ error: Error | string; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | Error | string)
Carousel
Theme-aware, responsive carousel component.
- Mount:
data-component="Carousel" - Props:
size: string = "default",color: string = "primary",title: string = "",description: string = "",items: unknown[] = [],activeIndex: number = 0,slidesPerView: number = 1,gap: string = "0.75rem",showPagination: boolean = false,isAutoPlay: boolean = false,autoplayInterval: number = 4000,isInfiniteLoop: boolean = false,isRTL: boolean = false,isCentered: boolean = false,isDraggable: boolean = false,isAutoHeight: boolean = false,isSnap: boolean = false,showCounter: boolean = false,thumbnails: string = "none",ariaLabel: string = "Content carousel",variant: string = "default",class: string = "" - Slots:
default - Outputs:
initialize({ index: number; count: number }),change({ index: number; previousIndex: number; item: string | number | boolean | null | object; reason: string | boolean }),previous({ index: number; previousIndex: number; item: string | number | boolean | null | object }),next({ index: number; previousIndex: number; item: string | number | boolean | null | object }),play({ index: number; interval: number }),pause({ index: number }),reachStart({ index: number }),reachEnd({ index: number }),dragStart({ index: number; x: null }),dragEnd({ index: number; distance: number })
ChatBubble
Theme-aware, responsive chat bubble component.
- Mount:
data-component="ChatBubble" - Props:
size: string = "default",color: string = "primary",title: string = "",description: string = "",items: unknown[] = [],oneSided: boolean = false,showAvatars: boolean = false,showMetadata: boolean = false,ariaLabel: string = "Conversation",variant: string = "default",class: string = "" - Slots:
default - Outputs:
action({ action: boolean; item: string | number | boolean | null | object; index: number }),messageClick({ item: string | number | boolean | null | object; index: number; direction: string }),avatarClick({ item: string | number | boolean | null | object; index: number; direction: string }),linkClick({ link: string | number | boolean | null | object; item: string | number | boolean | null | object; index: number })
Collapse
Theme-aware, responsive collapse component.
- Mount:
data-component="Collapse" - Props:
size: string = "default",color: string = "primary",items: unknown[] = [],multiple: boolean = false,mode: string = "panel",initialOpenIndexes: unknown[] = [],ariaLabel: string = "Collapsible content",class: string = "" - Slots:
default - Outputs:
toggle({ index: number; item: string | number | boolean | null | object; open: boolean; openIndexes: number[] }),open({ index: number; item: string | number | boolean | null | object }),close({ index: number; item: string | number | boolean | null | object })
DatePicker
Theme-aware, responsive date picker component.
- Mount:
data-component="DatePicker" - Props:
size: string = "default",color: string = "primary",label: string = "Date Picker",id: string = "",name: string = "",value: string = "",placeholder: string = "",type: string = "date",locale: string = "en-US",firstDayOfWeek: number = 0,months: string = [{ label: "Jan", value: "01" }, { label: "Feb", value: "02" }, { label: "Mar", value: "03" }, { label: "Apr", value: "04" }, { label: "May", value: "05" }, { label: "Jun", value: "06" }, { label: "Jul", value: "07" }, { label: "Aug", value: "08" }, { label: "Sep", value: "09" }, { label: "Oct", value: "10" }, { label: "Nov", value: "11" }, { label: "Dec", value: "12" }],days: string = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31],years: string = [2024, 2025, 2026, 2027, 2028, 2029, 2030],min: string = "",max: string = "",step: string = "",helperText: string = "",cornerHint: string = "",error: string = "",variant: string = "normal",inline: boolean = false,readonly: boolean = false,disabled: boolean = false,required: boolean = false,class: string = "" - Slots: None
- Outputs:
input({ sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[]),change({ sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[]),open({ value: string; name: string; sourceEvent: Event }),close({ value: string; name: string; sourceEvent: Event }),focus({ value: string; name: string; sourceEvent: Event }),blur({ value: string; name: string; sourceEvent: Event }),invalid({ name: string; message: string; sourceEvent: Event })
DeviceFrame
Theme-aware, responsive device frame component.
- Mount:
data-component="DeviceFrame" - Props:
size: string = "default",color: string = "primary",title: string = "Device Frame",description: string = "",items: unknown[] = [],variant: string = "default",device: string = "phone",orientation: string = "portrait",src: string = "",srcdoc: string = "",frameTitle: string = "Device preview",showToolbar: boolean = true,allow: string = "",class: string = "" - Slots:
default - Outputs:
change({ device: string; orientation: string; sourceEvent: Event }),rotate({ device: string; orientation: string; sourceEvent: Event })
FileUploadProgress
Theme-aware, responsive file upload progress component.
- Mount:
data-component="FileUploadProgress" - Props:
size: string = "default",color: string = "primary",label: string = "Progress",value: number = 50,max: number = 100,showValue: boolean = true,fileName: string = "",fileSize: string = "",uploadedSize: string = "",status: string = "uploading",cancelLabel: string = "Cancel upload",retryLabel: string = "Retry upload",class: string = "" - Slots: None
- Outputs:
cancel({ sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[]),retry({ sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[]),complete({ sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[])
LegendIndicator
Theme-aware, responsive legend indicator component.
- Mount:
data-component="LegendIndicator" - Props:
size: string = "default",color: string = "primary",title: string = "Legend Indicator",description: string = "",items: unknown[] = [],variant: string = "default",class: string = "" - Slots:
default - Outputs:
toggle({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),select({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null)
List
Present structured responsive linked or status items with icons, descriptions, actions, and selection events.
- Mount:
data-component="List" - Props:
size: string = "default",color: string = "primary",title: string = "List",description: string = "",items: unknown[] = [],variant: string = "default",class: string = "" - Slots:
default - Outputs: None
ListGroup
Theme-aware, responsive list group component.
- Mount:
data-component="ListGroup" - Props:
size: string = "default",color: string = "primary",title: string = "List Group",description: string = "",items: unknown[] = [],variant: string = "default",class: string = "" - Slots:
default - Outputs:
select({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),change({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null)
Marquee
Continuously present responsive labels, partners, notices, or capabilities with pause and resume behavior.
- Mount:
data-component="Marquee" - Props:
size: string = "default",color: string = "primary",title: string = "Marquee",description: string = "",items: unknown[] = [],variant: string = "default",class: string = "" - Slots:
default - Outputs: None
Progress
Theme-aware, responsive progress component.
- Mount:
data-component="Progress" - Props:
size: string = "default",color: string = "primary",label: string = "Progress",value: number = 50,max: number = 100,showValue: boolean = true,class: string = "" - Slots: None
- Outputs: None
Rating
Theme-aware, responsive rating component.
- Mount:
data-component="Rating" - Props:
size: string = "default",color: string = "primary",title: string = "Rating",description: string = "",items: unknown[] = [],variant: string = "default",class: string = "" - Slots:
default - Outputs:
input({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),change({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null)
Skeleton
Theme-aware, responsive skeleton component.
- Mount:
data-component="Skeleton" - Props:
color: string = "primary",label: string = "Loading",size: string = "md",lines: number = 3,class: string = "" - Slots: None
- Outputs: None
Spinner
Theme-aware, responsive spinner component.
- Mount:
data-component="Spinner" - Props:
color: string = "primary",label: string = "Loading",size: string = "md",lines: number = 3,class: string = "" - Slots: None
- Outputs: None
StyledIcon
Theme-aware, responsive styled icon component.
- Mount:
data-component="StyledIcon" - Props:
size: string = "default",color: string = "primary",title: string = "Styled Icon",description: string = "",items: unknown[] = [],variant: string = "default",class: string = "" - Slots:
default - Outputs: None
Timeline
Present responsive chronological activity, milestones, or workflow status with rich item metadata.
- Mount:
data-component="Timeline" - Props:
size: string = "default",color: string = "primary",title: string = "Timeline",description: string = "",items: unknown[] = [],variant: string = "default",class: string = "" - Slots:
default - Outputs: None
Toast
Theme-aware, responsive toast component.
- Mount:
data-component="Toast" - Props:
size: string = "default",color: string = "primary",title: string = "Toast",description: string = "",items: unknown[] = [],variant: string = "default",class: string = "" - Slots:
default - Outputs:
dismiss({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),action({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object })
TreeView
Theme-aware, responsive tree view component.
- Mount:
data-component="TreeView" - Props:
size: string = "default",color: string = "primary",title: string = "Tree View",description: string = "",items: unknown[] = [],variant: string = "default",class: string = "" - Slots:
default - Outputs:
select({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),toggle({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),expand({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),collapse({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object })
Core
AuthForm
Reusable auth form component.
- Mount:
data-component="AuthForm" - Props:
size: string = "default",color: string = "primary",mode: string = "sign-in",action: string = "/api/auth/login",method: string = "post",title: string = "Sign in",description: string = "",returnTo: string = "",schema: string = "",showRemember: boolean = true,showName: boolean = true,submitLabel: string = "Continue",class: string = "" - Slots:
default - Outputs:
submit({ event: Event; mode: string; action: string }),change({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),input({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),focus({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),blur({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object })
AuthSplitLayout
Reusable auth split layout component.
- Mount:
data-component="AuthSplitLayout" - Props:
size: string = "default",color: string = "primary",eyebrow: string = "Secure identity",title: string = "Welcome back",description: string = "",brand: string = "Police Management System",features: unknown[] = [],class: string = "" - Slots:
aside-extra,form - Outputs: None
PortalDashboard
Reusable portal dashboard component.
- Mount:
data-component="PortalDashboard" - Props:
size: string = "default",color: string = "primary",eyebrow: string = "Overview",eyebrowKey: string = "",title: string = "Dashboard",titleKey: string = "",description: string = "",descriptionKey: string = "",userName: string = "",metrics: unknown[] = [],actions: unknown[] = [],updates: unknown[] = [],tasks: unknown[] = [],class: string = "" - Slots:
hero-action - Outputs:
action({ item: string | number | boolean | null | object; value: string | number | boolean; index: number }),navigate({ item: string | number | boolean | null | object; value: string | number | boolean; index: number })
PreferenceSwitcher
Reusable preference switcher component.
- Mount:
data-component="PreferenceSwitcher" - Props:
size: string = "default",color: string = "primary",themeLabel: string = "Theme",colorLabel: string = "Accent color",languageLabel: string = "Language",languages: string = [,colors: string = [,compact: boolean = true,class: string = "" - Slots: None
- Outputs:
theme({ sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[]),color({ sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[]),language({ sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[])
Toaster
Reusable toaster component.
- Mount:
data-component="Toaster" - Props:
color: string = "info",size: string = "default",position: string = "bottom-right",duration: number = 4500,max: number = 4,pauseOnHover: boolean = true,showIcon: boolean = true,successIcon: string = "",dangerIcon: string = "",warningIcon: string = "",infoIcon: string = "",closable: boolean = true,showProgress: boolean = true,closeLabel: string = "Dismiss notification",class: string = "" - Slots: None
- Outputs:
show({ id: number; message: string; tone: string }),dismiss({ id: number; reason: string }),action({ id: number; sourceEvent: Event })
Data
MetricCard
Display one operational metric with value, suffix, description, icon, trend, progress, and optional action.
- Mount:
data-component="MetricCard" - Props:
label: string = "Metric",value: string = "0",description: string = "",icon: string = "",iconStyle: string = "soft",prefix: string = "",suffix: string = "",badge: string = "",trend: string = "",trendLabel: string = "",trendDirection: string = "neutral",progress: number = -1,progressLabel: string = "",href: string = "",target: string = "",rel: string = "",external: boolean = false,actionLabel: string = "",actionIcon: string = "",showArrow: boolean = true,selectable: boolean = false,disabled: boolean = false,size: string = "default",color: string = "primary",variant: string = "default",hover: string = "lift",align: string = "left",class: string = "" - Slots:
default,footer - Outputs:
select({ label: string; value: string; href: string; sourceEvent: Event }),action({ label: string; value: string; href: string; sourceEvent: Event })
MetricGrid
Arrange operational metrics, KPIs, public statistics, or service indicators in a responsive equal-height grid.
- Mount:
data-component="MetricGrid" - Props:
items: unknown[] = [],columns: number = 4,tabletColumns: number = 2,mobileColumns: number = 1,gap: string = "md",equalHeight: boolean = true,dividers: boolean = false,size: string = "default",color: string = "primary",variant: string = "default",maxWidth: string = "full",minItemWidth: string = "",class: string = "" - Slots:
default - Outputs:
select({ item: string | number | boolean | null | object; itemIndex: number; sourceEvent: Event }),action({ item: string | number | boolean | null | object; itemIndex: number; sourceEvent: Event })
StatsBar
Present a compact responsive strip of key facts, counts, performance indicators, or trust signals.
- Mount:
data-component="StatsBar" - Props:
items: unknown[] = [],columns: number = 4,compact: boolean = true,dividers: boolean = true,icons: boolean = true,size: string = "default",color: string = "primary",variant: string = "raised",maxWidth: string = "xl",class: string = "" - Slots: None
- Outputs: None
Forms
Checkbox
Theme-aware, responsive checkbox component.
- Mount:
data-component="Checkbox" - Props:
size: string = "default",color: string = "primary",id: string = "",name: string = "",label: string = "Checkbox",hiddenLabel: boolean = false,placeholder: string = "",variant: string = "normal",icon: string = "",iconPosition: string = "start",value: string = "on",values: unknown[] = [],options: unknown[] = [],checked: boolean = false,indeterminate: boolean = false,orientation: string = "vertical",card: boolean = false,rightAligned: boolean = false,list: boolean = false,helperText: string = "",cornerHint: string = "",error: string = "",inline: boolean = false,readonly: boolean = false,disabled: boolean = false,required: boolean = false,class: string = "" - Slots:
default - Outputs:
input({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),change({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),focus({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),blur({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),invalid({ message?: string; value: string | number | boolean | null | object; sourceEvent?: Event; [key: string]: string | number | boolean | null | object })
ColorPicker
Theme-aware, responsive color picker component.
- Mount:
data-component="ColorPicker" - Props:
size: string = "default",color: string = "primary",id: string = "",name: string = "",label: string = "Color",hiddenLabel: boolean = false,placeholder: string = "",value: string = "#2563eb",icon: string = "",iconPosition: string = "start",helperText: string = "",cornerHint: string = "",error: string = "",inline: boolean = false,variant: string = "normal",readonly: boolean = false,disabled: boolean = false,required: boolean = false,class: string = "" - Slots: None
- Outputs:
input({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),change({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),focus({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),blur({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object })
FileInput
Theme-aware, responsive file input component.
- Mount:
data-component="FileInput" - Props:
size: string = "default",color: string = "primary",id: string = "",name: string = "",label: string = "File",hiddenLabel: boolean = false,placeholder: string = "Choose a file",value: string = "",icon: string = "icon-[lucide--upload]",iconPosition: string = "start",accept: string = "",multiple: boolean = false,helperText: string = "",cornerHint: string = "",error: string = "",inline: boolean = false,variant: string = "normal",readonly: boolean = false,disabled: boolean = false,required: boolean = false,class: string = "" - Slots: None
- Outputs:
input({ files: File[]; name: string; sourceEvent: Event }),change({ files: File[]; name: string; sourceEvent: Event }),focus({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),blur({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),select({ files: File[]; name: string; sourceEvent: Event }),clear({ name: string; sourceEvent: Event }),invalid({ message?: string; value: string | number | boolean | null | object; sourceEvent?: Event; [key: string]: string | number | boolean | null | object })
Input
Theme-aware, responsive input component.
- Mount:
data-component="Input" - Props:
size: string = "default",color: string = "primary",id: string = "",name: string = "",label: string = "Input",hiddenLabel: boolean = false,placeholder: string = "",value: string = "",type: string = "text",variant: string = "normal",icon: string = "",iconPosition: string = "start",helperText: string = "",cornerHint: string = "",error: string = "",inline: boolean = false,readonly: boolean = false,disabled: boolean = false,required: boolean = false,autocomplete: string = "",inputmode: string = "",minlength: string = "",maxlength: string = "",pattern: string = "",min: string = "",max: string = "",step: string = "",class: string = "" - Slots: None
- Outputs:
input({ sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[]),change({ sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[]),focus({ sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[]),blur({ sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[]),invalid({ value: string | number | boolean | null | object; name: string; message: string; sourceEvent: Event }),keydown({ key: string; value: string | number | boolean | null | object; name: string; sourceEvent: Event }),keyup({ key: string; value: string | number | boolean | null | object; name: string; sourceEvent: Event })
InputGroup
Theme-aware, responsive input group component.
- Mount:
data-component="InputGroup" - Props:
size: string = "default",color: string = "primary",id: string = "",name: string = "",label: string = "Input group",hiddenLabel: boolean = false,value: string = "",placeholder: string = "",type: string = "text",startText: string = "",endText: string = "",icon: string = "",iconPosition: string = "start",actionLabel: string = "",helperText: string = "",cornerHint: string = "",error: string = "",inline: boolean = false,variant: string = "normal",readonly: boolean = false,disabled: boolean = false,required: boolean = false,class: string = "" - Slots: None
- Outputs:
input({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),change({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),focus({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),blur({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),submit({ value: string | number | boolean | null | object; name: string; sourceEvent: Event }),action({ name: string; sourceEvent: Event })
Radio
Theme-aware, responsive radio component.
- Mount:
data-component="Radio" - Props:
size: string = "default",color: string = "primary",id: string = "",name: string = "",label: string = "Radio",hiddenLabel: boolean = false,placeholder: string = "",variant: string = "normal",icon: string = "",iconPosition: string = "start",value: string = "on",options: unknown[] = [],checked: boolean = false,orientation: string = "vertical",card: boolean = false,rightAligned: boolean = false,list: boolean = false,helperText: string = "",cornerHint: string = "",error: string = "",inline: boolean = false,readonly: boolean = false,disabled: boolean = false,required: boolean = false,class: string = "" - Slots: None
- Outputs:
input({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),change({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),focus({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),blur({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),invalid({ message?: string; value: string | number | boolean | null | object; sourceEvent?: Event; [key: string]: string | number | boolean | null | object })
RangeSlider
Theme-aware, responsive range slider component.
- Mount:
data-component="RangeSlider" - Props:
size: string = "default",color: string = "primary",id: string = "",name: string = "",label: string = "Range",hiddenLabel: boolean = false,placeholder: string = "",variant: string = "normal",icon: string = "",iconPosition: string = "start",value: number = 50,min: number = 0,max: number = 100,step: number = 1,showValue: boolean = true,showBounds: boolean = true,showSteps: boolean = false,marks: unknown[] = [],helperText: string = "",cornerHint: string = "",error: string = "",inline: boolean = false,readonly: boolean = false,disabled: boolean = false,required: boolean = false,class: string = "" - Slots: None
- Outputs:
input(({ value: number; name: string; sourceEvent: Event }) | ({ sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[])),change(({ value: number; name: string; sourceEvent: Event }) | ({ sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[])),focus({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),blur({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object })
SearchBox
Provide an accessible responsive search field with labels, validation states, sizes, and input or change events.
- Mount:
data-component="SearchBox" - Props:
size: string = "default",color: string = "primary",label: string = "Search Box",name: string = "",value: string = "",placeholder: string = "",type: string = "search",min: string = "",max: string = "",step: string = "",disabled: boolean = false,required: boolean = false,class: string = "" - Slots: None
- Outputs: None
Select
Theme-aware, responsive select component.
- Mount:
data-component="Select" - Props:
size: string = "default",color: string = "primary",id: string = "",name: string = "",label: string = "Select",hiddenLabel: boolean = false,value: string = "",values: unknown[] = [],options: unknown[] = [],placeholder: string = "Select an option",variant: string = "normal",icon: string = "",iconPosition: string = "start",helperText: string = "",cornerHint: string = "",error: string = "",inline: boolean = false,multiple: boolean = false,readonly: boolean = false,disabled: boolean = false,required: boolean = false,class: string = "" - Slots: None
- Outputs:
input({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),change({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),focus({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),blur({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),open({ name: string; sourceEvent: Event }),close({ name: string; sourceEvent: Event }),invalid({ name: string; message: string; sourceEvent: Event })
Switch
Theme-aware, responsive switch component.
- Mount:
data-component="Switch" - Props:
size: string = "default",color: string = "primary",id: string = "",name: string = "",label: string = "Switch",hiddenLabel: boolean = false,placeholder: string = "",variant: string = "normal",icon: string = "",iconPosition: string = "start",value: string = "on",checked: boolean = false,helperText: string = "",cornerHint: string = "",error: string = "",inline: boolean = false,readonly: boolean = false,disabled: boolean = false,required: boolean = false,class: string = "" - Slots: None
- Outputs:
input({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),change({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),focus({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),blur({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object })
Textarea
Theme-aware, responsive textarea component.
- Mount:
data-component="Textarea" - Props:
size: string = "default",color: string = "primary",id: string = "",name: string = "",label: string = "Textarea",hiddenLabel: boolean = false,placeholder: string = "",value: string = "",variant: string = "normal",icon: string = "",iconPosition: string = "start",helperText: string = "",cornerHint: string = "",error: string = "",inline: boolean = false,rows: number = 5,resize: string = "vertical",readonly: boolean = false,disabled: boolean = false,required: boolean = false,minlength: string = "",maxlength: string = "",class: string = "" - Slots: None
- Outputs:
input({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),change({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),focus({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),blur({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),invalid({ value: string | number | boolean | null | object; name: string; message: string; sourceEvent: Event })
TimePicker
Theme-aware, responsive time picker component.
- Mount:
data-component="TimePicker" - Props:
size: string = "default",color: string = "primary",id: string = "",name: string = "",label: string = "Time",hiddenLabel: boolean = false,value: string = "",placeholder: string = "",variant: string = "normal",icon: string = "icon-[lucide--clock-3]",iconPosition: string = "end",helperText: string = "",cornerHint: string = "",error: string = "",inline: boolean = false,min: string = "",max: string = "",step: string = "",format: string = "24",minuteStep: number = 5,hours: string = ["00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23"],minutes: string = ["00", "05", "10", "15", "20", "25", "30", "35", "40", "45", "50", "55"],readonly: boolean = false,disabled: boolean = false,required: boolean = false,class: string = "" - Slots: None
- Outputs:
input({ sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[]),change({ sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[]),focus({ value: string; name: string; sourceEvent: Event }),blur({ value: string; name: string; sourceEvent: Event }),open({ value: string; name: string; sourceEvent: Event }),close({ value: string; name: string; sourceEvent: Event }),invalid({ name: string; message: string; sourceEvent: Event })
Integrations
AdvancedDatePicker
Theme-aware, responsive advanced date picker component.
- Mount:
data-component="AdvancedDatePicker" - Props:
size: string = "default",color: string = "primary",title: string = "Advanced Date Picker",description: string = "",items: unknown[] = [],variant: string = "default",class: string = "" - Slots:
default - Outputs:
input({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),change({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),open({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),close({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),clear({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null)
AdvancedRangeSlider
Theme-aware, responsive advanced range slider component.
- Mount:
data-component="AdvancedRangeSlider" - Props:
size: string = "default",color: string = "primary",title: string = "Advanced Range Slider",description: string = "",items: unknown[] = [],variant: string = "default",class: string = "" - Slots:
default - Outputs:
input({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),change({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),start({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),end({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object })
Chart
Theme-aware, responsive chart component.
- Mount:
data-component="Chart" - Props:
size: string = "default",color: string = "primary",title: string = "Chart",description: string = "",items: unknown[] = [],variant: string = "default",class: string = "" - Slots:
default - Outputs:
select({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),dataPointClick({ sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[]),legendToggle({ sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[])
Clipboard
Theme-aware, responsive clipboard component.
- Mount:
data-component="Clipboard" - Props:
size: string = "default",color: string = "primary",title: string = "Clipboard",description: string = "",items: unknown[] = [],variant: string = "default",class: string = "" - Slots:
default - Outputs:
copy({ sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[]),success({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),error({ error: Error | string; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | Error | string)
Confetti
Theme-aware, responsive confetti component.
- Mount:
data-component="Confetti" - Props:
size: string = "default",color: string = "primary",title: string = "Confetti",description: string = "",items: unknown[] = [],variant: string = "default",class: string = "" - Slots:
default - Outputs:
start({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),complete({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object })
DataMap
Theme-aware, responsive data map component.
- Mount:
data-component="DataMap" - Props:
size: string = "default",color: string = "primary",title: string = "Data Map",description: string = "",items: unknown[] = [],variant: string = "default",class: string = "" - Slots:
default - Outputs:
select({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),change({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null)
DragAndDrop
Theme-aware, responsive drag and drop component.
- Mount:
data-component="DragAndDrop" - Props:
size: string = "default",color: string = "primary",title: string = "Drag And Drop",description: string = "",items: unknown[] = [],variant: string = "default",class: string = "" - Slots:
default - Outputs:
dragStart({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),dragEnd({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),dragEnter({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),dragLeave({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),drop({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),change({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null)
FileUpload
Theme-aware, responsive file upload component.
- Mount:
data-component="FileUpload" - Props:
size: string = "default",color: string = "primary",title: string = "File Upload",description: string = "",items: unknown[] = [],variant: string = "default",class: string = "" - Slots:
default - Outputs:
select({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),upload({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),progress({ progress: number; [key: string]: string | number | boolean | null | object } | number),success({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),error({ error: Error | string; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | Error | string),cancel({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),remove({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object })
Map
Present responsive location information and markers with map-ready metadata and movement or marker events.
- Mount:
data-component="Map" - Props:
size: string = "default",color: string = "primary",title: string = "Map",description: string = "",items: unknown[] = [],variant: string = "default",class: string = "" - Slots:
default - Outputs: None
ToastNotifications
Theme-aware, responsive toast notifications component.
- Mount:
data-component="ToastNotifications" - Props:
size: string = "default",color: string = "primary",title: string = "Toast Notifications",description: string = "",items: unknown[] = [],variant: string = "default",class: string = "" - Slots:
default - Outputs:
add({ sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[]),dismiss({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),clear({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),action({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object })
WysiwygEditor
Theme-aware, responsive wysiwyg editor component.
- Mount:
data-component="WysiwygEditor" - Props:
size: string = "default",color: string = "primary",title: string = "Wysiwyg Editor",description: string = "",items: unknown[] = [],variant: string = "default",class: string = "" - Slots:
default - Outputs:
input({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),change({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),focus({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),blur({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object })
Layout
Columns
Create responsive balanced content columns with configurable count, gap, density, and maximum width.
- Mount:
data-component="Columns" - Props:
size: string = "default",color: string = "primary",columns: number = 2,gap: string = "md",maxWidth: string = "xl",class: string = "" - Slots:
default - Outputs: None
Container
Constrain and align page content with responsive gutters and compact, wide, or full width options.
- Mount:
data-component="Container" - Props:
size: string = "default",color: string = "primary",columns: number = 2,gap: string = "md",maxWidth: string = "xl",centered: boolean = true,class: string = "" - Slots:
default - Outputs: None
CustomScrollbar
Theme-aware, responsive custom scrollbar component.
- Mount:
data-component="CustomScrollbar" - Props:
color: string = "primary",size: string = "default",axis: string = "vertical",thickness: number = 8,maxHeight: string = "20rem",radius: string = "999px",class: string = "" - Slots:
default - Outputs: None
Divider
Separate related horizontal or vertical content with optional labels, sizes, and semantic colors.
- Mount:
data-component="Divider" - Props:
size: string = "default",color: string = "primary",label: string = "",orientation: string = "horizontal",variant: string = "solid",class: string = "" - Slots: None
- Outputs: None
FeatureGrid
Arrange feature cards, services, solutions, or benefits in a responsive equal-height grid.
- Mount:
data-component="FeatureGrid" - Props:
size: string = "default",color: string = "primary",items: unknown[] = [],columns: number = 3,tabletColumns: number = 2,mobileColumns: number = 1,gap: string = "md",minItemWidth: string = "",equalHeight: boolean = true,align: string = "stretch",maxWidth: string = "full",variant: string = "default",label: string = "Features",class: string = "" - Slots:
default - Outputs: None
Footer
Render structured responsive footer navigation, pre and post content, copyright content, links, and public events.
- Mount:
data-component="Footer" - Props:
size: string = "default",color: string = "primary",label: string = "Footer navigation",items: unknown[] = [],columns: number = 3,maxWidth: string = "compact",copyright: string = "",class: string = "" - Slots:
pre-footer,post-footer,copyright-left,copyright-right - Outputs:
select({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null),action({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object })
Grid
Arrange arbitrary content in a responsive configurable CSS grid with stable columns, gaps, alignment, and width.
- Mount:
data-component="Grid" - Props:
size: string = "default",color: string = "primary",columns: number = 2,gap: string = "md",maxWidth: string = "xl",minItemWidth: string = "",class: string = "" - Slots:
default - Outputs: None
Image
Render a responsive image with explicit dimensions, loading behavior, alternative text, sizing, and rounded treatment.
- Mount:
data-component="Image" - Props:
size: string = "default",color: string = "primary",src: string = "",alt: string = "",width: string = "",height: string = "",loading: string = "lazy",fit: string = "cover",rounded: boolean = false,class: string = "" - Slots:
default - Outputs: None
Kbd
Theme-aware, responsive kbd component.
- Mount:
data-component="Kbd" - Props:
size: string = "default",color: string = "primary",label: string = "K",class: string = "" - Slots:
default - Outputs: None
LayoutSplitter
Theme-aware, responsive layout splitter component.
- Mount:
data-component="LayoutSplitter" - Props:
color: string = "primary",size: number = 50,orientation: string = "horizontal",minSize: number = 15,step: number = 5,label: string = "Resize panels",class: string = "" - Slots:
start,end,default - Outputs:
sizeChange({ size: number })
Link
Render an accessible internal or external link with target, relation, size, color, and public focus or click events.
- Mount:
data-component="Link" - Props:
size: string = "default",color: string = "primary",label: string = "Link",href: string = "#",target: string = "",rel: string = "",underline: string = "hover",external: boolean = false,class: string = "" - Slots:
default - Outputs: None
PublicPageShell
Provide the outer responsive structure, width, background, slots, overflow, and minimum-height behavior for public pages.
- Mount:
data-component="PublicPageShell" - Props:
maxWidth: string = "full",fullWidth: boolean = true,headerOffset: string = "none",background: string = "default",overflow: string = "clip",minHeight: string = "screen",size: string = "default",color: string = "primary",variant: string = "default",class: string = "" - Slots:
before,default,after - Outputs: None
Section
Create a responsive themed page section with controlled spacing, width, borders, and surface treatment.
- Mount:
data-component="Section" - Props:
id: string = "",size: string = "default",color: string = "primary",variant: string = "default",spacing: string = "lg",maxWidth: string = "xl",fullWidth: boolean = false,borderTop: boolean = false,borderBottom: boolean = false,class: string = "" - Slots:
default - Outputs: None
SectionHeader
Introduce a section with an eyebrow, title, description, alignment, and responsive heading hierarchy.
- Mount:
data-component="SectionHeader" - Props:
id: string = "",eyebrow: string = "",title: string = "",description: string = "",align: string = "left",size: string = "default",color: string = "primary",headingLevel: number = 2,maxWidth: string = "3xl",class: string = "" - Slots:
icon,default,actions - Outputs: None
Typography
Apply consistent readable responsive typography, widths, columns, spacing, and editorial hierarchy.
- Mount:
data-component="Typography" - Props:
size: string = "default",color: string = "primary",columns: number = 2,gap: string = "md",maxWidth: string = "xl",class: string = "" - Slots:
default - Outputs: None
Marketing
AnnouncementBar
Publish a responsive notice with badge, icon, supporting copy, action, dismiss behavior, and width controls.
- Mount:
data-component="AnnouncementBar" - Props:
badge: string = "",badgeIcon: string = "",message: string = "Announcement",description: string = "",icon: string = "icon-[lucide--megaphone]",actionLabel: string = "",actionHref: string = "",actionIcon: string = "",dismissible: boolean = false,dismissLabel: string = "Dismiss announcement",sticky: boolean = false,compact: boolean = false,size: string = "default",width: string = "default",color: string = "primary",variant: string = "soft",role: string = "status",live: string = "polite",class: string = "" - Slots: None
- Outputs:
dismiss({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object })
CTASection
Close a page or major section with conversion-focused copy, actions, and optional supporting visual content.
- Mount:
data-component="CTASection" - Props:
eyebrow: string = "",title: string = "Ready to get started?",description: string = "",icon: string = "",align: string = "center",size: string = "default",color: string = "primary",variant: string = "solid",primaryLabel: string = "Get started",primaryHref: string = "#",primaryIcon: string = "",secondaryLabel: string = "",secondaryHref: string = "",secondaryIcon: string = "",backgroundImage: string = "",visualImage: string = "",visualAlt: string = "",visualIcon: string = "",visualTitle: string = "",visualDescription: string = "",visualItems: unknown[] = [],visualPosition: string = "right",maxWidth: string = "xl",fullBleed: boolean = false,class: string = "" - Slots:
default,actions,visual,footer - Outputs: None
FeatureCard
Present one linked feature or service with media, icon, badge, description, and action.
- Mount:
data-component="FeatureCard" - Props:
icon: string = "",iconStyle: string = "soft",iconSize: string = "default",eyebrow: string = "",title: string = "Feature",description: string = "",image: string = "",imageAlt: string = "",imagePosition: string = "top",imageAspect: string = "wide",imageLoading: string = "lazy",href: string = "",target: string = "",rel: string = "",external: boolean = false,actionLabel: string = "Learn more",actionIcon: string = "",showArrow: boolean = true,stretchedLink: boolean = true,badge: string = "",badgeColor: string = "primary",size: string = "default",color: string = "primary",variant: string = "default",hover: string = "lift",align: string = "left",disabled: boolean = false,class: string = "" - Slots:
media,icon,default,footer - Outputs: None
FeatureIconCard
Present a compact feature or benefit with a styled icon, title, description, badge, and optional link.
- Mount:
data-component="FeatureIconCard" - Props:
icon: string = "icon-[lucide--sparkles]",iconSize: string = "md",iconVariant: string = "soft",title: string = "Feature",description: string = "",href: string = "",actionLabel: string = "Explore",badge: string = "",size: string = "default",color: string = "primary",variant: string = "default",align: string = "left",hover: string = "lift",class: string = "" - Slots:
default,footer - Outputs: None
Hero
Build a full-width responsive hero with constrained content, actions, trust signals, and a structured or custom visual panel.
- Mount:
data-component="Hero" - Props:
eyebrow: string = "",eyebrowIcon: string = "",icon: string = "",title: string = "Build something remarkable",highlight: string = "",description: string = "",align: string = "left",size: string = "default",color: string = "primary",variant: string = "default",layout: string = "split",visualPosition: string = "right",visualStyle: string = "plain",showDecorations: boolean = true,fullBleed: boolean = true,visualEyebrow: string = "",visualTitle: string = "",visualDescription: string = "",visualIcon: string = "",visualImage: string = "",visualAlt: string = "",visualItems: unknown[] = [],primaryLabel: string = "",primaryHref: string = "",primaryIcon: string = "",primaryTarget: string = "",secondaryLabel: string = "",secondaryHref: string = "",secondaryIcon: string = "",secondaryTarget: string = "",tertiaryLabel: string = "",tertiaryHref: string = "",tertiaryIcon: string = "",tertiaryTarget: string = "",badges: unknown[] = [],trustItems: unknown[] = [],maxWidth: string = "xl",class: string = "" - Slots:
eyebrow,actions,trust,default,visual,footer - Outputs: None
HeroActions
Group hero and campaign actions with consistent alignment, orientation, sizing, and responsive mobile stacking.
- Mount:
data-component="HeroActions" - Props:
actions: unknown[] = [],align: string = "left",orientation: string = "horizontal",stackOnMobile: boolean = true,fullWidthMobile: boolean = true,size: string = "default",color: string = "primary",class: string = "" - Slots:
default - Outputs: None
MarketingSectionHeader
Introduce marketing content with an eyebrow, title, description, and optional linked action.
- Mount:
data-component="MarketingSectionHeader" - Props:
id: string = "",eyebrow: string = "",title: string = "",description: string = "",align: string = "split",size: string = "default",color: string = "primary",actionLabel: string = "",actionHref: string = "",actionIcon: string = "",actionExternal: boolean = false,class: string = "" - Slots:
icon,actions,default - Outputs: None
PageHeader
Introduce an internal or public page with breadcrumbs, icon, title, description, and primary or secondary actions.
- Mount:
data-component="PageHeader" - Props:
eyebrow: string = "",title: string = "",description: string = "",icon: string = "",id: string = "page-title",align: string = "left",centered: boolean = false,compact: boolean = false,size: string = "default",maxWidth: string = "xl",showBreadcrumbs: boolean = false,breadcrumbs: unknown[] = [],breadcrumbParent: string = "",breadcrumbParentHref: string = "",breadcrumbCurrent: string = "",primaryLabel: string = "",primaryHref: string = "",primaryIcon: string = "",secondaryLabel: string = "",secondaryHref: string = "",secondaryIcon: string = "",color: string = "primary",variant: string = "default",borderBottom: boolean = true,class: string = "" - Slots:
meta,actions,default - Outputs: None
SplitHero
Build a responsive two-column introduction balancing descriptive content with a visual, image, or structured data panel.
- Mount:
data-component="SplitHero" - Props:
eyebrow: string = "",eyebrowIcon: string = "icon-[lucide--sparkles]",title: string = "A better digital experience",highlight: string = "",description: string = "",primaryLabel: string = "",primaryHref: string = "",primaryIcon: string = "",secondaryLabel: string = "",secondaryHref: string = "",secondaryIcon: string = "",visualPosition: string = "right",reverse: boolean = false,ratio: string = "balanced",align: string = "left",size: string = "default",color: string = "primary",variant: string = "default",maxWidth: string = "xl",fullBleed: boolean = true,backgroundImage: string = "",visualImage: string = "",visualAlt: string = "",visualIcon: string = "",visualEyebrow: string = "",visualTitle: string = "",visualDescription: string = "",visualItems: unknown[] = [],visualStyle: string = "panel",trustItems: unknown[] = [],class: string = "" - Slots:
default,actions,trust,visual - Outputs: None
TextLink
Render an accessible text action with optional icon, arrow, underline, external state, and semantic styling.
- Mount:
data-component="TextLink" - Props:
label: string = "Learn more",href: string = "#",target: string = "",rel: string = "",external: boolean = false,icon: string = "",iconPosition: string = "start",showArrow: boolean = true,underline: boolean = false,size: string = "default",color: string = "primary",variant: string = "default",disabled: boolean = false,class: string = "" - Slots: None
- Outputs:
click({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),focus({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),blur({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object })
Navigation
BackToTop
Provide a responsive floating control that returns long pages to the top and can show scroll progress.
- Mount:
data-component="BackToTop" - Props:
threshold: number = 500,label: string = "Back to top",ariaLabel: string = "Scroll back to top",icon: string = "icon-[lucide--arrow-up]",position: string = "right",offset: string = "md",behavior: string = "smooth",showProgress: boolean = false,showLabel: boolean = false,alwaysVisible: boolean = false,size: string = "default",color: string = "primary",variant: string = "solid",shape: string = "round",class: string = "" - Slots: None
- Outputs: None
Breadcrumb
Show responsive hierarchical navigation with home support, separators, current-page state, sizes, and selection events.
- Mount:
data-component="Breadcrumb" - Props:
label: string = "Breadcrumb",items: unknown[] = [],active: string = "",separator: string = "chevron",showHome: boolean = false,homeLabel: string = "Home",homeHref: string = "/",homeIcon: string = "icon-[lucide--house]",size: string = "default",color: string = "primary",variant: string = "minimal",class: string = "" - Slots: None
- Outputs:
select({ value?: string | number | boolean | null; values?: Array<string | number | boolean | null | object>; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null)
MegaMenu
Theme-aware, responsive mega menu component.
- Mount:
data-component="MegaMenu" - Props:
color: string = "primary",size: string = "default",label: string = "Menu",icon: string = "",columns: unknown[] = [],footer: string = "",defaultOpen: boolean = false,class: string = "" - Slots:
default - Outputs:
open({ sourceEvent: Event }),close({ reason: string }),select({ item: object; value: string })
Nav
Theme-aware, responsive nav component.
- Mount:
data-component="Nav" - Props:
color: string = "primary",size: string = "default",items: unknown[] = [],active: string = "",orientation: string = "horizontal",label: string = "Main",collapsible: boolean = true,toggleLabel: string = "Menu",class: string = "" - Slots:
default - Outputs:
select({ item: object; value: string })
Navbar
Theme-aware, responsive navbar component.
- Mount:
data-component="Navbar" - Props:
size: string = "default",color: string = "primary",label: string = "Primary navigation",topbarLabel: string = "Utility navigation",brand: Record<string, unknown> = {},items: unknown[] = [],actions: unknown[] = [],active: string = "",sticky: boolean = false,openOnHover: boolean = false,maxWidth: string = "full",mobileLabel: string = "Toggle navigation",class: string = "" - Slots:
topbar,actions - Outputs:
toggle({ open: boolean }),open({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),close({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }),select({ item: string | number | boolean | null | object; value: string | number | boolean; level: string }),action({ item: string | number | boolean | null | object; value: string | number | boolean })
Pagination
Theme-aware, responsive pagination component.
- Mount:
data-component="Pagination" - Props:
color: string = "primary",size: string = "default",page: number = 1,pageSize: number = 10,total: number = 0,variant: string = "compact",siblingCount: number = 1,showSummary: boolean = true,label: string = "Pagination",previousLabel: string = "Previous",nextLabel: string = "Next",class: string = "" - Slots:
default - Outputs:
change({ page: number; pageSize: number }),previous({ page: number }),next({ page: number })
Scrollspy
Theme-aware, responsive scrollspy component.
- Mount:
data-component="Scrollspy" - Props:
color: string = "primary",size: string = "default",items: unknown[] = [],active: string = "",label: string = "On this page",heading: string = "",class: string = "" - Slots:
default - Outputs:
change({ href: string; label: string })
Sidebar
Theme-aware, responsive sidebar component.
- Mount:
data-component="Sidebar" - Props:
color: string = "primary",size: string = "default",label: string = "Sidebar",items: unknown[] = [],active: string = "",mobileLabel: string = "Open navigation",drawerTitle: string = "Navigation",class: string = "" - Slots:
default,drawer - Outputs:
toggle({ open: boolean }),open({ sourceEvent: Event }),close({ source: string }),select({ item: object; value: string; level: number })
Stepper
Theme-aware, responsive stepper component.
- Mount:
data-component="Stepper" - Props:
color: string = "primary",size: string = "default",steps: unknown[] = [],active: number = 0,orientation: string = "horizontal",clickable: boolean = false,label: string = "Progress",showPanel: boolean = false,controls: boolean = false,allowSkip: boolean = false,nextDisabled: boolean = false,backLabel: string = "Back",nextLabel: string = "Next",skipLabel: string = "Skip",finishLabel: string = "Finish",class: string = "" - Slots:
step-{index},panel-{index},default - Outputs:
change({ index: number; step: object }),back({ index: number; step: object }),next({ index: number; step: object }),skip({ index: number; step: object }),finish({ index: number; step: object })
Tabs
Switch between related responsive content panels with horizontal or vertical orientation and selection events.
- Mount:
data-component="Tabs" - Props:
color: string = "primary",size: string = "default",items: unknown[] = [],active: string = "",orientation: string = "horizontal",mode: string = "client",param: string = "tab",label: string = "Tabs",class: string = "" - Slots:
panel-{valueOf(item, index)},default - Outputs:
change({ value: string; item: object; index: number }),select({ value: string; item: object; index: number })
Overlays
ContextMenu
Open an accessible keyboard-aware action menu from pointer or keyboard context interactions.
- Mount:
data-component="ContextMenu" - Props:
items: unknown[] = [],open: boolean = false,defaultOpen: boolean = false,trigger: string = "contextmenu",placement: string = "pointer",align: string = "start",size: string = "default",color: string = "primary",variant: string = "raised",title: string = "",description: string = "",label: string = "Context menu",closeOnSelect: boolean = true,closeOnOutside: boolean = true,disabled: boolean = false,minWidth: string = "14rem",maxWidth: string = "20rem",class: string = "" - Slots:
trigger,header,default,footer - Outputs:
open({ x: number; y: number; trigger: string; sourceEvent: Event }),close({ reason: string; sourceEvent: Event }),select({ item: string | number | boolean | null | object; itemIndex: number; value: string | number | boolean; sourceEvent: Event }),action({ item: string | number | boolean | null | object; itemIndex: number; value: string | number | boolean; sourceEvent: Event })
Drawer
Present responsive modal side or bottom content with focus management, backdrop behavior, slots, and close events.
- Mount:
data-component="Drawer" - Props:
open: boolean = false,defaultOpen: boolean = false,placement: string = "right",size: string = "md",color: string = "primary",variant: string = "default",title: string = "Drawer",description: string = "",icon: string = "",label: string = "Drawer",closeLabel: string = "Close drawer",showClose: boolean = true,closeOnBackdrop: boolean = true,closeOnEscape: boolean = true,duration: number = 260,overlay: boolean = true,scrollable: boolean = true,triggerLabel: string = "",triggerIcon: string = "",class: string = "" - Slots:
trigger,header,default,footer - Outputs:
open({ placement: string; sourceEvent: Event }),close({ reason: string; placement: string; sourceEvent: Event }),cancel({ placement: string; sourceEvent: Event })
Dropdown
Open an accessible anchored menu with keyboard navigation, item selection, actions, and responsive placement.
- Mount:
data-component="Dropdown" - Props:
items: unknown[] = [],open: boolean = false,defaultOpen: boolean = false,label: string = "Open menu",icon: string = "",showChevron: boolean = true,menuLabel: string = "Dropdown menu",placement: string = "bottom-start",width: string = "md",size: string = "default",color: string = "primary",variant: string = "raised",closeOnSelect: boolean = true,closeOnOutside: boolean = true,disabled: boolean = false,emptyLabel: string = "No menu items",class: string = "" - Slots:
trigger,header,default,footer - Outputs:
toggle({ open: boolean; sourceEvent: Event; reason?: object }),open({ sourceEvent: Event }),close({ reason: string; sourceEvent: Event }),select({ item: string | number | boolean | null | object; itemIndex: number; value: string | number | boolean; sourceEvent: Event }),action({ item: string | number | boolean | null | object; itemIndex: number; value: string | number | boolean; sourceEvent: Event })
Modal
Present an accessible modal dialog with focus management, confirmation, cancellation, slots, and responsive sizing.
- Mount:
data-component="Modal" - Props:
open: boolean = false,defaultOpen: boolean = false,title: string = "Modal",description: string = "",icon: string = "",label: string = "Modal dialog",size: string = "md",placement: string = "center",color: string = "primary",variant: string = "default",showClose: boolean = true,closeLabel: string = "Close modal",closeOnBackdrop: boolean = true,closeOnEscape: boolean = true,closeOnCancel: boolean = true,closeOnConfirm: boolean = false,showFooter: boolean = true,cancelLabel: string = "Cancel",cancelIcon: string = "",confirmLabel: string = "Confirm",confirmIcon: string = "",confirmDisabled: boolean = false,confirmLoading: boolean = false,destructive: boolean = false,triggerLabel: string = "",triggerIcon: string = "",scrollable: boolean = true,scrollBehavior: string = "inside",class: string = "" - Slots:
trigger,header,default,footer - Outputs:
open({ sourceEvent: Event }),close({ reason: string; sourceEvent: Event }),cancel({ sourceEvent: Event }),confirm({ sourceEvent: Event })
Popover
Display anchored supporting content with configurable trigger, placement, responsive sizing, and open or close events.
- Mount:
data-component="Popover" - Props:
open: boolean = false,defaultOpen: boolean = false,triggerLabel: string = "Open popover",triggerIcon: string = "",title: string = "",description: string = "",icon: string = "",placement: string = "bottom-start",width: string = "md",size: string = "default",color: string = "primary",variant: string = "raised",showArrow: boolean = true,showClose: boolean = false,closeLabel: string = "Close popover",closeOnOutside: boolean = true,closeOnEscape: boolean = true,actionLabel: string = "",actionHref: string = "",actionIcon: string = "",closeOnAction: boolean = true,disabled: boolean = false,class: string = "" - Slots:
trigger,header,default,footer - Outputs:
toggle({ open: boolean; sourceEvent: Event; reason?: object }),open({ sourceEvent: Event }),close({ reason: string; sourceEvent: Event }),action({ href: string; sourceEvent: Event })
Tooltip
Show concise accessible contextual help on hover, focus, click, or controlled open state.
- Mount:
data-component="Tooltip" - Props:
id: string = "",open: boolean = false,defaultOpen: boolean = false,title: string = "",description: string = "",content: string = "Tooltip",trigger: string = "hover",placement: string = "top",size: string = "default",color: string = "primary",variant: string = "dark",maxWidth: string = "18rem",offset: number = 10,showArrow: boolean = true,interactive: boolean = false,disabled: boolean = false,class: string = "" - Slots:
trigger,default - Outputs:
toggle({ open: boolean; reason: string; sourceEvent: Event }),open({ reason: string; sourceEvent: Event }),close({ reason: string; sourceEvent: Event })
Tables
DataTable
Sortable, filterable, paginated data table with row selection.
- Mount:
data-component="DataTable" - Props:
color: string = "primary",size: string = "default",columns: unknown[] = [],rows: unknown[] = [],rowKey: string = "id",remote: boolean = false,loadingLabel: string = "Loading",errorLabel: string = "Could not load this data",retryLabel: string = "Try again",caption: string = "",description: string = "",searchable: boolean = true,searchPlaceholder: string = "Search",paginated: boolean = true,pageSize: number = 10,paginationStyle: string = "compact",pageSizes: number[] = [10, 25, 50],selectable: boolean = false,actions: unknown[] = [],striped: boolean = true,bordered: boolean = true,gridlines: string = "rows",density: string = "default",emptyLabel: string = "No records to show",noResultsLabel: string = "No records match your search",clearSearchLabel: string = "Clear search",stickyFirstColumn: boolean = false,layout: string = "rows",class: string = "" - Slots:
default - Outputs:
sort({ key: string; direction: string }),search({ query: string }),pageChange({ page: number; pageSize: number }),select({ selected: Array<string | number>; all: boolean }),change({ page: number; pageSize: number; total: number; query: string; sortKey: string; sortDirection: string }),rowClick({ row: object; sourceEvent: Event }),action({ id: string; selected: Array<string | number>; rows: object[]; sourceEvent: Event }),request({ instanceId: number; page: number; pageSize: number; sortKey: string; sortDirection: string; query: string })