duskmoon-dev-core
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chinese@duskmoon-dev/core Skill
@duskmoon-dev/core 使用教程
Overview
概述
@duskmoon-dev/core@duskmoon-dev/coreInstallation
安装
bash
undefinedbash
undefinedBun
Bun
bun add @duskmoon-dev/core tailwindcss@^4.0.0
bun add @duskmoon-dev/core tailwindcss@^4.0.0
npm
npm
npm install @duskmoon-dev/core tailwindcss@^4.0.0
npm install @duskmoon-dev/core tailwindcss@^4.0.0
pnpm
pnpm
pnpm add @duskmoon-dev/core tailwindcss@^4.0.0
undefinedpnpm add @duskmoon-dev/core tailwindcss@^4.0.0
undefinedSetup
配置
Option A: CSS Import (Recommended)
选项A:CSS导入(推荐)
css
@import "tailwindcss";
@import "@duskmoon-dev/core";css
@import "tailwindcss";
@import "@duskmoon-dev/core";Option B: Tailwind Plugin
选项B:Tailwind插件
css
@import "tailwindcss";
@plugin "@duskmoon-dev/core/plugin";The approach registers MD3 color tokens into Tailwind's theme, enabling utility classes like , , etc.
@pluginbg-primarytext-on-surfacecss
@import "tailwindcss";
@plugin "@duskmoon-dev/core/plugin";@pluginbg-primarytext-on-surfaceTheme Configuration
主题配置
Apply theme via attribute on HTML element:
data-themehtml
<html data-theme="sunshine"> <!-- Light theme -->
<html data-theme="moonlight"> <!-- Dark theme -->通过HTML元素上的属性应用主题:
data-themehtml
<html data-theme="sunshine"> <!-- 浅色主题 -->
<html data-theme="moonlight"> <!-- 深色主题 -->Available Components
可用组件
Actions
操作组件
- - Buttons with variants:
btn,btn-primary,btn-secondary,btn-tertiary,btn-outline,btn-ghost,btn-textbtn-loading - - Radial navigation menu:
circle-menu,circle-menu-toggler,circle-menu-list,circle-menu-item,circle-menu-label,circle-menu-primary,circle-menu-secondary,circle-menu-tertiary,circle-menu-info,circle-menu-success,circle-menu-warning,circle-menu-error,circle-menu-smcircle-menu-lg - - Drag-and-drop file uploader:
file-upload,file-upload-dropzone,file-upload-primary,file-upload-compact,file-upload-button,file-upload-sm,file-upload-lgfile-upload-ghost - - Toggle buttons and groups:
toggle-btn,toggle-btn-active,toggle-btn-primary,toggle-btn-ghost,toggle-btn-sm,toggle-btn-lg,toggle-group,toggle-segmented,toggle-chip,toggle-filledtoggle-outlined
- - 按钮,包含变体:
btn、btn-primary、btn-secondary、btn-tertiary、btn-outline、btn-ghost、btn-textbtn-loading - - 径向导航菜单:
circle-menu、circle-menu-toggler、circle-menu-list、circle-menu-item、circle-menu-label、circle-menu-primary、circle-menu-secondary、circle-menu-tertiary、circle-menu-info、circle-menu-success、circle-menu-warning、circle-menu-error、circle-menu-smcircle-menu-lg - - 拖拽式文件上传组件:
file-upload、file-upload-dropzone、file-upload-primary、file-upload-compact、file-upload-button、file-upload-sm、file-upload-lgfile-upload-ghost - - 切换按钮及按钮组:
toggle-btn、toggle-btn-active、toggle-btn-primary、toggle-btn-ghost、toggle-btn-sm、toggle-btn-lg、toggle-group、toggle-segmented、toggle-chip、toggle-filledtoggle-outlined
Data Entry
数据录入组件
- - Text inputs:
input,input-primary,input-secondaryinput-error - - Multi-line text:
textarea,textarea-primary,textarea-resize-nonetextarea-resize-vertical - - Dropdown selection:
select,select-primary,select-filledselect-outlined - - Hierarchical selection:
cascader,cascader,cascader-panelcascader-menu - - Checkboxes:
checkbox,checkbox-primary,checkbox-indeterminatecheckbox-group - - Radio buttons:
radio,radio-primary,radio-groupradio-group-horizontal - - Toggle switches:
switch,switch-primaryswitch-secondary - - Range sliders
slider - - Segmented buttons:
segment-control,segment-controlsegment-control-item - - Search with suggestions
autocomplete - - Calendar: date, datetime, date range, datetime range pickers
datepicker - - Time selection:
time-input,time-inputtime-input-picker - - Drag-and-drop file uploader
file-upload - - Star/heart ratings
rating - - OTP verification:
otp-input,otp-inputotp-input-field - - PIN entry:
pin-input,pin-inputpin-input-masked - - Multiple selection:
multi-select,multi-selectmulti-select-tag - - Hierarchical dropdown:
tree-select,tree-selecttree-select-node - - Form layout:
form-group,form-group,form-label,helper-textfieldset - - Theme switching:
theme-controller(inline switch),theme-controller,theme-controller-dropdown,theme-controller-itemtheme-controller-label
- - 文本输入框:
input、input-primary、input-secondaryinput-error - - 多行文本框:
textarea、textarea-primary、textarea-resize-nonetextarea-resize-vertical - - 下拉选择框:
select、select-primary、select-filledselect-outlined - - 级联选择器:
cascader、cascader、cascader-panelcascader-menu - - 复选框:
checkbox、checkbox-primary、checkbox-indeterminatecheckbox-group - - 单选按钮:
radio、radio-primary、radio-groupradio-group-horizontal - - 切换开关:
switch、switch-primaryswitch-secondary - - 范围滑块
slider - - 分段按钮:
segment-control、segment-controlsegment-control-item - - 带建议的搜索组件
autocomplete - - 日历组件:日期、日期时间、日期范围、日期时间范围选择器
datepicker - - 时间选择组件:
time-input、time-inputtime-input-picker - - 拖拽式文件上传组件
file-upload - - 星级/心形评分组件
rating - - OTP验证码输入框:
otp-input、otp-inputotp-input-field - - PIN码输入框:
pin-input、pin-inputpin-input-masked - - 多选组件:
multi-select、multi-selectmulti-select-tag - - 树形下拉选择器:
tree-select、tree-selecttree-select-node - - 表单布局:
form-group、form-group、form-label、helper-textfieldset - - 主题切换组件:
theme-controller(行内开关)、theme-controller、theme-controller-dropdown、theme-controller-itemtheme-controller-label
Data Display
数据展示组件
- - Content containers:
card,card-bodycard-title - - Status indicators:
badge,badge-primarybadge-dot - - User images:
avatar,avatar-lgavatar-status-online - - Tags/filters:
chip,chip-primarychip-removable - - Data tables:
table,table-hovertable-striped - - Vertical lists:
list,list-itemlist-item-interactive - - Chronological events
timeline - - Loading placeholders:
skeleton,skeleton-text,skeleton-circle,skeleton-rect,skeleton-wave,skeleton-avatar,skeleton-button,skeleton-cardskeleton-group - - Styled code containers:
code-block,code-header,code-title,code-language,code-content,code-block-compactcode-block-borderless
- - 内容容器:
card、card-bodycard-title - - 状态指示器:
badge、badge-primarybadge-dot - - 用户头像:
avatar、avatar-lgavatar-status-online - - 标签/过滤器:
chip、chip-primarychip-removable - - 数据表格:
table、table-hovertable-striped - - 垂直列表:
list、list-itemlist-item-interactive - - 时间线组件
timeline - - 加载占位符:
skeleton、skeleton-text、skeleton-circle、skeleton-rect、skeleton-wave、skeleton-avatar、skeleton-button、skeleton-cardskeleton-group - - 样式化代码容器:
code-block、code-header、code-title、code-language、code-content、code-block-compactcode-block-borderless
Feedback
反馈组件
- - Messages:
alert,alert-success,alert-error,alert-warningalert-info - - Modal dialogs:
dialog,dialog-backdropdialog-md - - Full overlays
modal - - Notifications:
toast,toast-successtoast-show - - Brief messages
snackbar - - Loading:
progress,progress-primaryprogress-indeterminate - - Placeholders:
skeleton,skeleton-textskeleton-circle - - Hover info:
tooltip,tooltip-toptooltip-bottom
- - 提示消息:
alert、alert-success、alert-error、alert-warningalert-info - - 模态对话框:
dialog、dialog-backdropdialog-md - - 全屏遮罩弹窗
modal - - 通知组件:
toast、toast-successtoast-show - - 简短提示消息
snackbar - - 进度条:
progress、progress-primaryprogress-indeterminate - - 占位符:
skeleton、skeleton-textskeleton-circle - - 悬停提示:
tooltip、tooltip-toptooltip-bottom
Navigation
导航组件
- - Breadcrumb navigation:
breadcrumbs,breadcrumb-item,breadcrumb-item-active,breadcrumb-item-disabled,breadcrumb-link,breadcrumb-separator,breadcrumb-icon,breadcrumb-home,breadcrumb-home-icon,breadcrumb-ellipsis,breadcrumbs-contained,breadcrumbs-sm,breadcrumbs-lgbreadcrumbs-nowrap - - Top navigation:
navbar,navbar-surface-container-high,navbar-start,navbar-centernavbar-end - - Tab navigation:
tabs,tab,tab-active,tabs-boxed,tabs-lifted,tab-sm,tab-lgtab-xs - - Dropdown/context menu:
menu,menu-item,menu-title,menu-horizontalmenu-vertical - - Side panels:
drawer,drawer-leftdrawer-open - - Collapsible sidebar:
nested-menu,nested-menu,nested-menu-title,nested-menu-borderednested-menu-compact - - Page navigation:
pagination,pagination-item,pagination-item-active,pagination-item-disabled,pagination-prev,pagination-next,pagination-ellipsis,pagination-compact,pagination-responsive,pagination-info,pagination-input,pagination-item-active-primary,pagination-item-active-secondarypagination-item-active-tertiary - - Mobile navigation:
bottom-navbottom-nav-item - - Multi-step:
stepper,stepper-step-activestepper-step-completed
- - 面包屑导航:
breadcrumbs、breadcrumb-item、breadcrumb-item-active、breadcrumb-item-disabled、breadcrumb-link、breadcrumb-separator、breadcrumb-icon、breadcrumb-home、breadcrumb-home-icon、breadcrumb-ellipsis、breadcrumbs-contained、breadcrumbs-sm、breadcrumbs-lgbreadcrumbs-nowrap - - 顶部导航栏:
navbar、navbar-surface-container-high、navbar-start、navbar-centernavbar-end - - 标签页导航:
tabs、tab、tab-active、tabs-boxed、tabs-lifted、tab-sm、tab-lgtab-xs - - 下拉/上下文菜单:
menu、menu-item、menu-title、menu-horizontalmenu-vertical - - 侧边面板:
drawer、drawer-leftdrawer-open - - 可折叠侧边栏:
nested-menu、nested-menu、nested-menu-title、nested-menu-borderednested-menu-compact - - 分页导航:
pagination、pagination-item、pagination-item-active、pagination-item-disabled、pagination-prev、pagination-next、pagination-ellipsis、pagination-compact、pagination-responsive、pagination-info、pagination-input、pagination-item-active-primary、pagination-item-active-secondarypagination-item-active-tertiary - - 移动端底部导航:
bottom-navbottom-nav-item - - 多步骤组件:
stepper、stepper-step-activestepper-step-completed
Layout
布局组件
- - Separators:
divider,divider-dasheddivider-vertical - - Action bars:
appbar,appbar-topappbar-bottom - - GitHub-style markdown typography: single class applied to a container, styles all child elements (headings, code, tables, blockquotes, lists)
markdown-body - - Responsive grid with auto-fill:
grid-cols-auto-fill-*,grid-cols-auto-fill-48grid-cols-auto-fill-64 - - Responsive grid with auto-fit:
grid-cols-auto-fit-*,grid-cols-auto-fit-48grid-cols-auto-fit-64
- - 分隔线:
divider、divider-dasheddivider-vertical - - 操作栏:
appbar、appbar-topappbar-bottom - - GitHub风格的Markdown排版:为容器添加单个类,即可样式化所有子元素(标题、代码、表格、引用、列表)
markdown-body - - 自动填充响应式网格:
grid-cols-auto-fill-*、grid-cols-auto-fill-48grid-cols-auto-fill-64 - - 自适应响应式网格:
grid-cols-auto-fit-*、grid-cols-auto-fit-48grid-cols-auto-fit-64
Utilities
工具类
- - Screen reader only (visually hidden but accessible)
sr-only - - Undo sr-only for focus states
not-sr-only
- - 仅屏幕阅读器可见(视觉隐藏但可访问)
sr-only - - 取消sr-only效果,适用于聚焦状态
not-sr-only
Surfaces
表层组件
- - Expandable panels:
accordionaccordion-item-open - - Mobile panels:
bottomsheetbottom-sheet-show - - Contextual overlays:
popover,popover-toppopover-show - - Collapsible content
collapse
- - 可展开面板:
accordionaccordion-item-open - - 移动端底部面板:
bottomsheetbottom-sheet-show - - 上下文浮层:
popover、popover-toppopover-show - - 可折叠内容
collapse
Usage Examples
使用示例
Buttons
按钮
html
<button class="btn btn-primary">Primary</button>
<button class="btn btn-secondary btn-outline">Outlined</button>
<button class="btn btn-tertiary btn-ghost">Ghost</button>
<button class="btn btn-primary btn-loading">Loading...</button>html
<button class="btn btn-primary">Primary</button>
<button class="btn btn-secondary btn-outline">Outlined</button>
<button class="btn btn-tertiary btn-ghost">Ghost</button>
<button class="btn btn-primary btn-loading">Loading...</button>Cards
卡片
html
<div class="card">
<div class="card-body">
<h2 class="card-title">Title</h2>
<p>Content</p>
</div>
</div>html
<div class="card">
<div class="card-body">
<h2 class="card-title">Title</h2>
<p>Content</p>
</div>
</div>Forms
表单
html
<input type="text" class="input" placeholder="Default" />
<input type="text" class="input input-primary" placeholder="Primary" />
<input type="text" class="input input-error" placeholder="Error" />html
<input type="text" class="input" placeholder="Default" />
<input type="text" class="input input-primary" placeholder="Primary" />
<input type="text" class="input input-error" placeholder="Error" />Alerts
提示框
html
<div class="alert alert-success">Success message</div>
<div class="alert alert-error">Error message</div>
<div class="alert alert-warning">Warning message</div>
<div class="alert alert-info">Info message</div>html
<div class="alert alert-success">Success message</div>
<div class="alert alert-error">Error message</div>
<div class="alert alert-warning">Warning message</div>
<div class="alert alert-info">Info message</div>Navigation
导航栏
html
<nav class="navbar navbar-surface-container-high">
<div class="navbar-start">
<a class="navbar-brand">Logo</a>
</div>
<div class="navbar-center">
<a class="navbar-item navbar-item-active">Home</a>
<a class="navbar-item">About</a>
</div>
</nav>html
<nav class="navbar navbar-surface-container-high">
<div class="navbar-start">
<a class="navbar-brand">Logo</a>
</div>
<div class="navbar-center">
<a class="navbar-item navbar-item-active">Home</a>
<a class="navbar-item">About</a>
</div>
</nav>Tabs
标签页
html
<div class="tabs">
<button class="tab tab-active">Tab 1</button>
<button class="tab">Tab 2</button>
</div>html
<div class="tabs">
<button class="tab tab-active">Tab 1</button>
<button class="tab">Tab 2</button>
</div>Dialog
对话框
html
<div class="dialog-backdrop dialog-backdrop-show">
<div class="dialog dialog-md">
<div class="dialog-header">
<h2 class="dialog-title">Title</h2>
</div>
<div class="dialog-body">Content</div>
<div class="dialog-actions">
<button class="btn btn-text">Cancel</button>
<button class="btn btn-filled">Confirm</button>
</div>
</div>
</div>html
<div class="dialog-backdrop dialog-backdrop-show">
<div class="dialog dialog-md">
<div class="dialog-header">
<h2 class="dialog-title">Title</h2>
</div>
<div class="dialog-body">Content</div>
<div class="dialog-actions">
<button class="btn btn-text">Cancel</button>
<button class="btn btn-filled">Confirm</button>
</div>
</div>
</div>Nested Menu
嵌套菜单
html
<ul class="nested-menu nested-menu-bordered">
<li class="nested-menu-title">Getting Started</li>
<li><a href="/install">Installation</a></li>
<li><a href="/config" class="active">Configuration</a></li>
<li>
<details open>
<summary>Components</summary>
<ul>
<li><a href="/button">Button</a></li>
<li><a href="/card">Card</a></li>
</ul>
</details>
</li>
</ul>html
<ul class="nested-menu nested-menu-bordered">
<li class="nested-menu-title">Getting Started</li>
<li><a href="/install">Installation</a></li>
<li><a href="/config" class="active">Configuration</a></li>
<li>
<details open>
<summary>Components</summary>
<ul>
<li><a href="/button">Button</a></li>
<li><a href="/card">Card</a></li>
</ul>
</details>
</li>
</ul>Theme Controller
主题控制器
html
<!-- Inline switch mode -->
<div class="theme-controller">
<input type="radio" name="theme" value="sunshine" class="theme-controller-item" checked />
<label class="theme-controller-label">Light</label>
<input type="radio" name="theme" value="moonlight" class="theme-controller-item" />
<label class="theme-controller-label">Dark</label>
</div>
<!-- Dropdown mode -->
<details class="theme-controller-dropdown">
<summary class="theme-controller-trigger">Theme</summary>
<div class="theme-controller-menu">
<input type="radio" name="theme" value="sunshine" class="theme-controller-item" checked />
<label class="theme-controller-label">Sunshine</label>
<input type="radio" name="theme" value="moonlight" class="theme-controller-item" />
<label class="theme-controller-label">Moonlight</label>
</div>
</details>html
<!-- 行内开关模式 -->
<div class="theme-controller">
<input type="radio" name="theme" value="sunshine" class="theme-controller-item" checked />
<label class="theme-controller-label">Light</label>
<input type="radio" name="theme" value="moonlight" class="theme-controller-item" />
<label class="theme-controller-label">Dark</label>
</div>
<!-- 下拉菜单模式 -->
<details class="theme-controller-dropdown">
<summary class="theme-controller-trigger">Theme</summary>
<div class="theme-controller-menu">
<input type="radio" name="theme" value="sunshine" class="theme-controller-item" checked />
<label class="theme-controller-label">Sunshine</label>
<input type="radio" name="theme" value="moonlight" class="theme-controller-item" />
<label class="theme-controller-label">Moonlight</label>
</div>
</details>Toggle Buttons
切换按钮
html
<!-- Single toggle -->
<button class="toggle-btn toggle-btn-active">Bold</button>
<!-- Toggle group -->
<div class="toggle-group">
<button class="toggle-btn toggle-btn-active">Left</button>
<button class="toggle-btn">Center</button>
<button class="toggle-btn">Right</button>
</div>html
<!-- 单个切换按钮 -->
<button class="toggle-btn toggle-btn-active">Bold</button>
<!-- 切换按钮组 -->
<div class="toggle-group">
<button class="toggle-btn toggle-btn-active">Left</button>
<button class="toggle-btn">Center</button>
<button class="toggle-btn">Right</button>
</div>Responsive Grid
响应式网格
html
<!-- Auto-fill: Fixed column size, empty space on right -->
<div class="grid grid-cols-auto-fill-48 gap-4">
<div class="card">Item 1</div>
<div class="card">Item 2</div>
<div class="card">Item 3</div>
</div>
<!-- Auto-fit: Columns stretch to fill container -->
<div class="grid grid-cols-auto-fit-64 gap-4">
<div class="card">Item 1</div>
<div class="card">Item 2</div>
</div>html
<!-- Auto-fill:固定列宽,右侧留空 -->
<div class="grid grid-cols-auto-fill-48 gap-4">
<div class="card">Item 1</div>
<div class="card">Item 2</div>
<div class="card">Item 3</div>
</div>
<!-- Auto-fit:列宽拉伸填充容器 -->
<div class="grid grid-cols-auto-fit-64 gap-4">
<div class="card">Item 1</div>
<div class="card">Item 2</div>
</div>Color System
色彩系统
Color Utilities
色彩工具类
html
<!-- Backgrounds -->
<div class="bg-primary">Primary</div>
<div class="bg-secondary">Secondary</div>
<div class="bg-tertiary">Tertiary</div>
<div class="bg-surface-container">Surface</div>
<!-- Text -->
<p class="text-primary">Primary</p>
<p class="text-on-surface">On surface</p>
<p class="text-on-surface-variant">Muted</p>
<!-- Semantic -->
<div class="bg-success text-success-content">Success</div>
<div class="bg-error text-error-content">Error</div>html
<!-- 背景色 -->
<div class="bg-primary">Primary</div>
<div class="bg-secondary">Secondary</div>
<div class="bg-tertiary">Tertiary</div>
<div class="bg-surface-container">Surface</div>
<!-- 文字色 -->
<p class="text-primary">Primary</p>
<p class="text-on-surface">On surface</p>
<p class="text-on-surface-variant">Muted</p>
<!-- 语义色彩 -->
<div class="bg-success text-success-content">Success</div>
<div class="bg-error text-error-content">Error</div>CSS Variables
CSS变量
css
.custom {
background-color: var(--color-primary);
color: var(--color-primary-content);
border-color: var(--color-outline);
}css
.custom {
background-color: var(--color-primary);
color: var(--color-primary-content);
border-color: var(--color-outline);
}Theme Switching
主题切换
javascript
// Switch to dark theme
document.documentElement.dataset.theme = 'moonlight';
// Switch to light theme
document.documentElement.dataset.theme = 'sunshine';javascript
// 切换到深色主题
document.documentElement.dataset.theme = 'moonlight';
// 切换到浅色主题
document.documentElement.dataset.theme = 'sunshine';Importing Component Styles
导入组件样式
Full Library Import
全库导入
Import all components and themes at once:
css
/* In your CSS file */
@import "tailwindcss";
@import "@duskmoon-dev/core";一次性导入所有组件和主题:
css
/* 在CSS文件中 */
@import "tailwindcss";
@import "@duskmoon-dev/core";Individual Component CSS Import
单个组件CSS导入
Import only the CSS you need for smaller bundle sizes:
css
/* CSS imports */
@import "@duskmoon-dev/core/components/button";
@import "@duskmoon-dev/core/components/card";
@import "@duskmoon-dev/core/components/input";
@import "@duskmoon-dev/core/components/alert";仅导入所需组件的CSS以减小包体积:
css
/* CSS导入 */
@import "@duskmoon-dev/core/components/button";
@import "@duskmoon-dev/core/components/card";
@import "@duskmoon-dev/core/components/input";
@import "@duskmoon-dev/core/components/alert";JavaScript/TypeScript Import
JavaScript/TypeScript导入
javascript
// Import component styles in JS/TS
import '@duskmoon-dev/core/components/button';
import '@duskmoon-dev/core/components/card';
import '@duskmoon-dev/core/components/input';javascript
// 在JS/TS中导入组件样式
import '@duskmoon-dev/core/components/button';
import '@duskmoon-dev/core/components/card';
import '@duskmoon-dev/core/components/input';Theme-Only Import
仅导入主题
css
/* Import specific themes */
@import "@duskmoon-dev/core/themes/sunshine";
@import "@duskmoon-dev/core/themes/moonlight";css
/* 导入指定主题 */
@import "@duskmoon-dev/core/themes/sunshine";
@import "@duskmoon-dev/core/themes/moonlight";Available Component Exports
可用组件导出
All components available for individual import:
| Import Path | Component |
|---|---|
| Accordion |
| Alert |
| App Bar |
| Autocomplete |
| Avatar |
| Badge |
| Bottom Navigation |
| Bottom Sheet |
| Button |
| Card |
| Cascader |
| Checkbox |
| Chip |
| Circle Menu |
| Code Block |
| Collapse |
| Date Picker |
| Dialog |
| Divider |
| Drawer |
| File Upload |
| Form |
| Form Group |
| Input |
| List |
| Markdown Body |
| Modal |
| Multi-Select |
| Navigation (Navbar/Tabs/Menu) |
| Nested Menu |
| OTP Input |
| PIN Input |
| Popover |
| Progress |
| Radio |
| Rating |
| Segment Control |
| Select |
| Skeleton |
| Slider |
| Snackbar |
| Stepper |
| Switch |
| Table |
| Textarea |
| Theme Controller |
| Time Input |
| Timeline |
| Toast |
| Toggle |
| Tooltip |
| Tree Select |
所有支持单独导入的组件:
| 导入路径 | 组件 |
|---|---|
| Accordion |
| Alert |
| App Bar |
| Autocomplete |
| Avatar |
| Badge |
| Bottom Navigation |
| Bottom Sheet |
| Button |
| Card |
| Cascader |
| Checkbox |
| Chip |
| Circle Menu |
| Code Block |
| Collapse |
| Date Picker |
| Dialog |
| Divider |
| Drawer |
| File Upload |
| Form |
| Form Group |
| Input |
| List |
| Markdown Body |
| Modal |
| Multi-Select |
| Navigation (Navbar/Tabs/Menu) |
| Nested Menu |
| OTP Input |
| PIN Input |
| Popover |
| Progress |
| Radio |
| Rating |
| Segment Control |
| Select |
| Skeleton |
| Slider |
| Snackbar |
| Stepper |
| Switch |
| Table |
| Textarea |
| Theme Controller |
| Time Input |
| Timeline |
| Toast |
| Toggle |
| Tooltip |
| Tree Select |
Usage in Web Components / Custom Elements
在Web Components/自定义元素中使用
Each component exports a named export containing the CSS string:
cssjavascript
// Import the css named export
import { css as buttonCSS } from '@duskmoon-dev/core/components/button';
import { css as cardCSS } from '@duskmoon-dev/core/components/card';
import { css as inputCSS } from '@duskmoon-dev/core/components/input';Example usage in a custom element:
javascript
import { css as buttonCSS } from '@duskmoon-dev/core/components/button';
// Strip @layer wrapper for Shadow DOM compatibility
const coreStyles = buttonCSS.replace(/@layer\s+components\s*\{/, '').replace(/\}\s*$/, '');
class MyButton extends HTMLElement {
constructor() {
super();
this.attachShadow({ mode: 'open' });
// Add styles to shadow DOM
const style = document.createElement('style');
style.textContent = coreStyles;
this.shadowRoot.appendChild(style);
}
}Note: The CSS is wrapped in for Tailwind CSS cascade layers. When using in Shadow DOM, strip the wrapper as shown above.
@layer components { }@layer每个组件都导出一个名为的变量,包含CSS字符串:
cssjavascript
// 导入css命名导出
import { css as buttonCSS } from '@duskmoon-dev/core/components/button';
import { css as cardCSS } from '@duskmoon-dev/core/components/card';
import { css as inputCSS } from '@duskmoon-dev/core/components/input';自定义元素使用示例:
javascript
import { css as buttonCSS } from '@duskmoon-dev/core/components/button';
// 移除@layer包装以兼容Shadow DOM
const coreStyles = buttonCSS.replace(/@layer\s+components\s*\{/, '').replace(/\}\s*$/, '');
class MyButton extends HTMLElement {
constructor() {
super();
this.attachShadow({ mode: 'open' });
// 向Shadow DOM添加样式
const style = document.createElement('style');
style.textContent = coreStyles;
this.shadowRoot.appendChild(style);
}
}注意:CSS被包裹在中,用于Tailwind CSS的层级优先级。在Shadow DOM中使用时,需按照上述示例移除包装。
@layer components { }@layer