Noph UI
Material 3 Expressive components for Svelte
Themed from a single color, shipped without a single runtime dependency, and built for SvelteKit's remote functions.
- 27
- components
- 0
- dependencies
Real components, right here
Loading & Progress
Slider
Drag it. The progress tile follows along at 65%.
Selection
Chips
2 of 3 selected
Text fields
Noph UI is a UI library for Svelte that follows the Material 3 Expressive guidelines. It gives you the buttons, fields, navigation and feedback components a real app needs, with theming, dark mode and accessibility already handled.
Why Noph UI
Server side rendering
Components render to HTML on the server, so the first paint does not wait for JavaScript. Good for load times, good for search engines.
Remote functions ready
Text fields, selects, checkboxes, autocompletes and date pickers take an issues prop
shaped exactly like a SvelteKit remote form's validation errors, so they wire straight in without
an adapter.
Dynamic theming
Material 3 color roles are plain CSS variables. Pick a source color and every component follows, at runtime if you want.
Zero dependencies
One package, nothing else pulled in behind your back. Your users download components, not a framework on top of a framework.
Expressive motion
Springy shape morphs, ripples and wavy progress from the Material 3 Expressive spec. All of it steps aside when a visitor prefers reduced motion.
Accessible by default
Components build on native elements, so roles, labels, keyboard navigation and focus rings come with them.
Light and dark
The default theme ships both color schemes and follows the system setting, or whatever setting you put in charge.
One color, a whole theme
The default theme is a set of Material 3 color roles written as CSS variables. Use the palette button in the header to pick a source color and watch this page recolor, then copy the generated theme straight into your project.
Start in two minutes
npm install noph-uiImport the default theme once, in your root layout.
import 'noph-ui/defaultTheme'Then import a component and drop it into your markup.
<script>
import { Button } from 'noph-ui'
</script>
<Button variant="filled">Get started</Button>The quick start covers theming, dark mode and typography in a few more lines.
Build something expressive
Install the package, import the theme and ship a Material 3 interface that renders on the server and feels alive in the browser.