@oriui/vue
| Install | |
|---|---|
npm install @oriui/vue@rc |
|
| Latest Version: | 1.0.0-rc.23 |
| Vue: | 3 |
| License: | MIT |
| Last Updated: | Oct 11, 2026 |
| Links: | GitHub · npm |
oriUI 織り
A design system in plain CSS, with accessible Vue components built on it.
| Package | What it is |
|---|---|
@oriui/css |
Design tokens and a stylesheet per component. No JavaScript, no build step; works in any stack. |
@oriui/vue |
38 Vue 3 components that render those classes and handle keyboard, focus, ARIA and forms. |
@oriui/headless |
The components' behavior on its own, for your own markup: a framework-free core with a Vue adapter. |
- Theming is CSS. Skins, dark mode, sizes and variants are custom properties switched by a class or an attribute. No colors are computed in JavaScript, and there is no Tailwind dependency.
- State is real attributes —
disabled,aria-pressed,aria-invalid— so the CSS reads the same state with or without the Vue components. - Accessibility is tested. axe runs against every component, every color pair passes WCAG AA contrast in every skin, and keyboard behavior is exercised in real Chromium, Firefox and WebKit.
- Behavior is replaceable. Dialog, disclosure, combobox and menu run through a contract, so you can plug in another engine for one widget without changing its markup.
Install
npm install @oriui/vue # the components; @oriui/css and @oriui/headless come as peers
npm install @oriui/css # or only the CSS
Use with Vue
import '@oriui/css' // once, in your entry file
import { OriButton } from '@oriui/vue'
<OriButton label="Save" variant="soft" color="primary" size="lg" />
Use the CSS anywhere
<link rel="stylesheet" href="https://unpkg.com/@oriui/css/dist/styles.css" />
<button class="ori-button ori-button_lg ori-variant_soft ori-color_primary">Save</button>
The class model
A block class plus single-class token utilities: one class repoints one token. The block has
defaults, so a bare block is valid; add a class only to change an axis. Dynamic state is an
attribute (disabled, aria-busy), never a class.
| Axis | Class | Values |
|---|---|---|
| Color | ori-color_* |
primary · secondary · success · warning · danger · info · … |
| Variant | ori-variant_* |
solid · soft · outline · text · quiet |
| Size | ori-<name>_<size> |
xs · sm · md · lg · xl · xxl |
| Radius | ori-size-radius_* |
none · xs · sm · md · lg · xl · full |
color is the role and variant the mapping, so there is no separate background color. Theme
and skin are set on <html> (class="dark", data-ori-skin="cyber") and reskin everything through CSS
variables.
Browser support
Chrome and Edge 131+, Firefox 147+, Safari 26+, the versions with CSS anchor positioning and anchor-scope. Every change is
tested in current Chromium, Firefox and WebKit. Details:
Installation → Browser support.
Documentation
- oriui.vercel.app — a page per component with live demos, props and accessibility notes, plus guides and the headless API.
- Cheat sheet — install, the class model and every component on one page.
- For AI tools:
/llms.txt(index) and/llms-full.txt(every page in one file).
Contributing
See CONTRIBUTING.md for branches, commits and releases. The conventions are in CLAUDE.md, the reasons behind them in DECISIONS.md, and known problems in ISSUES-INNER.md.
License
MIT © Leonid
Version History
Pre-releases (22)
| Version | Released | License |
|---|---|---|
| 1.0.0-rc.23 | MIT | |
| 1.0.0-rc.22 | MIT | |
| 1.0.0-rc.21 | MIT | |
| 1.0.0-rc.20 | MIT | |
| 1.0.0-rc.19 | MIT | |
| 1.0.0-rc.18 | MIT | |
| 1.0.0-alpha.17 | MIT | |
| 1.0.0-alpha.16 | MIT | |
| 1.0.0-alpha.15 | MIT | |
| 1.0.0-alpha.14 | MIT | |
| 1.0.0-alpha.13 | MIT | |
| 1.0.0-alpha.12 | MIT | |
| 1.0.0-alpha.11 | MIT | |
| 1.0.0-alpha.10 | MIT | |
| 1.0.0-alpha.9 | MIT | |
| 1.0.0-alpha.8 | MIT | |
| 1.0.0-alpha.7 | MIT | |
| 1.0.0-alpha.6 | MIT | |
| 1.0.0-alpha.5 | MIT | |
| 1.0.0-alpha.4 | MIT | |
| 1.0.0-alpha.3 | MIT | |
| 1.0.0-alpha.2 | MIT |