A modern UI library built with vanilla web components, TypeScript, and Vite.
npm install wc-npm-starter
import "wc-npm-starter"
<script src="https://unpkg.com/wc-npm-starter/dist/wc-ui-library.umd.js"></script>
The ds-button
component provides a flexible button with multiple variants and configurations.
<ds-button>Click me</ds-button>
<ds-button variant="default">Default</ds-button>
<ds-button variant="secondary">Secondary</ds-button>
<ds-button variant="destructive">Destructive</ds-button>
<ds-button variant="outline">Outline</ds-button>
<ds-button variant="ghost">Ghost</ds-button>
<ds-button variant="link">Link</ds-button>
<ds-button size="small">Small</ds-button>
<ds-button size="medium">Medium</ds-button>
<ds-button size="large">Large</ds-button>
<ds-button disabled>Disabled</ds-button> <ds-button loading>Loading</ds-button>
<ds-button linkable href="https://example.com" new-tab>
External Link
</ds-button>
<ds-button icon-only size="small">
<svg>...</svg>
</ds-button>
npm install
npm run dev
npm run build
npm run storybook
Prop | Type | Default | Description |
---|---|---|---|
variant |
'default' | 'secondary' | 'destructive' | 'outline' | 'ghost' | 'link' |
'default' |
Button style variant |
size |
'small' | 'medium' | 'large' |
'medium' |
Button size |
disabled |
boolean |
false |
Disable the button |
loading |
boolean |
false |
Show loading state |
linkable |
boolean |
false |
Render as anchor tag |
href |
string |
'#' |
URL for linkable buttons |
new-tab |
boolean |
false |
Open link in new tab |
icon-only |
boolean |
false |
Button with icon only |
type |
'button' | 'submit' | 'reset' |
'button' |
Button type |
auto-focus |
boolean |
false |
Auto focus on mount |
The library includes full TypeScript support with type definitions:
import { DsButton, ButtonProps } from "wc-npm-starter"
// TypeScript will provide full intellisense
const button = document.createElement("ds-button") as DsButton
- Chrome 67+
- Firefox 63+
- Safari 11.1+
- Edge 79+
MIT