Quick start
Noph UI requires Svelte 5.40 or newer. It works inside SvelteKit or in a plain Vite + Svelte project alike, SvelteKit is not required.
Install
Install Noph UI components using npm and node.
npm install noph-uiTheming
The quickest way to get started with Noph UI is by using the default theme. You can import it into
your +layout.svelte file as shown below:
import 'noph-ui/defaultTheme'To apply both the theme's background color and text color to the entire app, you can target the <body> element directly in your app.css file like this:
body {
background-color: var(--np-color-background);
color: var(--np-color-on-background);
}This will ensure that the background and text color for the entire app are set to match the theme's color scheme.
Theming goes further: generate a theme from your own source color, browse every color, shape and motion token, and switch themes while the app is running.
Dark and light color schemes
The theme includes color schemes for both dark and light modes. The selected theme is
automatically determined based on the user's system settings. Alternatively, you can enforce a
specific theme by setting the data-theme attribute in your app.html.
Valid values for this attribute are dark and light.
<html lang="en" data-theme="dark">Typography
Define a font family in your app.css. You can load the default 'Roboto' font, for
example, from fonts.google.com.
body {
font-family: 'Roboto';
...
}Icons
Buttons, fields and navigation take an icon wherever Material 3 asks for one, and the Icon component draws it from the Material Symbols font. That font is not part of the package, so load it
in your app.html before the first icon shows up, otherwise its name is what you see.
Ask Google Fonts for the icons you use, here search and home:
<link
rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined&icon_names=search,home"
/>Icons covers the font settings, and how to pass your own SVG instead.
Put it together
A minimal SvelteKit app with the pieces above wired up.
src/routes/+layout.svelte
<script>
import 'noph-ui/defaultTheme'
import './app.css'
let { children } = $props()
</script>
{@render children()}app.css is the file from the Theming section
above, the one that sets background-color and color on body.
src/routes/+page.svelte
<script>
import { Button } from 'noph-ui'
</script>
<h1>Hello Noph UI</h1>
<Button variant="filled">Get started</Button>