Get started with Monochrome Edge in minutes. Choose your preferred installation method.
The fastest way to start using Monochrome Edge is via CDN. Add a single line to your HTML and you're ready to go.
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@monochrome-edge/ui@latest/dist/monochrome.min.css">
@latest to ensure consistent styling across
deployments.
Use jsDelivr CDN for the fastest and easiest integration. No build process required.
<!DOCTYPE html>
<html lang="en" data-theme="light" data-theme-variant="warm">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My App</title>
<!-- Monochrome Edge CSS -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@monochrome-edge/ui@latest/dist/monochrome.min.css">
</head>
<body>
<button class="btn btn-primary">Click Me</button>
</body>
</html>
Replace @latest with a specific version for production
stability:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@monochrome-edge/ui@latest/dist/monochrome.min.css">
For projects with a build process, install via npm for better control and tree-shaking benefits.
Run the following command in your project directory:
npm install @monochrome-edge/ui
Import the CSS file in your main JavaScript or CSS entry point:
import '@monochrome-edge/ui/dist/monochrome.min.css';
Or in your CSS file:
@import '@monochrome-edge/ui/dist/monochrome.min.css';
You're all set! Start using Monochrome Edge classes in your HTML.
function App() {
return (
<div className="card">
<h2>Welcome</h2>
<p>Get started with Monochrome Edge</p>
<button className="btn btn-primary">Get Started</button>
</div>
);
}
Monochrome Edge is a pure CSS library. Apply classes to your HTML elements to style them.
<button class="btn btn-primary">Primary Button</button>
<button class="btn btn-secondary">Secondary Button</button>
<button class="btn btn-ghost">Ghost Button</button>
<div class="card">
<h3>Card Title</h3>
<p>Card content goes here.</p>
<button class="btn btn-primary">Action</button>
</div>
<div class="form-group">
<label class="label">Email</label>
<input type="email" class="input" placeholder="you@example.com">
</div>
Monochrome Edge includes two theme variants (Warm and Cold) and supports light/dark modes.
Control themes using HTML data attributes on the root element:
<!-- Warm theme, light mode -->
<html data-theme="light" data-theme-variant="warm">
<!-- Cold theme, dark mode -->
<html data-theme="dark" data-theme-variant="cold">
Toggle themes programmatically with JavaScript:
// Toggle light/dark mode
function toggleMode() {
const html = document.documentElement;
const currentMode = html.getAttribute('data-theme');
html.setAttribute('data-theme', currentMode === 'light' ? 'dark' : 'light');
}
// Toggle warm/cold variant
function toggleVariant() {
const html = document.documentElement;
const currentVariant = html.getAttribute('data-theme-variant');
html.setAttribute('data-theme-variant', currentVariant === 'warm' ? 'cold' : 'warm');
}
Explore all available components and their variants in the main documentation.
Add animated landscape backgrounds for visual depth:
<!-- Wave pattern -->
<div class="b-landscape b-landscape-wave"></div>
<!-- Mountain pattern -->
<div class="b-landscape b-landscape-mountain"></div>
<!-- Colored mode -->
<div class="b-landscape b-landscape-wave" data-landscape-mode="colored"></div>
b-landscape-wave - Flowing wave patternb-landscape-mountain - Mountain silhouetteb-landscape-forest - Forest treelineb-landscape-desert - Desert dunesThe same components ship as native adapters for every major framework. Each adapter wraps the canonical pure CSS/JS base, so behaviour stays identical across React, Vue, jQuery and Web Components. Pick the entry point for your stack:
import '@monochrome-edge/ui/css';
import {
ThemeProvider, Button, Modal, Input,
Accordion, Tabs, Dropdown,
SearchBar, TreeView, Stepper, TOC,
} from '@monochrome-edge/ui/react';
function App() {
const [open, setOpen] = React.useState(false);
return (
<ThemeProvider defaultTheme="warm" defaultMode="light">
<Button variant="primary" onClick={() => setOpen(true)}>Open</Button>
<Modal isOpen={open} onClose={() => setOpen(false)} title="Hi">β¦</Modal>
<TreeView data={tree} onNodeClick={(n) => console.log(n.label)} />
</ThemeProvider>
);
}
<script setup>
import '@monochrome-edge/ui/css';
import { Button, Modal, TreeView } from '@monochrome-edge/ui/vue';
import { ref } from 'vue';
const open = ref(false);
</script>
<template>
<Button variant="primary" @click="open = true">Open</Button>
<Modal :is-open="open" title="Hi" @close="open = false">β¦</Modal>
<TreeView :data="tree" @node-click="(n) => log(n.label)" />
</template>
import '@monochrome-edge/ui/css';
import '@monochrome-edge/ui/jquery';
$('#myModal').mceModal();
$('#myAccordion').mceAccordion({ allowMultiple: true });
$('#myTabs').mceTabs();
$('body').mceToast('Saved!', 'success');
<script type="module">
import '@monochrome-edge/ui/web-components';
</script>
<mce-button variant="primary">Click</mce-button>
<mce-tree-view id="tree"></mce-tree-view>
<mce-search-toolbar placeholder="Searchβ¦"></mce-search-toolbar>
<script type="module">
document.querySelector('#tree').data = treeData;
</script>
@monochrome-edge/ui (vanilla), /react,
/vue, /jquery,
/web-components, /css. All adapters expose
the full component set, including the interactive components
(Accordion, Tabs, Dropdown, SearchBar, SearchToolbar, TreeView,
Stepper, Math, GraphView, TOC).