Meet Nide, the fifth OpenVue theme

Nide is the first OpenVue theme we designed ourselves: a neutral primary, hairline borders, segmented controls and compact sizing for the software people spend hours in.

When we forked PrimeVue, we inherited four themes: Aura, Lara, Material and Nora. They are good themes, and plenty of apps run on them happily. But every time we sat down to build something ourselves, we caught ourselves doing the same thing. Turn the colour down. Make the borders thinner. Shrink the buttons a little. Calm the whole thing down until the interface stopped asking for attention.

After doing that enough times, it felt silly not to ship it. So we did. Nide landed in OpenVue 1.1.0, and it now sits next to the other four as a first-class preset. Nothing changes for apps already using Aura or any other preset. Nide is simply one more option.

Colour that means something

Nide has no brand colour of its own. The primary colour is near-black in light mode and near-white in dark mode, taken straight from the surface palette. Buttons, selected states and toggles all use it.

This is the most important decision in the theme. In most interfaces colour is doing two jobs at once: decorating the components and telling the user something. When every primary button is bright blue, a blue info message has to compete with it, and a red error has to fight for attention against a screen that is already colourful. With a neutral primary, colour is free to carry meaning again. Red means something went wrong, green means it worked, amber means look closer. And when you add your own brand colour, it is the only accent on the page, so it actually stands out.

The same buttons, messages and tags in Aura and in Nide. Aura uses a green primary on buttons and tinted backgrounds on messages; Nide uses a near-black primary, white messages with coloured text, and solid status tags.

Structure without noise

Borders in Nide are hairlines, and shadows are soft and kept for things that genuinely float above the page: dropdowns, popovers and dialogs. Everything that sits flat on the page stays flat.

That gives the interface a clear sense of depth. If something has a shadow, it is temporary and on top of everything else. If it has only a thin border, it is part of the layout. Users never have to think about this, but they feel it, and it makes busy screens easier to scan.

Controls that explain themselves

Some components got a different shape, not just different colours.

Tabs and SelectButton are segmented: the options sit together inside one container, and the selected one is lifted out of it. A row of separate buttons does not tell you whether you can pick one option or several. A segmented control does, because it looks like a single choice between parts of the same thing.

Tabs and SelectButton in Aura and in Nide. Aura draws tabs as text with a green underline; Nide puts the tabs in one grey container with the selected tab lifted out in white, like the SelectButton below it.
Tabs and SelectButton. Nide draws tabs as one segmented control.

Built for long sessions

Nide is denser than the other presets. At the default 16px root size, text in buttons and fields is 14px and the controls are 36px tall, with 32px and 40px for the small and large sizes. Checkboxes and radio buttons are 18px, or 16px in the small size.

This is a deliberate choice for the kind of software people spend hours in: dashboards, admin panels, internal tools, anything with a lot of forms and tables. Density there is a feature. More rows fit on screen, related fields stay close together, and the eye travels less between the things that belong together. The controls are still comfortably large enough to hit with a mouse, and if your app needs more room, raising the root font size scales everything with it.

The same form in Aura and in Nide: a name field, a role select, checkboxes, radio buttons, a toggle switch and two buttons. The Nide form is shorter, with smaller text and controls and a near-black primary.
One form, both presets, at the default 16px root size. The Nide version is more compact.

Focus you can see

Keyboard users need to know where they are at all times. Nide uses a 3px focus ring in a muted grey. It is wide enough to spot instantly, even against the near-black primary, but soft enough that it does not flash across the page every time someone tabs through a form.

Motion is kept short as well. Transitions run in 150 milliseconds, which is long enough to show what changed and short enough that the interface never feels like it is waiting for an animation to finish.

Using it

Nide works like any other preset:

import { createApp } from 'vue';
import OpenVue from 'openvue/config';
import Nide from '@openvue/themes/nide';
import App from './App.vue';

const app = createApp(App);

app.use(OpenVue, {
    theme: {
        preset: Nide
    }
});

app.mount('#app');

If you load OpenVue from a CDN, there is a build for that too:

<script src="https://unpkg.com/@openvue/themes/umd/nide.min.js"></script>

Under the hood, Nide is layered on Aura's design tokens. Anything you already know about customising Aura carries over: override a token, extend the preset with definePreset, or add a primary colour if you do want a bit of brand after all.

Make it yours

Nide joins Aura, Lara, Material and Nora in both of our theming tools, so you can start from whichever preset fits your project best.

The Theme Builder at openvue.dev/theme lets you pick any of the five as a base and adjust the things people usually want to change: colours, font, corner radius, density, focus ring and a few more. The whole page is the preview, so you see every choice on real components and sample apps as you make it. When you are happy, you export a few small files and drop them into your project.

If you need to go deeper, the Theme Designer lets you edit every token, one by one, on top of any preset you choose.

Both run entirely in your browser. No account, no license key, no paid tier.

What comes next

Nide is the first theme we have designed ourselves, and it will not be the last thing that grows beyond what we started with. Like the rest of OpenVue, it is MIT licensed and free to use however you like.

Try it out, and if something looks off, open an issue. Themes get better the same way components do: someone notices a detail, and we fix it.

Originally published on OpenVue on GitHub .