| name | svelte-ui-design |
| description | ALWAYS use this skill for ANY Svelte component styling, design, or UI work. Svelte 5 UI design system using Tailwind CSS 4, Skeleton Labs design tokens/presets/Tailwind Components, and Bits UI headless components. Covers class composition, color systems, interactive components, forms, overlays, and all visual design. |
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์ธ์นญ ์์ฑ