---
name: konsta-ui
description: Guide to using Konsta UI for pixel-perfect iOS and Material Design components in Capacitor apps. Works with React, Vue, and Svelte. Use this skill when users want native-looking UI without Ionic, or prefer a lighter framework.
---
# Konsta UI Design Guide
Build pixel-perfect iOS and Material Design apps with Konsta UI.
## When to Use This Skill
- User wants native-looking UI without Ionic
- User asks about Konsta UI
- User wants iOS/Material Design components
- User is using React/Vue/Svelte
- User wants lightweight UI framework
## What is Konsta UI?
Konsta UI provides:
- Pixel-perfect iOS and Material Design components
- Works with React, Vue, and Svelte
- Tailwind CSS integration
- ~40 mobile-optimized components
- Small bundle size (~30KB gzipped)
## Getting Started
### Installation
```bash
# React
bun add konsta
# Vue
bun add konsta
# Svelte
bun add konsta
# Required: Tailwind CSS
bun add -D tailwindcss postcss autoprefixer
bunx tailwindcss init -p
```
### Tailwind Configuration
```javascript
// tailwind.config.js
const konstaConfig = require('konsta/config');
module.exports = konstaConfig({
content: [
'./src/**/*.{js,ts,jsx,tsx,vue,svelte}',
],
// Extend or override Konsta config
theme: {
extend: {},
},
});
```
### Setup (React)
```tsx
// App.tsx
import { App, Page, Navbar, Block } from 'konsta/react';
export default function MyApp() {
return (
{/* or theme="material" */}
Hello Konsta UI!
);
}
```
### Setup (Vue)
```vue
Hello Konsta UI!
```
## Core Components
### Page Structure
```tsx
import {
App,
Page,
Navbar,
NavbarBackLink,
Block,
BlockTitle,
} from 'konsta/react';
function MyPage() {
return (
history.back()} />}
/>
Section Title
Block content with rounded corners and padding.
);
}
```
### Lists
```tsx
import {
List,
ListItem,
ListInput,
ListButton,
} from 'konsta/react';
import { ChevronRight } from 'framework7-icons/react';
function MyList() {
return (
<>
{/* Simple list */}
{/* List with details */}
}
link
/>
{/* Form list */}
Login
>
);
}
```
### Forms
```tsx
import {
List,
ListInput,
Toggle,
Radio,
Checkbox,
Stepper,
Range,
} from 'konsta/react';
import { useState } from 'react';
function MyForm() {
const [toggle, setToggle] = useState(false);
const [gender, setGender] = useState('male');
return (
{/* Text inputs */}
{/* Toggle */}
setToggle(!toggle)}
/>
}
/>
{/* Radio */}
setGender('male')}
/>
}
/>
setGender('female')}
/>
}
/>
{/* Checkbox */}
}
/>
{/* Stepper */}
}
/>
{/* Range */}
}
/>
);
}
```
### Buttons
```tsx
import { Button, Segmented, SegmentedButton } from 'konsta/react';
import { useState } from 'react';
function Buttons() {
const [active, setActive] = useState(0);
return (