Skip to content

Introduction

A framework-agnostic design system built with plain CSS for primitives and Lit Web Components for complex widgets.

@bnotk/dsx provides:

  • CSS modules — Buttons, inputs, selects, tables, form previews, status indicators, and more
  • 14 Web Components — Dialog, accordion, data table, datepicker, dropdown, and more
  • Zero framework lock-in — Works with Angular, React, Vue, Svelte, or plain HTML
  1. Platform-first — Use native HTML elements and CSS features wherever possible
  2. Minimal dependencies — Only Lit (~7KB gzipped) as a runtime dependency
  3. Selective imports — Import only what you need
  4. Chrome 138 optimized — Leverages <dialog>, appearance:base-select, Popover API, CSS nesting
Terminal window
npm install @bnotk/dsx
<!-- Import all CSS -->
<link rel="stylesheet" href="node_modules/@bnotk/dsx/css/index.css">
<!-- Or import individual modules -->
<link rel="stylesheet" href="node_modules/@bnotk/dsx/css/tokens.css">
<link rel="stylesheet" href="node_modules/@bnotk/dsx/css/buttons.css">
<!-- Use Web Components -->
<script type="module">
import '@bnotk/dsx/components/dialog.js';
import '@bnotk/dsx/components/table.js';
</script>
<dsx-dialog heading="Hello" size="md">
<p slot="body">Welcome to dsx!</p>
</dsx-dialog>
BrowserVersionStatus
Chrome138+✅ Supported
Electron37.6+✅ Supported
Others❌ Not targeted

This library uses modern CSS features (nesting, :has(), appearance:base-select, @layer) that are only guaranteed in Chrome 138+.