├── .npmrc ├── packages ├── veno-ui │ ├── README.md │ ├── src │ │ ├── components │ │ │ ├── divider │ │ │ │ ├── styles │ │ │ │ │ └── _variables.scss │ │ │ │ ├── index.ts │ │ │ │ └── docs │ │ │ │ │ ├── vertical.md │ │ │ │ │ ├── basic.md │ │ │ │ │ ├── dashed.md │ │ │ │ │ ├── README.md │ │ │ │ │ └── default-slot.md │ │ │ ├── transition │ │ │ │ ├── styles │ │ │ │ │ ├── _variables.scss │ │ │ │ │ ├── expand-transition.scss │ │ │ │ │ ├── fade-transition.scss │ │ │ │ │ ├── fade-in-expand-transition.scss │ │ │ │ │ ├── menu-transition.scss │ │ │ │ │ ├── scale-transition.scss │ │ │ │ │ └── slide-right-fade-in-expand-transition.scss │ │ │ │ ├── fade-transition.ts │ │ │ │ ├── menu-transition.ts │ │ │ │ ├── scale-transition.ts │ │ │ │ ├── docs │ │ │ │ │ └── README.md │ │ │ │ ├── fade-in-expand-transition.ts │ │ │ │ ├── index.ts │ │ │ │ ├── slide-right-fade-in-expand-transition.ts │ │ │ │ └── expand-transition.ts │ │ │ ├── typography │ │ │ │ ├── styles │ │ │ │ │ ├── _variables.scss │ │ │ │ │ └── p.scss │ │ │ │ ├── index.ts │ │ │ │ ├── p.ts │ │ │ │ ├── headers.ts │ │ │ │ └── docs │ │ │ │ │ └── README.md │ │ │ ├── app │ │ │ │ ├── index.ts │ │ │ │ └── styles │ │ │ │ │ ├── app.scss │ │ │ │ │ └── _variables.scss │ │ │ ├── tag │ │ │ │ ├── index.ts │ │ │ │ └── docs │ │ │ │ │ ├── basic.md │ │ │ │ │ ├── loading.md │ │ │ │ │ ├── clickable.md │ │ │ │ │ ├── closable.md │ │ │ │ │ ├── README.md │ │ │ │ │ ├── variant.md │ │ │ │ │ ├── size.md │ │ │ │ │ ├── shape.md │ │ │ │ │ └── group.md │ │ │ ├── alert │ │ │ │ ├── index.ts │ │ │ │ ├── styles │ │ │ │ │ └── _variables.scss │ │ │ │ └── docs │ │ │ │ │ ├── loading.md │ │ │ │ │ ├── close-text.md │ │ │ │ │ ├── basic.md │ │ │ │ │ ├── icon.md │ │ │ │ │ ├── closable.md │ │ │ │ │ ├── append.md │ │ │ │ │ ├── shape.md │ │ │ │ │ ├── README.md │ │ │ │ │ ├── type.md │ │ │ │ │ └── density.md │ │ │ ├── badge │ │ │ │ ├── index.ts │ │ │ │ └── docs │ │ │ │ │ ├── hover.md │ │ │ │ │ ├── dot.md │ │ │ │ │ ├── inline.md │ │ │ │ │ ├── content.md │ │ │ │ │ ├── README.md │ │ │ │ │ ├── max.md │ │ │ │ │ ├── location.md │ │ │ │ │ ├── basic.md │ │ │ │ │ └── color.md │ │ │ ├── code │ │ │ │ ├── index.ts │ │ │ │ ├── styles │ │ │ │ │ └── _variables.scss │ │ │ │ └── docs │ │ │ │ │ ├── inline.md │ │ │ │ │ ├── basic.md │ │ │ │ │ ├── show-language.md │ │ │ │ │ ├── show-line-numbers.md │ │ │ │ │ ├── highlighted-line-numbers.md │ │ │ │ │ └── color.md │ │ │ ├── hover │ │ │ │ ├── index.ts │ │ │ │ └── docs │ │ │ │ │ ├── README.md │ │ │ │ │ └── basic.md │ │ │ ├── image │ │ │ │ ├── index.ts │ │ │ │ └── docs │ │ │ │ │ ├── basic.md │ │ │ │ │ ├── aspect-ratio.md │ │ │ │ │ ├── README.md │ │ │ │ │ ├── fill.md │ │ │ │ │ └── loading.md │ │ │ ├── input │ │ │ │ ├── index.ts │ │ │ │ ├── styles │ │ │ │ │ └── _variables.scss │ │ │ │ └── docs │ │ │ │ │ ├── width.md │ │ │ │ │ ├── height.md │ │ │ │ │ ├── README.md │ │ │ │ │ ├── basic.md │ │ │ │ │ ├── auto-resize.md │ │ │ │ │ └── slots.md │ │ │ ├── label │ │ │ │ ├── index.ts │ │ │ │ └── styles │ │ │ │ │ └── label.scss │ │ │ ├── lazy │ │ │ │ ├── index.ts │ │ │ │ └── docs │ │ │ │ │ ├── README.md │ │ │ │ │ └── basic.md │ │ │ ├── link │ │ │ │ ├── index.ts │ │ │ │ ├── docs │ │ │ │ │ ├── underline.md │ │ │ │ │ ├── README.md │ │ │ │ │ ├── icon.md │ │ │ │ │ └── basic.md │ │ │ │ └── styles │ │ │ │ │ └── link.scss │ │ │ ├── main │ │ │ │ ├── index.ts │ │ │ │ └── styles │ │ │ │ │ ├── _variables.scss │ │ │ │ │ └── main.scss │ │ │ ├── menu │ │ │ │ ├── index.ts │ │ │ │ └── docs │ │ │ │ │ ├── README.md │ │ │ │ │ ├── basic.md │ │ │ │ │ ├── nested.md │ │ │ │ │ └── open-on-hover.md │ │ │ ├── paper │ │ │ │ ├── index.ts │ │ │ │ ├── styles │ │ │ │ │ └── paper.scss │ │ │ │ └── docs │ │ │ │ │ ├── position.md │ │ │ │ │ ├── shape.md │ │ │ │ │ ├── README.md │ │ │ │ │ ├── dimension.md │ │ │ │ │ ├── elevation.md │ │ │ │ │ ├── basic.md │ │ │ │ │ ├── size.md │ │ │ │ │ └── color.md │ │ │ ├── radio │ │ │ │ ├── index.tsx │ │ │ │ └── docs │ │ │ │ │ ├── basic.md │ │ │ │ │ ├── README.md │ │ │ │ │ ├── group.md │ │ │ │ │ └── items.md │ │ │ ├── scrim │ │ │ │ ├── index.ts │ │ │ │ └── styles │ │ │ │ │ └── scrim.scss │ │ │ ├── table │ │ │ │ ├── index.tsx │ │ │ │ ├── docs │ │ │ │ │ ├── README.md │ │ │ │ │ └── hide-pagination.md │ │ │ │ └── styles │ │ │ │ │ └── table-no-data.scss │ │ │ ├── avatar │ │ │ │ ├── index.ts │ │ │ │ ├── docs │ │ │ │ │ ├── slot.md │ │ │ │ │ ├── border.md │ │ │ │ │ ├── color.md │ │ │ │ │ ├── README.md │ │ │ │ │ ├── fit-size.md │ │ │ │ │ ├── icon.md │ │ │ │ │ ├── shape.md │ │ │ │ │ ├── basic.md │ │ │ │ │ └── size.md │ │ │ │ └── styles │ │ │ │ │ └── _variables.scss │ │ │ ├── button │ │ │ │ ├── index.ts │ │ │ │ └── docs │ │ │ │ │ ├── text.md │ │ │ │ │ ├── plain.md │ │ │ │ │ ├── block.md │ │ │ │ │ ├── contained.md │ │ │ │ │ ├── contained-text.md │ │ │ │ │ ├── color.md │ │ │ │ │ ├── shape.md │ │ │ │ │ ├── outlined.md │ │ │ │ │ ├── size.md │ │ │ │ │ ├── group.md │ │ │ │ │ ├── basic.md │ │ │ │ │ ├── contained-outlined.md │ │ │ │ │ └── README.md │ │ │ ├── counter │ │ │ │ ├── index.ts │ │ │ │ └── styles │ │ │ │ │ └── counter.scss │ │ │ ├── dialog │ │ │ │ ├── index.ts │ │ │ │ └── docs │ │ │ │ │ ├── README.md │ │ │ │ │ ├── persistent.md │ │ │ │ │ ├── basic.md │ │ │ │ │ ├── nested.md │ │ │ │ │ └── menu-dialog.md │ │ │ ├── drawer │ │ │ │ ├── index.ts │ │ │ │ └── docs │ │ │ │ │ ├── README.md │ │ │ │ │ └── temporary.md │ │ │ ├── overlay │ │ │ │ ├── index.ts │ │ │ │ └── docs │ │ │ │ │ ├── README.md │ │ │ │ │ ├── basic.md │ │ │ │ │ └── contained.md │ │ │ ├── select │ │ │ │ ├── index.ts │ │ │ │ └── docs │ │ │ │ │ ├── slots-no-data.md │ │ │ │ │ ├── max-height.md │ │ │ │ │ └── README.md │ │ │ ├── spacer │ │ │ │ ├── index.ts │ │ │ │ ├── styles │ │ │ │ │ └── spacer.scss │ │ │ │ └── docs │ │ │ │ │ ├── README.md │ │ │ │ │ ├── basic.md │ │ │ │ │ └── gutter.md │ │ │ ├── switch │ │ │ │ ├── index.ts │ │ │ │ └── docs │ │ │ │ │ ├── README.md │ │ │ │ │ └── basic.md │ │ │ ├── tooltip │ │ │ │ ├── index.ts │ │ │ │ └── docs │ │ │ │ │ ├── arrow.md │ │ │ │ │ ├── README.md │ │ │ │ │ ├── basic.md │ │ │ │ │ └── transition.md │ │ │ ├── checkbox │ │ │ │ ├── index.tsx │ │ │ │ └── docs │ │ │ │ │ ├── basic.md │ │ │ │ │ ├── README.md │ │ │ │ │ ├── group.md │ │ │ │ │ └── items.md │ │ │ ├── messages │ │ │ │ ├── index.tsx │ │ │ │ └── styles │ │ │ │ │ └── messages.scss │ │ │ ├── tag-group │ │ │ │ ├── index.ts │ │ │ │ └── styles │ │ │ │ │ └── tag-group.scss │ │ │ ├── textarea │ │ │ │ ├── index.ts │ │ │ │ └── textarea.tsx │ │ │ ├── pagination │ │ │ │ ├── index.ts │ │ │ │ ├── docs │ │ │ │ │ ├── basic.md │ │ │ │ │ ├── show-first-last-page.md │ │ │ │ │ ├── total-visible.md │ │ │ │ │ ├── README.md │ │ │ │ │ ├── show-per-page-select.md │ │ │ │ │ └── show-quick-jumper.md │ │ │ │ └── styles │ │ │ │ │ └── pagination.scss │ │ │ ├── responsive │ │ │ │ ├── index.ts │ │ │ │ ├── docs │ │ │ │ │ ├── basic.md │ │ │ │ │ └── README.md │ │ │ │ └── styles │ │ │ │ │ └── responsive.scss │ │ │ ├── scrollbar │ │ │ │ ├── index.ts │ │ │ │ ├── docs │ │ │ │ │ ├── basic.md │ │ │ │ │ ├── scroll-x.md │ │ │ │ │ └── README.md │ │ │ │ └── styles │ │ │ │ │ └── scrollbar.scss │ │ │ ├── timescale │ │ │ │ ├── index.ts │ │ │ │ ├── styles │ │ │ │ │ └── timescale.scss │ │ │ │ └── docs │ │ │ │ │ ├── README.md │ │ │ │ │ └── basic.md │ │ │ ├── breadcrumb │ │ │ │ ├── styles │ │ │ │ │ └── _variables.scss │ │ │ │ ├── index.ts │ │ │ │ └── docs │ │ │ │ │ ├── basic.md │ │ │ │ │ ├── icon.md │ │ │ │ │ ├── route.md │ │ │ │ │ ├── README.md │ │ │ │ │ └── separator.md │ │ │ ├── button-group │ │ │ │ └── index.ts │ │ │ ├── form-control │ │ │ │ ├── index.ts │ │ │ │ └── styles │ │ │ │ │ └── _variables.scss │ │ │ ├── radio-group │ │ │ │ └── index.tsx │ │ │ ├── button-toggle │ │ │ │ ├── index.ts │ │ │ │ └── styles │ │ │ │ │ └── button-group.scss │ │ │ ├── input-control │ │ │ │ └── index.tsx │ │ │ ├── theme-provider │ │ │ │ ├── index.ts │ │ │ │ └── styles │ │ │ │ │ └── theme-provider.scss │ │ │ ├── transformable │ │ │ │ ├── index.ts │ │ │ │ ├── docs │ │ │ │ │ ├── README.md │ │ │ │ │ └── basic.md │ │ │ │ └── styles │ │ │ │ │ └── transformable.scss │ │ │ ├── checkbox-group │ │ │ │ └── index.tsx │ │ │ ├── tabs │ │ │ │ ├── index.ts │ │ │ │ ├── docs │ │ │ │ │ ├── basic.md │ │ │ │ │ └── README.md │ │ │ │ ├── key.ts │ │ │ │ └── styles │ │ │ │ │ └── tab.scss │ │ │ ├── card │ │ │ │ ├── styles │ │ │ │ │ ├── card-header-text.scss │ │ │ │ │ ├── card-image.scss │ │ │ │ │ ├── _variables.scss │ │ │ │ │ ├── card-avatar.scss │ │ │ │ │ ├── card-actions.scss │ │ │ │ │ └── card-header.scss │ │ │ │ ├── docs │ │ │ │ │ ├── click.md │ │ │ │ │ ├── personal-card-concise.md │ │ │ │ │ ├── basic.md │ │ │ │ │ ├── shape.md │ │ │ │ │ ├── density.md │ │ │ │ │ ├── README.md │ │ │ │ │ └── slot.md │ │ │ │ ├── card-text.ts │ │ │ │ ├── card-avatar.ts │ │ │ │ ├── card-header.ts │ │ │ │ ├── card-image.ts │ │ │ │ ├── card-title.ts │ │ │ │ ├── card-actions.ts │ │ │ │ ├── card-subtitle.ts │ │ │ │ ├── card-header-text.ts │ │ │ │ └── index.ts │ │ │ ├── defaults-provider │ │ │ │ └── index.ts │ │ │ ├── message-provider │ │ │ │ ├── index.ts │ │ │ │ ├── styles │ │ │ │ │ └── message-provider.scss │ │ │ │ └── docs │ │ │ │ │ ├── closable.md │ │ │ │ │ └── variant.md │ │ │ ├── selection-control │ │ │ │ ├── index.tsx │ │ │ │ └── styles │ │ │ │ │ └── _variables.scss │ │ │ ├── draggable-sortable │ │ │ │ ├── index.ts │ │ │ │ ├── docs │ │ │ │ │ └── README.md │ │ │ │ └── styles │ │ │ │ │ └── draggable-sortable.scss │ │ │ ├── icon │ │ │ │ ├── styles │ │ │ │ │ └── _variables.scss │ │ │ │ ├── index.ts │ │ │ │ ├── icon-class.tsx │ │ │ │ ├── icon-ligature.tsx │ │ │ │ ├── docs │ │ │ │ │ ├── custom-preset.md │ │ │ │ │ ├── preset.md │ │ │ │ │ └── README.md │ │ │ │ └── icon-component.tsx │ │ │ ├── anchor │ │ │ │ ├── index.ts │ │ │ │ ├── styles │ │ │ │ │ ├── anchor.scss │ │ │ │ │ └── anchor-item.scss │ │ │ │ └── docs │ │ │ │ │ ├── items.md │ │ │ │ │ ├── README.md │ │ │ │ │ ├── basic.md │ │ │ │ │ └── slots.md │ │ │ ├── form │ │ │ │ ├── index.ts │ │ │ │ ├── docs │ │ │ │ │ ├── inline.md │ │ │ │ │ └── README.md │ │ │ │ └── styles │ │ │ │ │ └── form.scss │ │ │ ├── layout │ │ │ │ ├── index.ts │ │ │ │ ├── styles │ │ │ │ │ ├── layout.scss │ │ │ │ │ └── layout-item.scss │ │ │ │ └── docs │ │ │ │ │ ├── README.md │ │ │ │ │ └── app-layout.md │ │ │ ├── notification-provider │ │ │ │ ├── index.ts │ │ │ │ └── styles │ │ │ │ │ └── notification-provider.scss │ │ │ ├── selection-group-control │ │ │ │ ├── index.tsx │ │ │ │ └── styles │ │ │ │ │ └── selection-group-control.scss │ │ │ ├── carousel │ │ │ │ ├── index.ts │ │ │ │ ├── docs │ │ │ │ │ ├── README.md │ │ │ │ │ ├── autoplay.md │ │ │ │ │ └── basic.md │ │ │ │ ├── styles │ │ │ │ │ ├── carousel-activator.scss │ │ │ │ │ └── carousel.scss │ │ │ │ └── carousel-activator.tsx │ │ │ ├── device │ │ │ │ ├── index.ts │ │ │ │ └── docs │ │ │ │ │ ├── basic.md │ │ │ │ │ ├── status-bar.md │ │ │ │ │ └── README.md │ │ │ ├── grid │ │ │ │ ├── index.ts │ │ │ │ ├── docs │ │ │ │ │ ├── README.md │ │ │ │ │ └── basic.md │ │ │ │ └── styles │ │ │ │ │ └── container.scss │ │ │ ├── date-picker │ │ │ │ ├── styles │ │ │ │ │ ├── date-range-picker-panel.scss │ │ │ │ │ └── date-picker.scss │ │ │ │ ├── docs │ │ │ │ │ ├── basic.md │ │ │ │ │ ├── panel.md │ │ │ │ │ ├── README.md │ │ │ │ │ ├── range.md │ │ │ │ │ └── range-custom-format.md │ │ │ │ ├── index.ts │ │ │ │ └── key.ts │ │ │ ├── slide-group │ │ │ │ ├── index.ts │ │ │ │ └── slide-group-item.tsx │ │ │ ├── progress │ │ │ │ ├── docs │ │ │ │ │ ├── color.md │ │ │ │ │ ├── indeterminate.md │ │ │ │ │ ├── README.md │ │ │ │ │ └── method.md │ │ │ │ ├── index.ts │ │ │ │ └── styles │ │ │ │ │ └── _variables.scss │ │ │ ├── header │ │ │ │ ├── index.ts │ │ │ │ ├── styles │ │ │ │ │ ├── header.scss │ │ │ │ │ └── header-title.scss │ │ │ │ └── header-nav-icon.tsx │ │ │ ├── list │ │ │ │ ├── styles │ │ │ │ │ ├── list-item-header.scss │ │ │ │ │ ├── list-item-subtitle.scss │ │ │ │ │ ├── list-group.scss │ │ │ │ │ └── list-item-title.scss │ │ │ │ ├── list-item-title.ts │ │ │ │ ├── list-item-header.ts │ │ │ │ ├── list-item-subtitle.ts │ │ │ │ ├── index.ts │ │ │ │ └── docs │ │ │ │ │ ├── basic.md │ │ │ │ │ ├── icon.md │ │ │ │ │ └── README.md │ │ │ └── toolbar │ │ │ │ ├── index.ts │ │ │ │ └── styles │ │ │ │ └── toolbar-title.scss │ │ ├── composables │ │ │ ├── paper │ │ │ │ └── styles │ │ │ │ │ ├── _variables.scss │ │ │ │ │ └── _tools.scss │ │ │ ├── icons │ │ │ │ └── index.ts │ │ │ ├── icon │ │ │ │ └── index.ts │ │ │ ├── position-strategy │ │ │ │ └── static.ts │ │ │ ├── nested │ │ │ │ ├── active-strategies │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── activeStrategy.ts │ │ │ │ │ └── classicActiveStrategy.ts │ │ │ │ ├── open-strategies │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── openStrategy.ts │ │ │ │ │ ├── multipleOpenStrategy.ts │ │ │ │ │ └── singleOpenStrategy.ts │ │ │ │ └── select-strategies │ │ │ │ │ └── index.ts │ │ │ ├── layout │ │ │ │ ├── layout-main.ts │ │ │ │ ├── index.ts │ │ │ │ └── styles │ │ │ │ │ └── _tools.scss │ │ │ ├── date │ │ │ │ └── index.ts │ │ │ ├── elevation │ │ │ │ └── styles │ │ │ │ │ ├── _variables.scss │ │ │ │ │ └── _tools.scss │ │ │ ├── scrollbar │ │ │ │ └── styles │ │ │ │ │ ├── _variables.scss │ │ │ │ │ └── _tools.scss │ │ │ ├── _settings.scss │ │ │ ├── position │ │ │ │ └── styles │ │ │ │ │ ├── _variables.scss │ │ │ │ │ └── _tools.scss │ │ │ ├── shape │ │ │ │ └── styles │ │ │ │ │ ├── _tools.scss │ │ │ │ │ └── _variables.scss │ │ │ ├── _tools.scss │ │ │ ├── size │ │ │ │ └── styles │ │ │ │ │ ├── _variables.scss │ │ │ │ │ └── _tools.scss │ │ │ ├── scroll-strategy │ │ │ │ ├── close.ts │ │ │ │ └── util.ts │ │ │ ├── density │ │ │ │ └── styles │ │ │ │ │ └── _variables.scss │ │ │ ├── tag │ │ │ │ └── index.ts │ │ │ ├── refs │ │ │ │ └── index.ts │ │ │ ├── border │ │ │ │ └── styles │ │ │ │ │ └── _variables.scss │ │ │ ├── loading │ │ │ │ └── index.ts │ │ │ ├── theme │ │ │ │ └── colors.ts │ │ │ ├── index.ts │ │ │ ├── variant │ │ │ │ └── styles │ │ │ │ │ └── _variables.scss │ │ │ └── disabled │ │ │ │ └── index.ts │ │ ├── utils │ │ │ ├── globals.ts │ │ │ ├── symbol.ts │ │ │ └── index.ts │ │ ├── styles │ │ │ ├── settings │ │ │ │ ├── _disabled.scss │ │ │ │ ├── _states.scss │ │ │ │ ├── _index.scss │ │ │ │ ├── _variables.scss │ │ │ │ ├── _transition.scss │ │ │ │ └── _rounded.scss │ │ │ └── tools │ │ │ │ ├── _absolute.scss │ │ │ │ ├── _rtl.scss │ │ │ │ ├── _elevation.scss │ │ │ │ ├── _index.scss │ │ │ │ ├── _typography.scss │ │ │ │ ├── _media.scss │ │ │ │ ├── _overlay.scss │ │ │ │ ├── _transition.scss │ │ │ │ └── _scrollbar.scss │ │ ├── providers │ │ │ └── index.ts │ │ ├── directives │ │ │ ├── index.ts │ │ │ └── ripple │ │ │ │ └── styles │ │ │ │ └── _variables.scss │ │ └── entry-bundler.ts │ ├── tsconfig.json │ ├── lib.tsconfig.json │ ├── lib.build.js │ ├── lib.fix.ts │ └── rollup.config.js ├── docs │ ├── public │ │ ├── robots.txt │ │ ├── favicon.ico │ │ ├── pwa-192x192.png │ │ ├── pwa-512x512.png │ │ └── apple-touch-icon.png │ ├── src │ │ ├── utils │ │ │ └── index.ts │ │ ├── plugins │ │ │ ├── pinia.ts │ │ │ └── pwa.ts │ │ ├── types.ts │ │ ├── data │ │ │ └── metadata.json │ │ ├── stores │ │ │ ├── user.ts │ │ │ └── app.ts │ │ ├── pages │ │ │ └── zh │ │ │ │ └── dark.md │ │ ├── layouts │ │ │ └── default.vue │ │ └── main.ts │ ├── .env │ ├── tsconfig.json │ └── index.html ├── markdown │ ├── src │ │ ├── utils │ │ │ └── index.ts │ │ ├── plugins │ │ │ ├── hr.ts │ │ │ ├── index.ts │ │ │ ├── code.ts │ │ │ ├── table.ts │ │ │ ├── paragraph.ts │ │ │ └── hoist.ts │ │ └── shims.d.ts │ └── rollup.config.js ├── api-generator │ ├── src │ │ ├── app-instance.ts │ │ ├── index.ts │ │ └── types.ts │ └── rollup.config.js ├── utils │ ├── src │ │ ├── html.ts │ │ ├── is-fixed-position.ts │ │ ├── easing.ts │ │ ├── use-render.ts │ │ ├── ref.ts │ │ ├── box.ts │ │ └── request-new-frame.ts │ └── rollup.config.js └── vite-plugin-markdown │ ├── rollup.config.js │ ├── src │ └── options.ts │ └── README.md ├── .eslintignore ├── .eslintrc.json ├── pnpm-workspace.yaml ├── vercel.json ├── .editorconfig ├── .gitignore ├── .github └── ISSUE_TEMPLATE │ └── bug_report.md └── tsconfig.json /.npmrc: -------------------------------------------------------------------------------- 1 | shamefully-hoist=true -------------------------------------------------------------------------------- /packages/veno-ui/README.md: -------------------------------------------------------------------------------- 1 | # veno-ui -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | lib 3 | dist 4 | -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@qq15725" 3 | } 4 | -------------------------------------------------------------------------------- /packages/docs/public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Allow: / -------------------------------------------------------------------------------- /pnpm-workspace.yaml: -------------------------------------------------------------------------------- 1 | packages: 2 | - 'packages/**' 3 | -------------------------------------------------------------------------------- /packages/docs/src/utils/index.ts: -------------------------------------------------------------------------------- 1 | export * from './metadata' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/divider/styles/_variables.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/veno-ui/src/composables/paper/styles/_variables.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/transition/styles/_variables.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/typography/styles/_variables.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/app/index.ts: -------------------------------------------------------------------------------- 1 | export { App } from './app' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/tag/index.ts: -------------------------------------------------------------------------------- 1 | export { Tag } from './tag' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/alert/index.ts: -------------------------------------------------------------------------------- 1 | export { Alert } from './alert' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/badge/index.ts: -------------------------------------------------------------------------------- 1 | export { Badge } from './badge' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/code/index.ts: -------------------------------------------------------------------------------- 1 | export { Code } from './code' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/hover/index.ts: -------------------------------------------------------------------------------- 1 | export { Hover } from './hover' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/image/index.ts: -------------------------------------------------------------------------------- 1 | export { Image } from './image' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/input/index.ts: -------------------------------------------------------------------------------- 1 | export { Input } from './input' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/label/index.ts: -------------------------------------------------------------------------------- 1 | export { Label } from './label' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/lazy/index.ts: -------------------------------------------------------------------------------- 1 | export { Lazy } from './lazy' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/link/index.ts: -------------------------------------------------------------------------------- 1 | export { Link } from './link' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/main/index.ts: -------------------------------------------------------------------------------- 1 | export { Main } from './main' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/menu/index.ts: -------------------------------------------------------------------------------- 1 | export { Menu } from './menu' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/paper/index.ts: -------------------------------------------------------------------------------- 1 | export { Paper } from './paper' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/radio/index.tsx: -------------------------------------------------------------------------------- 1 | export { Radio } from './radio' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/scrim/index.ts: -------------------------------------------------------------------------------- 1 | export { Scrim } from './scrim' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/table/index.tsx: -------------------------------------------------------------------------------- 1 | export { Table } from './table' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/avatar/index.ts: -------------------------------------------------------------------------------- 1 | export { Avatar } from './avatar' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/button/index.ts: -------------------------------------------------------------------------------- 1 | export { Button } from './button' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/counter/index.ts: -------------------------------------------------------------------------------- 1 | export { Counter } from './counter' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/dialog/index.ts: -------------------------------------------------------------------------------- 1 | export { Dialog } from './dialog' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/divider/index.ts: -------------------------------------------------------------------------------- 1 | export { Divider } from './divider' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/drawer/index.ts: -------------------------------------------------------------------------------- 1 | export { Drawer } from './drawer' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/overlay/index.ts: -------------------------------------------------------------------------------- 1 | export { Overlay } from './overlay' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/select/index.ts: -------------------------------------------------------------------------------- 1 | export { Select } from './select' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/spacer/index.ts: -------------------------------------------------------------------------------- 1 | export { Spacer } from './spacer' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/switch/index.ts: -------------------------------------------------------------------------------- 1 | export { Switch } from './switch' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/tooltip/index.ts: -------------------------------------------------------------------------------- 1 | export { Tooltip } from './tooltip' 2 | -------------------------------------------------------------------------------- /packages/docs/.env: -------------------------------------------------------------------------------- 1 | VITE_GITHUB_REPOSITORY=https://github.com/qq15725/veno-ui/blob/main 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/checkbox/index.tsx: -------------------------------------------------------------------------------- 1 | export { Checkbox } from './checkbox' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/input/styles/_variables.scss: -------------------------------------------------------------------------------- 1 | @use '../../../styles/settings'; -------------------------------------------------------------------------------- /packages/veno-ui/src/components/messages/index.tsx: -------------------------------------------------------------------------------- 1 | export { Messages } from './messages' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/tag-group/index.ts: -------------------------------------------------------------------------------- 1 | export { TagGroup } from './tag-group' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/textarea/index.ts: -------------------------------------------------------------------------------- 1 | export { Textarea } from './textarea' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/pagination/index.ts: -------------------------------------------------------------------------------- 1 | export { Pagination } from './pagination' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/responsive/index.ts: -------------------------------------------------------------------------------- 1 | export { Responsive } from './responsive' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/scrollbar/index.ts: -------------------------------------------------------------------------------- 1 | export { Scrollbar } from './scrollbar' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/spacer/styles/spacer.scss: -------------------------------------------------------------------------------- 1 | .ve-spacer { 2 | flex-grow: 1; 3 | } -------------------------------------------------------------------------------- /packages/veno-ui/src/components/timescale/index.ts: -------------------------------------------------------------------------------- 1 | export { Timescale } from './timescale' 2 | -------------------------------------------------------------------------------- /packages/markdown/src/utils/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse-header' 2 | export * from './slugify' 3 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/alert/styles/_variables.scss: -------------------------------------------------------------------------------- 1 | @use '../../../styles/settings'; 2 | 3 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/breadcrumb/styles/_variables.scss: -------------------------------------------------------------------------------- 1 | @use '../../../styles/settings'; 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/button-group/index.ts: -------------------------------------------------------------------------------- 1 | export { ButtonGroup } from './button-group' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/form-control/index.ts: -------------------------------------------------------------------------------- 1 | export { FormControl } from './form-control' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/radio-group/index.tsx: -------------------------------------------------------------------------------- 1 | export { RadioGroup } from './radio-group' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/composables/icons/index.ts: -------------------------------------------------------------------------------- 1 | export * from './icons' 2 | export * from './types' 3 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/button-toggle/index.ts: -------------------------------------------------------------------------------- 1 | export { ButtonToggle } from './button-toggle' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/input-control/index.tsx: -------------------------------------------------------------------------------- 1 | export { InputControl } from './input-control' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/theme-provider/index.ts: -------------------------------------------------------------------------------- 1 | export { ThemeProvider } from './theme-provider' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/transformable/index.ts: -------------------------------------------------------------------------------- 1 | export { Transformable } from './transformable' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/checkbox-group/index.tsx: -------------------------------------------------------------------------------- 1 | export { CheckboxGroup } from './checkbox-group' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/tabs/index.ts: -------------------------------------------------------------------------------- 1 | export { Tabs } from './tabs' 2 | export { Tab } from './tab' 3 | -------------------------------------------------------------------------------- /packages/docs/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qq15725/veno-ui/HEAD/packages/docs/public/favicon.ico -------------------------------------------------------------------------------- /packages/veno-ui/src/components/card/styles/card-header-text.scss: -------------------------------------------------------------------------------- 1 | .ve-card-header-text { 2 | flex: 1 1 auto; 3 | } -------------------------------------------------------------------------------- /packages/veno-ui/src/components/defaults-provider/index.ts: -------------------------------------------------------------------------------- 1 | export { DefaultsProvider } from './defaults-provider' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/message-provider/index.ts: -------------------------------------------------------------------------------- 1 | export { MessageProvider } from './message-provider' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/selection-control/index.tsx: -------------------------------------------------------------------------------- 1 | export { SelectionControl } from './selection-control' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/composables/icon/index.ts: -------------------------------------------------------------------------------- 1 | export * from './make-icon-props' 2 | export * from './use-icon' 3 | -------------------------------------------------------------------------------- /packages/docs/public/pwa-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qq15725/veno-ui/HEAD/packages/docs/public/pwa-192x192.png -------------------------------------------------------------------------------- /packages/docs/public/pwa-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qq15725/veno-ui/HEAD/packages/docs/public/pwa-512x512.png -------------------------------------------------------------------------------- /packages/veno-ui/src/components/draggable-sortable/index.ts: -------------------------------------------------------------------------------- 1 | export { DraggableSortable } from './draggable-sortable' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/icon/styles/_variables.scss: -------------------------------------------------------------------------------- 1 | @use '../../../styles/settings'; 2 | @use '../../../styles/tools'; -------------------------------------------------------------------------------- /packages/veno-ui/src/composables/position-strategy/static.ts: -------------------------------------------------------------------------------- 1 | export function staticPositionStrategy() { 2 | // TODO 3 | } 4 | -------------------------------------------------------------------------------- /packages/docs/public/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qq15725/veno-ui/HEAD/packages/docs/public/apple-touch-icon.png -------------------------------------------------------------------------------- /packages/veno-ui/src/components/anchor/index.ts: -------------------------------------------------------------------------------- 1 | export { Anchor } from './anchor' 2 | export { AnchorItem } from './anchor-item' 3 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/form/index.ts: -------------------------------------------------------------------------------- 1 | export { Form } from './form' 2 | export { FormChildren } from './form-children' 3 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/layout/index.ts: -------------------------------------------------------------------------------- 1 | export { Layout } from './layout' 2 | export { LayoutItem } from './layout-item' 3 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/notification-provider/index.ts: -------------------------------------------------------------------------------- 1 | export { NotificationProvider } from './notification-provider' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/utils/globals.ts: -------------------------------------------------------------------------------- 1 | export const UI_NAME = __VENOUI_NAME__ 2 | export const UI_VERSION = __VENOUI_VERSION__ 3 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/selection-group-control/index.tsx: -------------------------------------------------------------------------------- 1 | export { SelectionGroupControl } from './selection-group-control' 2 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/typography/index.ts: -------------------------------------------------------------------------------- 1 | export { H1, H2, H3, H4, H5, H6 } from './headers' 2 | export { P } from './p' 3 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/carousel/index.ts: -------------------------------------------------------------------------------- 1 | export { Carousel } from './carousel' 2 | export { CarouselItem } from './carousel-item' 3 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/device/index.ts: -------------------------------------------------------------------------------- 1 | export { Device } from './device' 2 | export { DeviceStatusBar } from './device-status-bar' 3 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/tag/docs/basic.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 基本用法 4 | 5 | ```html 6 | Default 7 | ``` 8 | 9 | ::: -------------------------------------------------------------------------------- /vercel.json: -------------------------------------------------------------------------------- 1 | { 2 | "rewrites": [ 3 | { 4 | "source": "/(.*)", 5 | "destination": "/index.html" 6 | } 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /packages/veno-ui/src/composables/nested/active-strategies/index.ts: -------------------------------------------------------------------------------- 1 | export * from './activeStrategy' 2 | export * from './classicActiveStrategy' 3 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/breadcrumb/index.ts: -------------------------------------------------------------------------------- 1 | export { Breadcrumb } from './breadcrumb' 2 | export { BreadcrumbItem } from './breadcrumb-item' 3 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/code/styles/_variables.scss: -------------------------------------------------------------------------------- 1 | // Defaults 2 | $code-font-size: 1em !default; 3 | $code-font-weight: normal !default; 4 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/grid/index.ts: -------------------------------------------------------------------------------- 1 | export { Container } from './container' 2 | export { Col } from './col' 3 | export { Row } from './row' 4 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/layout/styles/layout.scss: -------------------------------------------------------------------------------- 1 | @use '../../../styles/tools'; 2 | 3 | .ve-layout { 4 | @include tools.use-layout(); 5 | } -------------------------------------------------------------------------------- /packages/veno-ui/src/components/pagination/docs/basic.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 基本用法 4 | 5 | ```html 6 | 7 | ``` 8 | 9 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/timescale/styles/timescale.scss: -------------------------------------------------------------------------------- 1 | @use '../../../styles/settings'; 2 | 3 | .ve-time-axis { 4 | width: 100%; 5 | } 6 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/avatar/docs/slot.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 默认插槽 4 | 5 | ```html 6 | 头像 7 | ``` 8 | 9 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/date-picker/styles/date-range-picker-panel.scss: -------------------------------------------------------------------------------- 1 | // Blocks 2 | .ve-date-range-picker-panel { 3 | display: inline-block; 4 | } -------------------------------------------------------------------------------- /packages/veno-ui/src/components/radio/docs/basic.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 基本用法 4 | 5 | ```html 6 | 7 | ``` 8 | 9 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/slide-group/index.ts: -------------------------------------------------------------------------------- 1 | export { SlideGroup } from './slide-group' 2 | export { SlideGroupItem } from './slide-group-item' 3 | -------------------------------------------------------------------------------- /packages/veno-ui/src/styles/settings/_disabled.scss: -------------------------------------------------------------------------------- 1 | $disabled-background: rgb(250, 250, 252, 1) !default; 2 | $disabled-color: rgba(194, 194, 194, 1) !default; -------------------------------------------------------------------------------- /packages/veno-ui/src/components/card/docs/click.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 可点击 4 | 5 | ```html 6 | 7 | ``` 8 | 9 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/device/docs/basic.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 基本用法 4 | 5 | ```html 6 | 7 | ``` 8 | 9 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/main/styles/_variables.scss: -------------------------------------------------------------------------------- 1 | @use '../../../styles/settings'; 2 | 3 | $app-main-transition: 0.2s settings.$standard-easing !default; 4 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/progress/docs/color.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 颜色 4 | 5 | ```html 6 | 7 | ``` 8 | 9 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/alert/docs/loading.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 加载中 4 | 5 | ```html 6 | This is an loading alert. 7 | ``` 8 | 9 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/device/docs/status-bar.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 状态栏 4 | 5 | ```html 6 | 7 | ``` 8 | 9 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/date-picker/docs/basic.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 基本用法 4 | 5 | ```html 6 | 7 | ``` 8 | 9 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/divider/docs/vertical.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 垂直 4 | 5 | ```html 6 | 垂直 7 | 8 | 分割线 9 | ``` 10 | 11 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/paper/styles/paper.scss: -------------------------------------------------------------------------------- 1 | @use '../../../styles/settings'; 2 | @use '../../../styles/tools'; 3 | 4 | .ve-paper { 5 | @include tools.use-paper(); 6 | } -------------------------------------------------------------------------------- /packages/veno-ui/src/composables/layout/layout-main.ts: -------------------------------------------------------------------------------- 1 | // Utils 2 | import { useLayout } from './layout' 3 | 4 | export function useLayoutMain() { 5 | return useLayout() 6 | } 7 | -------------------------------------------------------------------------------- /packages/veno-ui/src/composables/nested/open-strategies/index.ts: -------------------------------------------------------------------------------- 1 | export * from './openStrategy' 2 | export * from './singleOpenStrategy' 3 | export * from './multipleOpenStrategy' 4 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/anchor/styles/anchor.scss: -------------------------------------------------------------------------------- 1 | .ve-anchor { 2 | list-style: none; 3 | border-left: thin solid rgba(var(--ve-border-color), var(--ve-border-opacity)); 4 | } -------------------------------------------------------------------------------- /packages/veno-ui/src/components/header/index.ts: -------------------------------------------------------------------------------- 1 | export { Header } from './header' 2 | export { HeaderNavIcon } from './header-nav-icon' 3 | export { HeaderTitle } from './header-title' 4 | -------------------------------------------------------------------------------- /packages/veno-ui/src/providers/index.ts: -------------------------------------------------------------------------------- 1 | export { MessageProvider } from '../components/message-provider' 2 | export { NotificationProvider } from '../components/notification-provider' 3 | -------------------------------------------------------------------------------- /packages/veno-ui/src/utils/symbol.ts: -------------------------------------------------------------------------------- 1 | import { UI_NAME } from './globals' 2 | 3 | export function createSymbol(key: string) { 4 | return Symbol.for(`${ UI_NAME }:${ key }`) 5 | } 6 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/image/docs/basic.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 基本用法 4 | 5 | ```html 6 | 7 | ``` 8 | 9 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/list/styles/list-item-header.scss: -------------------------------------------------------------------------------- 1 | @forward 'variables'; 2 | @use 'variables' as *; 3 | 4 | .ve-list-item-header { 5 | flex: 1 1 auto; 6 | min-width: 0; 7 | } -------------------------------------------------------------------------------- /packages/veno-ui/src/components/pagination/docs/show-first-last-page.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 第一页和最后一页 4 | 5 | ```html 6 | 7 | ``` 8 | 9 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/toolbar/index.ts: -------------------------------------------------------------------------------- 1 | export { Toolbar } from './toolbar' 2 | export { ToolbarItems } from './toolbar-items' 3 | export { ToolbarTitle } from './toolbar-title' 4 | -------------------------------------------------------------------------------- /packages/veno-ui/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./lib" 6 | }, 7 | "include": ["src"] 8 | } 9 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/alert/docs/close-text.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 自定义关闭 4 | 5 | ```html 6 | This is an info alert. 7 | ``` 8 | 9 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/layout/styles/layout-item.scss: -------------------------------------------------------------------------------- 1 | @use '../../../styles/settings'; 2 | 3 | .ve-layout-item { 4 | transition: 0.2s settings.$standard-easing; 5 | } 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/tag/docs/loading.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 加载中的标签 4 | 5 | ```html 6 | 7 | Loading 8 | 9 | ``` 10 | 11 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/alert/docs/basic.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 基本用法 4 | 5 | 最简单的用法,适用于简短的警告提示。 6 | 7 | ```html 8 | This is an info alert. 9 | ``` 10 | 11 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/theme-provider/styles/theme-provider.scss: -------------------------------------------------------------------------------- 1 | .ve-theme-provider { 2 | background: rgb(var(--ve-theme-background)); 3 | color: rgb(var(--ve-theme-on-background)); 4 | } -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/progress/index.ts: -------------------------------------------------------------------------------- 1 | export { Progress } from './progress' 2 | export { ProgressLinear } from './progress-linear' 3 | export { ProgressCircular } from './progress-circular' 4 | -------------------------------------------------------------------------------- /packages/markdown/src/plugins/hr.ts: -------------------------------------------------------------------------------- 1 | // Types 2 | import type { PluginSimple } from '../types' 3 | 4 | export const hrPlugin: PluginSimple = md => { 5 | md.renderer.rules.hr = () => '' 6 | } 7 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/transition/styles/expand-transition.scss: -------------------------------------------------------------------------------- 1 | @use '../../../styles/tools'; 2 | 3 | .ve-expand-transition, 4 | .ve-expand-x-transition { 5 | @include tools.use-transition(.2s); 6 | } -------------------------------------------------------------------------------- /packages/veno-ui/src/directives/index.ts: -------------------------------------------------------------------------------- 1 | export { Intersect } from './intersect' 2 | export { ClickOutside } from './click-outside' 3 | export { Resize } from './resize' 4 | export { Ripple } from './ripple' 5 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/alert/docs/icon.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 隐藏图标 4 | 5 | 使用 `:icon="false"` 不显示图标。 6 | 7 | ```html 8 | This is an info alert. 9 | ``` 10 | 11 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/code/docs/inline.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 内联代码 4 | 5 | ```html 6 | js: 7 | console.log('code') 8 | ``` 9 | 10 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/utils/index.ts: -------------------------------------------------------------------------------- 1 | export * from './color' 2 | export * from './console' 3 | export * from './define-component' 4 | export * from './globals' 5 | export * from './helpers' 6 | export * from './symbol' 7 | -------------------------------------------------------------------------------- /packages/markdown/src/shims.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'markdown-it-container' { 2 | const def: any 3 | export default def 4 | } 5 | 6 | declare module 'diacritics' { 7 | export const remove: (str: string) => string 8 | } 9 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/date-picker/index.ts: -------------------------------------------------------------------------------- 1 | export { DatePicker } from './date-picker' 2 | export { DatePickerPanel } from './date-picker-panel' 3 | export { DateRangePickerPanel } from './date-range-picker-panel' 4 | -------------------------------------------------------------------------------- /packages/api-generator/src/app-instance.ts: -------------------------------------------------------------------------------- 1 | // Utils 2 | import { createApp } from 'vue' 3 | import { createVeno } from 'veno-ui' 4 | 5 | const app = createApp({}) 6 | 7 | app.use(createVeno()) 8 | 9 | export { app } 10 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/tag/docs/clickable.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 可点击的标签 4 | 5 | ```html 6 | 7 | Tag 8 | Tag 9 | 10 | ``` 11 | 12 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/typography/p.ts: -------------------------------------------------------------------------------- 1 | // Styles 2 | import './styles/p.scss' 3 | 4 | // Utils 5 | import { createSimpleFunctional } from '@veno-ui/utils' 6 | 7 | export const P = createSimpleFunctional('ve-p', 'p') 8 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/tabs/docs/basic.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 基本用法 4 | 5 | ```html 6 | 7 | Tab1 8 | Tab2 9 | Tab3 10 | 11 | ``` 12 | 13 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/composables/nested/select-strategies/index.ts: -------------------------------------------------------------------------------- 1 | export * from './selectStrategy' 2 | export * from './classicSelectStrategy' 3 | export * from './independentSelectStrategy' 4 | export * from './leafSelectStrategy' 5 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/scrollbar/docs/basic.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 基本用法 4 | 5 | ```html 6 | 7 | 8 | 9 | ``` 10 | 11 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/scrollbar/docs/scroll-x.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 水平滚动 4 | 5 | ```html 6 | 7 | 8 | 9 | ``` 10 | 11 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/composables/date/index.ts: -------------------------------------------------------------------------------- 1 | export { createDate, defaultDateFormat } from './date' 2 | 3 | export type { 4 | DateInstance, 5 | DateManipulateType, 6 | DateOptions, 7 | InternalDateInstance, 8 | } from './types' 9 | -------------------------------------------------------------------------------- /packages/veno-ui/src/styles/tools/_absolute.scss: -------------------------------------------------------------------------------- 1 | @mixin absolute($pseudo: false) { 2 | @if ($pseudo) { 3 | content: ''; 4 | } 5 | position: absolute; 6 | top: 0; 7 | left: 0; 8 | width: 100%; 9 | height: 100%; 10 | } -------------------------------------------------------------------------------- /packages/veno-ui/src/components/input/docs/width.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 自定义宽度 4 | 5 | 通过设置 `width` 定义宽度,只会影响 `input-control` 部分。 6 | 7 | ```html 8 | 9 | ``` 10 | 11 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/card/card-text.ts: -------------------------------------------------------------------------------- 1 | // Styles 2 | import './styles/card-text.scss' 3 | 4 | // Utils 5 | import { createSimpleFunctional } from '@veno-ui/utils' 6 | 7 | export const CardText = createSimpleFunctional('ve-card-text') 8 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/divider/docs/basic.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 基本用法 4 | 5 | ```html 6 | 卡片可以包含一个主题的照片、文字和链接。它们可以显示包含不同尺寸的元素的内容,例如有可变长度标题的照片。 7 | 8 | 9 | 10 | 卡片集是多个卡片在同一平面上的布局结构。 11 | ``` 12 | 13 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/hover/docs/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Others 其他组件 3 | --- 4 | 5 | # 悬停 Hover 6 | 7 | `hover` 组件。 8 | 9 | ## 演示 10 | 11 | :::include 12 | 13 | basic.md 14 | 15 | ::: 16 | 17 | ## API 18 | 19 | << 7 | 8 | 9 | ``` 10 | 11 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/timescale/docs/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Others 其他组件 3 | --- 4 | 5 | # 时间标尺 Timescale 6 | 7 | ## 演示 8 | 9 | :::include 10 | 11 | basic.md 12 | 13 | ::: 14 | 15 | ## API 16 | 17 | << 7 | 8 | 9 | 10 | 11 | ``` 12 | 13 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/header/styles/header.scss: -------------------------------------------------------------------------------- 1 | @use '../../../styles/tools'; 2 | @use '../../../styles/settings'; 3 | 4 | .ve-header { 5 | &.ve-toolbar--border { 6 | border-width: 0 0 thin; 7 | } 8 | } 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/spacer/docs/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Layouts 布局组件 3 | --- 4 | 5 | # 间距 Spacer 6 | 7 | ## 演示 8 | 9 | :::include 10 | 11 | basic.md 12 | 13 | gutter.md 14 | 15 | ::: 16 | 17 | ## API 18 | 19 | << { 8 | app.use(createPinia()) 9 | } 10 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/card/card-actions.ts: -------------------------------------------------------------------------------- 1 | // Styles 2 | import './styles/card-actions.scss' 3 | 4 | // Utils 5 | import { createSimpleFunctional } from '@veno-ui/utils' 6 | 7 | export const CardActions = createSimpleFunctional('ve-card-actions') 8 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/divider/docs/dashed.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 虚线 4 | 5 | ```html 6 | 卡片是用来显示由不同元素组成的内容的便捷方式。它们也适合用来展示拥有不同尺寸和操作的元素,例如有可变长度标题的照片。 7 | 8 | 9 | 10 | 卡片集是在同一平面上的卡片的布局。 11 | ``` 12 | 13 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/overlay/docs/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Feedback 反馈组件 3 | --- 4 | 5 | # 遮罩层 Overlay 6 | 7 | ## 演示 8 | 9 | :::include 10 | 11 | basic.md 12 | 13 | contained.md 14 | 15 | ::: 16 | 17 | ## API 18 | 19 | << 7 | 8 | 9 | ``` 10 | 11 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/tabs/docs/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | meta: 3 | category: Data 数据展示 4 | --- 5 | 6 | # 标签页 Tabs 7 | 8 | ## 演示 9 | 10 | :::include 11 | 12 | basic.md 13 | 14 | ::: 15 | 16 | ## API 17 | 18 | << 12 | ``` 13 | 14 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/menu/docs/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Navigation 导航 3 | --- 4 | 5 | # 菜单 Menu 6 | 7 | ## 演示 8 | 9 | :::include 10 | 11 | basic.md open-on-hover.md 12 | 13 | nested.md 14 | 15 | ::: 16 | 17 | ## API 18 | 19 | << .ve-selection-control:not(:last-child) { 6 | margin-inline-end: 6px; 7 | } 8 | } -------------------------------------------------------------------------------- /packages/veno-ui/src/components/spacer/docs/basic.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 基本用法 4 | 5 | ```html 6 | 7 | Button 8 | Button 9 | Button 10 | 11 | ``` 12 | 13 | ::: -------------------------------------------------------------------------------- /packages/docs/src/types.ts: -------------------------------------------------------------------------------- 1 | import type { Router } from 'vue-router' 2 | import type { App } from 'vue' 3 | 4 | interface InstallPluginContext { 5 | app: App 6 | router: Router 7 | } 8 | 9 | export type InstallPlugin = (ctx: InstallPluginContext) => void 10 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/icon/index.ts: -------------------------------------------------------------------------------- 1 | export { Icon } from './icon' 2 | export { IconClass } from './icon-class' 3 | export { IconComponent } from './icon-component' 4 | export { IconLigature } from './icon-ligature' 5 | export { IconSvg } from './icon-svg' 6 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/list/list-item-title.ts: -------------------------------------------------------------------------------- 1 | // Styles 2 | import './styles/list-item-title.scss' 3 | 4 | // Utils 5 | import { createSimpleFunctional } from '@veno-ui/utils' 6 | 7 | export const ListItemTitle = createSimpleFunctional('ve-list-item-title') 8 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/transformable/docs/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Draggable 拖拽组件 3 | --- 4 | 5 | # 拖拽变换 Transformable 6 | 7 | 8 | ## 演示 9 | 10 | :::include 11 | 12 | basic.md 13 | 14 | ::: 15 | 16 | ## API 17 | 18 | << 7 | 10 | 11 | ``` 12 | 13 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/scrollbar/styles/scrollbar.scss: -------------------------------------------------------------------------------- 1 | @use '../../../styles/tools'; 2 | 3 | // Blocks 4 | .ve-scrollbar { 5 | height: 100%; 6 | overflow: auto; 7 | position: relative; 8 | width: 100%; 9 | @include tools.use-scrollbar(); 10 | } 11 | -------------------------------------------------------------------------------- /packages/api-generator/rollup.config.js: -------------------------------------------------------------------------------- 1 | require('esbuild-register') 2 | 3 | module.exports = require('../../scripts/rollup.config.ts').createConfig({ 4 | external: [ 5 | 'ts-morph', 6 | 'vue', 7 | '@veno-ui/utils', 8 | 'veno-ui', 9 | ], 10 | }) 11 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/avatar/docs/border.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 边框 4 | 5 | ```html 6 | 7 | 8 | 9 | 10 | 11 | ``` 12 | 13 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/responsive/docs/basic.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | # 基本用法 3 | 4 | ```html 5 | 6 | 7 | 8 | 这张卡片总是16:9 9 | 10 | 11 | 12 | ``` 13 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/spacer/docs/gutter.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 自定义槽距离 4 | 5 | ```html 6 | 7 | Button 8 | Button 9 | Button 10 | 11 | ``` 12 | 13 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/tabs/key.ts: -------------------------------------------------------------------------------- 1 | import { createSymbol } from '../../utils' 2 | import type { InjectionKey } from 'vue' 3 | import type { GroupInstance } from '../../composables/group' 4 | 5 | export const TabsKey: InjectionKey = createSymbol('tabs') 6 | -------------------------------------------------------------------------------- /packages/utils/src/html.ts: -------------------------------------------------------------------------------- 1 | const tagsToReplace: Record = { 2 | '&': '&', 3 | '<': '<', 4 | '>': '>', 5 | } 6 | 7 | export function escapeHTML(str: string): string { 8 | return str.replace(/[&<>]/g, tag => tagsToReplace[tag] || tag) 9 | } 10 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/alert/docs/closable.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 可关闭的 4 | 5 | 显示关闭按钮,点击可关闭警告提示。 6 | 7 | ```html 8 | Error Text Error Text Error Text Error Text Error Text Error Text 9 | ``` 10 | 11 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/image/docs/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | meta: 3 | category: Data 数据展示 4 | --- 5 | 6 | # 图片 Image 7 | 8 | ## 演示 9 | 10 | :::include 11 | 12 | basic.md aspect-ratio.md 13 | 14 | fill.md loading.md 15 | 16 | ::: 17 | 18 | ## API 19 | 20 | << 11 | 提示 12 | 13 | ``` 14 | 15 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/transition/fade-transition.ts: -------------------------------------------------------------------------------- 1 | // Styles 2 | import './styles/fade-transition.scss' 3 | 4 | // Utils 5 | import { createCssTransition } from './utils/create-transition' 6 | 7 | export const FadeTransition = createCssTransition('ve-fade-transition') 8 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/transition/menu-transition.ts: -------------------------------------------------------------------------------- 1 | // Styles 2 | import './styles/menu-transition.scss' 3 | 4 | // Utils 5 | import { createCssTransition } from './utils/create-transition' 6 | 7 | export const MenuTransition = createCssTransition('ve-menu-transition') 8 | -------------------------------------------------------------------------------- /packages/veno-ui/src/composables/layout/index.ts: -------------------------------------------------------------------------------- 1 | export { makeLayoutProps, provideLayout, useLayout } from './layout' 2 | export { makeLayoutItemProps, useLayoutItem } from './layout-item' 3 | export { useLayoutMain } from './layout-main' 4 | export { useOverlay } from './overlay' 5 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/overlay/docs/contained.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 包含的遮罩层 4 | 5 | ```html 6 | 7 | 10 | 11 | ``` 12 | 13 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/responsive/docs/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Others 其他组件 3 | --- 4 | 5 | # 长宽比 Responsive 6 | 7 | `responsive` 组件可用于将任何部分固定到特定的宽高比。 8 | 9 | ## 演示 10 | 11 | :::include 12 | 13 | basic.md 14 | 15 | ::: 16 | 17 | ## API 18 | 19 | << 5 | children: Map 6 | parents: Map 7 | event?: Event 8 | }) => Set 9 | -------------------------------------------------------------------------------- /packages/veno-ui/src/composables/scrollbar/styles/_variables.scss: -------------------------------------------------------------------------------- 1 | @use '../../../styles/tools/functions'; 2 | 3 | $scrollbar-props: () !default; 4 | $scrollbar-props: functions.map-deep-merge( 5 | ( 6 | 'use-scrollbar': true, 7 | ), 8 | $scrollbar-props 9 | ); 10 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/grid/docs/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Layouts 布局组件 3 | --- 4 | 5 | # 栅格 Grid 6 | 7 | ## 演示 8 | 9 | :::include 10 | 11 | basic.md 12 | 13 | gutter.md 14 | 15 | ::: 16 | 17 | ## API 18 | 19 | << 5 | children: Map 6 | parents: Map 7 | event?: Event 8 | }) => Set 9 | -------------------------------------------------------------------------------- /packages/vite-plugin-markdown/rollup.config.js: -------------------------------------------------------------------------------- 1 | require('esbuild-register') 2 | 3 | module.exports = require('../../scripts/rollup.config.ts').createConfig({ 4 | external: [ 5 | 'vite', 6 | '@veno-ui/markdown', 7 | '@veno-ui/utils', 8 | 'local-pkg', 9 | ], 10 | }) 11 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/checkbox/docs/basic.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 基本用法 4 | 5 | ```html 6 | 7 | 8 | 9 | ``` 10 | 11 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/device/docs/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Others 其他组件 3 | --- 4 | 5 | # 设备 Device 6 | 7 | `device`、`device-status-bar` 组件。 8 | 9 | ## 演示 10 | 11 | :::include 12 | 13 | status-bar.md 14 | 15 | basic.md 16 | 17 | ::: 18 | 19 | ## API 20 | 21 | << 7 | 8 | ``` 9 | 10 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/input/docs/height.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 自定义高度 4 | 5 | 通过设置 `height` 定义高度。 6 | 7 | ```html 8 | 9 | 10 | ``` 11 | 12 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/progress/docs/indeterminate.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 不确定的 4 | 5 | ```html 6 | 11 | 12 | 16 | ``` 17 | 18 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/radio/docs/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Form 表单组件 3 | --- 4 | 5 | # 单选框 Radio 6 | 7 | ## 演示 8 | 9 | :::include 10 | 11 | basic.md 12 | 13 | group.md 14 | 15 | items.md 16 | 17 | ::: 18 | 19 | ## API 20 | 21 | << 7 | 8 | 9 | 10 | 11 | ``` 12 | 13 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/styles/settings/_states.scss: -------------------------------------------------------------------------------- 1 | @use '../tools/functions' as *; 2 | 3 | $states: () !default; 4 | $states: map-deep-merge( 5 | ( 6 | 'hover': 0.04, 7 | 'focus': 0.08, 8 | 'activated': 0.12, 9 | 'pressed': 0.16 10 | ), 11 | $states 12 | ); -------------------------------------------------------------------------------- /packages/utils/rollup.config.js: -------------------------------------------------------------------------------- 1 | require('esbuild-register') 2 | 3 | module.exports = require('../../scripts/rollup.config.ts').createConfig({ 4 | iife: { 5 | name: 'VUtils', 6 | globals: { 7 | vue: 'Vue', 8 | }, 9 | }, 10 | external: [ 11 | 'vue', 12 | ], 13 | }) 14 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/avatar/styles/_variables.scss: -------------------------------------------------------------------------------- 1 | @use 'sass:map'; 2 | @use '../../../styles/settings'; 3 | 4 | $avatar-paper: ( 5 | 'sizes': ( 6 | 'x-small': -4, 7 | 'small': -2, 8 | 'medium': 0, 9 | 'large': 2, 10 | 'x-large': 4 11 | ), 12 | ) !default; 13 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/checkbox/docs/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Form 表单组件 3 | --- 4 | 5 | # 复选框 Checkbox 6 | 7 | ## 演示 8 | 9 | :::include 10 | 11 | basic.md 12 | 13 | group.md 14 | 15 | items.md 16 | 17 | ::: 18 | 19 | ## API 20 | 21 | << 7 | Link 8 | :underline="false" 9 | underline 10 | 11 | ``` 12 | 13 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/lib.tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./lib", 6 | "jsx": "react", 7 | "jsxFactory": "_createVNode", 8 | "jsxFragmentFactory": "_Fragment" 9 | }, 10 | "include": ["src"] 11 | } 12 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/anchor/docs/items.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 数据驱动 4 | 5 | ```html 6 | 14 | ``` 15 | 16 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/badge/docs/hover.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 鼠标悬停显示 4 | 5 | ```html 6 | 7 | 8 | 9 | 10 | 11 | ``` 12 | 13 | ::: 14 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/card/docs/personal-card-concise.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 简洁的个人名片 4 | 5 | ```html 6 | 13 | ``` 14 | 15 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/card/styles/_variables.scss: -------------------------------------------------------------------------------- 1 | @use 'sass:map'; 2 | @use '../../../styles/settings'; 3 | @use '../../../styles/tools'; 4 | 5 | $card-paper: () !default; 6 | $card-paper: tools.map-deep-merge( 7 | ( 8 | 'use-size': false, 9 | ), 10 | $card-paper 11 | ); 12 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/divider/docs/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Layouts 布局组件 3 | --- 4 | 5 | # 分割线 Divider 6 | 7 | `divider` 组件用于分隔内容。 8 | 9 | ## 演示 10 | 11 | :::include 12 | 13 | basic.md default-slot.md 14 | 15 | dashed.md vertical.md 16 | 17 | ::: 18 | 19 | ## API 20 | 21 | << 16 | ``` 17 | 18 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/hover/docs/basic.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 基本用法 4 | 5 | ```html 6 | 7 | 12 | 移动鼠标到此 13 | 14 | 15 | ``` 16 | 17 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/image/docs/loading.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 加载中 4 | 5 | ```html 6 | 7 | 10 | 11 | ``` 12 | 13 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/paper/docs/shape.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 纸张形状 4 | 5 | ```html 6 | 7 | 8 | 9 | 10 | 11 | ``` 12 | 13 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/selection-control/styles/_variables.scss: -------------------------------------------------------------------------------- 1 | @use 'sass:map'; 2 | @use '../../../styles/settings'; 3 | @use '../../../styles/tools'; 4 | 5 | $selection-control-density: ( 6 | 'ultra-high': -1, 7 | 'high': -0.5, 8 | 'medium': 0, 9 | 'low': 0.5, 10 | 'ultra-low': 1, 11 | ) !default; -------------------------------------------------------------------------------- /packages/veno-ui/src/components/tag/docs/closable.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 可关闭的标签 4 | 5 | 通过 closable 属性控制标签是否可关闭。通过 modelValue 属性控制标签的显示或隐藏。 6 | 7 | ```html 8 | 9 | Tag 10 | Tag 11 | 12 | ``` 13 | 14 | ::: 15 | -------------------------------------------------------------------------------- /packages/docs/src/data/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "site": "Veno UI", 3 | "title": "Veno UI: 一个 Vue 3 UI 组件库", 4 | "description": "Veno UI 是一个 Vue 3 UI 组件库。它旨在提供所有必要的工具来创建漂亮的内容丰富的应用程序。", 5 | "keywords": "vue, vue components, vue UI, vue 3 UI, vue 3 components, vue 3 ui, venojs, veno-ui, veno-ui.js, component framework" 6 | } 7 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/avatar/docs/color.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 颜色 4 | 5 | ```html 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | ``` 14 | 15 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/checkbox/docs/group.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 复选框组 4 | 5 | ```html 6 | 7 | 8 | 9 | 10 | 11 | ``` 12 | 13 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/progress/docs/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Feedback 反馈组件 3 | --- 4 | 5 | # 进度条 Progress 6 | 7 | ## 演示 8 | 9 | :::include 10 | 11 | basic.md 12 | 13 | indeterminate.md 14 | 15 | size.md 16 | 17 | color.md 18 | 19 | method.md 20 | 21 | ::: 22 | 23 | ## API 24 | 25 | << 7 | 8 | Link 9 | 10 | 11 | 12 | 13 | 14 | 15 | ``` 16 | 17 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/input/docs/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Form 表单组件 3 | --- 4 | 5 | # 输入框 Input 6 | 7 | ## 演示 8 | 9 | :::include 10 | 11 | basic.md 12 | 13 | width.md 14 | 15 | height.md 16 | 17 | auto-resize.md 18 | 19 | slots.md 20 | 21 | case1.md 22 | 23 | ::: 24 | 25 | ## API 26 | 27 | << 7 | 基本用法 8 | 数据驱动 9 | 默认插槽 10 | 11 | ``` 12 | 13 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/badge/docs/inline.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 内联 4 | 5 | ```html 6 | 7 | Success 8 | Error 9 | Warning 10 | 11 | ``` 12 | 13 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/form-control/styles/_variables.scss: -------------------------------------------------------------------------------- 1 | @use 'sass:map'; 2 | @use 'sass:math'; 3 | @use '../../../styles/tools'; 4 | @use '../../../styles/settings'; 5 | 6 | $form-control-densities: ( 7 | 'ultra-high': -1, 8 | 'high': -0.5, 9 | 'medium': 0, 10 | 'low': 0.5, 11 | 'ultra-low': 1, 12 | ) !default; -------------------------------------------------------------------------------- /packages/veno-ui/src/components/carousel/docs/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | meta: 3 | category: Data 数据展示 4 | --- 5 | 6 | # 轮播 Carousel 7 | 8 | 用于展示多张图片、视频或内嵌框架等内容的循环播放,支持系统自动播放或用户手动切换。 9 | 10 | ## 演示 11 | 12 | :::include 13 | 14 | basic.md autoplay.md 15 | 16 | ::: 17 | 18 | ## API 19 | 20 | << 9 | Home 10 | Channel 11 | News 12 | 13 | ``` 14 | 15 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/breadcrumb/docs/icon.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 图标 4 | 5 | ```html 6 | 7 | Home 8 | Channel 9 | News 10 | 11 | ``` 12 | 13 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/list/styles/list-item-subtitle.scss: -------------------------------------------------------------------------------- 1 | @forward 'variables'; 2 | @use 'variables' as *; 3 | 4 | .ve-list-item-subtitle { 5 | -webkit-box-orient: vertical; 6 | display: -webkit-box; 7 | opacity: var(--ve-medium-emphasis-opacity); 8 | overflow: hidden; 9 | padding: 0; 10 | text-overflow: ellipsis; 11 | } -------------------------------------------------------------------------------- /packages/veno-ui/src/components/badge/docs/content.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 文本内容 4 | 5 | ```html 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | ``` 16 | 17 | ::: 18 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/code/docs/show-language.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 显示语言 4 | 5 | ```html 6 | 17 | ``` 18 | 19 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/paper/docs/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | meta: 3 | category: Data 数据展示 4 | --- 5 | 6 | # 纸张 Paper 7 | 8 | ## 演示 9 | 10 | :::include 11 | 12 | basic.md 13 | 14 | shape.md 15 | 16 | dimension.md 17 | 18 | color.md 19 | 20 | elevation.md 21 | 22 | position.md 23 | 24 | ::: 25 | 26 | ## API 27 | 28 | << 7 | 13 | 14 | ``` 15 | 16 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/link/docs/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | meta: 3 | category: Basic 通用组件 4 | wai-aria: https://www.w3.org/TR/wai-aria-practices/#link 5 | --- 6 | 7 | # 链接 Link 8 | 9 | :::include 10 | 11 | basic.md 12 | 13 | underline.md 14 | 15 | icon.md 16 | 17 | ::: 18 | 19 | ## API 20 | 21 | 隐式继承按钮 `Button` 的API。 22 | 23 | << 17 | ``` 18 | 19 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/table/docs/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | meta: 3 | category: Data 数据展示 4 | --- 5 | 6 | # 表格 Table 7 | 8 | ## 演示 9 | 10 | :::include 11 | 12 | basic.md 13 | 14 | hide-pagination.md 15 | 16 | selection.md 17 | 18 | export.md 19 | 20 | remote.md 21 | 22 | ::: 23 | 24 | ## API 25 | 26 | << { 5 | router.isReady() 6 | .then(async () => { 7 | const { registerSW } = await import('virtual:pwa-register') 8 | registerSW({ immediate: true }) 9 | }) 10 | .catch(() => {}) 11 | } 12 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/pagination/docs/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Navigation 导航 3 | --- 4 | 5 | # 分页 Pagination 6 | 7 | ## 演示 8 | 9 | :::include 10 | 11 | basic.md 12 | 13 | show-per-page-select.md 14 | 15 | show-quick-jumper.md 16 | 17 | total-visible.md 18 | 19 | show-first-last-page.md 20 | 21 | ::: 22 | 23 | ## API 24 | 25 | << { 6 | const theme = ref('light') 7 | 8 | return { 9 | theme, 10 | toggleTheme() { 11 | theme.value = theme.value === 'dark' ? 'light' : 'dark' 12 | }, 13 | } 14 | }) 15 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/carousel/docs/autoplay.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 自动播放 4 | 5 | ```html 6 | 7 | 8 | 12 | 13 | 14 | ``` 15 | 16 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/alert/docs/append.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 自定义操作 4 | 5 | ```html 6 | 7 | Error Text Error Text Error Text Error Text Error Text Error Text 8 | 11 | 12 | ``` 13 | 14 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/alert/docs/shape.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 多种形状 4 | 5 | 无圆角,一点圆角,药丸形状。 6 | 7 | ```html 8 | 9 | This is an info alert. 10 | This is an info alert. 11 | This is an info alert. 12 | 13 | ``` 14 | 15 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/main/styles/main.scss: -------------------------------------------------------------------------------- 1 | @forward 'variables'; 2 | @use 'variables' as *; 3 | 4 | .ve-main { 5 | display: flex; 6 | flex: 1 0 auto; 7 | max-width: 100%; 8 | transition: $app-main-transition; 9 | 10 | &__wrap { 11 | flex: 1 1 auto; 12 | max-width: 100%; 13 | position: relative; 14 | } 15 | } 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/anchor/docs/slots.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 默认插槽 4 | 5 | ```html 6 | 14 | 目录 15 | 16 | ``` 17 | 18 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/code/docs/highlighted-line-numbers.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 行高亮 4 | 5 | ```html 6 | 17 | ``` 18 | 19 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/progress/styles/_variables.scss: -------------------------------------------------------------------------------- 1 | @use '../../../styles/settings'; 2 | @use '../../../styles/tools'; 3 | 4 | $progress-sizes: () !default; 5 | $progress-sizes: tools.map-deep-merge( 6 | ( 7 | 'x-small': -2, 8 | 'small': -1, 9 | 'medium': 0, 10 | 'large': 2, 11 | 'x-large': 4 12 | ), 13 | $progress-sizes 14 | ); -------------------------------------------------------------------------------- /packages/markdown/src/plugins/index.ts: -------------------------------------------------------------------------------- 1 | export * from './component' 2 | export * from './containers' 3 | export * from './header' 4 | export * from './paragraph' 5 | export * from './code' 6 | export * from './hoist' 7 | export * from './include' 8 | export * from './demo' 9 | export * from './link' 10 | export * from './fence' 11 | export * from './hr' 12 | export * from './table' 13 | -------------------------------------------------------------------------------- /packages/utils/src/easing.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * 标准的缓动 3 | */ 4 | export const standardEasing = 'cubic-bezier(0.4, 0, 0.2, 1)' 5 | 6 | /** 7 | * 减速的缓动 8 | * 9 | * 常用于进入时 10 | */ 11 | export const deceleratedEasing = 'cubic-bezier(0.0, 0, 0.2, 1)' // Entering 12 | 13 | /** 14 | * 加速的缓动 15 | * 16 | * 常用于离开时 17 | */ 18 | export const acceleratedEasing = 'cubic-bezier(0.4, 0, 1, 1)' 19 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/link/docs/icon.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 图标 4 | 5 | ```html 6 | 7 | www.venojs.com 8 | Link 9 | Link 10 | 11 | ``` 12 | 13 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/styles/settings/_variables.scss: -------------------------------------------------------------------------------- 1 | @use '../tools/functions'; 2 | 3 | $color-pack: true !default; 4 | 5 | // 间距系数 6 | $spacer: 4px !default; 7 | 8 | $font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default; 9 | $font-size: 14px !default; 10 | $line-height: 1.5 !default; 11 | -------------------------------------------------------------------------------- /packages/docs/src/stores/app.ts: -------------------------------------------------------------------------------- 1 | // Utils 2 | import { ref } from 'vue' 3 | import { defineStore } from 'pinia' 4 | 5 | export const useAppStore = defineStore('app', () => { 6 | const menuActive = ref() 7 | 8 | return { 9 | pageLoading: ref(false), 10 | menuActive, 11 | toggleMenuActive() { 12 | menuActive.value = !menuActive.value 13 | }, 14 | } 15 | }) 16 | -------------------------------------------------------------------------------- /packages/utils/src/use-render.ts: -------------------------------------------------------------------------------- 1 | // Utils 2 | import { getCurrentInstance } from './get-current-instance' 3 | 4 | // Types 5 | import type { VNode } from 'vue' 6 | 7 | /** 8 | * 使用组合式渲染 9 | * 10 | * @param render 渲染回调函数 11 | */ 12 | export function useRender(render: () => VNode): void { 13 | const vm = getCurrentInstance('useRender') as any 14 | 15 | vm.render = render 16 | } 17 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/breadcrumb/docs/route.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 路由能力 4 | 5 | ```html 6 | 7 | Home 8 | Channel 9 | News 10 | 11 | ``` 12 | 13 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/button/docs/text.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 文本按钮 4 | 5 | ```html 6 | 7 | Text 8 | Primary 9 | Error 10 | Disabled 11 | 12 | ``` 13 | 14 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/card/docs/shape.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 卡片形状 4 | 5 | ```html 6 | 7 | 8 | 9 | 10 | 11 | 12 | ``` 13 | 14 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/date-picker/docs/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Form 表单组件 3 | --- 4 | 5 | # 日期选择器 DatePicker 6 | 7 | ## 演示 8 | 9 | :::include 10 | 11 | basic.md 12 | 13 | range.md 14 | 15 | range-custom-format.md 16 | 17 | panel.md 18 | 19 | ::: 20 | 21 | ## API 22 | 23 | <<用法 7 | 8 | 卡片显示由不同元素组成的内容,其大小和支持的操作不同。 9 | 10 | 支持的手势 11 | 12 | 滑动 13 | 拾起并移动 14 | 15 | 相关组件 16 | 17 | 网格列表 18 | ``` 19 | 20 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/anchor/styles/anchor-item.scss: -------------------------------------------------------------------------------- 1 | .ve-anchor-item { 2 | list-style: none; 3 | 4 | .ve-link { 5 | display: flex; 6 | justify-content: start; 7 | padding-left: 16px; 8 | margin-bottom: 8px; 9 | border-radius: 0; 10 | } 11 | 12 | &--active .ve-link { 13 | margin-left: -1px; 14 | border-left: 1px solid currentColor; 15 | } 16 | } -------------------------------------------------------------------------------- /packages/veno-ui/src/components/button/docs/plain.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 朴素按钮 4 | 5 | ```html 6 | 7 | Plain 8 | Primary 9 | Error 10 | Disabled 11 | 12 | ``` 13 | 14 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/message-provider/styles/message-provider.scss: -------------------------------------------------------------------------------- 1 | .ve-message-provider { 2 | display: flex; 3 | justify-content: center; 4 | padding: 8px; 5 | 6 | li { 7 | list-style-type: none; 8 | text-align: center; 9 | 10 | + li { 11 | margin-top: 8px; 12 | } 13 | } 14 | 15 | .ve-alert .ve-card { 16 | display: inline-block; 17 | } 18 | } -------------------------------------------------------------------------------- /packages/veno-ui/src/components/paper/docs/dimension.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 自定义尺寸 4 | 5 | 通过 `size`、`width`、`height`、`min-width`、`min-height`、`max-width`、`max-height` 自定义尺寸。 6 | 7 | ```html 8 | 9 | 10 | 11 | 12 | 13 | ``` 14 | 15 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/paper/docs/elevation.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 高度 4 | 5 | `elevation` 属性接受一个介于 0 至 24 之间的值。 6 | 7 | ```html 8 | 9 | 15 | 16 | ``` 17 | 18 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/avatar/docs/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | meta: 3 | category: Data 数据展示 4 | --- 5 | 6 | # 头像 Avatar 7 | 8 | ## 演示 9 | 10 | :::include 11 | 12 | basic.md 13 | 14 | border.md 15 | 16 | color.md 17 | 18 | shape.md 19 | 20 | size.md 21 | 22 | density.md 23 | 24 | slot.md 25 | 26 | icon.md 27 | 28 | fit-size.md 29 | 30 | ::: 31 | 32 | ## API 33 | 34 | << 7 | Primary 8 | Contained 9 | Outlined 10 | Text 11 | 12 | ``` 13 | 14 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/select/docs/slots-no-data.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 插槽-无数据 4 | 5 | 设置 `no-data-text` ,可以修改默认的无数据文案。 6 | 7 | 当前也可以通过 `no-data` 插槽,自定义渲染。 8 | 9 | ```html 10 | 11 | 12 | 13 | 16 | 17 | ``` 18 | 19 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/composables/shape/styles/_tools.scss: -------------------------------------------------------------------------------- 1 | @use 'sass:map'; 2 | @use 'variables'; 3 | @use '../../../styles/tools/functions'; 4 | 5 | @mixin use-shape($props: ()) { 6 | $props: functions.map-deep-merge(variables.$shape-props, $props); 7 | 8 | @each $name, $prop in map.get($props, 'shapes') { 9 | &--shape-#{$name} { 10 | border-radius: $prop; 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /packages/veno-ui/src/directives/ripple/styles/_variables.scss: -------------------------------------------------------------------------------- 1 | @use '../../../styles/settings'; 2 | 3 | $ripple-animation-transition-in: transform .25s settings.$decelerated-easing, 4 | opacity .1s settings.$decelerated-easing !default; 5 | $ripple-animation-transition-out: opacity .3s settings.$decelerated-easing !default; 6 | $ripple-animation-visible-opacity: .15 !default; -------------------------------------------------------------------------------- /packages/docs/src/pages/zh/dark.md: -------------------------------------------------------------------------------- 1 | --- 2 | meta: 3 | category: 开发指南 4 | title: 暗色模式 5 | --- 6 | 7 | # 暗色模式 8 | 9 | 所有组合了 `paper` 或者 `theme` 的组件都有 `theme` 属性,可以设置为 `dark` 或者 `light` (默认),或其他你实现的风格。 10 | 11 | --- 12 | 13 | ## 切换模式 14 | 15 | 可以通过最上层的 `ve-app` 的 `theme` 属性切换下面所有组件的暗色模式。 16 | 17 | ```template 18 | 19 | 20 | 21 | ``` 22 | 23 | 24 | -------------------------------------------------------------------------------- /packages/api-generator/src/index.ts: -------------------------------------------------------------------------------- 1 | // Utils 2 | import { getComponentsApi } from './components' 3 | 4 | // Types 5 | import type { Options } from './types' 6 | 7 | export const getCompleteApi = (options: Options) => { 8 | return [ 9 | ...getComponentsApi(options), 10 | // ...getComposablesApi(), 11 | // ...getDirectivesApi(), 12 | ].sort((a, b) => a.name.localeCompare(b.name)) 13 | } 14 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/input/docs/basic.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 基本用法 4 | 5 | ```html 6 | 11 | ``` 12 | 13 | ```js 14 | import { defineComponent, ref } from 'vue' 15 | 16 | export default defineComponent({ 17 | setup() { 18 | return { 19 | value: ref(''), 20 | } 21 | } 22 | }) 23 | ``` 24 | 25 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/tag/docs/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | meta: 3 | category: Data 数据展示 4 | --- 5 | 6 | # 标签 Tag 7 | 8 | ## 演示 9 | 10 | :::include 11 | 12 | basic.md 13 | 14 | closable.md 15 | 16 | clickable.md 17 | 18 | variant.md 19 | 20 | size.md 21 | 22 | shape.md 23 | 24 | color.md 25 | 26 | loading.md 27 | 28 | group.md 29 | 30 | theme.md 31 | 32 | ::: 33 | 34 | ## API 35 | 36 | << 7 | Contained 8 | Primary 9 | Error 10 | Disabled 11 | 12 | ``` 13 | 14 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/card/styles/card-avatar.scss: -------------------------------------------------------------------------------- 1 | @use '../../../styles/tools'; 2 | @use '../../../styles/settings'; 3 | 4 | .ve-card-avatar { 5 | align-items: center; 6 | display: inline-flex; 7 | margin: 0 8px; 8 | 9 | // Header 10 | .ve-card-header &:last-child { 11 | margin-inline-end: 0; 12 | } 13 | 14 | .ve-card-header &:first-child { 15 | margin-inline-start: 0; 16 | } 17 | } -------------------------------------------------------------------------------- /packages/veno-ui/src/components/pagination/docs/show-per-page-select.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 更多分页 4 | 5 | ```html 6 | 7 | ``` 8 | 9 | ```js 10 | import { defineComponent, onMounted, ref } from 'vue' 11 | 12 | export default defineComponent({ 13 | setup() { 14 | return { 15 | page: ref(6), 16 | } 17 | }, 18 | }) 19 | ``` 20 | 21 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/composables/size/styles/_variables.scss: -------------------------------------------------------------------------------- 1 | @use '../../../styles/tools/functions'; 2 | 3 | $sizes: ( 4 | 'x-small': -2, 5 | 'small': -1, 6 | 'medium': 0, 7 | 'large': 1, 8 | 'x-large': 2 9 | ) !default; 10 | 11 | $size-props: () !default; 12 | $size-props: functions.map-deep-merge( 13 | ( 14 | 'use-size': true, 15 | 'sizes': $sizes, 16 | ), 17 | $size-props 18 | ); -------------------------------------------------------------------------------- /packages/veno-ui/src/components/link/docs/basic.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 基本用法 4 | 5 | ```html 6 | 7 | Link 8 | Link 9 | color="inherit" 10 | href="#" 11 | Disabled 12 | 13 | ``` 14 | 15 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/paper/docs/basic.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 纸张变体 4 | 5 | `variant` 有 `text`、`contained`、`outlined` 预设变体。 6 | 7 | ```html 8 | 9 | 10 | 11 | 12 | 13 | ``` 14 | 15 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/switch/docs/basic.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | # 基本用法 3 | 4 | ```html 5 | 9 | 10 |
{{ value }}
11 | ``` 12 | 13 | ```js 14 | import { defineComponent, ref } from 'vue' 15 | 16 | export default defineComponent({ 17 | setup() { 18 | return { 19 | value: ref(false), 20 | } 21 | } 22 | }) 23 | ``` 24 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/avatar/docs/fit-size.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 自动调整字体大小 4 | 5 | ```html 6 | 7 | 8 | 9 | ``` 10 | 11 | ```js 12 | import { defineComponent, ref } from 'vue' 13 | 14 | export default defineComponent({ 15 | setup() { 16 | return { 17 | value: ref('艺术家'), 18 | } 19 | } 20 | }) 21 | ``` 22 | 23 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/avatar/docs/icon.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 图标 4 | 5 | ```html 6 | 7 | ``` 8 | 9 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/carousel/docs/basic.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 基本用法 4 | 5 | ```html 6 | 7 | 8 | 15 | 16 | 17 | ``` 18 | 19 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/grid/docs/basic.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 基本用法 4 | 5 | flexbox 构建的 12 等分网格系统。 6 | 7 | ```html 8 | 9 | 18 | 19 | 20 | 21 | ``` 22 | 23 | ::: 24 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/paper/docs/size.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 预设尺寸 4 | 5 | 尺寸有 `x-small` - 特小、`small` - 小、`medium` - 中等、`large` - 大、`x-large` - 特大。 6 | 7 | ```html 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | ``` 16 | 17 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/scrim/styles/scrim.scss: -------------------------------------------------------------------------------- 1 | @use '../../../styles/tools'; 2 | @use '../../../styles/settings'; 3 | 4 | .ve-scrim { 5 | pointer-events: auto; 6 | position: fixed; 7 | top: 0; 8 | right: 0; 9 | bottom: 0; 10 | left: 0; 11 | border-radius: inherit; 12 | background-color: rgb(var(--ve-theme-on-surface)); 13 | opacity: .4; 14 | transition: opacity 0.2s settings.$standard-easing; 15 | } -------------------------------------------------------------------------------- /packages/veno-ui/src/components/select/docs/max-height.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 最大高度 4 | 5 | ```html 6 | 7 | ``` 8 | 9 | ```js 10 | import { defineComponent, ref } from 'vue' 11 | 12 | export default defineComponent({ 13 | setup() { 14 | return { 15 | items: [...Array.from({ length: 20 })].map((_, i) => i + 1) 16 | } 17 | } 18 | }) 19 | ``` 20 | 21 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/tag/docs/variant.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 不同种类的标签 4 | 5 | ```html 6 | 7 | Contained 8 | Outlined 9 | Text 10 | ContainedText 11 | ContainedOutlined 12 | 13 | ``` 14 | 15 | ::: -------------------------------------------------------------------------------- /packages/docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Veno UI 9 | 10 | 11 |
12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/list/index.ts: -------------------------------------------------------------------------------- 1 | export { List } from './list' 2 | export { ListSubheader } from './list-subheader' 3 | export { ListGroup } from './list-group' 4 | export { ListItem } from './list-item' 5 | export { ListItemAvatar } from './list-item-avatar' 6 | export { ListItemHeader } from './list-item-header' 7 | export { ListItemTitle } from './list-item-title' 8 | export { ListItemSubtitle } from './list-item-subtitle' 9 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/pagination/docs/show-quick-jumper.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 快速跳跃 4 | 5 | ```html 6 | 7 | ``` 8 | 9 | ```js 10 | import { defineComponent, onMounted, ref } from 'vue' 11 | 12 | export default defineComponent({ 13 | setup() { 14 | return { 15 | page: ref(6), 16 | } 17 | }, 18 | }) 19 | ``` 20 | 21 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/styles/tools/_overlay.scss: -------------------------------------------------------------------------------- 1 | @use './absolute' as *; 2 | 3 | @mixin overlay($name: '&', $opacity: 0, $visibility: hidden, $pseudo: false) { 4 | #{$name} { 5 | @include absolute($pseudo); 6 | background-color: currentColor; 7 | border-radius: inherit; 8 | pointer-events: none; 9 | opacity: $opacity; 10 | visibility: $visibility; 11 | transition: opacity .2s ease-in-out; 12 | } 13 | } -------------------------------------------------------------------------------- /packages/utils/src/ref.ts: -------------------------------------------------------------------------------- 1 | // Utils 2 | import { isRef, ref } from 'vue' 3 | 4 | // Types 5 | import type { Ref } from 'vue' 6 | 7 | export type MaybeRef = T | Ref 8 | 9 | export type ExtractMaybeRef

= P extends MaybeRef ? T : P 10 | 11 | /** 12 | * 包裹进 ref 13 | * 14 | * @param val 15 | */ 16 | export function wrapInRef(val: T) { 17 | return (isRef(val) ? val : ref(val)) as Ref> 18 | } 19 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/alert/docs/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | meta: 3 | category: Feedback 反馈组件 4 | wai-aria: https://www.w3.org/TR/wai-aria-practices/#alert 5 | --- 6 | 7 | # 警告提示 Alert 8 | 9 | ## 演示 10 | 11 | :::include 12 | 13 | basic.md icon.md 14 | 15 | type.md density.md 16 | 17 | variant.md shape.md 18 | 19 | closable.md close-text.md 20 | 21 | append.md loading.md 22 | 23 | ::: 24 | 25 | ## API 26 | 27 | << * { 12 | opacity: 1 !important; 13 | width: 100% !important; 14 | height: 100% !important; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/input/docs/auto-resize.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 自动调整尺寸 4 | 5 | 通过设置 `auto-resize` 可以使 `input` 自调节宽度,`textarea` 自调节高度。 6 | 7 | ```html 8 | 9 | 10 | 11 | ``` 12 | 13 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/radio/docs/items.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 数据驱动 4 | 5 | 使用 `items` 数据驱动渲染单选框。 6 | 7 | ```html 8 | 13 | 14 | 19 | ``` 20 | 21 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/composables/scroll-strategy/close.ts: -------------------------------------------------------------------------------- 1 | // Utils 2 | import { bindScroll } from './util' 3 | 4 | // Types 5 | import type { ScrollStrategyData } from './index' 6 | 7 | export function closeScrollStrategy(data: ScrollStrategyData, _name: string) { 8 | function onScroll(_e: Event) { 9 | data.isActive.value = false 10 | } 11 | 12 | bindScroll(data.activatorEl.value ?? data.contentEl.value, onScroll) 13 | } 14 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/avatar/docs/shape.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 形状 4 | 5 | 头像可以是方的和圆的。 6 | 7 | ```html 8 | 9 | 10 | 11 | 12 | 13 | ``` 14 | 15 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/breadcrumb/docs/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | meta: 3 | category: Navigation 导航 4 | wai-aria: https://www.w3.org/TR/wai-aria-practices/#breadcrumb 5 | --- 6 | 7 | # 面包屑 Breadcrumb 8 | 9 | `breadcrumb` 、`breadcrumb-item`。 10 | 11 | 其中 breadcrumb-item 是 button 的包装。 12 | 13 | ## 演示 14 | 15 | :::include 16 | 17 | basic.md separator.md 18 | 19 | route.md icon.md 20 | 21 | ::: 22 | 23 | ## API 24 | 25 | << 7 | Contained 8 | Primary 9 | Error 10 | Disabled 11 | 12 | ``` 13 | 14 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/lazy/docs/basic.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | # 基本用法 3 | 4 | ```html 5 | 6 | 7 |

8 | 9 | 10 | 14 | 15 | 16 | 17 | ``` 18 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/notification-provider/styles/notification-provider.scss: -------------------------------------------------------------------------------- 1 | .ve-notification-provider { 2 | display: flex; 3 | justify-content: end; 4 | padding: 8px; 5 | 6 | li { 7 | list-style-type: none; 8 | 9 | + li { 10 | margin-top: 8px; 11 | } 12 | } 13 | 14 | .ve-alert { 15 | --ve-card---padding-y: 16px; 16 | } 17 | 18 | .ve-alert .ve-card { 19 | display: inline-block; 20 | } 21 | } -------------------------------------------------------------------------------- /packages/veno-ui/src/composables/density/styles/_variables.scss: -------------------------------------------------------------------------------- 1 | @use '../../../styles/tools/functions'; 2 | 3 | $densities: ( 4 | 'ultra-high': -2, 5 | 'high': -1, 6 | 'medium': 0, 7 | 'low': 1, 8 | 'ultra-low': 2, 9 | ) !default; 10 | 11 | $density-props: () !default; 12 | $density-props: functions.map-deep-merge( 13 | ( 14 | 'use-density': true, 15 | 'densities': $densities, 16 | ), 17 | $density-props 18 | ); -------------------------------------------------------------------------------- /packages/markdown/src/plugins/code.ts: -------------------------------------------------------------------------------- 1 | // Types 2 | import type { PluginSimple } from '../types' 3 | 4 | export const codePlugin: PluginSimple = md => { 5 | md.renderer.rules.code_inline = (tokens, index) => { 6 | const token = tokens[index] 7 | const attrs = md.renderer.renderAttrs(token) 8 | const html = md.utils.escapeHtml(token.content) 9 | return `${ html }` 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/card/index.ts: -------------------------------------------------------------------------------- 1 | export { Card } from './card' 2 | export { CardImage } from './card-image' 3 | export { CardAvatar } from './card-avatar' 4 | export { CardHeader } from './card-header' 5 | export { CardHeaderText } from './card-header-text' 6 | export { CardTitle } from './card-title' 7 | export { CardSubtitle } from './card-subtitle' 8 | export { CardActions } from './card-actions' 9 | export { CardText } from './card-text' 10 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/checkbox/docs/items.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 数据驱动 4 | 5 | 使用 `items` 数据驱动渲染复选框。 6 | 7 | ```html 8 | 13 | 14 | 19 | ``` 20 | 21 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/code/docs/color.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 背景颜色 4 | 5 | ```html 6 | 11 | console.log('code') 12 | 13 | 14 | 24 | ``` 25 | 26 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/grid/styles/container.scss: -------------------------------------------------------------------------------- 1 | @forward 'variables'; 2 | @use 'variables' as *; 3 | @use '../../../styles/settings/grid' as *; 4 | @use 'mixins' as *; 5 | 6 | .ve-container { 7 | width: 100%; 8 | padding: $container-padding-x; 9 | margin-right: auto; 10 | margin-left: auto; 11 | 12 | @include make-container-max-widths($container-max-widths, $grid-breakpoints); 13 | 14 | &--fluid { 15 | max-width: 100% 16 | } 17 | } -------------------------------------------------------------------------------- /packages/veno-ui/src/composables/tag/index.ts: -------------------------------------------------------------------------------- 1 | // Utils 2 | import { propsFactory } from '@veno-ui/utils' 3 | import type { ExtractPropTypes } from 'vue' 4 | 5 | // Types 6 | 7 | export type TagProps = ExtractPropTypes> 8 | 9 | // Composables 10 | export const makeTagProps = propsFactory({ 11 | /** 12 | * @zh 指定在根元素上使用的自定义标签 13 | */ 14 | tag: { 15 | type: String, 16 | default: 'div', 17 | }, 18 | }, 'tag') 19 | -------------------------------------------------------------------------------- /packages/veno-ui/src/composables/refs/index.ts: -------------------------------------------------------------------------------- 1 | // Utils 2 | import { onBeforeUpdate, ref } from 'vue' 3 | 4 | // Types 5 | import type { Ref } from 'vue' 6 | 7 | export function useRefs () { 8 | const refs = ref<(T | undefined)[]>([]) as Ref<(T | undefined)[]> 9 | 10 | onBeforeUpdate(() => (refs.value = [])) 11 | 12 | function updateRef(e: any, i: number) { 13 | refs.value[i] = e 14 | } 15 | 16 | return { refs, updateRef } 17 | } 18 | -------------------------------------------------------------------------------- /packages/veno-ui/src/composables/scrollbar/styles/_tools.scss: -------------------------------------------------------------------------------- 1 | @use 'sass:map'; 2 | @use 'variables'; 3 | @use '../../../styles/tools/functions'; 4 | @use '../../../styles/tools/scrollbar' as tools; 5 | 6 | @mixin use-scrollbar($props: ()) { 7 | $props: functions.map-deep-merge(variables.$scrollbar-props, $props); 8 | 9 | @if map.get($props, 'use-scrollbar') { 10 | &--beautify-scrollbar { 11 | @include tools.scrollbar(); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/alert/docs/type.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 提示类型 4 | 5 | 警告提示有 `success`、`info`、`warning`、`error` 四种类型。 6 | 7 | ```html 8 | 9 | This is an info alert. 10 | This is an success alert. 11 | This is an warning alert. 12 | This is an error alert. 13 | 14 | ``` 15 | 16 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/card/docs/density.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 卡片密度 4 | 5 | ```html 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | ``` 14 | 15 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/paper/docs/color.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 颜色 4 | 5 | ```html 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | ``` 16 | 17 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/tag/docs/size.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 不同大小的标签 4 | 5 | 标签的尺寸有 `x-small` - 特小(默认)、`small` - 小、`medium` - 中等、`large` - 大、`x-large` - 特大。 6 | 7 | ```html 8 | 9 | XSmall 10 | Small 11 | Medium 12 | Large 13 | XLarge 14 | 15 | ``` 16 | 17 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/timescale/docs/basic.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 基本用法 4 | 5 | ```html 6 | 7 | 8 | 9 | ``` 10 | 11 | ```js 12 | import { defineComponent, ref } from 'vue' 13 | 14 | export default defineComponent({ 15 | setup() { 16 | return { 17 | scale: ref(1), 18 | } 19 | } 20 | }) 21 | ``` 22 | 23 | ::: 24 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/transition/fade-in-expand-transition.ts: -------------------------------------------------------------------------------- 1 | // Styles 2 | import './styles/fade-in-expand-transition.scss' 3 | 4 | // Utils 5 | import { createJavascriptTransition } from './utils/create-transition' 6 | import { fadeInExpandTransitionGenerator } from './utils/expand-transition-generator' 7 | 8 | export const FadeInExpandTransition = createJavascriptTransition( 9 | 've-fade-in-expand-transition', 10 | fadeInExpandTransitionGenerator(), 11 | ) 12 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/form/docs/inline.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 内联表单 4 | 5 | 使用 `inline` 指定表单下控件为内联样式。 6 | 7 | ```html 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | ``` 16 | 17 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/icon/icon-class.tsx: -------------------------------------------------------------------------------- 1 | // Utils 2 | import { defineComponent } from '../../utils' 3 | 4 | // Composables 5 | import { makeIconSetProps } from '../../composables/icon/make-icon-props' 6 | 7 | export const IconClass = defineComponent({ 8 | name: 'VeIconClass', 9 | 10 | props: makeIconSetProps(), 11 | 12 | setup(props) { 13 | return () => { 14 | return 15 | } 16 | }, 17 | }) 18 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/message-provider/docs/closable.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 可关闭的 4 | 5 | ```html 6 | Closable 7 | ``` 8 | 9 | ```js 10 | import { defineComponent } from 'vue' 11 | import { message } from 'veno-ui' 12 | 13 | export default defineComponent({ 14 | setup() { 15 | return { 16 | message, 17 | } 18 | }, 19 | }) 20 | ``` 21 | 22 | ::: 23 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/icon/icon-ligature.tsx: -------------------------------------------------------------------------------- 1 | // Utils 2 | import { defineComponent } from '../../utils' 3 | 4 | // Composables 5 | import { makeIconSetProps } from '../../composables/icon/make-icon-props' 6 | 7 | export const IconLigature = defineComponent({ 8 | name: 'VeIconLigature', 9 | 10 | props: makeIconSetProps(), 11 | 12 | setup(props) { 13 | return () => { 14 | return { props.icon as string } 15 | } 16 | }, 17 | }) 18 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/tag-group/styles/tag-group.scss: -------------------------------------------------------------------------------- 1 | @use '../../../styles/tools'; 2 | @use '../../../styles/settings'; 3 | 4 | // Blocks 5 | .ve-tag-group { 6 | display: flex; 7 | flex-wrap: wrap; 8 | max-width: 100%; 9 | min-width: 0; 10 | overflow-x: auto; 11 | padding: 3px 0 3px 6px; 12 | 13 | .ve-tag { 14 | margin: 3px 6px 3px 0; 15 | } 16 | 17 | // Modifiers 18 | &--column { 19 | flex-wrap: wrap; 20 | white-space: normal; 21 | } 22 | } -------------------------------------------------------------------------------- /packages/veno-ui/src/components/transition/styles/fade-in-expand-transition.scss: -------------------------------------------------------------------------------- 1 | @use '../../../styles/tools'; 2 | 3 | .ve-fade-in-expand-transition { 4 | @include tools.use-transition(.3s, visible); 5 | 6 | &-leave-from, 7 | &-enter-to { 8 | transform: scale(1); 9 | opacity: 1; 10 | } 11 | 12 | &-leave-to, 13 | &-enter-from { 14 | transform: scale(0.85); 15 | opacity: 0; 16 | margin-top: 0 !important; 17 | margin-bottom: 0 !important; 18 | } 19 | } -------------------------------------------------------------------------------- /packages/markdown/src/plugins/table.ts: -------------------------------------------------------------------------------- 1 | // Types 2 | import type { PluginSimple } from '../types' 3 | import type { RenderRule } from 'markdown-it/lib/renderer' 4 | 5 | export const tablePlugin: PluginSimple = function (md) { 6 | const render: RenderRule = (tokens, index) => { 7 | tokens[index].tag = 've-table' 8 | return md.renderer.renderToken(tokens, index, md.options) 9 | } 10 | md.renderer.rules.table_open = render 11 | md.renderer.rules.table_close = render 12 | } 13 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/select/docs/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Form 表单组件 3 | --- 4 | 5 | # 选择器 Select 6 | 7 | 弹出下拉菜单供用户选择,支持多选。 8 | 9 | 当选项少于 5 项时,建议直接使用 Radio 将选项平铺。 10 | 11 | ## 演示 12 | 13 | :::include 14 | 15 | basic.md 16 | 17 | max-height.md 18 | 19 | custom-text-value.md 20 | 21 | multiple.md 22 | 23 | filterable.md 24 | 25 | search.md 26 | 27 | slots-item.md 28 | 29 | slots-tag.md 30 | 31 | slots-no-data.md 32 | 33 | ::: 34 | 35 | ## API 36 | 37 | << 7 | 11 | 提示 12 | 13 | 14 | 18 | 提示 19 | 20 | 21 | ``` 22 | 23 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/breadcrumb/docs/separator.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 自定义分隔符 4 | 5 | 通过 separator 插槽自定义分隔符。 6 | 7 | ```html 8 | 9 | Home 10 | Channel 11 | News 12 | 15 | 16 | ``` 17 | 18 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/icon/docs/custom-preset.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 自定义预设图标 4 | 5 | ```ts 6 | import { createVeno } from 'veno-ui' 7 | 8 | const veno = createVeno({ 9 | // 自定义预设图标集合 10 | icons: { 11 | aliases: { 12 | light: 'M12,18V6A6,6 0 0,1 18,12A6,6 0 0,1 12,18M20,15.31L23.31,12L20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31Z' 13 | } 14 | }, 15 | // ...其他选项 16 | }) 17 | 18 | export default veno 19 | ``` 20 | 21 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/transition/styles/menu-transition.scss: -------------------------------------------------------------------------------- 1 | @use '../../../styles/tools'; 2 | 3 | .ve-menu-transition { 4 | @include tools.use-transition(); 5 | 6 | &-enter-from, 7 | &-appear-from, 8 | &-leave-to { 9 | transform: scaleY(0.9); 10 | transform-origin: 0 0; 11 | opacity: 0; 12 | } 13 | 14 | &-enter-to, 15 | &-appear-to, 16 | &-leave-from { 17 | transform: scaleY(1); 18 | transform-origin: 0 0; 19 | opacity: 1; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /packages/veno-ui/src/styles/tools/_transition.scss: -------------------------------------------------------------------------------- 1 | @use '../settings/transition' as settings; 2 | 3 | @mixin use-transition($duration: .3s, $overflow: inherit) { 4 | &-enter-active { 5 | overflow: $overflow; 6 | transition: $duration settings.$standard-easing; 7 | } 8 | 9 | &-leave-active { 10 | overflow: $overflow; 11 | transition: $duration settings.$standard-easing; 12 | } 13 | 14 | &-move { 15 | transition: transform .5s settings.$standard-easing; 16 | } 17 | } -------------------------------------------------------------------------------- /packages/markdown/src/plugins/paragraph.ts: -------------------------------------------------------------------------------- 1 | // Types 2 | import type { PluginSimple } from '../types' 3 | import type { RenderRule } from 'markdown-it/lib/renderer' 4 | 5 | export const paragraphPlugin: PluginSimple = function (md) { 6 | const render: RenderRule = (tokens, index) => { 7 | tokens[index].tag = 've-p' 8 | return md.renderer.renderToken(tokens, index, md.options) 9 | } 10 | md.renderer.rules.paragraph_close = render 11 | md.renderer.rules.paragraph_open = render 12 | } 13 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/transition/styles/scale-transition.scss: -------------------------------------------------------------------------------- 1 | @use '../../../styles/tools'; 2 | 3 | .ve-scale-transition { 4 | @include tools.use-transition(); 5 | 6 | &-enter-active, 7 | &-leave-active { 8 | transition-property: transform, opacity; 9 | } 10 | 11 | &-enter-from, 12 | &-leave-to { 13 | opacity: 0; 14 | transform: scale(.85); 15 | } 16 | 17 | &-enter-to, 18 | &-leave-from { 19 | opacity: 1; 20 | transform: scale(1); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /packages/veno-ui/src/composables/position/styles/_tools.scss: -------------------------------------------------------------------------------- 1 | @use 'sass:map'; 2 | @use 'variables'; 3 | @use '../../../styles/tools/functions'; 4 | 5 | @mixin use-position($props: ()) { 6 | $props: functions.map-deep-merge(variables.$position-props, $props); 7 | $important: map.get($props, 'position-important'); 8 | 9 | @each $position in map.get($props, 'positions') { 10 | &--#{$position} { 11 | position: #{$position} if($important, !important, null); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/transition/index.ts: -------------------------------------------------------------------------------- 1 | export { FadeTransition } from './fade-transition' 2 | export { ScaleTransition } from './scale-transition' 3 | export { ExpandTransition, ExpandXTransition } from './expand-transition' 4 | export { DialogTransition } from './dialog-transition' 5 | export { MenuTransition } from './menu-transition' 6 | export { FadeInExpandTransition } from './fade-in-expand-transition' 7 | export { SlideRightFadeInExpandTransition } from './slide-right-fade-in-expand-transition' 8 | -------------------------------------------------------------------------------- /packages/markdown/rollup.config.js: -------------------------------------------------------------------------------- 1 | require('esbuild-register') 2 | 3 | module.exports = require('../../scripts/rollup.config.ts').createConfig({ 4 | external: [ 5 | '@veno-ui/utils', 6 | 'markdown-it', 7 | 'gray-matter', 8 | 'markdown-it-anchor', 9 | 'markdown-it-emoji/lib/data/full.json', 10 | 'diacritics', 11 | 'markdown-it/lib/common/html_blocks', 12 | 'markdown-it/lib/common/html_re', 13 | 'markdown-it/lib/token', 14 | 'markdown-it-container', 15 | ], 16 | }) 17 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/button/docs/color.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 按钮颜色 4 | 5 | ```html 6 | 7 | Primary 8 | Secondary 9 | Success 10 | Warning 11 | Error 12 | Info 13 | #8a2be2 14 | 15 | ``` 16 | 17 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/button/docs/shape.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 按钮形状 4 | 5 | 按钮的形状有 `tile` - 方的砖块、`rounded` - 带点圆角(默认)、`pill` - 药丸、`circle` - 圆圈。 6 | 7 | ```html 8 | 9 | Tile 10 | Rounded 11 | Pill 12 | Circle 13 | 14 | ``` 15 | 16 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/carousel/styles/carousel-activator.scss: -------------------------------------------------------------------------------- 1 | .ve-carousel-activator { 2 | height: 8px; 3 | width: 8px; 4 | background-color: currentColor; 5 | opacity: .3; 6 | border-radius: 4px; 7 | cursor: pointer; 8 | outline: none; 9 | transition: .3s cubic-bezier(0.4, 0, 0.2, 1); 10 | transition-property: width, opacity, background-color; 11 | 12 | &--active { 13 | opacity: 1; 14 | width: 16px; 15 | } 16 | 17 | & + & { 18 | margin-left: 12px; 19 | } 20 | } -------------------------------------------------------------------------------- /packages/veno-ui/src/components/tag/docs/shape.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 不同形状的标签 4 | 5 | ```html 6 | 7 | 艺术家 8 | 艺术家 9 | 艺术家 10 | 11 | ``` 12 | 13 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/date-picker/docs/range.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 时间范围 4 | 5 | ```html 6 | 13 | 14 | 15 | ``` 16 | 17 | ```js 18 | import { defineComponent, ref } from 'vue' 19 | 20 | export default defineComponent({ 21 | setup() { 22 | return { 23 | value: ref([]), 24 | } 25 | } 26 | }) 27 | ``` 28 | 29 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/date-picker/key.ts: -------------------------------------------------------------------------------- 1 | import type { ComputedRef, InjectionKey, Ref } from 'vue' 2 | import type { DateInstance } from '../../composables' 3 | 4 | export interface DateRangeInstance { 5 | selected: ComputedRef 6 | select: (value: string) => void 7 | inRange: (value: number) => boolean 8 | preview: (value: boolean) => void 9 | isPreview: Ref 10 | } 11 | 12 | export const DateRangeKey: InjectionKey = Symbol.for('veno-ui:date-range') 13 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/form/styles/form.scss: -------------------------------------------------------------------------------- 1 | // Blocks 2 | .ve-form { 3 | // Modifiers 4 | &--inline { 5 | display: flex; 6 | flex-direction: row; 7 | flex-wrap: wrap; 8 | } 9 | 10 | &--vertical:not(#{&}--inline), 11 | &--horizontal:not(#{&}--inline) { 12 | .ve-form-control--hide-details + .ve-form-control--hide-details { 13 | margin-top: 8px; 14 | } 15 | } 16 | 17 | &--inline { 18 | .ve-form-control--hide-details { 19 | margin: 4px; 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /packages/veno-ui/src/components/tag/docs/group.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 标签组 4 | 5 | ```html 6 | 7 | Tag1 8 | Tag2 9 | 10 | 11 | 12 | ``` 13 | 14 | ```js 15 | import { defineComponent, ref } from 'vue' 16 | 17 | export default defineComponent({ 18 | setup() { 19 | return { 20 | value: ref('tag1'), 21 | } 22 | } 23 | }) 24 | ``` 25 | 26 | ::: -------------------------------------------------------------------------------- /packages/docs/src/layouts/default.vue: -------------------------------------------------------------------------------- 1 | 22 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/carousel/styles/carousel.scss: -------------------------------------------------------------------------------- 1 | @use '../../../styles/tools'; 2 | @use '../../../styles/settings'; 3 | 4 | .ve-carousel { 5 | position: relative; 6 | overflow: hidden; 7 | @include tools.use-paper(( 8 | 'use-size': false, 9 | 'use-density': false, 10 | )); 11 | 12 | &__controls { 13 | position: absolute; 14 | bottom: 16px; 15 | left: 0; 16 | width: 100%; 17 | display: flex; 18 | justify-content: center; 19 | align-items: center; 20 | } 21 | } -------------------------------------------------------------------------------- /packages/veno-ui/src/components/transition/styles/slide-right-fade-in-expand-transition.scss: -------------------------------------------------------------------------------- 1 | @use '../../../styles/tools'; 2 | 3 | .ve-slide-right-fade-in-expand-transition { 4 | @include tools.use-transition(.3s, visible); 5 | 6 | &-leave-from, 7 | &-enter-to { 8 | transform: translateX(0); 9 | opacity: 1; 10 | } 11 | 12 | &-leave-to, 13 | &-enter-from { 14 | transform: translateX(100%); 15 | opacity: 0; 16 | margin-top: 0 !important; 17 | margin-bottom: 0 !important; 18 | } 19 | } -------------------------------------------------------------------------------- /packages/veno-ui/src/components/app/styles/app.scss: -------------------------------------------------------------------------------- 1 | @forward 'variables'; 2 | @use 'variables' as *; 3 | @use '../../../styles/tools'; 4 | 5 | .ve-app { 6 | background-color: rgb(var(--ve-theme-background)); 7 | color: rgb(var(--ve-theme-on-background)); 8 | @include tools.use-layout(); 9 | 10 | &__wrapper { 11 | position: relative; 12 | display: flex; 13 | flex: 1 1 auto; 14 | backface-visibility: hidden; 15 | min-height: 100vh; 16 | max-width: 100%; 17 | } 18 | } 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/list/styles/list-group.scss: -------------------------------------------------------------------------------- 1 | @forward 'variables'; 2 | @use 'variables' as *; 3 | @use '../../../styles/tools'; 4 | 5 | // Blocks 6 | .ve-list-group { 7 | --ve-parent-padding: var(--ve-indent-padding, 0px); 8 | 9 | &--prepend { 10 | --ve-parent-padding: calc(var(--ve-list-item-avatar---height, 28px) + var(--ve-indent-padding, 0px)); 11 | } 12 | 13 | &__items { 14 | --ve-indent-padding: calc(var(--ve-list-item---padding-x, 12px) + var(--ve-parent-padding, 0px)); 15 | } 16 | } -------------------------------------------------------------------------------- /packages/veno-ui/src/components/transition/slide-right-fade-in-expand-transition.ts: -------------------------------------------------------------------------------- 1 | // Styles 2 | import './styles/slide-right-fade-in-expand-transition.scss' 3 | 4 | // Utils 5 | import { createJavascriptTransition } from './utils/create-transition' 6 | import { fadeInExpandTransitionGenerator } from './utils/expand-transition-generator' 7 | 8 | export const SlideRightFadeInExpandTransition = createJavascriptTransition( 9 | 've-slide-right-fade-in-expand-transition', 10 | fadeInExpandTransitionGenerator(), 11 | ) 12 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/date-picker/styles/date-picker.scss: -------------------------------------------------------------------------------- 1 | // Blocks 2 | .ve-date-picker { 3 | // Elements 4 | 5 | // InputControl 6 | .ve-input-control, 7 | .ve-input-control__input { 8 | cursor: pointer; 9 | } 10 | 11 | // InputControlAppendInner 12 | .ve-input-control--dirty:hover .ve-input-control__clearable + .ve-input-control__append-inner { 13 | display: none; 14 | } 15 | 16 | .ve-input-control__append-inner .ve-icon { 17 | opacity: var(--ve-medium-emphasis-opacity); 18 | } 19 | } -------------------------------------------------------------------------------- /packages/veno-ui/src/components/badge/docs/max.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 最大值 4 | 5 | ```html 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | ``` 24 | 25 | ::: 26 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/form/docs/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Form 表单组件 3 | --- 4 | 5 | # 表单 Form 6 | 7 | ## 演示 8 | 9 | :::include 10 | 11 | basic.md 12 | 13 | items.md 14 | 15 | inline.md 16 | 17 | ::: 18 | 19 | ## API 20 | 21 | - 表单控件 form-control 22 | - 输入控件 input-control 23 | - 选择控件 selection-control 24 | - 选择组控件 selection-group-control 25 | - 原生控件 native-control 26 | 27 | << 8 | Start 9 | Finish 10 | 11 | 12 | 13 | ``` 14 | 15 | ```js 16 | import { defineComponent, ref } from 'vue' 17 | 18 | export default defineComponent({ 19 | setup() { 20 | return { 21 | progress: ref(), 22 | } 23 | } 24 | }) 25 | ``` 26 | 27 | ::: -------------------------------------------------------------------------------- /packages/vite-plugin-markdown/src/options.ts: -------------------------------------------------------------------------------- 1 | // Types 2 | import type { Options, ResolvedOptions } from './types' 3 | 4 | const DEFAULT_OPTIONS = { 5 | root: null, 6 | include: /\.md$/, 7 | customSfcBlocks: ['route', 'i18n'], 8 | markdownOptions: {}, 9 | markdownUses: [], 10 | markdownSetup: () => {}, 11 | wrapper: 'div', 12 | transforms: {}, 13 | } 14 | 15 | export function resolveOptions(userOptions?: Options): ResolvedOptions { 16 | return Object.assign(DEFAULT_OPTIONS, userOptions || {}) as ResolvedOptions 17 | } 18 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/tooltip/docs/transition.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 去除动画 4 | 5 | ```html 6 | 7 | 12 | 提示 13 | 14 | 15 | 20 | 提示 21 | 22 | 23 | ``` 24 | 25 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/badge/docs/location.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 位置 4 | 5 | ```html 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | ``` 24 | 25 | ::: 26 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/pagination/styles/pagination.scss: -------------------------------------------------------------------------------- 1 | .ve-pagination { 2 | display: flex; 3 | align-items: center; 4 | 5 | &__wrapper { 6 | display: inline-flex; 7 | list-style-type: none; 8 | justify-content: center; 9 | } 10 | 11 | &__item, 12 | &__first, 13 | &__prev, 14 | &__next, 15 | &__last { 16 | margin: 4px; 17 | } 18 | 19 | &__per-page, 20 | &__quick-jumper { 21 | margin: 4px 6px; 22 | } 23 | 24 | &__quick-jumper { 25 | display: flex; 26 | align-items: center; 27 | } 28 | } -------------------------------------------------------------------------------- /packages/veno-ui/src/styles/settings/_transition.scss: -------------------------------------------------------------------------------- 1 | // Mapping from transition to easings: 2 | // fast-out-slow-in -> standard 3 | // linear-out-slow-in -> decelerated 4 | // fast-out-linear-in -> accelerated 5 | // ease-in-out -> standard or accelerated depending on usage 6 | // fast-in-fast-out -> accelerated 7 | // swing -> standard 8 | 9 | // 标准曲线。 10 | $standard-easing: cubic-bezier(0.4, 0, 0.2, 1); 11 | // 减速曲线,常用于物体进入。 12 | $decelerated-easing: cubic-bezier(0.0, 0, 0.2, 1); 13 | // 加速曲线,常用于物体离开。 14 | $accelerated-easing: cubic-bezier(0.4, 0, 1, 1); -------------------------------------------------------------------------------- /packages/veno-ui/src/components/messages/styles/messages.scss: -------------------------------------------------------------------------------- 1 | .ve-messages { 2 | color: rgba(var(--ve-theme-on-surface), var(--ve-medium-emphasis-opacity)); 3 | flex: 1 1 auto; 4 | font-size: 12px; 5 | min-height: 14px; 6 | min-width: 1px; // Ensure takes up space with no messages and inside of flex 7 | position: relative; 8 | 9 | &__message { 10 | line-height: 12px; 11 | word-break: break-word; 12 | overflow-wrap: break-word; 13 | word-wrap: break-word; 14 | hyphens: auto; 15 | transition-duration: 150ms; 16 | } 17 | } -------------------------------------------------------------------------------- /packages/veno-ui/src/components/layout/docs/app-layout.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 应用布局 4 | 5 | `app` 基于 `layout` 封装,`header` 、`drawer` 基于 `layout-item` 封装。 6 | 7 | 此处作为演示填写的 `position="absolute"`,实际使用默认值即可。 8 | 9 | ```html 10 | 11 | 12 | 13 | 14 | 15 | 16 | ``` 17 | 18 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/composables/nested/active-strategies/classicActiveStrategy.ts: -------------------------------------------------------------------------------- 1 | // Types 2 | import type { ActiveStrategyFn } from '.' 3 | 4 | /** 5 | * Class 激活策略。 6 | * 7 | * @param single 8 | */ 9 | export const classicActiveStrategy = (single?: boolean): ActiveStrategyFn => { 10 | return ({ id, value, active }) => { 11 | const newActive: Set = single ? new Set() : active 12 | 13 | if (value) { 14 | newActive.add(id) 15 | } else { 16 | newActive.delete(id) 17 | } 18 | 19 | return newActive 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /packages/veno-ui/src/styles/settings/_rounded.scss: -------------------------------------------------------------------------------- 1 | @use 'sass:math'; 2 | @use '../tools/functions'; 3 | 4 | $border-radius: 4px !default; 5 | 6 | $rounded: () !default; 7 | $rounded: functions.map-deep-merge( 8 | ( 9 | 0: 0, 10 | null: $border-radius, 11 | 'xs': 0, 12 | 'sm': math.div($border-radius, 2), 13 | 'md': $border-radius, 14 | 'lg': $border-radius * 2, 15 | 'xl': $border-radius * 6, 16 | 'pill': 9999px, 17 | 'circle': 50%, 18 | 'shaped': $border-radius * 6 0 19 | ), 20 | $rounded 21 | ); -------------------------------------------------------------------------------- /packages/veno-ui/src/components/avatar/docs/basic.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 基本用法 4 | 5 | ```html 6 | 7 | 8 | 9 | 10 | 11 | 12 | ``` 13 | 14 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/composables/size/styles/_tools.scss: -------------------------------------------------------------------------------- 1 | @use 'sass:map'; 2 | @use 'sass:string'; 3 | @use 'variables'; 4 | @use '../../../styles/tools/functions'; 5 | @use '../../../styles/settings/variables' as settings; 6 | 7 | @mixin use-size($props: ()) { 8 | $props: functions.map-deep-merge(variables.$size-props, $props); 9 | 10 | @if map.get($props, 'use-size') { 11 | @each $name, $multiplier in map.get($props, 'sizes') { 12 | &--size-#{$name} { 13 | --ve-size-offset: #{$multiplier * settings.$spacer}; 14 | } 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /packages/veno-ui/src/components/dialog/docs/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Feedback 反馈组件 3 | --- 4 | 5 | # 对话框 Dialog 6 | 7 | 对话框是 `modal` 窗体的一种类型,它通常在应用程序内容之前呈现,来提供一些关键信息,或者要求用户做出决策。 对话框出现的时候会禁用应用程序的所有功能,只有被确认、被取消或已采取其他必要的操作时,对话框会从屏幕中消失。 8 | 9 | 对话框会带有目的性地打断工作流程,所以请您谨慎使用。 10 | 11 | ## 演示 12 | 13 | :::include 14 | 15 | basic.md 16 | 17 | persistent.md 18 | 19 | form.md 20 | 21 | v-model.md 22 | 23 | scrollable.md 24 | 25 | nested.md 26 | 27 | menu-dialog.md 28 | 29 | dimension.md 30 | 31 | fullscreen.md 32 | 33 | ::: 34 | 35 | ## API 36 | 37 | << 9 | This is an info alert. 10 | This is an info alert. 11 | This is an info alert. 12 | This is an info alert. 13 | This is an info alert. 14 | 15 | ``` 16 | 17 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/badge/docs/basic.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 基本用法 4 | 5 | ```html 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | ``` 22 | 23 | ::: 24 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/button/docs/outlined.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 描边按钮 4 | 5 | ```html 6 | 7 | Outlined 8 | Primary 9 | Error 10 | Dashed 11 | Dotted 12 | Disabled 13 | 14 | ``` 15 | 16 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/button/docs/size.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 按钮尺寸 4 | 5 | 按钮的尺寸有 `x-small` - 特小、`small` - 小、`medium` - 中等(默认)、`large` - 大、`x-large` - 特大。 6 | 7 | ```html 8 | 9 | XSmall 10 | Small 11 | Medium 12 | Large 13 | XLarge 14 | 15 | ``` 16 | 17 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/card/docs/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | meta: 3 | category: Data 数据展示 4 | --- 5 | 6 | # 卡片 Card 7 | 8 | ## 演示 9 | 10 | :::include 11 | 12 | basic.md density.md 13 | 14 | shape.md personal-card-concise.md 15 | 16 | click.md personal-card.md 17 | 18 | slot.md 19 | 20 | ::: 21 | 22 | ## API 23 | 24 | << { 15 | require('./lib.fix.ts') 16 | }).catch((error) => { 17 | console.error(error) 18 | process.exit(1) 19 | }) 20 | 21 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/button/docs/group.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 组合按钮 4 | 5 | ```html 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | ``` 23 | 24 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/card/styles/card-actions.scss: -------------------------------------------------------------------------------- 1 | .ve-card-actions { 2 | // CSS Variables 3 | // --ve-card-actions---padding-x var(--ve-card---padding-x, 12px) 4 | // --ve-card-actions---padding-y var(--ve-card---padding-y, 12px) 5 | --ve-padding-x: var(--ve-card-actions---padding-x, var(--ve-card---padding-x, 12px)); 6 | --ve-padding-y: calc(var(--ve-card-actions---padding-y, var(--ve-card---padding-y, 12px)) + var(--ve-density-offset, 0px)); 7 | align-items: center; 8 | display: flex; 9 | flex: 1 1 0; 10 | padding: var(--ve-padding-y) var(--ve-padding-x); 11 | } -------------------------------------------------------------------------------- /packages/veno-ui/src/components/transition/expand-transition.ts: -------------------------------------------------------------------------------- 1 | // Styles 2 | import './styles/expand-transition.scss' 3 | 4 | // Utils 5 | import { createJavascriptTransition } from './utils/create-transition' 6 | import { expandTransitionGenerator } from './utils/expand-transition-generator' 7 | 8 | export const ExpandTransition = createJavascriptTransition( 9 | 've-expand-transition', 10 | expandTransitionGenerator(), 11 | ) 12 | 13 | export const ExpandXTransition = createJavascriptTransition( 14 | 've-expand-x-transition', 15 | expandTransitionGenerator('', true), 16 | ) 17 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/typography/headers.ts: -------------------------------------------------------------------------------- 1 | // Styles 2 | import './styles/headers.scss' 3 | 4 | // Utils 5 | import { createSimpleFunctional } from '@veno-ui/utils' 6 | 7 | export const H1 = createSimpleFunctional('ve-h1', 'h1', 'VeH1') 8 | export const H2 = createSimpleFunctional('ve-h2', 'h2', 'VeH2') 9 | export const H3 = createSimpleFunctional('ve-h3', 'h3', 'VeH3') 10 | export const H4 = createSimpleFunctional('ve-h4', 'h4', 'VeH4') 11 | export const H5 = createSimpleFunctional('ve-h5', 'h5', 'VeH5') 12 | export const H6 = createSimpleFunctional('ve-h6', 'h6', 'VeH6') 13 | -------------------------------------------------------------------------------- /packages/veno-ui/src/composables/elevation/styles/_tools.scss: -------------------------------------------------------------------------------- 1 | @use 'sass:map'; 2 | @use 'sass:string'; 3 | @use 'variables'; 4 | @use '../../../styles/tools/functions'; 5 | @use '../../../styles/tools/elevation' as tools; 6 | 7 | @mixin use-elevation($props: ()) { 8 | $props: functions.map-deep-merge(variables.$elevation-props, $props); 9 | 10 | @if map.get($props, 'use-elevation') { 11 | $z: 24; 12 | @while $z >= 0 { 13 | &--elevation-#{$z} { 14 | @include tools.elevation($z, $important: true); 15 | } 16 | $z: $z - 1; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /packages/veno-ui/src/composables/loading/index.ts: -------------------------------------------------------------------------------- 1 | // Utils 2 | import { computed } from 'vue' 3 | import { getCurrentInstanceName, propsFactory } from '@veno-ui/utils' 4 | 5 | export interface LoadingProps { 6 | loading?: boolean 7 | } 8 | 9 | export const makeLoadingProps = propsFactory({ 10 | loading: Boolean, 11 | }, 'loading') 12 | 13 | export function useLoading( 14 | props: LoadingProps, 15 | name = getCurrentInstanceName(), 16 | ) { 17 | return { 18 | loadingClasses: computed(() => ({ 19 | [`${ name }--loading`]: props.loading, 20 | })), 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /packages/veno-ui/src/components/card/docs/slot.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 所有可用的组件(插槽) 4 | 5 | ```html 6 | 7 |
Media
8 | 9 | Prepend 10 | 11 | Title 12 | Subtitle 13 | 14 | Append 15 | 16 | Text 17 | Actions 18 |
19 | ``` 20 | 21 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/dialog/docs/persistent.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 点击外面不关闭 4 | 5 | ```html 6 | 7 | 10 | 11 | 18 | 19 | ``` 20 | 21 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/list/docs/basic.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 基本用法 4 | 5 | ```html 6 | 7 | Subtitle 8 | 9 | 12 | 13 | 14 | 15 | 16 | 17 | ``` 18 | 19 | ::: -------------------------------------------------------------------------------- /packages/veno-ui/src/components/message-provider/docs/variant.md: -------------------------------------------------------------------------------- 1 | :::demo 2 | 3 | # 变体 4 | 5 | ```html 6 | 7 | Contained 8 | ContainedText 9 | 10 | ``` 11 | 12 | ```js 13 | import { defineComponent } from 'vue' 14 | import { message } from 'veno-ui' 15 | 16 | export default defineComponent({ 17 | setup() { 18 | return { 19 | message, 20 | } 21 | }, 22 | }) 23 | ``` 24 | 25 | ::: 26 | -------------------------------------------------------------------------------- /packages/markdown/src/plugins/hoist.ts: -------------------------------------------------------------------------------- 1 | // Types 2 | import type { PluginSimple } from '../types' 3 | 4 | // hoist