Effortless UI Components

A simple, elegant Svelte 5 component library

Core Components

Button

Versatile button with variants, sizes, and states.

Props

PropTypeDefaultDescription
textstring-Button label text
variant'ghost' | 'outline' | 'solid''solid'Visual style
color'default' | 'warning' | 'primary''default'Color theme
size'small' | 'medium' | 'large''medium'Button size
disabledbooleanfalseDisable interactions
loadingbooleanfalseShow loading spinner
iconstring-Icon name
onClickfunction-Click handler

SplitButton

A button with two independent clickable zones separated by a divider. The icon zone can open a dropdown menu or act as a second action.

Props

PropTypeDefaultDescription
textstring-Main button label
variant'ghost' | 'outline' | 'solid''solid'Visual style
color'default' | 'warning' | 'primary''default'Color theme
size'small' | 'medium' | 'large''medium'Button size
itemsSplitButtonItem[]-Dropdown menu items
iconPosition'start' | 'end''end'Position of trigger zone
onClickfunction-Main button click handler
onIconClickfunction-Trigger click handler
onSelectfunction-Menu item selection handler
 console.log('Save')}
  onSelect={({ value }) => console.log('Selected:', value)}
/>

Heading

Semantic heading component with configurable levels.

Heading 1

Heading 2

Heading 3

Props

PropTypeDefaultDescription
textstring-Heading text
level1 | 2 | 3 | 4 | 5 | 61HTML heading level

Text

Text component for paragraphs and inline text.

This is a paragraph of text rendered with the Text component.

EditableText

Inline editable text field.

Click to edit

Current value: Click to edit

Icon

SVG icon component with built-in icon library.

Input Components

Input

Text input with label, validation, and password support.

This field is required

Props

PropTypeDefaultDescription
labelstring-Input label
placeholderstring-Placeholder text
typestring'text'Input type
valuestring | number''Input value (bindable)
errorstring-Error message
disabledbooleanfalseDisable input
iconstring-Leading icon name

TextArea

Multi-line text input.

IntegerInput

Number input with increment/decrement controls.

Value: 42

Select

Dropdown select with options.

Checkbox

Single checkbox for boolean values.

Checked: false

CheckboxGroup

Group of checkboxes for multiple selection.

Select options

Selected: none

Radio

Single radio button.

RadioGroup

Group of radio buttons for single selection.

Select one

Toggle

Toggle switch for on/off states.

Enable notifications

Enabled: false

Slider

Range slider for numeric values.

Value: 50

Rating

Star rating input.

Rating: 3/5

TileSelect

Tile-based selection with animated feedback. Supports single or multiple selection, horizontal or vertical layout.

Horizontal (Single Select)

Raw notes

Selected: paste

Vertical (Multiple Select)

Target styles (select one or more)

Selected: direct

Props

PropTypeDefaultDescription
labelstring-Label above the tiles
optionsTileOption[][]Array of options with label, value, subtitle
valuestring | number | array-Selected value(s), bindable
direction'horizontal' | 'vertical''vertical'Layout direction
multiplebooleanfalseAllow multiple selections
disabledbooleanfalseDisable all tiles
errorstring-Error message


FileUpload

File upload with drag and drop support.

ChipInput

Input for managing string arrays as visual chips. Add with Enter, Tab, or comma. Remove with backspace or click the X.

svelte typescript

Values: svelte, typescript

tag1 tag2 tag3

Values: tag1, tag2, tag3

At least one tag is required
disabled example

Props

PropTypeDefaultDescription
labelstring-Input label
valuesstring[][]Array of chip values (bindable)
placeholderstring-Placeholder text
maxItemsnumber-Maximum number of chips
maxChipLengthnumber-Maximum length of each chip value
allowDuplicatesbooleanfalseAllow duplicate values
errorstring-Error message
disabledbooleanfalseDisable input
readonlybooleanfalseRead-only mode
 console.log('Tags:', values)}
/>

Display Components

Metric

Display key metrics with labels and values.

Total Users

1,234

Revenue

$45,678

Growth

+12%

Code

Inline code display.

const greeting = 'Hello, World!';

CodeBlock

Syntax highlighted code blocks.

function greet(name: string): string {
  return `Hello, ${name}!`;
}

Surface Components

Section

Container section with optional title.

Section Title

Content inside a section component.

Card

Card container with header and expandable content.

Basic Card
A simple card

Card content goes here.

Expandable Card

Click the arrow to expand.

Grid

CSS grid layout container.

1
2
3

Modal

Modal dialog overlay.

ConfirmationModal

Confirmation dialog with accept/reject actions.

List

Flexible list container.

First Item Description for first item
Second Item Description for second item
Third Item Description for third item

CheckboxList

List with checkbox items.

ScoredCardList

List of cards with score indicators.

Best Option
Highest rated
Good Option
Well rated
Basic Option
Average rating

Icon Components

Pre-built icon components for common use cases.

CheckIcon
ChevronIcon
EyeIcon
DocumentIcon
ArrowUpIcon
TrashIcon
LoadingIcon

Icon Library

All available icons for the <Icon> component. Icons sourced from Iconoir.

alert
archive
arrow
arrowCollapse
arrowExpand
arrowIndent
asterisk
bell
binocular
box
boxIso
brain
briefcase
building
calendar
cell
check
chevron
circle
circleMinus
circlePlus
clock
close
code
collapse
columns
contextExtractor
contextReviewer
contextViewer
database
diamond
divideThree
divideTwo
droplet
duplicate
edit
empty
emptyPage
enlarge
expand
file
filter
flag
folder
goals
grid
health
hexagon
hexagonMinus
hexagonPlus
home
info
inputField
label
lens
lensPlus
lightbulb
lightning
list
lock
mail
megaphone
notes
number3
page
pageEdit
pageLayout
pentagon
person
personThree
personTwo
plus
reduce
review
rows
search
send
settings
shieldAlert
sparkle
square
star
star-outline
stats
strategy
translate
trash
triangle
wrench


Effortless UI - A Svelte 5 Component Library