Repository: ant-design/ant-design-mini Branch: master Commit: 08a3cb9ad535 Files: 1560 Total size: 3.8 MB Directory structure: gitextract_uttux0t6/ ├── .dumi/ │ ├── pages/ │ │ ├── index/ │ │ │ └── index.tsx │ │ └── index-en/ │ │ └── index.tsx │ ├── theme/ │ │ ├── builtins/ │ │ │ ├── .gitkeep │ │ │ ├── HomeBaseLayout/ │ │ │ │ ├── components/ │ │ │ │ │ ├── Banner/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── Frame/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── Gallery/ │ │ │ │ │ │ ├── ItemBox/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── Notice/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── Theme/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── Title/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── Users/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── Icon.less │ │ │ ├── Icon.tsx │ │ │ ├── OverviewCard.tsx │ │ │ ├── Previewer/ │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── ResourceCard.less │ │ │ ├── ResourceCard.tsx │ │ │ ├── SourceCode/ │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── Table/ │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── code.html │ │ │ └── iframe.html │ │ ├── common/ │ │ │ ├── CommonHelmet.tsx │ │ │ ├── EditLink.tsx │ │ │ ├── GlobalStyles.tsx │ │ │ ├── LastUpdated.tsx │ │ │ ├── Loading/ │ │ │ │ └── index.tsx │ │ │ ├── PrevAndNext.tsx │ │ │ ├── Sim/ │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── ThemeSwitch/ │ │ │ │ ├── ThemeIcon.tsx │ │ │ │ └── index.tsx │ │ │ ├── config/ │ │ │ │ └── overview.ts │ │ │ └── styles/ │ │ │ ├── Common.tsx │ │ │ ├── DumiDefaultStyleOverride.tsx │ │ │ ├── HeadingAnchor.tsx │ │ │ ├── Highlight.tsx │ │ │ ├── Markdown.tsx │ │ │ ├── PreviewImage.tsx │ │ │ ├── Reset.tsx │ │ │ ├── Responsive.tsx │ │ │ ├── SearchBar.tsx │ │ │ └── index.ts │ │ ├── defineThemeConfig/ │ │ │ └── index.ts │ │ ├── global.d.ts │ │ ├── hooks/ │ │ │ ├── useAdditionalThemeConfig.ts │ │ │ ├── useLocaleValue.ts │ │ │ ├── useMenu.tsx │ │ │ ├── useSiteToken.ts │ │ │ └── uselocale.ts │ │ ├── index.ts │ │ ├── layouts/ │ │ │ ├── DocLayout/ │ │ │ │ └── index.tsx │ │ │ ├── GlobalLayout.tsx │ │ │ ├── HomePageLayout/ │ │ │ │ └── index.tsx │ │ │ └── SidebarLayout/ │ │ │ └── index.tsx │ │ ├── locales/ │ │ │ ├── en.json │ │ │ └── zh-CN.json │ │ ├── plugin/ │ │ │ ├── index.ts │ │ │ └── techStack.ts │ │ ├── plugin.ts │ │ ├── slots/ │ │ │ ├── Content/ │ │ │ │ ├── DocAnchor.tsx │ │ │ │ ├── InViewSuspense.tsx │ │ │ │ └── index.tsx │ │ │ ├── Footer/ │ │ │ │ └── index.tsx │ │ │ ├── Header/ │ │ │ │ ├── HeaderExtral.tsx │ │ │ │ ├── Logo.tsx │ │ │ │ ├── More.tsx │ │ │ │ ├── Navigation.tsx │ │ │ │ ├── SwitchBtn.tsx │ │ │ │ └── index.tsx │ │ │ ├── LangSwitch/ │ │ │ │ └── index.tsx │ │ │ ├── NotFound/ │ │ │ │ └── index.tsx │ │ │ ├── Sidebar/ │ │ │ │ └── index.tsx │ │ │ └── SiteContext.ts │ │ ├── static/ │ │ │ └── style.ts │ │ ├── styles/ │ │ │ └── variables.less │ │ ├── types.ts │ │ └── utils.ts │ └── tsconfig.json ├── .dumirc.ts ├── .editorconfig ├── .eslintignore ├── .eslintrc ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ └── feature_request_template.md │ ├── contributing.md │ ├── dependabot.yml │ ├── pull_requeset_template.md │ └── workflows/ │ ├── chatgpt_code_review.yaml │ ├── preview.yml │ ├── pull_request.yml │ ├── real_release.yml │ ├── release.yml │ └── release_candidate.yml ├── .gitignore ├── .prettierignore ├── .prettierrc ├── .stylelintrc ├── CHANGELOG.md ├── LICENSE ├── README.md ├── config/ │ ├── alipay/ │ │ ├── .act.config.json │ │ ├── app.less │ │ ├── app.ts │ │ ├── b2h.config.ts │ │ ├── mini.project.json │ │ ├── package.json │ │ └── tsconfig.json │ └── wechat/ │ ├── app.js │ ├── app.wxss │ └── package.json ├── copilot/ │ ├── Actions/ │ │ ├── check.sjs │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json5 │ │ ├── index.less │ │ ├── index.md │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── Bubble/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json5 │ │ ├── index.less │ │ ├── index.md │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── Conversations/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json5 │ │ ├── index.less │ │ ├── index.md │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── Prompts/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json5 │ │ ├── index.less │ │ ├── index.md │ │ ├── index.sjs.ts │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── Sender/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json5 │ │ ├── index.less │ │ ├── index.md │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── ThoughtChain/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json5 │ │ ├── index.less │ │ ├── index.md │ │ ├── index.sjs.ts │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ └── Welcome/ │ ├── index.axml │ ├── index.en.md │ ├── index.json5 │ ├── index.less │ ├── index.md │ ├── index.sjs.ts │ ├── index.ts │ ├── props.ts │ └── variable.less ├── copilot-demo/ │ └── pages/ │ ├── Actions/ │ │ ├── index.axml │ │ ├── index.json5 │ │ ├── index.less │ │ └── index.ts │ ├── Bubble/ │ │ ├── index.axml │ │ ├── index.json5 │ │ ├── index.less │ │ └── index.ts │ ├── Conversations/ │ │ ├── index.axml │ │ ├── index.json5 │ │ ├── index.less │ │ └── index.ts │ ├── Prompts/ │ │ ├── index.axml │ │ ├── index.json5 │ │ ├── index.less │ │ └── index.ts │ ├── Sender/ │ │ ├── index.axml │ │ ├── index.json5 │ │ ├── index.less │ │ └── index.ts │ ├── ThoughtChain/ │ │ ├── index.axml │ │ ├── index.json5 │ │ ├── index.less │ │ └── index.ts │ └── Welcome/ │ ├── index.axml │ ├── index.json5 │ ├── index.less │ └── index.ts ├── demo/ │ ├── components/ │ │ ├── Calendar/ │ │ │ └── collapse-container/ │ │ │ ├── cn-day/ │ │ │ │ ├── index.axml │ │ │ │ ├── index.json │ │ │ │ ├── index.less │ │ │ │ ├── index.ts │ │ │ │ └── js-calendar-converter.js │ │ │ ├── index.axml │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ └── index.ts │ │ └── Form/ │ │ ├── checklist/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ ├── index.sjs.ts │ │ │ └── index.ts │ │ ├── form-json/ │ │ │ ├── index.axml │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ └── index.ts │ │ └── location/ │ │ ├── index.axml │ │ ├── index.json5 │ │ ├── index.less │ │ ├── index.sjs.ts │ │ └── index.ts │ ├── pages/ │ │ ├── ActionSheet/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── AutoResize/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Avatar/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Badge/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Button/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Calendar/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Card/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Checkbox/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ ├── index.sjs.ts │ │ │ └── index.ts │ │ ├── Checklist/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Collapse/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── ConfigProvider/ │ │ │ ├── ar-SA.ts │ │ │ ├── es-US.ts │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Container/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Countdown/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── DatePicker/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Dialog/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Divider/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Empty/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Feedback/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Footer/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Form/ │ │ │ ├── FormBasic/ │ │ │ │ ├── city.ts │ │ │ │ ├── index.axml │ │ │ │ ├── index.json5 │ │ │ │ ├── index.less │ │ │ │ └── index.ts │ │ │ ├── FormCustom/ │ │ │ │ ├── index.axml │ │ │ │ ├── index.json5 │ │ │ │ ├── index.less │ │ │ │ └── index.ts │ │ │ ├── FormCustomError/ │ │ │ │ ├── index.axml │ │ │ │ ├── index.json5 │ │ │ │ ├── index.less │ │ │ │ └── index.ts │ │ │ ├── FormDependency/ │ │ │ │ ├── index.axml │ │ │ │ ├── index.json5 │ │ │ │ ├── index.less │ │ │ │ └── index.ts │ │ │ ├── FormDynamic/ │ │ │ │ ├── index.axml │ │ │ │ ├── index.json5 │ │ │ │ ├── index.less │ │ │ │ └── index.ts │ │ │ ├── FormImageUploadRules/ │ │ │ │ ├── index.axml │ │ │ │ ├── index.json5 │ │ │ │ ├── index.less │ │ │ │ └── index.ts │ │ │ ├── FormInitialValues/ │ │ │ │ ├── index.axml │ │ │ │ ├── index.json5 │ │ │ │ ├── index.less │ │ │ │ └── index.ts │ │ │ ├── FormInitialValuesAsync/ │ │ │ │ ├── index.axml │ │ │ │ ├── index.json5 │ │ │ │ ├── index.less │ │ │ │ └── index.ts │ │ │ ├── FormJSON/ │ │ │ │ ├── index.axml │ │ │ │ ├── index.json │ │ │ │ ├── index.less │ │ │ │ └── index.ts │ │ │ ├── FormLayout/ │ │ │ │ ├── index.axml │ │ │ │ ├── index.json5 │ │ │ │ ├── index.less │ │ │ │ └── index.ts │ │ │ ├── FormMultiple/ │ │ │ │ ├── index.axml │ │ │ │ ├── index.json5 │ │ │ │ ├── index.less │ │ │ │ └── index.ts │ │ │ ├── FormReadonly/ │ │ │ │ ├── city.ts │ │ │ │ ├── index.axml │ │ │ │ ├── index.json5 │ │ │ │ ├── index.less │ │ │ │ └── index.ts │ │ │ ├── FormRules/ │ │ │ │ ├── index.axml │ │ │ │ ├── index.json5 │ │ │ │ ├── index.less │ │ │ │ └── index.ts │ │ │ ├── FormValidate/ │ │ │ │ ├── index.axml │ │ │ │ ├── index.json5 │ │ │ │ ├── index.less │ │ │ │ └── index.ts │ │ │ ├── FormValidateMessages/ │ │ │ │ ├── index.axml │ │ │ │ ├── index.json5 │ │ │ │ ├── index.less │ │ │ │ └── index.ts │ │ │ ├── FormWatch/ │ │ │ │ ├── index.axml │ │ │ │ ├── index.json5 │ │ │ │ ├── index.less │ │ │ │ └── index.ts │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Grid/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── GuideTour/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Icon/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── ImageUpload/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── IndexBar/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Input/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── InputCustom/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── InputSearchBar/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── InputTextarea/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── utils.ts │ │ ├── List/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Loading/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Modal/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── NoticeBar/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── NumberInput/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── NumberKeyboard/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── NumberKeyboardAmount/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── NumberKeyboardCode/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── NumberKeyboardNumber/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── PageContainer/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Picker/ │ │ │ ├── city.ts │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Popover/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── PopoverList/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Popup/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Postscript/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Progress/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Radio/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── RareWordsKeyboard/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Rate/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Result/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── SafeArea/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── SelectContact/ │ │ │ ├── contact.ts │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Selector/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Skeleton/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Slider/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Space/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Stepper/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Steps/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Sticky/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── SwipeAction/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── slice.sjs.ts │ │ ├── SwipeActionAnimation/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── SwipeActionLeft/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── SwipeActionLeftRight/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── SwipeActionMove/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── SwipeActionNumber/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── slice.sjs.ts │ │ ├── SwipeActionSlot/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── SwipeActionSpeed/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── SwipeActionTap/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── SwipeActionWidth/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Switch/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── TabBar/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Table/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Tabs/ │ │ │ ├── TabsElevator/ │ │ │ │ ├── index.axml │ │ │ │ ├── index.json5 │ │ │ │ ├── index.less │ │ │ │ └── index.ts │ │ │ ├── TabsVerticalElevator/ │ │ │ │ ├── index.axml │ │ │ │ ├── index.json5 │ │ │ │ ├── index.less │ │ │ │ └── index.ts │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Tag/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Terms/ │ │ │ ├── Fixed/ │ │ │ │ ├── index.axml │ │ │ │ ├── index.json5 │ │ │ │ ├── index.less │ │ │ │ └── index.ts │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Toast/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Typography/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ ├── Voucher/ │ │ │ ├── index.axml │ │ │ ├── index.json5 │ │ │ ├── index.less │ │ │ └── index.ts │ │ └── index/ │ │ ├── index.axml │ │ ├── index.json5 │ │ ├── index.less │ │ └── index.ts │ └── utils/ │ └── constants.ts ├── docs/ │ ├── components/ │ │ ├── overview.en.md │ │ ├── overview.md │ │ └── wechat-component.tsx │ ├── guide/ │ │ ├── contribute.en.md │ │ ├── contribute.md │ │ ├── cooperation.en.md │ │ ├── cooperation.md │ │ ├── customize-theme.en.md │ │ ├── customize-theme.md │ │ ├── faq.en.md │ │ ├── faq.md │ │ ├── i18n.en.md │ │ ├── i18n.md │ │ ├── migration.en.md │ │ ├── migration.md │ │ ├── quick-start.en.md │ │ ├── quick-start.md │ │ ├── using-uni-app.en.md │ │ ├── using-uni-app.md │ │ ├── using-wechat.en.md │ │ └── using-wechat.md │ ├── resources.en.md │ └── resources.md ├── mini.project.json ├── package.json ├── project.config.json ├── scripts/ │ ├── axml/ │ │ ├── index.ts │ │ └── mapping.ts │ ├── build.js │ ├── check-compiled.ts │ ├── compile-axml.ts │ ├── compile.js │ ├── copy.ts │ ├── create-config.js │ ├── dev-doc.js │ ├── dev.ts │ ├── generate.ts │ ├── getSourceCode.js │ ├── github/ │ │ ├── cli.js │ │ ├── createIssueCommentPrNextResult.js │ │ ├── createPrNextCheckSuite.js │ │ ├── helpers.js │ │ └── notifyReleaseResult.js │ ├── mini-compiler.ts │ ├── patch-coverage.ts │ ├── publish.js │ ├── publishInCI.js │ ├── publishRC.js │ ├── publishUtils.js │ ├── quick-release.js │ ├── renamePageConfig.ts │ ├── todo.ts │ ├── transform.ts │ ├── tsconfig.json │ ├── tsxjs/ │ │ ├── babel-plugin-export-default-to-module-exports.ts │ │ ├── index.spec.ts │ │ └── index.ts │ ├── tsxml/ │ │ ├── context.ts │ │ ├── fixtures/ │ │ │ ├── command.tsx │ │ │ ├── component.tsx │ │ │ ├── event.tsx │ │ │ ├── if.tsx │ │ │ ├── index.tsx │ │ │ ├── page.tsx │ │ │ ├── sjs.sjs.js │ │ │ ├── sjs.tsx │ │ │ ├── snapshot/ │ │ │ │ ├── command.axml │ │ │ │ ├── command.wxml │ │ │ │ ├── component.axml │ │ │ │ ├── component.wxml │ │ │ │ ├── event.axml │ │ │ │ ├── event.wxml │ │ │ │ ├── if.axml │ │ │ │ ├── if.wxml │ │ │ │ ├── index.axml │ │ │ │ ├── index.wxml │ │ │ │ ├── page.axml │ │ │ │ ├── page.wxml │ │ │ │ ├── sjs.axml │ │ │ │ ├── sjs.wxml │ │ │ │ ├── style.axml │ │ │ │ ├── style.wxml │ │ │ │ ├── template.axml │ │ │ │ └── template.wxml │ │ │ ├── style.tsx │ │ │ └── template.tsx │ │ ├── h.ts │ │ ├── index.spec.ts │ │ ├── index.ts │ │ ├── parser.ts │ │ ├── platform.ts │ │ └── utils.ts │ └── verifyCommitMsg.js ├── src/ │ ├── ActionSheet/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.sjs.ts │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── Alphabet/ │ │ ├── index.axml │ │ ├── index.json │ │ ├── index.less │ │ └── index.ts │ ├── AutoResize/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── Avatar/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.sjs.ts │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── Badge/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.sjs.ts │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── Button/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.sjs.ts │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── Calendar/ │ │ ├── helper.sjs.ts │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.ts │ │ ├── props.ts │ │ ├── scroll.sjs.ts │ │ ├── utils.ts │ │ └── variable.less │ ├── Card/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── Checkbox/ │ │ ├── CheckboxGroup/ │ │ │ ├── index.axml │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── props.ts │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.sjs.ts │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── Checklist/ │ │ ├── ChecklistItem/ │ │ │ ├── index.axml │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── props.ts │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.sjs.ts │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── Collapse/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.sjs.ts │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── ConfigProvider/ │ │ ├── darkTheme.ts │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── Container/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── Countdown/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── DatePicker/ │ │ ├── RangePicker/ │ │ │ ├── index.axml │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── props.ts │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.ts │ │ ├── props.ts │ │ ├── util.ts │ │ └── variable.less │ ├── Dialog/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.sjs.ts │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── Divider/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.sjs.ts │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── Empty/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── Feedback/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── Footer/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── Form/ │ │ ├── FormCascaderPicker/ │ │ │ ├── index.axml │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── props.ts │ │ ├── FormCheckboxGroup/ │ │ │ ├── index.axml │ │ │ ├── index.json │ │ │ ├── index.ts │ │ │ └── props.ts │ │ ├── FormDatePicker/ │ │ │ ├── index.axml │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── props.ts │ │ ├── FormImageUpload/ │ │ │ ├── index.axml │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── props.ts │ │ ├── FormInput/ │ │ │ ├── index.axml │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ ├── props.ts │ │ │ └── variable.less │ │ ├── FormItem/ │ │ │ ├── index.axml │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── props.ts │ │ ├── FormPicker/ │ │ │ ├── index.axml │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── props.ts │ │ ├── FormRadioGroup/ │ │ │ ├── index.axml │ │ │ ├── index.json │ │ │ ├── index.ts │ │ │ └── props.ts │ │ ├── FormRangePicker/ │ │ │ ├── index.axml │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── props.ts │ │ ├── FormRate/ │ │ │ ├── index.axml │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── props.ts │ │ ├── FormSelector/ │ │ │ ├── index.axml │ │ │ ├── index.json │ │ │ ├── index.ts │ │ │ └── props.ts │ │ ├── FormSlider/ │ │ │ ├── index.axml │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ ├── props.ts │ │ │ └── variable.less │ │ ├── FormStepper/ │ │ │ ├── index.axml │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ ├── props.ts │ │ │ └── variable.less │ │ ├── FormSwitch/ │ │ │ ├── index.axml │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ ├── props.ts │ │ │ └── variable.less │ │ ├── FormTextarea/ │ │ │ ├── index.axml │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── props.ts │ │ ├── form.ts │ │ ├── index.en.md │ │ ├── index.md │ │ └── variable.less │ ├── Grid/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.sjs.ts │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── GuideTour/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.sjs.ts │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── Icon/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── ImageIcon/ │ │ ├── index.axml │ │ ├── index.json │ │ ├── index.sjs.ts │ │ ├── index.ts │ │ └── props.ts │ ├── ImageUpload/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── IndexBar/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── Input/ │ │ ├── InputBlur/ │ │ │ ├── index.axml │ │ │ ├── index.json │ │ │ ├── index.ts │ │ │ └── props.ts │ │ ├── Textarea/ │ │ │ ├── index.axml │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── props.ts │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.ts │ │ ├── props.ts │ │ ├── utils.ts │ │ └── variable.less │ ├── List/ │ │ ├── ListItem/ │ │ │ ├── index.axml │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── props.ts │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── Loading/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.sjs.ts │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── Mask/ │ │ ├── index.axml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── Modal/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.sjs.ts │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── NoticeBar/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── NumberInput/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── NumberKeyboard/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── PageContainer/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.sjs.ts │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── Pagination/ │ │ ├── index.axml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.sjs.ts │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── Picker/ │ │ ├── CascaderPicker/ │ │ │ ├── index.axml │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ ├── props.ts │ │ │ └── utils.ts │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.sjs.ts │ │ ├── index.ts │ │ ├── props.ts │ │ ├── utils.ts │ │ └── variable.less │ ├── Popover/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.ts │ │ ├── props.ts │ │ ├── utils.ts │ │ └── variable.less │ ├── PopoverList/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.ts │ │ ├── props.ts │ │ ├── utils.ts │ │ └── variable.less │ ├── Popup/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.sjs.ts │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── Postscript/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── Progress/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── Radio/ │ │ ├── RadioGroup/ │ │ │ ├── index.axml │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── props.ts │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.sjs.ts │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── RareWordsKeyboard/ │ │ ├── constants.ts │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.ts │ │ ├── props.ts │ │ ├── utils.ts │ │ ├── variable.less │ │ └── zdatas.ts │ ├── Rate/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── Result/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.sjs.ts │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── SafeArea/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.ts │ │ └── props.ts │ ├── SelectContact/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.sjs.ts │ │ ├── index.ts │ │ ├── props.ts │ │ ├── util.ts │ │ └── variable.less │ ├── Selector/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.sjs.ts │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── Skeleton/ │ │ ├── Avatar/ │ │ │ ├── index.axml │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.sjs.ts │ │ │ ├── index.ts │ │ │ └── props.ts │ │ ├── Button/ │ │ │ ├── index.axml │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.sjs.ts │ │ │ ├── index.ts │ │ │ └── props.ts │ │ ├── Input/ │ │ │ ├── index.axml │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── props.ts │ │ ├── Paragraph/ │ │ │ ├── index.axml │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── props.ts │ │ ├── Title/ │ │ │ ├── index.axml │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── props.ts │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── Slider/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.sjs.ts │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── Space/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.sjs.ts │ │ ├── index.ts │ │ └── props.ts │ ├── Stepper/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.ts │ │ ├── props.ts │ │ ├── utils.ts │ │ └── variable.less │ ├── Steps/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.sjs.ts │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── Sticky/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── SwipeAction/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.sjs.ts │ │ ├── index.ts │ │ ├── props.ts │ │ ├── variable.less │ │ └── wechat.ts │ ├── Switch/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── TabBar/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── Table/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── Tabs/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── Tag/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── Terms/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── Toast/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── Typography/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.sjs.ts │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── Voucher/ │ │ ├── index.axml │ │ ├── index.en.md │ │ ├── index.json │ │ ├── index.less │ │ ├── index.md │ │ ├── index.ts │ │ ├── props.ts │ │ └── variable.less │ ├── _locale/ │ │ ├── ar-SA.ts │ │ ├── de-DE.ts │ │ ├── en-US.ts │ │ ├── es-ES.ts │ │ ├── fr-FR.ts │ │ ├── in-ID.ts │ │ ├── index.ts │ │ ├── it-IT.ts │ │ ├── ja-JP.ts │ │ ├── ko-KR.ts │ │ ├── ms-MY.ts │ │ ├── pt-BR.ts │ │ ├── ru-RU.ts │ │ ├── th-TH.ts │ │ ├── tr-TR.ts │ │ ├── vi-VN.ts │ │ ├── zh-CN.ts │ │ ├── zh-HK.ts │ │ └── zh-TW.ts │ ├── _util/ │ │ ├── arrow.sjs.ts │ │ ├── assert-component2.ts │ │ ├── base.ts │ │ ├── compareVersion.ts │ │ ├── console.ts │ │ ├── dayjs/ │ │ │ └── iso-weekday.ts │ │ ├── event.sjs.ts │ │ ├── flattenObject.ts │ │ ├── fmtEvent.ts │ │ ├── get.ts │ │ ├── isPropsEmpty.sjs.ts │ │ ├── jsapi/ │ │ │ ├── base.ts │ │ │ ├── choose-image.ts │ │ │ ├── create-canvas-context.ts │ │ │ ├── get-instance-bounding-client-rect.ts │ │ │ ├── get-system-info.ts │ │ │ └── load-font-face.ts │ │ ├── platform.ts │ │ ├── promisify.ts │ │ ├── set.ts │ │ ├── simply.ts │ │ ├── store.ts │ │ └── support.ts │ ├── mixins/ │ │ ├── computed.ts │ │ └── value.ts │ └── style/ │ ├── mixins/ │ │ └── hairline.less │ ├── themes/ │ │ ├── color.less │ │ ├── index.less │ │ ├── theme-black.less │ │ └── theme-mode.less │ └── variables.less ├── tests/ │ ├── alipay/ │ │ ├── ActionSheet/ │ │ │ └── __tests__/ │ │ │ └── index.test.ts │ │ ├── Badge/ │ │ │ └── __tests__/ │ │ │ ├── index.test.ts │ │ │ └── snapshot/ │ │ │ └── badge_alipay_config.txt │ │ ├── Button/ │ │ │ └── __tests__/ │ │ │ └── index.test.ts │ │ ├── Calendar/ │ │ │ └── __tests__/ │ │ │ ├── calendar.spec.ts │ │ │ ├── snapshot/ │ │ │ │ └── alipay_config_props.txt │ │ │ ├── testUtils.ts │ │ │ └── utils.spec.ts │ │ ├── Checkbox/ │ │ │ ├── CheckboxGroup/ │ │ │ │ └── index.spec.ts │ │ │ └── index.spec.ts │ │ ├── Checklist/ │ │ │ └── __tests__/ │ │ │ └── index.test.ts │ │ ├── Collapse/ │ │ │ └── index.test.ts │ │ ├── DatePicker/ │ │ │ ├── RangePicker/ │ │ │ │ ├── index.test.ts │ │ │ │ └── utils.ts │ │ │ ├── index.test.ts │ │ │ └── utils.ts │ │ ├── Form/ │ │ │ ├── FormCascaderPicker/ │ │ │ │ └── index.test.ts │ │ │ ├── FormCheckboxGroup/ │ │ │ │ └── index.test.ts │ │ │ ├── FormDatePicker/ │ │ │ │ └── index.test.ts │ │ │ ├── FormImageUpload/ │ │ │ │ └── index.test.ts │ │ │ ├── FormInput/ │ │ │ │ └── index.test.ts │ │ │ ├── FormPicker/ │ │ │ │ └── index.test.ts │ │ │ ├── FormRadioGroup/ │ │ │ │ └── index.test.ts │ │ │ ├── FormRangePicker/ │ │ │ │ └── index.test.ts │ │ │ ├── FormRate/ │ │ │ │ └── index.test.ts │ │ │ ├── FormSelector/ │ │ │ │ └── index.test.ts │ │ │ ├── FormSlider/ │ │ │ │ └── index.test.ts │ │ │ ├── FormStepper/ │ │ │ │ └── index.test.ts │ │ │ ├── FormSwitch/ │ │ │ │ └── index.test.ts │ │ │ ├── FormTextarea/ │ │ │ │ └── index.test.ts │ │ │ ├── form.test.ts │ │ │ ├── form.ts │ │ │ └── utils.ts │ │ ├── Grid/ │ │ │ └── __tests__/ │ │ │ └── index.test.ts │ │ ├── GuideTour/ │ │ │ └── index.test.ts │ │ ├── Icon/ │ │ │ └── __tests__/ │ │ │ └── index.test.ts │ │ ├── ImageUpload/ │ │ │ ├── helper.ts │ │ │ └── index.test.ts │ │ ├── Input/ │ │ │ ├── InputBlur/ │ │ │ │ └── index.test.ts │ │ │ ├── Textarea/ │ │ │ │ └── index.test.ts │ │ │ ├── common.ts │ │ │ └── index.test.ts │ │ ├── List/ │ │ │ └── __tests__/ │ │ │ ├── List.test.ts │ │ │ ├── ListItem.test.ts │ │ │ └── snapshot/ │ │ │ ├── list_alipay_config.txt │ │ │ └── list_item_alipay_config.txt │ │ ├── Modal/ │ │ │ └── __tests__/ │ │ │ ├── index.test.ts │ │ │ └── snapshot/ │ │ │ └── alipay_config_props.txt │ │ ├── NoticeBar/ │ │ │ └── index.test.ts │ │ ├── NumberKeyboard/ │ │ │ └── index.spec.ts │ │ ├── PageContainer/ │ │ │ ├── index.test.ts │ │ │ └── snapshot/ │ │ │ └── page_alipay_config.txt │ │ ├── Pagination/ │ │ │ └── index.test.ts │ │ ├── Picker/ │ │ │ ├── CascaderPicker/ │ │ │ │ └── __tests__/ │ │ │ │ ├── index.test.ts │ │ │ │ └── utils.ts │ │ │ └── __tests__/ │ │ │ ├── index.test.ts │ │ │ └── utils.ts │ │ ├── Popover/ │ │ │ └── __tests__/ │ │ │ └── index.test.ts │ │ ├── Popup/ │ │ │ └── index.test.ts │ │ ├── Progress/ │ │ │ ├── index.spec.ts │ │ │ ├── snap-speed-0-50-20.json │ │ │ ├── snap-speed-12.json │ │ │ ├── snap.json │ │ │ └── snapshot/ │ │ │ └── alipay_config_props.txt │ │ ├── Radio/ │ │ │ ├── RadioGroup/ │ │ │ │ ├── index.test.ts │ │ │ │ └── utils.ts │ │ │ ├── index.test.ts │ │ │ └── utils.ts │ │ ├── RareWordsKeyboard/ │ │ │ └── __tests__/ │ │ │ ├── index.test.ts │ │ │ └── tu.txt │ │ ├── Rate/ │ │ │ ├── index.test.ts │ │ │ └── utils.ts │ │ ├── Result/ │ │ │ ├── index.test.ts │ │ │ └── snapshot/ │ │ │ └── result_alipay_config.txt │ │ ├── Selector/ │ │ │ ├── index.test.ts │ │ │ └── utils.ts │ │ ├── Slider/ │ │ │ └── __tests__/ │ │ │ └── index.test.ts │ │ ├── Stepper/ │ │ │ └── __tests__/ │ │ │ └── index.test.ts │ │ ├── SwipeAction/ │ │ │ └── index.spec.ts │ │ ├── Switch/ │ │ │ └── __tests__/ │ │ │ ├── index.test.ts │ │ │ └── snapshot/ │ │ │ └── alipay_config.txt │ │ ├── TabBar/ │ │ │ └── __tests__/ │ │ │ └── index.test.ts │ │ ├── Tabs/ │ │ │ └── index.test.ts │ │ ├── Toast/ │ │ │ └── index.spec.ts │ │ ├── Typography/ │ │ │ ├── index.spec.ts │ │ │ └── snapshot/ │ │ │ └── typography_alipay_config.txt │ │ └── _util/ │ │ └── __tests__/ │ │ └── compareVersion.spec.ts │ ├── selector-query.spec.ts │ ├── selector-query.ts │ ├── setup.ts │ └── utils.ts ├── tsconfig.alipay.demo.json ├── tsconfig.json ├── tsconfig.wechat.demo.json ├── tsconfig.wechat.json ├── typings/ │ └── wechat.d.ts ├── typings.d.ts └── vite.config.ts ================================================ FILE CONTENTS ================================================ ================================================ FILE: .dumi/pages/index/index.tsx ================================================ /* .dumi/pages/index.tsx */ import HomeBaseLayout from '../../theme/layouts/HomePageLayout'; const CustomHomePage = () => { return (
); }; export default CustomHomePage; ================================================ FILE: .dumi/pages/index-en/index.tsx ================================================ import CustomHomePage from '../index'; export default CustomHomePage; ================================================ FILE: .dumi/theme/builtins/.gitkeep ================================================ ================================================ FILE: .dumi/theme/builtins/HomeBaseLayout/components/Banner/index.tsx ================================================ import { css } from '@emotion/react'; import Atropos from 'atropos/react'; import useLocaleValue from "../../../../../theme/hooks/useLocaleValue"; import useSiteToken from "../../../../../theme/hooks/useSiteToken"; import 'atropos/css' const bgLight = 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/X8TvQKnc1MQAAAAAAAAAAAAADoEQAQFr/fmt.webp' const bgDark = 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/3o3ASIN3QeEAAAAAAAAAAAAADoEQAQFr/fmt.webp' const contentLight = 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/Q47ITaa7OkIAAAAAAAAAAAAADoEQAQFr/fmt.webp' const contentDark = 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/CtzWRYHofh0AAAAAAAAAAAAADoEQAQFr/fmt.webp' const icon1Light = 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/wF0aRYXHJYQAAAAAAAAAAAAADoEQAQFr/original'; const icon1Dark = 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/y0d7RaMUp3MAAAAAAAAAAAAADoEQAQFr/original'; const icon2Light = 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/GFR1QKB9oLEAAAAAAAAAAAAADoEQAQFr/original'; const icon2Dark = 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/MUY2SKAUDN8AAAAAAAAAAAAADoEQAQFr/original'; const icon3Light = 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/ublASKWCoCsAAAAAAAAAAAAADoEQAQFr/original'; const icon3Dark = 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/SpnxRLyYUI8AAAAAAAAAAAAADoEQAQFr/original'; const icon4Light = 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/2ccdRLZwLdAAAAAAAAAAAAAADoEQAQFr/fmt.webp'; const icon4Dark = 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/kMErRLYmniEAAAAAAAAAAAAADoEQAQFr/fmt.webp'; const icon5Light = 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/gdJFRppwDWQAAAAAAAAAAAAADoEQAQFr/original'; const icon5Dark = 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/Oy5tSKE-DYwAAAAAAAAAAAAADoEQAQFr/original'; const icon6Light = 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/v2FXQ5zpGfkAAAAAAAAAAAAADoEQAQFr/original'; const icon6Dark = 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/iFYgR7GDoksAAAAAAAAAAAAADoEQAQFr/original'; const useStyle = ({ isDark, isMobile, }) => { const { token } = useSiteToken(); const { fontFamily } = token; return { mainContainer: css` width: 100%; height: 662px; background: url(${isDark ? bgDark : bgLight}) no-repeat center center; background-size: cover; position: relative; font-family: PuHuiTi, ${fontFamily}, sans-serif; display: flex; justify-content: center; `, mainContent: css` width: 100%; height: 602px; position: relative; padding-top: 60px; @media (min-width: 1600px) { max-width: 1600px; } `, featureContainer: css` width: 100%; height: 602px; position: relative; & .atropos-shadow { display: none; } @media (max-width: 900px) { display: none; } `, featureWrap: css` width: 100%; height: 602px; position: relative; `, featureContentMainImg: css` height: 602px; z-index: 90; position: absolute; right: 0; top: 0; pointer-events: none; `, featureIcon1: css` position: absolute; z-index: 100; right: 610px; bottom: 170px; width: 84px; pointer-events: none; `, featureIcon2: css` position: absolute; z-index: 100; top: 200px; right: 0px; width: 166px; pointer-events: none; `, featureIcon3: css` position: absolute; z-index: 100; right: 700px; top: 246px; width: 44px; pointer-events: none; `, featureIcon4: css` position: absolute; z-index: 90; right: 0px; top: 150px; width: 715px; pointer-events: none; `, featureIcon4Light: css` position: absolute; z-index: 90; right: 10px; top: 150px; width: 690px; pointer-events: none; `, featureIcon5: css` position: absolute; z-index: 100; right: 150px; top: 0px; width: 90px; pointer-events: none; `, featureIcon6: css` position: absolute; z-index: 80; right: 520px; top: -10px; width: 106px; pointer-events: none; `, actionWrap: css` position: absolute; text-align: left; top: 192px; left: 100px; z-index: 80; @media (max-width: 900px) { right: 24px; text-align: center; left: 24px; } `, actionTitle: css` font-size: 52px; font-weight: bold; `, actionSubTitle: css` font-size: 22px; `, actionMainBtn: css` all: initial; width: 136px; height: 41px; font-size: 16px; font-weight: 500; line-height: 41px; background: #fff; border-radius: 21px; box-shadow: 1px 1px 7px 0px #012a6526; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; margin-top: 50px; `, actionMainBtnImage: css` width: 9px; height: 13px; margin-left: 10px; `, actionSubBtn: css` all: initial; width: 136px; height: 41px; font-size: 16px; line-height: 41px; background: #738ba466; border: 1px solid #ffffff; border-radius: 21px; box-shadow: 1px 1px 7px 0px #012a6526; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; margin-top: 50px; margin-left: 13px; color: #fff; `, }; }; const actionHref = { 'zh-CN': { quickStart: '/guide/quick-start', tryComponent: '/components/overview', }, 'en': { quickStart: '/guide/quick-start-en', tryComponent: '/components/overview-en', } } export default ({ isDark, isMobile, }) => { const lang = useLocaleValue('bannerLocales'); const style = useStyle({ isDark, isMobile, }); return (

Ant Design Mini

{lang.desc}
{lang.integration} {lang.try}
) } ================================================ FILE: .dumi/theme/builtins/HomeBaseLayout/components/Frame/index.tsx ================================================ import { css } from '@emotion/react'; import useLocaleValue from "../../../../../theme/hooks/useLocaleValue"; import useSiteToken from "../../../../../theme/hooks/useSiteToken"; import Title from "../Title"; const frameList = { 'zh-CN': [ { title: 'Ant Design', subTitle: '企业级产品设计体系', logo: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/BdagQ4iT8TMAAAAAAAAAAAAADoEQAQFr/original', href: 'https://ant.design/', }, { title: 'AntV', subTitle: '全新一代数据可视化解决方案', logo: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/j-PwR5GHEWYAAAAAAAAAAAAADoEQAQFr/original', href: 'https://antv.antgroup.com/' }, { title: 'Ant Design Mobile', subTitle: 'Ant Design 移动端 UI 组件库', logo: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/6gdISLFqBBAAAAAAAAAAAAAADoEQAQFr/original', href: 'https://mobile.ant.design/' }, { title: 'Kitchen', subTitle: '一款为设计者提升效率的工具集', logo: 'https://gw.alipayobjects.com/zos/bmw-prod/af1ea898-bf02-45d1-9f30-8ca851c70a5b.svg', href: 'https://kitchen.alipay.com/' } ], 'en': [ { title: 'Ant Design', subTitle: 'Design System', logo: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/BdagQ4iT8TMAAAAAAAAAAAAADoEQAQFr/original', href: 'https://ant.design/', }, { title: 'AntV', subTitle: 'Data Visualization Solution', logo: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/j-PwR5GHEWYAAAAAAAAAAAAADoEQAQFr/original', href: 'https://antv.antgroup.com/' }, { title: 'Ant Design Mobile', subTitle: 'Mobile UI Component Library', logo: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/6gdISLFqBBAAAAAAAAAAAAAADoEQAQFr/original', href: 'https://mobile.ant.design/' }, { title: 'Kitchen', subTitle: 'Enhance Efficiency for Designers', logo: 'https://gw.alipayobjects.com/zos/bmw-prod/af1ea898-bf02-45d1-9f30-8ca851c70a5b.svg', href: 'https://kitchen.alipay.com/' } ] } const useStyle = ({ isDark, isMobile, }) => { const { token } = useSiteToken(); const { fontFamily } = token; return { container: css` width: 100%; min-height: 476px; font-family: PuHuiTi, ${fontFamily}, sans-serif; padding-top: 80px; padding-bottom: 100px; padding-left: 24px; padding-right: 24px; display: flex; flex-direction: column; align-items: center; box-sizing: border-box; `, contentWrap: css` width: 100%; max-width: 1200px; padding-top: 50px; display: flex; justify-content: space-between; flex-wrap: wrap; `, itemWrap: css` all: initial; margin-bottom: 24px; min-width: 271px; height: 163px; border-radius: 12px; box-shadow: ${ isDark ? 'unset' : '0px 10px 28px 0px #718ecc1f' }; background: ${ isDark ? '#26272e' : '#ffffff' }; box-sizing: border-box; padding: 22px; text-align: left; margin-right: 24px; cursor: pointer; &:last-of-type { margin-right: 0; } @media (max-width: 1220px) { width: 48%; margin-right:0; } @media (max-width: 600px) { width: 100%; margin-right:0; } cursor: pointer; `, itemImg: css` height: 50px; margin-bottom: 15px; `, itemTitle: css` font-size: 20px; font-weight: medium; color: ${ isDark ? '#c5cad1' : 'rgba(0, 0, 0, 0.85)' }; margin-bottom: 6px; `, itemSubTitle: css` font-size: 14px; color: ${ isDark ? '#808080' : 'rgba(0, 0, 0, 0.65)' } ` }; }; export default ({ isDark, isMobile, }) => { const lang = useLocaleValue('frameLocales'); const style = useStyle({ isDark, isMobile, }); return (
<div css={style.contentWrap}> { (frameList[lang.key] || []).map((item) => { return ( <a css={style.itemWrap} key={item.title} href={item.href} > <img src={item.logo} css={style.itemImg} /> <div css={style.itemTitle}> {item.title} </div> <div css={style.itemSubTitle}> {item.subTitle} </div> </a> ) }) } </div> </div> ) } ================================================ FILE: .dumi/theme/builtins/HomeBaseLayout/components/Gallery/ItemBox/index.tsx ================================================ import { css } from '@emotion/react'; import useSiteToken from "../../../../../../theme/hooks/useSiteToken"; import useLocaleValue from "../../../../../../theme/hooks/useLocaleValue"; import { Tag } from 'antd'; const useStyle = ({ isDark, isMobile, }) => { const { token } = useSiteToken(); const { fontFamily } = token; return { container: css` font-family: PuHuiTi, ${fontFamily}, sans-serif; background: ${ isDark ? '#26272e' : 'linear-gradient(105deg, #f5f8ffcc 8%, #f2f5fccc 37%, #e7f0fecc 71%, #e6effecc 107%)' }; border-radius: 8px; height: 380px; padding: 24px; margin-right: 24px; margin-bottom: 24px; padding-left: 24px; padding-right: 24px; position: relative; display: flex; flex-direction: column; box-sizing: border-box; flex-wrap: wrap-all; &:last-of-type { margin-right: 0; } @media (max-width: 1400px) { width: 46%; &:nth-of-type(2n) { margin-right: 0; } } @media (max-width: 600px) { width: 100%; margin-right: 24px; margin-left: 24px; &:nth-of-type(2n) { margin-right: 24px; } } `, titleWrap: css` display: flex; align-items: center; `, title: css` font-size: 20px; font-weight: medium; margin-right: 8px; `, imgWrap: css` flex: 1; display: flex; align-items: center; justify-content: center; `, img: css` pointer-events: none; ` }; }; export default ({ children, data, isDark, isMobile, }) => { const style = useStyle({ isDark, isMobile, }); return ( <div css={style.container}> <div css={style.titleWrap}> <span css={style.title}> {data.title} </span> <Tag color={data.isNew ? 'blue' : 'orange'} > {data.tag} </Tag> </div> <div css={style.imgWrap}> <img css={style.img} src={isDark ? data.dark : data.light} width={data.width} /> </div> </div> ) } ================================================ FILE: .dumi/theme/builtins/HomeBaseLayout/components/Gallery/index.tsx ================================================ import { css } from '@emotion/react'; import useLocaleValue from "../../../../../theme/hooks/useLocaleValue"; import useSiteToken from "../../../../../theme/hooks/useSiteToken"; import Title from "../Title"; import ItemBox from './ItemBox'; const componentList = { 'zh-CN': [ { title: '筛选', tag: '新增', isNew: true, dark: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/AsAYR6Ppeh4AAAAAAAAAAAAADoEQAQFr/fmt.webp', light: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/Up6kR4FSEbEAAAAAAAAAAAAADoEQAQFr/fmt.webp', width: 300, }, { title: '反馈菜单', tag: '新增', isNew: true, dark: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/Ue6ISoWoCSwAAAAAAAAAAAAADoEQAQFr/fmt.webp', light: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/MWKcSIUJ_yQAAAAAAAAAAAAADoEQAQFr/fmt.webp', width: 227, }, { title: '宫格', tag: '更新', dark: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/_vCuQ7g10ykAAAAAAAAAAAAADoEQAQFr/original', light: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/HyFJRYNQX2YAAAAAAAAAAAAADoEQAQFr/original', width: 300, }, { title: '弹窗', tag: '更新', dark: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/ASJORa_fgK0AAAAAAAAAAAAADoEQAQFr/original', light: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/bjnWQbPPz6sAAAAAAAAAAAAADoEQAQFr/original', width: 240, }, ], 'en': [ { title: 'Filter', tag: 'New', isNew: true, dark: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/UH1UT6hvmV4AAAAAAAAAAAAADoEQAQFr/fmt.webp', light: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/fj-qRIzRNxIAAAAAAAAAAAAADoEQAQFr/original', width: 300, }, { title: 'Feedback', tag: 'New', isNew: true, dark: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/rSKaQrWB2mUAAAAAAAAAAAAADoEQAQFr/fmt.webp', light: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/RFoKS5D1XhcAAAAAAAAAAAAADoEQAQFr/fmt.webp', width: 227, }, { title: 'Grid', tag: 'Update', dark: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/OOtIRLHJSNIAAAAAAAAAAAAADoEQAQFr/original', light: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/oAG3SI8Eq0MAAAAAAAAAAAAADoEQAQFr/original', width: 300, }, { title: 'Modal', tag: 'Update', dark: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/IjTYSalsOJIAAAAAAAAAAAAADoEQAQFr/original', light: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/KZp7Sq0kceYAAAAAAAAAAAAADoEQAQFr/original', width: 240, }, ] } const useStyle = ({ isDark, isMobile, }) => { const { token } = useSiteToken(); const { fontFamily } = token; return { container: css` width: 100%; min-height: 693px; font-family: PuHuiTi, ${fontFamily}, sans-serif; padding-top: 80px; padding-bottom: 100px; display: flex; flex-direction: column; justify-content: center; align-items: center; box-sizing: border-box; `, contentWrap: css` width: 100%; padding-top: 50px; display: flex; justify-content: center; flex-wrap: wrap; @media (min-width: 1600px) { max-width: 1600px; } ` }; }; export default ({ isDark, isMobile, }) => { const lang = useLocaleValue('galleryLocales'); const style = useStyle({ isDark, isMobile, }); return ( <div css={style.container}> <Title title={lang.title} subTitle={lang.subTitle} isDark={isDark} /> <div css={style.contentWrap}> { (componentList[lang.key] || []).map((item) => { return ( <ItemBox key={item.title} data={item} isDark={isDark} isMobile={isMobile} /> ) }) } </div> </div> ) } ================================================ FILE: .dumi/theme/builtins/HomeBaseLayout/components/Notice/index.tsx ================================================ import useLocaleValue from "../../../../../theme/hooks/useLocaleValue"; export default ({ config }) => { const lang = useLocaleValue('frameLocales'); return <div> Notice - 是否是移动端: {config.isMobile + ''} - 主题模式:{config.theme} <button> {lang.button} </button> <div> ---------------------------- </div> </div> } ================================================ FILE: .dumi/theme/builtins/HomeBaseLayout/components/Theme/index.tsx ================================================ import { css } from '@emotion/react'; import Atropos from 'atropos/react'; import useLocaleValue from "../../../../../theme/hooks/useLocaleValue"; import useSiteToken from "../../../../../theme/hooks/useSiteToken"; import Title from "../Title"; import 'atropos/css' import { Button } from 'antd'; import { useContext } from 'react'; import { SwapOutlined } from '@ant-design/icons'; import SiteContext from '../../../../../theme/slots/SiteContext'; import { history } from 'dumi'; const lightBg = 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/zBllT4iUaJsAAAAAAAAAAAAADoEQAQFr/fmt.webp'; const darkBg = 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/pgE1TJxC04UAAAAAAAAAAAAADoEQAQFr/fmt.webp'; const componentList = { 'zh-CN': [ { dark: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/QjFTR5kfTYcAAAAAAAAAAAAADoEQAQFr/original', light: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/b3HpTI5EcCcAAAAAAAAAAAAADoEQAQFr/original', width: 225, left: 200, top: 10, }, { dark: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/-IF1RbuTd2gAAAAAAAAAAAAADoEQAQFr/original', light: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/xOMxRrX_QR4AAAAAAAAAAAAADoEQAQFr/fmt.webp', width: 84, left: 550, top: 50, }, { dark: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/8EhnSpjjRU0AAAAAAAAAAAAADoEQAQFr/fmt.webp', light: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/xQrURLJoIuEAAAAAAAAAAAAADoEQAQFr/fmt.webp', width: 180, right: 430, top: 1, }, { dark: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/v7U7RZvZp4gAAAAAAAAAAAAADoEQAQFr/fmt.webp', light: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/vsHXR72JvIYAAAAAAAAAAAAADoEQAQFr/fmt.webp', width: 220, left: 289, bottom: 1, }, { dark: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/Go4iQaJZ2cMAAAAAAAAAAAAADoEQAQFr/fmt.webp', light: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/aZQgR5ipEcEAAAAAAAAAAAAADoEQAQFr/fmt.webp', width: 200, right: 550, bottom: 180, }, { dark: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/zgbaTa7YGg4AAAAAAAAAAAAADoEQAQFr/fmt.webp', light: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/C4Z0T49uhRIAAAAAAAAAAAAADoEQAQFr/fmt.webp', width: 225, right: 220, bottom: 50, } ], 'en': [ { dark: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/8OhhTq-HAZEAAAAAAAAAAAAADoEQAQFr/original', light: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/p2awRb3Tb4QAAAAAAAAAAAAADoEQAQFr/original', width: 225, left: 200, top: 10, }, { dark: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/akgcToUvzGEAAAAAAAAAAAAADoEQAQFr/original', light: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/HNlmQpepfRgAAAAAAAAAAAAADoEQAQFr/fmt.webp', width: 84, left: 550, top: 50, }, { dark: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/ztdYTrOnHRwAAAAAAAAAAAAADoEQAQFr/fmt.webp', light: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/wyKSSbyBj0sAAAAAAAAAAAAADoEQAQFr/fmt.webp', width: 180, right: 430, top: 1, }, { dark: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/maFaSK0Zz8sAAAAAAAAAAAAADoEQAQFr/fmt.webp', light: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/T2N8R72pevMAAAAAAAAAAAAADoEQAQFr/original', width: 220, left: 289, bottom: 1, }, { dark: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/OETGRLpfrpcAAAAAAAAAAAAADoEQAQFr/original', light: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/zeGhSYYOx1MAAAAAAAAAAAAADoEQAQFr/fmt.webp', width: 200, right: 550, bottom: 180, }, { dark: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/cFqQQqDs_oQAAAAAAAAAAAAADoEQAQFr/fmt.webp', light: 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/g9_bRZ9xX4EAAAAAAAAAAAAADoEQAQFr/fmt.webp', width: 225, right: 220, bottom: 50, } ] } const useStyle = ({ isDark, isMobile, }) => { const { token } = useSiteToken(); const { fontFamily } = token; return { container: css` width: 100%; height: 782px; font-family: PuHuiTi, ${fontFamily}, sans-serif; padding-top: 80px; padding-bottom: 100px; display: flex; flex-direction: column; align-items: center; box-sizing: border-box; position: relative; background-color: ${ isDark ? '#0a0a0a' : '#f1f5ff' }; background-image: url(${isDark ? darkBg : lightBg}); background-position: center 50px; background-size: 900px; background-repeat: no-repeat; `, contentWrap: css` width: 100%; height: 400px; max-width: 1600px; margin-top: 50px; display: flex; position: relative; & .atropos-shadow { display: none; } `, compImg: css` @media (max-width: 1200px) { display: none; } ` }; }; export default ({ isDark, isMobile, }) => { const lang = useLocaleValue('themeLocales'); const style = useStyle({ isDark, isMobile, }); const { updateSiteConfig } = useContext(SiteContext); const isEn = lang.key === 'en'; return ( <div css={style.container}> <Title title={lang.title} subTitle={lang.subTitle} isDark={isDark} > <div> <Button type='primary' size='large' icon={<SwapOutlined />} iconPosition='end' style={{ margin: 24 }} onClick={ () => { const themeValue = isDark ? 'light' : 'dark'; updateSiteConfig({ theme: [themeValue] }); } } > {isDark ? lang.light : lang.dark} </Button> <Button type='primary' size='large' icon={<SwapOutlined />} iconPosition='end' onClick={ () => { history.push({ pathname: isEn ? '/' : '/index-en', }); } } > {lang.langDesc} </Button> </div> { (componentList[lang.key] || []).map((item, index) => { let clientWidth = document.documentElement.clientWidth; if (clientWidth > 1600) { clientWidth = 1600; } const rate = clientWidth / 1600; return ( ) }) }
) } ================================================ FILE: .dumi/theme/builtins/HomeBaseLayout/components/Title/index.tsx ================================================ import { css } from '@emotion/react'; import useSiteToken from "../../../../../theme/hooks/useSiteToken"; const useStyle = ({ isDark }) => { const { token } = useSiteToken(); const { fontFamily } = token; return { container: css` text-align: center; `, title: css` font-family: PuHuiTi, ${fontFamily}, sans-serif; font-size: 34px; margin-bottom: 4px; `, subTitle: css` font-family: PuHuiTi, ${fontFamily}, sans-serif; font-size: 16px; color: ${isDark ? '#808080' : '#697A8C'}; `, }; }; export default ({ title, subTitle, isDark , children }) => { const style = useStyle({ isDark }); return (

{title}

{subTitle}
{ children }
) } ================================================ FILE: .dumi/theme/builtins/HomeBaseLayout/components/Users/index.tsx ================================================ import { css } from '@emotion/react'; import useLocaleValue from "../../../../../theme/hooks/useLocaleValue"; import useSiteToken from "../../../../../theme/hooks/useSiteToken"; const lightLogos = [ 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/rYmkS4S3-2YAAAAAAAAAAAAADoEQAQFr/original', 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/rlkkR4luEpAAAAAAAAAAAAAADoEQAQFr/fmt.webp', 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/CI-RRYHHGmoAAAAAAAAAAAAADoEQAQFr/fmt.webp', 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/X1KRTbLoQMsAAAAAAAAAAAAADoEQAQFr/original', 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/wSHKRoozEE4AAAAAAAAAAAAADoEQAQFr/fmt.webp', 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/LwlER4SjL_AAAAAAAAAAAAAADoEQAQFr/original', 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/zSMkRp7RNfMAAAAAAAAAAAAADoEQAQFr/original', 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/E2jUT5GhF30AAAAAAAAAAAAADoEQAQFr/fmt.webp' ] const darkLogos = [ 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/W8O-QqPKw0YAAAAAAAAAAAAADoEQAQFr/original', 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/9VzgSIlhDd8AAAAAAAAAAAAADoEQAQFr/original', 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/zB90Q7-Wz0sAAAAAAAAAAAAADoEQAQFr/original', 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/zpgEQJKFV-kAAAAAAAAAAAAADoEQAQFr/original', 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/vHcDSa-L-a8AAAAAAAAAAAAADoEQAQFr/original', 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/mfSjRr_6ti8AAAAAAAAAAAAADoEQAQFr/original', 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/PMj4S4ve5tAAAAAAAAAAAAAADoEQAQFr/original', 'https://mdn.alipayobjects.com/huamei_bsws4g/afts/img/RUL4SZC87fAAAAAAAAAAAAAADoEQAQFr/original' ] const useStyle = ({ isDark, isMobile, }) => { const { token } = useSiteToken(); const { fontFamily } = token; return { mainContainer: css` width: 100%; min-height: 195px; font-family: PuHuiTi, ${fontFamily}, sans-serif; display: flex; background-color: ${isDark ? '#161616' : '#fff'}; flex-direction: column; justify-content: center; align-items: center; `, title: css` font-size: 20px; margin-bottom: 35px; margin-top: 35px; color: ${isDark ? '#808080' : '#697A8C'}; `, logoWrap: css` padding-left: 100px; padding-right: 100px; box-sizing: border-box; width: 100%; display: flex; justify-content: space-between; flex-wrap: wrap; @media (min-width: 1600px) { max-width: 1600px; } @media (max-width: 1440px) { justify-content: center; } `, logoItemWrap: css` margin-bottom: 24px; &:last-of-type { margin-right: 0; } @media (max-width: 1500px) { width: 25%; text-align: center; min-width: 184px; } @media (max-width: 780px) { width: 30%; text-align: center; min-width: 184px; } `, logo: css` height: 38px; pointer-events: none; ` }; }; export default ({ isDark, isMobile, }) => { const lang = useLocaleValue('userLocales'); const style = useStyle({ isDark, isMobile, }); return (
{lang.title}
{ (isDark ? darkLogos : lightLogos).map((item) => { return (
) }) }
) } ================================================ FILE: .dumi/theme/builtins/HomeBaseLayout/index.tsx ================================================ import { css } from '@emotion/react'; import { useContext, type FC } from 'react'; import SiteContext from '../../slots/SiteContext'; import type { SiteContextProps } from '../../slots/SiteContext'; import Banner from './components/Banner'; import Users from './components/Users'; import Gallery from './components/Gallery'; import Theme from './components/Theme'; import Frame from './components/Frame'; // import Notice from './components/Notice'; const useStyle = () => { return { mainContent: css` position: relative; text-align: center; flex: 1; padding-top: 64px; `, }; }; const HomeBaseLayout: FC = () => { const style = useStyle(); const siteConfig = useContext(SiteContext); const isDark = siteConfig.theme.includes('dark'); const isMobile = !!siteConfig.isMobile; return (
{/* 公告 */} {/* */} {/* 顶部 Banner */} {/* 谁在使用 */} {/* 组件模块 */} {/* 主题和多语言模块 */} {/* 设计语言与研发框架模块 */}
); }; export default HomeBaseLayout; ================================================ FILE: .dumi/theme/builtins/Icon.less ================================================ @font-face { font-family: antdmini-icon; src: url("https://gw.alipayobjects.com/os/bmw-prod/578c472b-19a7-44ab-a92d-adc367ee2fe2.ttf?v=20210115") format("truetype"); } .list-icons { display: flex; flex-wrap:wrap; } .list-icon { display: flex; justify-content: center; align-items: center; width: 16.66%; height: 100px; margin: 3px 0; padding: 10px; text-align: center; border-radius: 4px; cursor: pointer; &:hover { color: #fff; background-color: #1677ff; } transition: color 0.3s ease-in-out,background-color 0.3s ease-in-out; } .icontype { margin-top: 8px; font-size: 12px; } @iconPrefix: ant-icon; .@{iconPrefix} { /* stylelint-disable font-family-no-missing-generic-family-keyword */ font-family: antdmini-icon !important; font-style: normal; -webkit-font-smoothing: antialiased; line-height: 1; font-size: 40px; &-MinusOutline:before { content: "\e66f"; } &-AlipayCircleFill:before { content: "\e670"; } &-CheckCircleFill:before { content: "\e671"; } &-FireFill:before { content: "\e672"; } &-FaceRecognitionOutline:before { content: "\e673"; } &-StarFill:before { content: "\e674"; } &-EyeInvisibleFill:before { content: "\e675"; } &-SmileFill:before { content: "\e676"; } &-FrownFill:before { content: "\e677"; } &-BankcardOutline:before { content: "\e678"; } &-HeartOutline:before { content: "\e679"; } &-EyeFill:before { content: "\e67a"; } &-HeartFill:before { content: "\e67b"; } &-DownFill:before { content: "\e67c"; } &-CloseCircleFill:before { content: "\e67d"; } &-VideoOutline:before { content: "\e67e"; } &-CouponOutline:before { content: "\e67f"; } &-ReceiptOutline:before { content: "\e680"; } &-AntOutline:before { content: "\e681"; } &-UserCircleOutline:before { content: "\e682"; } &-PayCircleOutline:before { content: "\e683"; } &-BillOutline:before { content: "\e684"; } &-PlayOutline:before { content: "\e685"; } &-PayOutline:before { content: "\e686"; } &-MoreOutline:before { content: "\e687"; } &-ShrinkOutline:before { content: "\e688"; } &-ArrowsAltOutline:before { content: "\e689"; } &-StarOutline:before { content: "\e68a"; } &-CheckOutline:before { content: "\e68b"; } &-DeleteOutline:before { content: "\e68c"; } &-LinkOutline:before { content: "\e68d"; } &-InformationCircleOutline:before { content: "\e68e"; } &-GlobalOutline:before { content: "\e68f"; } &-InformationCircleFill:before { content: "\e690"; } &-ExclamationCircleFill:before { content: "\e691"; } &-CheckCircleOutline:before { content: "\e692"; } &-CloseCircleOutline:before { content: "\e693"; } &-SetOutline:before { content: "\e694"; } &-QuestionCircleFill:before { content: "\e695"; } &-QuestionCircleOutline:before { content: "\e696"; } &-UpCircleOutline:before { content: "\e697"; } &-FrownOutline:before { content: "\e698"; } &-DownCircleOutline:before { content: "\e699"; } &-ExclamationCircleOutline:before { content: "\e69a"; } &-MinusCircleOutline:before { content: "\e69b"; } &-RedoOutline:before { content: "\e69c"; } &-UndoOutline:before { content: "\e69d"; } &-EyeInvisibleOutline:before { content: "\e69e"; } &-ForbidFill:before { content: "\e69f"; } &-PicturesOutline:before { content: "\e6a0"; } &-PictureOutline:before { content: "\e6a1"; } &-PictureWrongOutline:before { content: "\e6a2"; } &-EyeOutline:before { content: "\e6a3"; } &-AddCircleOutline:before { content: "\e6a4"; } &-ClockCircleFill:before { content: "\e6a5"; } &-ClockCircleOutline:before { content: "\e6a6"; } &-BellMuteOutline:before { content: "\e6a7"; } &-KeyOutline:before { content: "\e6a8"; } &-BellOutline:before { content: "\e6a9"; } &-SearchOutline:before { content: "\e6aa"; } &-CollectMoneyOutline:before { content: "\e6ab"; } &-UnorderedListOutline:before { content: "\e6ac"; } &-AppstoreOutline:before { content: "\e6ad"; } &-ExclamationTriangleOutline:before { content: "\e6ae"; } &-AddOutline:before { content: "\e6af"; } &-ScanningOutline:before { content: "\e6b0"; } &-ScanCodeOutline:before { content: "\e6b1"; } &-ExclamationOutline:before { content: "\e6b2"; } &-CloseOutline:before { content: "\e6b3"; } &-ScanningFaceOutline:before { content: "\e6b4"; } &-LeftOutline:before { content: "\e6b5"; } &-DownOutline:before { content: "\e6b6"; } &-UpOutline:before { content: "\e6b7"; } &-RightOutline:before { content: "\e6b8"; } &-KoubeiOutline:before { content: "\e6b9"; } &-KoubeiFill:before { content: "\e6ba"; } &-AAOutline:before { content: "\e6bb"; } &-ArrowDownCircleOutline:before { content: "\e6bc"; } &-MovieOutline:before { content: "\e6bd"; } &-CompassOutline:before { content: "\e6be"; } &-LoopOutline:before { content: "\e6bf"; } &-TextOutline:before { content: "\e6c0"; } &-TagOutline:before { content: "\e6c1"; } &-FlagOutline:before { content: "\e6c2"; } &-EnvironmentOutline:before { content: "\e6c3"; } &-CalendarOutline:before { content: "\e6c4"; } &-LocationFill:before { content: "\e6c5"; } &-PhoneFill:before { content: "\e6c6"; } &-PhonebookOutline:before { content: "\e6c7"; } &-SmileOutline:before { content: "\e6c8"; } &-UserAddOutline:before { content: "\e6c9"; } &-FileWrongOutline:before { content: "\e6ca"; } &-SoundMuteFill:before { content: "\e6cb"; } &-SoundMuteOutline:before { content: "\e6cc"; } &-LockOutline:before { content: "\e6cd"; } &-UnlockOutline:before { content: "\e6ce"; } &-EditSOutline:before { content: "\e6cf"; } &-UploadOutline:before { content: "\e6d0"; } &-SoundOutline:before { content: "\e6d1"; } &-DownlandOutline:before { content: "\e6d2"; } &-SendOutline:before { content: "\e6d3"; } &-FillinOutline:before { content: "\e6d4"; } &-AudioMutedOutline:before { content: "\e6d5"; } &-AudioOutline:before { content: "\e6d6"; } &-UserOutline:before { content: "\e6d7"; } &-UserContactOutline:before { content: "\e6d8"; } &-TeamOutline:before { content: "\e6d9"; } &-UserSetOutline:before { content: "\e6da"; } &-FileOutline:before { content: "\e6db"; } &-MailOutline:before { content: "\e6dc"; } &-TruckOutline:before { content: "\e6dd"; } &-MailOpenOutline:before { content: "\e6de"; } &-ChatCheckOutline:before { content: "\e6df"; } &-ChatAddOutline:before { content: "\e6e0"; } &-ChatWrongOutline:before { content: "\e6e1"; } &-PhonebookFill:before { content: "\e6e2"; } &-AddressBookFill:before { content: "\e6e3"; } &-CalculatorOutline:before { content: "\e6e4"; } &-PieOutline:before { content: "\e6e5"; } &-HandPayCircleOutline:before { content: "\e6e6"; } &-GiftOutline:before { content: "\e6e7"; } &-TransportQRcodeOutline:before { content: "\e6e8"; } &-FolderOutline:before { content: "\e6e9"; } &-AlipaySquareFill:before { content: "\e6ea"; } &-TravelOutline:before { content: "\e6eb"; } &-AppOutline:before { content: "\e6ec"; } &-HistogramOutline:before { content: "\e6ed"; } &-MailFill:before { content: "\e6ee"; } &-CameraOutline:before { content: "\e6ef"; } &-EditFill:before { content: "\e6f0"; } &-SystemQRcodeOutline:before { content: "\e6f1"; } &-LockFill:before { content: "\e6f2"; } &-AudioFill:before { content: "\e6f3"; } &-TeamFill:before { content: "\e6f4"; } &-FilterOutline:before { content: "\e6f5"; } &-EditSFill:before { content: "\e6f6"; } &-LikeOutline:before { content: "\e6f7"; } &-TextDeletionOutline:before { content: "\e6f8"; } &-StopOutline:before { content: "\e6f9"; } &-FingerdownOutline:before { content: "\e6fa"; } &-MessageFill:before { content: "\e6fb"; } &-LocationOutline:before { content: "\e6fc"; } &-ContentOutline:before { content: "\e6fd"; } &-ExclamationShieldFill:before { content: "\e6fe"; } &-ReceivePaymentOutline:before { content: "\e6ff"; } &-ExclamationShieldOutline:before { content: "\e700"; } &-AddSquareOutline:before { content: "\e701"; } &-CloseShieldOutline:before { content: "\e702"; } &-CheckShieldOutline:before { content: "\e703"; } &-CheckShieldFill:before { content: "\e704"; } &-ShopbagOutline:before { content: "\e705"; } &-MessageOutline:before { content: "\e706"; } } ================================================ FILE: .dumi/theme/builtins/Icon.tsx ================================================ import React, { useState } from 'react'; import { Input } from 'antd'; import copy from 'copy-to-clipboard'; import { FormattedMessage } from 'dumi'; import './Icon.less'; const { Search } = Input; const iconTypes = [ 'MinusOutline', 'AlipayCircleFill', 'CheckCircleFill', 'FireFill', 'FaceRecognitionOutline', 'StarFill', 'EyeInvisibleFill', 'SmileFill', 'FrownFill', 'BankcardOutline', 'HeartOutline', 'EyeFill', 'HeartFill', 'DownFill', 'CloseCircleFill', 'VideoOutline', 'CouponOutline', 'ReceiptOutline', 'AntOutline', 'UserCircleOutline', 'PayCircleOutline', 'BillOutline', 'PlayOutline', 'PayOutline', 'MoreOutline', 'ShrinkOutline', 'ArrowsAltOutline', 'StarOutline', 'CheckOutline', 'DeleteOutline', 'LinkOutline', 'InformationCircleOutline', 'GlobalOutline', 'InformationCircleFill', 'ExclamationCircleFill', 'CheckCircleOutline', 'CloseCircleOutline', 'SetOutline', 'QuestionCircleFill', 'QuestionCircleOutline', 'UpCircleOutline', 'FrownOutline', 'DownCircleOutline', 'ExclamationCircleOutline', 'MinusCircleOutline', 'RedoOutline', 'UndoOutline', 'EyeInvisibleOutline', 'ForbidFill', 'PicturesOutline', 'PictureOutline', 'PictureWrongOutline', 'EyeOutline', 'AddCircleOutline', 'ClockCircleFill', 'ClockCircleOutline', 'BellMuteOutline', 'KeyOutline', 'BellOutline', 'SearchOutline', 'CollectMoneyOutline', 'UnorderedListOutline', 'AppstoreOutline', 'ExclamationTriangleOutline', 'AddOutline', 'ScanningOutline', 'ScanCodeOutline', 'ExclamationOutline', 'CloseOutline', 'ScanningFaceOutline', 'LeftOutline', 'DownOutline', 'UpOutline', 'RightOutline', 'KoubeiOutline', 'KoubeiFill', 'AAOutline', 'ArrowDownCircleOutline', 'MovieOutline', 'CompassOutline', 'LoopOutline', 'TextOutline', 'TagOutline', 'FlagOutline', 'EnvironmentOutline', 'CalendarOutline', 'LocationFill', 'PhoneFill', 'PhonebookOutline', 'SmileOutline', 'UserAddOutline', 'FileWrongOutline', 'SoundMuteFill', 'SoundMuteOutline', 'LockOutline', 'UnlockOutline', 'EditSOutline', 'UploadOutline', 'SoundOutline', 'DownlandOutline', 'SendOutline', 'FillinOutline', 'AudioMutedOutline', 'AudioOutline', 'UserOutline', 'UserContactOutline', 'TeamOutline', 'UserSetOutline', 'FileOutline', 'MailOutline', 'TruckOutline', 'MailOpenOutline', 'ChatCheckOutline', 'ChatAddOutline', 'ChatWrongOutline', 'PhonebookFill', 'AddressBookFill', 'CalculatorOutline', 'PieOutline', 'HandPayCircleOutline', 'GiftOutline', 'TransportQRcodeOutline', 'FolderOutline', 'AlipaySquareFill', 'TravelOutline', 'AppOutline', 'HistogramOutline', 'MailFill', 'CameraOutline', 'EditFill', 'SystemQRcodeOutline', 'LockFill', 'AudioFill', 'TeamFill', 'FilterOutline', 'EditSFill', 'LikeOutline', 'TextDeletionOutline', 'StopOutline', 'FingerdownOutline', 'MessageFill', 'LocationOutline', 'ContentOutline', 'ExclamationShieldFill', 'ReceivePaymentOutline', 'ExclamationShieldOutline', 'AddSquareOutline', 'CloseShieldOutline', 'CheckShieldOutline', 'CheckShieldFill', 'ShopbagOutline', 'MessageOutline', ]; const iconLowerCaseTypes = iconTypes.map(item => item.toLowerCase()); function Copy(props) { const type = props.type; const [copied, setCopied] = useState(false); return
{ copy(type); setCopied(true); }} onMouseLeave={() => { setCopied(false); }}>
{ copied ?
copied
: <>
{type}
}
} function Icon() { const [list, setList] = useState(iconTypes); const outlineList = list.filter(item => item.includes('Outline')); const fillList = list.filter(item => item.includes('Fill')); const onInput = (e: any) => { const value = e.target.value.toLowerCase(); setList(iconTypes.filter((_, index) => iconLowerCaseTypes[index].includes(value))); } const onSearch = (v) => { setList(iconTypes.filter((_, index) => iconLowerCaseTypes[index].includes(v.toLowerCase()))); } return <>
{ outlineList.map(item => ) } { fillList.map(item => ) }
}; export default Icon; ================================================ FILE: .dumi/theme/builtins/OverviewCard.tsx ================================================ import { css } from '@emotion/react'; import { Card, ConfigProvider, Tag, theme } from 'antd'; import { history, useLocale } from 'dumi'; import { useContext } from 'react'; import { ComponentSampleImages } from '../common/config/overview'; import useMenu from '../hooks/useMenu'; import useSiteToken from '../hooks/useSiteToken'; import SiteContext from '../slots/SiteContext'; const useStyle = ({ isDark, isMobile }) => { const { token } = useSiteToken(); const { fontFamily } = token; return { mainContainer: css` font-family: ${fontFamily}; `, groupContainer: css``, groupTitle: css` font-size: 24px; font-weight: 500; display: inline-flex; align-items: center; `, cardWrap: css` padding-top: 24px; padding-bottom: 24px; display: flex; width: 100%; flex-wrap: wrap; `, card: css` display: block; width: 25%; min-width: 300px; padding-right: 24px; padding-bottom: 24px; box-sizing: border-box; cursor: pointer; text-align: center; @media only screen and (max-width: 1600px) { width: 33.333%; } @media only screen and (max-width: 1200px) { width: 50%; } @media only screen and (max-width: 880px) { width: 100%; padding-right: 0; } a { all: initial; cursor: pointer; color: ${isDark ? '#fff' : '#333'}; } .ant-card-head-title a { font-weight: 500; } `, antCardWrap: css``, image: css` height: 100px; `, }; }; export default ({ lang }) => { const [menuItems] = useMenu(); const siteConfig = useContext(SiteContext); const isDark = siteConfig.theme.includes('dark'); const isMobile = !!siteConfig.isMobile; const style = useStyle({ isDark, isMobile }); const locale = useLocale(); const isEn = locale.id === 'en'; const imageConfig = isDark ? ComponentSampleImages.dark : ComponentSampleImages.light; return (
{menuItems?.slice(1)?.map((parent) => { return (
{parent.label} {(parent.children || []).length}
{(parent.children || []).map((item) => { return ( { history.push({ pathname: isEn ? item.key + '-en' : item.key, }); }} > ); })}
); })}
); }; ================================================ FILE: .dumi/theme/builtins/Previewer/index.less ================================================ .sourceCode { position: relative; height: calc(100vh - 200px); overflow: hidden; border-radius: 0 0 8px 8px; iframe { height: 100%; border: none; width: 100%; } &-loading { width: 100px; height: 100px; position: absolute; left: 0; right: 0; top: 0; bottom: 0; margin: auto; background-color: rgba(22, 119, 255, 0.8); border-radius: 100%; animation: sk-scaleout 1s infinite ease-in-out; } } .previewer-collapse { &.light { border: 1px solid rgba(5, 5, 5, 0.06) !important; .ant-collapse-content { border-top: 1px solid rgba(5, 5, 5, 0.06) !important; } } } @keyframes sk-scaleout { 0% { transform: scale(0); opacity: 1; } 100% { transform: scale(1); opacity: 0; } } ================================================ FILE: .dumi/theme/builtins/Previewer/index.tsx ================================================ import { Collapse, ConfigProvider } from 'antd'; import { FormattedMessage } from 'dumi'; import React, { useContext, useEffect, useMemo, useRef, useState } from 'react'; import type { SiteContextProps } from '../../slots/SiteContext'; import SiteContext from '../../slots/SiteContext'; import './index.less'; interface IProps { herboxUrl: string; } function buildUrl( basic: string, options: { platform: string; theme: string; } ) { const urlObj = new URL(basic); const searchParams = urlObj.searchParams; const page = searchParams.get('page'); const { platform: supportPlatform, disablePlatformSwitch } = getSupportPlatform(options.platform); searchParams.set('platform', supportPlatform); searchParams.set('theme', options.theme); return { url: urlObj.toString(), page, supportPlatform, disablePlatformSwitch, }; } const DefaultPlatform = 'alipay'; function getSupportPlatform(platform: string) { const supportWechat = true; if (!supportWechat && platform === 'wechat') { return { platform: DefaultPlatform, disablePlatformSwitch: true, }; } return { platform, disablePlatformSwitch: false, }; } const Previewer: React.FC = (props) => { const { theme, platform, updateSiteConfig } = useContext(SiteContext); useEffect(() => { updateSiteConfig({ herboxUrl: props.herboxUrl, }); }, [props.herboxUrl]); const [sourceCodeLoaded, setSourceCodeLoaded] = useState(false); const sourceCodeRef = useRef(null); const basicUrl = window.location.protocol + '//' + window.location.host + props.herboxUrl; const { url, page } = useMemo(() => { return buildUrl(basicUrl, { theme: theme?.find((t) => ['dark', 'light'].includes(t)) || 'light', platform, }); }, [basicUrl, theme, platform]); function sendMsgToSourceCode(theme) { const sourceCodeiframe = sourceCodeRef.current; if (!sourceCodeiframe) return; const setThemeColor = function () { sourceCodeiframe?.contentWindow?.postMessage({ type: 'setIsDarkMode', data: theme.includes('dark'), }); }; sourceCodeiframe.onload = () => { setThemeColor(); setTimeout(setThemeColor, 500); setTimeout(setThemeColor, 1000); }; setThemeColor(); } useEffect(() => { sendMsgToSourceCode(theme); }, [theme, page, platform]); return ( // @ts-ignore {/* @ts-ignore */} , forceRender: true, children: (
{!sourceCodeLoaded &&
}