norns-ui
Component library for the Norns ecosystem — Pug + Civet components on Tailwind v4, headless behaviors on @floating-ui/dom, Iconify icons, theming tokens and motion.
@human-synthesis/norns-ui ships around seventy components written as .n files, so they compile through the same pipeline as your app and can be shadowed by dropping a file with the same name into your project.
#Stack
- Svelte 5 components and runes, Pug templates, Civet scripts.
- Tailwind CSS v4 as a hard peer dependency; tokens are a Tailwind
@themeblock. @floating-ui/domfor every overlay (Popover, Dropdown, Tooltip, ContextMenu, pickers).- In-tree headless behaviors: focus trap, scroll lock, click outside, escape, portal, roving tabindex.
- Iconify with the Lucide set bundled.
tailwind-mergebehindcn()for class deduplication.@human-synthesis/nornsas a peer, fornornsAutoImportandpresetUI().
#What is in the box
| Tier | Components |
|---|---|
| Atoms (CSS only) | .btn, .input, .field, .form, .checkbox, .radio, .switch, .card, .surface-elevated, .badge, .chip, .avatar, .skeleton, .progress, .norns-header, .hero, .stepper, .breadcrumbs, .pagination, .accordion, .carousel, with variants and sizes |
| Forms | Btn, Form, Field, FieldGroup, Input, Textarea, Select, Checkbox, Radio, Switch, NumberInput, OtpField, TagsInput, Autocomplete, MultiSelect, DatePicker, DateRangePicker, TimePicker, Calendar, ColorPicker, Uploader |
| Behavior | Dialog, Sheet, Popover, Dropdown, Tooltip, Tabs, Accordion, ContextMenu, Collapsible, ScrollArea |
| Display | Card, Surface, Window, Banner, Badge, Chip, Avatar, AvatarGroup, Skeleton, Progress, ProgressCircular, Icon, Image, Audio, Video, Separator, GradientText, Timeline, DataTable, Tree |
| Composite | Header, HeroBanner, Stepper, Breadcrumbs, Pagination, Carousel, Toolbar, ButtonGroup, ToggleButton, ToggleButtonGroup, HierarchicalMenu, MegaMenu, CopyButton, ThemeToggler, ShinyButton, RippleButton |
| Toast | ToastProvider plus toast() / notify() / dismiss() |
| Motion (opt-in) | AnimatedNumber, GradientBackground, LiquidButton, Reveal, Sparkles |
Every component accepts class and merges it with cn(). The component reference lists each one with its props; the live gallery is /examples/ui in norns-demo.