Skip to content

Repository files navigation

decius.css

A CSS framework for digital content creation (DCC) tools, synths, and pro desktop interfaces. Dark, dense, and token-driven — the vocabulary your power users already speak (Blender, DaVinci Resolve, Vital), distributed as plain CSS, a zero-dependency JS runtime, an icon font, and self-hosted type. One download, no dependencies.

decius is built for affineui — a zero-dependency C++ HTML/CSS renderer for native apps and games — and runs in any modern browser too.

Status: v0.4.0 "Mus" — early, but complete enough to build real tools with.


Why decius

Zero runtimeOne stylesheet with the fonts and icon font baked in. No compile step, no design-system tax.
Tokenized to the wallEvery color, size, radius, shadow and motion value is a CSS custom property. Re-theme by overriding a handful of variables — at runtime, no rebuild.
Built for prosCombo number fields, knobs, bipolar sliders, dockable panels, tree/table/list, curve & node-graph editors, menus, popovers, toasts, even skeuomorphic hardware.
Behavior, no frameworkdecius.js — a tiny vanilla runtime with a Bootstrap-style data API — drives modals, menus, popovers, tabs, toasts, and the drag controls. No React required.
ScopedEverything lives under .dcs, so the framework never leaks into the rest of your page.
225 icons as a fontA <i class="di di-cube"> glyph that inherits currentColor and font-size.

Install

From a CDN (zero build)

<!-- everything: self-hosted fonts + icon font + framework --><linkrel="stylesheet"
href="https://cdn.jsdelivr.net/npm/decius-css@0.4/dist/css/decius.bundle.min.css">

From npm

npm install decius-css
// plain CSS artifactsimport'decius-css/css/decius.bundle.min.css';// …or compile from the Sass source and theme it yourself
@use'decius-css/scss/decius';

Or download the .zip (css + js + fonts) from the docs site.

Then wrap your UI

<linkrel="stylesheet" href="…/decius.bundle.min.css"><scriptsrc="…/decius.min.js"></script><!-- optional: component behavior --><divclass="dcs" data-dcs-density="comfortable"><buttonclass="dcs-btn dcs-btn--primary"><iclass="di di-render"></i>
Render
</button></div>

JavaScript

Stateful components (modals, menus, popovers, tabs, toasts, splitter resize, and the drag controls — sliders, faders, knobs, combo fields) are driven by decius.js, a zero-dependency vanilla script with a Bootstrap-style data API. It auto-initializes on DOMContentLoaded.

Scope:decius.js covers per-component behavior. A full drag-to-dock layout manager (rearranging panes by dragging tabs into center/edge drop-zones) is application-level — it ships as a React reference component in the docs site, and on affineui the host provides docking natively. The framework gives you the CSS (.dcs-dock, .dcs-dockpane, .dcs-splitter, .dcs-menubar) and the menu/tab/splitter behaviors out of the box.

<!-- data API --><buttondata-dcs-toggle="modal" data-dcs-target="#m">Open</button><divdata-dcs-sliderdata-min="0" data-max="1" data-value="0.6"></div>
// programmatic APIdecius.toast({title: 'Saved',variant: 'ok'});decius.modal.open('#confirm');decius.init(container);// wire up dynamically-added markup

It's also an ES module: import decius from 'decius-css/js'.

Theming

decius themes at runtime through CSS custom properties and data-dcs-* attributes on any container — the attribute reshapes everything inside it:

<divclass="dcs"
data-dcs-density="compact" <!-- compact · comfortable · spacious -->data-dcs-radius="round" <!-- sharp · (default) · round -->data-dcs-accent="violet" <!-- blue · cyan · orange · violet · green -->data-dcs-dark="darker" <!-- darker · (default) · lighter -->data-dcs-style="3d"><!-- flat (default) · 3d synth bevels --></div>

Or override the tokens directly:

.dcs { --dcs-accent:#ff6b9d; --dcs-r-3:8px; }

What ships

Everything is built into dist/:

FileWhat
dist/css/decius.css / .min.cssThe framework (dark, scoped to .dcs).
dist/css/decius-web.css / .min.cssLight web/docs theme (--dw-*) for marketing pages & docs.
dist/css/decius-icons.css@font-face + .di-* classes for the icon font.
dist/css/decius-fonts.css@font-face for self-hosted IBM Plex Sans + JetBrains Mono.
dist/css/decius.bundle.css / .min.cssOne drop-in file = fonts + icons + framework.
dist/js/decius.js / .min.js / .esm.jsVanilla component runtime (IIFE global + ES module).
dist/fonts/decius-icons.woff2The 225-glyph icon web font.
dist/fonts/*.woff2Self-hosted text webfonts (latin + latin-ext).
dist/decius-css.zipEverything (css + js + fonts) in one archive.

Three layers

decius is deliberately split into three independent layers — keep them separate:

  1. CSS (scss/dist/css) — the framework itself. The source of truth; everything is styled here, scoped to .dcs.
  2. Vanilla runtime (js/dist/js/decius.js) — zero-dependency decius.js: data-attribute behaviors (modals, menus, popovers, tabs, toasts, collapse, drag controls, splitter resize). No framework required.
  3. React components (react/) — a richer reference layer (incl. the full drag-to-dock DockLayout) that wraps the same CSS. App-level concerns that don't belong in the tiny runtime; not published yet. On affineui, the host provides this natively.

Repository layout

scss/ Sass source (Bootstrap-style partials → dist/css)
core/ the framework, split by section
web/ the light docs/web theme
icons/
svg/ per-icon SOURCE svgs (the icon font is built from these)
icons.json icon catalog manifest
js/src/ vanilla component runtime (decius.js) source — LAYER 2
react/ React component layer (Icon, DockLayout, …) — LAYER 3, not published
fonts/ vendored self-hosted text webfonts + OFL licenses
examples/ standalone, framework-only usage examples (kitchen-sink.html)
scripts/ build pipeline (css, icon font, fonts, js, bundle, zip)
outline_icons.py stroke→fill outliner (Shapely) used by the icon-font build
site/ the documentation site (Vite) — docs content; imports react/ + dist/
dist/ built artifacts (committed, CDN-served)
design/ original design deliverable (provenance)

Building locally

Requires Node ≥ 18 and Python 3 with shapely + svgelements (for outlining the stroke icons into the icon font).

npm install
pip install shapely svgelements
npm run build # → dist/ (fonts, icon font, css, bundle)
npm run lint # stylelint the SCSS
npm test# build css + smoke-test the artifacts
npm run dev # run the docs site locally (needs one `npm run build` first)
npm run build:site # build framework + docs site → _site/

Browser support

Modern evergreen browsers and affineui. decius leans on CSS custom properties, flexbox, and grid; there is no legacy IE support.

Credits

  • Design system & docs site by Claude Design.
  • Bundled type: IBM Plex Sans (© IBM) and JetBrains Mono (© JetBrains) under the SIL OFL 1.1.

License

MIT for the framework and icons. Bundled webfonts are under the SIL Open Font License 1.1.

About

A CSS framework for digital content creation (DCC) tools, synths, and pro desktop interfaces. Built for affineui; runs in any browser.

Resources

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages