Releases: eSolia/marquis
Release list
v0.3.4 — first automated release, smaller JSR bundle
First release after the devkit-baseline merge. No public API changes — but the JSR install is now significantly smaller and ships through automated CI for the first time.
What's new
- Smaller JSR bundle. The package now publishes only
mod.ts,index.ts,ui/**,tokens/**,utils/**,assets/*.ts,README.md, andLICENSE— instead of the entire repository. Previously every install of@esolia/marquiswas pullingassets/(raw SVGs),docs/,docs-site/, andexamples/into yournode_modules. Bundle size drops accordingly. - First automated release. This release is published via GitHub Actions (
publish.yml) with provenance via OIDC. All futurev*tag pushes will auto-publish. - Continuous security scanning now runs on every push and PR — Trivy filesystem scan, Gitleaks secret scan, Semgrep SAST, and Syft SBOM (vendored from eSolia/devkit's reusable workflow).
What this isn't
This release does not include the ui/icon-button.ts slow-types cleanup (13 symbols missing explicit type annotations). That's tracked separately and will land in a follow-up. --allow-slow-types is used in the publish workflow for now.
Install
# Deno
deno add jsr:@esolia/marquis
# Node.js / Bun
npx jsr add @esolia/marquisSee the README for usage.
v0.3.3 - toggle theme css
New Features:
- getToggleCSS(themeColor?) - CSS for server-side rendered toggles using hidden checkbox pattern
- Supports dark mode and customizable theme color
- Works with nested HTML structures via general sibling selectors
Documentation:
- New "Server-Side Rendering" section in README
- Table of all CSS functions (spinner, progress, skeleton, dropdown, toast, toggle)
Now library consumers can import getToggleCSS from Marquis instead of having the CSS inline.
Full Changelog: v0.3.2...v0.3.3
v0.3.2 Alert Alignment
Changes:
- Alert component: Changed items-start → items-center for proper vertical alignment
Full Changelog: v0.3.1...v0.3.2
v0.3.1 readme cleanup for v0.3.0 work
-
Version references updated - Changed all v0.2.1 references to v0.3.1:
- deno.json version field
- README.md installation examples (2 places)
- docs/USAGE.md favicon URL example
-
README.md updated with new components:
- Added Progress, Toggle, Skeleton, Avatar, Toast to components table
- Updated project structure to list all new component files
Full Changelog: v0.3.0...v0.3.1
v0.3.0 More Compos and Colors
Highlights
This release brings comprehensive theming capabilities, dark mode support across all components, and 5 powerful new
UI components.
Theme System
- 13 Primary Colors: blue, violet, indigo, teal, cyan, emerald, rose, amber, orange, sky, purple, fuchsia, pink
- Brand Customization: All components accept themeColor prop to match your brand
- Dark Mode: Universal darkMode prop (default: true) with automatic light/dark class generation
New Components
| Component | Description |
|---|---|
| Progress | Linear & circular progress bars with indeterminate, striped, and animated variants |
| Toggle | Switch component with labels, descriptions, and hidden form input support |
| Skeleton | Loading placeholders for text, cards, avatars, and tables |
| Avatar | User avatars with images, initials fallback, status indicators, and stacked groups |
| Toast | Non-intrusive notifications with 6 positions, auto-dismiss, and action buttons |
Enhanced Components
- Button: Added loading state, xs/xl sizes, createIconOnlyButton()
- Badge: New styles (subtle/solid/outline), removable, dot status indicators
- Card: hoverable, interactive props, card sections (header/body/footer)
- Alert: Full dark mode support with proper contrast
- Tabs: Theme color support for underline, pills, and button variants
- Spinner: Semantic variants (success/warning/error), theme color support
Documentation
- Added CLAUDE-GUIDE.md for AI-assisted development integration
Full Changelog: v0.2.1...v0.3.0
v0.2.1 - spinner rotation fix
Bug Fix
- Spinner rotation now centered — Added transform-origin: center center and display: inline-block to all spinner animation
classes to prevent off-center "spirograph" rotation when the icon element has irregular dimensions or positioning.
Installation
// deno.json
{
"imports": {
"@esolia/marquis": "https://raw.githubusercontent.com/esolia/marquis/v0.2.1/mod.ts"
}
}
Full Changelog: v0.2.0...v0.2.1
v0.2.0 - 5 new ui essentials: Alert, Dropdown, Header, Code, Spinner
New Components
| Component | Description |
|---|---|
| Dropdown | CSS-only dropdown menus that work with hover and focus-within — no JavaScript required for basic functionality |
| Alert | Contextual feedback messages with info, success, warning, and error variants. Includes convenience functions like createSuccessAlert() |
| Header | Complete application header with logo, navigation links, language switcher, and user dropdown menu |
| Code | Inline code styling, code blocks, and keyboard shortcut ( <kbd> ) elements |
| Spinner | Loading indicators with 5 sizes (xs to xl), 5 color variants, and 3 speed options |
Bug Fixes
- cn() utility no longer incorrectly merges font-mono and font-semibold as conflicting
- cn() utility no longer incorrectly merges text-white and text-sm as conflicting
- Stat card values now correctly use font-mono and text-3xl for better number display
- Ring color tokens now include ring width base class
- Border color tokens now include border base class
Documentation
- Added kitchen sink example page (examples/kitchen-sink.html)
- Added comprehensive usage examples for all new components
- Regenerated API documentation
Installation
// deno.json
{
"imports": {
"@esolia/marquis": "https://raw.githubusercontent.com/esolia/marquis/v0.2.0/mod.ts"
}
}
Full Changelog: v0.1.5...v0.2.0
v0.1.5 Kitchen Sink Sample Page
Added examples/kitchen-sink.html - a static page you can open directly in a browser to see all components:
- Buttons - primary, secondary, ghost, outline, danger, success × sm/md/lg sizes + disabled state
- Badges - default, success, warning, error, info, draft × sm/md/lg sizes
- Cards - default, elevated, outline, ghost variants
- Stat Cards - default, success (healthy), warning, error (critical) with font-mono numbers
- Icon Buttons - default, info, warning, danger, success + action group example
- Tabs - underline and pills styles with count badges
- Table - with hoverable rows, badges, and icon button actions
- Filter Bar - with and without background styling
- Color Tokens - status colors and slate palette swatches
Full Changelog: v0.1.4...v0.1.5
v0.1.4
Marquis v0.1.4 Summary
Fix: cn() was stripping font-mono because it conflicted with font-semibold.
The font-mono class was already in getStatCardValueClasses() since v0.1.2, but cn() was treating all font-* classes as one group.
Now:
- Font family: font-sans, font-serif, font-mono (conflict with each other)
- Font weight: font-semibold, font-bold, etc. (conflict with each other)
font-mono font-semibold now both survive.
Full Changelog: v0.1.3...v0.1.4
v0.1.3 fix cn() conflict
Fix: cn() utility conflict resolution (utils/cn.ts)
Problem: cn('text-white', 'text-sm') was returning only text-sm because both were grouped under text- conflicts.
Solution: Split the overly broad patterns into specific groups:
- Text colors: text-white, text-slate-700, etc.
- Text sizes: text-sm, text-lg, text-2xl, etc.
- Border colors vs border width (same fix)
- Ring colors vs ring width (same fix)
Now cn('bg-blue-600 text-white', 'text-sm') correctly returns bg-blue-600 text-white text-sm.
Full Changelog: v0.1.2...v0.1.3