Nocturne
nocturneDark, fluid AI-chat interfaces lit from below.
A dark-first art direction for AI products and modern webchat: near-black canvas, softly raised graphite surfaces, hairline borders, pill-shaped bubbles and a periwinkle-to-pink glow that pools under the composer. Motion is liquid — messages rise and settle, text streams in, nothing snaps.
- Fonts
- Onest · displayFigtree · bodyFragment Mono · mono
- Demo product
- Nova — An AI assistant that remembers your team's context — chat, search and automate across every tool.
- Palette
Use Nocturne in your project
Installing any Nocturne module brings its tokens. Then follow the one-time setup.
Setup guideSections 8
UI components 6
App layouts 4
Effects 4
Set up Nocturne in your project
Once per project. Installing any Nocturne module copies its tokens for you — or install them alone first. New to Artmode? Start with the getting started guide.
npx shadcn@latest add https://artmode.alpvisionweb.online/r/nocturne-theme.json1. Import the tokens
app/globals.css
@import "tailwindcss"; @import "../components/modules/_core/da-theme.css"; @import "../components/modules/nocturne/tokens.css";
3. Scope the area
any page or layout
<div data-da="nocturne">
{/* Nocturne modules */}
</div>2. Load the fonts
app/layout.tsx
import { Onest, Figtree, Fragment_Mono } from "next/font/google";
const nocturneDisplay = Onest({ subsets: ["latin"], variable: "--font-nocturne-display" });
const nocturneBody = Figtree({ subsets: ["latin"], variable: "--font-nocturne-body" });
const nocturneMono = Fragment_Mono({ subsets: ["latin"], variable: "--font-nocturne-mono", weight: ["400"] });
// <html className={`${nocturneDisplay.variable} ${nocturneBody.variable} ${nocturneMono.variable}`}>