├── .changeset ├── README.md └── config.json ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report_form.yml │ ├── config.yml │ └── feature_request.md └── workflows │ ├── issues.yml │ ├── node.js2.yml │ ├── publish.yml │ └── test.yml ├── .gitignore ├── .idea ├── .gitignore ├── jsLibraryMappings.xml ├── modules.xml ├── semi-design-vue.iml ├── vcs.xml └── watcherTasks.xml ├── .npmrc.bak ├── .prettierrc.js ├── .storybook ├── main.ts ├── preview-head.html └── preview.ts ├── LICENSE ├── README.md ├── docs ├── .vitepress │ ├── config.mts │ ├── mdPlugin │ │ └── overview.ts │ └── theme │ │ ├── index.ts │ │ └── layout │ │ ├── InlineSvg.vue │ │ ├── Layout.vue │ │ ├── index.mts │ │ ├── navItem.ts │ │ └── navLink.tsx ├── ApiType.tsx ├── DesignToken.vue ├── LiveCode.vue ├── LiveCode2.vue ├── LiveCodeClient.vue ├── Notice.tsx ├── PureA.tsx ├── api-examples.md ├── images │ ├── docIcons │ │ ├── dark_mode.svg │ │ ├── doc-a11y.svg │ │ ├── doc-accordion.svg │ │ ├── doc-accordion.vue │ │ ├── doc-anchor.svg │ │ ├── doc-audioplayer.svg │ │ ├── doc-autocomplete.svg │ │ ├── doc-avatar.svg │ │ ├── doc-backtop.svg │ │ ├── doc-badge.svg │ │ ├── doc-banner.svg │ │ ├── doc-breadcrumb.svg │ │ ├── doc-button.svg │ │ ├── doc-calendar.svg │ │ ├── doc-card.svg │ │ ├── doc-carousel.svg │ │ ├── doc-cascader.svg │ │ ├── doc-changelog.svg │ │ ├── doc-chat.svg │ │ ├── doc-checkbox.svg │ │ ├── doc-code.svg │ │ ├── doc-codehighlight.svg │ │ ├── doc-codesandbox.svg │ │ ├── doc-collapsible.svg │ │ ├── doc-colorPlatteNew.svg │ │ ├── doc-colors.svg │ │ ├── doc-configprovider.svg │ │ ├── doc-contentguidelines.svg │ │ ├── doc-cropper.svg │ │ ├── doc-darkmode.svg │ │ ├── doc-datepicker.svg │ │ ├── doc-descriptions.svg │ │ ├── doc-divider.svg │ │ ├── doc-dragmove.svg │ │ ├── doc-dropdown.svg │ │ ├── doc-empty.svg │ │ ├── doc-faq.svg │ │ ├── doc-figma.svg │ │ ├── doc-form.svg │ │ ├── doc-gettingstarted.svg │ │ ├── doc-gettingstarted.vue │ │ ├── doc-grid.svg │ │ ├── doc-highlight.svg │ │ ├── doc-i18n.svg │ │ ├── doc-icons.svg │ │ ├── doc-image.svg │ │ ├── doc-input.svg │ │ ├── doc-inputnumber.svg │ │ ├── doc-intro.svg │ │ ├── doc-intro.vue │ │ ├── doc-jsonviewer.svg │ │ ├── doc-language.svg │ │ ├── doc-layout.svg │ │ ├── doc-list.svg │ │ ├── doc-lottie.svg │ │ ├── doc-markdown.svg │ │ ├── doc-migrate.svg │ │ ├── doc-modal.svg │ │ ├── doc-navigation.svg │ │ ├── doc-notification.svg │ │ ├── doc-overflowList.svg │ │ ├── doc-overview.svg │ │ ├── doc-pagination.svg │ │ ├── doc-palette.svg │ │ ├── doc-pincode.svg │ │ ├── doc-popconfirm.svg │ │ ├── doc-popover-1.svg │ │ ├── doc-popover.svg │ │ ├── doc-progress.svg │ │ ├── doc-radio.svg │ │ ├── doc-rating.svg │ │ ├── doc-recycle.svg │ │ ├── doc-scrolllist.svg │ │ ├── doc-select.svg │ │ ├── doc-semi-logo.svg │ │ ├── doc-sidesheet.svg │ │ ├── doc-skeleton.svg │ │ ├── doc-slider.svg │ │ ├── doc-space.svg │ │ ├── doc-spin.svg │ │ ├── doc-steps.svg │ │ ├── doc-switch.svg │ │ ├── doc-table.svg │ │ ├── doc-tabs.svg │ │ ├── doc-tag.svg │ │ ├── doc-tagInput.svg │ │ ├── doc-tailwind.svg │ │ ├── doc-theme.svg │ │ ├── doc-timeline.svg │ │ ├── doc-timepicker.svg │ │ ├── doc-toast.svg │ │ ├── doc-token.svg │ │ ├── doc-tooltip.svg │ │ ├── doc-transfer.svg │ │ ├── doc-tree.svg │ │ ├── doc-treeselect.svg │ │ ├── doc-typography.svg │ │ ├── doc-updateV1.svg │ │ ├── doc-updateV2.svg │ │ ├── doc-upload.svg │ │ ├── doc-userGuide.svg │ │ ├── doc-vchart.svg │ │ ├── doc-vector.svg │ │ ├── doc-vscode.svg │ │ ├── doc-webcomponents.svg │ │ ├── index.js │ │ ├── light_mode.svg │ │ ├── search-design.svg │ │ ├── search-form.svg │ │ ├── search-icon.svg │ │ ├── search-material.svg │ │ ├── search-site.svg │ │ ├── search-start.svg │ │ ├── search-table.svg │ │ ├── search-text.svg │ │ ├── semi-design.svg │ │ ├── semi-logo.svg │ │ ├── semi_logo.svg │ │ └── webcast_logo.svg │ └── semi-icon.png ├── index.md ├── index.scss ├── markdown-examples.md └── src │ ├── index.md │ ├── public │ ├── BingSiteAuth.xml │ ├── date-fns.js │ ├── designToken.json │ ├── es-module-shims.wasm.js │ ├── font │ │ ├── Inter-Bold.ttf │ │ └── Inter-Regular.ttf │ ├── lodash.js │ ├── reset.css │ ├── runtime-dom.esm-browser.js │ ├── semiIconsLab │ │ ├── favicon.ico │ │ ├── semi-icons-vue.js │ │ └── style.css │ └── server-renderer.esm-browser.js │ └── zh-CN │ ├── basic │ ├── divider │ │ ├── demo │ │ │ ├── DividerDemo0.vue │ │ │ ├── DividerDemo1.vue │ │ │ └── codes.ts │ │ └── index.md │ ├── grid │ │ ├── demo │ │ │ ├── Flex.vue │ │ │ ├── FlexJustify.vue │ │ │ ├── FlexOder.vue │ │ │ ├── FlexReact.vue │ │ │ ├── GridBase.vue │ │ │ ├── GutterInterval.vue │ │ │ └── Offset.vue │ │ ├── index-en-US.md │ │ └── index.md │ ├── icon │ │ └── index.md │ ├── layout │ │ ├── demo │ │ │ ├── LeftNavSide.vue │ │ │ ├── LeftSide.vue │ │ │ ├── ReactLayout.vue │ │ │ ├── RightSide.vue │ │ │ ├── SimpleLeftSide.vue │ │ │ ├── ThreeRows.vue │ │ │ ├── TopLeftSide.vue │ │ │ └── TopSide.vue │ │ ├── index-en-US.md │ │ └── index.md │ ├── resizable │ │ └── index.md │ ├── space │ │ ├── demo │ │ │ ├── alignDemo.vue │ │ │ ├── base.vue │ │ │ ├── spacingDemo.vue │ │ │ ├── verticalDemo.vue │ │ │ └── wrapDemo.vue │ │ ├── index-en-US.md │ │ └── index.md │ └── typography │ │ ├── demo │ │ ├── ParagraphDemo.vue │ │ ├── base.vue │ │ ├── linkDemo.vue │ │ ├── numDemo.vue │ │ └── textDemo.vue │ │ ├── index-en-US.md │ │ └── index.md │ ├── feedback │ ├── banner │ │ └── index.md │ ├── notification │ │ └── index.md │ ├── popconfirm │ │ └── index.md │ ├── progress │ │ └── index.md │ ├── skeleton │ │ └── index.md │ ├── spin │ │ └── index.md │ └── toast │ │ └── index.md │ ├── input │ ├── autocomplete │ │ ├── demo │ │ │ ├── baseAutoComplete.tsx │ │ │ ├── baseAutoComplete.vue │ │ │ ├── disabledAutoComplete.vue │ │ │ ├── diyItemAutoComplete.vue │ │ │ ├── emptyAutoComplete.vue │ │ │ ├── positionAutoComplete.vue │ │ │ ├── remoteAutoComplete.vue │ │ │ ├── sizeAutoComplete.vue │ │ │ └── statusAutoComplete.vue │ │ └── index.md │ ├── button │ │ ├── demo │ │ │ ├── SplitButtonDemo.vue │ │ │ └── base.vue │ │ └── index.md │ ├── cascader │ │ └── index.md │ ├── checkbox │ │ └── index.md │ ├── colorpicker │ │ └── index.md │ ├── content-guidelines │ │ └── index.md │ ├── datepicker │ │ └── index.md │ ├── form │ │ └── index.md │ ├── input │ │ └── index.md │ ├── inputnumber │ │ └── index.md │ ├── pincode │ │ └── index.md │ ├── popover │ │ └── index.md │ ├── radio │ │ └── index.md │ ├── rating │ │ └── index.md │ ├── select │ │ └── index.md │ ├── slider │ │ └── index.md │ ├── switch │ │ └── index.md │ ├── taginput │ │ └── index.md │ ├── timepicker │ │ └── index.md │ ├── transfer │ │ └── index.md │ ├── treeselect │ │ └── index.md │ └── upload │ │ └── index.md │ ├── navigation │ ├── anchor │ │ └── index.md │ ├── backtop │ │ └── index.md │ ├── breadcrumb │ │ └── index.md │ ├── navigation │ │ └── index.md │ ├── pagination │ │ └── index.md │ ├── steps │ │ └── index.md │ ├── tabs │ │ └── index.md │ └── tree │ │ └── index.md │ ├── other │ ├── configprovider │ │ └── index.md │ └── locale │ │ └── index.md │ ├── plus │ ├── audioPlayer │ │ └── index.md │ ├── chat │ │ └── index.md │ ├── codehighlight │ │ └── index.md │ ├── dragMove │ │ └── index.md │ ├── hotkeys │ │ └── index.md │ ├── lottie │ │ └── index.md │ └── markdownrender │ │ └── index.md │ ├── show │ ├── avatar │ │ └── index.md │ ├── badge │ │ └── index.md │ ├── calendar │ │ └── index.md │ ├── card │ │ └── index.md │ ├── carousel │ │ └── index.md │ ├── collapse │ │ └── index.md │ ├── collapsible │ │ └── index.md │ ├── cropper │ │ └── index.md │ ├── descriptions │ │ ├── demo │ │ │ ├── alignDesc.vue │ │ │ ├── baseDesc.vue │ │ │ ├── childrenDesc.vue │ │ │ ├── horizontalDesc.vue │ │ │ ├── rowDesc.vue │ │ │ └── verticalDesc.vue │ │ ├── index-en-US.md │ │ └── index.md │ ├── dropdown │ │ └── index.md │ ├── empty │ │ └── index.md │ ├── highlight │ │ └── index.md │ ├── image │ │ └── index.md │ ├── list │ │ └── index.md │ ├── modal │ │ └── index.md │ ├── overflowlist │ │ └── index.md │ ├── popover │ │ └── index.md │ ├── scrolllist │ │ └── index.md │ ├── sidesheet │ │ └── index.md │ ├── table │ │ └── index.md │ ├── tag │ │ └── index.md │ ├── timeline │ │ └── index.md │ ├── tooltip │ │ └── index.md │ └── userGuide │ │ └── index.md │ └── start │ ├── accessibility │ └── index.md │ ├── changelog │ └── index.md │ ├── content-guidelines │ └── index.md │ ├── dark-mode │ ├── demo │ │ ├── darkDemo.tsx │ │ └── test.tsx │ └── index.md │ ├── faq │ └── index.md │ ├── getting-started │ └── index.md │ ├── introduction │ └── index.md │ └── overview │ └── index.md ├── env.d.ts ├── jest.config.ts ├── netlify.toml ├── package.json ├── packages ├── semi-animation-vue │ ├── .gitignore │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── build.cjs │ ├── index.html │ ├── index.ts │ ├── package.json │ ├── public │ │ └── favicon.ico │ ├── src │ │ ├── App.tsx │ │ ├── __test__ │ │ │ ├── test.spec.ts │ │ │ ├── test2.spec.ts │ │ │ └── test3.spec.ts │ │ ├── animation │ │ │ ├── Animation.tsx │ │ │ ├── KeyFrames.tsx │ │ │ ├── StyledAnimation.tsx │ │ │ ├── StyledTransition.tsx │ │ │ ├── Transition.tsx │ │ │ ├── index.ts │ │ │ └── utils │ │ │ │ ├── invokeFns.spec.ts │ │ │ │ ├── invokeFns.ts │ │ │ │ ├── noop.ts │ │ │ │ ├── object.ts │ │ │ │ └── string.ts │ │ ├── assets │ │ │ └── logo.png │ │ ├── env.d.ts │ │ ├── main.scss │ │ ├── main.ts │ │ └── tsconfig.esm.json │ ├── tsconfig.esm.json │ ├── tsconfig.json │ └── vite.config.ts ├── semi-icons-lab-vue │ ├── .gitignore │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── build.cjs │ ├── getBabelConfig.cjs │ ├── gulpfile.cjs │ ├── index.html │ ├── index.ts │ ├── package.json │ ├── public │ │ └── favicon.ico │ ├── scripts │ │ ├── .prettierrc.js │ │ ├── build-icon.cjs │ │ └── compileLib.cjs │ ├── src │ │ ├── App.tsx │ │ ├── __test__ │ │ │ ├── IconTest.tsx │ │ │ ├── test.spec.ts │ │ │ └── test2.spec.ts │ │ ├── assets │ │ │ └── logo.png │ │ ├── doc-accordion.vue │ │ ├── env.d.ts │ │ ├── icons │ │ │ ├── components │ │ │ │ └── Icon.tsx │ │ │ ├── env.ts │ │ │ ├── icons │ │ │ │ ├── IconAccessibility.tsx │ │ │ │ ├── IconAnchor.tsx │ │ │ │ ├── IconAutocomplete.tsx │ │ │ │ ├── IconAvatar.tsx │ │ │ │ ├── IconBackTop.tsx │ │ │ │ ├── IconBadge.tsx │ │ │ │ ├── IconBadgeStar.tsx │ │ │ │ ├── IconBanner.tsx │ │ │ │ ├── IconBreadcrumb.tsx │ │ │ │ ├── IconButton.tsx │ │ │ │ ├── IconCalendar.tsx │ │ │ │ ├── IconCard.tsx │ │ │ │ ├── IconCarousel.tsx │ │ │ │ ├── IconCascader.tsx │ │ │ │ ├── IconChangelog.tsx │ │ │ │ ├── IconChart.tsx │ │ │ │ ├── IconChat.tsx │ │ │ │ ├── IconCheckbox.tsx │ │ │ │ ├── IconCodeHighlight.tsx │ │ │ │ ├── IconCollapse.tsx │ │ │ │ ├── IconCollapsible.tsx │ │ │ │ ├── IconColorPlatte.tsx │ │ │ │ ├── IconColorPlatteNew.tsx │ │ │ │ ├── IconColors.tsx │ │ │ │ ├── IconConfig.tsx │ │ │ │ ├── IconDarkMode.tsx │ │ │ │ ├── IconDatePicker.tsx │ │ │ │ ├── IconDescriptions.tsx │ │ │ │ ├── IconDivider.tsx │ │ │ │ ├── IconDropdown.tsx │ │ │ │ ├── IconEmpty.tsx │ │ │ │ ├── IconFaq.tsx │ │ │ │ ├── IconForm.tsx │ │ │ │ ├── IconGettingStarted.tsx │ │ │ │ ├── IconGrid.tsx │ │ │ │ ├── IconHeart.tsx │ │ │ │ ├── IconHighlight.tsx │ │ │ │ ├── IconImage.tsx │ │ │ │ ├── IconInput.tsx │ │ │ │ ├── IconInputNumber.tsx │ │ │ │ ├── IconIntro.tsx │ │ │ │ ├── IconJsonViewer.tsx │ │ │ │ ├── IconLayout.tsx │ │ │ │ ├── IconList.tsx │ │ │ │ ├── IconLocaleProvider.tsx │ │ │ │ ├── IconLottie.tsx │ │ │ │ ├── IconMarkdown.tsx │ │ │ │ ├── IconModal.tsx │ │ │ │ ├── IconNavigation.tsx │ │ │ │ ├── IconNotification.tsx │ │ │ │ ├── IconOverflow.tsx │ │ │ │ ├── IconPagination.tsx │ │ │ │ ├── IconPincode.tsx │ │ │ │ ├── IconPopconfirm.tsx │ │ │ │ ├── IconPopover.tsx │ │ │ │ ├── IconProgress.tsx │ │ │ │ ├── IconRadio.tsx │ │ │ │ ├── IconRating.tsx │ │ │ │ ├── IconScrollList.tsx │ │ │ │ ├── IconSelect.tsx │ │ │ │ ├── IconSideSheet.tsx │ │ │ │ ├── IconSkeleton.tsx │ │ │ │ ├── IconSlider.tsx │ │ │ │ ├── IconSpace.tsx │ │ │ │ ├── IconSpin.tsx │ │ │ │ ├── IconSteps.tsx │ │ │ │ ├── IconSwitch.tsx │ │ │ │ ├── IconTable.tsx │ │ │ │ ├── IconTabs.tsx │ │ │ │ ├── IconTag.tsx │ │ │ │ ├── IconTagInput.tsx │ │ │ │ ├── IconTimePicker.tsx │ │ │ │ ├── IconTimeline.tsx │ │ │ │ ├── IconToast.tsx │ │ │ │ ├── IconToken.tsx │ │ │ │ ├── IconTooltip.tsx │ │ │ │ ├── IconTransfer.tsx │ │ │ │ ├── IconTree.tsx │ │ │ │ ├── IconTreeSelect.tsx │ │ │ │ ├── IconTypography.tsx │ │ │ │ ├── IconUpload.tsx │ │ │ │ ├── IconVersionOne.tsx │ │ │ │ ├── IconVersionTwo.tsx │ │ │ │ ├── IconWebcomponents.tsx │ │ │ │ └── IconWheelChair.tsx │ │ │ ├── index.ts │ │ │ ├── styles │ │ │ │ ├── icons.scss │ │ │ │ └── variables.scss │ │ │ ├── svgs │ │ │ │ ├── accessibility.svg │ │ │ │ ├── anchor.svg │ │ │ │ ├── autocomplete.svg │ │ │ │ ├── avatar.svg │ │ │ │ ├── back-top.svg │ │ │ │ ├── badge-star.svg │ │ │ │ ├── badge.svg │ │ │ │ ├── banner.svg │ │ │ │ ├── breadcrumb.svg │ │ │ │ ├── button.svg │ │ │ │ ├── calendar.svg │ │ │ │ ├── card.svg │ │ │ │ ├── carousel.svg │ │ │ │ ├── cascader.svg │ │ │ │ ├── changelog.svg │ │ │ │ ├── chart.svg │ │ │ │ ├── chat.svg │ │ │ │ ├── checkbox.svg │ │ │ │ ├── code-highlight.svg │ │ │ │ ├── collapse.svg │ │ │ │ ├── collapsible.svg │ │ │ │ ├── color-platte-new.svg │ │ │ │ ├── color-platte.svg │ │ │ │ ├── colors.svg │ │ │ │ ├── config.svg │ │ │ │ ├── dark-mode.svg │ │ │ │ ├── date-picker.svg │ │ │ │ ├── descriptions.svg │ │ │ │ ├── divider.svg │ │ │ │ ├── dropdown.svg │ │ │ │ ├── empty.svg │ │ │ │ ├── faq.svg │ │ │ │ ├── form.svg │ │ │ │ ├── getting-started.svg │ │ │ │ ├── grid.svg │ │ │ │ ├── heart.svg │ │ │ │ ├── highlight.svg │ │ │ │ ├── image.svg │ │ │ │ ├── input-number.svg │ │ │ │ ├── input.svg │ │ │ │ ├── intro.svg │ │ │ │ ├── json-viewer.svg │ │ │ │ ├── layout.svg │ │ │ │ ├── list.svg │ │ │ │ ├── locale-provider.svg │ │ │ │ ├── lottie.svg │ │ │ │ ├── markdown.svg │ │ │ │ ├── meta.json │ │ │ │ ├── modal.svg │ │ │ │ ├── navigation.svg │ │ │ │ ├── notification.svg │ │ │ │ ├── overflow.svg │ │ │ │ ├── pagination.svg │ │ │ │ ├── pincode.svg │ │ │ │ ├── popconfirm.svg │ │ │ │ ├── popover.svg │ │ │ │ ├── progress.svg │ │ │ │ ├── radio.svg │ │ │ │ ├── rating.svg │ │ │ │ ├── scroll-list.svg │ │ │ │ ├── select.svg │ │ │ │ ├── side-sheet.svg │ │ │ │ ├── skeleton.svg │ │ │ │ ├── slider.svg │ │ │ │ ├── space.svg │ │ │ │ ├── spin.svg │ │ │ │ ├── steps.svg │ │ │ │ ├── switch.svg │ │ │ │ ├── table.svg │ │ │ │ ├── tabs.svg │ │ │ │ ├── tag-input.svg │ │ │ │ ├── tag.svg │ │ │ │ ├── time-picker.svg │ │ │ │ ├── timeline.svg │ │ │ │ ├── toast.svg │ │ │ │ ├── token.svg │ │ │ │ ├── tooltip.svg │ │ │ │ ├── transfer.svg │ │ │ │ ├── tree-select.svg │ │ │ │ ├── tree.svg │ │ │ │ ├── typography.svg │ │ │ │ ├── upload.svg │ │ │ │ ├── version-one.svg │ │ │ │ ├── version-two.svg │ │ │ │ ├── webcomponents.svg │ │ │ │ └── wheel-chair.svg │ │ │ └── testIcon.spec.ts │ │ ├── main.scss │ │ ├── main.ts │ │ └── tsconfig.esm.json │ ├── tsconfig.esm.json │ ├── tsconfig.json │ └── vite.config.ts ├── semi-icons-vue │ ├── .gitignore │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── build.cjs │ ├── getBabelConfig.cjs │ ├── gulpfile.cjs │ ├── index.html │ ├── index.ts │ ├── package.json │ ├── public │ │ └── favicon.ico │ ├── scripts │ │ ├── .prettierrc.js │ │ ├── build-icon.cjs │ │ └── compileLib.cjs │ ├── src │ │ ├── App.tsx │ │ ├── __test__ │ │ │ ├── IconTest.tsx │ │ │ ├── test.spec.ts │ │ │ └── test2.spec.ts │ │ ├── assets │ │ │ └── logo.png │ │ ├── doc-accordion.vue │ │ ├── env.d.ts │ │ ├── icons │ │ │ ├── components │ │ │ │ ├── Icon.tsx │ │ │ │ └── interface.ts │ │ │ ├── env.ts │ │ │ ├── icons │ │ │ │ ├── IconAbsoluteStroked.tsx │ │ │ │ ├── IconActivity.tsx │ │ │ │ ├── IconAlarm.tsx │ │ │ │ ├── IconAlertCircle.tsx │ │ │ │ ├── IconAlertTriangle.tsx │ │ │ │ ├── IconAlignBottom.tsx │ │ │ │ ├── IconAlignCenter.tsx │ │ │ │ ├── IconAlignCenterVertical.tsx │ │ │ │ ├── IconAlignHCenterStroked.tsx │ │ │ │ ├── IconAlignHLeftStroked.tsx │ │ │ │ ├── IconAlignHRightStroked.tsx │ │ │ │ ├── IconAlignJustify.tsx │ │ │ │ ├── IconAlignLeft.tsx │ │ │ │ ├── IconAlignRight.tsx │ │ │ │ ├── IconAlignTop.tsx │ │ │ │ ├── IconAlignVBotStroked.tsx │ │ │ │ ├── IconAlignVBottomStroked.tsx │ │ │ │ ├── IconAlignVCenterStroked.tsx │ │ │ │ ├── IconAlignVTopStroked.tsx │ │ │ │ ├── IconApartment.tsx │ │ │ │ ├── IconAppCenter.tsx │ │ │ │ ├── IconApps.tsx │ │ │ │ ├── IconArchive.tsx │ │ │ │ ├── IconArrowDown.tsx │ │ │ │ ├── IconArrowDownLeft.tsx │ │ │ │ ├── IconArrowDownRight.tsx │ │ │ │ ├── IconArrowLeft.tsx │ │ │ │ ├── IconArrowRight.tsx │ │ │ │ ├── IconArrowUp.tsx │ │ │ │ ├── IconArrowUpLeft.tsx │ │ │ │ ├── IconArrowUpRight.tsx │ │ │ │ ├── IconArticle.tsx │ │ │ │ ├── IconAscend.tsx │ │ │ │ ├── IconAt.tsx │ │ │ │ ├── IconBackTop.tsx │ │ │ │ ├── IconBackward.tsx │ │ │ │ ├── IconBarChartHStroked.tsx │ │ │ │ ├── IconBarChartVStroked.tsx │ │ │ │ ├── IconBeaker.tsx │ │ │ │ ├── IconBell.tsx │ │ │ │ ├── IconBellStroked.tsx │ │ │ │ ├── IconBold.tsx │ │ │ │ ├── IconBolt.tsx │ │ │ │ ├── IconBookH5Stroked.tsx │ │ │ │ ├── IconBookOpenStroked.tsx │ │ │ │ ├── IconBookStroked.tsx │ │ │ │ ├── IconBookmark.tsx │ │ │ │ ├── IconBookmarkAddStroked.tsx │ │ │ │ ├── IconBookmarkDeleteStroked.tsx │ │ │ │ ├── IconBottomCenterStroked.tsx │ │ │ │ ├── IconBottomLeftStroked.tsx │ │ │ │ ├── IconBottomRightStroked.tsx │ │ │ │ ├── IconBox.tsx │ │ │ │ ├── IconBrackets.tsx │ │ │ │ ├── IconBranch.tsx │ │ │ │ ├── IconBriefStroked.tsx │ │ │ │ ├── IconBriefcase.tsx │ │ │ │ ├── IconBulb.tsx │ │ │ │ ├── IconButtonStroked.tsx │ │ │ │ ├── IconBytedanceLogo.tsx │ │ │ │ ├── IconCalendar.tsx │ │ │ │ ├── IconCalendarClock.tsx │ │ │ │ ├── IconCalendarStroked.tsx │ │ │ │ ├── IconCamera.tsx │ │ │ │ ├── IconCandlestickChartStroked.tsx │ │ │ │ ├── IconCaretdown.tsx │ │ │ │ ├── IconCaretup.tsx │ │ │ │ ├── IconCarouselStroked.tsx │ │ │ │ ├── IconCart.tsx │ │ │ │ ├── IconCaseSensitive.tsx │ │ │ │ ├── IconCenterLeftStroked.tsx │ │ │ │ ├── IconCenterRightStroked.tsx │ │ │ │ ├── IconChainStroked.tsx │ │ │ │ ├── IconCheckChoiceStroked.tsx │ │ │ │ ├── IconCheckCircleStroked.tsx │ │ │ │ ├── IconCheckList.tsx │ │ │ │ ├── IconCheckboxIndeterminate.tsx │ │ │ │ ├── IconCheckboxTick.tsx │ │ │ │ ├── IconChecklistStroked.tsx │ │ │ │ ├── IconChevronDown.tsx │ │ │ │ ├── IconChevronDownStroked.tsx │ │ │ │ ├── IconChevronLeft.tsx │ │ │ │ ├── IconChevronRight.tsx │ │ │ │ ├── IconChevronRightStroked.tsx │ │ │ │ ├── IconChevronUp.tsx │ │ │ │ ├── IconChevronUpDown.tsx │ │ │ │ ├── IconClear.tsx │ │ │ │ ├── IconClock.tsx │ │ │ │ ├── IconClose.tsx │ │ │ │ ├── IconCloud.tsx │ │ │ │ ├── IconCloudStroked.tsx │ │ │ │ ├── IconCloudUploadStroked.tsx │ │ │ │ ├── IconCode.tsx │ │ │ │ ├── IconCodeStroked.tsx │ │ │ │ ├── IconCoinMoneyStroked.tsx │ │ │ │ ├── IconColorPalette.tsx │ │ │ │ ├── IconColumnsStroked.tsx │ │ │ │ ├── IconCommand.tsx │ │ │ │ ├── IconComment.tsx │ │ │ │ ├── IconCommentStroked.tsx │ │ │ │ ├── IconComponent.tsx │ │ │ │ ├── IconComponentPlaceholderStroked.tsx │ │ │ │ ├── IconComponentStroked.tsx │ │ │ │ ├── IconConfigStroked.tsx │ │ │ │ ├── IconConnectionPoint1.tsx │ │ │ │ ├── IconConnectionPoint2.tsx │ │ │ │ ├── IconContrast.tsx │ │ │ │ ├── IconCopy.tsx │ │ │ │ ├── IconCopyAdd.tsx │ │ │ │ ├── IconCopyStroked.tsx │ │ │ │ ├── IconCornerRadiusStroked.tsx │ │ │ │ ├── IconCreditCard.tsx │ │ │ │ ├── IconCrop.tsx │ │ │ │ ├── IconCrossCircleStroked.tsx │ │ │ │ ├── IconCrossStroked.tsx │ │ │ │ ├── IconCrown.tsx │ │ │ │ ├── IconCustomerSupport.tsx │ │ │ │ ├── IconCustomerSupportStroked.tsx │ │ │ │ ├── IconCustomize.tsx │ │ │ │ ├── IconDelete.tsx │ │ │ │ ├── IconDeleteStroked.tsx │ │ │ │ ├── IconDescend.tsx │ │ │ │ ├── IconDescend2.tsx │ │ │ │ ├── IconDesktop.tsx │ │ │ │ ├── IconDisc.tsx │ │ │ │ ├── IconDislikeThumb.tsx │ │ │ │ ├── IconDivide.tsx │ │ │ │ ├── IconDongchediLogo.tsx │ │ │ │ ├── IconDoubleChevronLeft.tsx │ │ │ │ ├── IconDoubleChevronRight.tsx │ │ │ │ ├── IconDownCircleStroked.tsx │ │ │ │ ├── IconDownload.tsx │ │ │ │ ├── IconDownloadStroked.tsx │ │ │ │ ├── IconDuration.tsx │ │ │ │ ├── IconEdit.tsx │ │ │ │ ├── IconEdit2Stroked.tsx │ │ │ │ ├── IconEditStroked.tsx │ │ │ │ ├── IconElementStroked.tsx │ │ │ │ ├── IconEmoji.tsx │ │ │ │ ├── IconExit.tsx │ │ │ │ ├── IconExpand.tsx │ │ │ │ ├── IconExport.tsx │ │ │ │ ├── IconExternalOpen.tsx │ │ │ │ ├── IconExternalOpenStroked.tsx │ │ │ │ ├── IconEyeClosed.tsx │ │ │ │ ├── IconEyeClosedSolid.tsx │ │ │ │ ├── IconEyeOpened.tsx │ │ │ │ ├── IconEyedropper.tsx │ │ │ │ ├── IconFacebook.tsx │ │ │ │ ├── IconFaceuLogo.tsx │ │ │ │ ├── IconFastForward.tsx │ │ │ │ ├── IconFastFoward.tsx │ │ │ │ ├── IconFavoriteList.tsx │ │ │ │ ├── IconFeishuLogo.tsx │ │ │ │ ├── IconFemale.tsx │ │ │ │ ├── IconFigma.tsx │ │ │ │ ├── IconFile.tsx │ │ │ │ ├── IconFillStroked.tsx │ │ │ │ ├── IconFilledArrowDown.tsx │ │ │ │ ├── IconFilledArrowUp.tsx │ │ │ │ ├── IconFilpVertical.tsx │ │ │ │ ├── IconFilter.tsx │ │ │ │ ├── IconFingerLeftStroked.tsx │ │ │ │ ├── IconFixedStroked.tsx │ │ │ │ ├── IconFlag.tsx │ │ │ │ ├── IconFlipHorizontal.tsx │ │ │ │ ├── IconFlowChartStroked.tsx │ │ │ │ ├── IconFolder.tsx │ │ │ │ ├── IconFolderOpen.tsx │ │ │ │ ├── IconFolderStroked.tsx │ │ │ │ ├── IconFollowStroked.tsx │ │ │ │ ├── IconFont.tsx │ │ │ │ ├── IconFontColor.tsx │ │ │ │ ├── IconForward.tsx │ │ │ │ ├── IconForwardStroked.tsx │ │ │ │ ├── IconFullScreenStroked.tsx │ │ │ │ ├── IconGallery.tsx │ │ │ │ ├── IconGift.tsx │ │ │ │ ├── IconGiftStroked.tsx │ │ │ │ ├── IconGit.tsx │ │ │ │ ├── IconGithubLogo.tsx │ │ │ │ ├── IconGitlabLogo.tsx │ │ │ │ ├── IconGlobe.tsx │ │ │ │ ├── IconGlobeStroke.tsx │ │ │ │ ├── IconGridRectangle.tsx │ │ │ │ ├── IconGridSquare.tsx │ │ │ │ ├── IconGridStroked.tsx │ │ │ │ ├── IconGridView.tsx │ │ │ │ ├── IconGridView1.tsx │ │ │ │ ├── IconH1.tsx │ │ │ │ ├── IconH2.tsx │ │ │ │ ├── IconH3.tsx │ │ │ │ ├── IconH4.tsx │ │ │ │ ├── IconH5.tsx │ │ │ │ ├── IconH6.tsx │ │ │ │ ├── IconH7.tsx │ │ │ │ ├── IconH8.tsx │ │ │ │ ├── IconH9.tsx │ │ │ │ ├── IconHandle.tsx │ │ │ │ ├── IconHash.tsx │ │ │ │ ├── IconHeartStroked.tsx │ │ │ │ ├── IconHelm.tsx │ │ │ │ ├── IconHelpCircle.tsx │ │ │ │ ├── IconHelpCircleStroked.tsx │ │ │ │ ├── IconHistogram.tsx │ │ │ │ ├── IconHistory.tsx │ │ │ │ ├── IconHn.tsx │ │ │ │ ├── IconHome.tsx │ │ │ │ ├── IconHomeStroked.tsx │ │ │ │ ├── IconHorn.tsx │ │ │ │ ├── IconHourglass.tsx │ │ │ │ ├── IconHourglassStroked.tsx │ │ │ │ ├── IconIdCard.tsx │ │ │ │ ├── IconIdentity.tsx │ │ │ │ ├── IconImage.tsx │ │ │ │ ├── IconImageStroked.tsx │ │ │ │ ├── IconImport.tsx │ │ │ │ ├── IconInbox.tsx │ │ │ │ ├── IconIndenpentCornersStroked.tsx │ │ │ │ ├── IconIndentLeft.tsx │ │ │ │ ├── IconIndentRight.tsx │ │ │ │ ├── IconIndependentCornersStroked.tsx │ │ │ │ ├── IconInfoCircle.tsx │ │ │ │ ├── IconInherit.tsx │ │ │ │ ├── IconInheritStroked.tsx │ │ │ │ ├── IconInnerSectionStroked.tsx │ │ │ │ ├── IconInstagram.tsx │ │ │ │ ├── IconInteractiveStroked.tsx │ │ │ │ ├── IconInviteStroked.tsx │ │ │ │ ├── IconIssueStroked.tsx │ │ │ │ ├── IconItalic.tsx │ │ │ │ ├── IconJianying.tsx │ │ │ │ ├── IconKanban.tsx │ │ │ │ ├── IconKey.tsx │ │ │ │ ├── IconKeyStroked.tsx │ │ │ │ ├── IconLanguage.tsx │ │ │ │ ├── IconLayers.tsx │ │ │ │ ├── IconLeftCircleStroked.tsx │ │ │ │ ├── IconLightningStroked.tsx │ │ │ │ ├── IconLikeHeart.tsx │ │ │ │ ├── IconLikeThumb.tsx │ │ │ │ ├── IconLineChartStroked.tsx │ │ │ │ ├── IconLineHeight.tsx │ │ │ │ ├── IconLink.tsx │ │ │ │ ├── IconList.tsx │ │ │ │ ├── IconListView.tsx │ │ │ │ ├── IconLive.tsx │ │ │ │ ├── IconLoading.tsx │ │ │ │ ├── IconLock.tsx │ │ │ │ ├── IconLockStroked.tsx │ │ │ │ ├── IconLoopTextStroked.tsx │ │ │ │ ├── IconMail.tsx │ │ │ │ ├── IconMailStroked.tsx │ │ │ │ ├── IconMailStroked1.tsx │ │ │ │ ├── IconMale.tsx │ │ │ │ ├── IconMapPin.tsx │ │ │ │ ├── IconMapPinStroked.tsx │ │ │ │ ├── IconMarginLeftStroked.tsx │ │ │ │ ├── IconMarginStroked.tsx │ │ │ │ ├── IconMark.tsx │ │ │ │ ├── IconMaximize.tsx │ │ │ │ ├── IconMember.tsx │ │ │ │ ├── IconMenu.tsx │ │ │ │ ├── IconMicrophone.tsx │ │ │ │ ├── IconMicrophoneOff.tsx │ │ │ │ ├── IconMinimize.tsx │ │ │ │ ├── IconMinus.tsx │ │ │ │ ├── IconMinusCircle.tsx │ │ │ │ ├── IconMinusCircleStroked.tsx │ │ │ │ ├── IconMinusStroked.tsx │ │ │ │ ├── IconModalStroked.tsx │ │ │ │ ├── IconMoneyExchangeStroked.tsx │ │ │ │ ├── IconMonitorStroked.tsx │ │ │ │ ├── IconMoon.tsx │ │ │ │ ├── IconMore.tsx │ │ │ │ ├── IconMoreStroked.tsx │ │ │ │ ├── IconMusic.tsx │ │ │ │ ├── IconMusicNoteStroked.tsx │ │ │ │ ├── IconMute.tsx │ │ │ │ ├── IconNineGridStroked.tsx │ │ │ │ ├── IconNoteMoneyStroked.tsx │ │ │ │ ├── IconOption.tsx │ │ │ │ ├── IconOrderedList.tsx │ │ │ │ ├── IconOrderedListStroked.tsx │ │ │ │ ├── IconPaperclip.tsx │ │ │ │ ├── IconPause.tsx │ │ │ │ ├── IconPercentage.tsx │ │ │ │ ├── IconPhone.tsx │ │ │ │ ├── IconPhoneStroke.tsx │ │ │ │ ├── IconPieChart2Stroked.tsx │ │ │ │ ├── IconPieChartStroked.tsx │ │ │ │ ├── IconPiechartH5Stroked.tsx │ │ │ │ ├── IconPipixiaLogo.tsx │ │ │ │ ├── IconPlay.tsx │ │ │ │ ├── IconPlayCircle.tsx │ │ │ │ ├── IconPlus.tsx │ │ │ │ ├── IconPlusCircle.tsx │ │ │ │ ├── IconPlusCircleStroked.tsx │ │ │ │ ├── IconPlusStroked.tsx │ │ │ │ ├── IconPriceTag.tsx │ │ │ │ ├── IconPrint.tsx │ │ │ │ ├── IconPrizeStroked.tsx │ │ │ │ ├── IconPulse.tsx │ │ │ │ ├── IconPuzzle.tsx │ │ │ │ ├── IconQingyan.tsx │ │ │ │ ├── IconQrCode.tsx │ │ │ │ ├── IconQuit.tsx │ │ │ │ ├── IconQuote.tsx │ │ │ │ ├── IconRadio.tsx │ │ │ │ ├── IconRankingCardStroked.tsx │ │ │ │ ├── IconRealSizeStroked.tsx │ │ │ │ ├── IconRedo.tsx │ │ │ │ ├── IconRedoStroked.tsx │ │ │ │ ├── IconRefresh.tsx │ │ │ │ ├── IconRefresh2.tsx │ │ │ │ ├── IconRegExp.tsx │ │ │ │ ├── IconReply.tsx │ │ │ │ ├── IconReplyStroked.tsx │ │ │ │ ├── IconResso.tsx │ │ │ │ ├── IconRestart.tsx │ │ │ │ ├── IconRingChartStroked.tsx │ │ │ │ ├── IconRotate.tsx │ │ │ │ ├── IconRotationStroked.tsx │ │ │ │ ├── IconRoute.tsx │ │ │ │ ├── IconRowsStroked.tsx │ │ │ │ ├── IconSafe.tsx │ │ │ │ ├── IconSave.tsx │ │ │ │ ├── IconSaveStroked.tsx │ │ │ │ ├── IconScan.tsx │ │ │ │ ├── IconScissors.tsx │ │ │ │ ├── IconSearch.tsx │ │ │ │ ├── IconSearchStroked.tsx │ │ │ │ ├── IconSectionStroked.tsx │ │ │ │ ├── IconSemiLogo.tsx │ │ │ │ ├── IconSend.tsx │ │ │ │ ├── IconSendMsgStroked.tsx │ │ │ │ ├── IconSendStroked.tsx │ │ │ │ ├── IconServer.tsx │ │ │ │ ├── IconServerStroked.tsx │ │ │ │ ├── IconSetting.tsx │ │ │ │ ├── IconSettingStroked.tsx │ │ │ │ ├── IconShareMoneyStroked.tsx │ │ │ │ ├── IconShareStroked.tsx │ │ │ │ ├── IconShield.tsx │ │ │ │ ├── IconShieldStroked.tsx │ │ │ │ ├── IconShift.tsx │ │ │ │ ├── IconShoppingBag.tsx │ │ │ │ ├── IconShrink.tsx │ │ │ │ ├── IconShrinkScreenStroked.tsx │ │ │ │ ├── IconSidebar.tsx │ │ │ │ ├── IconSignal.tsx │ │ │ │ ├── IconSimilarity.tsx │ │ │ │ ├── IconSmallTriangleDown.tsx │ │ │ │ ├── IconSmallTriangleLeft.tsx │ │ │ │ ├── IconSmallTriangleRight.tsx │ │ │ │ ├── IconSmallTriangleTop.tsx │ │ │ │ ├── IconSmartphoneCheckStroked.tsx │ │ │ │ ├── IconSmartphoneStroked.tsx │ │ │ │ ├── IconSong.tsx │ │ │ │ ├── IconSonicStroked.tsx │ │ │ │ ├── IconSort.tsx │ │ │ │ ├── IconSortStroked.tsx │ │ │ │ ├── IconSourceControl.tsx │ │ │ │ ├── IconSpin.tsx │ │ │ │ ├── IconStackBarChartStroked.tsx │ │ │ │ ├── IconStar.tsx │ │ │ │ ├── IconStarStroked.tsx │ │ │ │ ├── IconStop.tsx │ │ │ │ ├── IconStopwatchStroked.tsx │ │ │ │ ├── IconStoryStroked.tsx │ │ │ │ ├── IconStrikeThrough.tsx │ │ │ │ ├── IconSun.tsx │ │ │ │ ├── IconSync.tsx │ │ │ │ ├── IconTabArrowStroked.tsx │ │ │ │ ├── IconTabsStroked.tsx │ │ │ │ ├── IconTaskMoneyStroked.tsx │ │ │ │ ├── IconTemplate.tsx │ │ │ │ ├── IconTemplateStroked.tsx │ │ │ │ ├── IconTerminal.tsx │ │ │ │ ├── IconTestScoreStroked.tsx │ │ │ │ ├── IconText.tsx │ │ │ │ ├── IconTextRectangle.tsx │ │ │ │ ├── IconTextStroked.tsx │ │ │ │ ├── IconThumbUpStroked.tsx │ │ │ │ ├── IconTick.tsx │ │ │ │ ├── IconTickCircle.tsx │ │ │ │ ├── IconTicketCodeExchangeStroked.tsx │ │ │ │ ├── IconTicketCodeStroked.tsx │ │ │ │ ├── IconTiktokLogo.tsx │ │ │ │ ├── IconTop.tsx │ │ │ │ ├── IconTopCenterStroked.tsx │ │ │ │ ├── IconTopLeftStroked.tsx │ │ │ │ ├── IconTopRightStroked.tsx │ │ │ │ ├── IconTopbuzzLogo.tsx │ │ │ │ ├── IconToutiaoLogo.tsx │ │ │ │ ├── IconTransparentStroked.tsx │ │ │ │ ├── IconTreeTriangleDown.tsx │ │ │ │ ├── IconTreeTriangleRight.tsx │ │ │ │ ├── IconTriangleArrow.tsx │ │ │ │ ├── IconTriangleArrowVertical.tsx │ │ │ │ ├── IconTriangleDown.tsx │ │ │ │ ├── IconTriangleUp.tsx │ │ │ │ ├── IconTrueFalseStroked.tsx │ │ │ │ ├── IconTvCheckedStroked.tsx │ │ │ │ ├── IconTwitter.tsx │ │ │ │ ├── IconTypograph.tsx │ │ │ │ ├── IconUnChainStroked.tsx │ │ │ │ ├── IconUnderline.tsx │ │ │ │ ├── IconUndo.tsx │ │ │ │ ├── IconUnlink.tsx │ │ │ │ ├── IconUnlock.tsx │ │ │ │ ├── IconUnlockStroked.tsx │ │ │ │ ├── IconUpload.tsx │ │ │ │ ├── IconUploadError.tsx │ │ │ │ ├── IconUser.tsx │ │ │ │ ├── IconUserAdd.tsx │ │ │ │ ├── IconUserCardPhone.tsx │ │ │ │ ├── IconUserCardVideo.tsx │ │ │ │ ├── IconUserCircle.tsx │ │ │ │ ├── IconUserCircleStroked.tsx │ │ │ │ ├── IconUserGroup.tsx │ │ │ │ ├── IconUserListStroked.tsx │ │ │ │ ├── IconUserSetting.tsx │ │ │ │ ├── IconUserStroked.tsx │ │ │ │ ├── IconVennChartStroked.tsx │ │ │ │ ├── IconVerify.tsx │ │ │ │ ├── IconVersionStroked.tsx │ │ │ │ ├── IconVideo.tsx │ │ │ │ ├── IconVideoDouyinStroked.tsx │ │ │ │ ├── IconVideoListStroked.tsx │ │ │ │ ├── IconVideoStroked.tsx │ │ │ │ ├── IconVideoUrlStroked.tsx │ │ │ │ ├── IconVigoLogo.tsx │ │ │ │ ├── IconVolume1.tsx │ │ │ │ ├── IconVolume2.tsx │ │ │ │ ├── IconVolumnSilent.tsx │ │ │ │ ├── IconVoteStroked.tsx │ │ │ │ ├── IconVoteVideoStroked.tsx │ │ │ │ ├── IconWeibo.tsx │ │ │ │ ├── IconWholeWord.tsx │ │ │ │ ├── IconWifi.tsx │ │ │ │ ├── IconWindowAdaptionStroked.tsx │ │ │ │ ├── IconWrench.tsx │ │ │ │ ├── IconXiguaLogo.tsx │ │ │ │ └── IconYoutube.tsx │ │ │ ├── index.ts │ │ │ ├── styles │ │ │ │ ├── icons.scss │ │ │ │ └── variables.scss │ │ │ ├── svgs │ │ │ │ ├── absolute_stroked.svg │ │ │ │ ├── activity.svg │ │ │ │ ├── alarm.svg │ │ │ │ ├── alert_circle.svg │ │ │ │ ├── alert_triangle.svg │ │ │ │ ├── align_bottom.svg │ │ │ │ ├── align_center.svg │ │ │ │ ├── align_center_vertical.svg │ │ │ │ ├── align_h_center_stroked.svg │ │ │ │ ├── align_h_left_stroked.svg │ │ │ │ ├── align_h_right_stroked.svg │ │ │ │ ├── align_justify.svg │ │ │ │ ├── align_left.svg │ │ │ │ ├── align_right.svg │ │ │ │ ├── align_top.svg │ │ │ │ ├── align_v_bot_stroked.svg │ │ │ │ ├── align_v_bottom_stroked.svg │ │ │ │ ├── align_v_center_stroked.svg │ │ │ │ ├── align_v_top_stroked.svg │ │ │ │ ├── apartment.svg │ │ │ │ ├── app_center.svg │ │ │ │ ├── apps.svg │ │ │ │ ├── archive.svg │ │ │ │ ├── arrow_down.svg │ │ │ │ ├── arrow_down_left.svg │ │ │ │ ├── arrow_down_right.svg │ │ │ │ ├── arrow_left.svg │ │ │ │ ├── arrow_right.svg │ │ │ │ ├── arrow_up.svg │ │ │ │ ├── arrow_up_left.svg │ │ │ │ ├── arrow_up_right.svg │ │ │ │ ├── article.svg │ │ │ │ ├── ascend.svg │ │ │ │ ├── at.svg │ │ │ │ ├── back_top.svg │ │ │ │ ├── backward.svg │ │ │ │ ├── bar_chart_h_stroked.svg │ │ │ │ ├── bar_chart_v_stroked.svg │ │ │ │ ├── beaker.svg │ │ │ │ ├── bell.svg │ │ │ │ ├── bell_stroked.svg │ │ │ │ ├── bold.svg │ │ │ │ ├── bolt.svg │ │ │ │ ├── book_h5_stroked.svg │ │ │ │ ├── book_open_stroked.svg │ │ │ │ ├── book_stroked.svg │ │ │ │ ├── bookmark.svg │ │ │ │ ├── bookmark_add_stroked.svg │ │ │ │ ├── bookmark_delete_stroked.svg │ │ │ │ ├── bottom_center_stroked.svg │ │ │ │ ├── bottom_left_stroked.svg │ │ │ │ ├── bottom_right_stroked.svg │ │ │ │ ├── box.svg │ │ │ │ ├── brackets.svg │ │ │ │ ├── branch.svg │ │ │ │ ├── brief_stroked.svg │ │ │ │ ├── briefcase.svg │ │ │ │ ├── bulb.svg │ │ │ │ ├── button_stroked.svg │ │ │ │ ├── bytedance_logo.svg │ │ │ │ ├── calendar.svg │ │ │ │ ├── calendar_clock.svg │ │ │ │ ├── calendar_stroked.svg │ │ │ │ ├── camera.svg │ │ │ │ ├── candlestick_chart_stroked.svg │ │ │ │ ├── caretdown.svg │ │ │ │ ├── caretup.svg │ │ │ │ ├── carousel_stroked.svg │ │ │ │ ├── cart.svg │ │ │ │ ├── case_sensitive.svg │ │ │ │ ├── center_left_stroked.svg │ │ │ │ ├── center_right_stroked.svg │ │ │ │ ├── chain_stroked.svg │ │ │ │ ├── check_choice_stroked.svg │ │ │ │ ├── check_circle_stroked.svg │ │ │ │ ├── check_list.svg │ │ │ │ ├── checkbox_indeterminate.svg │ │ │ │ ├── checkbox_tick.svg │ │ │ │ ├── checklist_stroked.svg │ │ │ │ ├── chevron_down.svg │ │ │ │ ├── chevron_down_stroked.svg │ │ │ │ ├── chevron_left.svg │ │ │ │ ├── chevron_right.svg │ │ │ │ ├── chevron_right_stroked.svg │ │ │ │ ├── chevron_up.svg │ │ │ │ ├── chevron_up_down.svg │ │ │ │ ├── clear.svg │ │ │ │ ├── clock.svg │ │ │ │ ├── close.svg │ │ │ │ ├── cloud.svg │ │ │ │ ├── cloud_stroked.svg │ │ │ │ ├── cloud_upload_stroked.svg │ │ │ │ ├── code.svg │ │ │ │ ├── code_stroked.svg │ │ │ │ ├── coin_money_stroked.svg │ │ │ │ ├── color_palette.svg │ │ │ │ ├── columns_stroked.svg │ │ │ │ ├── command.svg │ │ │ │ ├── comment.svg │ │ │ │ ├── comment_stroked.svg │ │ │ │ ├── component.svg │ │ │ │ ├── component_placeholder_stroked.svg │ │ │ │ ├── component_stroked.svg │ │ │ │ ├── config_stroked.svg │ │ │ │ ├── connection_point_1.svg │ │ │ │ ├── connection_point_2.svg │ │ │ │ ├── contrast.svg │ │ │ │ ├── copy.svg │ │ │ │ ├── copy_add.svg │ │ │ │ ├── copy_stroked.svg │ │ │ │ ├── corner_radius_stroked.svg │ │ │ │ ├── credit_card.svg │ │ │ │ ├── crop.svg │ │ │ │ ├── cross_circle_stroked.svg │ │ │ │ ├── cross_stroked.svg │ │ │ │ ├── crown.svg │ │ │ │ ├── customer_support.svg │ │ │ │ ├── customer_support_stroked.svg │ │ │ │ ├── customize.svg │ │ │ │ ├── delete.svg │ │ │ │ ├── delete_stroked.svg │ │ │ │ ├── descend.svg │ │ │ │ ├── descend2.svg │ │ │ │ ├── desktop.svg │ │ │ │ ├── disc.svg │ │ │ │ ├── dislike_thumb.svg │ │ │ │ ├── divide.svg │ │ │ │ ├── dongchedi_logo.svg │ │ │ │ ├── double_chevron_left.svg │ │ │ │ ├── double_chevron_right.svg │ │ │ │ ├── down_circle_stroked.svg │ │ │ │ ├── download.svg │ │ │ │ ├── download_stroked.svg │ │ │ │ ├── duration.svg │ │ │ │ ├── edit.svg │ │ │ │ ├── edit_2_stroked.svg │ │ │ │ ├── edit_stroked.svg │ │ │ │ ├── element_stroked.svg │ │ │ │ ├── emoji.svg │ │ │ │ ├── exit.svg │ │ │ │ ├── expand.svg │ │ │ │ ├── export.svg │ │ │ │ ├── external_open.svg │ │ │ │ ├── external_open_stroked.svg │ │ │ │ ├── eye_closed.svg │ │ │ │ ├── eye_closed_solid.svg │ │ │ │ ├── eye_opened.svg │ │ │ │ ├── eyedropper.svg │ │ │ │ ├── facebook.svg │ │ │ │ ├── faceu_logo.svg │ │ │ │ ├── fast_forward.svg │ │ │ │ ├── fast_foward.svg │ │ │ │ ├── favorite_list.svg │ │ │ │ ├── feishu_logo.svg │ │ │ │ ├── female.svg │ │ │ │ ├── figma.svg │ │ │ │ ├── file.svg │ │ │ │ ├── fill_stroked.svg │ │ │ │ ├── filled_arrow_down.svg │ │ │ │ ├── filled_arrow_up.svg │ │ │ │ ├── filp_vertical.svg │ │ │ │ ├── filter.svg │ │ │ │ ├── finger_left_stroked.svg │ │ │ │ ├── fixed_stroked.svg │ │ │ │ ├── flag.svg │ │ │ │ ├── flip_horizontal.svg │ │ │ │ ├── flow_chart_stroked.svg │ │ │ │ ├── folder.svg │ │ │ │ ├── folder_open.svg │ │ │ │ ├── folder_stroked.svg │ │ │ │ ├── follow_stroked.svg │ │ │ │ ├── font.svg │ │ │ │ ├── font_color.svg │ │ │ │ ├── forward.svg │ │ │ │ ├── forward_stroked.svg │ │ │ │ ├── full_screen_stroked.svg │ │ │ │ ├── gallery.svg │ │ │ │ ├── gift.svg │ │ │ │ ├── gift_stroked.svg │ │ │ │ ├── git.svg │ │ │ │ ├── github_logo.svg │ │ │ │ ├── gitlab_logo.svg │ │ │ │ ├── globe.svg │ │ │ │ ├── globe_stroke.svg │ │ │ │ ├── grid-rectangle.svg │ │ │ │ ├── grid-square.svg │ │ │ │ ├── grid_stroked.svg │ │ │ │ ├── grid_view.svg │ │ │ │ ├── grid_view1.svg │ │ │ │ ├── h1.svg │ │ │ │ ├── h2.svg │ │ │ │ ├── h3.svg │ │ │ │ ├── h4.svg │ │ │ │ ├── h5.svg │ │ │ │ ├── h6.svg │ │ │ │ ├── h7.svg │ │ │ │ ├── h8.svg │ │ │ │ ├── h9.svg │ │ │ │ ├── handle.svg │ │ │ │ ├── hash.svg │ │ │ │ ├── heart_stroked.svg │ │ │ │ ├── helm.svg │ │ │ │ ├── help_circle.svg │ │ │ │ ├── help_circle_stroked.svg │ │ │ │ ├── histogram.svg │ │ │ │ ├── history.svg │ │ │ │ ├── hn.svg │ │ │ │ ├── home.svg │ │ │ │ ├── home_stroked.svg │ │ │ │ ├── horn.svg │ │ │ │ ├── hourglass.svg │ │ │ │ ├── hourglass_stroked.svg │ │ │ │ ├── id_card.svg │ │ │ │ ├── identity.svg │ │ │ │ ├── image.svg │ │ │ │ ├── image_stroked.svg │ │ │ │ ├── import.svg │ │ │ │ ├── inbox.svg │ │ │ │ ├── indenpent_corners_stroked.svg │ │ │ │ ├── indent_left.svg │ │ │ │ ├── indent_right.svg │ │ │ │ ├── independent_corners_stroked.svg │ │ │ │ ├── info_circle.svg │ │ │ │ ├── inherit.svg │ │ │ │ ├── inherit_stroked.svg │ │ │ │ ├── inner_section_stroked.svg │ │ │ │ ├── instagram.svg │ │ │ │ ├── interactive_stroked.svg │ │ │ │ ├── invite_stroked.svg │ │ │ │ ├── issue_stroked.svg │ │ │ │ ├── italic.svg │ │ │ │ ├── jianying.svg │ │ │ │ ├── kanban.svg │ │ │ │ ├── key.svg │ │ │ │ ├── key_stroked.svg │ │ │ │ ├── language.svg │ │ │ │ ├── layers.svg │ │ │ │ ├── left_circle_stroked.svg │ │ │ │ ├── lightning_stroked.svg │ │ │ │ ├── like_heart.svg │ │ │ │ ├── like_thumb.svg │ │ │ │ ├── line_chart_stroked.svg │ │ │ │ ├── line_height.svg │ │ │ │ ├── link.svg │ │ │ │ ├── list.svg │ │ │ │ ├── list_view.svg │ │ │ │ ├── live.svg │ │ │ │ ├── loading.svg │ │ │ │ ├── lock.svg │ │ │ │ ├── lock_stroked.svg │ │ │ │ ├── loop_text_stroked.svg │ │ │ │ ├── mail.svg │ │ │ │ ├── mail_stroked.svg │ │ │ │ ├── mail_stroked_1.svg │ │ │ │ ├── male.svg │ │ │ │ ├── map_pin.svg │ │ │ │ ├── map_pin_stroked.svg │ │ │ │ ├── margin_left_stroked.svg │ │ │ │ ├── margin_stroked.svg │ │ │ │ ├── mark.svg │ │ │ │ ├── maximize.svg │ │ │ │ ├── member.svg │ │ │ │ ├── menu.svg │ │ │ │ ├── meta.json │ │ │ │ ├── microphone.svg │ │ │ │ ├── microphone_off.svg │ │ │ │ ├── minimize.svg │ │ │ │ ├── minus.svg │ │ │ │ ├── minus_circle.svg │ │ │ │ ├── minus_circle_stroked.svg │ │ │ │ ├── minus_stroked.svg │ │ │ │ ├── modal_stroked.svg │ │ │ │ ├── money_exchange_stroked.svg │ │ │ │ ├── monitor_stroked.svg │ │ │ │ ├── moon.svg │ │ │ │ ├── more.svg │ │ │ │ ├── more_stroked.svg │ │ │ │ ├── music.svg │ │ │ │ ├── music_note_stroked.svg │ │ │ │ ├── mute.svg │ │ │ │ ├── nine_grid_stroked.svg │ │ │ │ ├── note_money_stroked.svg │ │ │ │ ├── option.svg │ │ │ │ ├── ordered_list.svg │ │ │ │ ├── ordered_list_stroked.svg │ │ │ │ ├── paperclip.svg │ │ │ │ ├── pause.svg │ │ │ │ ├── percentage.svg │ │ │ │ ├── phone.svg │ │ │ │ ├── phone_stroke.svg │ │ │ │ ├── pie_chart_2_stroked.svg │ │ │ │ ├── pie_chart_stroked.svg │ │ │ │ ├── piechart_h5_stroked.svg │ │ │ │ ├── pipixia_logo.svg │ │ │ │ ├── play.svg │ │ │ │ ├── play_circle.svg │ │ │ │ ├── plus.svg │ │ │ │ ├── plus_circle.svg │ │ │ │ ├── plus_circle_stroked.svg │ │ │ │ ├── plus_stroked.svg │ │ │ │ ├── price_tag.svg │ │ │ │ ├── print.svg │ │ │ │ ├── prize_stroked.svg │ │ │ │ ├── pulse.svg │ │ │ │ ├── puzzle.svg │ │ │ │ ├── qingyan.svg │ │ │ │ ├── qr_code.svg │ │ │ │ ├── quit.svg │ │ │ │ ├── quote.svg │ │ │ │ ├── radio.svg │ │ │ │ ├── ranking_card_stroked.svg │ │ │ │ ├── real_size_stroked.svg │ │ │ │ ├── redo.svg │ │ │ │ ├── redo_stroked.svg │ │ │ │ ├── refresh.svg │ │ │ │ ├── refresh2.svg │ │ │ │ ├── reg_exp.svg │ │ │ │ ├── reply.svg │ │ │ │ ├── reply_stroked.svg │ │ │ │ ├── resso.svg │ │ │ │ ├── restart.svg │ │ │ │ ├── ring_chart_stroked.svg │ │ │ │ ├── rotate.svg │ │ │ │ ├── rotation_stroked.svg │ │ │ │ ├── route.svg │ │ │ │ ├── rows_stroked.svg │ │ │ │ ├── safe.svg │ │ │ │ ├── save.svg │ │ │ │ ├── save_stroked.svg │ │ │ │ ├── scan.svg │ │ │ │ ├── scissors.svg │ │ │ │ ├── search.svg │ │ │ │ ├── search_stroked.svg │ │ │ │ ├── section_stroked.svg │ │ │ │ ├── semi_logo.svg │ │ │ │ ├── send.svg │ │ │ │ ├── send_msg_stroked.svg │ │ │ │ ├── send_stroked.svg │ │ │ │ ├── server.svg │ │ │ │ ├── server_stroked.svg │ │ │ │ ├── setting.svg │ │ │ │ ├── setting_stroked.svg │ │ │ │ ├── share_money_stroked.svg │ │ │ │ ├── share_stroked.svg │ │ │ │ ├── shield.svg │ │ │ │ ├── shield_stroked.svg │ │ │ │ ├── shift.svg │ │ │ │ ├── shopping_bag.svg │ │ │ │ ├── shrink.svg │ │ │ │ ├── shrink_screen_stroked.svg │ │ │ │ ├── sidebar.svg │ │ │ │ ├── signal.svg │ │ │ │ ├── similarity.svg │ │ │ │ ├── small_triangle_down.svg │ │ │ │ ├── small_triangle_left.svg │ │ │ │ ├── small_triangle_right.svg │ │ │ │ ├── small_triangle_top.svg │ │ │ │ ├── smartphone_check_stroked.svg │ │ │ │ ├── smartphone_stroked.svg │ │ │ │ ├── song.svg │ │ │ │ ├── sonic_stroked.svg │ │ │ │ ├── sort.svg │ │ │ │ ├── sort_stroked.svg │ │ │ │ ├── source_control.svg │ │ │ │ ├── spin.svg │ │ │ │ ├── stack_bar_chart_stroked.svg │ │ │ │ ├── star.svg │ │ │ │ ├── star_stroked.svg │ │ │ │ ├── stop.svg │ │ │ │ ├── stopwatch_stroked.svg │ │ │ │ ├── story_stroked.svg │ │ │ │ ├── strike_through.svg │ │ │ │ ├── sun.svg │ │ │ │ ├── sync.svg │ │ │ │ ├── tab_arrow_stroked.svg │ │ │ │ ├── tabs_stroked.svg │ │ │ │ ├── task_money_stroked.svg │ │ │ │ ├── template.svg │ │ │ │ ├── template_stroked.svg │ │ │ │ ├── terminal.svg │ │ │ │ ├── test_score_stroked.svg │ │ │ │ ├── text.svg │ │ │ │ ├── text_rectangle.svg │ │ │ │ ├── text_stroked.svg │ │ │ │ ├── thumb_up_stroked.svg │ │ │ │ ├── tick.svg │ │ │ │ ├── tick_circle.svg │ │ │ │ ├── ticket_code_exchange_stroked.svg │ │ │ │ ├── ticket_code_stroked.svg │ │ │ │ ├── tiktok_logo.svg │ │ │ │ ├── top.svg │ │ │ │ ├── top_center_stroked.svg │ │ │ │ ├── top_left_stroked.svg │ │ │ │ ├── top_right_stroked.svg │ │ │ │ ├── topbuzz_logo.svg │ │ │ │ ├── toutiao_logo.svg │ │ │ │ ├── transparent_stroked.svg │ │ │ │ ├── tree_triangle_down.svg │ │ │ │ ├── tree_triangle_right.svg │ │ │ │ ├── triangle_arrow.svg │ │ │ │ ├── triangle_arrow_vertical.svg │ │ │ │ ├── triangle_down.svg │ │ │ │ ├── triangle_up.svg │ │ │ │ ├── true_false_stroked.svg │ │ │ │ ├── tv_checked_stroked.svg │ │ │ │ ├── twitter.svg │ │ │ │ ├── typograph.svg │ │ │ │ ├── un_chain_stroked.svg │ │ │ │ ├── underline.svg │ │ │ │ ├── undo.svg │ │ │ │ ├── unlink.svg │ │ │ │ ├── unlock.svg │ │ │ │ ├── unlock_stroked.svg │ │ │ │ ├── upload.svg │ │ │ │ ├── upload_error.svg │ │ │ │ ├── user.svg │ │ │ │ ├── user_add.svg │ │ │ │ ├── user_card_phone.svg │ │ │ │ ├── user_card_video.svg │ │ │ │ ├── user_circle.svg │ │ │ │ ├── user_circle_stroked.svg │ │ │ │ ├── user_group.svg │ │ │ │ ├── user_list_stroked.svg │ │ │ │ ├── user_setting.svg │ │ │ │ ├── user_stroked.svg │ │ │ │ ├── venn_chart_stroked.svg │ │ │ │ ├── verify.svg │ │ │ │ ├── version_stroked.svg │ │ │ │ ├── video.svg │ │ │ │ ├── video_douyin_stroked.svg │ │ │ │ ├── video_list_stroked.svg │ │ │ │ ├── video_stroked.svg │ │ │ │ ├── video_url_stroked.svg │ │ │ │ ├── vigo_logo.svg │ │ │ │ ├── volume_1.svg │ │ │ │ ├── volume_2.svg │ │ │ │ ├── volumn_silent.svg │ │ │ │ ├── vote_stroked.svg │ │ │ │ ├── vote_video_stroked.svg │ │ │ │ ├── weibo.svg │ │ │ │ ├── whole_word.svg │ │ │ │ ├── wifi.svg │ │ │ │ ├── window_adaption_stroked.svg │ │ │ │ ├── wrench.svg │ │ │ │ ├── xigua_logo.svg │ │ │ │ └── youtube.svg │ │ │ └── testIcon.spec.ts │ │ ├── main.scss │ │ ├── main.ts │ │ └── tsconfig.esm.json │ ├── tsconfig.esm.json │ ├── tsconfig.json │ └── vite.config.ts ├── semi-illustrations-vue │ ├── .gitignore │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── build.cjs │ ├── getBabelConfig.cjs │ ├── gulpfile.cjs │ ├── index.html │ ├── index.ts │ ├── package.json │ ├── scripts │ │ ├── .prettierrc.cjs │ │ ├── build-icon.cjs │ │ ├── build-illustration.cjs │ │ └── compileLib.cjs │ ├── src │ │ ├── App.tsx │ │ ├── components │ │ │ ├── illustrations │ │ │ │ ├── IllustrationConstruction.tsx │ │ │ │ ├── IllustrationConstructionDark.tsx │ │ │ │ ├── IllustrationFailure.tsx │ │ │ │ ├── IllustrationFailureDark.tsx │ │ │ │ ├── IllustrationIdle.tsx │ │ │ │ ├── IllustrationIdleDark.tsx │ │ │ │ ├── IllustrationNoAccess.tsx │ │ │ │ ├── IllustrationNoAccessDark.tsx │ │ │ │ ├── IllustrationNoContent.tsx │ │ │ │ ├── IllustrationNoContentDark.tsx │ │ │ │ ├── IllustrationNoResult.tsx │ │ │ │ ├── IllustrationNoResultDark.tsx │ │ │ │ ├── IllustrationNotFound.tsx │ │ │ │ ├── IllustrationNotFoundDark.tsx │ │ │ │ ├── IllustrationSuccess.tsx │ │ │ │ └── IllustrationSuccessDark.tsx │ │ │ ├── index.ts │ │ │ └── testIcon.spec.ts │ │ ├── env.d.ts │ │ ├── main.scss │ │ ├── main.ts │ │ ├── svgs │ │ │ ├── construction-dark.svg │ │ │ ├── construction.svg │ │ │ ├── failure-dark.svg │ │ │ ├── failure.svg │ │ │ ├── idle-dark.svg │ │ │ ├── idle.svg │ │ │ ├── noAccess-dark.svg │ │ │ ├── noAccess.svg │ │ │ ├── noContent-dark.svg │ │ │ ├── noContent.svg │ │ │ ├── noResult-dark.svg │ │ │ ├── noResult.svg │ │ │ ├── notFound-dark.svg │ │ │ ├── notFound.svg │ │ │ ├── success-dark.svg │ │ │ └── success.svg │ │ └── tsconfig.esm.json │ ├── tsconfig.esm.json │ ├── tsconfig.json │ └── vite.config.ts ├── semi-ui-vue │ ├── .gitignore │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── build.cjs │ ├── gulpfile.cjs │ ├── index.html │ ├── package.json │ ├── scripts │ │ ├── compileLib.cjs │ │ ├── test.ts │ │ └── test2.ts │ ├── src │ │ ├── App.tsx │ │ ├── assets │ │ │ └── logo.png │ │ ├── components │ │ │ ├── AriaAttributes.ts │ │ │ ├── PropTypes.ts │ │ │ ├── __test__ │ │ │ │ ├── AnimationTest.tsx │ │ │ │ ├── IconTest.tsx │ │ │ │ └── test.spec.ts │ │ │ ├── _base │ │ │ │ ├── base.scss │ │ │ │ ├── base.ts │ │ │ │ ├── baseComponent.tsx │ │ │ │ ├── reactUtils.ts │ │ │ │ └── vueUtils.ts │ │ │ ├── _cssAnimation │ │ │ │ └── index.tsx │ │ │ ├── _portal │ │ │ │ └── index.tsx │ │ │ ├── _sortable │ │ │ │ └── index.tsx │ │ │ ├── _utils │ │ │ │ ├── index.tsx │ │ │ │ ├── semi-global.ts │ │ │ │ ├── setRefJsx.ts │ │ │ │ └── useMemo.ts │ │ │ ├── anchor │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── AnchorDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── anchor-content │ │ │ │ │ ├── Consumer.tsx │ │ │ │ │ └── Provider.tsx │ │ │ │ ├── anchor-context.ts │ │ │ │ ├── index-en-US.md │ │ │ │ ├── index.md │ │ │ │ ├── index.tsx │ │ │ │ └── link.tsx │ │ │ ├── audioPlayer │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ └── AudioPlayerDemo.tsx │ │ │ │ ├── audioSlider.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── utils.ts │ │ │ ├── autoComplete │ │ │ │ ├── __stories__ │ │ │ │ │ └── AutoComplete.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── AutoCompleteItemsDemo.tsx │ │ │ │ │ ├── AutoCompleteSFC.vue │ │ │ │ │ ├── OptionDemo.tsx │ │ │ │ │ ├── RenderItem.tsx │ │ │ │ │ ├── diyItemAutoComplete.vue │ │ │ │ │ ├── remoteAutoComplete.vue │ │ │ │ │ └── test.spec.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── option.tsx │ │ │ ├── avatar │ │ │ │ ├── TopSlotSvg.tsx │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── AvatarDemo.tsx │ │ │ │ │ ├── AvatarGroupDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── avatarGroup.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── interface.ts │ │ │ ├── backtop │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── BacktopDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── index-en-US.md │ │ │ │ ├── index.md │ │ │ │ └── index.tsx │ │ │ ├── badge │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── BadgeDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ └── index.tsx │ │ │ ├── banner │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── BannerDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── index-en-US.md │ │ │ │ ├── index.md │ │ │ │ └── index.tsx │ │ │ ├── breadcrumb │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── BreadcrumbDemo.tsx │ │ │ │ │ ├── BreadcrumbDemo2.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── bread-context.tsx │ │ │ │ ├── context │ │ │ │ │ ├── Consumer.tsx │ │ │ │ │ └── Provider.tsx │ │ │ │ ├── index-en-US.md │ │ │ │ ├── index.md │ │ │ │ ├── index.tsx │ │ │ │ └── item.tsx │ │ │ ├── button │ │ │ │ ├── Button.tsx │ │ │ │ ├── ButtonGroup.tsx │ │ │ │ ├── __stories__ │ │ │ │ │ └── Button.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── Demo.tsx │ │ │ │ │ ├── DemoButtonSFC.vue │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── index.tsx │ │ │ │ └── splitButtonGroup.tsx │ │ │ ├── calendar │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── CalenderDemo.tsx │ │ │ │ │ ├── EventDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── dayCalendar.tsx │ │ │ │ ├── dayCol.tsx │ │ │ │ ├── index-en-US.md │ │ │ │ ├── index.md │ │ │ │ ├── index.tsx │ │ │ │ ├── interface.ts │ │ │ │ ├── monthCalendar.tsx │ │ │ │ ├── rangeCalendar.tsx │ │ │ │ ├── timeCol.tsx │ │ │ │ └── weekCalendar.tsx │ │ │ ├── card │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── CardDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── cardGroup.tsx │ │ │ │ ├── index-en-US.md │ │ │ │ ├── index.md │ │ │ │ ├── index.tsx │ │ │ │ └── meta.tsx │ │ │ ├── carousel │ │ │ │ ├── CarouselArrow.tsx │ │ │ │ ├── CarouselIndicator.tsx │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── CarouselDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── index.tsx │ │ │ │ └── interface.ts │ │ │ ├── cascader │ │ │ │ ├── __stories__ │ │ │ │ │ └── cascader.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── CascaderDemo.tsx │ │ │ │ │ ├── CascaderDemo3.tsx │ │ │ │ │ ├── Demo2.tsx │ │ │ │ │ ├── test.spec.tsx │ │ │ │ │ └── treeData.ts │ │ │ │ ├── index.tsx │ │ │ │ ├── item.tsx │ │ │ │ └── virtualRow.tsx │ │ │ ├── chat │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── ChatDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── attachment.tsx │ │ │ │ ├── chatBox │ │ │ │ │ ├── chatBoxAction.tsx │ │ │ │ │ ├── chatBoxAvatar.tsx │ │ │ │ │ ├── chatBoxContent.tsx │ │ │ │ │ ├── chatBoxTitle.tsx │ │ │ │ │ ├── chatPropsType.ts │ │ │ │ │ ├── code.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── chatContent.tsx │ │ │ │ ├── hint.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── inputBox │ │ │ │ │ └── index.tsx │ │ │ │ └── interface.ts │ │ │ ├── checkbox │ │ │ │ ├── __stories__ │ │ │ │ │ └── checkbox.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── CheckboxDemo.tsx │ │ │ │ │ ├── ContrlDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── checkbox.tsx │ │ │ │ ├── checkboxGroup.tsx │ │ │ │ ├── checkboxInner.tsx │ │ │ │ ├── context.tsx │ │ │ │ ├── context │ │ │ │ │ ├── Consumer.tsx │ │ │ │ │ └── Provider.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── propType.ts │ │ │ ├── codeHighlight │ │ │ │ ├── __stories__ │ │ │ │ │ └── codeHighlight.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── CodeHighlightDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ └── index.tsx │ │ │ ├── collapse │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── CollapseDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── collapse-context.tsx │ │ │ │ ├── context │ │ │ │ │ ├── Consumer.tsx │ │ │ │ │ └── Provider.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── item.tsx │ │ │ ├── collapsible │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ └── CollapsibleDemo.tsx │ │ │ │ ├── index-en-US.md │ │ │ │ ├── index.md │ │ │ │ └── index.tsx │ │ │ ├── colorPicker │ │ │ │ ├── AlphaSlider │ │ │ │ │ └── index.tsx │ │ │ │ ├── ColorChooseArea │ │ │ │ │ └── index.tsx │ │ │ │ ├── ColorSlider │ │ │ │ │ └── index.tsx │ │ │ │ ├── DataPart │ │ │ │ │ └── index.tsx │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── ColorPickerDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ └── index.tsx │ │ │ ├── configProvider │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── ConfigProviderDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── context.tsx │ │ │ │ ├── context │ │ │ │ │ ├── Consumer.tsx │ │ │ │ │ └── Provider.tsx │ │ │ │ └── index.tsx │ │ │ ├── cropper │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── CropperDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ └── index.tsx │ │ │ ├── datePicker │ │ │ │ ├── __stories__ │ │ │ │ │ └── datePicker.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── DatePickerDemo.tsx │ │ │ │ │ ├── DatePickerDemo2.tsx │ │ │ │ │ ├── DatePickerTriggerRenderDemo.vue │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── dateInput.tsx │ │ │ │ ├── datePicker.tsx │ │ │ │ ├── footer.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── insetInput.tsx │ │ │ │ ├── month.tsx │ │ │ │ ├── monthsGrid.tsx │ │ │ │ ├── navigation.tsx │ │ │ │ ├── quickControl.tsx │ │ │ │ └── yearAndMonth.tsx │ │ │ ├── descriptions │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── DescriptionsDemo.tsx │ │ │ │ │ ├── DescriptionsHorizontalDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── context │ │ │ │ │ ├── Consumer.tsx │ │ │ │ │ └── Provider.tsx │ │ │ │ ├── descriptions-context.ts │ │ │ │ ├── index-en-US.md │ │ │ │ ├── index.md │ │ │ │ ├── index.tsx │ │ │ │ └── item.tsx │ │ │ ├── divider │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── DividerDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ └── index.tsx │ │ │ ├── dragMove │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── DragMoveDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ └── index.ts │ │ │ ├── dropdown │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── DropdownDemo1.tsx │ │ │ │ │ ├── DropdownDemoSFC.vue │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── context.ts │ │ │ │ ├── context │ │ │ │ │ ├── Consumer.tsx │ │ │ │ │ └── Provider.tsx │ │ │ │ ├── dropdownDivider.tsx │ │ │ │ ├── dropdownItem.tsx │ │ │ │ ├── dropdownMenu.tsx │ │ │ │ ├── dropdownTitle.tsx │ │ │ │ └── index.tsx │ │ │ ├── empty │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── EmptyDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ └── index.tsx │ │ │ ├── form │ │ │ │ ├── __stories__ │ │ │ │ │ └── form.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── FormAllDemo.tsx │ │ │ │ │ ├── FormArrayField.tsx │ │ │ │ │ ├── FormDemo.tsx │ │ │ │ │ ├── FormLayoutDemo.vue │ │ │ │ │ ├── FormRenderDemo.tsx │ │ │ │ │ ├── FormSlotDemo.tsx │ │ │ │ │ ├── FormWinthFieldDemo4.tsx │ │ │ │ │ ├── ModalForm.tsx │ │ │ │ │ ├── WithFieldDemo.tsx │ │ │ │ │ ├── WithFieldDemo2.tsx │ │ │ │ │ ├── WithFieldDemo2Vitest.tsx │ │ │ │ │ ├── WithFormApiDemo.tsx │ │ │ │ │ ├── WithFormStateDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── arrayField.tsx │ │ │ │ ├── baseForm.tsx │ │ │ │ ├── context.tsx │ │ │ │ ├── context │ │ │ │ │ ├── ArrayField │ │ │ │ │ │ ├── Consumer.tsx │ │ │ │ │ │ └── Provider.tsx │ │ │ │ │ ├── BaseFormApi │ │ │ │ │ │ ├── Consumer.tsx │ │ │ │ │ │ └── Provider.tsx │ │ │ │ │ ├── FormState │ │ │ │ │ │ ├── Consumer.tsx │ │ │ │ │ │ └── Provider.tsx │ │ │ │ │ └── FormUpdaterContext │ │ │ │ │ │ ├── Consumer.tsx │ │ │ │ │ │ └── Provider.tsx │ │ │ │ ├── errorMessage.tsx │ │ │ │ ├── field.tsx │ │ │ │ ├── group.tsx │ │ │ │ ├── hoc │ │ │ │ │ ├── utils.ts │ │ │ │ │ ├── withField.tsx │ │ │ │ │ ├── withFormApi.tsx │ │ │ │ │ └── withFormState.tsx │ │ │ │ ├── hooks │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── useArrayFieldState.tsx │ │ │ │ │ ├── useFieldApi.tsx │ │ │ │ │ ├── useFieldState.tsx │ │ │ │ │ ├── useFormApi.tsx │ │ │ │ │ ├── useFormState.tsx │ │ │ │ │ ├── useFormUpdater.tsx │ │ │ │ │ └── useStateWithGetter.ts │ │ │ │ ├── index-en-US.md │ │ │ │ ├── index.md │ │ │ │ ├── index.tsx │ │ │ │ ├── interface.ts │ │ │ │ ├── label.tsx │ │ │ │ ├── section.tsx │ │ │ │ └── slot.tsx │ │ │ ├── grid │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── GridTest.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── col.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── row.tsx │ │ │ ├── highlight │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── HighlightDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── index-en-US.md │ │ │ │ ├── index.md │ │ │ │ └── index.tsx │ │ │ ├── hotKeys │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── HotKeysDemo.tsx │ │ │ │ │ ├── HotKeysDemo2.tsx │ │ │ │ │ ├── HotKeysDocsDemo.tsx │ │ │ │ │ └── hotkeys.test.tsx │ │ │ │ └── index.tsx │ │ │ ├── iconButton │ │ │ │ └── index.tsx │ │ │ ├── icons │ │ │ │ └── index.tsx │ │ │ ├── image │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── ImageDemo.tsx │ │ │ │ │ ├── ImageDemo2.tsx │ │ │ │ │ └── test.spec.tsx │ │ │ │ ├── image.tsx │ │ │ │ ├── index-en-US.md │ │ │ │ ├── index.md │ │ │ │ ├── index.tsx │ │ │ │ ├── interface.tsx │ │ │ │ ├── preview.tsx │ │ │ │ ├── previewContext.tsx │ │ │ │ ├── previewContext │ │ │ │ │ ├── Consumer.tsx │ │ │ │ │ └── Provider.tsx │ │ │ │ ├── previewFooter.tsx │ │ │ │ ├── previewHeader.tsx │ │ │ │ ├── previewImage.tsx │ │ │ │ └── previewInner.tsx │ │ │ ├── index.ts │ │ │ ├── input │ │ │ │ ├── __stories__ │ │ │ │ │ └── input.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── InputDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── index.tsx │ │ │ │ ├── inputGroup.tsx │ │ │ │ └── textArea.tsx │ │ │ ├── inputNumber │ │ │ │ ├── __stories__ │ │ │ │ │ └── inputNumber.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── InputNumberDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── index-en-US.md │ │ │ │ ├── index.md │ │ │ │ └── index.tsx │ │ │ ├── interface.ts │ │ │ ├── jsonViewer │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── JsonViewerDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ └── index.tsx │ │ │ ├── layout │ │ │ │ ├── Sider.tsx │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── LayoutTest.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── context │ │ │ │ │ ├── Consumer.tsx │ │ │ │ │ └── Provider.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── layoutContext.ts │ │ │ ├── list │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── ListDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── context │ │ │ │ │ ├── Consumer.tsx │ │ │ │ │ └── Provider.tsx │ │ │ │ ├── index-en-US.md │ │ │ │ ├── index.md │ │ │ │ ├── index.tsx │ │ │ │ ├── item.tsx │ │ │ │ └── list-context.ts │ │ │ ├── locale │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ └── LocaleDemo.tsx │ │ │ │ ├── context.tsx │ │ │ │ ├── context │ │ │ │ │ ├── Consumer.tsx │ │ │ │ │ └── Provider.tsx │ │ │ │ ├── interface.ts │ │ │ │ ├── localeConsumer.tsx │ │ │ │ ├── localeProvider.tsx │ │ │ │ └── source │ │ │ │ │ ├── ar.ts │ │ │ │ │ ├── de.ts │ │ │ │ │ ├── en_GB.ts │ │ │ │ │ ├── en_US.ts │ │ │ │ │ ├── es.ts │ │ │ │ │ ├── fr.ts │ │ │ │ │ ├── id_ID.ts │ │ │ │ │ ├── it.ts │ │ │ │ │ ├── ja_JP.ts │ │ │ │ │ ├── ko_KR.ts │ │ │ │ │ ├── ms_MY.ts │ │ │ │ │ ├── nl_NL.ts │ │ │ │ │ ├── pl_PL.ts │ │ │ │ │ ├── pt_BR.ts │ │ │ │ │ ├── ro.ts │ │ │ │ │ ├── ru_RU.ts │ │ │ │ │ ├── sv_SE.ts │ │ │ │ │ ├── th_TH.ts │ │ │ │ │ ├── tr_TR.ts │ │ │ │ │ ├── vi_VN.ts │ │ │ │ │ ├── zh_CN.ts │ │ │ │ │ └── zh_TW.ts │ │ │ ├── lottie │ │ │ │ ├── __stories__ │ │ │ │ │ └── lottie.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── LottieDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ └── index.tsx │ │ │ ├── markdownRender │ │ │ │ ├── __stories__ │ │ │ │ │ └── markdownRender.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── markDownRenderDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── components │ │ │ │ │ ├── a.tsx │ │ │ │ │ ├── code.tsx │ │ │ │ │ ├── h1.tsx │ │ │ │ │ ├── h2.tsx │ │ │ │ │ ├── h3.tsx │ │ │ │ │ ├── h4.tsx │ │ │ │ │ ├── h5.tsx │ │ │ │ │ ├── h6.tsx │ │ │ │ │ ├── img.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── p.tsx │ │ │ │ │ └── table.tsx │ │ │ │ └── index.tsx │ │ │ ├── modal │ │ │ │ ├── ConfirmModal.tsx │ │ │ │ ├── Modal.tsx │ │ │ │ ├── ModalContent.tsx │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── ModalDemo.tsx │ │ │ │ │ ├── ModalDemo2.tsx │ │ │ │ │ ├── ModalDemoConfirm.tsx │ │ │ │ │ ├── ModalDemoHook.tsx │ │ │ │ │ ├── ModalDemoVueSFC.vue │ │ │ │ │ ├── ModalDocsDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── confirm.tsx │ │ │ │ ├── index-en-US.md │ │ │ │ ├── index.md │ │ │ │ ├── index.tsx │ │ │ │ └── useModal │ │ │ │ │ ├── HookModal.tsx │ │ │ │ │ └── index.tsx │ │ │ ├── navigation │ │ │ │ ├── CollapseButton.tsx │ │ │ │ ├── Footer.tsx │ │ │ │ ├── Header.tsx │ │ │ │ ├── Item.tsx │ │ │ │ ├── README.md │ │ │ │ ├── SubNav.tsx │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── NavDemo2.tsx │ │ │ │ │ ├── NavigationDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── index-en-US.md │ │ │ │ ├── index.md │ │ │ │ ├── index.tsx │ │ │ │ ├── nav-context.ts │ │ │ │ └── nav-context │ │ │ │ │ ├── Consumer.tsx │ │ │ │ │ └── Provider.tsx │ │ │ ├── notification │ │ │ │ ├── NoticeTransition.tsx │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── NotificationDemo.tsx │ │ │ │ │ ├── NotificationDemo2.tsx │ │ │ │ │ ├── NotificationDemo3.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── index.tsx │ │ │ │ ├── notice.tsx │ │ │ │ └── useNotification │ │ │ │ │ ├── HookNotice.tsx │ │ │ │ │ └── index.tsx │ │ │ ├── overflowList │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── OverListAllDemo.tsx │ │ │ │ │ ├── OverflowListDemo.tsx │ │ │ │ │ ├── OverflowListDemoScroll.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── index.md │ │ │ │ ├── index.tsx │ │ │ │ └── intersectionObserver.tsx │ │ │ ├── pagination │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── PaginationDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── index-en-US.md │ │ │ │ ├── index.md │ │ │ │ └── index.tsx │ │ │ ├── pincode │ │ │ │ ├── __stories__ │ │ │ │ │ └── pincode.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── PinCodeDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ └── index.tsx │ │ │ ├── popconfirm │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── PopComfirmDocsDemo.tsx │ │ │ │ │ ├── PopconfirmDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ └── index.tsx │ │ │ ├── popover │ │ │ │ ├── Arrow.tsx │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── PopoverTest.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ └── index.tsx │ │ │ ├── progress │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── ProgressDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── index-en-US.md │ │ │ │ ├── index.md │ │ │ │ └── index.tsx │ │ │ ├── radio │ │ │ │ ├── __stories__ │ │ │ │ │ └── radio.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── RadioDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── context.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── radio.tsx │ │ │ │ ├── radioGroup.tsx │ │ │ │ └── radioInner.tsx │ │ │ ├── rating │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── RatingDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── index-en-US.md │ │ │ │ ├── index.md │ │ │ │ ├── index.tsx │ │ │ │ └── item.tsx │ │ │ ├── resizable │ │ │ │ ├── __stories__ │ │ │ │ │ └── resizable.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── ResizableDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── group │ │ │ │ │ ├── context │ │ │ │ │ │ ├── Consumer.tsx │ │ │ │ │ │ └── Provider.tsx │ │ │ │ │ ├── resizeContext.ts │ │ │ │ │ ├── resizeGroup.tsx │ │ │ │ │ ├── resizeHandler.tsx │ │ │ │ │ └── resizeItem.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── single │ │ │ │ │ ├── resizable.tsx │ │ │ │ │ └── resizableHandler.tsx │ │ │ ├── resizeObserver │ │ │ │ └── index.tsx │ │ │ ├── scrollList │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── ScrollListDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── index.tsx │ │ │ │ └── scrollItem.tsx │ │ │ ├── select │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── SelectDemo.tsx │ │ │ │ │ ├── SelectDemo2.tsx │ │ │ │ │ ├── SelectDemo3.vue │ │ │ │ │ ├── SelectDemo4.vue │ │ │ │ │ ├── SelectDemo5.tsx │ │ │ │ │ ├── SelectDemoToRawTest.tsx │ │ │ │ │ ├── SelectDocsDemo.tsx │ │ │ │ │ ├── SelectRenderOptionItem.tsx │ │ │ │ │ ├── SelectTest.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── index.tsx │ │ │ │ ├── option.tsx │ │ │ │ ├── optionGroup.tsx │ │ │ │ ├── utils.tsx │ │ │ │ └── virtualRow.tsx │ │ │ ├── sideSheet │ │ │ │ ├── SideSheetContent.tsx │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── SideSheetDemo.tsx │ │ │ │ │ ├── SideSheetDemo2.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── index-en-US.md │ │ │ │ ├── index.md │ │ │ │ └── index.tsx │ │ │ ├── skeleton │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── SkeletonDemo.tsx │ │ │ │ │ ├── SkeletonDemoSFC.vue │ │ │ │ │ ├── placeholder.vue │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── index-en-US.md │ │ │ │ ├── index.md │ │ │ │ ├── index.tsx │ │ │ │ └── item.tsx │ │ │ ├── slider │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── SliderDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── index-en-US.md │ │ │ │ ├── index.md │ │ │ │ └── index.tsx │ │ │ ├── space │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── SpaceTest.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── index.tsx │ │ │ │ └── utils.ts │ │ │ ├── spin │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── SpinDemo.tsx │ │ │ │ │ └── test.spec.tsx │ │ │ │ ├── icon.tsx │ │ │ │ └── index.tsx │ │ │ ├── steps │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── StepsDemo.tsx │ │ │ │ │ └── test.spec.tsx │ │ │ │ ├── basicStep.tsx │ │ │ │ ├── basicSteps.tsx │ │ │ │ ├── context.ts │ │ │ │ ├── context │ │ │ │ │ ├── Consumer.tsx │ │ │ │ │ └── Provider.tsx │ │ │ │ ├── fillStep.tsx │ │ │ │ ├── fillSteps.tsx │ │ │ │ ├── index-en-US.md │ │ │ │ ├── index.md │ │ │ │ ├── index.tsx │ │ │ │ ├── navStep.tsx │ │ │ │ ├── navSteps.tsx │ │ │ │ └── step.tsx │ │ │ ├── switch │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── SwitchDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── index-en-US.md │ │ │ │ ├── index.md │ │ │ │ └── index.tsx │ │ │ ├── table │ │ │ │ ├── Body │ │ │ │ │ ├── BaseRow.tsx │ │ │ │ │ ├── ExpandedRow.tsx │ │ │ │ │ ├── SectionRow.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── ColGroup.tsx │ │ │ │ ├── Column.tsx │ │ │ │ ├── ColumnFilter.tsx │ │ │ │ ├── ColumnSelection.tsx │ │ │ │ ├── ColumnShape.ts │ │ │ │ ├── ColumnSorter.tsx │ │ │ │ ├── CustomExpandIcon.tsx │ │ │ │ ├── HeadTable.tsx │ │ │ │ ├── ResizableHeaderCell.tsx │ │ │ │ ├── ResizableTable.tsx │ │ │ │ ├── Table.tsx │ │ │ │ ├── TableCell.tsx │ │ │ │ ├── TableContextProvider.tsx │ │ │ │ ├── TableHeader.tsx │ │ │ │ ├── TableHeaderRow.tsx │ │ │ │ ├── TablePagination.tsx │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── AllDemo.tsx │ │ │ │ │ ├── BodyDemo.tsx │ │ │ │ │ ├── TableColumnsFromChildren.tsx │ │ │ │ │ ├── TableDemo1.tsx │ │ │ │ │ ├── TableDemo10.tsx │ │ │ │ │ ├── TableDemo11.tsx │ │ │ │ │ ├── TableDemo12.tsx │ │ │ │ │ ├── TableDemo13Virtualized.tsx │ │ │ │ │ ├── TableDemo2.tsx │ │ │ │ │ ├── TableDemo3.tsx │ │ │ │ │ ├── TableDemo4.tsx │ │ │ │ │ ├── TableDemo5.tsx │ │ │ │ │ ├── TableDemo6.tsx │ │ │ │ │ ├── TableDemo7.tsx │ │ │ │ │ ├── TableDemo8.tsx │ │ │ │ │ ├── TableDemo9.tsx │ │ │ │ │ ├── TableDemoColumnChildren.tsx │ │ │ │ │ ├── TableDemoSFC.vue │ │ │ │ │ ├── TableDemoSelectedKey.tsx │ │ │ │ │ ├── TableDocsDemo.tsx │ │ │ │ │ ├── demo11 │ │ │ │ │ │ └── SortableItem.tsx │ │ │ │ │ └── test.spec.tsx │ │ │ │ ├── getColumns.tsx │ │ │ │ ├── index-en-US.md │ │ │ │ ├── index.md │ │ │ │ ├── index.tsx │ │ │ │ ├── interface.ts │ │ │ │ ├── table-context.ts │ │ │ │ ├── tableContext │ │ │ │ │ ├── Consumer.tsx │ │ │ │ │ └── Provider.tsx │ │ │ │ └── utils.ts │ │ │ ├── tabs │ │ │ │ ├── TabBar.tsx │ │ │ │ ├── TabItem.tsx │ │ │ │ ├── TabPane.tsx │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── TabsDemo.tsx │ │ │ │ │ ├── TabsDemo2.tsx │ │ │ │ │ ├── TabsDemo3.tsx │ │ │ │ │ ├── TabsDemo3VueSFC.vue │ │ │ │ │ ├── TabsDemo4.tsx │ │ │ │ │ ├── TabsDemo5.tsx │ │ │ │ │ ├── TabsDemoMore.tsx │ │ │ │ │ ├── TabsDemoPaneChildren.tsx │ │ │ │ │ ├── TabsDemoReact.tsx │ │ │ │ │ ├── TabsDemoVueSFC.vue │ │ │ │ │ ├── TabsDocsDemo.tsx │ │ │ │ │ └── test.spec.tsx │ │ │ │ ├── index-en-US.md │ │ │ │ ├── index.md │ │ │ │ ├── index.tsx │ │ │ │ ├── interface.ts │ │ │ │ ├── tabs-context.ts │ │ │ │ └── tabs-context │ │ │ │ │ ├── Consumer.tsx │ │ │ │ │ └── Provider.tsx │ │ │ ├── tag │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── TagDemo.tsx │ │ │ │ │ ├── TagDocsDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── group.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── interface.ts │ │ │ ├── tagInput │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── TagInputDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ └── index.tsx │ │ │ ├── timePicker │ │ │ │ ├── Combobox.tsx │ │ │ │ ├── PanelShape.ts │ │ │ │ ├── TimeInput.tsx │ │ │ │ ├── TimePicker.tsx │ │ │ │ ├── TimeShape.ts │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── TimePickerDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── index.tsx │ │ │ │ └── propTypes.ts │ │ │ ├── timeline │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── TimelineDemo.tsx │ │ │ │ │ └── test.spec.tsx │ │ │ │ ├── index-en-US.md │ │ │ │ ├── index.md │ │ │ │ ├── index.tsx │ │ │ │ └── item.tsx │ │ │ ├── toast │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── ToastDemo.tsx │ │ │ │ │ ├── ToastUseDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── index.tsx │ │ │ │ ├── toast.tsx │ │ │ │ └── useToast │ │ │ │ │ ├── HookToast.tsx │ │ │ │ │ └── index.tsx │ │ │ ├── tooltip │ │ │ │ ├── ArrowBoundingShape.ts │ │ │ │ ├── TriangleArrow.tsx │ │ │ │ ├── TriangleArrowVertical.tsx │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── TooltipDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ └── index.tsx │ │ │ ├── transfer │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── TransferDemo.tsx │ │ │ │ │ ├── TransferDemoDocs.tsx │ │ │ │ │ ├── TransferTreeDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── index-en-US.md │ │ │ │ ├── index.md │ │ │ │ └── index.tsx │ │ │ ├── tree │ │ │ │ ├── TreeContext │ │ │ │ │ ├── Consumer.tsx │ │ │ │ │ └── Provider.tsx │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── TreeAllDemo.tsx │ │ │ │ │ ├── TreeCheckDemo.tsx │ │ │ │ │ ├── TreeCheckSimpleJsonDemo.tsx │ │ │ │ │ ├── TreeDemo.tsx │ │ │ │ │ ├── TreeDemo2.tsx │ │ │ │ │ ├── TreeDemo3.tsx │ │ │ │ │ ├── TreeDemo4.tsx │ │ │ │ │ ├── TreeDemo5.tsx │ │ │ │ │ ├── VirtualizeTreeDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── autoSizer.tsx │ │ │ │ ├── collapse.tsx │ │ │ │ ├── indent.tsx │ │ │ │ ├── index-en-US.md │ │ │ │ ├── index.md │ │ │ │ ├── index.tsx │ │ │ │ ├── interface.ts │ │ │ │ ├── nodeList.tsx │ │ │ │ ├── treeContext.tsx │ │ │ │ ├── treeNode.tsx │ │ │ │ └── treeUtil.tsx │ │ │ ├── treeSelect │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── TreeSelectDemo.tsx │ │ │ │ │ └── test.spec.tsx │ │ │ │ ├── index-en-US.md │ │ │ │ ├── index.md │ │ │ │ └── index.tsx │ │ │ ├── trigger │ │ │ │ └── index.tsx │ │ │ ├── typography │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── NumeralDemo.tsx │ │ │ │ │ ├── TypoCopyDemo.tsx │ │ │ │ │ ├── TypoDemo.tsx │ │ │ │ │ ├── TypoDemo2.tsx │ │ │ │ │ ├── TypoDemo3.tsx │ │ │ │ │ ├── TypoDemoSFC.vue │ │ │ │ │ ├── linkDemo.vue │ │ │ │ │ ├── test.spec.ts │ │ │ │ │ └── textDemo.vue │ │ │ │ ├── base.tsx │ │ │ │ ├── context.tsx │ │ │ │ ├── context │ │ │ │ │ ├── Consumer.tsx │ │ │ │ │ └── Provider.tsx │ │ │ │ ├── copyable.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── interface.ts │ │ │ │ ├── numeral.tsx │ │ │ │ ├── paragraph.tsx │ │ │ │ ├── text.tsx │ │ │ │ ├── title.tsx │ │ │ │ ├── typography.tsx │ │ │ │ └── util.tsx │ │ │ ├── upload │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── UpdateDemo2.tsx │ │ │ │ │ ├── UploadDemo.tsx │ │ │ │ │ ├── UploadDemo3.tsx │ │ │ │ │ ├── UploadDemo4.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ ├── fileCard.tsx │ │ │ │ ├── index-en-US.md │ │ │ │ ├── index.md │ │ │ │ ├── index.tsx │ │ │ │ └── interface.ts │ │ │ ├── userGuide │ │ │ │ ├── __stories__ │ │ │ │ │ └── Demo.stories.tsx │ │ │ │ ├── __test__ │ │ │ │ │ ├── UserGuideDemo.tsx │ │ │ │ │ └── test.spec.ts │ │ │ │ └── index.tsx │ │ │ └── withVModel │ │ │ │ ├── WithVModel.tsx │ │ │ │ ├── __test__ │ │ │ │ ├── WithVModelDemo.tsx │ │ │ │ └── test.spec.ts │ │ │ │ └── index.ts │ │ ├── docDemo.scss │ │ ├── env.d.ts │ │ ├── main.scss │ │ └── main.ts │ ├── tsconfig.json │ ├── vite.config.ts │ └── web-types.json └── vite-plugin-semi-theme │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── build.config.ts │ ├── package.json │ ├── src │ ├── componentName.ts │ ├── index.ts │ └── types.ts │ └── tsconfig.json ├── patches ├── @douyinfe__semi-foundation@2.63.0.patch ├── @douyinfe__semi-foundation@2.73.0.patch ├── @vue__repl@4.2.1.patch ├── @vue__repl@4.3.1.patch └── @vue__repl@4.4.2.patch ├── pnpm-lock.yaml ├── pnpm-workspace.yaml ├── script ├── build-svg.js └── version.js ├── stories ├── Button.stories.ts ├── Button.vue ├── Header.stories.tsx ├── Header.vue ├── Introduction.mdx ├── Page.stories.ts ├── Page.vue ├── assets │ ├── code-brackets.svg │ ├── colors.svg │ ├── comments.svg │ ├── direction.svg │ ├── flow.svg │ ├── plugin.svg │ ├── repo.svg │ └── stackalt.svg ├── button.css ├── header.css └── page.css ├── tsconfig.json ├── vite.config.ts └── vitest.config.ts /.changeset/README.md: -------------------------------------------------------------------------------- 1 | # Changesets 2 | 3 | Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works 4 | with multi-package repos, or single-package repos to help you version and publish your code. You can 5 | find the full documentation for it [in our repository](https://github.com/changesets/changesets) 6 | 7 | We have a quick list of common questions to get you started engaging with this project in 8 | [our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md) 9 | -------------------------------------------------------------------------------- /.changeset/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://unpkg.com/@changesets/config@2.0.0/schema.json", 3 | "changelog": "@changesets/cli/changelog", 4 | "commit": false, 5 | "fixed": [], 6 | "linked": [], 7 | "access": "restricted", 8 | "baseBranch": "master", 9 | "updateInternalDependencies": "patch", 10 | "ignore": [] 11 | } 12 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: 使用问题 4 | url: https://semi-ui-vue.netlify.app 5 | about: 请先查阅我们的文档 6 | -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # 默认忽略的文件 2 | /shelf/ 3 | /workspace.xml 4 | # 基于编辑器的 HTTP 客户端请求 5 | /httpRequests/ 6 | # Datasource local storage ignored files 7 | /dataSources/ 8 | /dataSources.local.xml 9 | -------------------------------------------------------------------------------- /.idea/jsLibraryMappings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.npmrc.bak: -------------------------------------------------------------------------------- 1 | registry=https://registry.npmmirror.com/ 2 | 3 | # registry=https://registry.npmjs.org/ 4 | auto-install-peers=true 5 | 6 | -------------------------------------------------------------------------------- /.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | proseWrap: 'never', 3 | printWidth: 120, 4 | tabWidth: 2, 5 | trailingComma: 'es5', 6 | bracketSpacing: true, 7 | singleQuote: true, 8 | useTabs: false, 9 | semi: true, 10 | }; 11 | -------------------------------------------------------------------------------- /.storybook/preview-head.html: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /.storybook/preview.ts: -------------------------------------------------------------------------------- 1 | export const parameters = { 2 | options: { 3 | storySort: (a, b) => { 4 | return a.id.localeCompare(b.id, undefined, { numeric: true }) 5 | }, 6 | }, 7 | // actions: { 8 | // argTypesRegex: "^on[A-Z].*", 9 | // }, 10 | tags: ['autodocs'], 11 | controls: { 12 | matchers: { 13 | color: /(background|color)$/i, 14 | date: /Date$/, 15 | }, 16 | }, 17 | } 18 | -------------------------------------------------------------------------------- /docs/.vitepress/mdPlugin/overview.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rashagu/semi-design-vue/455ba66bae30c00260f9c8e721f2e618018c9274/docs/.vitepress/mdPlugin/overview.ts -------------------------------------------------------------------------------- /docs/.vitepress/theme/index.ts: -------------------------------------------------------------------------------- 1 | // .vitepress/theme/index.js 2 | 3 | // You can directly import Vue files in the theme entry 4 | // VitePress is pre-configured with @vitejs/plugin-vue. 5 | import DefaultTheme from 'vitepress/theme' 6 | //@ts-ignore 7 | import myTheme from './layout' 8 | 9 | export default { 10 | // ...DefaultTheme, 11 | ...myTheme 12 | } 13 | -------------------------------------------------------------------------------- /docs/images/docIcons/dark_mode.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /docs/images/docIcons/doc-a11y.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /docs/images/docIcons/doc-backtop.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /docs/images/docIcons/doc-badge.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /docs/images/docIcons/doc-card.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/images/docIcons/doc-cascader.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /docs/images/docIcons/doc-changelog.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /docs/images/docIcons/doc-checkbox.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /docs/images/docIcons/doc-codesandbox.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /docs/images/docIcons/doc-darkmode.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /docs/images/docIcons/doc-intro.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /docs/images/docIcons/doc-layout.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /docs/images/docIcons/doc-migrate.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /docs/images/docIcons/doc-modal.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /docs/images/docIcons/doc-navigation.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /docs/images/docIcons/doc-overflowList.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /docs/images/docIcons/doc-pagination.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /docs/images/docIcons/doc-popover-1.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /docs/images/docIcons/doc-popover.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /docs/images/docIcons/doc-progress.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /docs/images/docIcons/doc-radio.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /docs/images/docIcons/doc-sidesheet.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /docs/images/docIcons/doc-skeleton.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /docs/images/docIcons/doc-slider.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /docs/images/docIcons/doc-space.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/images/docIcons/doc-steps.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /docs/images/docIcons/doc-switch.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /docs/images/docIcons/doc-timeline.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /docs/images/docIcons/doc-timepicker.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /docs/images/docIcons/doc-token.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /docs/images/docIcons/doc-userGuide.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /docs/images/docIcons/doc-vector.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /docs/images/docIcons/doc-webcomponents.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /docs/images/docIcons/index.js: -------------------------------------------------------------------------------- 1 | const iconMap = {}; 2 | 3 | const req = require.context('@svgr/webpack?dimensions=true&icon=true!.', false, /.svg$/); 4 | req.keys().forEach(id => { 5 | const x = req(id).default; 6 | const svgName = id.replace('./', '').replace('.svg', ''); 7 | iconMap[svgName] = x; 8 | }); 9 | 10 | export default iconMap; -------------------------------------------------------------------------------- /docs/images/docIcons/semi-logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /docs/images/semi-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rashagu/semi-design-vue/455ba66bae30c00260f9c8e721f2e618018c9274/docs/images/semi-icon.png -------------------------------------------------------------------------------- /docs/src/public/BingSiteAuth.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 477BB5F1791BCE76FCB6478D6DA68572 4 | -------------------------------------------------------------------------------- /docs/src/public/font/Inter-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rashagu/semi-design-vue/455ba66bae30c00260f9c8e721f2e618018c9274/docs/src/public/font/Inter-Bold.ttf -------------------------------------------------------------------------------- /docs/src/public/font/Inter-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rashagu/semi-design-vue/455ba66bae30c00260f9c8e721f2e618018c9274/docs/src/public/font/Inter-Regular.ttf -------------------------------------------------------------------------------- /docs/src/public/semiIconsLab/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rashagu/semi-design-vue/455ba66bae30c00260f9c8e721f2e618018c9274/docs/src/public/semiIconsLab/favicon.ico -------------------------------------------------------------------------------- /docs/src/zh-CN/basic/divider/demo/DividerDemo0.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 13 | -------------------------------------------------------------------------------- /docs/src/zh-CN/basic/divider/demo/DividerDemo1.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 13 | -------------------------------------------------------------------------------- /docs/src/zh-CN/basic/grid/demo/FlexOder.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /docs/src/zh-CN/basic/space/demo/base.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 13 | -------------------------------------------------------------------------------- /docs/src/zh-CN/basic/space/demo/verticalDemo.vue: -------------------------------------------------------------------------------- 1 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /docs/src/zh-CN/basic/space/demo/wrapDemo.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 17 | -------------------------------------------------------------------------------- /docs/src/zh-CN/input/autocomplete/demo/disabledAutoComplete.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 17 | 18 | -------------------------------------------------------------------------------- /docs/src/zh-CN/input/button/demo/base.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 14 | 15 | 20 | -------------------------------------------------------------------------------- /docs/src/zh-CN/input/content-guidelines/index.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rashagu/semi-design-vue/455ba66bae30c00260f9c8e721f2e618018c9274/docs/src/zh-CN/input/content-guidelines/index.md -------------------------------------------------------------------------------- /docs/src/zh-CN/input/popover/index.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rashagu/semi-design-vue/455ba66bae30c00260f9c8e721f2e618018c9274/docs/src/zh-CN/input/popover/index.md -------------------------------------------------------------------------------- /env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /netlify.toml: -------------------------------------------------------------------------------- 1 | [build.environment] 2 | PNPM_VERSION = "10.x" 3 | -------------------------------------------------------------------------------- /packages/semi-animation-vue/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_Store 3 | dist 4 | dist-ssr 5 | *.local 6 | 7 | # 项目排除路径 8 | /src/packages/icons/svgs/ -------------------------------------------------------------------------------- /packages/semi-animation-vue/README.md: -------------------------------------------------------------------------------- 1 | # semi-animation-vue 2 | `npm publish --access public` 3 | -------------------------------------------------------------------------------- /packages/semi-animation-vue/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Vite App 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /packages/semi-animation-vue/index.ts: -------------------------------------------------------------------------------- 1 | export { default as StyledAnimation } from './src/animation/StyledAnimation'; 2 | export { default as StyledTransition } from './src/animation/StyledTransition'; 3 | export { default as Animation } from './src/animation/Animation'; 4 | export { default as KeyFrames } from './src/animation/KeyFrames'; 5 | export { default as Transition } from './src/animation/Transition'; 6 | export { interpolate, presets } from '@douyinfe/semi-animation'; 7 | -------------------------------------------------------------------------------- /packages/semi-animation-vue/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rashagu/semi-design-vue/455ba66bae30c00260f9c8e721f2e618018c9274/packages/semi-animation-vue/public/favicon.ico -------------------------------------------------------------------------------- /packages/semi-animation-vue/src/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import {h} from 'vue' 2 | import {shallowMount, mount} from "@vue/test-utils"; 3 | import { expect, test } from 'vitest' 4 | 5 | test('render with scoped-slot', async () => { 6 | const HelloWorld: any = { 7 | render() { 8 | // @ts-ignore 9 | return (h('div', {id:'a'}, '123')) 10 | }, 11 | } 12 | const wrapper = shallowMount(HelloWorld, {}) 13 | 14 | const profileLink = wrapper.get('#a') 15 | expect(profileLink.text()).toEqual('123') 16 | }) 17 | -------------------------------------------------------------------------------- /packages/semi-animation-vue/src/__test__/test2.spec.ts: -------------------------------------------------------------------------------- 1 | import {shallowMount, mount} from "@vue/test-utils"; 2 | import { expect, test } from 'vitest' 3 | import App from '../App' 4 | 5 | test('render with scoped-slot', async () => { 6 | const wrapper = shallowMount(App, {}) 7 | 8 | const profileLink = wrapper.get('.aa') 9 | expect(profileLink.text()).toEqual('123') 10 | }) 11 | -------------------------------------------------------------------------------- /packages/semi-animation-vue/src/animation/index.ts: -------------------------------------------------------------------------------- 1 | export { default as StyledAnimation } from './StyledAnimation'; 2 | export { default as StyledTransition } from './StyledTransition'; 3 | export { default as Animation } from './Animation'; 4 | export { default as KeyFrames } from './KeyFrames'; 5 | export { default as Transition } from './Transition'; 6 | export { interpolate, presets } from '@douyinfe/semi-animation'; 7 | -------------------------------------------------------------------------------- /packages/semi-animation-vue/src/animation/utils/invokeFns.spec.ts: -------------------------------------------------------------------------------- 1 | import { expect, test, describe } from 'vitest' 2 | import {mount} from "@vue/test-utils"; 3 | import invokeFns from "./invokeFns"; 4 | 5 | test('TypoDemo test', async () => { 6 | invokeFns([ 7 | ()=>{} 8 | ], [1,2,3]) 9 | }) 10 | -------------------------------------------------------------------------------- /packages/semi-animation-vue/src/animation/utils/invokeFns.ts: -------------------------------------------------------------------------------- 1 | export default function invokeFns(fns: any[], args: any[] = []) { 2 | if (Array.isArray(fns) && fns.length) { 3 | fns.forEach(fn => { 4 | if (typeof fn === 'function') { 5 | fn(...args); 6 | } 7 | }); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /packages/semi-animation-vue/src/animation/utils/noop.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line @typescript-eslint/no-empty-function 2 | export default function noop() { } -------------------------------------------------------------------------------- /packages/semi-animation-vue/src/animation/utils/object.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rashagu/semi-design-vue/455ba66bae30c00260f9c8e721f2e618018c9274/packages/semi-animation-vue/src/animation/utils/object.ts -------------------------------------------------------------------------------- /packages/semi-animation-vue/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rashagu/semi-design-vue/455ba66bae30c00260f9c8e721f2e618018c9274/packages/semi-animation-vue/src/assets/logo.png -------------------------------------------------------------------------------- /packages/semi-animation-vue/src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | declare module '*.vue' { 5 | import { DefineComponent } from 'vue' 6 | // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types 7 | const component: DefineComponent<{}, {}, any> 8 | export default component 9 | } 10 | -------------------------------------------------------------------------------- /packages/semi-animation-vue/src/main.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rashagu/semi-design-vue/455ba66bae30c00260f9c8e721f2e618018c9274/packages/semi-animation-vue/src/main.scss -------------------------------------------------------------------------------- /packages/semi-animation-vue/src/main.ts: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue' 2 | import App from './App' 3 | import './main.scss' 4 | 5 | createApp(App).mount('#app') 6 | -------------------------------------------------------------------------------- /packages/semi-animation-vue/src/tsconfig.esm.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "exclude": ["./**/*.spec.*", 4 | "./main.ts", "../script/*", "../components", 5 | "./Comp1", 6 | "./App.tsx", 7 | "./__test__", 8 | "../scripts" 9 | ], 10 | "include": ["../index.ts"], 11 | "compilerOptions": { 12 | "outDir": "../lib", 13 | "strictNullChecks": false, 14 | "module": "ES6", 15 | "target": "ES6", 16 | "types": ["vite/client", "node"] 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /packages/semi-animation-vue/tsconfig.esm.json: -------------------------------------------------------------------------------- 1 | { 2 | "files": [], 3 | "references": [ 4 | { 5 | "path": "./src/tsconfig.esm.json" 6 | }, 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_Store 3 | dist 4 | dist-ssr 5 | *.local 6 | 7 | # 项目排除路径 8 | # /src/icons/svgs/ 9 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/README.md: -------------------------------------------------------------------------------- 1 | # semi-icons of vue3 2 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Vite App 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rashagu/semi-design-vue/455ba66bae30c00260f9c8e721f2e618018c9274/packages/semi-icons-lab-vue/public/favicon.ico -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/scripts/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | proseWrap: 'never', 3 | printWidth: 120, 4 | tabWidth: 4, 5 | trailingComma: 'es5', 6 | bracketSpacing: true, 7 | singleQuote: true, 8 | useTabs: false, 9 | semi: true, 10 | }; 11 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/scripts/compileLib.cjs: -------------------------------------------------------------------------------- 1 | const gulp = require('gulp'); 2 | require('../gulpfile.cjs'); 3 | 4 | function compileLib() { 5 | const taskInstance = gulp.task('compileLib'); 6 | if (taskInstance === undefined) { 7 | console.error('no task named compileLib registered'); 8 | return; 9 | } 10 | taskInstance.apply(gulp); 11 | } 12 | 13 | compileLib(); 14 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/src/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import {h} from 'vue' 2 | import {shallowMount, mount} from "@vue/test-utils"; 3 | import { expect, test } from 'vitest' 4 | 5 | test('render with scoped-slot', async () => { 6 | const HelloWorld: any = { 7 | render() { 8 | // @ts-ignore 9 | return (h('div', {id:'a'}, '123')) 10 | }, 11 | } 12 | const wrapper = shallowMount(HelloWorld, {}) 13 | 14 | const profileLink = wrapper.get('#a') 15 | expect(profileLink.text()).toEqual('123') 16 | }) 17 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/src/__test__/test2.spec.ts: -------------------------------------------------------------------------------- 1 | import {shallowMount, mount} from "@vue/test-utils"; 2 | import { expect, test } from 'vitest' 3 | import App from '../App' 4 | 5 | test('render with scoped-slot', async () => { 6 | const wrapper = shallowMount(App, {}) 7 | 8 | const profileLink = wrapper.get('.aa') 9 | expect(profileLink.text()).toEqual('123') 10 | }) 11 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rashagu/semi-design-vue/455ba66bae30c00260f9c8e721f2e618018c9274/packages/semi-icons-lab-vue/src/assets/logo.png -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | declare module '*.vue' { 5 | import { DefineComponent } from 'vue' 6 | // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types 7 | const component: DefineComponent<{}, {}, any> 8 | export default component 9 | } 10 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/src/icons/env.ts: -------------------------------------------------------------------------------- 1 | export const BASE_CLASS_PREFIX = 'semi'; -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/src/icons/styles/variables.scss: -------------------------------------------------------------------------------- 1 | 2 | $width-icon_extra_small: $width-icon-extra-small; // 图标尺寸 - 超小 3 | $width-icon_small: $width-icon-small; // 图标尺寸 - 小 4 | $width-icon_medium: $width-icon-medium; // 图标尺寸 - 中 5 | $width-icon_large: $width-icon-large; // 图标尺寸 - 大 6 | $width-icon_extra_large: $width-icon-extra-large; // 图标尺寸 - 超大 7 | $motion-icon_spin-animationDuration: .6s; -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/src/icons/svgs/accessibility.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/src/icons/svgs/back-top.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/src/icons/svgs/badge.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/src/icons/svgs/banner.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/src/icons/svgs/button.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/src/icons/svgs/card.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/src/icons/svgs/cascader.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/src/icons/svgs/changelog.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/src/icons/svgs/checkbox.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/src/icons/svgs/dark-mode.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/src/icons/svgs/descriptions.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/src/icons/svgs/divider.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/src/icons/svgs/intro.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/src/icons/svgs/layout.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/src/icons/svgs/modal.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/src/icons/svgs/navigation.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/src/icons/svgs/overflow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/src/icons/svgs/pagination.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/src/icons/svgs/popconfirm.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/src/icons/svgs/popover.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/src/icons/svgs/progress.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/src/icons/svgs/radio.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/src/icons/svgs/side-sheet.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/src/icons/svgs/skeleton.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/src/icons/svgs/slider.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/src/icons/svgs/space.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/src/icons/svgs/steps.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/src/icons/svgs/switch.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/src/icons/svgs/time-picker.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/src/icons/svgs/timeline.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/src/icons/svgs/token.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/src/icons/svgs/webcomponents.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/src/main.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rashagu/semi-design-vue/455ba66bae30c00260f9c8e721f2e618018c9274/packages/semi-icons-lab-vue/src/main.scss -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/src/main.ts: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue' 2 | import App from './App' 3 | import './main.scss' 4 | 5 | createApp(App).mount('#app') 6 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/src/tsconfig.esm.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "exclude": ["./**/*.spec.*", 4 | "./main.ts", "../script/*", "../components", 5 | "./Comp1", 6 | "./App.tsx", 7 | "./__test__", 8 | "./**/__test__", 9 | "../scripts" 10 | ], 11 | "compilerOptions": { 12 | "rootDir": "./icons", 13 | "outDir": "../lib", 14 | "strictNullChecks": false, 15 | "module": "ES6", 16 | "target": "ES6", 17 | "jsx": "preserve", 18 | "types": ["vite/client", "node"], 19 | "noImplicitAny": false 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /packages/semi-icons-lab-vue/tsconfig.esm.json: -------------------------------------------------------------------------------- 1 | { 2 | "files": [], 3 | "references": [ 4 | { 5 | "path": "./src/tsconfig.esm.json" 6 | }, 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_Store 3 | dist 4 | dist-ssr 5 | *.local 6 | 7 | # 项目排除路径 8 | # /src/icons/svgs/ 9 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/README.md: -------------------------------------------------------------------------------- 1 | # semi-icons of vue3 2 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Vite App 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rashagu/semi-design-vue/455ba66bae30c00260f9c8e721f2e618018c9274/packages/semi-icons-vue/public/favicon.ico -------------------------------------------------------------------------------- /packages/semi-icons-vue/scripts/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | proseWrap: 'never', 3 | printWidth: 120, 4 | tabWidth: 4, 5 | trailingComma: 'es5', 6 | bracketSpacing: true, 7 | singleQuote: true, 8 | useTabs: false, 9 | semi: true, 10 | }; 11 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/scripts/compileLib.cjs: -------------------------------------------------------------------------------- 1 | const gulp = require('gulp'); 2 | require('../gulpfile.cjs'); 3 | 4 | function compileLib() { 5 | const taskInstance = gulp.task('compileLib'); 6 | if (taskInstance === undefined) { 7 | console.error('no task named compileLib registered'); 8 | return; 9 | } 10 | taskInstance.apply(gulp); 11 | } 12 | 13 | compileLib(); 14 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import {h} from 'vue' 2 | import {shallowMount, mount} from "@vue/test-utils"; 3 | import { expect, test } from 'vitest' 4 | 5 | test('render with scoped-slot', async () => { 6 | const HelloWorld: any = { 7 | render() { 8 | // @ts-ignore 9 | return (h('div', {id:'a'}, '123')) 10 | }, 11 | } 12 | const wrapper = shallowMount(HelloWorld, {}) 13 | 14 | const profileLink = wrapper.get('#a') 15 | expect(profileLink.text()).toEqual('123') 16 | }) 17 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/__test__/test2.spec.ts: -------------------------------------------------------------------------------- 1 | import {shallowMount, mount} from "@vue/test-utils"; 2 | import { expect, test } from 'vitest' 3 | import App from '../App' 4 | 5 | test('render with scoped-slot', async () => { 6 | const wrapper = shallowMount(App, {}) 7 | 8 | const profileLink = wrapper.get('.aa') 9 | expect(profileLink.text()).toEqual('123') 10 | }) 11 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rashagu/semi-design-vue/455ba66bae30c00260f9c8e721f2e618018c9274/packages/semi-icons-vue/src/assets/logo.png -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | declare module '*.vue' { 5 | import { DefineComponent } from 'vue' 6 | // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types 7 | const component: DefineComponent<{}, {}, any> 8 | export default component 9 | } 10 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/components/interface.ts: -------------------------------------------------------------------------------- 1 | 2 | // 约束vuePropsType 3 | import type { PropType } from 'vue'; 4 | 5 | export type IsOptional = {} extends Pick ? true : false; 6 | export type CombineProps = { 7 | [K in keyof Required]: IsOptional extends true ?({ 8 | type: PropType; 9 | default?: any; 10 | required?: false; 11 | } | PropType):({ 12 | type: PropType; 13 | default?: any; 14 | required: true; 15 | }) 16 | } 17 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/env.ts: -------------------------------------------------------------------------------- 1 | export const BASE_CLASS_PREFIX = 'semi'; -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/styles/variables.scss: -------------------------------------------------------------------------------- 1 | 2 | $width-icon_extra_small: $width-icon-extra-small; // 图标尺寸 - 超小 3 | $width-icon_small: $width-icon-small; // 图标尺寸 - 小 4 | $width-icon_medium: $width-icon-medium; // 图标尺寸 - 中 5 | $width-icon_large: $width-icon-large; // 图标尺寸 - 大 6 | $width-icon_extra_large: $width-icon-extra-large; // 图标尺寸 - 超大 7 | $motion-icon_spin-animationDuration: .6s; -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/align_h_left_stroked.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/archive.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/arrow_down.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/arrow_down_left.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/arrow_down_right.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/arrow_right.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/arrow_up_left.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/arrow_up_right.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/backward.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/bold.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/bolt.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/book_stroked.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/bookmark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/bottom_center_stroked.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/bottom_left_stroked.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/bottom_right_stroked.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/box.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/button_stroked.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/bytedance_logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/caretdown.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/caretup.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/carousel_stroked.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/center_left_stroked.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/center_right_stroked.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/checkbox_indeterminate.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/checkbox_tick.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/chevron_down.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/chevron_down_stroked.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/chevron_left.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/chevron_right.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/chevron_right_stroked.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/chevron_up.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/clock.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/cloud.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/columns_stroked.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/component.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/component_stroked.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/connection_point_1.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/connection_point_2.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/contrast.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/copy.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/corner_radius_stroked.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/credit_card.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/crop.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/desktop.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/disc.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/duration.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/eye_opened.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/facebook.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/fast_forward.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/fast_foward.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/filled_arrow_down.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/filled_arrow_up.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/filter.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/folder.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/folder_stroked.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/font.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/forward.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/gallery.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/grid-rectangle.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/grid-square.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/histogram.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/home.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/inherit.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/inherit_stroked.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/inner_section_stroked.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/italic.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/kanban.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/key.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/like_heart.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/list_view.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/lock.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/lock_stroked.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/mail.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/mail_stroked.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/mail_stroked_1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/map_pin.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/minus.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/minus_circle.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/minus_circle_stroked.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/minus_stroked.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/modal_stroked.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/monitor_stroked.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/moon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/music.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/option.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/pause.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/phone.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/pie_chart_stroked.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/play.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/play_circle.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/plus.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/plus_stroked.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/qingyan.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/radio.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/reply.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/restart.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/rows_stroked.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/save_stroked.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/section_stroked.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/semi_logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/send.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/shield_stroked.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/shopping_bag.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/sidebar.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/small_triangle_down.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/small_triangle_left.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/small_triangle_right.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/small_triangle_top.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/smartphone_stroked.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/sort.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/star.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/stop.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/tabs_stroked.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/text.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/text_stroked.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/tick.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/top.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/top_center_stroked.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/top_left_stroked.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/top_right_stroked.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/transparent_stroked.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/tree_triangle_down.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/tree_triangle_right.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/triangle_arrow.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/triangle_arrow_vertical.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/triangle_down.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/triangle_up.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/underline.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/unlock.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/unlock_stroked.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/video.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/icons/svgs/volumn_silent.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/main.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rashagu/semi-design-vue/455ba66bae30c00260f9c8e721f2e618018c9274/packages/semi-icons-vue/src/main.scss -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/main.ts: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue' 2 | import App from './App' 3 | import './main.scss' 4 | 5 | createApp(App).mount('#app') 6 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/src/tsconfig.esm.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "exclude": ["./**/*.spec.*", 4 | "./main.ts", "../script/*", "../components", 5 | "./Comp1", 6 | "./App.tsx", 7 | "./__test__", 8 | "./**/__test__", 9 | "../scripts" 10 | ], 11 | "compilerOptions": { 12 | "rootDir": "./icons", 13 | "outDir": "../lib", 14 | "strictNullChecks": false, 15 | "module": "ES6", 16 | "target": "ES6", 17 | "jsx": "preserve", 18 | "types": ["vite/client", "node"], 19 | "noImplicitAny": false 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /packages/semi-icons-vue/tsconfig.esm.json: -------------------------------------------------------------------------------- 1 | { 2 | "files": [], 3 | "references": [ 4 | { 5 | "path": "./src/tsconfig.esm.json" 6 | }, 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /packages/semi-illustrations-vue/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_Store 3 | dist 4 | dist-ssr 5 | *.local 6 | 7 | # 项目排除路径 8 | # /src/icons/svgs/ 9 | -------------------------------------------------------------------------------- /packages/semi-illustrations-vue/README.md: -------------------------------------------------------------------------------- 1 | # semi-illustrations-vue of vue3 2 | -------------------------------------------------------------------------------- /packages/semi-illustrations-vue/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Vite App 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /packages/semi-illustrations-vue/scripts/.prettierrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | proseWrap: 'never', 3 | printWidth: 120, 4 | tabWidth: 4, 5 | trailingComma: 'es5', 6 | bracketSpacing: true, 7 | singleQuote: true, 8 | useTabs: false, 9 | semi: true, 10 | }; 11 | -------------------------------------------------------------------------------- /packages/semi-illustrations-vue/scripts/compileLib.cjs: -------------------------------------------------------------------------------- 1 | const gulp = require('gulp'); 2 | require('../gulpfile.cjs'); 3 | 4 | function compileLib() { 5 | const taskInstance = gulp.task('compileLib'); 6 | if (taskInstance === undefined) { 7 | console.error('no task named compileLib registered'); 8 | return; 9 | } 10 | taskInstance.apply(gulp); 11 | } 12 | 13 | compileLib(); 14 | -------------------------------------------------------------------------------- /packages/semi-illustrations-vue/src/App.tsx: -------------------------------------------------------------------------------- 1 | import {defineComponent, ref, h, onMounted,} from 'vue' 2 | 3 | export interface ExampleProps { 4 | name?: string 5 | } 6 | 7 | export const VuePropsType = { 8 | name: String 9 | } 10 | 11 | const App = defineComponent((props, {slots}) => { 12 | 13 | return () => ( 14 |
15 |
123
16 |
17 | ) 18 | }) 19 | 20 | 21 | // @ts-ignore 22 | App.props = VuePropsType 23 | 24 | export default App 25 | -------------------------------------------------------------------------------- /packages/semi-illustrations-vue/src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | declare module '*.vue' { 5 | import { DefineComponent } from 'vue' 6 | // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types 7 | const component: DefineComponent<{}, {}, any> 8 | export default component 9 | } 10 | -------------------------------------------------------------------------------- /packages/semi-illustrations-vue/src/main.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rashagu/semi-design-vue/455ba66bae30c00260f9c8e721f2e618018c9274/packages/semi-illustrations-vue/src/main.scss -------------------------------------------------------------------------------- /packages/semi-illustrations-vue/src/main.ts: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue' 2 | import App from './App' 3 | import './main.scss' 4 | 5 | createApp(App).mount('#app') 6 | -------------------------------------------------------------------------------- /packages/semi-illustrations-vue/src/tsconfig.esm.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "exclude": ["./**/*.spec.*", 4 | "./main.ts", "../script/*", "../components", 5 | "./Comp1", 6 | "./App.tsx", 7 | "./__test__", 8 | "./**/__test__", 9 | "../scripts" 10 | ], 11 | "compilerOptions": { 12 | "outDir": "../lib", 13 | "strictNullChecks": false, 14 | "module": "ES6", 15 | "target": "ES6", 16 | "jsx": "preserve", 17 | "types": ["vite/client", "node"], 18 | "noImplicitAny": false 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /packages/semi-illustrations-vue/tsconfig.esm.json: -------------------------------------------------------------------------------- 1 | { 2 | "files": [], 3 | "references": [ 4 | { 5 | "path": "./src/tsconfig.esm.json" 6 | }, 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_Store 3 | dist 4 | dist-ssr 5 | *.local 6 | /build/ 7 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/README.md: -------------------------------------------------------------------------------- 1 | # semi-ui-vue 2 | 3 | # 🔥 安装 4 | 5 | 6 | ```sh 7 | # with npm 8 | npm install @kousum/semi-ui-vue 9 | npm install @kousum/semi-icons-vue 10 | 11 | # with yarn 12 | yarn add @kousum/semi-ui-vue 13 | yarn add @kousum/semi-icons-vue 14 | 15 | ``` 16 | 17 | # 👍 使用 18 | 19 | ```vue 20 | #Component.vue 21 | 24 | 25 | 30 | ``` 31 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Vite App 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/scripts/compileLib.cjs: -------------------------------------------------------------------------------- 1 | const gulp = require('gulp'); 2 | require('../gulpfile.cjs'); 3 | 4 | function compileLib() { 5 | const taskInstance = gulp.task('compileLib'); 6 | if (taskInstance === undefined) { 7 | console.error('no task named compileLib registered'); 8 | return; 9 | } 10 | taskInstance.apply(gulp); 11 | } 12 | 13 | compileLib(); 14 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rashagu/semi-design-vue/455ba66bae30c00260f9c8e721f2e618018c9274/packages/semi-ui-vue/src/assets/logo.png -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import {h} from 'vue' 2 | import {shallowMount, mount} from "@vue/test-utils"; 3 | import { expect, test } from 'vitest' 4 | 5 | test('render with scoped-slot', async () => { 6 | const HelloWorld: any = { 7 | render() { 8 | return (h('div', {id:'a'}, '123')) 9 | }, 10 | } 11 | const wrapper = shallowMount(HelloWorld, {}) 12 | 13 | const profileLink = wrapper.get('#a') 14 | expect(profileLink.text()).toEqual('123') 15 | }) 16 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/_base/base.scss: -------------------------------------------------------------------------------- 1 | @import '@douyinfe/semi-foundation/base/base'; 2 | .semi-base { 3 | } 4 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/_base/vueUtils.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | function autoStyleUnit(obj: any ) { 4 | if (typeof obj !== 'object'){ 5 | return obj 6 | } 7 | const newObj = {} 8 | for (const objKey in obj) { 9 | 10 | 11 | 12 | if (obj.hasOwnProperty(objKey) && typeof obj[objKey] === 'number'){ 13 | newObj[objKey] = obj[objKey] + 'px' 14 | } 15 | 16 | } 17 | 18 | } -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/_utils/setRefJsx.ts: -------------------------------------------------------------------------------- 1 | import { isRef } from 'vue'; 2 | 3 | export function setRefJsx(ref:any, node:any) { 4 | if (ref) { 5 | if (typeof ref.r === 'function') { 6 | ref.r(node); 7 | } else if (ref.r && typeof ref.r === 'object' && isRef(ref.r)) { 8 | ref.r.value = node; 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/_utils/useMemo.ts: -------------------------------------------------------------------------------- 1 | import { type ShallowRef, shallowRef, watch } from 'vue' 2 | 3 | export function useMemo(getValue: (...arg:any[])=>T, sources: any[]):ShallowRef { 4 | const value = shallowRef(getValue()) 5 | watch(sources, ()=>{ 6 | value.value = getValue() 7 | }, {immediate: true}) 8 | return value 9 | } 10 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/anchor/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import { expect, test, describe } from 'vitest' 2 | import Comp from "./AnchorDemo"; 3 | import {mount} from "@vue/test-utils"; 4 | 5 | test('DatePickerDemo qwe', async () => { 6 | expect(Comp).toBeTruthy() 7 | 8 | const wrapper = mount(Comp, {}) 9 | 10 | const profileLink = wrapper.get('.semi-anchor-link-title') 11 | expect(profileLink.text()).toEqual('基本示例') 12 | 13 | }) 14 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/anchor/index-en-US.md: -------------------------------------------------------------------------------- 1 | ../../../content/navigation/anchor/index-en-US.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/anchor/index.md: -------------------------------------------------------------------------------- 1 | ../../../content/navigation/anchor/index.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/audioPlayer/utils.ts: -------------------------------------------------------------------------------- 1 | export const formatTime = (time: number) => { 2 | const minutes = Math.floor(time / 60); 3 | const seconds = Math.floor(time % 60); 4 | return `${minutes}:${seconds.toString().padStart(2, '0')}`; 5 | }; -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/avatar/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import { expect, test, describe } from 'vitest' 2 | import Comp from "./AvatarDemo"; 3 | import {mount} from "@vue/test-utils"; 4 | 5 | test('DatePickerDemo qwe', async () => { 6 | expect(Comp).toBeTruthy() 7 | const wrapper = mount(Comp, {}) 8 | // wrapper.setProps() 9 | const profileLink = wrapper.get('.semi-avatar-group span') 10 | expect(profileLink.attributes('class')).toEqual('semi-avatar semi-avatar-circle semi-avatar-medium semi-avatar-red semi-avatar-item-start-0') 11 | }) 12 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/backtop/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import { expect, test, describe } from 'vitest' 2 | import Comp from "./BacktopDemo"; 3 | import {mount} from "@vue/test-utils"; 4 | 5 | test('Demo test', async () => { 6 | expect(Comp).toBeTruthy() 7 | const wrapper = mount(Comp, {}) 8 | await new Promise((resolve, reject)=>{ 9 | setTimeout(()=>{ 10 | resolve(1) 11 | }, 500) 12 | }) 13 | const profileLink = wrapper.find('.semi-backtop') 14 | expect(profileLink.exists()).toEqual(true) 15 | }) 16 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/backtop/index-en-US.md: -------------------------------------------------------------------------------- 1 | ../../../content/navigation/backtop/index-en-US.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/backtop/index.md: -------------------------------------------------------------------------------- 1 | ../../../content/navigation/backtop/index.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/badge/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import { expect, test, describe } from 'vitest' 2 | import Comp from "./BadgeDemo"; 3 | import {mount} from "@vue/test-utils"; 4 | 5 | test('Demo test', async () => { 6 | expect(Comp).toBeTruthy() 7 | const wrapper = mount(Comp, {}) 8 | const profileLink = wrapper.get('.semi-badge-primary') 9 | expect(profileLink.text()).toEqual("5") 10 | }) 11 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/banner/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import { expect, test, describe } from 'vitest' 2 | import Comp from "./BannerDemo"; 3 | import {mount} from "@vue/test-utils"; 4 | 5 | test('BannerDemo qwe', async () => { 6 | const wrapper = mount(Comp, {}) 7 | 8 | const profileLink = wrapper.get('.test').text() 9 | expect(profileLink).toEqual('Sounds great!') 10 | }) 11 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/banner/index-en-US.md: -------------------------------------------------------------------------------- 1 | ../../../content/feedback/banner/index-en-US.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/banner/index.md: -------------------------------------------------------------------------------- 1 | ../../../content/feedback/banner/index.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/breadcrumb/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import {mount} from "@vue/test-utils"; 2 | import { expect, test } from 'vitest' 3 | import Comp from "./BreadcrumbDemo"; 4 | 5 | test('render with scoped-slot', async () => { 6 | const wrapper = mount(Comp, {}) 7 | 8 | const profileLink = wrapper.get('#aa') 9 | expect(profileLink.text()).toEqual('Semi-ui') 10 | }) 11 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/breadcrumb/index-en-US.md: -------------------------------------------------------------------------------- 1 | ../../../content/navigation/breadcrumb/index-en-US.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/breadcrumb/index.md: -------------------------------------------------------------------------------- 1 | ../../../content/navigation/breadcrumb/index.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/button/__test__/DemoButtonSFC.vue: -------------------------------------------------------------------------------- 1 | 15 | 16 | 19 | 20 | 23 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/button/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import { expect, test, describe } from 'vitest' 2 | import Comp from "./Demo"; 3 | import { render, screen, } from '@testing-library/vue'; 4 | 5 | 6 | test('PaginationDemo test', async () => { 7 | render(Comp) 8 | const img = await screen.findByText("分裂按钮"); 9 | }) 10 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/calendar/index-en-US.md: -------------------------------------------------------------------------------- 1 | ../../../content/show/calendar/index-en-US.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/calendar/index.md: -------------------------------------------------------------------------------- 1 | ../../../content/show/calendar/index.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/card/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import { expect, test, describe } from 'vitest' 2 | import Comp from "./CardDemo"; 3 | import {mount} from "@vue/test-utils"; 4 | 5 | test('Demo test', async () => { 6 | expect(Comp).toBeTruthy() 7 | const wrapper = mount(Comp, {}) 8 | 9 | const profileLink = wrapper.get('.semi-typography-link-text') 10 | expect(profileLink.text()).toEqual("More") 11 | }) 12 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/card/index-en-US.md: -------------------------------------------------------------------------------- 1 | ../../../content/show/card/index-en-US.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/card/index.md: -------------------------------------------------------------------------------- 1 | ../../../content/show/card/index.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/carousel/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import { expect, test, describe } from 'vitest' 2 | import Comp from "./CarouselDemo"; 3 | import {mount} from "@vue/test-utils"; 4 | 5 | test('Demo test', async () => { 6 | expect(Comp).toBeTruthy() 7 | const wrapper = mount(Comp, {}) 8 | 9 | const profileLink = wrapper.get('img') 10 | expect(profileLink.attributes('alt')).toEqual("semi_logo") 11 | }) 12 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/cascader/virtualRow.tsx: -------------------------------------------------------------------------------- 1 | import type { FunctionalComponent } from 'vue'; 2 | import { type CSSProperties } from 'vue'; 3 | 4 | export interface virtualRowProps { 5 | index: number; 6 | data: Record; 7 | style?: CSSProperties; 8 | } 9 | 10 | const VirtualRow:FunctionalComponent = ({ index, data, style }) => { 11 | const { visibleOptions, renderOption } = data; 12 | const option = visibleOptions[index]; 13 | return renderOption(option, index, style); 14 | }; 15 | 16 | export default VirtualRow; 17 | 18 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/checkbox/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import { expect, test, describe } from 'vitest' 2 | import Comp from "./CheckboxDemo"; 3 | import {mount} from "@vue/test-utils"; 4 | 5 | test('DatePickerDemo qwe', async () => { 6 | const wrapper = mount(Comp, {}) 7 | 8 | const profileLink = wrapper.find('.semi-icon-checkbox_tick svg') 9 | expect(profileLink.exists()).toEqual(true) 10 | }) 11 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/codeHighlight/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import {mount} from "@vue/test-utils"; 2 | import {beforeAll, expect, test, vi} from 'vitest' 3 | import Comp from "./CodeHighlightDemo"; 4 | import { fireEvent, render, screen } from '@testing-library/vue'; 5 | 6 | test('PaginationDemo test', async () => { 7 | render(Comp) 8 | const input = await screen.findAllByText("return") 9 | expect(input[0].getAttribute('class')).toContain('token keyword') 10 | }) 11 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/collapsible/index-en-US.md: -------------------------------------------------------------------------------- 1 | ../../../content/show/collapsible/index-en-US.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/collapsible/index.md: -------------------------------------------------------------------------------- 1 | ../../../content/show/collapsible/index.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/configProvider/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import { expect, test, describe } from 'vitest' 2 | import Comp from "./ConfigProviderDemo"; 3 | import {mount} from "@vue/test-utils"; 4 | 5 | test('DatePickerDemo qwe', async () => { 6 | expect(Comp).toBeTruthy() 7 | const wrapper = mount(Comp, {}) 8 | 9 | const profileLink = wrapper.get('.semi-input').attributes().placeholder 10 | expect(profileLink).toEqual('Select date') 11 | }) 12 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/configProvider/context.tsx: -------------------------------------------------------------------------------- 1 | import { Locale } from '../locale/interface'; 2 | import Provider from './context/Provider' 3 | import Consumer from './context/Consumer' 4 | export interface ContextValue { 5 | direction?: 'ltr' | 'rtl'; 6 | timeZone?: string | number; 7 | locale?: Locale; 8 | getPopupContainer?(): HTMLElement; 9 | } 10 | 11 | const ConfigContext = { 12 | Provider, 13 | Consumer 14 | }; 15 | 16 | export default ConfigContext; 17 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/descriptions/descriptions-context.ts: -------------------------------------------------------------------------------- 1 | import Provider from "./context/Provider"; 2 | import Consumer from "./context/Consumer"; 3 | 4 | 5 | export type DescriptionsAlign = 'center' | 'justify' | 'left' | 'plain'; 6 | export type DescriptionLayout = 'horizontal' | 'vertical' 7 | 8 | export interface DescriptionsContextValue { 9 | align?: DescriptionsAlign; 10 | layout?: DescriptionLayout 11 | } 12 | 13 | const DescriptionsContext = { 14 | Provider, 15 | Consumer 16 | } 17 | 18 | export default DescriptionsContext; 19 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/descriptions/index-en-US.md: -------------------------------------------------------------------------------- 1 | ../../../content/show/descriptions/index-en-US.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/descriptions/index.md: -------------------------------------------------------------------------------- 1 | ../../../content/show/descriptions/index.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/divider/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import { expect, test, describe, beforeAll } from 'vitest' 2 | import Comp from "./DividerDemo"; 3 | import {mount} from "@vue/test-utils"; 4 | 5 | test('Demo test', async () => { 6 | expect(Comp).toBeTruthy() 7 | const wrapper = mount(Comp, {}) 8 | 9 | const profileLink = wrapper.find('.semi-divider-vertical') 10 | expect(profileLink.exists()).toEqual(true) 11 | }) 12 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/dropdown/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import { expect, test, describe } from 'vitest' 2 | import Comp from "./DropdownDemo1"; 3 | 4 | test('DatePickerDemo qwe', async () => { 5 | expect(Comp).toBeTruthy() 6 | }) 7 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/dropdown/context.ts: -------------------------------------------------------------------------------- 1 | import type { TooltipProps } from '../tooltip'; 2 | import Consumer from "./context/Consumer"; 3 | import Provider from "./context/Provider"; 4 | 5 | export interface DropdownContextType { 6 | level?: number; 7 | showTick?: boolean; 8 | trigger?: TooltipProps['trigger']; 9 | } 10 | 11 | export const DropdownContext = { 12 | Consumer: Consumer, 13 | Provider: Provider, 14 | }; 15 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/empty/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import { expect, test, describe } from 'vitest' 2 | import Comp from "./EmptyDemo"; 3 | import {mount} from "@vue/test-utils"; 4 | 5 | test('DatePickerDemo qwe', async () => { 6 | expect(Comp).toBeTruthy() 7 | const wrapper = mount(Comp, {}) 8 | 9 | const profileLink = wrapper.find('.semi-empty-image svg') 10 | expect(profileLink.exists()).toEqual(true) 11 | }) 12 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/form/hoc/withFormApi.tsx: -------------------------------------------------------------------------------- 1 | import { FormApiContext } from '../context'; 2 | import {h} from 'vue' 3 | 4 | const withFormApi = (Component: any) => (props) => ( 5 | 6 | {formApi => } 7 | 8 | ) 9 | 10 | export default withFormApi; 11 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/form/hoc/withFormState.tsx: -------------------------------------------------------------------------------- 1 | 2 | import { FormStateContext } from '../context'; 3 | import {h} from 'vue' 4 | 5 | const withFormState = (Component: any) => (props) => ( 6 | 7 | {formState => } 8 | 9 | ) 10 | 11 | export default withFormState; 12 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/form/hooks/useArrayFieldState.tsx: -------------------------------------------------------------------------------- 1 | import { ArrayFieldContext } from '../context'; 2 | import {useArrayFieldContext} from "../context/ArrayField/Consumer"; 3 | 4 | function useArrayFieldState() { 5 | return useArrayFieldContext(); 6 | } 7 | 8 | export default useArrayFieldState; 9 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/form/hooks/useFormApi.tsx: -------------------------------------------------------------------------------- 1 | import {useBaseFormApiContext} from "../context/BaseFormApi/Consumer"; 2 | 3 | export default function useFormApi = any>() { 4 | return useBaseFormApiContext(); 5 | } -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/form/hooks/useFormState.tsx: -------------------------------------------------------------------------------- 1 | import {useFormStateContext} from "../context/FormState/Consumer"; 2 | 3 | function useFormState() { 4 | const {context} = useFormStateContext(); 5 | return context; 6 | } 7 | 8 | export default useFormState; -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/form/hooks/useFormUpdater.tsx: -------------------------------------------------------------------------------- 1 | import {useFormUpdaterContext} from "../context/FormUpdaterContext/Consumer"; 2 | 3 | export default function useFormUpdater() { 4 | return useFormUpdaterContext() 5 | } -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/form/index-en-US.md: -------------------------------------------------------------------------------- 1 | ../../../content/input/form/index-en-US.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/form/index.md: -------------------------------------------------------------------------------- 1 | ../../../content/input/form/index.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/grid/index.tsx: -------------------------------------------------------------------------------- 1 | import Row from './row'; 2 | import Col from './col'; 3 | 4 | export { Row, Col }; 5 | 6 | export type { ColSize, ColProps } from './col'; 7 | export type { Breakpoint, Gutter, RowProps } from './row'; 8 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/highlight/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import {expect, test, describe, beforeAll, vi} from 'vitest' 2 | import Comp from "./HighlightDemo"; 3 | import {mount} from "@vue/test-utils"; 4 | 5 | test('grid qwe', async () => { 6 | const wrapper = mount(Comp, {}) 7 | 8 | const profileLink = wrapper.get('.semi-highlight-tag') 9 | expect(profileLink.text()).toEqual("Semi Design") 10 | }) 11 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/highlight/index-en-US.md: -------------------------------------------------------------------------------- 1 | ../../../content/show/highlight/index-en-US.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/highlight/index.md: -------------------------------------------------------------------------------- 1 | ../../../content/show/highlight/index.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/icons/index.tsx: -------------------------------------------------------------------------------- 1 | import {Icon} from '@kousum/semi-icons-vue'; 2 | import type { IconProps, IconSize } from '@kousum/semi-icons-vue'; 3 | export type { IconProps, IconSize }; 4 | 5 | export default Icon; 6 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/image/index-en-US.md: -------------------------------------------------------------------------------- 1 | ../../../content/show/image/index-en-US.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/image/index.md: -------------------------------------------------------------------------------- 1 | ../../../content/show/image/index.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/image/index.tsx: -------------------------------------------------------------------------------- 1 | import Image from "./image"; 2 | import PreviewInner from "./previewInner"; 3 | import Preview from "./preview"; 4 | import "@douyinfe/semi-foundation/image/image.scss"; 5 | 6 | export default Image; 7 | export { 8 | PreviewInner, 9 | Preview, 10 | }; 11 | 12 | export type { 13 | ImageProps, 14 | PreviewImageProps, 15 | PreviewProps, 16 | MenuProps 17 | } from "./interface"; 18 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/input/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import { expect, test, describe } from 'vitest' 2 | import Comp from "./InputDemo"; 3 | import {mount} from "@vue/test-utils"; 4 | 5 | test('DatePickerDemo qwe', async () => { 6 | expect(Comp).toBeTruthy() 7 | 8 | const wrapper = mount(Comp, {}); 9 | const profileLink = wrapper.find('textarea'); 10 | expect(profileLink.exists()).toEqual(true); 11 | }) 12 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/inputNumber/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import { expect, test, describe } from 'vitest' 2 | import Comp from "./InputNumberDemo"; 3 | import {mount} from "@vue/test-utils"; 4 | 5 | test('InputNumberDemo qwe', async () => { 6 | expect(Comp).toBeTruthy() 7 | const wrapper = mount(Comp, {}) 8 | 9 | const profileLink = wrapper.find('.semi-input-number-suffix-btns') 10 | expect(profileLink.exists()).toEqual(true) 11 | }) 12 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/inputNumber/index-en-US.md: -------------------------------------------------------------------------------- 1 | ../../../content/input/inputnumber/index-en-US.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/inputNumber/index.md: -------------------------------------------------------------------------------- 1 | ../../../content/input/inputnumber/index.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/layout/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import { expect, test, describe } from 'vitest' 2 | import Comp from "./LayoutTest"; 3 | import {mount} from "@vue/test-utils"; 4 | 5 | test('LayoutTest qwe', async () => { 6 | expect(Comp).toBeTruthy() 7 | const wrapper = mount(Comp, {}) 8 | 9 | const profileLink = wrapper.get('.semi-layout-content') 10 | expect(profileLink.text()).toEqual("Content") 11 | }) 12 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/layout/layoutContext.ts: -------------------------------------------------------------------------------- 1 | import Provider from "./context/Provider"; 2 | import Consumer from "./context/Consumer"; 3 | 4 | export interface ContextType{ 5 | siderHook: { 6 | addSider: (id: string) => void; 7 | removeSider: (id: string) => void; 8 | }; 9 | } 10 | 11 | const LayoutContext = { 12 | Provider, 13 | Consumer 14 | } 15 | 16 | export default LayoutContext; 17 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/list/index-en-US.md: -------------------------------------------------------------------------------- 1 | ../../../content/show/list/index-en-US.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/list/index.md: -------------------------------------------------------------------------------- 1 | ../../../content/show/list/index.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/list/list-context.ts: -------------------------------------------------------------------------------- 1 | 2 | import type { RowProps } from '../grid'; 3 | import type { ColProps } from '../grid'; 4 | import Provider from "./context/Provider"; 5 | import Consumer from "./context/Consumer"; 6 | 7 | export interface Grid extends RowProps, ColProps {} 8 | 9 | export interface ListContextValue { 10 | onRightClick?: (e: MouseEvent)=>void; 11 | onClick?: (e: MouseEvent)=>void; 12 | grid?: Grid 13 | } 14 | 15 | const ListContext = { 16 | Provider, 17 | Consumer 18 | } 19 | 20 | export default ListContext; 21 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/locale/context.tsx: -------------------------------------------------------------------------------- 1 | import Consumer from "./context/Consumer"; 2 | import Provider from "./context/Provider"; 3 | 4 | const LocaleContext = { 5 | Consumer: Consumer, 6 | Provider: Provider, 7 | } 8 | export default LocaleContext; -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/locale/context/Consumer.tsx: -------------------------------------------------------------------------------- 1 | import {defineComponent, ref, h, Fragment, useSlots, inject} from 'vue' 2 | import {Locale} from '../interface'; 3 | 4 | export const vuePropsType = { 5 | } 6 | const Consumer = defineComponent(() => { 7 | const slots = useSlots() 8 | const config = inject('semi_LocalContext', ref(null)) 9 | return ()=>slots.default?slots.default(config):null 10 | }, { 11 | props: { ...vuePropsType }, 12 | name: 'LocaleContextConsumer' 13 | }) 14 | 15 | 16 | export default Consumer 17 | 18 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/lottie/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import {mount} from "@vue/test-utils"; 2 | import {beforeAll, expect, test, vi} from 'vitest' 3 | import Comp from "./LottieDemo"; 4 | import { fireEvent, render, screen } from '@testing-library/vue'; 5 | 6 | test('PaginationDemo test', async () => { 7 | render(Comp) 8 | }) 9 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/markdownRender/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import {mount} from "@vue/test-utils"; 2 | import {beforeAll, expect, test, vi} from 'vitest' 3 | import Comp from "./markDownRenderDemo"; 4 | import { fireEvent, render, screen } from '@testing-library/vue'; 5 | 6 | test('PaginationDemo test', async () => { 7 | render(Comp) 8 | const img = await screen.findByText("低成本快速创建风格各异的设计系统,更少时间,更快交付"); 9 | const img2 = await screen.findByText("Markdown 表格"); 10 | }) 11 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/markdownRender/components/a.tsx: -------------------------------------------------------------------------------- 1 | 2 | import Typography from "../../typography"; 3 | import { omit } from 'lodash'; 4 | 5 | const a = (props: any)=>{ 6 | return 7 | {props.children} 8 | ; 9 | }; 10 | 11 | export default a; 12 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/markdownRender/components/h1.tsx: -------------------------------------------------------------------------------- 1 | 2 | import Typography from '../../typography'; 3 | import { cssClasses } from '@douyinfe/semi-foundation/markdownRender/constants'; 4 | import { TitleProps } from '../../typography/title'; 5 | 6 | const h1 = (props: TitleProps)=>{ 7 | console.log(props); 8 | return ; 9 | }; 10 | 11 | export default h1; 12 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/markdownRender/components/h2.tsx: -------------------------------------------------------------------------------- 1 | import Typography from '../../typography'; 2 | import { cssClasses } from '@douyinfe/semi-foundation/markdownRender/constants'; 3 | import { TitleProps } from '../../typography/title'; 4 | 5 | const h2 = (props: TitleProps)=>{ 6 | return ; 7 | }; 8 | 9 | export default h2; 10 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/markdownRender/components/h3.tsx: -------------------------------------------------------------------------------- 1 | import Typography from '../../typography'; 2 | import { cssClasses } from '@douyinfe/semi-foundation/markdownRender/constants'; 3 | import { TitleProps } from '../../typography/title'; 4 | 5 | const h3 = (props: TitleProps)=>{ 6 | return ; 7 | }; 8 | 9 | export default h3; 10 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/markdownRender/components/h4.tsx: -------------------------------------------------------------------------------- 1 | import Typography from '../../typography'; 2 | import { cssClasses } from '@douyinfe/semi-foundation/markdownRender/constants'; 3 | import { TitleProps } from '../../typography/title'; 4 | 5 | const h4 = (props: TitleProps)=>{ 6 | return ; 7 | }; 8 | 9 | export default h4; 10 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/markdownRender/components/h5.tsx: -------------------------------------------------------------------------------- 1 | import Typography from '../../typography'; 2 | import { cssClasses } from '@douyinfe/semi-foundation/markdownRender/constants'; 3 | import { TitleProps } from '../../typography/title'; 4 | 5 | const h5 = (props: TitleProps)=>{ 6 | return ; 7 | }; 8 | 9 | export default h5; 10 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/markdownRender/components/h6.tsx: -------------------------------------------------------------------------------- 1 | import Typography from '../../typography'; 2 | import { cssClasses } from '@douyinfe/semi-foundation/markdownRender/constants'; 3 | import { TitleProps } from '../../typography/title'; 4 | 5 | const h6 = (props: TitleProps)=>{ 6 | return ; 7 | }; 8 | 9 | export default h6; 10 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/markdownRender/components/index.tsx: -------------------------------------------------------------------------------- 1 | export { default as h1 } from "./h1"; 2 | export { default as h2 } from "./h2"; 3 | export { default as h3 } from "./h3"; 4 | export { default as h4 } from "./h4"; 5 | export { default as h5 } from "./h5"; 6 | export { default as h6 } from "./h6"; 7 | export { default as a } from "./a"; 8 | export { default as img } from "./img"; 9 | export { default as table } from "./table"; 10 | export { default as p } from "./p"; 11 | export { default as code } from "./code"; 12 | 13 | 14 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/markdownRender/components/p.tsx: -------------------------------------------------------------------------------- 1 | 2 | import Typography from '../../typography'; 3 | import { cssClasses } from '@douyinfe/semi-foundation/markdownRender/constants'; 4 | import { TitleProps } from '../../typography/title'; 5 | import { FunctionalComponent } from 'vue'; 6 | 7 | const p:FunctionalComponent = (props: TitleProps)=>{ 8 | return 9 | ; 10 | }; 11 | 12 | export default p; 13 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/modal/index-en-US.md: -------------------------------------------------------------------------------- 1 | ../../../content/show/modal/index-en-US.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/modal/index.md: -------------------------------------------------------------------------------- 1 | ../../../content/show/modal/index.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/modal/index.tsx: -------------------------------------------------------------------------------- 1 | 2 | import '@douyinfe/semi-foundation/modal/modal.scss'; 3 | import { ModalState } from '@douyinfe/semi-foundation/modal/modalFoundation'; 4 | import Modal, {ModalClass} from './Modal'; 5 | import { ModalReactProps } from './Modal'; 6 | import useModal from './useModal'; 7 | 8 | export type { ConfirmProps } from './confirm'; 9 | 10 | export type Directions = 'ltr' | 'rtl'; 11 | 12 | export type { ModalReactProps, ModalState }; 13 | 14 | export { 15 | ModalClass, 16 | useModal 17 | } 18 | export default Modal; 19 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/navigation/README.md: -------------------------------------------------------------------------------- 1 | ## Description 2 | navigation component 3 | 4 | ## CSS Selector 5 | 6 | - .semi-navigation-item:普通 item 7 | - .semi-navigation-item-normal:normal 标记为普通 item 8 | - .semi-navigation-sub-wrap:sub-wrap 标记为有 children item,同级有个 .semi-navigation-item-sub,只设置了一个 padding 9 | - .semi-navigation-sub-title:嵌套部分的标题,sub-title 设置了 paddingY(8px) 和 paddingX(12px) 10 | - .semi-navigation-sub:嵌套部分的children wrapper -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/navigation/index-en-US.md: -------------------------------------------------------------------------------- 1 | ../../../content/navigation/navigation/index-en-US.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/navigation/index.md: -------------------------------------------------------------------------------- 1 | ../../../content/navigation/navigation/index.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/overflowList/index.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rashagu/semi-design-vue/455ba66bae30c00260f9c8e721f2e618018c9274/packages/semi-ui-vue/src/components/overflowList/index.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/pagination/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import {mount} from "@vue/test-utils"; 2 | import {beforeAll, expect, test, vi} from 'vitest' 3 | import Comp from "./PaginationDemo"; 4 | import { render, screen } from '@testing-library/vue'; 5 | 6 | test('PaginationDemo test', async () => { 7 | render(Comp) 8 | const input = await screen.findByText("每页条数:10") 9 | }) 10 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/pagination/index-en-US.md: -------------------------------------------------------------------------------- 1 | ../../../content/navigation/pagination/index-en-US.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/pagination/index.md: -------------------------------------------------------------------------------- 1 | ../../../content/navigation/pagination/index.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/pincode/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import {mount} from "@vue/test-utils"; 2 | import {beforeAll, expect, test, vi} from 'vitest' 3 | import Comp from "./PinCodeDemo"; 4 | import { fireEvent, render, screen } from '@testing-library/vue'; 5 | 6 | test('PaginationDemo test', async () => { 7 | render(Comp) 8 | const input = await screen.findAllByTestId("pin-code-input") as HTMLInputElement[] 9 | await fireEvent.pause(input[5], {target: {value: '9'}}) 10 | expect(input[5].value).toEqual('9') 11 | }) 12 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/popover/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import { expect, test, describe } from 'vitest' 2 | import Comp from "./PopoverTest"; 3 | import {mount} from "@vue/test-utils"; 4 | 5 | test('PopoverTest qwe', async () => { 6 | expect(Comp).toBeTruthy() 7 | 8 | const wrapper = mount(Comp, { }) 9 | }) 10 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/progress/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import { expect, test, describe } from 'vitest' 2 | import Comp from "./ProgressDemo"; 3 | import {mount} from "@vue/test-utils"; 4 | 5 | test('ProgressDemo test', async () => { 6 | expect(Comp).toBeTruthy() 7 | const wrapper = mount(Comp, {}) 8 | 9 | const profileLink = wrapper.find('.semi-progress-track-inner').exists() 10 | expect(profileLink).toEqual(true) 11 | }) 12 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/progress/index-en-US.md: -------------------------------------------------------------------------------- 1 | ../../../content/feedback/progress/index-en-US.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/progress/index.md: -------------------------------------------------------------------------------- 1 | ../../../content/feedback/progress/index.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/radio/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import { expect, test, describe } from 'vitest' 2 | import Comp from "./RadioDemo"; 3 | import {mount} from "@vue/test-utils"; 4 | 5 | test('PopoverTest qwe', async () => { 6 | expect(Comp).toBeTruthy() 7 | const wrapper = mount(Comp, {}) 8 | 9 | const profileLink = wrapper.get('.semi-radio-addon-buttonRadio').text() 10 | expect(profileLink).toEqual("A") 11 | }) 12 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/radio/index.tsx: -------------------------------------------------------------------------------- 1 | import Group from './radioGroup'; 2 | import Radio from './radio'; 3 | 4 | 5 | export { Group, Radio }; 6 | 7 | 8 | import type { RadioInnerMode, RadioInnerProps } from './radioInner'; 9 | import type { RadioGroupProps, OptionItem } from './radioGroup'; 10 | import type { RadioDisplayMode, RadioType, RadioProps, RadioChangeEvent } from './radio'; 11 | 12 | 13 | export { RadioInnerMode, RadioInnerProps } 14 | export { RadioGroupProps, OptionItem } 15 | export { RadioDisplayMode, RadioType, RadioProps, RadioChangeEvent } -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/rating/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import { expect, test, describe } from 'vitest' 2 | import Comp from "./RatingDemo"; 3 | import {mount} from "@vue/test-utils"; 4 | 5 | test('RatingDemo qwe', async () => { 6 | expect(Comp).toBeTruthy() 7 | const wrapper = mount(Comp, {}) 8 | 9 | const profileLink = wrapper.find('.semi-rating-star-second').exists() 10 | expect(profileLink).toEqual(true) 11 | }) 12 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/rating/index-en-US.md: -------------------------------------------------------------------------------- 1 | ../../../content/input/rating/index-en-US.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/rating/index.md: -------------------------------------------------------------------------------- 1 | ../../../content/input/rating/index.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/resizable/index.tsx: -------------------------------------------------------------------------------- 1 | /** 2 | * reference:https://github.com/bokuweb/re-resizable 3 | * Resizable组件的api与功能代码均参考了v6.10.0,将逻辑部分放在Foundation中,react部分放在组件中 4 | * ResizeGroup的伸缩逻辑也有同上的参考 5 | */ 6 | import Resizable from "./single/resizable"; 7 | export { 8 | Resizable 9 | }; 10 | 11 | import ResizeItem from "./group/resizeItem"; 12 | import ResizeHandler from "./group/resizeHandler"; 13 | import ResizeGroup from "./group/resizeGroup"; 14 | 15 | export { 16 | ResizeItem, 17 | ResizeHandler, 18 | ResizeGroup 19 | }; -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/scrollList/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import { expect, test, describe } from 'vitest' 2 | import Comp from "./ScrollListDemo"; 3 | 4 | test('ScrollListDemo qwe', async () => { 5 | expect(Comp).toBeTruthy() 6 | }) 7 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/select/virtualRow.tsx: -------------------------------------------------------------------------------- 1 | import {CSSProperties} from "vue"; 2 | export interface VirtualRowProps{ 3 | index: number; 4 | data: Record; 5 | style?: CSSProperties; 6 | } 7 | const VirtualRow = ({ index, data, style }: VirtualRowProps) => { 8 | const { visibleOptions, renderOption } = data; 9 | const option = visibleOptions[index]; 10 | return renderOption(option, index, style); 11 | }; 12 | 13 | export default VirtualRow; 14 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/sideSheet/index-en-US.md: -------------------------------------------------------------------------------- 1 | ../../../content/show/sidesheet/index-en-US.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/sideSheet/index.md: -------------------------------------------------------------------------------- 1 | ../../../content/show/sidesheet/index.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/skeleton/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import {expect, test, describe, beforeAll} from 'vitest' 2 | import Comp from "./SkeletonDemo"; 3 | import {mount} from "@vue/test-utils"; 4 | // beforeAll(() => { 5 | // global.matchMedia = ()=>{}; 6 | // }); 7 | test('grid qwe', async () => { 8 | const wrapper = mount(Comp, {}) 9 | 10 | const profileLink = wrapper.find('.semi-skeleton-title') 11 | expect(profileLink.exists()).toEqual(true) 12 | }) 13 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/skeleton/index-en-US.md: -------------------------------------------------------------------------------- 1 | ../../../content/feedback/skeleton/index-en-US.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/skeleton/index.md: -------------------------------------------------------------------------------- 1 | ../../../content/feedback/skeleton/index.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/slider/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import { expect, test, describe } from 'vitest' 2 | import Comp from "./SliderDemo"; 3 | import {mount} from "@vue/test-utils"; 4 | 5 | test('TypoDemo test', async () => { 6 | expect(Comp).toBeTruthy() 7 | 8 | const wrapper = mount(Comp, {}) 9 | 10 | const profileLink = wrapper.get('.semi-slider-boundary-max').text() 11 | expect(profileLink).toEqual('100') 12 | 13 | }) 14 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/slider/index-en-US.md: -------------------------------------------------------------------------------- 1 | ../../../content/input/slider/index-en-US.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/slider/index.md: -------------------------------------------------------------------------------- 1 | ../../../content/input/slider/index.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/space/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import { expect, test, describe } from 'vitest' 2 | import Comp from "./SpaceTest"; 3 | 4 | test('SpaceTest qwe', async () => { 5 | expect(Comp).toBeTruthy() 6 | }) 7 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/steps/context.ts: -------------------------------------------------------------------------------- 1 | import Provider from "./context/Provider"; 2 | import Consumer from "./context/Consumer"; 3 | 4 | export interface ContextValue { 5 | type?: 'nav' | 'fill' | 'basic' 6 | } 7 | 8 | export default { 9 | Provider, 10 | Consumer 11 | }; 12 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/steps/index-en-US.md: -------------------------------------------------------------------------------- 1 | ../../../content/navigation/steps/index-en-US.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/steps/index.md: -------------------------------------------------------------------------------- 1 | ../../../content/navigation/steps/index.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/switch/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import { expect, test, describe } from 'vitest' 2 | import Comp from "./SwitchDemo"; 3 | 4 | test('SwitchDemo test', async () => { 5 | expect(Comp).toBeTruthy() 6 | }) 7 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/switch/index-en-US.md: -------------------------------------------------------------------------------- 1 | ../../../content/input/switch/index-en-US.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/switch/index.md: -------------------------------------------------------------------------------- 1 | ../../../content/input/switch/index.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/table/index-en-US.md: -------------------------------------------------------------------------------- 1 | ../../../content/show/table/index-en-US.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/table/index.md: -------------------------------------------------------------------------------- 1 | ../../../content/show/table/index.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/tabs/__test__/TabsDocsDemo.tsx: -------------------------------------------------------------------------------- 1 | import Tabs from '../index'; 2 | import TabPane from '../TabPane'; 3 | 4 | const Demo = ()=>( 5 | 6 | {[10,2324325324324,1111].map(i => ( 7 | 8 | Content of card tab {i} 9 | 10 | ))} 11 | 12 | ) 13 | export default Demo 14 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/tabs/index-en-US.md: -------------------------------------------------------------------------------- 1 | ../../../content/navigation/tabs/index-en-US.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/tabs/index.md: -------------------------------------------------------------------------------- 1 | ../../../content/navigation/tabs/index.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/tabs/tabs-context.ts: -------------------------------------------------------------------------------- 1 | 2 | import Provider from "./tabs-context/Provider"; 3 | import Consumer from "./tabs-context/Consumer"; 4 | 5 | const TabsContext = { 6 | Provider, 7 | Consumer 8 | }; 9 | 10 | export default TabsContext; 11 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/tag/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import { expect, test, describe } from 'vitest' 2 | import Comp from "./TagDemo"; 3 | import { render, screen } from '@testing-library/vue'; 4 | 5 | test('TagDemo qwe', async () => { 6 | expect(Comp).toBeTruthy() 7 | }) 8 | test('TabsDemo2', async () => { 9 | render(Comp) 10 | const input = await screen.findAllByText("焦锐志") 11 | expect(input.length).toEqual(6) 12 | }) 13 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/tagInput/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import { test } from 'vitest'; 2 | import Comp from './TagInputDemo'; 3 | import { render, screen } from '@testing-library/vue'; 4 | 5 | test('TagInputDemo', async () => { 6 | render(Comp) 7 | const input = await screen.findAllByText("抖音") 8 | }) 9 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/timePicker/PanelShape.ts: -------------------------------------------------------------------------------- 1 | import * as PropTypes from '../PropTypes'; 2 | import {PropType, VNode} from "vue"; 3 | 4 | export const PanelShape = { 5 | panelHeader: PropTypes.node as PropType, 6 | panelFooter: PropTypes.node as PropType, 7 | }; 8 | 9 | export const PanelShapeDefaults = {}; 10 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/timePicker/TimeShape.ts: -------------------------------------------------------------------------------- 1 | 2 | import * as PropTypes from '../PropTypes' 3 | 4 | const PlainTimeShape = [PropTypes.string, PropTypes.number, PropTypes.object]; 5 | 6 | /** 7 | * Can be 8 | * - 12:00:12 9 | * - \[12:00:12] 10 | * - \[12:00:12, 12:21:12] 11 | * - \[[12:00:12, 12:21:12], [12:11:12, 12:32:12]] 12 | */ 13 | const TimeShape = [ 14 | ...PlainTimeShape, 15 | Array, 16 | ]; 17 | 18 | export { TimeShape }; 19 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/timeline/index-en-US.md: -------------------------------------------------------------------------------- 1 | ../../../content/show/timeline/index-en-US.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/timeline/index.md: -------------------------------------------------------------------------------- 1 | ../../../content/show/timeline/index.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/tooltip/ArrowBoundingShape.ts: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/tooltip/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import { expect, test, describe } from 'vitest' 2 | import Comp from "./TooltipDemo"; 3 | 4 | test('TooltipDemo test', async () => { 5 | expect(Comp).toBeTruthy() 6 | }) 7 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/transfer/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import { expect, test, describe } from 'vitest' 2 | import Comp from "./TransferDemo"; 3 | import {mount} from "@vue/test-utils"; 4 | 5 | test('TransferDemo test', async () => { 6 | const wrapper = mount(Comp, {}) 7 | 8 | const profileLink = wrapper.get('.semi-transfer-right-item-text') 9 | expect(profileLink.text()).toEqual("B-3(disabled)") 10 | }) 11 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/transfer/index-en-US.md: -------------------------------------------------------------------------------- 1 | ../../../content/input/transfer/index-en-US.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/transfer/index.md: -------------------------------------------------------------------------------- 1 | ../../../content/input/transfer/index.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/tree/index-en-US.md: -------------------------------------------------------------------------------- 1 | ../../../content/navigation/tree/index-en-US.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/tree/index.md: -------------------------------------------------------------------------------- 1 | ../../../content/navigation/tree/index.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/tree/treeUtil.tsx: -------------------------------------------------------------------------------- 1 | import { cloneDeepWith, isPlainObject } from 'lodash'; 2 | import {isVNode} from "vue"; 3 | 4 | export function cloneDeep(treeNodeList: any) { 5 | return cloneDeepWith(treeNodeList, val => { 6 | // only clone treeNode inner data and skip user data 7 | if (isPlainObject(val) && !val._innerDataTag) { 8 | return val; 9 | } 10 | if (isVNode(val)) { 11 | return val; 12 | } 13 | }); 14 | } 15 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/treeSelect/__test__/test.spec.tsx: -------------------------------------------------------------------------------- 1 | import { expect, test, describe } from 'vitest' 2 | import Comp from "./TreeSelectDemo"; 3 | import {mount} from "@vue/test-utils"; 4 | 5 | test('UploadDemo test', async () => { 6 | expect(Comp).toBeTruthy() 7 | const wrapper = mount(Comp, { }) 8 | 9 | const profileLink = wrapper.get('.semi-tree-select-selection-placeholder').text() 10 | expect(profileLink).toEqual("请选择") 11 | }) 12 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/treeSelect/index-en-US.md: -------------------------------------------------------------------------------- 1 | ../../../content/input/treeselect/index-en-US.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/treeSelect/index.md: -------------------------------------------------------------------------------- 1 | ../../../content/input/treeselect/index.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/typography/context.tsx: -------------------------------------------------------------------------------- 1 | import Provider from "./context/Provider"; 2 | import Consumer from "./context/Consumer"; 3 | export type { TypographyBaseSize } from './interface'; 4 | 5 | 6 | const Context = { 7 | Provider, 8 | Consumer 9 | }; 10 | export default Context; 11 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/upload/index-en-US.md: -------------------------------------------------------------------------------- 1 | ../../../content/input/upload/index-en-US.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/upload/index.md: -------------------------------------------------------------------------------- 1 | ../../../content/input/upload/index.md -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/userGuide/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import { expect, test, describe, beforeAll, vi } from 'vitest'; 2 | import Comp from "./UserGuideDemo"; 3 | import { fireEvent, render, screen } from '@testing-library/vue'; 4 | 5 | 6 | beforeAll(() => { 7 | }); 8 | test('upload sss', async () => { 9 | 10 | render(Comp) 11 | const bt1 = await screen.findByTestId("showDialogBt") 12 | await fireEvent.click(bt1) 13 | 14 | 15 | await screen.findByText("跳过") 16 | 17 | }) 18 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/components/withVModel/__test__/test.spec.ts: -------------------------------------------------------------------------------- 1 | import { expect, test, describe } from 'vitest' 2 | 3 | import {fireEvent, render, screen} from "@testing-library/vue"; 4 | import Comp from './WithVModelDemo'; 5 | 6 | test('DatePickerDemo qwe', async () => { 7 | 8 | render(Comp) 9 | const img = await screen.findByText("dy.jpeg") 10 | expect(img.innerHTML).toEqual("dy.jpeg") 11 | }) 12 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | declare module '*.vue' { 5 | import { DefineComponent } from 'vue' 6 | // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types 7 | const component: DefineComponent<{}, {}, any> 8 | export default component 9 | } 10 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/main.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rashagu/semi-design-vue/455ba66bae30c00260f9c8e721f2e618018c9274/packages/semi-ui-vue/src/main.scss -------------------------------------------------------------------------------- /packages/semi-ui-vue/src/main.ts: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue' 2 | import App from './App' 3 | // import 'reset-css' 4 | import './main.scss' 5 | import './docDemo.scss' 6 | 7 | createApp(App).mount('#app') 8 | -------------------------------------------------------------------------------- /packages/semi-ui-vue/web-types.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../schema/web-types.json", 3 | "name": "hammerjs", 4 | "framework": "angular", 5 | "version": "2.0.0", 6 | "contributions": { 7 | "html": { 8 | "types-syntax": "typescript", 9 | "description-markup": "markdown", 10 | "tags": [] 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /packages/vite-plugin-semi-theme/README.md: -------------------------------------------------------------------------------- 1 | # vite-plugin-semi-theme 2 | 3 | - [theme options docs](https://github.com/DouyinFE/semi-design/tree/main/packages/semi-webpack#api) 4 | - support `vite > 5.0` `pnpm` 5 | 6 | ```js 7 | // vite.config.js 8 | import SemiTheme from "@kousum/vite-plugin-semi-theme"; 9 | 10 | export default { 11 | plugins: [ 12 | SemiTheme({ 13 | // name: '@douyinfe/semi-theme-default' 14 | theme: '@semi-bot/semi-theme-nky' 15 | }) 16 | ], 17 | } 18 | ``` 19 | -------------------------------------------------------------------------------- /packages/vite-plugin-semi-theme/build.config.ts: -------------------------------------------------------------------------------- 1 | import { defineBuildConfig } from 'unbuild' 2 | 3 | export default defineBuildConfig({ 4 | entries: ['src/index'], 5 | clean: true, 6 | declaration: true, 7 | rollup: { 8 | emitCJS: true, 9 | }, 10 | }) 11 | -------------------------------------------------------------------------------- /packages/vite-plugin-semi-theme/src/types.ts: -------------------------------------------------------------------------------- 1 | export type Options = { theme: string; include?: string; variables?: string; prefixCls?: string; cssLayer?: boolean }; 2 | -------------------------------------------------------------------------------- /packages/vite-plugin-semi-theme/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "include": ["src"], 3 | "exclude": ["**/*.spec.ts"], 4 | "compilerOptions": { 5 | "outDir": "dist", 6 | "target": "ES2020", 7 | "module": "ES2020", 8 | "moduleResolution": "Node", 9 | "strict": true, 10 | "declaration": true, 11 | "sourceMap": true, 12 | "noUnusedLocals": true, 13 | "esModuleInterop": true, 14 | "paths": { 15 | "vite": ["../vite/src/node/index.js"] 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /pnpm-workspace.yaml: -------------------------------------------------------------------------------- 1 | packages: 2 | - 'packages/semi-animation-vue' 3 | - 'packages/semi-icons-vue' 4 | - 'packages/semi-icons-lab-vue' 5 | - 'packages/semi-ui-vue' 6 | - 'packages/semi-illustrations-vue' 7 | - 'packages/vite-plugin-semi-theme' 8 | -------------------------------------------------------------------------------- /script/version.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | function main() { 4 | const { version } = require("../packages/semi-ui-vue/package.json"); 5 | return version; 6 | } 7 | 8 | console.log(main()) 9 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import {defineConfig} from 'vite' 2 | import Vue from '@vitejs/plugin-vue' 3 | import Jsx from '@vitejs/plugin-vue-jsx' 4 | 5 | export default defineConfig({ 6 | plugins: [Vue(), Jsx()], 7 | }) 8 | --------------------------------------------------------------------------------