Svelte UI Design System
Svelte 5 + Tailwind CSS 4 + Skeleton Labs + Bits UI ν΅ν© λμμΈ μμ€ν
When to Use This Skill
μλ νμ±ν:
- ANY Svelte component creation or modification
- ALL styling, design, and UI work in Svelte projects
- Component props, layouts, colors, spacing, typography
- Forms, buttons, cards, chips, badges, tables, dialogs, overlays
- Animations, transitions, hover effects, responsive design
- Dark mode, themes, conditional styling, dynamic values
Core Principles
- μ»΄ν¬λνΈ: Bits UI headless μ»΄ν¬λνΈλ§ μ¬μ©
- μ€νμΌλ§:
- Skeleton Labs ν ν°/ν리μ
(preset-filled, preset-tonal λ±)
- Skeleton Labs Tailwind Components (card, chip, badge, placeholder λ± - ν΄λμ€ μ‘°ν©)
- Tailwind CSS μ νΈλ¦¬ν°
- Skeleton μμ/ν리μ
: λ°λμ 곡μ λ¬Έμ μ°Έκ³ , μ§μ shade μ‘°ν© λ§λ€μ§ λ§ κ²
- Progressive disclosure: νμν λ¬Έμλ§ μ°Έμ‘°
- 1-level deep μ°Έμ‘°: SKILL.md β reference νμΌλ§
Available References
Get Started
Design System
Tailwind CSS 4
Svelte 5
Tailwind Components (Skeleton Labs ν΄λμ€ μ‘°ν©)
ν΄λμ€λ‘ λμμΈμ λμ³λμ κΈ°λ³Έ μμ. card, chip, badge, placeholder λ±.
Bits UI - Headless Components
Guides
Migration
Bits UI - Headless Components (42κ°)
μμ ν 컀μ€ν°λ§μ΄μ§ κ°λ₯ν unstyled μ»΄ν¬λνΈ. Skeleton Labs ν ν°/ν리μ
μΌλ‘ μ€νμΌλ§.
μ£Όμ μΉ΄ν
κ³ λ¦¬:
- Layout: Accordion, Collapsible, Tabs, Separator
- Overlays: Dialog, Popover, Tooltip, Context Menu, Drawer
- Forms: Checkbox, Radio Group, Switch, Slider, Select, Combobox
- Date/Time: Calendar, Date Picker, Date Range Picker, Time Field
- Navigation: Dropdown Menu, Menubar, Navigation Menu, Pagination
- Display: Avatar, Progress, Meter, Badge
- Interactive: Button, Toggle, Link Preview
Quick Reference
Skeleton Labs μ€μ κ·μΉ
Color Pairings (λ°λμ colors-design.md μ°Έκ³ ):
- ν¨ν΄:
{property}-{color}-{lightShade}-{darkShade}
- νμ© μ‘°ν©: 50-950, 100-900, 200-800, 300-700, 400-600, 500, 600-400, 700-300, 800-200, 900-100, 950-50
- κ·μΉ: λ shadeμ ν©μ΄ 1000 λλ 500 λ¨λ
- μ:
bg-surface-50-950, text-primary-200-800
Presets (λ°λμ presets-design.md μ°Έκ³ ):
- Filled:
preset-filled-{color}-{lightShade}-{darkShade} λλ preset-filled-{color}-500
- Tonal:
preset-tonal-{color}
- Outlined:
preset-outlined-{color}-{lightShade}-{darkShade}
Svelte 5 Class Composition
<!-- Array form -->
<div class={['base', condition && 'extra']}>
<!-- Object form -->
<div class={{ 'active': isActive, 'disabled': !enabled }}>
<!-- Style directive for dynamic values -->
<div
class="bg-(--brand-color)"
style:--brand-color={dynamicValue}>
Usage Pattern
<script lang="ts">
import { Dialog } from "bits-ui";
</script>
<Dialog.Root>
<Dialog.Trigger class="btn preset-filled-primary-500">
Open
</Dialog.Trigger>
<Dialog.Content class={[
'card preset-filled-surface-50-950',
'p-8 rounded-xl shadow-xl'
]}>
<Dialog.Title class="h3 text-primary-600-400">
Title
</Dialog.Title>
</Dialog.Content>
</Dialog.Root>
Best Practices
- μ»΄ν¬λνΈ: Bits UI headless μ»΄ν¬λνΈλ§ μ¬μ©
- μ€νμΌλ§: Skeleton Labs ν ν°/ν리μ
+ Tailwind Components (card, chip, badge λ±) + Tailwind μ νΈλ¦¬ν°
- Skeleton μμ/ν리μ
: λ°λμ 곡μ λ¬Έμ(colors-design.md, presets-design.md)μμ νμΈ
- Class μ‘°ν© μμ: Tailwind Components β ν리μ
β λ μ΄μμ β κ°κ²© β μ‘°κ±΄λΆ β variant
- μ κ·Όμ±: WCAG λλΉ λΉμ¨, focus-visible μν
- μ±λ₯: Svelte class λ°°μ΄/κ°μ²΄ μ¬μ©, Skeleton ν리μ
νμ©
- μΌκ΄μ±: λμΌν μ©μ΄ μ¬μ©, 3μΈμΉ μμ±