From bed733dcf038f2d3265eee57b9e995a9fcfee522 Mon Sep 17 00:00:00 2001 From: Konv Suu <2583695112@qq.com> Date: Thu, 13 Nov 2025 17:41:42 +0800 Subject: [PATCH 1/3] chore: clean --- .github/FUNDING.yml | 5 - .github/ISSUE_TEMPLATE/config.yml | 17 - .github/PULL_REQUEST_TEMPLATE/pr_cn.md | 50 - .github/PULL_REQUEST_TEMPLATE/pr_en.md | 51 - .github/issue-close-app.yml | 14 - .github/workflows/codecov.yml | 76 - .github/workflows/emoji-helper.yml | 14 - .github/workflows/issue-close-require.yml | 23 - .github/workflows/issue-labeled.yml | 76 - .github/workflows/issue-open-check.yml | 34 - .github/workflows/lock-issue.yml | 23 - .github/workflows/stale.yml | 19 - .github/workflows/test.yml | 115 - .husky/.gitignore | 1 - BACKERS.md | 55 - CHANGELOG.en-US.md | 239 - CHANGELOG.zh-CN.md | 239 - README-zh_CN.md | 120 - README.md | 107 +- antd-tools/apiCollection.js | 68 - antd-tools/cli/index.js | 27 - antd-tools/cli/run.js | 51 - antd-tools/generator-types/README.md | 1 - antd-tools/generator-types/index.js | 23 - antd-tools/generator-types/src/formatter.ts | 128 - antd-tools/generator-types/src/index.ts | 84 - antd-tools/generator-types/src/parser.ts | 107 - antd-tools/generator-types/src/type.ts | 45 - antd-tools/generator-types/src/utils.ts | 30 - antd-tools/generator-types/src/web-types.ts | 18 - antd-tools/generator-types/tsconfig.json | 13 - antd-tools/getBabelCommonConfig.js | 57 - antd-tools/getNpm.js | 17 - antd-tools/getTSCommonConfig.js | 24 - antd-tools/getWebpackConfig.js | 273 - antd-tools/gulpfile.js | 499 - antd-tools/replaceLib.js | 39 - antd-tools/runCmd.js | 28 - antd-tools/sortApiTable.js | 165 - antd-tools/utils/CleanUpStatsPlugin.js | 38 - antd-tools/utils/get-npm-args.js | 23 - antd-tools/utils/getChangelog.js | 23 - antd-tools/utils/getRunCmdEnv.js | 23 - antd-tools/utils/projectHelper.js | 80 - logo.png => apps/playground/assets/logo.png | Bin apps/playground/package.json | 12 +- components/__tests__/util/domHook.js | 58 - components/_util/ActionButton.tsx | 123 - components/_util/BaseInput.tsx | 168 - components/_util/BaseInputInner.tsx | 96 - components/_util/BaseMixin.ts | 45 - components/_util/EventInterface.ts | 19 - components/_util/KeyCode.ts | 522 - components/_util/Portal.tsx | 72 - components/_util/PortalWrapper.tsx | 191 - components/_util/__mocks__/Portal.tsx | 13 - components/_util/__mocks__/RenderSlot.tsx | 11 - components/_util/__tests__/easings.test.js | 13 - components/_util/__tests__/scrollTo.test.js | 56 - .../__tests__/unreachableException.test.js | 8 - components/_util/__tests__/vNode.test.js | 26 - components/_util/canUseDom.ts | 5 - components/_util/classNames.ts | 27 - components/_util/collapseMotion.tsx | 50 - components/_util/colors.ts | 34 - components/_util/component-classes.ts | 168 - components/_util/copy-to-clipboard/index.ts | 120 - .../copy-to-clipboard/toggle-selection.ts | 41 - components/_util/createContext.ts | 22 - components/_util/createRef.ts | 31 - components/_util/cssinjs/Cache.ts | 32 - components/_util/cssinjs/Keyframes.ts | 19 - components/_util/cssinjs/StyleContext.tsx | 194 - components/_util/cssinjs/extractStyle.ts | 82 - .../_util/cssinjs/hooks/useCSSVarRegister.ts | 108 - .../_util/cssinjs/hooks/useCacheToken.tsx | 254 - .../hooks/useCompatibleInsertionEffect.tsx | 30 - .../cssinjs/hooks/useEffectCleanupRegister.ts | 8 - .../_util/cssinjs/hooks/useGlobalCache.tsx | 115 - components/_util/cssinjs/hooks/useHMR.ts | 34 - .../_util/cssinjs/hooks/useStyleRegister.tsx | 484 - components/_util/cssinjs/index.ts | 62 - components/_util/cssinjs/linters/NaNLinter.ts | 10 - .../cssinjs/linters/contentQuotesLinter.ts | 25 - .../cssinjs/linters/hashedAnimationLinter.ts | 15 - components/_util/cssinjs/linters/index.ts | 7 - components/_util/cssinjs/linters/interface.ts | 9 - .../linters/legacyNotSelectorLinter.ts | 33 - .../linters/logicalPropertiesLinter.ts | 88 - .../cssinjs/linters/parentSelectorLinter.ts | 15 - components/_util/cssinjs/linters/utils.ts | 13 - components/_util/cssinjs/theme/Theme.ts | 38 - components/_util/cssinjs/theme/ThemeCache.ts | 135 - components/_util/cssinjs/theme/createTheme.ts | 26 - components/_util/cssinjs/theme/index.ts | 4 - components/_util/cssinjs/theme/interface.ts | 5 - .../_util/cssinjs/transformers/interface.ts | 5 - .../transformers/legacyLogicalProperties.ts | 173 - .../_util/cssinjs/transformers/px2rem.ts | 77 - components/_util/cssinjs/util/cacheMapUtil.ts | 91 - .../_util/cssinjs/util/css-variables.ts | 58 - components/_util/cssinjs/util/index.ts | 179 - components/_util/debouncedWatch.ts | 89 - components/_util/eagerComputed.ts | 16 - components/_util/easings.ts | 8 - components/_util/env.ts | 10 - components/_util/extendsObject.ts | 21 - components/_util/firstNotUndefined.ts | 10 - components/_util/gapSize.ts | 13 - components/_util/getRequestAnimationFrame.ts | 46 - components/_util/getScroll.ts | 32 - components/_util/getScrollBarSize.ts | 62 - .../_util/hooks/_vueuse/_configurable.ts | 34 - components/_util/hooks/_vueuse/is.ts | 26 - .../_util/hooks/_vueuse/resolveUnref.ts | 9 - .../_util/hooks/_vueuse/tryOnMounted.ts | 15 - .../_util/hooks/_vueuse/tryOnScopeDispose.ts | 15 - components/_util/hooks/_vueuse/types.ts | 142 - .../_util/hooks/_vueuse/unrefElement.ts | 24 - .../_util/hooks/_vueuse/useElementSize.ts | 65 - .../hooks/_vueuse/useMutationObserver.ts | 62 - .../_util/hooks/_vueuse/useResizeObserver.ts | 94 - .../_util/hooks/_vueuse/useSupported.ts | 13 - components/_util/hooks/useBreakpoint.ts | 24 - components/_util/hooks/useDestroyed.ts | 12 - components/_util/hooks/useFlexGapSupport.ts | 11 - components/_util/hooks/useId.ts | 30 - components/_util/hooks/useLayoutEffect.ts | 48 - components/_util/hooks/useLayoutState.ts | 41 - components/_util/hooks/useMemo.ts | 21 - components/_util/hooks/useMergedState.ts | 47 - components/_util/hooks/useRefs.ts | 20 - components/_util/hooks/useScrollLocker.ts | 52 - components/_util/hooks/useState.ts | 17 - components/_util/isNumeric.ts | 5 - components/_util/isValid.ts | 4 - components/_util/isValidValue.ts | 3 - components/_util/json2mq.ts | 60 - components/_util/omit.ts | 10 - components/_util/pickAttrs.ts | 75 - components/_util/placements.ts | 111 - components/_util/props-util/index.ts | 285 - .../_util/props-util/initDefaultProps.ts | 34 - components/_util/raf.ts | 47 - components/_util/reactivePick.ts | 15 - components/_util/requestAnimationTimeout.ts | 23 - components/_util/responsiveObserve.ts | 85 - components/_util/scrollTo.ts | 38 - components/_util/setStyle.ts | 30 - components/_util/shallowequal.ts | 50 - .../__snapshots__/index.test.js.snap | 3 - .../__tests__/index.test.js | 82 - .../_util/static-style-extract/index.tsx | 90 - .../_util/static-style-extract/interface.ts | 3 - components/_util/statusUtils.tsx | 23 - components/_util/styleChecker.ts | 62 - components/_util/supportsPassive.js | 13 - components/_util/throttleByAnimationFrame.ts | 29 - components/_util/toReactive.ts | 42 - components/_util/transButton.tsx | 102 - components/_util/transKeys.ts | 17 - components/_util/transition.tsx | 129 - components/_util/type.ts | 96 - components/_util/unreachableException.ts | 7 - components/_util/util.ts | 101 - components/_util/vnode.ts | 82 - components/_util/vue-types/index.ts | 43 - components/_util/warning.ts | 21 - components/_util/wave/WaveEffect.tsx | 170 - components/_util/wave/index.tsx | 95 - components/_util/wave/style.ts | 38 - components/_util/wave/useWave.ts | 25 - components/_util/wave/util.ts | 35 - .../__tests__/__snapshots__/demo.test.js.snap | 39 - components/affix/__tests__/demo.test.js | 3 - components/affix/__tests__/index.test.js | 116 - components/affix/demo/basic.vue | 33 - components/affix/demo/index.vue | 26 - components/affix/demo/on-change.vue | 28 - components/affix/demo/target.vue | 43 - components/affix/index.en-US.md | 47 - components/affix/index.tsx | 292 - components/affix/index.zh-CN.md | 50 - components/affix/style/index.ts | 32 - components/affix/utils.ts | 113 - .../__tests__/__snapshots__/demo.test.js.snap | 487 - components/alert/__tests__/demo.test.js | 3 - components/alert/__tests__/index.test.js | 71 - components/alert/demo/action.vue | 57 - components/alert/demo/banner.vue | 30 - components/alert/demo/basic.vue | 21 - components/alert/demo/closable.vue | 41 - components/alert/demo/close-text.vue | 21 - components/alert/demo/custom-icon.vue | 73 - components/alert/demo/description.vue | 46 - components/alert/demo/icon.vue | 50 - components/alert/demo/index.vue | 53 - components/alert/demo/smooth-closed.vue | 34 - components/alert/demo/style.vue | 26 - components/alert/index.en-US.md | 36 - components/alert/index.tsx | 206 - components/alert/index.zh-CN.md | 37 - components/alert/style/index.ts | 252 - components/anchor/Anchor.tsx | 333 - components/anchor/AnchorLink.tsx | 112 - components/anchor/__tests__/Anchor.test.js | 213 - .../__tests__/__snapshots__/demo.test.js.snap | 164 - components/anchor/__tests__/demo.test.js | 3 - components/anchor/context.ts | 35 - components/anchor/demo/basic.vue | 42 - components/anchor/demo/customizeHighlight.vue | 58 - components/anchor/demo/horizontal.vue | 64 - components/anchor/demo/index.vue | 41 - components/anchor/demo/onChange.vue | 58 - components/anchor/demo/onClick.vue | 60 - components/anchor/demo/static.vue | 51 - components/anchor/demo/targetOffset.vue | 59 - components/anchor/index.en-US.md | 59 - components/anchor/index.tsx | 22 - components/anchor/index.zh-CN.md | 60 - components/anchor/style/index.ts | 205 - .../__tests__/__snapshots__/demo.test.js.snap | 41 - components/app/__tests__/demo.test.js | 3 - components/app/context.ts | 44 - components/app/demo/basic.vue | 26 - components/app/demo/index.vue | 19 - components/app/demo/myPage.vue | 32 - components/app/index.en-US.md | 130 - components/app/index.tsx | 83 - components/app/index.zh-CN.md | 131 - components/app/style/index.ts | 22 - components/auto-complete/OptGroup.tsx | 14 - components/auto-complete/Option.tsx | 17 - .../__tests__/__snapshots__/demo.test.js.snap | 141 - .../auto-complete/__tests__/demo.test.js | 3 - .../auto-complete/__tests__/index.test.js | 34 - components/auto-complete/demo/allow-clear.vue | 69 - components/auto-complete/demo/basic.vue | 54 - components/auto-complete/demo/border-less.vue | 53 - .../auto-complete/demo/certain-category.vue | 134 - components/auto-complete/demo/custom.vue | 50 - components/auto-complete/demo/index.vue | 48 - .../auto-complete/demo/non-case-sensitive.vue | 42 - components/auto-complete/demo/options.vue | 46 - components/auto-complete/demo/status.vue | 74 - .../auto-complete/demo/uncertain-category.vue | 79 - components/auto-complete/index.en-US.md | 95 - components/auto-complete/index.tsx | 175 - components/auto-complete/index.zh-CN.md | 96 - components/avatar/Avatar.tsx | 222 - components/avatar/AvatarContext.ts | 16 - components/avatar/Group.tsx | 99 - components/avatar/__tests__/Avatar.test.js | 209 - .../__snapshots__/Avatar.test.js.snap | 21 - .../__tests__/__snapshots__/demo.test.js.snap | 56 - components/avatar/__tests__/demo.test.js | 3 - components/avatar/demo/badge.vue | 35 - components/avatar/demo/basic.vue | 53 - components/avatar/demo/dynamic.vue | 49 - components/avatar/demo/group.vue | 101 - components/avatar/demo/index.vue | 38 - components/avatar/demo/responsive.vue | 28 - components/avatar/demo/type.vue | 39 - components/avatar/index.en-US.md | 37 - components/avatar/index.ts | 20 - components/avatar/index.zh-CN.md | 42 - components/avatar/style/index.ts | 211 - components/badge/Badge.tsx | 239 - components/badge/Ribbon.tsx | 62 - components/badge/ScrollNumber.tsx | 86 - components/badge/SingleNumber.tsx | 133 - .../__tests__/__snapshots__/demo.test.js.snap | 280 - .../__snapshots__/index.test.js.snap | 49 - components/badge/__tests__/demo.test.js | 3 - components/badge/__tests__/index.test.js | 223 - components/badge/demo/basic.vue | 35 - components/badge/demo/change.vue | 52 - components/badge/demo/colors.vue | 51 - components/badge/demo/dot.vue | 29 - components/badge/demo/index.vue | 63 - components/badge/demo/link.vue | 24 - components/badge/demo/no-wrapper.vue | 31 - components/badge/demo/overflow.vue | 32 - components/badge/demo/ribbon.vue | 45 - components/badge/demo/status.vue | 33 - components/badge/demo/title.vue | 23 - components/badge/index.en_US.md | 48 - components/badge/index.ts | 17 - components/badge/index.zh-CN.md | 49 - components/badge/style/index.ts | 380 - components/breadcrumb/Breadcrumb.tsx | 171 - components/breadcrumb/BreadcrumbItem.tsx | 89 - components/breadcrumb/BreadcrumbSeparator.tsx | 32 - .../breadcrumb/__tests__/Breadcrumb.test.js | 131 - .../__snapshots__/Breadcrumb.test.js.snap | 49 - .../__tests__/__snapshots__/demo.test.js.snap | 65 - components/breadcrumb/__tests__/demo.test.js | 3 - components/breadcrumb/demo/basic.vue | 26 - components/breadcrumb/demo/index.vue | 35 - components/breadcrumb/demo/overlay.vue | 41 - components/breadcrumb/demo/router.vue | 74 - .../breadcrumb/demo/separator-indepent.vue | 29 - components/breadcrumb/demo/separator.vue | 34 - components/breadcrumb/demo/withIcon.vue | 33 - components/breadcrumb/index.en-US.md | 119 - components/breadcrumb/index.ts | 26 - components/breadcrumb/index.zh-CN.md | 120 - components/breadcrumb/style/index.ts | 129 - components/button/LoadingIcon.tsx | 68 - .../__tests__/__snapshots__/demo.test.js.snap | 406 - .../__snapshots__/index.test.js.snap | 65 - components/button/__tests__/demo.test.js | 3 - components/button/__tests__/index.test.js | 299 - components/button/__tests__/wave.test.js | 28 - components/button/button-group.tsx | 65 - components/button/button.tsx | 246 - components/button/buttonTypes.ts | 47 - components/button/demo/basic.vue | 27 - components/button/demo/block.vue | 26 - components/button/demo/button-group.vue | 82 - components/button/demo/danger.vue | 27 - components/button/demo/disabled.vue | 59 - components/button/demo/ghost.vue | 28 - components/button/demo/icon.vue | 51 - components/button/demo/index.vue | 63 - components/button/demo/loading.vue | 56 - components/button/demo/multiple.vue | 44 - components/button/demo/size.vue | 72 - components/button/index.en-US.md | 72 - components/button/index.ts | 25 - components/button/index.zh-CN.md | 75 - components/button/style/compactCmp.ts | 72 - components/button/style/group.ts | 81 - components/button/style/index.ts | 536 - components/button/style/token.ts | 234 - components/calendar/Header.tsx | 205 - .../__tests__/__snapshots__/demo.test.js.snap | 2029 - .../__snapshots__/index.test.js.snap | 398 - components/calendar/__tests__/demo.test.js | 3 - components/calendar/__tests__/index.test.js | 364 - components/calendar/date-fns.tsx | 9 - components/calendar/dayjs.tsx | 9 - components/calendar/demo/basic.vue | 28 - components/calendar/demo/card.vue | 31 - components/calendar/demo/customize-header.vue | 105 - components/calendar/demo/index.vue | 32 - components/calendar/demo/notice-calendar.vue | 98 - components/calendar/demo/select.vue | 36 - components/calendar/generateCalendar.tsx | 371 - components/calendar/index.en-US.md | 68 - components/calendar/index.tsx | 4 - components/calendar/index.zh-CN.md | 67 - components/calendar/locale/ar_EG.ts | 3 - components/calendar/locale/az_AZ.ts | 3 - components/calendar/locale/bg_BG.ts | 3 - components/calendar/locale/bn_BD.ts | 3 - components/calendar/locale/by_BY.ts | 3 - components/calendar/locale/ca_ES.ts | 3 - components/calendar/locale/cs_CZ.ts | 3 - components/calendar/locale/da_DK.ts | 3 - components/calendar/locale/de_DE.ts | 3 - components/calendar/locale/el_GR.ts | 3 - components/calendar/locale/en_GB.ts | 3 - components/calendar/locale/en_US.ts | 3 - components/calendar/locale/es_ES.ts | 3 - components/calendar/locale/et_EE.ts | 3 - components/calendar/locale/fa_IR.ts | 3 - components/calendar/locale/fi_FI.ts | 3 - components/calendar/locale/fr_BE.ts | 3 - components/calendar/locale/fr_CA.ts | 3 - components/calendar/locale/fr_FR.ts | 3 - components/calendar/locale/ga_IE.ts | 3 - components/calendar/locale/gl_ES.ts | 3 - components/calendar/locale/he_IL.ts | 3 - components/calendar/locale/hi_IN.ts | 3 - components/calendar/locale/hr_HR.ts | 3 - components/calendar/locale/hu_HU.ts | 3 - components/calendar/locale/id_ID.ts | 3 - components/calendar/locale/is_IS.ts | 3 - components/calendar/locale/it_IT.ts | 3 - components/calendar/locale/ja_JP.ts | 3 - components/calendar/locale/ka_GE.ts | 3 - components/calendar/locale/kk_KZ.ts | 3 - components/calendar/locale/km_KH.ts | 3 - components/calendar/locale/kmr_IQ.ts | 3 - components/calendar/locale/kn_IN.ts | 3 - components/calendar/locale/ko_KR.ts | 3 - components/calendar/locale/lt_LT.ts | 3 - components/calendar/locale/lv_LV.ts | 3 - components/calendar/locale/mk_MK.ts | 3 - components/calendar/locale/ml_IN.ts | 3 - components/calendar/locale/mn_MN.ts | 3 - components/calendar/locale/ms_MY.ts | 3 - components/calendar/locale/nb_NO.ts | 3 - components/calendar/locale/nl_BE.ts | 3 - components/calendar/locale/nl_NL.ts | 3 - components/calendar/locale/pl_PL.ts | 3 - components/calendar/locale/pt_BR.ts | 3 - components/calendar/locale/pt_PT.ts | 3 - components/calendar/locale/ro_RO.ts | 3 - components/calendar/locale/ru_RU.ts | 3 - components/calendar/locale/sk_SK.ts | 3 - components/calendar/locale/sl_SI.ts | 3 - components/calendar/locale/sr_RS.ts | 3 - components/calendar/locale/sv_SE.ts | 3 - components/calendar/locale/ta_IN.ts | 3 - components/calendar/locale/th_TH.ts | 3 - components/calendar/locale/tr_TR.ts | 3 - components/calendar/locale/uk_UA.ts | 3 - components/calendar/locale/ur_PK.ts | 3 - components/calendar/locale/vi_VN.ts | 3 - components/calendar/locale/zh_CN.ts | 3 - components/calendar/locale/zh_TW.ts | 3 - components/calendar/moment.tsx | 10 - components/calendar/style/index.tsx | 218 - components/card/Card.tsx | 195 - components/card/Grid.tsx | 27 - components/card/Meta.tsx | 57 - .../__tests__/__snapshots__/demo.test.js.snap | 366 - .../__snapshots__/index.test.js.snap | 42 - components/card/__tests__/demo.test.js | 3 - components/card/__tests__/index.test.js | 83 - components/card/demo/basic.vue | 34 - components/card/demo/border-less.vue | 26 - components/card/demo/flexible-content.vue | 28 - components/card/demo/grid-card.vue | 30 - components/card/demo/in-column.vue | 39 - components/card/demo/index.vue | 48 - components/card/demo/inner.vue | 37 - components/card/demo/loading.vue | 30 - components/card/demo/meta.vue | 42 - components/card/demo/simple.vue | 25 - components/card/demo/tabs.vue | 97 - components/card/index.en-US.md | 59 - components/card/index.ts | 25 - components/card/index.zh-CN.md | 60 - components/card/style/index.tsx | 387 - .../__tests__/__snapshots__/demo.test.js.snap | 439 - .../__snapshots__/index.test.js.snap | 65 - components/carousel/__tests__/demo.test.js | 3 - components/carousel/__tests__/index.test.js | 142 - components/carousel/demo/abstract01.jpg | Bin 26139 -> 0 bytes components/carousel/demo/abstract02.jpg | Bin 10288 -> 0 bytes components/carousel/demo/abstract03.jpg | Bin 5705 -> 0 bytes components/carousel/demo/abstract04.jpg | Bin 34603 -> 0 bytes components/carousel/demo/autoplay.vue | 40 - components/carousel/demo/basic.vue | 48 - components/carousel/demo/customArrows.vue | 73 - components/carousel/demo/customPaging.vue | 78 - components/carousel/demo/fade.vue | 41 - components/carousel/demo/index.vue | 36 - components/carousel/demo/position.vue | 52 - components/carousel/index.en-US.md | 38 - components/carousel/index.tsx | 161 - components/carousel/index.zh-CN.md | 39 - components/carousel/style/index.tsx | 350 - .../__tests__/__snapshots__/demo.test.js.snap | 229 - .../__snapshots__/index.test.js.snap | 160 - components/cascader/__tests__/demo.test.js | 3 - components/cascader/__tests__/index.test.js | 227 - components/cascader/demo/basic.vue | 59 - components/cascader/demo/change-on-select.vue | 65 - components/cascader/demo/custom-render.vue | 86 - components/cascader/demo/custom-trigger.vue | 74 - components/cascader/demo/disabled-option.vue | 60 - components/cascader/demo/fields-name.vue | 64 - components/cascader/demo/hover.vue | 65 - components/cascader/demo/index.vue | 60 - components/cascader/demo/lazy.vue | 68 - components/cascader/demo/multiple.vue | 80 - components/cascader/demo/search.vue | 76 - components/cascader/demo/size.vue | 67 - components/cascader/demo/suffix.vue | 77 - components/cascader/demo/tagRender.vue | 84 - components/cascader/index.en-US.md | 97 - components/cascader/index.tsx | 355 - components/cascader/index.zh-CN.md | 100 - components/cascader/style/index.ts | 165 - components/checkbox/Checkbox.tsx | 141 - components/checkbox/Group.tsx | 131 - .../__tests__/__snapshots__/demo.test.js.snap | 55 - .../__snapshots__/group.test.js.snap | 3 - .../checkbox/__tests__/checkbox.test.js | 41 - components/checkbox/__tests__/demo.test.js | 3 - components/checkbox/__tests__/group.test.js | 129 - components/checkbox/demo/basic.vue | 25 - components/checkbox/demo/check-all.vue | 54 - components/checkbox/demo/controller.vue | 51 - components/checkbox/demo/disabled.vue | 30 - components/checkbox/demo/group.vue | 55 - components/checkbox/demo/index.vue | 54 - components/checkbox/demo/layout.vue | 43 - components/checkbox/index.en-US.md | 58 - components/checkbox/index.ts | 19 - components/checkbox/index.zh-CN.md | 59 - components/checkbox/interface.ts | 89 - components/checkbox/style/index.ts | 303 - components/col/index.ts | 4 - components/col/style/index.ts | 4 - components/collapse/Collapse.tsx | 203 - components/collapse/CollapsePanel.tsx | 122 - components/collapse/PanelContent.tsx | 34 - .../__tests__/__snapshots__/demo.test.js.snap | 286 - .../__snapshots__/index.test.js.snap | 15 - components/collapse/__tests__/demo.test.js | 3 - components/collapse/__tests__/index.test.js | 17 - components/collapse/commonProps.ts | 56 - components/collapse/demo/accordion.vue | 36 - components/collapse/demo/basic.vue | 41 - components/collapse/demo/borderless.vue | 36 - components/collapse/demo/collapsible.vue | 47 - components/collapse/demo/custom.vue | 47 - components/collapse/demo/extra.vue | 57 - components/collapse/demo/ghost.vue | 40 - components/collapse/demo/index.vue | 43 - components/collapse/demo/mix.vue | 45 - components/collapse/demo/noarrow.vue | 36 - components/collapse/index.en-US.md | 47 - components/collapse/index.ts | 20 - components/collapse/index.zh-CN.md | 47 - components/collapse/style/index.tsx | 271 - .../__tests__/__snapshots__/demo.test.js.snap | 195 - .../__snapshots__/index.test.js.snap | 81 - components/comment/__tests__/demo.test.js | 3 - components/comment/__tests__/index.test.js | 115 - components/comment/demo/basic.vue | 90 - components/comment/demo/editor.vue | 85 - components/comment/demo/index.vue | 30 - components/comment/demo/list.vue | 70 - components/comment/demo/nested.vue | 88 - components/comment/index.en-US.md | 22 - components/comment/index.tsx | 118 - components/comment/index.zh-CN.md | 23 - components/comment/style/index.ts | 160 - components/components.ts | 269 - components/config-provider/DisabledContext.ts | 17 - components/config-provider/SizeContext.ts | 16 - .../config-provider/__tests__/index.test.js | 55 - components/config-provider/context.ts | 189 - components/config-provider/cssVariables.ts | 103 - components/config-provider/demo/direction.vue | 560 - components/config-provider/demo/index.vue | 28 - components/config-provider/demo/locale.vue | 210 - components/config-provider/demo/size.vue | 93 - components/config-provider/demo/theme.vue | 58 - .../config-provider/hooks/useConfigInject.ts | 72 - .../config-provider/hooks/useCssVarCls.ts | 16 - components/config-provider/hooks/useSize.ts | 32 - components/config-provider/hooks/useTheme.ts | 68 - .../config-provider/hooks/useThemeKey.ts | 6 - components/config-provider/index.en-US.md | 115 - components/config-provider/index.tsx | 329 - components/config-provider/index.zh-CN.md | 116 - components/config-provider/renderEmpty.tsx | 35 - components/config-provider/style/index.ts | 31 - components/date-picker/PickerButton.tsx | 8 - components/date-picker/PickerTag.tsx | 6 - .../date-picker/__tests__/DatePicker.test.js | 66 - .../__tests__/QuarterPicker.test.js | 33 - .../date-picker/__tests__/RangePicker.test.js | 93 - .../date-picker/__tests__/WeekPicker.test.js | 27 - .../__snapshots__/DatePicker.test.js.snap | 186 - .../__snapshots__/QuarterPicker.test.js.snap | 12 - .../__snapshots__/RangePicker.test.js.snap | 221 - .../__snapshots__/WeekPicker.test.js.snap | 12 - .../__tests__/__snapshots__/demo.test.js.snap | 937 - .../__snapshots__/other.test.js.snap | 45 - components/date-picker/__tests__/demo.test.js | 3 - .../date-picker/__tests__/mount.test.js | 11 - .../date-picker/__tests__/other.test.js | 73 - components/date-picker/__tests__/utils.js | 60 - components/date-picker/date-fns.tsx | 37 - components/date-picker/dayjs.tsx | 38 - components/date-picker/demo/basic.vue | 36 - components/date-picker/demo/bordered.vue | 45 - components/date-picker/demo/date-render.vue | 52 - components/date-picker/demo/disabled-date.vue | 88 - components/date-picker/demo/disabled.vue | 41 - components/date-picker/demo/extra-footer.vue | 37 - components/date-picker/demo/format.vue | 51 - components/date-picker/demo/index.vue | 72 - components/date-picker/demo/mode.vue | 62 - components/date-picker/demo/placement.vue | 39 - .../date-picker/demo/presetted-ranges.vue | 64 - components/date-picker/demo/range-picker.vue | 37 - .../date-picker/demo/select-in-range.vue | 60 - components/date-picker/demo/size.vue | 35 - components/date-picker/demo/start-end.vue | 84 - components/date-picker/demo/status.vue | 27 - components/date-picker/demo/suffix.vue | 57 - components/date-picker/demo/switchable.vue | 38 - components/date-picker/demo/text.vue | 40 - components/date-picker/demo/time.vue | 51 - .../generatePicker/generateRangePicker.tsx | 255 - .../generatePicker/generateSinglePicker.tsx | 289 - .../date-picker/generatePicker/index.tsx | 85 - .../date-picker/generatePicker/interface.ts | 74 - .../date-picker/generatePicker/props.ts | 300 - components/date-picker/index.en-US.md | 230 - components/date-picker/index.tsx | 4 - components/date-picker/index.zh-CN.md | 229 - components/date-picker/locale/ar_EG.ts | 24 - components/date-picker/locale/az_AZ.ts | 16 - components/date-picker/locale/bg_BG.ts | 20 - components/date-picker/locale/bn_BD.ts | 27 - components/date-picker/locale/by_BY.ts | 23 - components/date-picker/locale/ca_ES.ts | 20 - components/date-picker/locale/cs_CZ.ts | 20 - components/date-picker/locale/da_DK.ts | 20 - components/date-picker/locale/de_DE.ts | 20 - components/date-picker/locale/el_GR.ts | 20 - components/date-picker/locale/en_GB.ts | 28 - components/date-picker/locale/en_US.ts | 28 - components/date-picker/locale/es_ES.ts | 20 - components/date-picker/locale/et_EE.ts | 20 - components/date-picker/locale/example.json | 40 - components/date-picker/locale/fa_IR.ts | 27 - components/date-picker/locale/fi_FI.ts | 20 - components/date-picker/locale/fr_BE.ts | 20 - components/date-picker/locale/fr_CA.ts | 27 - components/date-picker/locale/fr_FR.ts | 27 - components/date-picker/locale/ga_IE.ts | 27 - components/date-picker/locale/gl_ES.ts | 20 - components/date-picker/locale/he_IL.ts | 20 - components/date-picker/locale/hi_IN.ts | 27 - components/date-picker/locale/hr_HR.ts | 27 - components/date-picker/locale/hu_HU.ts | 20 - components/date-picker/locale/id_ID.ts | 20 - components/date-picker/locale/is_IS.ts | 20 - components/date-picker/locale/it_IT.ts | 20 - components/date-picker/locale/ja_JP.ts | 28 - components/date-picker/locale/ka_GE.ts | 23 - components/date-picker/locale/kk_KZ.ts | 27 - components/date-picker/locale/km_KH.ts | 27 - components/date-picker/locale/kmr_IQ.ts | 19 - components/date-picker/locale/kn_IN.ts | 20 - components/date-picker/locale/ko_KR.ts | 20 - components/date-picker/locale/lt_LT.ts | 27 - components/date-picker/locale/lv_LV.ts | 20 - components/date-picker/locale/mk_MK.ts | 20 - components/date-picker/locale/ml_IN.ts | 27 - components/date-picker/locale/mn_MN.ts | 20 - components/date-picker/locale/ms_MY.ts | 20 - components/date-picker/locale/nb_NO.ts | 27 - components/date-picker/locale/nl_BE.ts | 27 - components/date-picker/locale/nl_NL.ts | 27 - components/date-picker/locale/pl_PL.ts | 20 - components/date-picker/locale/pt_BR.ts | 20 - components/date-picker/locale/pt_PT.ts | 47 - components/date-picker/locale/ro_RO.ts | 20 - components/date-picker/locale/ru_RU.ts | 29 - components/date-picker/locale/sk_SK.ts | 20 - components/date-picker/locale/sl_SI.ts | 45 - components/date-picker/locale/sr_RS.ts | 27 - components/date-picker/locale/sv_SE.ts | 27 - components/date-picker/locale/ta_IN.ts | 21 - components/date-picker/locale/th_TH.ts | 27 - components/date-picker/locale/tr_TR.ts | 28 - components/date-picker/locale/uk_UA.ts | 20 - components/date-picker/locale/ur_PK.ts | 27 - components/date-picker/locale/vi_VN.ts | 20 - components/date-picker/locale/zh_CN.ts | 31 - components/date-picker/locale/zh_TW.ts | 30 - components/date-picker/moment.tsx | 40 - components/date-picker/style/index.ts | 1452 - components/date-picker/util.ts | 102 - components/descriptions/Cell.tsx | 75 - components/descriptions/Row.tsx | 138 - .../__tests__/__snapshots__/demo.test.js.snap | 527 - .../__snapshots__/index.test.js.snap | 182 - .../descriptions/__tests__/demo.test.js | 3 - .../descriptions/__tests__/index.test.js | 292 - components/descriptions/demo/basic.vue | 28 - components/descriptions/demo/border.vue | 47 - components/descriptions/demo/index.vue | 42 - components/descriptions/demo/responsive.vue | 45 - components/descriptions/demo/size.vue | 76 - .../descriptions/demo/vertical-border.vue | 47 - components/descriptions/demo/vertical.vue | 29 - components/descriptions/index.en-US.md | 40 - components/descriptions/index.tsx | 264 - components/descriptions/index.zh-CN.md | 41 - components/descriptions/style/index.ts | 210 - .../__tests__/__snapshots__/demo.test.js.snap | 54 - components/divider/__tests__/demo.test.js | 3 - components/divider/__tests__/index.test.js | 6 - components/divider/demo/customize-style.vue | 23 - components/divider/demo/horizontal.vue | 38 - components/divider/demo/index.vue | 33 - components/divider/demo/vertical.vue | 26 - components/divider/demo/with-text.vue | 52 - components/divider/index.en-US.md | 24 - components/divider/index.tsx | 97 - components/divider/index.zh-CN.md | 25 - components/divider/style/index.ts | 167 - components/drawer/__tests__/Drawer.test.js | 135 - .../drawer/__tests__/DrawerEvent.test.js | 146 - .../drawer/__tests__/MultiDrawer.test.js | 161 - .../__snapshots__/Drawer.test.js.snap | 117 - .../__snapshots__/DrawerEvent.test.js.snap | 28 - .../__tests__/__snapshots__/demo.test.js.snap | 112 - components/drawer/__tests__/demo.test.js | 3 - components/drawer/demo/basic.vue | 47 - .../drawer/demo/descriptionItem/index.vue | 18 - components/drawer/demo/extra.vue | 50 - components/drawer/demo/form-in-drawer.vue | 141 - components/drawer/demo/index.vue | 44 - components/drawer/demo/multi-level-drawer.vue | 56 - components/drawer/demo/placement.vue | 52 - components/drawer/demo/render-in-current.vue | 60 - components/drawer/demo/size.vue | 48 - components/drawer/demo/user-profile.vue | 152 - components/drawer/index.en-US.md | 60 - components/drawer/index.tsx | 438 - components/drawer/index.zh-CN.md | 59 - components/drawer/style/index.ts | 230 - components/drawer/style/motion.ts | 134 - .../__tests__/__snapshots__/demo.test.js.snap | 181 - .../dropdown-button.test.js.snap | 9 - components/dropdown/__tests__/demo.test.js | 3 - .../__tests__/dropdown-button.test.js | 59 - components/dropdown/demo/arrow-center.vue | 43 - components/dropdown/demo/arrow.vue | 43 - components/dropdown/demo/basic.vue | 42 - components/dropdown/demo/context-menu.vue | 40 - components/dropdown/demo/dropdown-button.vue | 118 - components/dropdown/demo/event.vue | 41 - components/dropdown/demo/index.vue | 52 - components/dropdown/demo/item.vue | 45 - components/dropdown/demo/loading.vue | 74 - components/dropdown/demo/overlay-visible.vue | 44 - components/dropdown/demo/placement.vue | 64 - components/dropdown/demo/sub-menu.vue | 43 - components/dropdown/demo/trigger.vue | 40 - components/dropdown/dropdown-button.tsx | 119 - components/dropdown/dropdown.tsx | 217 - components/dropdown/index.en-US.md | 64 - components/dropdown/index.ts | 22 - components/dropdown/index.zh-CN.md | 68 - components/dropdown/props.ts | 95 - components/dropdown/style/button.ts | 26 - components/dropdown/style/index.ts | 458 - components/dropdown/style/status.ts | 25 - .../__tests__/__snapshots__/demo.test.js.snap | 255 - components/empty/__tests__/demo.test.js | 3 - components/empty/__tests__/index.test.js | 25 - components/empty/demo/basic.vue | 21 - components/empty/demo/config-provider.vue | 66 - components/empty/demo/customize.vue | 34 - components/empty/demo/description.vue | 21 - components/empty/demo/index.vue | 33 - components/empty/demo/simple.vue | 24 - components/empty/empty.tsx | 75 - components/empty/index.en-US.md | 38 - components/empty/index.tsx | 91 - components/empty/index.zh-CN.md | 39 - components/empty/simple.tsx | 40 - components/empty/style/index.ts | 80 - .../__tests__/__snapshots__/demo.test.js.snap | 146 - components/flex/__tests__/demo.test.js | 3 - components/flex/__tests__/index.test.js | 58 - components/flex/demo/align.vue | 56 - components/flex/demo/basic.vue | 43 - components/flex/demo/combination.vue | 48 - components/flex/demo/gap.vue | 47 - components/flex/demo/index.vue | 30 - components/flex/demo/wrap.vue | 23 - components/flex/index.en-US.md | 32 - components/flex/index.tsx | 58 - components/flex/index.zh-CN.md | 33 - components/flex/interface.ts | 16 - components/flex/style/index.ts | 111 - components/flex/utils.ts | 68 - components/float-button/BackTop.tsx | 145 - components/float-button/FloatButton.tsx | 104 - .../float-button/FloatButtonContent.tsx | 36 - components/float-button/FloatButtonGroup.tsx | 141 - .../__tests__/__snapshots__/demo.test.js.snap | 283 - .../__snapshots__/index.test.js.snap | 45 - .../float-button/__tests__/demo.test.js | 3 - .../float-button/__tests__/index.test.js | 48 - .../float-button/__tests__/wave.test.js | 79 - components/float-button/context.ts | 19 - components/float-button/demo/back-top.vue | 31 - components/float-button/demo/badge.vue | 42 - components/float-button/demo/basic.vue | 26 - components/float-button/demo/description.vue | 61 - components/float-button/demo/group-menu.vue | 48 - components/float-button/demo/group.vue | 49 - components/float-button/demo/index.vue | 93 - components/float-button/demo/shape.vue | 51 - components/float-button/demo/tooltip.vue | 37 - components/float-button/demo/type.vue | 46 - components/float-button/index.en-US.md | 60 - components/float-button/index.ts | 42 - components/float-button/index.zh-CN.md | 63 - components/float-button/interface.ts | 70 - components/float-button/style/index.ts | 396 - components/float-button/util.ts | 10 - components/form/ErrorList.tsx | 67 - components/form/Form.tsx | 413 - components/form/FormItem.tsx | 544 - components/form/FormItemContext.ts | 127 - components/form/FormItemInput.tsx | 113 - components/form/FormItemLabel.tsx | 116 - .../__tests__/__snapshots__/demo.test.js.snap | 2680 - components/form/__tests__/demo.test.js | 3 - components/form/context.ts | 77 - components/form/demo/advanced-search.vue | 99 - components/form/demo/basic.vue | 73 - components/form/demo/custom-validation.vue | 117 - .../form/demo/customized-form-controls.vue | 50 - components/form/demo/disabled.vue | 105 - components/form/demo/dynamic-form-item.vue | 132 - .../form/demo/dynamic-form-items-complex.vue | 121 - components/form/demo/dynamic-form-items.vue | 94 - components/form/demo/dynamic-rule.vue | 83 - components/form/demo/form-context.vue | 129 - components/form/demo/form-in-modal.vue | 86 - components/form/demo/horizontal-login.vue | 66 - components/form/demo/index.vue | 102 - components/form/demo/inline-login.vue | 77 - components/form/demo/label-width.vue | 70 - components/form/demo/layout.vue | 69 - components/form/demo/nest-messages.vue | 75 - components/form/demo/normal-login.vue | 100 - components/form/demo/price-input.vue | 40 - .../form/demo/time-related-controls.vue | 110 - components/form/demo/useForm-basic.vue | 88 - components/form/demo/useForm-merge.vue | 95 - components/form/demo/useForm-nested.vue | 76 - components/form/demo/useForm-trigger.vue | 80 - components/form/demo/validate-other.vue | 182 - components/form/demo/validate-static.vue | 162 - components/form/demo/validation.vue | 127 - components/form/index.en-US.md | 253 - components/form/index.tsx | 29 - components/form/index.zh-CN.md | 251 - components/form/interface.ts | 227 - components/form/style/explain.ts | 56 - components/form/style/index.ts | 494 - components/form/useForm.ts | 392 - components/form/utils/asyncUtil.ts | 34 - components/form/utils/messages.ts | 49 - components/form/utils/typeUtil.ts | 7 - components/form/utils/useDebounce.ts | 18 - components/form/utils/validateUtil.ts | 242 - components/form/utils/valueUtil.ts | 88 - components/grid/Col.tsx | 159 - components/grid/Row.tsx | 198 - .../__tests__/__snapshots__/demo.test.js.snap | 345 - .../__snapshots__/index.test.js.snap | 26 - components/grid/__tests__/demo.test.js | 3 - components/grid/__tests__/index.test.js | 36 - components/grid/context.ts | 25 - components/grid/demo/basic.vue | 42 - components/grid/demo/flex-align.vue | 75 - components/grid/demo/flex-order.vue | 42 - components/grid/demo/flex-stretch.vue | 41 - components/grid/demo/flex.vue | 77 - components/grid/demo/gutter.vue | 96 - components/grid/demo/index.vue | 52 - components/grid/demo/offset.vue | 33 - components/grid/demo/playfround.vue | 146 - components/grid/demo/responsive-more.vue | 26 - components/grid/demo/responsive.vue | 25 - components/grid/demo/sort.vue | 26 - components/grid/demo/use-breakpoint.vue | 32 - components/grid/index.en-US.md | 67 - components/grid/index.ts | 11 - components/grid/index.zh-CN.md | 64 - components/grid/style/index.ts | 181 - .../__tests__/__snapshots__/demo.test.js.snap | 40 - components/icon/__tests__/demo.test.js | 3 - components/icon/demo/basic.vue | 37 - components/icon/demo/custom.vue | 90 - components/icon/demo/iconfont.vue | 38 - components/icon/demo/index.vue | 32 - components/icon/demo/two-tone.vue | 34 - components/icon/index.en-US.md | 240 - components/icon/index.tsx | 11 - components/icon/index.zh-CN.md | 241 - components/image/PreviewGroup.tsx | 76 - .../__tests__/__snapshots__/demo.test.js.snap | 115 - components/image/__tests__/demo.test.js | 3 - components/image/__tests__/index.test.js | 32 - components/image/demo/basic.vue | 24 - components/image/demo/controlled-preview.vue | 39 - components/image/demo/fallback.vue | 26 - components/image/demo/index.vue | 39 - components/image/demo/placeholder.vue | 39 - .../image/demo/preview-group-visible.vue | 43 - components/image/demo/preview-group.vue | 24 - components/image/demo/preview-src.vue | 27 - components/image/index.en-US.md | 48 - components/image/index.tsx | 84 - components/image/index.zh-CN.md | 49 - components/image/style/index.ts | 321 - components/index.ts | 34 - .../__tests__/__snapshots__/demo.test.js.snap | 282 - .../input-number/__tests__/demo.test.js | 3 - .../input-number/__tests__/index.test.js | 27 - components/input-number/demo/addon.vue | 57 - components/input-number/demo/basic.vue | 28 - components/input-number/demo/borderless.vue | 27 - components/input-number/demo/digit.vue | 34 - components/input-number/demo/disabled.vue | 35 - components/input-number/demo/formatter.vue | 39 - components/input-number/demo/icon.vue | 35 - components/input-number/demo/index.vue | 52 - components/input-number/demo/keyboard.vue | 28 - components/input-number/demo/out-of-range.vue | 28 - components/input-number/demo/prefix.vue | 38 - components/input-number/demo/size.vue | 31 - components/input-number/demo/status.vue | 34 - components/input-number/index.en-US.md | 65 - components/input-number/index.tsx | 250 - components/input-number/index.zh-CN.md | 68 - components/input-number/src/InputNumber.tsx | 592 - components/input-number/src/StepHandler.tsx | 109 - .../input-number/src/hooks/useCursor.ts | 78 - components/input-number/src/hooks/useFrame.ts | 25 - .../input-number/src/utils/MiniDecimal.ts | 309 - .../input-number/src/utils/numberUtil.ts | 115 - .../input-number/src/utils/supportUtil.ts | 3 - components/input-number/style/index.tsx | 416 - components/input/ClearableLabeledInput.tsx | 124 - components/input/Group.tsx | 50 - components/input/Input.tsx | 205 - components/input/Password.tsx | 110 - components/input/ResizableTextArea.tsx | 188 - components/input/Search.tsx | 169 - components/input/TextArea.tsx | 317 - components/input/__tests__/Search.test.js | 134 - .../__snapshots__/Search.test.js.snap | 5 - .../__tests__/__snapshots__/demo.test.js.snap | 236 - .../__snapshots__/index.test.js.snap | 15 - components/input/__tests__/demo.test.js | 3 - components/input/__tests__/index.test.js | 192 - components/input/calculateNodeHeight.tsx | 172 - components/input/demo/addon.vue | 60 - components/input/demo/allow-clear.vue | 30 - components/input/demo/autosize-textarea.vue | 39 - components/input/demo/basic.vue | 34 - components/input/demo/borderless.vue | 24 - components/input/demo/group.vue | 210 - components/input/demo/index.vue | 63 - components/input/demo/password-input.vue | 51 - components/input/demo/presuffix.vue | 40 - .../input/demo/search-input-loading.vue | 34 - components/input/demo/search-input.vue | 60 - components/input/demo/show-count.vue | 28 - components/input/demo/size.vue | 34 - components/input/demo/status.vue | 34 - components/input/demo/textarea.vue | 27 - components/input/demo/tooltip.vue | 95 - components/input/index.en-US.md | 101 - components/input/index.ts | 36 - components/input/index.zh-CN.md | 102 - components/input/inputProps.ts | 40 - components/input/style/index.ts | 973 - components/input/util.ts | 20 - components/layout/Sider.tsx | 233 - .../__tests__/__snapshots__/demo.test.js.snap | 584 - components/layout/__tests__/demo.test.js | 3 - components/layout/__tests__/index.test.js | 69 - components/layout/demo/basic.vue | 85 - components/layout/demo/custom-trigger.vue | 88 - components/layout/demo/fixed-sider.vue | 195 - components/layout/demo/fixed.vue | 66 - components/layout/demo/index.vue | 84 - components/layout/demo/responsive.vue | 91 - components/layout/demo/side.vue | 105 - components/layout/demo/top-side-2.vue | 119 - components/layout/demo/top-side.vue | 121 - components/layout/demo/top.vue | 75 - components/layout/index.en-US.md | 122 - components/layout/index.ts | 27 - components/layout/index.zh-CN.md | 123 - components/layout/injectionKey.ts | 12 - components/layout/layout.tsx | 112 - components/layout/style/index.ts | 226 - components/layout/style/light.ts | 27 - components/list/Item.tsx | 111 - components/list/ItemMeta.tsx | 51 - .../__tests__/__snapshots__/demo.test.js.snap | 498 - .../__snapshots__/empty.test.js.snap | 30 - components/list/__tests__/demo.test.js | 3 - components/list/__tests__/empty.test.js | 13 - components/list/__tests__/index.test.js | 31 - components/list/__tests__/loading.test.js | 47 - components/list/contextKey.ts | 8 - components/list/demo/basic.vue | 55 - components/list/demo/grid.vue | 46 - components/list/demo/index.vue | 34 - components/list/demo/loadmore.vue | 101 - components/list/demo/resposive.vue | 52 - components/list/demo/simple.vue | 69 - components/list/demo/vertical.vue | 80 - components/list/index.en-US.md | 73 - components/list/index.tsx | 347 - components/list/index.zh-CN.md | 74 - components/list/style/index.tsx | 354 - components/locale-provider/LocaleReceiver.tsx | 5 - .../__snapshots__/index.test.js.snap | 29326 -- .../locale-provider/__tests__/index.test.js | 269 - components/locale-provider/index.ts | 5 - components/locale/LocaleReceiver.tsx | 85 - components/locale/ar_EG.ts | 120 - components/locale/az_AZ.ts | 48 - components/locale/bg_BG.ts | 46 - components/locale/bn_BD.ts | 134 - components/locale/by_BY.ts | 128 - components/locale/ca_ES.ts | 129 - components/locale/cs_CZ.ts | 57 - components/locale/da_DK.ts | 56 - components/locale/de_DE.ts | 127 - components/locale/el_GR.ts | 46 - components/locale/en_GB.ts | 108 - components/locale/en_US.ts | 146 - components/locale/es_ES.ts | 134 - components/locale/et_EE.ts | 136 - components/locale/fa_IR.ts | 134 - components/locale/fi_FI.ts | 56 - components/locale/fr_BE.ts | 50 - components/locale/fr_CA.ts | 62 - components/locale/fr_FR.ts | 131 - components/locale/ga_IE.ts | 127 - components/locale/gl_ES.ts | 114 - components/locale/he_IL.ts | 120 - components/locale/hi_IN.ts | 134 - components/locale/hr_HR.ts | 133 - components/locale/hu_HU.ts | 47 - components/locale/hy_AM.ts | 115 - components/locale/id_ID.ts | 48 - components/locale/index.tsx | 110 - components/locale/is_IS.ts | 46 - components/locale/it_IT.ts | 62 - components/locale/ja_JP.ts | 106 - components/locale/ka_GE.ts | 134 - components/locale/kk_KZ.ts | 129 - components/locale/km_KH.ts | 108 - components/locale/kmr_IQ.ts | 46 - components/locale/kn_IN.ts | 54 - components/locale/ko_KR.ts | 100 - components/locale/ku_IQ.ts | 50 - components/locale/lt_LT.ts | 126 - components/locale/lv_LV.ts | 46 - components/locale/mk_MK.ts | 61 - components/locale/ml_IN.ts | 134 - components/locale/mn_MN.ts | 46 - components/locale/ms_MY.ts | 66 - components/locale/nb_NO.ts | 128 - components/locale/ne_NP.ts | 47 - components/locale/nl_BE.ts | 134 - components/locale/nl_NL.ts | 134 - components/locale/pl_PL.ts | 136 - components/locale/pt_BR.ts | 139 - components/locale/pt_PT.ts | 47 - components/locale/ro_RO.ts | 134 - components/locale/ru_RU.ts | 144 - components/locale/sk_SK.ts | 135 - components/locale/sl_SI.ts | 46 - components/locale/sr_RS.ts | 134 - components/locale/sv_SE.ts | 134 - components/locale/ta_IN.ts | 66 - components/locale/th_TH.ts | 130 - components/locale/tr_TR.ts | 132 - components/locale/uk_UA.ts | 46 - components/locale/ur_PK.ts | 134 - components/locale/vi_VN.ts | 46 - components/locale/zh_CN.ts | 145 - components/locale/zh_HK.ts | 141 - components/locale/zh_TW.ts | 142 - .../__tests__/__snapshots__/demo.test.js.snap | 115 - components/mentions/__tests__/demo.test.js | 3 - components/mentions/__tests__/index.test.js | 103 - components/mentions/demo/async.vue | 73 - components/mentions/demo/basic.vue | 45 - components/mentions/demo/form.vue | 96 - components/mentions/demo/index.vue | 37 - components/mentions/demo/placement.vue | 38 - components/mentions/demo/prefix.vue | 47 - components/mentions/demo/readonly.vue | 54 - components/mentions/demo/status.vue | 60 - components/mentions/index.en-US.md | 70 - components/mentions/index.tsx | 300 - components/mentions/index.zh-CN.md | 71 - components/mentions/style/index.ts | 232 - .../__tests__/__snapshots__/demo.test.js.snap | 478 - components/menu/__tests__/demo.test.js | 3 - components/menu/__tests__/index.test.js | 525 - components/menu/demo/horizontal.vue | 82 - components/menu/demo/index.vue | 41 - components/menu/demo/inline-collapsed.vue | 150 - components/menu/demo/inline.vue | 84 - components/menu/demo/sider-current.vue | 85 - components/menu/demo/submenu-theme.vue | 84 - components/menu/demo/switch-mode.vue | 95 - components/menu/demo/theme.vue | 131 - components/menu/demo/vertical.vue | 121 - components/menu/index.en-US.md | 166 - components/menu/index.tsx | 54 - components/menu/index.zh-CN.md | 166 - components/menu/src/Divider.tsx | 28 - components/menu/src/InlineSubMenuList.tsx | 55 - components/menu/src/ItemGroup.tsx | 47 - components/menu/src/Menu.tsx | 527 - components/menu/src/MenuItem.tsx | 271 - components/menu/src/OverrideContext.ts | 29 - components/menu/src/PopupTrigger.tsx | 116 - components/menu/src/SubMenu.tsx | 371 - components/menu/src/SubMenuList.tsx | 23 - .../menu/src/hooks/useDirectionStyle.ts | 15 - components/menu/src/hooks/useItems.tsx | 136 - components/menu/src/hooks/useKeyPath.ts | 45 - components/menu/src/hooks/useMenuContext.ts | 143 - components/menu/src/interface.ts | 115 - components/menu/src/placements.ts | 52 - components/menu/style/horizontal.ts | 57 - components/menu/style/index.ts | 577 - components/menu/style/rtl.ts | 28 - components/menu/style/theme.ts | 262 - components/menu/style/vertical.ts | 231 - components/message/PurePanel.tsx | 76 - .../__tests__/__snapshots__/demo.test.js.snap | 67 - components/message/__tests__/demo.test.js | 3 - components/message/__tests__/index.test.js | 139 - components/message/demo/custom-style.vue | 38 - components/message/demo/duration.vue | 27 - components/message/demo/hook.vue | 31 - components/message/demo/index.vue | 42 - components/message/demo/info.vue | 27 - components/message/demo/loading.vue | 28 - components/message/demo/other.vue | 37 - components/message/demo/thenable.vue | 34 - components/message/demo/update.vue | 45 - components/message/index.en-US.md | 118 - components/message/index.tsx | 249 - components/message/index.zh-CN.md | 121 - components/message/interface.ts | 48 - components/message/style/index.ts | 180 - components/message/useMessage.tsx | 230 - components/modal/ConfirmDialog.tsx | 232 - components/modal/Modal.tsx | 260 - components/modal/__tests__/Modal.test.js | 81 - .../__snapshots__/Modal.test.js.snap | 92 - .../__tests__/__snapshots__/demo.test.js.snap | 161 - components/modal/__tests__/confirm.test.js | 114 - components/modal/__tests__/demo.test.js | 3 - components/modal/confirm.tsx | 146 - components/modal/demo/async.vue | 49 - components/modal/demo/basic.vue | 41 - components/modal/demo/button-props.vue | 48 - components/modal/demo/confirm-promise.vue | 41 - components/modal/demo/confirm-router.vue | 45 - components/modal/demo/confirm.vue | 98 - components/modal/demo/footer.vue | 59 - components/modal/demo/fullscreen.vue | 65 - components/modal/demo/hook-modal.vue | 101 - components/modal/demo/index.vue | 68 - components/modal/demo/info.vue | 65 - components/modal/demo/locale.vue | 52 - components/modal/demo/manual.vue | 41 - components/modal/demo/modal-render.vue | 93 - components/modal/demo/position.vue | 59 - components/modal/demo/width.vue | 41 - components/modal/destroyFns.ts | 2 - components/modal/index.en-US.md | 159 - components/modal/index.tsx | 66 - components/modal/index.zh-CN.md | 163 - components/modal/locale.ts | 28 - components/modal/style/index.ts | 465 - components/modal/useModal/HookModal.tsx | 73 - components/modal/useModal/index.tsx | 151 - components/notification/PurePanel.tsx | 122 - .../__tests__/__snapshots__/demo.test.js.snap | 90 - .../notification/__tests__/demo.test.js | 3 - .../notification/__tests__/index.test.js | 126 - .../notification/__tests__/placement.test.js | 169 - components/notification/demo/basic.vue | 34 - components/notification/demo/custom-icon.vue | 35 - components/notification/demo/custom-style.vue | 49 - components/notification/demo/duration.vue | 34 - components/notification/demo/hook.vue | 61 - components/notification/demo/index.vue | 51 - components/notification/demo/placement.vue | 67 - components/notification/demo/update.vue | 60 - components/notification/demo/with-btn.vue | 52 - components/notification/demo/with-icon.vue | 36 - components/notification/index.en-US.md | 107 - components/notification/index.tsx | 255 - components/notification/index.zh-CN.md | 108 - components/notification/interface.ts | 61 - components/notification/style/index.ts | 287 - components/notification/style/placement.ts | 81 - components/notification/useNotification.tsx | 150 - components/notification/util.ts | 73 - .../__tests__/__snapshots__/demo.test.js.snap | 1764 - .../__snapshots__/index.test.js.snap | 41 - components/page-header/__tests__/demo.test.js | 3 - .../page-header/__tests__/index.test.js | 127 - components/page-header/demo/actions.vue | 74 - components/page-header/demo/basic.vue | 26 - components/page-header/demo/breadcrumb.vue | 42 - components/page-header/demo/content.vue | 177 - components/page-header/demo/ghost.vue | 55 - components/page-header/demo/index.vue | 35 - components/page-header/demo/responsive.vue | 100 - components/page-header/index.en-US.md | 34 - components/page-header/index.tsx | 199 - components/page-header/index.zh-CN.md | 34 - components/page-header/style/index.ts | 158 - components/pagination/Pagination.tsx | 168 - components/pagination/Select.tsx | 37 - .../__tests__/__snapshots__/demo.test.js.snap | 328 - components/pagination/__tests__/demo.test.js | 3 - components/pagination/__tests__/index.test.js | 6 - components/pagination/demo/basic.vue | 25 - components/pagination/demo/changer.vue | 51 - components/pagination/demo/custom-changer.vue | 44 - components/pagination/demo/index.vue | 46 - components/pagination/demo/itemRender.vue | 30 - components/pagination/demo/jump.vue | 38 - components/pagination/demo/mini.vue | 28 - components/pagination/demo/more.vue | 25 - components/pagination/demo/simple.vue | 23 - components/pagination/demo/total.vue | 41 - components/pagination/index.en-US.md | 48 - components/pagination/index.ts | 7 - components/pagination/index.zh-CN.md | 42 - components/pagination/style/index.tsx | 726 - .../__tests__/__snapshots__/demo.test.js.snap | 70 - .../__snapshots__/index.test.js.snap | 17 - components/popconfirm/__tests__/demo.test.js | 3 - components/popconfirm/__tests__/index.test.js | 92 - components/popconfirm/demo/basic.vue | 41 - .../popconfirm/demo/dynamic-trigger.vue | 67 - components/popconfirm/demo/icon.vue | 27 - components/popconfirm/demo/index.vue | 37 - components/popconfirm/demo/local.vue | 23 - components/popconfirm/demo/placement.vue | 133 - components/popconfirm/demo/promise.vue | 38 - components/popconfirm/index.en-US.md | 47 - components/popconfirm/index.tsx | 244 - components/popconfirm/index.zh-CN.md | 46 - components/popconfirm/style/index.ts | 89 - .../__tests__/__snapshots__/demo.test.js.snap | 99 - .../__snapshots__/index.test.js.snap | 21 - components/popover/__tests__/demo.test.js | 3 - components/popover/__tests__/index.test.js | 49 - .../popover/demo/arrow-point-at-center.vue | 41 - components/popover/demo/basic.vue | 26 - components/popover/demo/control.vue | 34 - components/popover/demo/hover-with-click.vue | 59 - components/popover/demo/index.vue | 34 - components/popover/demo/placement.vue | 163 - components/popover/demo/triggerType.vue | 47 - components/popover/index.en-US.md | 28 - components/popover/index.tsx | 80 - components/popover/index.zh-CN.md | 29 - components/popover/style/index.ts | 183 - components/progress/Circle.tsx | 109 - components/progress/Line.tsx | 161 - components/progress/Steps.tsx | 66 - .../__tests__/__snapshots__/demo.test.js.snap | 654 - .../__snapshots__/index.test.js.snap | 195 - components/progress/__tests__/demo.test.js | 3 - components/progress/__tests__/index.test.js | 320 - components/progress/demo/circle-dynamic.vue | 46 - components/progress/demo/circle-micro.vue | 32 - components/progress/demo/circle-mini.vue | 23 - components/progress/demo/circle.vue | 23 - components/progress/demo/dashboard.vue | 23 - components/progress/demo/dynamic.vue | 46 - components/progress/demo/format.vue | 29 - components/progress/demo/gradient-line.vue | 53 - components/progress/demo/index.vue | 67 - components/progress/demo/line-mini.vue | 26 - components/progress/demo/line.vue | 25 - components/progress/demo/linecap.vue | 25 - components/progress/demo/segment.vue | 31 - components/progress/demo/size.vue | 49 - components/progress/demo/steps.vue | 26 - components/progress/index.en-US.md | 56 - components/progress/index.ts | 6 - components/progress/index.zh-CN.md | 57 - components/progress/progress.tsx | 161 - components/progress/props.ts | 53 - components/progress/style/index.ts | 274 - components/progress/utils.ts | 96 - components/qrcode/QRCode.tsx | 349 - .../__tests__/__snapshots__/demo.test.js.snap | 148 - .../__snapshots__/index.test.js.snap | 319914 --------------- components/qrcode/__tests__/demo.test.js | 3 - components/qrcode/__tests__/index.test.js | 91 - components/qrcode/demo/base.vue | 28 - components/qrcode/demo/customColor.vue | 33 - components/qrcode/demo/customSize.vue | 56 - components/qrcode/demo/customType.vue | 22 - components/qrcode/demo/download.vue | 36 - components/qrcode/demo/errorLevel.vue | 31 - components/qrcode/demo/icon.vue | 23 - components/qrcode/demo/index.vue | 48 - components/qrcode/demo/popover.vue | 24 - components/qrcode/demo/status.vue | 27 - components/qrcode/index.en-US.md | 43 - components/qrcode/index.tsx | 115 - components/qrcode/index.zh-CN.md | 44 - components/qrcode/interface.ts | 51 - components/qrcode/qrcodegen.ts | 972 - components/qrcode/style/index.ts | 65 - components/radio/Group.tsx | 148 - components/radio/Radio.tsx | 127 - components/radio/RadioButton.tsx | 22 - .../__tests__/__snapshots__/demo.test.js.snap | 89 - .../__snapshots__/group.test.js.snap | 9 - .../__snapshots__/radio.test.js.snap | 3 - components/radio/__tests__/demo.test.js | 3 - components/radio/__tests__/group.test.js | 242 - components/radio/__tests__/radio.test.js | 45 - components/radio/context.ts | 23 - components/radio/demo/basic.vue | 24 - components/radio/demo/disabled.vue | 37 - components/radio/demo/index.vue | 45 - components/radio/demo/radioButton-solid.vue | 42 - components/radio/demo/radioButton.vue | 52 - components/radio/demo/radioGroup-more.vue | 37 - components/radio/demo/radioGroup-options.vue | 40 - .../radio/demo/radioGroup-with-name.vue | 29 - components/radio/demo/radioGroup.vue | 31 - components/radio/demo/size.vue | 52 - components/radio/index.en-US.md | 54 - components/radio/index.ts | 25 - components/radio/index.zh-CN.md | 55 - components/radio/interface.ts | 31 - components/radio/style/index.tsx | 545 - components/rate/Star.tsx | 98 - .../__tests__/__snapshots__/demo.test.js.snap | 312 - components/rate/__tests__/demo.test.js | 3 - components/rate/__tests__/index.test.js | 8 - components/rate/demo/basic.vue | 24 - components/rate/demo/character.vue | 38 - components/rate/demo/clear.vue | 31 - components/rate/demo/disabled.vue | 19 - components/rate/demo/half.vue | 24 - components/rate/demo/index.vue | 36 - components/rate/demo/text.vue | 28 - components/rate/index.en-US.md | 44 - components/rate/index.tsx | 254 - components/rate/index.zh-CN.md | 45 - components/rate/style/index.ts | 135 - components/rate/util.ts | 40 - .../__tests__/__snapshots__/demo.test.js.snap | 301 - components/result/__tests__/demo.test.js | 3 - components/result/__tests__/index.test.js | 71 - components/result/demo/403.vue | 25 - components/result/demo/404.vue | 25 - components/result/demo/500.vue | 25 - components/result/demo/customIcon.vue | 31 - components/result/demo/error.vue | 54 - components/result/demo/index.vue | 42 - components/result/demo/info.vue | 25 - components/result/demo/success.vue | 30 - components/result/demo/warning.vue | 25 - components/result/index.en-US.md | 23 - components/result/index.tsx | 121 - components/result/index.zh-CN.md | 24 - components/result/noFound.tsx | 289 - components/result/serverError.tsx | 331 - components/result/style/index.tsx | 157 - components/result/unauthorized.tsx | 280 - components/row/index.ts | 6 - components/row/style/index.ts | 4 - .../__tests__/__snapshots__/demo.test.js.snap | 144 - components/segmented/__tests__/demo.test.js | 3 - components/segmented/__tests__/index.test.js | 11 - components/segmented/demo/basic.vue | 25 - components/segmented/demo/block.vue | 24 - components/segmented/demo/custom.vue | 106 - components/segmented/demo/disabled.vue | 37 - components/segmented/demo/dynamic.vue | 32 - components/segmented/demo/index.vue | 32 - components/segmented/demo/size.vue | 32 - components/segmented/index.en-US.md | 50 - components/segmented/index.ts | 6 - components/segmented/index.zh-CN.md | 53 - components/segmented/src/MotionThumb.tsx | 161 - components/segmented/src/index.ts | 5 - components/segmented/src/segmented.tsx | 189 - components/segmented/style/index.ts | 216 - .../__tests__/__snapshots__/demo.test.js.snap | 612 - .../__snapshots__/index.test.js.snap | 13 - components/select/__tests__/demo.test.js | 3 - components/select/__tests__/index.test.js | 226 - .../select/demo/automatic-tokenization.vue | 46 - components/select/demo/basic.vue | 99 - components/select/demo/big-data.vue | 42 - components/select/demo/coordinate.vue | 51 - .../select/demo/custom-dropdown-menu.vue | 72 - components/select/demo/field-names.vue | 71 - components/select/demo/hide-selected.vue | 35 - components/select/demo/index.vue | 84 - components/select/demo/label-in-value.vue | 48 - components/select/demo/multiple.vue | 35 - components/select/demo/optgroup.vue | 80 - components/select/demo/option-label-prop.vue | 118 - components/select/demo/placement.vue | 43 - components/select/demo/responsive.vue | 81 - components/select/demo/search-box.vue | 84 - components/select/demo/search.vue | 54 - components/select/demo/select-users.vue | 73 - components/select/demo/size.vue | 64 - components/select/demo/status.vue | 30 - components/select/demo/suffix.vue | 70 - components/select/demo/tags.vue | 36 - components/select/index.en-US.md | 128 - components/select/index.tsx | 319 - components/select/index.zh-CN.md | 128 - components/select/style/dropdown.ts | 166 - components/select/style/index.ts | 342 - components/select/style/multiple.ts | 239 - components/select/style/single.ts | 192 - components/select/utils/iconUtil.tsx | 63 - components/skeleton/Avatar.tsx | 48 - components/skeleton/Button.tsx | 49 - components/skeleton/Element.tsx | 42 - components/skeleton/Image.tsx | 42 - components/skeleton/Input.tsx | 47 - components/skeleton/Paragraph.tsx | 44 - components/skeleton/Skeleton.tsx | 173 - components/skeleton/Title.tsx | 24 - .../__tests__/__snapshots__/demo.test.js.snap | 257 - .../__snapshots__/index.test.js.snap | 137 - components/skeleton/__tests__/demo.test.js | 3 - components/skeleton/__tests__/index.test.js | 89 - components/skeleton/demo/active.vue | 21 - components/skeleton/demo/basic.vue | 21 - components/skeleton/demo/children.vue | 45 - components/skeleton/demo/complex.vue | 21 - components/skeleton/demo/element.vue | 69 - components/skeleton/demo/index.vue | 35 - components/skeleton/demo/list.vue | 92 - components/skeleton/index.en-US.md | 64 - components/skeleton/index.tsx | 40 - components/skeleton/index.zh-CN.md | 65 - components/skeleton/style/index.ts | 388 - components/slider/SliderTooltip.tsx | 49 - .../__tests__/__snapshots__/demo.test.js.snap | 255 - .../__snapshots__/index.test.js.snap | 47 - components/slider/__tests__/demo.test.js | 3 - components/slider/__tests__/index.test.js | 27 - components/slider/demo/basic.vue | 36 - components/slider/demo/event.vue | 41 - components/slider/demo/icon-slider.vue | 65 - components/slider/demo/index.vue | 46 - components/slider/demo/input-number.vue | 53 - components/slider/demo/mark.vue | 95 - components/slider/demo/reverse.vue | 32 - components/slider/demo/show-tooltip.vue | 24 - components/slider/demo/tip-formatter.vue | 28 - components/slider/demo/vertical.vue | 52 - components/slider/index.en-US.md | 51 - components/slider/index.tsx | 255 - components/slider/index.zh-CN.md | 50 - components/slider/style/index.tsx | 343 - components/space/Compact.tsx | 135 - .../__tests__/__snapshots__/demo.test.js.snap | 549 - .../__snapshots__/index.test.js.snap | 14 - components/space/__tests__/demo.test.js | 3 - components/space/__tests__/index.test.js | 76 - components/space/demo/align.vue | 68 - components/space/demo/base.vue | 37 - .../space/demo/compact-button-vertical.vue | 37 - components/space/demo/compact-buttons.vue | 138 - components/space/demo/compact.vue | 220 - components/space/demo/customize.vue | 34 - components/space/demo/index.vue | 49 - components/space/demo/size.vue | 42 - components/space/demo/split.vue | 28 - components/space/demo/vertical.vue | 33 - components/space/demo/wrap.vue | 25 - components/space/index.en-US.md | 46 - components/space/index.tsx | 162 - components/space/index.zh-CN.md | 52 - components/space/style/compact.tsx | 29 - components/space/style/index.tsx | 54 - components/spin/Spin.tsx | 131 - .../__tests__/__snapshots__/demo.test.js.snap | 109 - .../__snapshots__/index.test.js.snap | 21 - components/spin/__tests__/delay.test.js | 52 - components/spin/__tests__/demo.test.js | 3 - components/spin/__tests__/index.test.js | 47 - components/spin/demo/basic.vue | 21 - components/spin/demo/custom-indicator.vue | 31 - components/spin/demo/delay.vue | 40 - components/spin/demo/index.vue | 39 - components/spin/demo/inside.vue | 33 - components/spin/demo/nested.vue | 39 - components/spin/demo/size.vue | 25 - components/spin/demo/tip.vue | 26 - components/spin/index.en-US.md | 35 - components/spin/index.ts | 18 - components/spin/index.zh-CN.md | 36 - components/spin/style/index.ts | 241 - components/statistic/Countdown.tsx | 102 - components/statistic/Number.tsx | 53 - components/statistic/Statistic.tsx | 89 - .../__tests__/__snapshots__/demo.test.js.snap | 132 - .../__snapshots__/index.test.js.snap | 11 - components/statistic/__tests__/demo.test.js | 3 - components/statistic/__tests__/index.test.js | 92 - components/statistic/demo/basic.vue | 28 - components/statistic/demo/card.vue | 59 - components/statistic/demo/countdown-slot.vue | 57 - components/statistic/demo/countdown.vue | 47 - components/statistic/demo/index.vue | 33 - components/statistic/demo/unit.vue | 39 - components/statistic/index.en-US.md | 47 - components/statistic/index.ts | 20 - components/statistic/index.zh-CN.md | 48 - components/statistic/style/index.tsx | 71 - components/statistic/utils.ts | 69 - .../__tests__/__snapshots__/demo.test.js.snap | 1322 - components/steps/__tests__/demo.test.js | 3 - components/steps/__tests__/index.test.js | 6 - components/steps/demo/clickable.vue | 62 - .../steps/demo/customized-progress-dot.vue | 56 - components/steps/demo/error.vue | 41 - components/steps/demo/icon.vue | 51 - components/steps/demo/index.vue | 61 - components/steps/demo/inline.vue | 79 - components/steps/demo/label-placement.vue | 44 - components/steps/demo/nav.vue | 104 - components/steps/demo/progress-dot.vue | 67 - components/steps/demo/progress.vue | 64 - components/steps/demo/simple.vue | 39 - components/steps/demo/small-size.vue | 33 - components/steps/demo/step-next.vue | 81 - components/steps/demo/vertical-small.vue | 37 - components/steps/demo/vertical.vue | 40 - components/steps/index.en-US.md | 58 - components/steps/index.tsx | 169 - components/steps/index.zh-CN.md | 63 - components/steps/style/custom-icon.ts | 36 - components/steps/style/index.tsx | 408 - components/steps/style/inline.ts | 124 - components/steps/style/label-placement.ts | 56 - components/steps/style/nav.ts | 146 - components/steps/style/progress-dot.ts | 133 - components/steps/style/progress.ts | 60 - components/steps/style/rtl.ts | 47 - components/steps/style/small.ts | 68 - components/steps/style/vertical.ts | 72 - components/style/compact-item-vertical.ts | 58 - components/style/compact-item.ts | 103 - components/style/index.ts | 139 - components/style/motion/collapse.ts | 24 - components/style/motion/fade.ts | 49 - components/style/motion/index.ts | 77 - components/style/motion/motion.ts | 52 - components/style/motion/move.ts | 163 - components/style/motion/slide.ts | 166 - components/style/motion/zoom.ts | 230 - components/style/operationUnit.ts | 21 - components/style/placementArrow.ts | 257 - components/style/presetColor.tsx | 35 - components/style/reset.css | 253 - components/style/roundedArrow.ts | 72 - .../__tests__/__snapshots__/demo.test.js.snap | 77 - .../__snapshots__/index.test.js.snap | 9 - components/switch/__tests__/demo.test.js | 3 - components/switch/__tests__/index.test.js | 104 - components/switch/demo/basic.vue | 26 - components/switch/demo/disabled.vue | 34 - components/switch/demo/index.vue | 32 - components/switch/demo/loading.vue | 31 - components/switch/demo/size.vue | 32 - components/switch/demo/text.vue | 37 - components/switch/index.en-US.md | 42 - components/switch/index.tsx | 211 - components/switch/index.zh-CN.md | 43 - components/switch/style/index.ts | 433 - components/table/Column.tsx | 17 - components/table/ColumnGroup.tsx | 15 - components/table/ExpandIcon.tsx | 41 - components/table/Table.tsx | 691 - .../table/__tests__/Table.filter.test.js | 458 - .../table/__tests__/Table.pagination.test.js | 229 - .../__tests__/Table.rowSelection.test.js | 650 - .../table/__tests__/Table.sorter.test.js | 191 - components/table/__tests__/Table.test.js | 129 - .../__snapshots__/Table.filter.test.js.snap | 106 - .../Table.pagination.test.js.snap | 57 - .../Table.rowSelection.test.js.snap | 162 - .../__snapshots__/Table.sorter.test.js.snap | 14 - .../__snapshots__/Table.test.js.snap | 149 - .../__tests__/__snapshots__/demo.test.js.snap | 6949 - .../__snapshots__/empty.test.js.snap | 344 - components/table/__tests__/demo.test.js | 3 - components/table/__tests__/empty.test.js | 114 - components/table/context.ts | 44 - components/table/demo/ajax.vue | 119 - components/table/demo/basic.vue | 113 - components/table/demo/big-data.vue | 28 - components/table/demo/bordered.vue | 72 - components/table/demo/colspan-rowspan.vue | 125 - components/table/demo/custom-filter-panel.vue | 166 - components/table/demo/edit-cell.vue | 158 - components/table/demo/edit-row.vue | 109 - components/table/demo/ellipsis.vue | 92 - components/table/demo/expand-children.vue | 135 - components/table/demo/expand.vue | 67 - components/table/demo/filter-in-tree.vue | 126 - components/table/demo/filter-search.vue | 101 - .../table/demo/fixed-columns-header.vue | 72 - components/table/demo/fixed-columns.vue | 79 - components/table/demo/fixed-header.vue | 53 - components/table/demo/grouping-columns.vue | 135 - components/table/demo/head.vue | 129 - components/table/demo/index.vue | 108 - components/table/demo/multiple-sorter.vue | 89 - components/table/demo/nested-table.vue | 122 - components/table/demo/order-column.vue | 69 - components/table/demo/reset-filter.vue | 146 - components/table/demo/resizable-column.vue | 126 - components/table/demo/responsive.vue | 59 - .../demo/row-selection-and-operation.vue | 96 - .../table/demo/row-selection-custom.vue | 103 - components/table/demo/row-selection.vue | 88 - components/table/demo/size.vue | 57 - components/table/demo/sticky.vue | 132 - components/table/demo/stripe.vue | 76 - components/table/demo/summary.vue | 149 - components/table/demo/template.vue | 83 - components/table/hooks/useColumns.tsx | 54 - .../table/hooks/useFilter/FilterDropdown.tsx | 574 - .../table/hooks/useFilter/FilterSearch.tsx | 39 - .../table/hooks/useFilter/FilterWrapper.tsx | 16 - components/table/hooks/useFilter/index.tsx | 299 - components/table/hooks/useLazyKVMap.ts | 51 - components/table/hooks/usePagination.ts | 91 - components/table/hooks/useSelection.tsx | 688 - components/table/hooks/useSorter.tsx | 448 - components/table/hooks/useTitleColumns.tsx | 29 - components/table/index.en-US.md | 306 - components/table/index.tsx | 55 - components/table/index.zh-CN.md | 313 - components/table/interface.tsx | 231 - components/table/style/bordered.ts | 159 - components/table/style/ellipsis.ts | 37 - components/table/style/empty.ts | 22 - components/table/style/expand.ts | 152 - components/table/style/filter.ts | 172 - components/table/style/fixed.ts | 132 - components/table/style/index.ts | 377 - components/table/style/pagination.ts | 39 - components/table/style/radius.ts | 57 - components/table/style/resize.ts | 52 - components/table/style/rtl.ts | 39 - components/table/style/selection.ts | 76 - components/table/style/size.ts | 68 - components/table/style/sorter.ts | 101 - components/table/style/sticky.ts | 59 - components/table/style/summary.ts | 29 - components/table/util.ts | 62 - .../__tests__/__snapshots__/demo.test.js.snap | 703 - .../__snapshots__/index.test.js.snap | 30 - components/tabs/__tests__/demo.test.js | 3 - components/tabs/__tests__/index.test.js | 51 - components/tabs/demo/basic.vue | 28 - components/tabs/demo/card-top.vue | 92 - components/tabs/demo/card.vue | 29 - components/tabs/demo/centered.vue | 29 - components/tabs/demo/custom-add-trigger.vue | 72 - components/tabs/demo/custom-tab-bar.vue | 33 - components/tabs/demo/disabled.vue | 29 - components/tabs/demo/editable-card.vue | 68 - components/tabs/demo/extra.vue | 46 - components/tabs/demo/icon.vue | 45 - components/tabs/demo/index.vue | 60 - components/tabs/demo/position.vue | 37 - components/tabs/demo/size.vue | 37 - components/tabs/demo/slide.vue | 43 - components/tabs/index.en-US.md | 69 - components/tabs/index.ts | 19 - components/tabs/index.zh-CN.md | 71 - components/tabs/src/TabContext.ts | 34 - components/tabs/src/TabNavList/AddButton.tsx | 49 - .../tabs/src/TabNavList/OperationNode.tsx | 251 - components/tabs/src/TabNavList/TabNode.tsx | 139 - components/tabs/src/TabNavList/index.tsx | 579 - components/tabs/src/TabPanelList/TabPane.tsx | 80 - components/tabs/src/TabPanelList/index.tsx | 67 - components/tabs/src/Tabs.tsx | 389 - components/tabs/src/hooks/useOffsets.ts | 40 - components/tabs/src/hooks/useRaf.ts | 52 - components/tabs/src/hooks/useSyncState.ts | 21 - components/tabs/src/hooks/useTouchMove.ts | 140 - components/tabs/src/index.ts | 11 - components/tabs/src/interface.ts | 48 - components/tabs/style/index.ts | 906 - components/tabs/style/motion.ts | 46 - components/tag/CheckableTag.tsx | 55 - .../__tests__/__snapshots__/demo.test.js.snap | 101 - .../__snapshots__/index.test.js.snap | 13 - components/tag/__tests__/demo.test.js | 3 - components/tag/__tests__/index.test.js | 96 - components/tag/demo/basic.vue | 30 - components/tag/demo/border-less.vue | 43 - components/tag/demo/checkable.vue | 41 - components/tag/demo/colorful.vue | 37 - components/tag/demo/control.vue | 82 - components/tag/demo/hot-tags.vue | 43 - components/tag/demo/icon.vue | 53 - components/tag/demo/index.vue | 41 - components/tag/demo/status.vue | 77 - components/tag/index.en-US.md | 44 - components/tag/index.tsx | 175 - components/tag/index.zh-CN.md | 45 - components/tag/style/index.ts | 183 - components/theme/context.ts | 97 - components/theme/getDesignToken.ts | 17 - components/theme/index.ts | 33 - components/theme/interface/alias.ts | 632 - components/theme/interface/components.ts | 137 - components/theme/interface/index.ts | 44 - components/theme/interface/maps/colors.ts | 598 - components/theme/interface/maps/font.ts | 139 - components/theme/interface/maps/index.ts | 46 - components/theme/interface/maps/size.ts | 74 - components/theme/interface/maps/style.ts | 43 - components/theme/interface/presetColors.ts | 32 - components/theme/interface/seeds.ts | 279 - components/theme/internal.ts | 51 - components/theme/themes/ColorMap.ts | 20 - .../themes/compact/genCompactSizeMapToken.ts | 19 - components/theme/themes/compact/index.ts | 27 - .../theme/themes/dark/colorAlgorithm.ts | 9 - components/theme/themes/dark/colors.ts | 54 - components/theme/themes/dark/index.ts | 49 - .../theme/themes/default/colorAlgorithm.ts | 9 - components/theme/themes/default/colors.ts | 54 - components/theme/themes/default/index.ts | 53 - components/theme/themes/seed.ts | 81 - .../theme/themes/shared/genColorMapToken.ts | 100 - .../theme/themes/shared/genCommonMapToken.ts | 19 - .../theme/themes/shared/genControlHeight.ts | 13 - .../theme/themes/shared/genFontMapToken.ts | 44 - .../theme/themes/shared/genFontSizes.ts | 22 - components/theme/themes/shared/genRadius.ts | 59 - .../theme/themes/shared/genSizeMapToken.ts | 17 - components/theme/useToken.ts | 160 - components/theme/util/alias.ts | 207 - components/theme/util/calc/CSSCalculator.ts | 87 - components/theme/util/calc/NumCalculator.ts | 54 - components/theme/util/calc/calculator.ts | 33 - components/theme/util/calc/index.ts | 11 - .../theme/util/genComponentStyleHook.ts | 458 - components/theme/util/genPresetColor.ts | 35 - components/theme/util/getAlphaColor.ts | 29 - components/theme/util/maxmin.ts | 14 - components/theme/util/statistic.ts | 85 - components/theme/util/useResetIconStyle.ts | 35 - .../__tests__/__snapshots__/demo.test.js.snap | 318 - .../__snapshots__/index.test.js.snap | 11 - components/time-picker/__tests__/demo.test.js | 3 - .../time-picker/__tests__/index.test.js | 57 - components/time-picker/date-fns.tsx | 26 - components/time-picker/dayjs.tsx | 28 - components/time-picker/demo/12hours.vue | 30 - components/time-picker/demo/addon.vue | 49 - components/time-picker/demo/basic.vue | 37 - components/time-picker/demo/bordered.vue | 24 - components/time-picker/demo/disabled.vue | 24 - components/time-picker/demo/hide-column.vue | 26 - components/time-picker/demo/index.vue | 57 - .../time-picker/demo/interval-options.vue | 25 - components/time-picker/demo/placement.vue | 39 - components/time-picker/demo/range-picker.vue | 21 - components/time-picker/demo/size.vue | 32 - components/time-picker/demo/status.vue | 27 - components/time-picker/demo/suffix.vue | 29 - components/time-picker/demo/value.vue | 42 - components/time-picker/index.en-US.md | 95 - components/time-picker/index.tsx | 8 - components/time-picker/index.zh-CN.md | 97 - components/time-picker/locale/ar_EG.ts | 7 - components/time-picker/locale/az_AZ.ts | 7 - components/time-picker/locale/bg_BG.ts | 7 - components/time-picker/locale/bn_BD.ts | 8 - components/time-picker/locale/by_BY.ts | 8 - components/time-picker/locale/ca_ES.ts | 7 - components/time-picker/locale/cs_CZ.ts | 7 - components/time-picker/locale/da_DK.ts | 8 - components/time-picker/locale/de_DE.ts | 7 - components/time-picker/locale/el_GR.ts | 7 - components/time-picker/locale/en_GB.ts | 7 - components/time-picker/locale/en_US.ts | 8 - components/time-picker/locale/es_ES.ts | 7 - components/time-picker/locale/et_EE.ts | 7 - components/time-picker/locale/fa_IR.ts | 8 - components/time-picker/locale/fi_FI.ts | 7 - components/time-picker/locale/fr_BE.ts | 7 - components/time-picker/locale/fr_CA.ts | 8 - components/time-picker/locale/fr_FR.ts | 8 - components/time-picker/locale/ga_IE.ts | 8 - components/time-picker/locale/gl_ES.ts | 7 - components/time-picker/locale/he_IL.ts | 7 - components/time-picker/locale/hi_IN.ts | 8 - components/time-picker/locale/hr_HR.ts | 8 - components/time-picker/locale/hu_HU.ts | 7 - components/time-picker/locale/id_ID.ts | 7 - components/time-picker/locale/is_IS.ts | 7 - components/time-picker/locale/it_IT.ts | 7 - components/time-picker/locale/ja_JP.ts | 8 - components/time-picker/locale/ka_GE.ts | 8 - components/time-picker/locale/kk_KZ.ts | 8 - components/time-picker/locale/km_KH.ts | 8 - components/time-picker/locale/kmr_IQ.ts | 7 - components/time-picker/locale/kn_IN.ts | 7 - components/time-picker/locale/ko_KR.ts | 8 - components/time-picker/locale/lt_LT.ts | 8 - components/time-picker/locale/lv_LV.ts | 7 - components/time-picker/locale/mk_MK.ts | 7 - components/time-picker/locale/ml_IN.ts | 8 - components/time-picker/locale/mn_MN.ts | 7 - components/time-picker/locale/ms_MY.ts | 7 - components/time-picker/locale/nb_NO.ts | 8 - components/time-picker/locale/nl_BE.ts | 8 - components/time-picker/locale/nl_NL.ts | 8 - components/time-picker/locale/pl_PL.ts | 7 - components/time-picker/locale/pt_BR.ts | 7 - components/time-picker/locale/pt_PT.ts | 7 - components/time-picker/locale/ro_RO.ts | 7 - components/time-picker/locale/ru_RU.ts | 9 - components/time-picker/locale/sk_SK.ts | 7 - components/time-picker/locale/sl_SI.ts | 7 - components/time-picker/locale/sr_RS.ts | 8 - components/time-picker/locale/sv_SE.ts | 7 - components/time-picker/locale/ta_IN.ts | 7 - components/time-picker/locale/th_TH.ts | 7 - components/time-picker/locale/tr_TR.ts | 8 - components/time-picker/locale/uk_UA.ts | 7 - components/time-picker/locale/ur_PK.ts | 8 - components/time-picker/locale/vi_VN.ts | 7 - components/time-picker/locale/zh_CN.ts | 8 - components/time-picker/locale/zh_TW.ts | 7 - components/time-picker/moment.tsx | 27 - components/time-picker/time-picker.tsx | 251 - components/timeline/Timeline.tsx | 116 - components/timeline/TimelineItem.tsx | 64 - .../__tests__/__snapshots__/demo.test.js.snap | 311 - components/timeline/__tests__/demo.test.js | 3 - components/timeline/__tests__/index.test.js | 7 - components/timeline/demo/alternate.vue | 39 - components/timeline/demo/basic.vue | 26 - components/timeline/demo/color.vue | 53 - components/timeline/demo/custom.vue | 32 - components/timeline/demo/index.vue | 36 - components/timeline/demo/label.vue | 39 - components/timeline/demo/pending.vue | 37 - components/timeline/demo/right.vue | 32 - components/timeline/index.en-US.md | 47 - components/timeline/index.tsx | 20 - components/timeline/index.zh-CN.md | 48 - components/timeline/style/index.tsx | 237 - components/tooltip/Tooltip.tsx | 320 - .../__tests__/__snapshots__/demo.test.js.snap | 142 - components/tooltip/__tests__/demo.test.js | 3 - components/tooltip/__tests__/tooltip.test.js | 90 - components/tooltip/abstractTooltipProps.ts | 58 - .../tooltip/demo/arrow-point-at-center.vue | 28 - components/tooltip/demo/arrow.vue | 144 - .../tooltip/demo/auto-adjust-overflow.vue | 45 - components/tooltip/demo/basic.vue | 24 - components/tooltip/demo/color.vue | 60 - components/tooltip/demo/index.vue | 36 - components/tooltip/demo/placement.vue | 114 - components/tooltip/index.en-US.md | 52 - components/tooltip/index.ts | 14 - components/tooltip/index.zh-CN.md | 53 - components/tooltip/style/index.ts | 157 - components/tooltip/util.ts | 22 - .../__tests__/__snapshots__/demo.test.js.snap | 99 - components/tour/__tests__/demo.test.js | 3 - components/tour/__tests__/index.test.js | 18 - components/tour/demo/basic.vue | 70 - components/tour/demo/index.vue | 35 - components/tour/demo/indicator.vue | 70 - components/tour/demo/mask.vue | 86 - components/tour/demo/non-modal.vue | 69 - components/tour/demo/placement.vue | 57 - components/tour/index.en-US.md | 60 - components/tour/index.tsx | 92 - components/tour/index.zh-CN.md | 61 - components/tour/interface.ts | 42 - components/tour/panelRender.tsx | 152 - components/tour/style/index.ts | 250 - components/tour/useMergedType.ts | 38 - components/transfer/ListBody.tsx | 169 - components/transfer/ListItem.tsx | 95 - .../__tests__/__snapshots__/demo.test.js.snap | 1086 - .../__snapshots__/index.test.js.snap | 87 - .../__tests__/__snapshots__/list.test.js.snap | 27 - .../__snapshots__/search.test.js.snap | 11 - components/transfer/__tests__/demo.test.js | 3 - components/transfer/__tests__/index.test.js | 504 - components/transfer/__tests__/list.test.js | 51 - components/transfer/__tests__/search.test.js | 86 - components/transfer/demo/advanced.vue | 90 - components/transfer/demo/basic.vue | 78 - components/transfer/demo/custom-item.vue | 69 - .../demo/custom-select-all-labels.vue | 87 - components/transfer/demo/index.vue | 49 - components/transfer/demo/oneway.vue | 78 - components/transfer/demo/pagination.vue | 64 - components/transfer/demo/search.vue | 72 - components/transfer/demo/status.vue | 25 - components/transfer/demo/table-transfer.vue | 146 - components/transfer/demo/tree-transfer.vue | 110 - components/transfer/index.en-US.md | 104 - components/transfer/index.tsx | 456 - components/transfer/index.zh-CN.md | 105 - components/transfer/interface.ts | 8 - components/transfer/list.tsx | 422 - components/transfer/operation.tsx | 66 - components/transfer/search.tsx | 50 - components/transfer/style/index.tsx | 377 - .../__tests__/__snapshots__/demo.test.js.snap | 242 - components/tree-select/__tests__/demo.test.js | 3 - .../tree-select/__tests__/index.test.js | 8 - components/tree-select/demo/async.vue | 68 - components/tree-select/demo/basic.vue | 80 - components/tree-select/demo/checkable.vue | 74 - .../tree-select/demo/custom-tag-render.vue | 96 - components/tree-select/demo/highlight.vue | 97 - components/tree-select/demo/index.vue | 58 - components/tree-select/demo/multiple.vue | 82 - components/tree-select/demo/placement.vue | 77 - components/tree-select/demo/replaceFields.vue | 71 - components/tree-select/demo/status.vue | 25 - components/tree-select/demo/suffix.vue | 97 - components/tree-select/demo/tree-line.vue | 83 - .../tree-select/demo/virtual-scroll.vue | 65 - components/tree-select/index.en-US.md | 100 - components/tree-select/index.tsx | 366 - components/tree-select/index.zh-CN.md | 95 - components/tree-select/style/index.tsx | 76 - components/tree/DirectoryTree.tsx | 311 - components/tree/Tree.tsx | 277 - .../__tests__/__snapshots__/demo.test.js.snap | 576 - components/tree/__tests__/demo.test.js | 3 - components/tree/__tests__/util.test.js | 45 - components/tree/breakchange.md | 1 - components/tree/demo/accordion.vue | 93 - components/tree/demo/basic.vue | 71 - components/tree/demo/context-menu.vue | 73 - components/tree/demo/customized-icon.vue | 52 - components/tree/demo/directory.vue | 67 - components/tree/demo/draggable.vue | 127 - components/tree/demo/dynamic.vue | 55 - components/tree/demo/index.vue | 55 - components/tree/demo/line.vue | 109 - components/tree/demo/replaceFields.vue | 77 - components/tree/demo/search.vue | 125 - components/tree/demo/switcher-icon.vue | 85 - components/tree/demo/virtual-scroll.vue | 63 - components/tree/index.en-US.md | 93 - components/tree/index.tsx | 40 - components/tree/index.zh-CN.md | 94 - components/tree/style/index.ts | 484 - components/tree/utils/dictUtil.ts | 100 - components/tree/utils/dropIndicator.tsx | 33 - components/tree/utils/iconUtil.tsx | 65 - components/typography/Base.tsx | 626 - components/typography/Editable.tsx | 160 - components/typography/Link.tsx | 36 - components/typography/Paragraph.tsx | 23 - components/typography/Text.tsx | 44 - components/typography/Title.tsx | 39 - components/typography/Typography.tsx | 58 - .../__tests__/__snapshots__/demo.test.js.snap | 215 - components/typography/__tests__/demo.test.js | 3 - components/typography/__tests__/index.test.js | 364 - components/typography/demo/basic.vue | 104 - components/typography/demo/ellipsis.vue | 48 - components/typography/demo/index.vue | 37 - components/typography/demo/interactive.vue | 113 - components/typography/demo/suffix.vue | 41 - components/typography/demo/text.vue | 35 - components/typography/demo/title.vue | 23 - components/typography/index.en-US.md | 146 - components/typography/index.tsx | 40 - components/typography/index.zh-CN.md | 147 - components/typography/style/index.tsx | 128 - components/typography/style/mixins.tsx | 263 - components/typography/util.tsx | 226 - components/upload/Dragger.tsx | 23 - components/upload/Upload.tsx | 458 - components/upload/UploadList/ListItem.tsx | 305 - components/upload/UploadList/index.tsx | 255 - .../__tests__/__snapshots__/demo.test.js.snap | 268 - .../__snapshots__/uploadlist.test.js.snap | 95 - components/upload/__tests__/demo.test.js | 3 - components/upload/__tests__/mock.js | 14 - components/upload/__tests__/requests.js | 11 - components/upload/__tests__/upload.test.js | 301 - .../upload/__tests__/uploadlist.test.js | 431 - components/upload/demo/avatar.vue | 101 - components/upload/demo/basic.vue | 53 - components/upload/demo/custom-render.vue | 80 - .../upload/demo/customize-progress-bar.vue | 61 - components/upload/demo/defaultFileList.vue | 52 - components/upload/demo/directory.vue | 28 - components/upload/demo/drag.vue | 61 - components/upload/demo/fileList.vue | 69 - components/upload/demo/index.vue | 67 - components/upload/demo/max-count.vue | 50 - components/upload/demo/picture-card.vue | 117 - components/upload/demo/picture-style.vue | 93 - components/upload/demo/preview-file.vue | 49 - components/upload/demo/transform-file.vue | 61 - .../upload/demo/upload-custom-action-icon.vue | 69 - components/upload/demo/upload-manually.vue | 81 - components/upload/demo/upload-png-only.vue | 72 - components/upload/index.en-US.md | 139 - components/upload/index.tsx | 18 - components/upload/index.zh-CN.md | 140 - components/upload/interface.tsx | 194 - components/upload/style/dragger.ts | 76 - components/upload/style/index.ts | 66 - components/upload/style/list.ts | 129 - components/upload/style/motion.ts | 52 - components/upload/style/picture.ts | 227 - components/upload/style/rtl.ts | 15 - components/upload/utils.tsx | 124 - components/vc-align/Align.tsx | 208 - components/vc-align/hooks/useBuffer.tsx | 39 - components/vc-align/index.ts | 3 - components/vc-align/interface.ts | 60 - components/vc-align/util.ts | 60 - components/vc-cascader/Cascader.tsx | 585 - .../vc-cascader/OptionList/Checkbox.tsx | 44 - components/vc-cascader/OptionList/Column.tsx | 181 - components/vc-cascader/OptionList/index.tsx | 245 - .../vc-cascader/OptionList/useActive.ts | 31 - .../vc-cascader/OptionList/useKeyboard.ts | 193 - components/vc-cascader/context.ts | 36 - .../vc-cascader/hooks/useDisplayValues.ts | 63 - components/vc-cascader/hooks/useEntities.ts | 36 - .../vc-cascader/hooks/useMissingValues.ts | 26 - .../vc-cascader/hooks/useSearchConfig.ts | 41 - .../vc-cascader/hooks/useSearchOptions.ts | 77 - components/vc-cascader/index.tsx | 16 - components/vc-cascader/utils/commonUtil.ts | 51 - components/vc-cascader/utils/treeUtil.ts | 60 - components/vc-checkbox/Checkbox.tsx | 150 - components/vc-dialog/Content.tsx | 156 - components/vc-dialog/Dialog.tsx | 202 - components/vc-dialog/DialogWrap.tsx | 76 - components/vc-dialog/IDialogPropTypes.ts | 49 - components/vc-dialog/Mask.tsx | 24 - components/vc-dialog/index.ts | 7 - components/vc-dialog/util.ts | 46 - components/vc-drawer/index.ts | 4 - components/vc-drawer/src/DrawerChild.tsx | 257 - components/vc-drawer/src/DrawerWrapper.tsx | 100 - components/vc-drawer/src/IDrawerPropTypes.ts | 59 - components/vc-drawer/src/utils.ts | 112 - components/vc-dropdown/Dropdown.tsx | 144 - components/vc-dropdown/index.ts | 3 - components/vc-dropdown/placements.ts | 47 - components/vc-image/index.ts | 4 - components/vc-image/src/Image.tsx | 306 - components/vc-image/src/Preview.tsx | 427 - components/vc-image/src/PreviewGroup.tsx | 208 - .../src/getFixScaleEleTransPosition.ts | 61 - .../vc-image/src/hooks/useFrameSetState.ts | 31 - components/vc-input/BaseInput.tsx | 152 - components/vc-input/Input.tsx | 253 - components/vc-input/inputProps.ts | 121 - components/vc-input/utils/commonUtils.ts | 104 - components/vc-input/utils/types.ts | 3 - components/vc-mentions/index.ts | 6 - components/vc-mentions/src/DropdownMenu.tsx | 85 - components/vc-mentions/src/KeywordTrigger.tsx | 101 - components/vc-mentions/src/Mentions.tsx | 305 - components/vc-mentions/src/MentionsContext.ts | 15 - components/vc-mentions/src/Option.tsx | 30 - components/vc-mentions/src/mentionsProps.ts | 51 - components/vc-mentions/src/util.ts | 124 - .../vc-notification/HookNotification.tsx | 230 - components/vc-notification/Notice.tsx | 140 - components/vc-notification/Notification.tsx | 279 - components/vc-notification/index.ts | 5 - .../vc-notification/useNotification.tsx | 182 - components/vc-overflow/Item.tsx | 99 - components/vc-overflow/Overflow.tsx | 378 - components/vc-overflow/RawItem.tsx | 53 - components/vc-overflow/context.ts | 48 - components/vc-overflow/index.ts | 6 - components/vc-pagination/KeyCode.ts | 14 - components/vc-pagination/Options.tsx | 173 - components/vc-pagination/Pager.tsx | 68 - components/vc-pagination/Pagination.tsx | 682 - components/vc-pagination/index.ts | 2 - components/vc-pagination/locale/ar_EG.ts | 15 - components/vc-pagination/locale/az_AZ.ts | 15 - components/vc-pagination/locale/bg_BG.ts | 15 - components/vc-pagination/locale/bn_BD.ts | 15 - components/vc-pagination/locale/by_BY.ts | 14 - components/vc-pagination/locale/ca_ES.ts | 15 - components/vc-pagination/locale/cs_CZ.ts | 15 - components/vc-pagination/locale/da_DK.ts | 15 - components/vc-pagination/locale/de_DE.ts | 15 - components/vc-pagination/locale/el_GR.ts | 15 - components/vc-pagination/locale/en_GB.ts | 15 - components/vc-pagination/locale/en_US.ts | 15 - components/vc-pagination/locale/es_ES.ts | 15 - components/vc-pagination/locale/et_EE.ts | 15 - components/vc-pagination/locale/fa_IR.ts | 15 - components/vc-pagination/locale/fi_FI.ts | 15 - components/vc-pagination/locale/fr_BE.ts | 15 - components/vc-pagination/locale/fr_CA.ts | 15 - components/vc-pagination/locale/fr_FR.ts | 15 - components/vc-pagination/locale/ga_IE.ts | 15 - components/vc-pagination/locale/gl_ES.ts | 15 - components/vc-pagination/locale/he_IL.ts | 15 - components/vc-pagination/locale/hi_IN.ts | 15 - components/vc-pagination/locale/hr_HR.ts | 15 - components/vc-pagination/locale/hu_HU.ts | 15 - components/vc-pagination/locale/id_ID.ts | 15 - components/vc-pagination/locale/is_IS.ts | 15 - components/vc-pagination/locale/it_IT.ts | 15 - components/vc-pagination/locale/ja_JP.ts | 15 - components/vc-pagination/locale/ka_GE.ts | 14 - components/vc-pagination/locale/kk_KZ.ts | 15 - components/vc-pagination/locale/km_KH.ts | 15 - components/vc-pagination/locale/kmr_IQ.ts | 15 - components/vc-pagination/locale/kn_IN.ts | 15 - components/vc-pagination/locale/ko_KR.ts | 15 - components/vc-pagination/locale/lt_LT.ts | 15 - components/vc-pagination/locale/lv_LV.ts | 15 - components/vc-pagination/locale/mk_MK.ts | 15 - components/vc-pagination/locale/ml_IN.ts | 15 - components/vc-pagination/locale/mm_MM.ts | 15 - components/vc-pagination/locale/mn_MN.ts | 15 - components/vc-pagination/locale/ms_MY.ts | 15 - components/vc-pagination/locale/nb_NO.ts | 14 - components/vc-pagination/locale/nl_BE.ts | 15 - components/vc-pagination/locale/nl_NL.ts | 15 - components/vc-pagination/locale/pa_IN.ts | 15 - components/vc-pagination/locale/pb_IN.ts | 15 - components/vc-pagination/locale/pl_PL.ts | 15 - components/vc-pagination/locale/pt_BR.ts | 15 - components/vc-pagination/locale/pt_PT.ts | 15 - components/vc-pagination/locale/ro_RO.ts | 15 - components/vc-pagination/locale/ru_RU.ts | 15 - components/vc-pagination/locale/sk_SK.ts | 15 - components/vc-pagination/locale/sl_SI.ts | 15 - components/vc-pagination/locale/sr_RS.ts | 14 - components/vc-pagination/locale/sv_SE.ts | 15 - components/vc-pagination/locale/ta_IN.ts | 15 - components/vc-pagination/locale/th_TH.ts | 15 - components/vc-pagination/locale/tr_TR.ts | 15 - components/vc-pagination/locale/ug_CN.ts | 14 - components/vc-pagination/locale/uk_UA.ts | 15 - components/vc-pagination/locale/ur_PK.ts | 15 - components/vc-pagination/locale/vi_VN.ts | 15 - components/vc-pagination/locale/zh_CN.ts | 15 - components/vc-pagination/locale/zh_TW.ts | 15 - components/vc-picker/PanelContext.tsx | 38 - components/vc-picker/Picker.tsx | 641 - components/vc-picker/PickerPanel.tsx | 620 - components/vc-picker/PickerTrigger.tsx | 103 - components/vc-picker/PresetPanel.tsx | 44 - components/vc-picker/RangeContext.tsx | 75 - components/vc-picker/RangePicker.tsx | 1326 - components/vc-picker/generate/dateFns.ts | 139 - components/vc-picker/generate/dayjs.ts | 249 - components/vc-picker/generate/index.ts | 52 - components/vc-picker/generate/moment.ts | 158 - .../vc-picker/hooks/useCellClassName.ts | 97 - components/vc-picker/hooks/useHoverValue.ts | 46 - components/vc-picker/hooks/useMergeProps.ts | 8 - components/vc-picker/hooks/usePickerInput.ts | 176 - components/vc-picker/hooks/usePresets.ts | 30 - .../vc-picker/hooks/useRangeDisabled.ts | 114 - .../vc-picker/hooks/useRangeViewDates.ts | 128 - .../vc-picker/hooks/useTextValueMapping.ts | 37 - components/vc-picker/hooks/useValueTexts.ts | 51 - components/vc-picker/index.tsx | 12 - components/vc-picker/interface.ts | 115 - components/vc-picker/locale/ar_EG.ts | 32 - components/vc-picker/locale/az_AZ.ts | 33 - components/vc-picker/locale/bg_BG.ts | 31 - components/vc-picker/locale/bn_BD.ts | 33 - components/vc-picker/locale/by_BY.ts | 33 - components/vc-picker/locale/ca_ES.ts | 32 - components/vc-picker/locale/cs_CZ.ts | 32 - components/vc-picker/locale/da_DK.ts | 32 - components/vc-picker/locale/de_DE.ts | 32 - components/vc-picker/locale/el_GR.ts | 32 - components/vc-picker/locale/en_GB.ts | 32 - components/vc-picker/locale/en_US.ts | 33 - components/vc-picker/locale/es_ES.ts | 32 - components/vc-picker/locale/es_MX.ts | 33 - components/vc-picker/locale/et_EE.ts | 32 - components/vc-picker/locale/fa_IR.ts | 32 - components/vc-picker/locale/fi_FI.ts | 32 - components/vc-picker/locale/fr_BE.ts | 32 - components/vc-picker/locale/fr_CA.ts | 32 - components/vc-picker/locale/fr_FR.ts | 32 - components/vc-picker/locale/ga_IE.ts | 33 - components/vc-picker/locale/gl_ES.ts | 32 - components/vc-picker/locale/he_IL.ts | 33 - components/vc-picker/locale/hi_IN.ts | 33 - components/vc-picker/locale/hr_HR.ts | 33 - components/vc-picker/locale/hu_HU.ts | 32 - components/vc-picker/locale/id_ID.ts | 33 - components/vc-picker/locale/is_IS.ts | 32 - components/vc-picker/locale/it_IT.ts | 32 - components/vc-picker/locale/ja_JP.ts | 32 - components/vc-picker/locale/ka_GE.ts | 33 - components/vc-picker/locale/kk_KZ.ts | 32 - components/vc-picker/locale/km_KH.ts | 32 - components/vc-picker/locale/kmr_IQ.ts | 32 - components/vc-picker/locale/kn_IN.ts | 33 - components/vc-picker/locale/ko_KR.ts | 32 - components/vc-picker/locale/lt_LT.ts | 32 - components/vc-picker/locale/lv_LV.ts | 32 - components/vc-picker/locale/mk_MK.ts | 32 - components/vc-picker/locale/ml_IN.ts | 33 - components/vc-picker/locale/mm_MM.ts | 33 - components/vc-picker/locale/mn_MN.ts | 33 - components/vc-picker/locale/ms_MY.ts | 32 - components/vc-picker/locale/nb_NO.ts | 33 - components/vc-picker/locale/nl_BE.ts | 32 - components/vc-picker/locale/nl_NL.ts | 32 - components/vc-picker/locale/pl_PL.ts | 32 - components/vc-picker/locale/pt_BR.ts | 34 - components/vc-picker/locale/pt_PT.ts | 34 - components/vc-picker/locale/ro_RO.ts | 33 - components/vc-picker/locale/ru_RU.ts | 32 - components/vc-picker/locale/sk_SK.ts | 32 - components/vc-picker/locale/sl_SI.ts | 32 - components/vc-picker/locale/sr_RS.ts | 32 - components/vc-picker/locale/sv_SE.ts | 32 - components/vc-picker/locale/ta_IN.ts | 33 - components/vc-picker/locale/th_TH.ts | 32 - components/vc-picker/locale/tr_TR.ts | 32 - components/vc-picker/locale/ug_CN.ts | 31 - components/vc-picker/locale/uk_UA.ts | 32 - components/vc-picker/locale/ur_PK.ts | 33 - components/vc-picker/locale/vi_VN.ts | 33 - components/vc-picker/locale/zh_CN.ts | 32 - components/vc-picker/locale/zh_TW.ts | 33 - .../vc-picker/panels/DatePanel/DateBody.tsx | 119 - .../vc-picker/panels/DatePanel/DateHeader.tsx | 106 - .../vc-picker/panels/DatePanel/index.tsx | 117 - .../vc-picker/panels/DatetimePanel/index.tsx | 166 - .../panels/DecadePanel/DecadeBody.tsx | 68 - .../panels/DecadePanel/DecadeHeader.tsx | 45 - .../vc-picker/panels/DecadePanel/index.tsx | 80 - components/vc-picker/panels/Header.tsx | 100 - .../vc-picker/panels/MonthPanel/MonthBody.tsx | 89 - .../panels/MonthPanel/MonthHeader.tsx | 51 - .../vc-picker/panels/MonthPanel/index.tsx | 83 - components/vc-picker/panels/PanelBody.tsx | 146 - .../panels/QuarterPanel/QuarterBody.tsx | 71 - .../panels/QuarterPanel/QuarterHeader.tsx | 50 - .../vc-picker/panels/QuarterPanel/index.tsx | 76 - .../vc-picker/panels/TimePanel/TimeBody.tsx | 314 - .../vc-picker/panels/TimePanel/TimeHeader.tsx | 42 - .../panels/TimePanel/TimeUnitColumn.tsx | 102 - .../vc-picker/panels/TimePanel/index.tsx | 109 - .../vc-picker/panels/WeekPanel/index.tsx | 44 - .../vc-picker/panels/YearPanel/YearBody.tsx | 78 - .../vc-picker/panels/YearPanel/YearHeader.tsx | 49 - .../vc-picker/panels/YearPanel/index.tsx | 85 - components/vc-picker/utils/dateUtil.ts | 321 - components/vc-picker/utils/getExtraFooter.tsx | 13 - components/vc-picker/utils/getRanges.tsx | 66 - components/vc-picker/utils/miscUtil.ts | 55 - components/vc-picker/utils/timeUtil.ts | 60 - components/vc-picker/utils/uiUtil.ts | 279 - components/vc-picker/utils/warnUtil.ts | 17 - components/vc-progress/index.ts | 9 - components/vc-progress/src/Circle.tsx | 177 - components/vc-progress/src/Line.tsx | 113 - components/vc-progress/src/common.ts | 43 - components/vc-progress/src/index.ts | 12 - components/vc-progress/src/types.ts | 30 - components/vc-resize-observer/index.tsx | 139 - components/vc-select/BaseSelect.tsx | 922 - components/vc-select/OptGroup.tsx | 15 - components/vc-select/Option.tsx | 18 - components/vc-select/OptionList.tsx | 393 - components/vc-select/Select.tsx | 658 - components/vc-select/SelectContext.ts | 36 - components/vc-select/SelectTrigger.tsx | 192 - components/vc-select/Selector/Input.tsx | 171 - .../vc-select/Selector/MultipleSelector.tsx | 301 - .../vc-select/Selector/SingleSelector.tsx | 186 - components/vc-select/Selector/index.tsx | 283 - components/vc-select/Selector/interface.ts | 28 - components/vc-select/TransBtn.tsx | 68 - components/vc-select/hooks/useBaseProps.ts | 24 - components/vc-select/hooks/useCache.ts | 55 - components/vc-select/hooks/useDelayReset.ts | 32 - .../vc-select/hooks/useFilterOptions.ts | 86 - components/vc-select/hooks/useId.ts | 30 - components/vc-select/hooks/useLock.ts | 29 - components/vc-select/hooks/useOptions.ts | 58 - .../hooks/useSelectTriggerControl.ts | 32 - components/vc-select/index.ts | 13 - components/vc-select/interface.ts | 11 - components/vc-select/utils/commonUtil.ts | 12 - components/vc-select/utils/keyUtil.ts | 34 - components/vc-select/utils/legacyUtil.ts | 61 - components/vc-select/utils/platformUtil.ts | 4 - components/vc-select/utils/valueUtil.ts | 128 - .../vc-select/utils/warningPropsUtil.ts | 135 - components/vc-slick/arrows.jsx | 119 - components/vc-slick/default-props.js | 56 - components/vc-slick/dots.jsx | 86 - components/vc-slick/index.js | 4 - components/vc-slick/initial-state.js | 27 - components/vc-slick/inner-slider.jsx | 762 - components/vc-slick/slider.jsx | 200 - components/vc-slick/track.jsx | 197 - components/vc-slick/utils/innerSliderUtils.js | 790 - components/vc-slider/index.ts | 4 - components/vc-slider/src/Handle.tsx | 147 - components/vc-slider/src/Range.tsx | 526 - components/vc-slider/src/Slider.tsx | 225 - components/vc-slider/src/common/Marks.tsx | 75 - components/vc-slider/src/common/Steps.tsx | 75 - components/vc-slider/src/common/Track.tsx | 30 - .../vc-slider/src/common/createSlider.tsx | 369 - components/vc-slider/src/index.ts | 8 - components/vc-slider/src/utils.ts | 134 - components/vc-steps/Step.tsx | 199 - components/vc-steps/Steps.tsx | 145 - components/vc-steps/index.ts | 6 - components/vc-steps/interface.ts | 16 - components/vc-table/Body/BodyRow.tsx | 223 - components/vc-table/Body/ExpandedRow.tsx | 67 - components/vc-table/Body/MeasureCell.tsx | 34 - components/vc-table/Body/index.tsx | 145 - components/vc-table/Cell/index.tsx | 369 - components/vc-table/ColGroup.tsx | 38 - components/vc-table/FixedHolder/index.tsx | 190 - components/vc-table/Footer/Cell.tsx | 52 - components/vc-table/Footer/Row.tsx | 9 - components/vc-table/Footer/Summary.tsx | 26 - components/vc-table/Footer/index.tsx | 40 - components/vc-table/Header/DragHandle.tsx | 159 - components/vc-table/Header/Header.tsx | 128 - components/vc-table/Header/HeaderRow.tsx | 111 - components/vc-table/Panel/index.tsx | 7 - components/vc-table/Table.tsx | 866 - components/vc-table/constant.ts | 1 - components/vc-table/context/BodyContext.tsx | 40 - .../vc-table/context/ExpandedRowContext.tsx | 18 - components/vc-table/context/HoverContext.tsx | 21 - components/vc-table/context/ResizeContext.tsx | 17 - components/vc-table/context/StickyContext.tsx | 13 - .../vc-table/context/SummaryContext.tsx | 22 - components/vc-table/context/TableContext.tsx | 33 - components/vc-table/hooks/useColumns.tsx | 250 - .../vc-table/hooks/useFlattenRecords.ts | 91 - components/vc-table/hooks/useFrame.ts | 62 - components/vc-table/hooks/useSticky.ts | 40 - components/vc-table/hooks/useStickyOffsets.ts | 55 - components/vc-table/index.ts | 19 - components/vc-table/interface.ts | 262 - components/vc-table/stickyScrollBar.tsx | 245 - components/vc-table/sugar/Column.tsx | 13 - components/vc-table/sugar/ColumnGroup.tsx | 13 - components/vc-table/utils/expandUtil.tsx | 51 - components/vc-table/utils/fixUtil.ts | 69 - components/vc-table/utils/legacyUtil.ts | 61 - components/vc-table/utils/valueUtil.tsx | 91 - components/vc-tooltip/index.ts | 4 - components/vc-tooltip/src/Content.tsx | 29 - components/vc-tooltip/src/Tooltip.tsx | 136 - components/vc-tooltip/src/placements.ts | 83 - components/vc-tour/Mask.tsx | 131 - components/vc-tour/Tour.tsx | 259 - components/vc-tour/TourStep/DefaultPanel.tsx | 56 - components/vc-tour/TourStep/index.tsx | 26 - components/vc-tour/hooks/useTarget.ts | 101 - components/vc-tour/index.ts | 6 - components/vc-tour/interface.ts | 36 - components/vc-tour/placements.tsx | 79 - components/vc-tour/util.ts | 7 - components/vc-tree-select/LegacyContext.tsx | 65 - components/vc-tree-select/OptionList.tsx | 262 - components/vc-tree-select/TreeNode.tsx | 15 - components/vc-tree-select/TreeSelect.tsx | 765 - .../vc-tree-select/TreeSelectContext.ts | 26 - components/vc-tree-select/hooks/useCache.ts | 43 - .../vc-tree-select/hooks/useCheckedKeys.ts | 38 - .../vc-tree-select/hooks/useDataEntities.ts | 42 - .../vc-tree-select/hooks/useFilterTreeData.ts | 63 - .../vc-tree-select/hooks/useTreeData.ts | 74 - components/vc-tree-select/index.tsx | 10 - components/vc-tree-select/interface.ts | 101 - .../vc-tree-select/utils/legacyUtil.tsx | 180 - .../vc-tree-select/utils/strategyUtil.ts | 48 - components/vc-tree-select/utils/valueUtil.ts | 50 - .../vc-tree-select/utils/warningPropsUtil.ts | 35 - components/vc-tree/DropIndicator.tsx | 34 - components/vc-tree/Indent.tsx | 31 - components/vc-tree/MotionTreeNode.tsx | 124 - components/vc-tree/NodeList.tsx | 304 - components/vc-tree/Tree.tsx | 1241 - components/vc-tree/TreeNode.tsx | 584 - components/vc-tree/contextTypes.ts | 150 - components/vc-tree/index.ts | 8 - components/vc-tree/interface.tsx | 99 - components/vc-tree/props.ts | 255 - components/vc-tree/useMaxLevel.ts | 38 - components/vc-tree/util.tsx | 354 - components/vc-tree/utils/conductUtil.ts | 241 - components/vc-tree/utils/diffUtil.ts | 45 - components/vc-tree/utils/treeUtil.ts | 463 - components/vc-trigger/Popup/Mask.tsx | 37 - .../vc-trigger/Popup/MobilePopupInner.tsx | 59 - components/vc-trigger/Popup/PopupInner.tsx | 228 - components/vc-trigger/Popup/index.tsx | 56 - components/vc-trigger/Popup/interface.ts | 60 - .../vc-trigger/Popup/useStretchStyle.ts | 41 - .../vc-trigger/Popup/useVisibleStatus.ts | 97 - components/vc-trigger/Trigger.tsx | 715 - components/vc-trigger/context.ts | 38 - components/vc-trigger/index.ts | 8 - components/vc-trigger/interface.ts | 146 - components/vc-trigger/utils/alignUtil.ts | 40 - components/vc-trigger/utils/motionUtil.ts | 22 - components/vc-upload/AjaxUploader.tsx | 319 - components/vc-upload/Upload.tsx | 42 - components/vc-upload/attr-accept.ts | 53 - components/vc-upload/index.ts | 7 - components/vc-upload/interface.tsx | 83 - components/vc-upload/request.ts | 107 - components/vc-upload/traverseFileTree.ts | 75 - components/vc-upload/uid.ts | 7 - components/vc-util/Children/toArray.ts | 25 - components/vc-util/Dom/addEventListener.js | 22 - components/vc-util/Dom/class.js | 28 - components/vc-util/Dom/contains.ts | 12 - components/vc-util/Dom/css.ts | 133 - components/vc-util/Dom/dynamicCSS.ts | 172 - components/vc-util/Dom/isVisible.ts | 25 - components/vc-util/Dom/scrollLocker.ts | 130 - components/vc-util/devWarning.ts | 7 - components/vc-util/get.ts | 13 - components/vc-util/isEqual.ts | 52 - components/vc-util/isMobile.ts | 15 - components/vc-util/set.ts | 51 - components/vc-util/warning.ts | 42 - components/vc-virtual-list/Filler.tsx | 71 - components/vc-virtual-list/Item.tsx | 25 - components/vc-virtual-list/List.tsx | 548 - components/vc-virtual-list/ScrollBar.tsx | 266 - .../vc-virtual-list/hooks/useFrameWheel.ts | 61 - .../vc-virtual-list/hooks/useHeights.tsx | 66 - .../hooks/useMobileTouchMove.ts | 85 - .../vc-virtual-list/hooks/useOriginScroll.ts | 33 - .../vc-virtual-list/hooks/useScrollTo.tsx | 112 - components/vc-virtual-list/index.ts | 4 - components/vc-virtual-list/interface.ts | 14 - .../vc-virtual-list/utils/algorithmUtil.js | 81 - components/vc-virtual-list/utils/isFirefox.ts | 3 - components/vc-virtual-list/utils/itemUtil.js | 147 - components/version/index.ts | 5 - components/version/token-meta.json | 1 - components/version/token.json | 1 - components/version/version.ts | 1 - .../__tests__/__snapshots__/demo.test.js.snap | 246 - .../__snapshots__/index.test.js.snap | 7 - components/watermark/__tests__/demo.test.js | 3 - components/watermark/__tests__/index.test.js | 29 - components/watermark/demo/basic.vue | 23 - components/watermark/demo/custom.vue | 111 - components/watermark/demo/image.vue | 27 - components/watermark/demo/index.vue | 28 - components/watermark/demo/multi-line.vue | 23 - components/watermark/index.en-US.md | 42 - components/watermark/index.tsx | 259 - components/watermark/index.zh-CN.md | 43 - components/watermark/utils.ts | 42 - index-style-only.js | 24 - index-with-locales.js | 12 - index.esm.js | 1 - index.js | 3 - package.json | 17 +- packages/ui/package.json | 10 +- packages/ui/src/shims.vue.d.ts | 8 + packages/ui/tsconfig.json | 1 + plugin/docs/index.ts | 31 - plugin/docs/vueToMarkdown.ts | 44 - plugin/md/index.ts | 22 - plugin/md/markdown/markdown.ts | 112 - plugin/md/markdown/plugins/component.ts | 97 - plugin/md/markdown/plugins/containers.ts | 44 - plugin/md/markdown/plugins/header.ts | 25 - plugin/md/markdown/plugins/highlight.ts | 49 - plugin/md/markdown/plugins/highlightLines.ts | 50 - plugin/md/markdown/plugins/hoist.ts | 20 - plugin/md/markdown/plugins/lineNumbers.ts | 25 - plugin/md/markdown/plugins/link.ts | 69 - plugin/md/markdown/plugins/preWrapper.ts | 28 - plugin/md/markdown/plugins/slugify.ts | 25 - plugin/md/markdown/plugins/snippet.ts | 46 - plugin/md/markdownToVue.ts | 187 - plugin/md/utils/fetchCode.ts | 30 - plugin/md/utils/parseHeader.ts | 58 - plugin/md/utils/query.ts | 27 - plugin/md/utils/tsToJs.ts | 30 - plugin/shared.ts | 42 - pnpm-workspace.yaml | 4 + renovate.json | 3 - scripts/.npmrc.template | 3 - scripts/collect-token-statistic.js | 80 - scripts/commitizen.js | 25 - scripts/compact-vars.js | 13 - scripts/css-variable-sync.js | 222 - scripts/deploy-to-gh-pages.sh | 31 - scripts/generate-version.js | 10 - scripts/gulpfile.js | 129 - scripts/prepub.js | 146 - scripts/prettier.js | 83 - scripts/run.js | 52 - typings/global.d.ts | 273 - 2538 files changed, 31 insertions(+), 583128 deletions(-) delete mode 100644 .github/FUNDING.yml delete mode 100644 .github/ISSUE_TEMPLATE/config.yml delete mode 100644 .github/PULL_REQUEST_TEMPLATE/pr_cn.md delete mode 100644 .github/PULL_REQUEST_TEMPLATE/pr_en.md delete mode 100644 .github/issue-close-app.yml delete mode 100644 .github/workflows/codecov.yml delete mode 100644 .github/workflows/emoji-helper.yml delete mode 100644 .github/workflows/issue-close-require.yml delete mode 100644 .github/workflows/issue-labeled.yml delete mode 100644 .github/workflows/issue-open-check.yml delete mode 100644 .github/workflows/lock-issue.yml delete mode 100644 .github/workflows/stale.yml delete mode 100644 .github/workflows/test.yml delete mode 100644 .husky/.gitignore delete mode 100644 BACKERS.md delete mode 100644 CHANGELOG.en-US.md delete mode 100644 CHANGELOG.zh-CN.md delete mode 100644 README-zh_CN.md delete mode 100644 antd-tools/apiCollection.js delete mode 100644 antd-tools/cli/index.js delete mode 100644 antd-tools/cli/run.js delete mode 100644 antd-tools/generator-types/README.md delete mode 100644 antd-tools/generator-types/index.js delete mode 100644 antd-tools/generator-types/src/formatter.ts delete mode 100644 antd-tools/generator-types/src/index.ts delete mode 100644 antd-tools/generator-types/src/parser.ts delete mode 100644 antd-tools/generator-types/src/type.ts delete mode 100644 antd-tools/generator-types/src/utils.ts delete mode 100644 antd-tools/generator-types/src/web-types.ts delete mode 100644 antd-tools/generator-types/tsconfig.json delete mode 100644 antd-tools/getBabelCommonConfig.js delete mode 100644 antd-tools/getNpm.js delete mode 100644 antd-tools/getTSCommonConfig.js delete mode 100644 antd-tools/getWebpackConfig.js delete mode 100644 antd-tools/gulpfile.js delete mode 100644 antd-tools/replaceLib.js delete mode 100644 antd-tools/runCmd.js delete mode 100644 antd-tools/sortApiTable.js delete mode 100644 antd-tools/utils/CleanUpStatsPlugin.js delete mode 100644 antd-tools/utils/get-npm-args.js delete mode 100644 antd-tools/utils/getChangelog.js delete mode 100644 antd-tools/utils/getRunCmdEnv.js delete mode 100644 antd-tools/utils/projectHelper.js rename logo.png => apps/playground/assets/logo.png (100%) delete mode 100644 components/__tests__/util/domHook.js delete mode 100644 components/_util/ActionButton.tsx delete mode 100644 components/_util/BaseInput.tsx delete mode 100644 components/_util/BaseInputInner.tsx delete mode 100644 components/_util/BaseMixin.ts delete mode 100644 components/_util/EventInterface.ts delete mode 100644 components/_util/KeyCode.ts delete mode 100644 components/_util/Portal.tsx delete mode 100644 components/_util/PortalWrapper.tsx delete mode 100644 components/_util/__mocks__/Portal.tsx delete mode 100644 components/_util/__mocks__/RenderSlot.tsx delete mode 100644 components/_util/__tests__/easings.test.js delete mode 100644 components/_util/__tests__/scrollTo.test.js delete mode 100644 components/_util/__tests__/unreachableException.test.js delete mode 100644 components/_util/__tests__/vNode.test.js delete mode 100644 components/_util/canUseDom.ts delete mode 100644 components/_util/classNames.ts delete mode 100644 components/_util/collapseMotion.tsx delete mode 100644 components/_util/colors.ts delete mode 100644 components/_util/component-classes.ts delete mode 100644 components/_util/copy-to-clipboard/index.ts delete mode 100644 components/_util/copy-to-clipboard/toggle-selection.ts delete mode 100644 components/_util/createContext.ts delete mode 100644 components/_util/createRef.ts delete mode 100644 components/_util/cssinjs/Cache.ts delete mode 100644 components/_util/cssinjs/Keyframes.ts delete mode 100644 components/_util/cssinjs/StyleContext.tsx delete mode 100644 components/_util/cssinjs/extractStyle.ts delete mode 100644 components/_util/cssinjs/hooks/useCSSVarRegister.ts delete mode 100644 components/_util/cssinjs/hooks/useCacheToken.tsx delete mode 100644 components/_util/cssinjs/hooks/useCompatibleInsertionEffect.tsx delete mode 100644 components/_util/cssinjs/hooks/useEffectCleanupRegister.ts delete mode 100644 components/_util/cssinjs/hooks/useGlobalCache.tsx delete mode 100644 components/_util/cssinjs/hooks/useHMR.ts delete mode 100644 components/_util/cssinjs/hooks/useStyleRegister.tsx delete mode 100644 components/_util/cssinjs/index.ts delete mode 100644 components/_util/cssinjs/linters/NaNLinter.ts delete mode 100644 components/_util/cssinjs/linters/contentQuotesLinter.ts delete mode 100644 components/_util/cssinjs/linters/hashedAnimationLinter.ts delete mode 100644 components/_util/cssinjs/linters/index.ts delete mode 100644 components/_util/cssinjs/linters/interface.ts delete mode 100644 components/_util/cssinjs/linters/legacyNotSelectorLinter.ts delete mode 100644 components/_util/cssinjs/linters/logicalPropertiesLinter.ts delete mode 100644 components/_util/cssinjs/linters/parentSelectorLinter.ts delete mode 100644 components/_util/cssinjs/linters/utils.ts delete mode 100644 components/_util/cssinjs/theme/Theme.ts delete mode 100644 components/_util/cssinjs/theme/ThemeCache.ts delete mode 100644 components/_util/cssinjs/theme/createTheme.ts delete mode 100644 components/_util/cssinjs/theme/index.ts delete mode 100644 components/_util/cssinjs/theme/interface.ts delete mode 100644 components/_util/cssinjs/transformers/interface.ts delete mode 100644 components/_util/cssinjs/transformers/legacyLogicalProperties.ts delete mode 100644 components/_util/cssinjs/transformers/px2rem.ts delete mode 100644 components/_util/cssinjs/util/cacheMapUtil.ts delete mode 100644 components/_util/cssinjs/util/css-variables.ts delete mode 100644 components/_util/cssinjs/util/index.ts delete mode 100644 components/_util/debouncedWatch.ts delete mode 100644 components/_util/eagerComputed.ts delete mode 100644 components/_util/easings.ts delete mode 100644 components/_util/env.ts delete mode 100644 components/_util/extendsObject.ts delete mode 100644 components/_util/firstNotUndefined.ts delete mode 100644 components/_util/gapSize.ts delete mode 100644 components/_util/getRequestAnimationFrame.ts delete mode 100644 components/_util/getScroll.ts delete mode 100644 components/_util/getScrollBarSize.ts delete mode 100644 components/_util/hooks/_vueuse/_configurable.ts delete mode 100644 components/_util/hooks/_vueuse/is.ts delete mode 100644 components/_util/hooks/_vueuse/resolveUnref.ts delete mode 100644 components/_util/hooks/_vueuse/tryOnMounted.ts delete mode 100644 components/_util/hooks/_vueuse/tryOnScopeDispose.ts delete mode 100644 components/_util/hooks/_vueuse/types.ts delete mode 100644 components/_util/hooks/_vueuse/unrefElement.ts delete mode 100644 components/_util/hooks/_vueuse/useElementSize.ts delete mode 100644 components/_util/hooks/_vueuse/useMutationObserver.ts delete mode 100644 components/_util/hooks/_vueuse/useResizeObserver.ts delete mode 100644 components/_util/hooks/_vueuse/useSupported.ts delete mode 100644 components/_util/hooks/useBreakpoint.ts delete mode 100644 components/_util/hooks/useDestroyed.ts delete mode 100644 components/_util/hooks/useFlexGapSupport.ts delete mode 100644 components/_util/hooks/useId.ts delete mode 100644 components/_util/hooks/useLayoutEffect.ts delete mode 100644 components/_util/hooks/useLayoutState.ts delete mode 100644 components/_util/hooks/useMemo.ts delete mode 100644 components/_util/hooks/useMergedState.ts delete mode 100644 components/_util/hooks/useRefs.ts delete mode 100644 components/_util/hooks/useScrollLocker.ts delete mode 100644 components/_util/hooks/useState.ts delete mode 100644 components/_util/isNumeric.ts delete mode 100644 components/_util/isValid.ts delete mode 100644 components/_util/isValidValue.ts delete mode 100644 components/_util/json2mq.ts delete mode 100644 components/_util/omit.ts delete mode 100644 components/_util/pickAttrs.ts delete mode 100644 components/_util/placements.ts delete mode 100644 components/_util/props-util/index.ts delete mode 100644 components/_util/props-util/initDefaultProps.ts delete mode 100644 components/_util/raf.ts delete mode 100644 components/_util/reactivePick.ts delete mode 100644 components/_util/requestAnimationTimeout.ts delete mode 100644 components/_util/responsiveObserve.ts delete mode 100644 components/_util/scrollTo.ts delete mode 100644 components/_util/setStyle.ts delete mode 100644 components/_util/shallowequal.ts delete mode 100644 components/_util/static-style-extract/__tests__/__snapshots__/index.test.js.snap delete mode 100644 components/_util/static-style-extract/__tests__/index.test.js delete mode 100644 components/_util/static-style-extract/index.tsx delete mode 100644 components/_util/static-style-extract/interface.ts delete mode 100644 components/_util/statusUtils.tsx delete mode 100644 components/_util/styleChecker.ts delete mode 100644 components/_util/supportsPassive.js delete mode 100644 components/_util/throttleByAnimationFrame.ts delete mode 100644 components/_util/toReactive.ts delete mode 100644 components/_util/transButton.tsx delete mode 100644 components/_util/transKeys.ts delete mode 100644 components/_util/transition.tsx delete mode 100644 components/_util/type.ts delete mode 100644 components/_util/unreachableException.ts delete mode 100644 components/_util/util.ts delete mode 100644 components/_util/vnode.ts delete mode 100644 components/_util/vue-types/index.ts delete mode 100644 components/_util/warning.ts delete mode 100644 components/_util/wave/WaveEffect.tsx delete mode 100644 components/_util/wave/index.tsx delete mode 100644 components/_util/wave/style.ts delete mode 100644 components/_util/wave/useWave.ts delete mode 100644 components/_util/wave/util.ts delete mode 100644 components/affix/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/affix/__tests__/demo.test.js delete mode 100644 components/affix/__tests__/index.test.js delete mode 100644 components/affix/demo/basic.vue delete mode 100644 components/affix/demo/index.vue delete mode 100644 components/affix/demo/on-change.vue delete mode 100644 components/affix/demo/target.vue delete mode 100644 components/affix/index.en-US.md delete mode 100644 components/affix/index.tsx delete mode 100644 components/affix/index.zh-CN.md delete mode 100644 components/affix/style/index.ts delete mode 100644 components/affix/utils.ts delete mode 100644 components/alert/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/alert/__tests__/demo.test.js delete mode 100644 components/alert/__tests__/index.test.js delete mode 100644 components/alert/demo/action.vue delete mode 100644 components/alert/demo/banner.vue delete mode 100644 components/alert/demo/basic.vue delete mode 100644 components/alert/demo/closable.vue delete mode 100644 components/alert/demo/close-text.vue delete mode 100644 components/alert/demo/custom-icon.vue delete mode 100644 components/alert/demo/description.vue delete mode 100644 components/alert/demo/icon.vue delete mode 100644 components/alert/demo/index.vue delete mode 100644 components/alert/demo/smooth-closed.vue delete mode 100644 components/alert/demo/style.vue delete mode 100644 components/alert/index.en-US.md delete mode 100644 components/alert/index.tsx delete mode 100644 components/alert/index.zh-CN.md delete mode 100644 components/alert/style/index.ts delete mode 100644 components/anchor/Anchor.tsx delete mode 100644 components/anchor/AnchorLink.tsx delete mode 100644 components/anchor/__tests__/Anchor.test.js delete mode 100644 components/anchor/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/anchor/__tests__/demo.test.js delete mode 100644 components/anchor/context.ts delete mode 100644 components/anchor/demo/basic.vue delete mode 100644 components/anchor/demo/customizeHighlight.vue delete mode 100644 components/anchor/demo/horizontal.vue delete mode 100644 components/anchor/demo/index.vue delete mode 100644 components/anchor/demo/onChange.vue delete mode 100644 components/anchor/demo/onClick.vue delete mode 100644 components/anchor/demo/static.vue delete mode 100644 components/anchor/demo/targetOffset.vue delete mode 100644 components/anchor/index.en-US.md delete mode 100644 components/anchor/index.tsx delete mode 100644 components/anchor/index.zh-CN.md delete mode 100644 components/anchor/style/index.ts delete mode 100644 components/app/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/app/__tests__/demo.test.js delete mode 100644 components/app/context.ts delete mode 100644 components/app/demo/basic.vue delete mode 100644 components/app/demo/index.vue delete mode 100644 components/app/demo/myPage.vue delete mode 100644 components/app/index.en-US.md delete mode 100644 components/app/index.tsx delete mode 100644 components/app/index.zh-CN.md delete mode 100644 components/app/style/index.ts delete mode 100644 components/auto-complete/OptGroup.tsx delete mode 100644 components/auto-complete/Option.tsx delete mode 100644 components/auto-complete/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/auto-complete/__tests__/demo.test.js delete mode 100644 components/auto-complete/__tests__/index.test.js delete mode 100644 components/auto-complete/demo/allow-clear.vue delete mode 100644 components/auto-complete/demo/basic.vue delete mode 100644 components/auto-complete/demo/border-less.vue delete mode 100644 components/auto-complete/demo/certain-category.vue delete mode 100644 components/auto-complete/demo/custom.vue delete mode 100644 components/auto-complete/demo/index.vue delete mode 100644 components/auto-complete/demo/non-case-sensitive.vue delete mode 100644 components/auto-complete/demo/options.vue delete mode 100644 components/auto-complete/demo/status.vue delete mode 100644 components/auto-complete/demo/uncertain-category.vue delete mode 100644 components/auto-complete/index.en-US.md delete mode 100644 components/auto-complete/index.tsx delete mode 100644 components/auto-complete/index.zh-CN.md delete mode 100644 components/avatar/Avatar.tsx delete mode 100644 components/avatar/AvatarContext.ts delete mode 100644 components/avatar/Group.tsx delete mode 100644 components/avatar/__tests__/Avatar.test.js delete mode 100644 components/avatar/__tests__/__snapshots__/Avatar.test.js.snap delete mode 100644 components/avatar/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/avatar/__tests__/demo.test.js delete mode 100644 components/avatar/demo/badge.vue delete mode 100644 components/avatar/demo/basic.vue delete mode 100644 components/avatar/demo/dynamic.vue delete mode 100644 components/avatar/demo/group.vue delete mode 100644 components/avatar/demo/index.vue delete mode 100644 components/avatar/demo/responsive.vue delete mode 100644 components/avatar/demo/type.vue delete mode 100644 components/avatar/index.en-US.md delete mode 100644 components/avatar/index.ts delete mode 100644 components/avatar/index.zh-CN.md delete mode 100644 components/avatar/style/index.ts delete mode 100644 components/badge/Badge.tsx delete mode 100644 components/badge/Ribbon.tsx delete mode 100644 components/badge/ScrollNumber.tsx delete mode 100644 components/badge/SingleNumber.tsx delete mode 100644 components/badge/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/badge/__tests__/__snapshots__/index.test.js.snap delete mode 100644 components/badge/__tests__/demo.test.js delete mode 100644 components/badge/__tests__/index.test.js delete mode 100644 components/badge/demo/basic.vue delete mode 100644 components/badge/demo/change.vue delete mode 100644 components/badge/demo/colors.vue delete mode 100644 components/badge/demo/dot.vue delete mode 100644 components/badge/demo/index.vue delete mode 100644 components/badge/demo/link.vue delete mode 100644 components/badge/demo/no-wrapper.vue delete mode 100644 components/badge/demo/overflow.vue delete mode 100644 components/badge/demo/ribbon.vue delete mode 100644 components/badge/demo/status.vue delete mode 100644 components/badge/demo/title.vue delete mode 100644 components/badge/index.en_US.md delete mode 100644 components/badge/index.ts delete mode 100644 components/badge/index.zh-CN.md delete mode 100644 components/badge/style/index.ts delete mode 100644 components/breadcrumb/Breadcrumb.tsx delete mode 100644 components/breadcrumb/BreadcrumbItem.tsx delete mode 100644 components/breadcrumb/BreadcrumbSeparator.tsx delete mode 100644 components/breadcrumb/__tests__/Breadcrumb.test.js delete mode 100644 components/breadcrumb/__tests__/__snapshots__/Breadcrumb.test.js.snap delete mode 100644 components/breadcrumb/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/breadcrumb/__tests__/demo.test.js delete mode 100644 components/breadcrumb/demo/basic.vue delete mode 100644 components/breadcrumb/demo/index.vue delete mode 100644 components/breadcrumb/demo/overlay.vue delete mode 100644 components/breadcrumb/demo/router.vue delete mode 100644 components/breadcrumb/demo/separator-indepent.vue delete mode 100644 components/breadcrumb/demo/separator.vue delete mode 100644 components/breadcrumb/demo/withIcon.vue delete mode 100644 components/breadcrumb/index.en-US.md delete mode 100644 components/breadcrumb/index.ts delete mode 100644 components/breadcrumb/index.zh-CN.md delete mode 100644 components/breadcrumb/style/index.ts delete mode 100644 components/button/LoadingIcon.tsx delete mode 100644 components/button/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/button/__tests__/__snapshots__/index.test.js.snap delete mode 100644 components/button/__tests__/demo.test.js delete mode 100644 components/button/__tests__/index.test.js delete mode 100644 components/button/__tests__/wave.test.js delete mode 100644 components/button/button-group.tsx delete mode 100644 components/button/button.tsx delete mode 100644 components/button/buttonTypes.ts delete mode 100644 components/button/demo/basic.vue delete mode 100644 components/button/demo/block.vue delete mode 100644 components/button/demo/button-group.vue delete mode 100644 components/button/demo/danger.vue delete mode 100644 components/button/demo/disabled.vue delete mode 100644 components/button/demo/ghost.vue delete mode 100644 components/button/demo/icon.vue delete mode 100644 components/button/demo/index.vue delete mode 100644 components/button/demo/loading.vue delete mode 100644 components/button/demo/multiple.vue delete mode 100644 components/button/demo/size.vue delete mode 100644 components/button/index.en-US.md delete mode 100644 components/button/index.ts delete mode 100644 components/button/index.zh-CN.md delete mode 100644 components/button/style/compactCmp.ts delete mode 100644 components/button/style/group.ts delete mode 100644 components/button/style/index.ts delete mode 100644 components/button/style/token.ts delete mode 100644 components/calendar/Header.tsx delete mode 100644 components/calendar/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/calendar/__tests__/__snapshots__/index.test.js.snap delete mode 100644 components/calendar/__tests__/demo.test.js delete mode 100644 components/calendar/__tests__/index.test.js delete mode 100644 components/calendar/date-fns.tsx delete mode 100644 components/calendar/dayjs.tsx delete mode 100644 components/calendar/demo/basic.vue delete mode 100644 components/calendar/demo/card.vue delete mode 100644 components/calendar/demo/customize-header.vue delete mode 100644 components/calendar/demo/index.vue delete mode 100644 components/calendar/demo/notice-calendar.vue delete mode 100644 components/calendar/demo/select.vue delete mode 100644 components/calendar/generateCalendar.tsx delete mode 100644 components/calendar/index.en-US.md delete mode 100644 components/calendar/index.tsx delete mode 100644 components/calendar/index.zh-CN.md delete mode 100644 components/calendar/locale/ar_EG.ts delete mode 100644 components/calendar/locale/az_AZ.ts delete mode 100644 components/calendar/locale/bg_BG.ts delete mode 100644 components/calendar/locale/bn_BD.ts delete mode 100644 components/calendar/locale/by_BY.ts delete mode 100644 components/calendar/locale/ca_ES.ts delete mode 100644 components/calendar/locale/cs_CZ.ts delete mode 100644 components/calendar/locale/da_DK.ts delete mode 100644 components/calendar/locale/de_DE.ts delete mode 100644 components/calendar/locale/el_GR.ts delete mode 100644 components/calendar/locale/en_GB.ts delete mode 100644 components/calendar/locale/en_US.ts delete mode 100644 components/calendar/locale/es_ES.ts delete mode 100644 components/calendar/locale/et_EE.ts delete mode 100644 components/calendar/locale/fa_IR.ts delete mode 100644 components/calendar/locale/fi_FI.ts delete mode 100644 components/calendar/locale/fr_BE.ts delete mode 100644 components/calendar/locale/fr_CA.ts delete mode 100644 components/calendar/locale/fr_FR.ts delete mode 100644 components/calendar/locale/ga_IE.ts delete mode 100644 components/calendar/locale/gl_ES.ts delete mode 100644 components/calendar/locale/he_IL.ts delete mode 100644 components/calendar/locale/hi_IN.ts delete mode 100644 components/calendar/locale/hr_HR.ts delete mode 100644 components/calendar/locale/hu_HU.ts delete mode 100644 components/calendar/locale/id_ID.ts delete mode 100644 components/calendar/locale/is_IS.ts delete mode 100644 components/calendar/locale/it_IT.ts delete mode 100644 components/calendar/locale/ja_JP.ts delete mode 100644 components/calendar/locale/ka_GE.ts delete mode 100644 components/calendar/locale/kk_KZ.ts delete mode 100644 components/calendar/locale/km_KH.ts delete mode 100755 components/calendar/locale/kmr_IQ.ts delete mode 100644 components/calendar/locale/kn_IN.ts delete mode 100644 components/calendar/locale/ko_KR.ts delete mode 100644 components/calendar/locale/lt_LT.ts delete mode 100644 components/calendar/locale/lv_LV.ts delete mode 100644 components/calendar/locale/mk_MK.ts delete mode 100644 components/calendar/locale/ml_IN.ts delete mode 100644 components/calendar/locale/mn_MN.ts delete mode 100644 components/calendar/locale/ms_MY.ts delete mode 100644 components/calendar/locale/nb_NO.ts delete mode 100644 components/calendar/locale/nl_BE.ts delete mode 100644 components/calendar/locale/nl_NL.ts delete mode 100644 components/calendar/locale/pl_PL.ts delete mode 100644 components/calendar/locale/pt_BR.ts delete mode 100644 components/calendar/locale/pt_PT.ts delete mode 100644 components/calendar/locale/ro_RO.ts delete mode 100644 components/calendar/locale/ru_RU.ts delete mode 100644 components/calendar/locale/sk_SK.ts delete mode 100644 components/calendar/locale/sl_SI.ts delete mode 100644 components/calendar/locale/sr_RS.ts delete mode 100644 components/calendar/locale/sv_SE.ts delete mode 100644 components/calendar/locale/ta_IN.ts delete mode 100644 components/calendar/locale/th_TH.ts delete mode 100644 components/calendar/locale/tr_TR.ts delete mode 100644 components/calendar/locale/uk_UA.ts delete mode 100644 components/calendar/locale/ur_PK.ts delete mode 100644 components/calendar/locale/vi_VN.ts delete mode 100644 components/calendar/locale/zh_CN.ts delete mode 100644 components/calendar/locale/zh_TW.ts delete mode 100644 components/calendar/moment.tsx delete mode 100644 components/calendar/style/index.tsx delete mode 100644 components/card/Card.tsx delete mode 100644 components/card/Grid.tsx delete mode 100644 components/card/Meta.tsx delete mode 100644 components/card/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/card/__tests__/__snapshots__/index.test.js.snap delete mode 100644 components/card/__tests__/demo.test.js delete mode 100644 components/card/__tests__/index.test.js delete mode 100644 components/card/demo/basic.vue delete mode 100644 components/card/demo/border-less.vue delete mode 100644 components/card/demo/flexible-content.vue delete mode 100644 components/card/demo/grid-card.vue delete mode 100644 components/card/demo/in-column.vue delete mode 100644 components/card/demo/index.vue delete mode 100644 components/card/demo/inner.vue delete mode 100644 components/card/demo/loading.vue delete mode 100644 components/card/demo/meta.vue delete mode 100644 components/card/demo/simple.vue delete mode 100644 components/card/demo/tabs.vue delete mode 100644 components/card/index.en-US.md delete mode 100644 components/card/index.ts delete mode 100644 components/card/index.zh-CN.md delete mode 100644 components/card/style/index.tsx delete mode 100644 components/carousel/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/carousel/__tests__/__snapshots__/index.test.js.snap delete mode 100644 components/carousel/__tests__/demo.test.js delete mode 100644 components/carousel/__tests__/index.test.js delete mode 100644 components/carousel/demo/abstract01.jpg delete mode 100644 components/carousel/demo/abstract02.jpg delete mode 100644 components/carousel/demo/abstract03.jpg delete mode 100644 components/carousel/demo/abstract04.jpg delete mode 100644 components/carousel/demo/autoplay.vue delete mode 100644 components/carousel/demo/basic.vue delete mode 100644 components/carousel/demo/customArrows.vue delete mode 100644 components/carousel/demo/customPaging.vue delete mode 100644 components/carousel/demo/fade.vue delete mode 100644 components/carousel/demo/index.vue delete mode 100644 components/carousel/demo/position.vue delete mode 100644 components/carousel/index.en-US.md delete mode 100644 components/carousel/index.tsx delete mode 100644 components/carousel/index.zh-CN.md delete mode 100644 components/carousel/style/index.tsx delete mode 100644 components/cascader/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/cascader/__tests__/__snapshots__/index.test.js.snap delete mode 100644 components/cascader/__tests__/demo.test.js delete mode 100644 components/cascader/__tests__/index.test.js delete mode 100644 components/cascader/demo/basic.vue delete mode 100644 components/cascader/demo/change-on-select.vue delete mode 100644 components/cascader/demo/custom-render.vue delete mode 100644 components/cascader/demo/custom-trigger.vue delete mode 100644 components/cascader/demo/disabled-option.vue delete mode 100644 components/cascader/demo/fields-name.vue delete mode 100644 components/cascader/demo/hover.vue delete mode 100644 components/cascader/demo/index.vue delete mode 100644 components/cascader/demo/lazy.vue delete mode 100644 components/cascader/demo/multiple.vue delete mode 100644 components/cascader/demo/search.vue delete mode 100644 components/cascader/demo/size.vue delete mode 100644 components/cascader/demo/suffix.vue delete mode 100644 components/cascader/demo/tagRender.vue delete mode 100644 components/cascader/index.en-US.md delete mode 100644 components/cascader/index.tsx delete mode 100644 components/cascader/index.zh-CN.md delete mode 100644 components/cascader/style/index.ts delete mode 100644 components/checkbox/Checkbox.tsx delete mode 100644 components/checkbox/Group.tsx delete mode 100644 components/checkbox/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/checkbox/__tests__/__snapshots__/group.test.js.snap delete mode 100644 components/checkbox/__tests__/checkbox.test.js delete mode 100644 components/checkbox/__tests__/demo.test.js delete mode 100644 components/checkbox/__tests__/group.test.js delete mode 100644 components/checkbox/demo/basic.vue delete mode 100644 components/checkbox/demo/check-all.vue delete mode 100644 components/checkbox/demo/controller.vue delete mode 100644 components/checkbox/demo/disabled.vue delete mode 100644 components/checkbox/demo/group.vue delete mode 100644 components/checkbox/demo/index.vue delete mode 100644 components/checkbox/demo/layout.vue delete mode 100644 components/checkbox/index.en-US.md delete mode 100644 components/checkbox/index.ts delete mode 100644 components/checkbox/index.zh-CN.md delete mode 100644 components/checkbox/interface.ts delete mode 100644 components/checkbox/style/index.ts delete mode 100644 components/col/index.ts delete mode 100644 components/col/style/index.ts delete mode 100644 components/collapse/Collapse.tsx delete mode 100644 components/collapse/CollapsePanel.tsx delete mode 100644 components/collapse/PanelContent.tsx delete mode 100644 components/collapse/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/collapse/__tests__/__snapshots__/index.test.js.snap delete mode 100644 components/collapse/__tests__/demo.test.js delete mode 100644 components/collapse/__tests__/index.test.js delete mode 100644 components/collapse/commonProps.ts delete mode 100644 components/collapse/demo/accordion.vue delete mode 100644 components/collapse/demo/basic.vue delete mode 100644 components/collapse/demo/borderless.vue delete mode 100644 components/collapse/demo/collapsible.vue delete mode 100644 components/collapse/demo/custom.vue delete mode 100644 components/collapse/demo/extra.vue delete mode 100644 components/collapse/demo/ghost.vue delete mode 100644 components/collapse/demo/index.vue delete mode 100644 components/collapse/demo/mix.vue delete mode 100644 components/collapse/demo/noarrow.vue delete mode 100644 components/collapse/index.en-US.md delete mode 100644 components/collapse/index.ts delete mode 100644 components/collapse/index.zh-CN.md delete mode 100644 components/collapse/style/index.tsx delete mode 100644 components/comment/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/comment/__tests__/__snapshots__/index.test.js.snap delete mode 100755 components/comment/__tests__/demo.test.js delete mode 100644 components/comment/__tests__/index.test.js delete mode 100644 components/comment/demo/basic.vue delete mode 100644 components/comment/demo/editor.vue delete mode 100644 components/comment/demo/index.vue delete mode 100644 components/comment/demo/list.vue delete mode 100644 components/comment/demo/nested.vue delete mode 100644 components/comment/index.en-US.md delete mode 100644 components/comment/index.tsx delete mode 100644 components/comment/index.zh-CN.md delete mode 100644 components/comment/style/index.ts delete mode 100644 components/components.ts delete mode 100644 components/config-provider/DisabledContext.ts delete mode 100644 components/config-provider/SizeContext.ts delete mode 100644 components/config-provider/__tests__/index.test.js delete mode 100644 components/config-provider/context.ts delete mode 100644 components/config-provider/cssVariables.ts delete mode 100644 components/config-provider/demo/direction.vue delete mode 100644 components/config-provider/demo/index.vue delete mode 100644 components/config-provider/demo/locale.vue delete mode 100644 components/config-provider/demo/size.vue delete mode 100644 components/config-provider/demo/theme.vue delete mode 100644 components/config-provider/hooks/useConfigInject.ts delete mode 100644 components/config-provider/hooks/useCssVarCls.ts delete mode 100644 components/config-provider/hooks/useSize.ts delete mode 100644 components/config-provider/hooks/useTheme.ts delete mode 100644 components/config-provider/hooks/useThemeKey.ts delete mode 100644 components/config-provider/index.en-US.md delete mode 100644 components/config-provider/index.tsx delete mode 100644 components/config-provider/index.zh-CN.md delete mode 100644 components/config-provider/renderEmpty.tsx delete mode 100644 components/config-provider/style/index.ts delete mode 100644 components/date-picker/PickerButton.tsx delete mode 100644 components/date-picker/PickerTag.tsx delete mode 100644 components/date-picker/__tests__/DatePicker.test.js delete mode 100644 components/date-picker/__tests__/QuarterPicker.test.js delete mode 100644 components/date-picker/__tests__/RangePicker.test.js delete mode 100644 components/date-picker/__tests__/WeekPicker.test.js delete mode 100644 components/date-picker/__tests__/__snapshots__/DatePicker.test.js.snap delete mode 100644 components/date-picker/__tests__/__snapshots__/QuarterPicker.test.js.snap delete mode 100644 components/date-picker/__tests__/__snapshots__/RangePicker.test.js.snap delete mode 100644 components/date-picker/__tests__/__snapshots__/WeekPicker.test.js.snap delete mode 100644 components/date-picker/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/date-picker/__tests__/__snapshots__/other.test.js.snap delete mode 100644 components/date-picker/__tests__/demo.test.js delete mode 100644 components/date-picker/__tests__/mount.test.js delete mode 100644 components/date-picker/__tests__/other.test.js delete mode 100644 components/date-picker/__tests__/utils.js delete mode 100755 components/date-picker/date-fns.tsx delete mode 100755 components/date-picker/dayjs.tsx delete mode 100644 components/date-picker/demo/basic.vue delete mode 100644 components/date-picker/demo/bordered.vue delete mode 100644 components/date-picker/demo/date-render.vue delete mode 100644 components/date-picker/demo/disabled-date.vue delete mode 100644 components/date-picker/demo/disabled.vue delete mode 100644 components/date-picker/demo/extra-footer.vue delete mode 100644 components/date-picker/demo/format.vue delete mode 100644 components/date-picker/demo/index.vue delete mode 100644 components/date-picker/demo/mode.vue delete mode 100644 components/date-picker/demo/placement.vue delete mode 100644 components/date-picker/demo/presetted-ranges.vue delete mode 100644 components/date-picker/demo/range-picker.vue delete mode 100644 components/date-picker/demo/select-in-range.vue delete mode 100644 components/date-picker/demo/size.vue delete mode 100644 components/date-picker/demo/start-end.vue delete mode 100644 components/date-picker/demo/status.vue delete mode 100644 components/date-picker/demo/suffix.vue delete mode 100644 components/date-picker/demo/switchable.vue delete mode 100644 components/date-picker/demo/text.vue delete mode 100644 components/date-picker/demo/time.vue delete mode 100644 components/date-picker/generatePicker/generateRangePicker.tsx delete mode 100644 components/date-picker/generatePicker/generateSinglePicker.tsx delete mode 100644 components/date-picker/generatePicker/index.tsx delete mode 100644 components/date-picker/generatePicker/interface.ts delete mode 100644 components/date-picker/generatePicker/props.ts delete mode 100644 components/date-picker/index.en-US.md delete mode 100755 components/date-picker/index.tsx delete mode 100644 components/date-picker/index.zh-CN.md delete mode 100644 components/date-picker/locale/ar_EG.ts delete mode 100644 components/date-picker/locale/az_AZ.ts delete mode 100644 components/date-picker/locale/bg_BG.ts delete mode 100644 components/date-picker/locale/bn_BD.ts delete mode 100644 components/date-picker/locale/by_BY.ts delete mode 100644 components/date-picker/locale/ca_ES.ts delete mode 100644 components/date-picker/locale/cs_CZ.ts delete mode 100644 components/date-picker/locale/da_DK.ts delete mode 100644 components/date-picker/locale/de_DE.ts delete mode 100644 components/date-picker/locale/el_GR.ts delete mode 100644 components/date-picker/locale/en_GB.ts delete mode 100644 components/date-picker/locale/en_US.ts delete mode 100644 components/date-picker/locale/es_ES.ts delete mode 100644 components/date-picker/locale/et_EE.ts delete mode 100644 components/date-picker/locale/example.json delete mode 100644 components/date-picker/locale/fa_IR.ts delete mode 100644 components/date-picker/locale/fi_FI.ts delete mode 100644 components/date-picker/locale/fr_BE.ts delete mode 100644 components/date-picker/locale/fr_CA.ts delete mode 100644 components/date-picker/locale/fr_FR.ts delete mode 100644 components/date-picker/locale/ga_IE.ts delete mode 100644 components/date-picker/locale/gl_ES.ts delete mode 100644 components/date-picker/locale/he_IL.ts delete mode 100644 components/date-picker/locale/hi_IN.ts delete mode 100644 components/date-picker/locale/hr_HR.ts delete mode 100644 components/date-picker/locale/hu_HU.ts delete mode 100644 components/date-picker/locale/id_ID.ts delete mode 100644 components/date-picker/locale/is_IS.ts delete mode 100644 components/date-picker/locale/it_IT.ts delete mode 100644 components/date-picker/locale/ja_JP.ts delete mode 100644 components/date-picker/locale/ka_GE.ts delete mode 100644 components/date-picker/locale/kk_KZ.ts delete mode 100644 components/date-picker/locale/km_KH.ts delete mode 100755 components/date-picker/locale/kmr_IQ.ts delete mode 100644 components/date-picker/locale/kn_IN.ts delete mode 100644 components/date-picker/locale/ko_KR.ts delete mode 100644 components/date-picker/locale/lt_LT.ts delete mode 100644 components/date-picker/locale/lv_LV.ts delete mode 100644 components/date-picker/locale/mk_MK.ts delete mode 100644 components/date-picker/locale/ml_IN.ts delete mode 100644 components/date-picker/locale/mn_MN.ts delete mode 100644 components/date-picker/locale/ms_MY.ts delete mode 100644 components/date-picker/locale/nb_NO.ts delete mode 100644 components/date-picker/locale/nl_BE.ts delete mode 100644 components/date-picker/locale/nl_NL.ts delete mode 100644 components/date-picker/locale/pl_PL.ts delete mode 100644 components/date-picker/locale/pt_BR.ts delete mode 100644 components/date-picker/locale/pt_PT.ts delete mode 100644 components/date-picker/locale/ro_RO.ts delete mode 100644 components/date-picker/locale/ru_RU.ts delete mode 100644 components/date-picker/locale/sk_SK.ts delete mode 100644 components/date-picker/locale/sl_SI.ts delete mode 100644 components/date-picker/locale/sr_RS.ts delete mode 100644 components/date-picker/locale/sv_SE.ts delete mode 100644 components/date-picker/locale/ta_IN.ts delete mode 100644 components/date-picker/locale/th_TH.ts delete mode 100644 components/date-picker/locale/tr_TR.ts delete mode 100644 components/date-picker/locale/uk_UA.ts delete mode 100644 components/date-picker/locale/ur_PK.ts delete mode 100644 components/date-picker/locale/vi_VN.ts delete mode 100644 components/date-picker/locale/zh_CN.ts delete mode 100644 components/date-picker/locale/zh_TW.ts delete mode 100755 components/date-picker/moment.tsx delete mode 100644 components/date-picker/style/index.ts delete mode 100644 components/date-picker/util.ts delete mode 100644 components/descriptions/Cell.tsx delete mode 100644 components/descriptions/Row.tsx delete mode 100644 components/descriptions/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/descriptions/__tests__/__snapshots__/index.test.js.snap delete mode 100644 components/descriptions/__tests__/demo.test.js delete mode 100644 components/descriptions/__tests__/index.test.js delete mode 100644 components/descriptions/demo/basic.vue delete mode 100644 components/descriptions/demo/border.vue delete mode 100644 components/descriptions/demo/index.vue delete mode 100644 components/descriptions/demo/responsive.vue delete mode 100644 components/descriptions/demo/size.vue delete mode 100644 components/descriptions/demo/vertical-border.vue delete mode 100644 components/descriptions/demo/vertical.vue delete mode 100644 components/descriptions/index.en-US.md delete mode 100644 components/descriptions/index.tsx delete mode 100644 components/descriptions/index.zh-CN.md delete mode 100644 components/descriptions/style/index.ts delete mode 100644 components/divider/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/divider/__tests__/demo.test.js delete mode 100644 components/divider/__tests__/index.test.js delete mode 100644 components/divider/demo/customize-style.vue delete mode 100644 components/divider/demo/horizontal.vue delete mode 100644 components/divider/demo/index.vue delete mode 100644 components/divider/demo/vertical.vue delete mode 100644 components/divider/demo/with-text.vue delete mode 100644 components/divider/index.en-US.md delete mode 100644 components/divider/index.tsx delete mode 100644 components/divider/index.zh-CN.md delete mode 100644 components/divider/style/index.ts delete mode 100644 components/drawer/__tests__/Drawer.test.js delete mode 100644 components/drawer/__tests__/DrawerEvent.test.js delete mode 100644 components/drawer/__tests__/MultiDrawer.test.js delete mode 100644 components/drawer/__tests__/__snapshots__/Drawer.test.js.snap delete mode 100644 components/drawer/__tests__/__snapshots__/DrawerEvent.test.js.snap delete mode 100644 components/drawer/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/drawer/__tests__/demo.test.js delete mode 100644 components/drawer/demo/basic.vue delete mode 100644 components/drawer/demo/descriptionItem/index.vue delete mode 100644 components/drawer/demo/extra.vue delete mode 100644 components/drawer/demo/form-in-drawer.vue delete mode 100644 components/drawer/demo/index.vue delete mode 100644 components/drawer/demo/multi-level-drawer.vue delete mode 100644 components/drawer/demo/placement.vue delete mode 100644 components/drawer/demo/render-in-current.vue delete mode 100644 components/drawer/demo/size.vue delete mode 100644 components/drawer/demo/user-profile.vue delete mode 100644 components/drawer/index.en-US.md delete mode 100644 components/drawer/index.tsx delete mode 100644 components/drawer/index.zh-CN.md delete mode 100644 components/drawer/style/index.ts delete mode 100644 components/drawer/style/motion.ts delete mode 100644 components/dropdown/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/dropdown/__tests__/__snapshots__/dropdown-button.test.js.snap delete mode 100644 components/dropdown/__tests__/demo.test.js delete mode 100644 components/dropdown/__tests__/dropdown-button.test.js delete mode 100644 components/dropdown/demo/arrow-center.vue delete mode 100644 components/dropdown/demo/arrow.vue delete mode 100644 components/dropdown/demo/basic.vue delete mode 100644 components/dropdown/demo/context-menu.vue delete mode 100644 components/dropdown/demo/dropdown-button.vue delete mode 100644 components/dropdown/demo/event.vue delete mode 100644 components/dropdown/demo/index.vue delete mode 100644 components/dropdown/demo/item.vue delete mode 100644 components/dropdown/demo/loading.vue delete mode 100644 components/dropdown/demo/overlay-visible.vue delete mode 100644 components/dropdown/demo/placement.vue delete mode 100644 components/dropdown/demo/sub-menu.vue delete mode 100644 components/dropdown/demo/trigger.vue delete mode 100644 components/dropdown/dropdown-button.tsx delete mode 100644 components/dropdown/dropdown.tsx delete mode 100644 components/dropdown/index.en-US.md delete mode 100644 components/dropdown/index.ts delete mode 100644 components/dropdown/index.zh-CN.md delete mode 100644 components/dropdown/props.ts delete mode 100644 components/dropdown/style/button.ts delete mode 100644 components/dropdown/style/index.ts delete mode 100644 components/dropdown/style/status.ts delete mode 100644 components/empty/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/empty/__tests__/demo.test.js delete mode 100644 components/empty/__tests__/index.test.js delete mode 100644 components/empty/demo/basic.vue delete mode 100644 components/empty/demo/config-provider.vue delete mode 100644 components/empty/demo/customize.vue delete mode 100644 components/empty/demo/description.vue delete mode 100644 components/empty/demo/index.vue delete mode 100644 components/empty/demo/simple.vue delete mode 100644 components/empty/empty.tsx delete mode 100644 components/empty/index.en-US.md delete mode 100644 components/empty/index.tsx delete mode 100644 components/empty/index.zh-CN.md delete mode 100644 components/empty/simple.tsx delete mode 100644 components/empty/style/index.ts delete mode 100644 components/flex/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/flex/__tests__/demo.test.js delete mode 100644 components/flex/__tests__/index.test.js delete mode 100644 components/flex/demo/align.vue delete mode 100644 components/flex/demo/basic.vue delete mode 100644 components/flex/demo/combination.vue delete mode 100644 components/flex/demo/gap.vue delete mode 100644 components/flex/demo/index.vue delete mode 100644 components/flex/demo/wrap.vue delete mode 100644 components/flex/index.en-US.md delete mode 100644 components/flex/index.tsx delete mode 100644 components/flex/index.zh-CN.md delete mode 100644 components/flex/interface.ts delete mode 100644 components/flex/style/index.ts delete mode 100644 components/flex/utils.ts delete mode 100644 components/float-button/BackTop.tsx delete mode 100644 components/float-button/FloatButton.tsx delete mode 100644 components/float-button/FloatButtonContent.tsx delete mode 100644 components/float-button/FloatButtonGroup.tsx delete mode 100644 components/float-button/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/float-button/__tests__/__snapshots__/index.test.js.snap delete mode 100644 components/float-button/__tests__/demo.test.js delete mode 100644 components/float-button/__tests__/index.test.js delete mode 100644 components/float-button/__tests__/wave.test.js delete mode 100644 components/float-button/context.ts delete mode 100644 components/float-button/demo/back-top.vue delete mode 100644 components/float-button/demo/badge.vue delete mode 100644 components/float-button/demo/basic.vue delete mode 100644 components/float-button/demo/description.vue delete mode 100644 components/float-button/demo/group-menu.vue delete mode 100644 components/float-button/demo/group.vue delete mode 100644 components/float-button/demo/index.vue delete mode 100644 components/float-button/demo/shape.vue delete mode 100644 components/float-button/demo/tooltip.vue delete mode 100644 components/float-button/demo/type.vue delete mode 100644 components/float-button/index.en-US.md delete mode 100644 components/float-button/index.ts delete mode 100644 components/float-button/index.zh-CN.md delete mode 100644 components/float-button/interface.ts delete mode 100644 components/float-button/style/index.ts delete mode 100644 components/float-button/util.ts delete mode 100644 components/form/ErrorList.tsx delete mode 100755 components/form/Form.tsx delete mode 100644 components/form/FormItem.tsx delete mode 100644 components/form/FormItemContext.ts delete mode 100644 components/form/FormItemInput.tsx delete mode 100644 components/form/FormItemLabel.tsx delete mode 100644 components/form/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/form/__tests__/demo.test.js delete mode 100644 components/form/context.ts delete mode 100644 components/form/demo/advanced-search.vue delete mode 100644 components/form/demo/basic.vue delete mode 100644 components/form/demo/custom-validation.vue delete mode 100644 components/form/demo/customized-form-controls.vue delete mode 100644 components/form/demo/disabled.vue delete mode 100644 components/form/demo/dynamic-form-item.vue delete mode 100644 components/form/demo/dynamic-form-items-complex.vue delete mode 100644 components/form/demo/dynamic-form-items.vue delete mode 100644 components/form/demo/dynamic-rule.vue delete mode 100644 components/form/demo/form-context.vue delete mode 100644 components/form/demo/form-in-modal.vue delete mode 100644 components/form/demo/horizontal-login.vue delete mode 100644 components/form/demo/index.vue delete mode 100644 components/form/demo/inline-login.vue delete mode 100644 components/form/demo/label-width.vue delete mode 100644 components/form/demo/layout.vue delete mode 100644 components/form/demo/nest-messages.vue delete mode 100644 components/form/demo/normal-login.vue delete mode 100644 components/form/demo/price-input.vue delete mode 100644 components/form/demo/time-related-controls.vue delete mode 100644 components/form/demo/useForm-basic.vue delete mode 100644 components/form/demo/useForm-merge.vue delete mode 100644 components/form/demo/useForm-nested.vue delete mode 100644 components/form/demo/useForm-trigger.vue delete mode 100644 components/form/demo/validate-other.vue delete mode 100644 components/form/demo/validate-static.vue delete mode 100644 components/form/demo/validation.vue delete mode 100644 components/form/index.en-US.md delete mode 100644 components/form/index.tsx delete mode 100644 components/form/index.zh-CN.md delete mode 100644 components/form/interface.ts delete mode 100644 components/form/style/explain.ts delete mode 100644 components/form/style/index.ts delete mode 100644 components/form/useForm.ts delete mode 100644 components/form/utils/asyncUtil.ts delete mode 100644 components/form/utils/messages.ts delete mode 100644 components/form/utils/typeUtil.ts delete mode 100644 components/form/utils/useDebounce.ts delete mode 100644 components/form/utils/validateUtil.ts delete mode 100644 components/form/utils/valueUtil.ts delete mode 100644 components/grid/Col.tsx delete mode 100644 components/grid/Row.tsx delete mode 100644 components/grid/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/grid/__tests__/__snapshots__/index.test.js.snap delete mode 100644 components/grid/__tests__/demo.test.js delete mode 100644 components/grid/__tests__/index.test.js delete mode 100644 components/grid/context.ts delete mode 100644 components/grid/demo/basic.vue delete mode 100644 components/grid/demo/flex-align.vue delete mode 100644 components/grid/demo/flex-order.vue delete mode 100644 components/grid/demo/flex-stretch.vue delete mode 100644 components/grid/demo/flex.vue delete mode 100644 components/grid/demo/gutter.vue delete mode 100644 components/grid/demo/index.vue delete mode 100644 components/grid/demo/offset.vue delete mode 100644 components/grid/demo/playfround.vue delete mode 100644 components/grid/demo/responsive-more.vue delete mode 100644 components/grid/demo/responsive.vue delete mode 100644 components/grid/demo/sort.vue delete mode 100644 components/grid/demo/use-breakpoint.vue delete mode 100644 components/grid/index.en-US.md delete mode 100644 components/grid/index.ts delete mode 100644 components/grid/index.zh-CN.md delete mode 100644 components/grid/style/index.ts delete mode 100644 components/icon/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/icon/__tests__/demo.test.js delete mode 100644 components/icon/demo/basic.vue delete mode 100644 components/icon/demo/custom.vue delete mode 100644 components/icon/demo/iconfont.vue delete mode 100644 components/icon/demo/index.vue delete mode 100644 components/icon/demo/two-tone.vue delete mode 100644 components/icon/index.en-US.md delete mode 100644 components/icon/index.tsx delete mode 100644 components/icon/index.zh-CN.md delete mode 100644 components/image/PreviewGroup.tsx delete mode 100644 components/image/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/image/__tests__/demo.test.js delete mode 100644 components/image/__tests__/index.test.js delete mode 100644 components/image/demo/basic.vue delete mode 100644 components/image/demo/controlled-preview.vue delete mode 100644 components/image/demo/fallback.vue delete mode 100644 components/image/demo/index.vue delete mode 100644 components/image/demo/placeholder.vue delete mode 100644 components/image/demo/preview-group-visible.vue delete mode 100644 components/image/demo/preview-group.vue delete mode 100644 components/image/demo/preview-src.vue delete mode 100644 components/image/index.en-US.md delete mode 100644 components/image/index.tsx delete mode 100644 components/image/index.zh-CN.md delete mode 100644 components/image/style/index.ts delete mode 100644 components/index.ts delete mode 100644 components/input-number/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/input-number/__tests__/demo.test.js delete mode 100644 components/input-number/__tests__/index.test.js delete mode 100644 components/input-number/demo/addon.vue delete mode 100644 components/input-number/demo/basic.vue delete mode 100644 components/input-number/demo/borderless.vue delete mode 100644 components/input-number/demo/digit.vue delete mode 100644 components/input-number/demo/disabled.vue delete mode 100644 components/input-number/demo/formatter.vue delete mode 100644 components/input-number/demo/icon.vue delete mode 100644 components/input-number/demo/index.vue delete mode 100644 components/input-number/demo/keyboard.vue delete mode 100644 components/input-number/demo/out-of-range.vue delete mode 100644 components/input-number/demo/prefix.vue delete mode 100644 components/input-number/demo/size.vue delete mode 100644 components/input-number/demo/status.vue delete mode 100644 components/input-number/index.en-US.md delete mode 100644 components/input-number/index.tsx delete mode 100644 components/input-number/index.zh-CN.md delete mode 100644 components/input-number/src/InputNumber.tsx delete mode 100644 components/input-number/src/StepHandler.tsx delete mode 100644 components/input-number/src/hooks/useCursor.ts delete mode 100644 components/input-number/src/hooks/useFrame.ts delete mode 100644 components/input-number/src/utils/MiniDecimal.ts delete mode 100644 components/input-number/src/utils/numberUtil.ts delete mode 100644 components/input-number/src/utils/supportUtil.ts delete mode 100644 components/input-number/style/index.tsx delete mode 100644 components/input/ClearableLabeledInput.tsx delete mode 100644 components/input/Group.tsx delete mode 100644 components/input/Input.tsx delete mode 100644 components/input/Password.tsx delete mode 100644 components/input/ResizableTextArea.tsx delete mode 100644 components/input/Search.tsx delete mode 100644 components/input/TextArea.tsx delete mode 100644 components/input/__tests__/Search.test.js delete mode 100644 components/input/__tests__/__snapshots__/Search.test.js.snap delete mode 100644 components/input/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/input/__tests__/__snapshots__/index.test.js.snap delete mode 100644 components/input/__tests__/demo.test.js delete mode 100644 components/input/__tests__/index.test.js delete mode 100644 components/input/calculateNodeHeight.tsx delete mode 100644 components/input/demo/addon.vue delete mode 100644 components/input/demo/allow-clear.vue delete mode 100644 components/input/demo/autosize-textarea.vue delete mode 100644 components/input/demo/basic.vue delete mode 100644 components/input/demo/borderless.vue delete mode 100644 components/input/demo/group.vue delete mode 100644 components/input/demo/index.vue delete mode 100644 components/input/demo/password-input.vue delete mode 100644 components/input/demo/presuffix.vue delete mode 100644 components/input/demo/search-input-loading.vue delete mode 100644 components/input/demo/search-input.vue delete mode 100644 components/input/demo/show-count.vue delete mode 100644 components/input/demo/size.vue delete mode 100644 components/input/demo/status.vue delete mode 100644 components/input/demo/textarea.vue delete mode 100644 components/input/demo/tooltip.vue delete mode 100644 components/input/index.en-US.md delete mode 100644 components/input/index.ts delete mode 100644 components/input/index.zh-CN.md delete mode 100644 components/input/inputProps.ts delete mode 100644 components/input/style/index.ts delete mode 100644 components/input/util.ts delete mode 100644 components/layout/Sider.tsx delete mode 100644 components/layout/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/layout/__tests__/demo.test.js delete mode 100644 components/layout/__tests__/index.test.js delete mode 100644 components/layout/demo/basic.vue delete mode 100644 components/layout/demo/custom-trigger.vue delete mode 100644 components/layout/demo/fixed-sider.vue delete mode 100644 components/layout/demo/fixed.vue delete mode 100644 components/layout/demo/index.vue delete mode 100644 components/layout/demo/responsive.vue delete mode 100644 components/layout/demo/side.vue delete mode 100644 components/layout/demo/top-side-2.vue delete mode 100644 components/layout/demo/top-side.vue delete mode 100644 components/layout/demo/top.vue delete mode 100644 components/layout/index.en-US.md delete mode 100644 components/layout/index.ts delete mode 100644 components/layout/index.zh-CN.md delete mode 100644 components/layout/injectionKey.ts delete mode 100644 components/layout/layout.tsx delete mode 100644 components/layout/style/index.ts delete mode 100644 components/layout/style/light.ts delete mode 100644 components/list/Item.tsx delete mode 100644 components/list/ItemMeta.tsx delete mode 100644 components/list/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/list/__tests__/__snapshots__/empty.test.js.snap delete mode 100644 components/list/__tests__/demo.test.js delete mode 100644 components/list/__tests__/empty.test.js delete mode 100644 components/list/__tests__/index.test.js delete mode 100644 components/list/__tests__/loading.test.js delete mode 100644 components/list/contextKey.ts delete mode 100644 components/list/demo/basic.vue delete mode 100644 components/list/demo/grid.vue delete mode 100644 components/list/demo/index.vue delete mode 100644 components/list/demo/loadmore.vue delete mode 100644 components/list/demo/resposive.vue delete mode 100644 components/list/demo/simple.vue delete mode 100644 components/list/demo/vertical.vue delete mode 100644 components/list/index.en-US.md delete mode 100644 components/list/index.tsx delete mode 100644 components/list/index.zh-CN.md delete mode 100644 components/list/style/index.tsx delete mode 100644 components/locale-provider/LocaleReceiver.tsx delete mode 100644 components/locale-provider/__tests__/__snapshots__/index.test.js.snap delete mode 100644 components/locale-provider/__tests__/index.test.js delete mode 100644 components/locale-provider/index.ts delete mode 100644 components/locale/LocaleReceiver.tsx delete mode 100644 components/locale/ar_EG.ts delete mode 100644 components/locale/az_AZ.ts delete mode 100644 components/locale/bg_BG.ts delete mode 100644 components/locale/bn_BD.ts delete mode 100644 components/locale/by_BY.ts delete mode 100644 components/locale/ca_ES.ts delete mode 100644 components/locale/cs_CZ.ts delete mode 100644 components/locale/da_DK.ts delete mode 100644 components/locale/de_DE.ts delete mode 100644 components/locale/el_GR.ts delete mode 100644 components/locale/en_GB.ts delete mode 100644 components/locale/en_US.ts delete mode 100644 components/locale/es_ES.ts delete mode 100644 components/locale/et_EE.ts delete mode 100644 components/locale/fa_IR.ts delete mode 100644 components/locale/fi_FI.ts delete mode 100644 components/locale/fr_BE.ts delete mode 100644 components/locale/fr_CA.ts delete mode 100644 components/locale/fr_FR.ts delete mode 100644 components/locale/ga_IE.ts delete mode 100644 components/locale/gl_ES.ts delete mode 100644 components/locale/he_IL.ts delete mode 100644 components/locale/hi_IN.ts delete mode 100644 components/locale/hr_HR.ts delete mode 100644 components/locale/hu_HU.ts delete mode 100644 components/locale/hy_AM.ts delete mode 100644 components/locale/id_ID.ts delete mode 100644 components/locale/index.tsx delete mode 100644 components/locale/is_IS.ts delete mode 100644 components/locale/it_IT.ts delete mode 100644 components/locale/ja_JP.ts delete mode 100644 components/locale/ka_GE.ts delete mode 100644 components/locale/kk_KZ.ts delete mode 100644 components/locale/km_KH.ts delete mode 100644 components/locale/kmr_IQ.ts delete mode 100644 components/locale/kn_IN.ts delete mode 100644 components/locale/ko_KR.ts delete mode 100755 components/locale/ku_IQ.ts delete mode 100644 components/locale/lt_LT.ts delete mode 100644 components/locale/lv_LV.ts delete mode 100644 components/locale/mk_MK.ts delete mode 100644 components/locale/ml_IN.ts delete mode 100644 components/locale/mn_MN.ts delete mode 100644 components/locale/ms_MY.ts delete mode 100644 components/locale/nb_NO.ts delete mode 100644 components/locale/ne_NP.ts delete mode 100644 components/locale/nl_BE.ts delete mode 100644 components/locale/nl_NL.ts delete mode 100644 components/locale/pl_PL.ts delete mode 100644 components/locale/pt_BR.ts delete mode 100644 components/locale/pt_PT.ts delete mode 100644 components/locale/ro_RO.ts delete mode 100644 components/locale/ru_RU.ts delete mode 100644 components/locale/sk_SK.ts delete mode 100644 components/locale/sl_SI.ts delete mode 100644 components/locale/sr_RS.ts delete mode 100644 components/locale/sv_SE.ts delete mode 100644 components/locale/ta_IN.ts delete mode 100644 components/locale/th_TH.ts delete mode 100644 components/locale/tr_TR.ts delete mode 100644 components/locale/uk_UA.ts delete mode 100644 components/locale/ur_PK.ts delete mode 100644 components/locale/vi_VN.ts delete mode 100644 components/locale/zh_CN.ts delete mode 100644 components/locale/zh_HK.ts delete mode 100644 components/locale/zh_TW.ts delete mode 100644 components/mentions/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/mentions/__tests__/demo.test.js delete mode 100644 components/mentions/__tests__/index.test.js delete mode 100644 components/mentions/demo/async.vue delete mode 100644 components/mentions/demo/basic.vue delete mode 100644 components/mentions/demo/form.vue delete mode 100644 components/mentions/demo/index.vue delete mode 100644 components/mentions/demo/placement.vue delete mode 100644 components/mentions/demo/prefix.vue delete mode 100644 components/mentions/demo/readonly.vue delete mode 100644 components/mentions/demo/status.vue delete mode 100644 components/mentions/index.en-US.md delete mode 100644 components/mentions/index.tsx delete mode 100644 components/mentions/index.zh-CN.md delete mode 100644 components/mentions/style/index.ts delete mode 100644 components/menu/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/menu/__tests__/demo.test.js delete mode 100644 components/menu/__tests__/index.test.js delete mode 100644 components/menu/demo/horizontal.vue delete mode 100644 components/menu/demo/index.vue delete mode 100644 components/menu/demo/inline-collapsed.vue delete mode 100644 components/menu/demo/inline.vue delete mode 100644 components/menu/demo/sider-current.vue delete mode 100644 components/menu/demo/submenu-theme.vue delete mode 100644 components/menu/demo/switch-mode.vue delete mode 100644 components/menu/demo/theme.vue delete mode 100644 components/menu/demo/vertical.vue delete mode 100644 components/menu/index.en-US.md delete mode 100644 components/menu/index.tsx delete mode 100644 components/menu/index.zh-CN.md delete mode 100644 components/menu/src/Divider.tsx delete mode 100644 components/menu/src/InlineSubMenuList.tsx delete mode 100644 components/menu/src/ItemGroup.tsx delete mode 100644 components/menu/src/Menu.tsx delete mode 100644 components/menu/src/MenuItem.tsx delete mode 100644 components/menu/src/OverrideContext.ts delete mode 100644 components/menu/src/PopupTrigger.tsx delete mode 100644 components/menu/src/SubMenu.tsx delete mode 100644 components/menu/src/SubMenuList.tsx delete mode 100644 components/menu/src/hooks/useDirectionStyle.ts delete mode 100644 components/menu/src/hooks/useItems.tsx delete mode 100644 components/menu/src/hooks/useKeyPath.ts delete mode 100644 components/menu/src/hooks/useMenuContext.ts delete mode 100644 components/menu/src/interface.ts delete mode 100644 components/menu/src/placements.ts delete mode 100644 components/menu/style/horizontal.ts delete mode 100644 components/menu/style/index.ts delete mode 100644 components/menu/style/rtl.ts delete mode 100644 components/menu/style/theme.ts delete mode 100644 components/menu/style/vertical.ts delete mode 100644 components/message/PurePanel.tsx delete mode 100644 components/message/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/message/__tests__/demo.test.js delete mode 100644 components/message/__tests__/index.test.js delete mode 100644 components/message/demo/custom-style.vue delete mode 100644 components/message/demo/duration.vue delete mode 100644 components/message/demo/hook.vue delete mode 100644 components/message/demo/index.vue delete mode 100644 components/message/demo/info.vue delete mode 100644 components/message/demo/loading.vue delete mode 100644 components/message/demo/other.vue delete mode 100644 components/message/demo/thenable.vue delete mode 100644 components/message/demo/update.vue delete mode 100644 components/message/index.en-US.md delete mode 100644 components/message/index.tsx delete mode 100644 components/message/index.zh-CN.md delete mode 100644 components/message/interface.ts delete mode 100644 components/message/style/index.ts delete mode 100644 components/message/useMessage.tsx delete mode 100644 components/modal/ConfirmDialog.tsx delete mode 100644 components/modal/Modal.tsx delete mode 100644 components/modal/__tests__/Modal.test.js delete mode 100644 components/modal/__tests__/__snapshots__/Modal.test.js.snap delete mode 100644 components/modal/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/modal/__tests__/confirm.test.js delete mode 100644 components/modal/__tests__/demo.test.js delete mode 100644 components/modal/confirm.tsx delete mode 100644 components/modal/demo/async.vue delete mode 100644 components/modal/demo/basic.vue delete mode 100644 components/modal/demo/button-props.vue delete mode 100644 components/modal/demo/confirm-promise.vue delete mode 100644 components/modal/demo/confirm-router.vue delete mode 100644 components/modal/demo/confirm.vue delete mode 100644 components/modal/demo/footer.vue delete mode 100644 components/modal/demo/fullscreen.vue delete mode 100644 components/modal/demo/hook-modal.vue delete mode 100644 components/modal/demo/index.vue delete mode 100644 components/modal/demo/info.vue delete mode 100644 components/modal/demo/locale.vue delete mode 100644 components/modal/demo/manual.vue delete mode 100644 components/modal/demo/modal-render.vue delete mode 100644 components/modal/demo/position.vue delete mode 100644 components/modal/demo/width.vue delete mode 100644 components/modal/destroyFns.ts delete mode 100644 components/modal/index.en-US.md delete mode 100644 components/modal/index.tsx delete mode 100644 components/modal/index.zh-CN.md delete mode 100644 components/modal/locale.ts delete mode 100644 components/modal/style/index.ts delete mode 100644 components/modal/useModal/HookModal.tsx delete mode 100644 components/modal/useModal/index.tsx delete mode 100644 components/notification/PurePanel.tsx delete mode 100644 components/notification/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/notification/__tests__/demo.test.js delete mode 100644 components/notification/__tests__/index.test.js delete mode 100644 components/notification/__tests__/placement.test.js delete mode 100644 components/notification/demo/basic.vue delete mode 100644 components/notification/demo/custom-icon.vue delete mode 100644 components/notification/demo/custom-style.vue delete mode 100644 components/notification/demo/duration.vue delete mode 100644 components/notification/demo/hook.vue delete mode 100644 components/notification/demo/index.vue delete mode 100644 components/notification/demo/placement.vue delete mode 100644 components/notification/demo/update.vue delete mode 100644 components/notification/demo/with-btn.vue delete mode 100644 components/notification/demo/with-icon.vue delete mode 100644 components/notification/index.en-US.md delete mode 100644 components/notification/index.tsx delete mode 100644 components/notification/index.zh-CN.md delete mode 100644 components/notification/interface.ts delete mode 100644 components/notification/style/index.ts delete mode 100644 components/notification/style/placement.ts delete mode 100644 components/notification/useNotification.tsx delete mode 100644 components/notification/util.ts delete mode 100644 components/page-header/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/page-header/__tests__/__snapshots__/index.test.js.snap delete mode 100644 components/page-header/__tests__/demo.test.js delete mode 100644 components/page-header/__tests__/index.test.js delete mode 100644 components/page-header/demo/actions.vue delete mode 100644 components/page-header/demo/basic.vue delete mode 100644 components/page-header/demo/breadcrumb.vue delete mode 100644 components/page-header/demo/content.vue delete mode 100644 components/page-header/demo/ghost.vue delete mode 100644 components/page-header/demo/index.vue delete mode 100644 components/page-header/demo/responsive.vue delete mode 100644 components/page-header/index.en-US.md delete mode 100644 components/page-header/index.tsx delete mode 100644 components/page-header/index.zh-CN.md delete mode 100644 components/page-header/style/index.ts delete mode 100644 components/pagination/Pagination.tsx delete mode 100644 components/pagination/Select.tsx delete mode 100644 components/pagination/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/pagination/__tests__/demo.test.js delete mode 100644 components/pagination/__tests__/index.test.js delete mode 100644 components/pagination/demo/basic.vue delete mode 100644 components/pagination/demo/changer.vue delete mode 100644 components/pagination/demo/custom-changer.vue delete mode 100644 components/pagination/demo/index.vue delete mode 100644 components/pagination/demo/itemRender.vue delete mode 100644 components/pagination/demo/jump.vue delete mode 100644 components/pagination/demo/mini.vue delete mode 100644 components/pagination/demo/more.vue delete mode 100644 components/pagination/demo/simple.vue delete mode 100644 components/pagination/demo/total.vue delete mode 100644 components/pagination/index.en-US.md delete mode 100644 components/pagination/index.ts delete mode 100644 components/pagination/index.zh-CN.md delete mode 100644 components/pagination/style/index.tsx delete mode 100644 components/popconfirm/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/popconfirm/__tests__/__snapshots__/index.test.js.snap delete mode 100644 components/popconfirm/__tests__/demo.test.js delete mode 100644 components/popconfirm/__tests__/index.test.js delete mode 100644 components/popconfirm/demo/basic.vue delete mode 100644 components/popconfirm/demo/dynamic-trigger.vue delete mode 100644 components/popconfirm/demo/icon.vue delete mode 100644 components/popconfirm/demo/index.vue delete mode 100644 components/popconfirm/demo/local.vue delete mode 100644 components/popconfirm/demo/placement.vue delete mode 100644 components/popconfirm/demo/promise.vue delete mode 100644 components/popconfirm/index.en-US.md delete mode 100644 components/popconfirm/index.tsx delete mode 100644 components/popconfirm/index.zh-CN.md delete mode 100644 components/popconfirm/style/index.ts delete mode 100644 components/popover/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/popover/__tests__/__snapshots__/index.test.js.snap delete mode 100644 components/popover/__tests__/demo.test.js delete mode 100644 components/popover/__tests__/index.test.js delete mode 100644 components/popover/demo/arrow-point-at-center.vue delete mode 100644 components/popover/demo/basic.vue delete mode 100644 components/popover/demo/control.vue delete mode 100644 components/popover/demo/hover-with-click.vue delete mode 100644 components/popover/demo/index.vue delete mode 100644 components/popover/demo/placement.vue delete mode 100644 components/popover/demo/triggerType.vue delete mode 100644 components/popover/index.en-US.md delete mode 100644 components/popover/index.tsx delete mode 100644 components/popover/index.zh-CN.md delete mode 100644 components/popover/style/index.ts delete mode 100644 components/progress/Circle.tsx delete mode 100644 components/progress/Line.tsx delete mode 100644 components/progress/Steps.tsx delete mode 100644 components/progress/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/progress/__tests__/__snapshots__/index.test.js.snap delete mode 100644 components/progress/__tests__/demo.test.js delete mode 100644 components/progress/__tests__/index.test.js delete mode 100644 components/progress/demo/circle-dynamic.vue delete mode 100644 components/progress/demo/circle-micro.vue delete mode 100644 components/progress/demo/circle-mini.vue delete mode 100644 components/progress/demo/circle.vue delete mode 100644 components/progress/demo/dashboard.vue delete mode 100644 components/progress/demo/dynamic.vue delete mode 100644 components/progress/demo/format.vue delete mode 100644 components/progress/demo/gradient-line.vue delete mode 100644 components/progress/demo/index.vue delete mode 100644 components/progress/demo/line-mini.vue delete mode 100644 components/progress/demo/line.vue delete mode 100644 components/progress/demo/linecap.vue delete mode 100644 components/progress/demo/segment.vue delete mode 100644 components/progress/demo/size.vue delete mode 100644 components/progress/demo/steps.vue delete mode 100644 components/progress/index.en-US.md delete mode 100644 components/progress/index.ts delete mode 100644 components/progress/index.zh-CN.md delete mode 100644 components/progress/progress.tsx delete mode 100644 components/progress/props.ts delete mode 100644 components/progress/style/index.ts delete mode 100644 components/progress/utils.ts delete mode 100644 components/qrcode/QRCode.tsx delete mode 100644 components/qrcode/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/qrcode/__tests__/__snapshots__/index.test.js.snap delete mode 100644 components/qrcode/__tests__/demo.test.js delete mode 100644 components/qrcode/__tests__/index.test.js delete mode 100644 components/qrcode/demo/base.vue delete mode 100644 components/qrcode/demo/customColor.vue delete mode 100644 components/qrcode/demo/customSize.vue delete mode 100644 components/qrcode/demo/customType.vue delete mode 100644 components/qrcode/demo/download.vue delete mode 100644 components/qrcode/demo/errorLevel.vue delete mode 100644 components/qrcode/demo/icon.vue delete mode 100644 components/qrcode/demo/index.vue delete mode 100644 components/qrcode/demo/popover.vue delete mode 100644 components/qrcode/demo/status.vue delete mode 100644 components/qrcode/index.en-US.md delete mode 100644 components/qrcode/index.tsx delete mode 100644 components/qrcode/index.zh-CN.md delete mode 100644 components/qrcode/interface.ts delete mode 100644 components/qrcode/qrcodegen.ts delete mode 100644 components/qrcode/style/index.ts delete mode 100644 components/radio/Group.tsx delete mode 100644 components/radio/Radio.tsx delete mode 100644 components/radio/RadioButton.tsx delete mode 100644 components/radio/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/radio/__tests__/__snapshots__/group.test.js.snap delete mode 100644 components/radio/__tests__/__snapshots__/radio.test.js.snap delete mode 100644 components/radio/__tests__/demo.test.js delete mode 100644 components/radio/__tests__/group.test.js delete mode 100644 components/radio/__tests__/radio.test.js delete mode 100644 components/radio/context.ts delete mode 100644 components/radio/demo/basic.vue delete mode 100644 components/radio/demo/disabled.vue delete mode 100644 components/radio/demo/index.vue delete mode 100644 components/radio/demo/radioButton-solid.vue delete mode 100644 components/radio/demo/radioButton.vue delete mode 100644 components/radio/demo/radioGroup-more.vue delete mode 100644 components/radio/demo/radioGroup-options.vue delete mode 100644 components/radio/demo/radioGroup-with-name.vue delete mode 100644 components/radio/demo/radioGroup.vue delete mode 100644 components/radio/demo/size.vue delete mode 100644 components/radio/index.en-US.md delete mode 100644 components/radio/index.ts delete mode 100644 components/radio/index.zh-CN.md delete mode 100644 components/radio/interface.ts delete mode 100644 components/radio/style/index.tsx delete mode 100644 components/rate/Star.tsx delete mode 100644 components/rate/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/rate/__tests__/demo.test.js delete mode 100644 components/rate/__tests__/index.test.js delete mode 100644 components/rate/demo/basic.vue delete mode 100644 components/rate/demo/character.vue delete mode 100644 components/rate/demo/clear.vue delete mode 100644 components/rate/demo/disabled.vue delete mode 100644 components/rate/demo/half.vue delete mode 100644 components/rate/demo/index.vue delete mode 100644 components/rate/demo/text.vue delete mode 100644 components/rate/index.en-US.md delete mode 100644 components/rate/index.tsx delete mode 100644 components/rate/index.zh-CN.md delete mode 100644 components/rate/style/index.ts delete mode 100644 components/rate/util.ts delete mode 100644 components/result/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/result/__tests__/demo.test.js delete mode 100644 components/result/__tests__/index.test.js delete mode 100644 components/result/demo/403.vue delete mode 100644 components/result/demo/404.vue delete mode 100644 components/result/demo/500.vue delete mode 100644 components/result/demo/customIcon.vue delete mode 100644 components/result/demo/error.vue delete mode 100644 components/result/demo/index.vue delete mode 100644 components/result/demo/info.vue delete mode 100644 components/result/demo/success.vue delete mode 100644 components/result/demo/warning.vue delete mode 100644 components/result/index.en-US.md delete mode 100644 components/result/index.tsx delete mode 100644 components/result/index.zh-CN.md delete mode 100644 components/result/noFound.tsx delete mode 100644 components/result/serverError.tsx delete mode 100644 components/result/style/index.tsx delete mode 100644 components/result/unauthorized.tsx delete mode 100644 components/row/index.ts delete mode 100644 components/row/style/index.ts delete mode 100644 components/segmented/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/segmented/__tests__/demo.test.js delete mode 100644 components/segmented/__tests__/index.test.js delete mode 100644 components/segmented/demo/basic.vue delete mode 100644 components/segmented/demo/block.vue delete mode 100644 components/segmented/demo/custom.vue delete mode 100644 components/segmented/demo/disabled.vue delete mode 100644 components/segmented/demo/dynamic.vue delete mode 100644 components/segmented/demo/index.vue delete mode 100644 components/segmented/demo/size.vue delete mode 100644 components/segmented/index.en-US.md delete mode 100644 components/segmented/index.ts delete mode 100644 components/segmented/index.zh-CN.md delete mode 100644 components/segmented/src/MotionThumb.tsx delete mode 100644 components/segmented/src/index.ts delete mode 100644 components/segmented/src/segmented.tsx delete mode 100644 components/segmented/style/index.ts delete mode 100644 components/select/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/select/__tests__/__snapshots__/index.test.js.snap delete mode 100644 components/select/__tests__/demo.test.js delete mode 100644 components/select/__tests__/index.test.js delete mode 100644 components/select/demo/automatic-tokenization.vue delete mode 100644 components/select/demo/basic.vue delete mode 100644 components/select/demo/big-data.vue delete mode 100644 components/select/demo/coordinate.vue delete mode 100644 components/select/demo/custom-dropdown-menu.vue delete mode 100644 components/select/demo/field-names.vue delete mode 100644 components/select/demo/hide-selected.vue delete mode 100644 components/select/demo/index.vue delete mode 100644 components/select/demo/label-in-value.vue delete mode 100644 components/select/demo/multiple.vue delete mode 100644 components/select/demo/optgroup.vue delete mode 100644 components/select/demo/option-label-prop.vue delete mode 100644 components/select/demo/placement.vue delete mode 100644 components/select/demo/responsive.vue delete mode 100644 components/select/demo/search-box.vue delete mode 100644 components/select/demo/search.vue delete mode 100644 components/select/demo/select-users.vue delete mode 100644 components/select/demo/size.vue delete mode 100644 components/select/demo/status.vue delete mode 100644 components/select/demo/suffix.vue delete mode 100644 components/select/demo/tags.vue delete mode 100644 components/select/index.en-US.md delete mode 100644 components/select/index.tsx delete mode 100644 components/select/index.zh-CN.md delete mode 100644 components/select/style/dropdown.ts delete mode 100644 components/select/style/index.ts delete mode 100644 components/select/style/multiple.ts delete mode 100644 components/select/style/single.ts delete mode 100644 components/select/utils/iconUtil.tsx delete mode 100644 components/skeleton/Avatar.tsx delete mode 100644 components/skeleton/Button.tsx delete mode 100644 components/skeleton/Element.tsx delete mode 100644 components/skeleton/Image.tsx delete mode 100644 components/skeleton/Input.tsx delete mode 100644 components/skeleton/Paragraph.tsx delete mode 100644 components/skeleton/Skeleton.tsx delete mode 100644 components/skeleton/Title.tsx delete mode 100644 components/skeleton/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/skeleton/__tests__/__snapshots__/index.test.js.snap delete mode 100644 components/skeleton/__tests__/demo.test.js delete mode 100644 components/skeleton/__tests__/index.test.js delete mode 100644 components/skeleton/demo/active.vue delete mode 100644 components/skeleton/demo/basic.vue delete mode 100644 components/skeleton/demo/children.vue delete mode 100644 components/skeleton/demo/complex.vue delete mode 100644 components/skeleton/demo/element.vue delete mode 100644 components/skeleton/demo/index.vue delete mode 100644 components/skeleton/demo/list.vue delete mode 100644 components/skeleton/index.en-US.md delete mode 100644 components/skeleton/index.tsx delete mode 100644 components/skeleton/index.zh-CN.md delete mode 100644 components/skeleton/style/index.ts delete mode 100644 components/slider/SliderTooltip.tsx delete mode 100644 components/slider/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/slider/__tests__/__snapshots__/index.test.js.snap delete mode 100644 components/slider/__tests__/demo.test.js delete mode 100644 components/slider/__tests__/index.test.js delete mode 100644 components/slider/demo/basic.vue delete mode 100644 components/slider/demo/event.vue delete mode 100644 components/slider/demo/icon-slider.vue delete mode 100644 components/slider/demo/index.vue delete mode 100644 components/slider/demo/input-number.vue delete mode 100644 components/slider/demo/mark.vue delete mode 100644 components/slider/demo/reverse.vue delete mode 100644 components/slider/demo/show-tooltip.vue delete mode 100644 components/slider/demo/tip-formatter.vue delete mode 100644 components/slider/demo/vertical.vue delete mode 100644 components/slider/index.en-US.md delete mode 100644 components/slider/index.tsx delete mode 100644 components/slider/index.zh-CN.md delete mode 100644 components/slider/style/index.tsx delete mode 100644 components/space/Compact.tsx delete mode 100644 components/space/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/space/__tests__/__snapshots__/index.test.js.snap delete mode 100644 components/space/__tests__/demo.test.js delete mode 100644 components/space/__tests__/index.test.js delete mode 100644 components/space/demo/align.vue delete mode 100644 components/space/demo/base.vue delete mode 100644 components/space/demo/compact-button-vertical.vue delete mode 100644 components/space/demo/compact-buttons.vue delete mode 100644 components/space/demo/compact.vue delete mode 100644 components/space/demo/customize.vue delete mode 100644 components/space/demo/index.vue delete mode 100644 components/space/demo/size.vue delete mode 100644 components/space/demo/split.vue delete mode 100644 components/space/demo/vertical.vue delete mode 100644 components/space/demo/wrap.vue delete mode 100644 components/space/index.en-US.md delete mode 100644 components/space/index.tsx delete mode 100644 components/space/index.zh-CN.md delete mode 100644 components/space/style/compact.tsx delete mode 100644 components/space/style/index.tsx delete mode 100644 components/spin/Spin.tsx delete mode 100644 components/spin/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/spin/__tests__/__snapshots__/index.test.js.snap delete mode 100644 components/spin/__tests__/delay.test.js delete mode 100644 components/spin/__tests__/demo.test.js delete mode 100644 components/spin/__tests__/index.test.js delete mode 100644 components/spin/demo/basic.vue delete mode 100644 components/spin/demo/custom-indicator.vue delete mode 100644 components/spin/demo/delay.vue delete mode 100644 components/spin/demo/index.vue delete mode 100644 components/spin/demo/inside.vue delete mode 100644 components/spin/demo/nested.vue delete mode 100644 components/spin/demo/size.vue delete mode 100644 components/spin/demo/tip.vue delete mode 100644 components/spin/index.en-US.md delete mode 100644 components/spin/index.ts delete mode 100644 components/spin/index.zh-CN.md delete mode 100644 components/spin/style/index.ts delete mode 100644 components/statistic/Countdown.tsx delete mode 100644 components/statistic/Number.tsx delete mode 100644 components/statistic/Statistic.tsx delete mode 100644 components/statistic/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/statistic/__tests__/__snapshots__/index.test.js.snap delete mode 100644 components/statistic/__tests__/demo.test.js delete mode 100644 components/statistic/__tests__/index.test.js delete mode 100644 components/statistic/demo/basic.vue delete mode 100644 components/statistic/demo/card.vue delete mode 100644 components/statistic/demo/countdown-slot.vue delete mode 100644 components/statistic/demo/countdown.vue delete mode 100644 components/statistic/demo/index.vue delete mode 100644 components/statistic/demo/unit.vue delete mode 100644 components/statistic/index.en-US.md delete mode 100644 components/statistic/index.ts delete mode 100644 components/statistic/index.zh-CN.md delete mode 100644 components/statistic/style/index.tsx delete mode 100644 components/statistic/utils.ts delete mode 100644 components/steps/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/steps/__tests__/demo.test.js delete mode 100644 components/steps/__tests__/index.test.js delete mode 100644 components/steps/demo/clickable.vue delete mode 100644 components/steps/demo/customized-progress-dot.vue delete mode 100644 components/steps/demo/error.vue delete mode 100644 components/steps/demo/icon.vue delete mode 100644 components/steps/demo/index.vue delete mode 100644 components/steps/demo/inline.vue delete mode 100644 components/steps/demo/label-placement.vue delete mode 100644 components/steps/demo/nav.vue delete mode 100644 components/steps/demo/progress-dot.vue delete mode 100644 components/steps/demo/progress.vue delete mode 100644 components/steps/demo/simple.vue delete mode 100644 components/steps/demo/small-size.vue delete mode 100644 components/steps/demo/step-next.vue delete mode 100644 components/steps/demo/vertical-small.vue delete mode 100644 components/steps/demo/vertical.vue delete mode 100644 components/steps/index.en-US.md delete mode 100644 components/steps/index.tsx delete mode 100644 components/steps/index.zh-CN.md delete mode 100644 components/steps/style/custom-icon.ts delete mode 100644 components/steps/style/index.tsx delete mode 100644 components/steps/style/inline.ts delete mode 100644 components/steps/style/label-placement.ts delete mode 100644 components/steps/style/nav.ts delete mode 100644 components/steps/style/progress-dot.ts delete mode 100644 components/steps/style/progress.ts delete mode 100644 components/steps/style/rtl.ts delete mode 100644 components/steps/style/small.ts delete mode 100644 components/steps/style/vertical.ts delete mode 100644 components/style/compact-item-vertical.ts delete mode 100644 components/style/compact-item.ts delete mode 100644 components/style/index.ts delete mode 100644 components/style/motion/collapse.ts delete mode 100644 components/style/motion/fade.ts delete mode 100644 components/style/motion/index.ts delete mode 100644 components/style/motion/motion.ts delete mode 100644 components/style/motion/move.ts delete mode 100644 components/style/motion/slide.ts delete mode 100644 components/style/motion/zoom.ts delete mode 100644 components/style/operationUnit.ts delete mode 100644 components/style/placementArrow.ts delete mode 100644 components/style/presetColor.tsx delete mode 100644 components/style/reset.css delete mode 100644 components/style/roundedArrow.ts delete mode 100644 components/switch/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/switch/__tests__/__snapshots__/index.test.js.snap delete mode 100644 components/switch/__tests__/demo.test.js delete mode 100644 components/switch/__tests__/index.test.js delete mode 100644 components/switch/demo/basic.vue delete mode 100644 components/switch/demo/disabled.vue delete mode 100644 components/switch/demo/index.vue delete mode 100644 components/switch/demo/loading.vue delete mode 100644 components/switch/demo/size.vue delete mode 100644 components/switch/demo/text.vue delete mode 100644 components/switch/index.en-US.md delete mode 100644 components/switch/index.tsx delete mode 100644 components/switch/index.zh-CN.md delete mode 100644 components/switch/style/index.ts delete mode 100644 components/table/Column.tsx delete mode 100644 components/table/ColumnGroup.tsx delete mode 100644 components/table/ExpandIcon.tsx delete mode 100644 components/table/Table.tsx delete mode 100644 components/table/__tests__/Table.filter.test.js delete mode 100644 components/table/__tests__/Table.pagination.test.js delete mode 100644 components/table/__tests__/Table.rowSelection.test.js delete mode 100644 components/table/__tests__/Table.sorter.test.js delete mode 100644 components/table/__tests__/Table.test.js delete mode 100644 components/table/__tests__/__snapshots__/Table.filter.test.js.snap delete mode 100644 components/table/__tests__/__snapshots__/Table.pagination.test.js.snap delete mode 100644 components/table/__tests__/__snapshots__/Table.rowSelection.test.js.snap delete mode 100644 components/table/__tests__/__snapshots__/Table.sorter.test.js.snap delete mode 100644 components/table/__tests__/__snapshots__/Table.test.js.snap delete mode 100644 components/table/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/table/__tests__/__snapshots__/empty.test.js.snap delete mode 100644 components/table/__tests__/demo.test.js delete mode 100644 components/table/__tests__/empty.test.js delete mode 100644 components/table/context.ts delete mode 100644 components/table/demo/ajax.vue delete mode 100644 components/table/demo/basic.vue delete mode 100644 components/table/demo/big-data.vue delete mode 100644 components/table/demo/bordered.vue delete mode 100644 components/table/demo/colspan-rowspan.vue delete mode 100644 components/table/demo/custom-filter-panel.vue delete mode 100644 components/table/demo/edit-cell.vue delete mode 100644 components/table/demo/edit-row.vue delete mode 100644 components/table/demo/ellipsis.vue delete mode 100644 components/table/demo/expand-children.vue delete mode 100644 components/table/demo/expand.vue delete mode 100644 components/table/demo/filter-in-tree.vue delete mode 100644 components/table/demo/filter-search.vue delete mode 100644 components/table/demo/fixed-columns-header.vue delete mode 100644 components/table/demo/fixed-columns.vue delete mode 100644 components/table/demo/fixed-header.vue delete mode 100644 components/table/demo/grouping-columns.vue delete mode 100644 components/table/demo/head.vue delete mode 100644 components/table/demo/index.vue delete mode 100644 components/table/demo/multiple-sorter.vue delete mode 100644 components/table/demo/nested-table.vue delete mode 100644 components/table/demo/order-column.vue delete mode 100644 components/table/demo/reset-filter.vue delete mode 100644 components/table/demo/resizable-column.vue delete mode 100644 components/table/demo/responsive.vue delete mode 100644 components/table/demo/row-selection-and-operation.vue delete mode 100644 components/table/demo/row-selection-custom.vue delete mode 100644 components/table/demo/row-selection.vue delete mode 100644 components/table/demo/size.vue delete mode 100644 components/table/demo/sticky.vue delete mode 100644 components/table/demo/stripe.vue delete mode 100644 components/table/demo/summary.vue delete mode 100644 components/table/demo/template.vue delete mode 100644 components/table/hooks/useColumns.tsx delete mode 100644 components/table/hooks/useFilter/FilterDropdown.tsx delete mode 100644 components/table/hooks/useFilter/FilterSearch.tsx delete mode 100644 components/table/hooks/useFilter/FilterWrapper.tsx delete mode 100644 components/table/hooks/useFilter/index.tsx delete mode 100644 components/table/hooks/useLazyKVMap.ts delete mode 100644 components/table/hooks/usePagination.ts delete mode 100644 components/table/hooks/useSelection.tsx delete mode 100644 components/table/hooks/useSorter.tsx delete mode 100644 components/table/hooks/useTitleColumns.tsx delete mode 100644 components/table/index.en-US.md delete mode 100644 components/table/index.tsx delete mode 100644 components/table/index.zh-CN.md delete mode 100644 components/table/interface.tsx delete mode 100644 components/table/style/bordered.ts delete mode 100644 components/table/style/ellipsis.ts delete mode 100644 components/table/style/empty.ts delete mode 100644 components/table/style/expand.ts delete mode 100644 components/table/style/filter.ts delete mode 100644 components/table/style/fixed.ts delete mode 100644 components/table/style/index.ts delete mode 100644 components/table/style/pagination.ts delete mode 100644 components/table/style/radius.ts delete mode 100644 components/table/style/resize.ts delete mode 100644 components/table/style/rtl.ts delete mode 100644 components/table/style/selection.ts delete mode 100644 components/table/style/size.ts delete mode 100644 components/table/style/sorter.ts delete mode 100644 components/table/style/sticky.ts delete mode 100644 components/table/style/summary.ts delete mode 100644 components/table/util.ts delete mode 100644 components/tabs/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/tabs/__tests__/__snapshots__/index.test.js.snap delete mode 100644 components/tabs/__tests__/demo.test.js delete mode 100644 components/tabs/__tests__/index.test.js delete mode 100644 components/tabs/demo/basic.vue delete mode 100644 components/tabs/demo/card-top.vue delete mode 100644 components/tabs/demo/card.vue delete mode 100644 components/tabs/demo/centered.vue delete mode 100644 components/tabs/demo/custom-add-trigger.vue delete mode 100644 components/tabs/demo/custom-tab-bar.vue delete mode 100644 components/tabs/demo/disabled.vue delete mode 100644 components/tabs/demo/editable-card.vue delete mode 100644 components/tabs/demo/extra.vue delete mode 100644 components/tabs/demo/icon.vue delete mode 100644 components/tabs/demo/index.vue delete mode 100644 components/tabs/demo/position.vue delete mode 100644 components/tabs/demo/size.vue delete mode 100644 components/tabs/demo/slide.vue delete mode 100644 components/tabs/index.en-US.md delete mode 100644 components/tabs/index.ts delete mode 100644 components/tabs/index.zh-CN.md delete mode 100644 components/tabs/src/TabContext.ts delete mode 100644 components/tabs/src/TabNavList/AddButton.tsx delete mode 100644 components/tabs/src/TabNavList/OperationNode.tsx delete mode 100644 components/tabs/src/TabNavList/TabNode.tsx delete mode 100644 components/tabs/src/TabNavList/index.tsx delete mode 100644 components/tabs/src/TabPanelList/TabPane.tsx delete mode 100644 components/tabs/src/TabPanelList/index.tsx delete mode 100644 components/tabs/src/Tabs.tsx delete mode 100644 components/tabs/src/hooks/useOffsets.ts delete mode 100644 components/tabs/src/hooks/useRaf.ts delete mode 100644 components/tabs/src/hooks/useSyncState.ts delete mode 100644 components/tabs/src/hooks/useTouchMove.ts delete mode 100644 components/tabs/src/index.ts delete mode 100644 components/tabs/src/interface.ts delete mode 100644 components/tabs/style/index.ts delete mode 100644 components/tabs/style/motion.ts delete mode 100644 components/tag/CheckableTag.tsx delete mode 100644 components/tag/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/tag/__tests__/__snapshots__/index.test.js.snap delete mode 100644 components/tag/__tests__/demo.test.js delete mode 100644 components/tag/__tests__/index.test.js delete mode 100644 components/tag/demo/basic.vue delete mode 100644 components/tag/demo/border-less.vue delete mode 100644 components/tag/demo/checkable.vue delete mode 100644 components/tag/demo/colorful.vue delete mode 100644 components/tag/demo/control.vue delete mode 100644 components/tag/demo/hot-tags.vue delete mode 100644 components/tag/demo/icon.vue delete mode 100644 components/tag/demo/index.vue delete mode 100644 components/tag/demo/status.vue delete mode 100644 components/tag/index.en-US.md delete mode 100644 components/tag/index.tsx delete mode 100644 components/tag/index.zh-CN.md delete mode 100644 components/tag/style/index.ts delete mode 100644 components/theme/context.ts delete mode 100644 components/theme/getDesignToken.ts delete mode 100644 components/theme/index.ts delete mode 100644 components/theme/interface/alias.ts delete mode 100644 components/theme/interface/components.ts delete mode 100644 components/theme/interface/index.ts delete mode 100644 components/theme/interface/maps/colors.ts delete mode 100644 components/theme/interface/maps/font.ts delete mode 100644 components/theme/interface/maps/index.ts delete mode 100644 components/theme/interface/maps/size.ts delete mode 100644 components/theme/interface/maps/style.ts delete mode 100644 components/theme/interface/presetColors.ts delete mode 100644 components/theme/interface/seeds.ts delete mode 100644 components/theme/internal.ts delete mode 100644 components/theme/themes/ColorMap.ts delete mode 100644 components/theme/themes/compact/genCompactSizeMapToken.ts delete mode 100644 components/theme/themes/compact/index.ts delete mode 100644 components/theme/themes/dark/colorAlgorithm.ts delete mode 100644 components/theme/themes/dark/colors.ts delete mode 100644 components/theme/themes/dark/index.ts delete mode 100644 components/theme/themes/default/colorAlgorithm.ts delete mode 100644 components/theme/themes/default/colors.ts delete mode 100644 components/theme/themes/default/index.ts delete mode 100644 components/theme/themes/seed.ts delete mode 100644 components/theme/themes/shared/genColorMapToken.ts delete mode 100644 components/theme/themes/shared/genCommonMapToken.ts delete mode 100644 components/theme/themes/shared/genControlHeight.ts delete mode 100644 components/theme/themes/shared/genFontMapToken.ts delete mode 100644 components/theme/themes/shared/genFontSizes.ts delete mode 100644 components/theme/themes/shared/genRadius.ts delete mode 100644 components/theme/themes/shared/genSizeMapToken.ts delete mode 100644 components/theme/useToken.ts delete mode 100644 components/theme/util/alias.ts delete mode 100644 components/theme/util/calc/CSSCalculator.ts delete mode 100644 components/theme/util/calc/NumCalculator.ts delete mode 100644 components/theme/util/calc/calculator.ts delete mode 100644 components/theme/util/calc/index.ts delete mode 100644 components/theme/util/genComponentStyleHook.ts delete mode 100644 components/theme/util/genPresetColor.ts delete mode 100644 components/theme/util/getAlphaColor.ts delete mode 100644 components/theme/util/maxmin.ts delete mode 100644 components/theme/util/statistic.ts delete mode 100644 components/theme/util/useResetIconStyle.ts delete mode 100644 components/time-picker/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/time-picker/__tests__/__snapshots__/index.test.js.snap delete mode 100644 components/time-picker/__tests__/demo.test.js delete mode 100644 components/time-picker/__tests__/index.test.js delete mode 100644 components/time-picker/date-fns.tsx delete mode 100644 components/time-picker/dayjs.tsx delete mode 100644 components/time-picker/demo/12hours.vue delete mode 100644 components/time-picker/demo/addon.vue delete mode 100644 components/time-picker/demo/basic.vue delete mode 100644 components/time-picker/demo/bordered.vue delete mode 100644 components/time-picker/demo/disabled.vue delete mode 100644 components/time-picker/demo/hide-column.vue delete mode 100644 components/time-picker/demo/index.vue delete mode 100644 components/time-picker/demo/interval-options.vue delete mode 100644 components/time-picker/demo/placement.vue delete mode 100644 components/time-picker/demo/range-picker.vue delete mode 100644 components/time-picker/demo/size.vue delete mode 100644 components/time-picker/demo/status.vue delete mode 100644 components/time-picker/demo/suffix.vue delete mode 100644 components/time-picker/demo/value.vue delete mode 100644 components/time-picker/index.en-US.md delete mode 100644 components/time-picker/index.tsx delete mode 100644 components/time-picker/index.zh-CN.md delete mode 100644 components/time-picker/locale/ar_EG.ts delete mode 100644 components/time-picker/locale/az_AZ.ts delete mode 100644 components/time-picker/locale/bg_BG.ts delete mode 100644 components/time-picker/locale/bn_BD.ts delete mode 100644 components/time-picker/locale/by_BY.ts delete mode 100644 components/time-picker/locale/ca_ES.ts delete mode 100644 components/time-picker/locale/cs_CZ.ts delete mode 100644 components/time-picker/locale/da_DK.ts delete mode 100644 components/time-picker/locale/de_DE.ts delete mode 100644 components/time-picker/locale/el_GR.ts delete mode 100644 components/time-picker/locale/en_GB.ts delete mode 100644 components/time-picker/locale/en_US.ts delete mode 100644 components/time-picker/locale/es_ES.ts delete mode 100644 components/time-picker/locale/et_EE.ts delete mode 100644 components/time-picker/locale/fa_IR.ts delete mode 100644 components/time-picker/locale/fi_FI.ts delete mode 100644 components/time-picker/locale/fr_BE.ts delete mode 100644 components/time-picker/locale/fr_CA.ts delete mode 100644 components/time-picker/locale/fr_FR.ts delete mode 100644 components/time-picker/locale/ga_IE.ts delete mode 100644 components/time-picker/locale/gl_ES.ts delete mode 100644 components/time-picker/locale/he_IL.ts delete mode 100644 components/time-picker/locale/hi_IN.ts delete mode 100644 components/time-picker/locale/hr_HR.ts delete mode 100644 components/time-picker/locale/hu_HU.ts delete mode 100644 components/time-picker/locale/id_ID.ts delete mode 100644 components/time-picker/locale/is_IS.ts delete mode 100644 components/time-picker/locale/it_IT.ts delete mode 100644 components/time-picker/locale/ja_JP.ts delete mode 100644 components/time-picker/locale/ka_GE.ts delete mode 100644 components/time-picker/locale/kk_KZ.ts delete mode 100644 components/time-picker/locale/km_KH.ts delete mode 100755 components/time-picker/locale/kmr_IQ.ts delete mode 100644 components/time-picker/locale/kn_IN.ts delete mode 100644 components/time-picker/locale/ko_KR.ts delete mode 100644 components/time-picker/locale/lt_LT.ts delete mode 100644 components/time-picker/locale/lv_LV.ts delete mode 100644 components/time-picker/locale/mk_MK.ts delete mode 100644 components/time-picker/locale/ml_IN.ts delete mode 100644 components/time-picker/locale/mn_MN.ts delete mode 100644 components/time-picker/locale/ms_MY.ts delete mode 100644 components/time-picker/locale/nb_NO.ts delete mode 100644 components/time-picker/locale/nl_BE.ts delete mode 100644 components/time-picker/locale/nl_NL.ts delete mode 100644 components/time-picker/locale/pl_PL.ts delete mode 100644 components/time-picker/locale/pt_BR.ts delete mode 100644 components/time-picker/locale/pt_PT.ts delete mode 100644 components/time-picker/locale/ro_RO.ts delete mode 100644 components/time-picker/locale/ru_RU.ts delete mode 100644 components/time-picker/locale/sk_SK.ts delete mode 100644 components/time-picker/locale/sl_SI.ts delete mode 100644 components/time-picker/locale/sr_RS.ts delete mode 100644 components/time-picker/locale/sv_SE.ts delete mode 100644 components/time-picker/locale/ta_IN.ts delete mode 100644 components/time-picker/locale/th_TH.ts delete mode 100644 components/time-picker/locale/tr_TR.ts delete mode 100644 components/time-picker/locale/uk_UA.ts delete mode 100644 components/time-picker/locale/ur_PK.ts delete mode 100644 components/time-picker/locale/vi_VN.ts delete mode 100644 components/time-picker/locale/zh_CN.ts delete mode 100644 components/time-picker/locale/zh_TW.ts delete mode 100644 components/time-picker/moment.tsx delete mode 100644 components/time-picker/time-picker.tsx delete mode 100644 components/timeline/Timeline.tsx delete mode 100644 components/timeline/TimelineItem.tsx delete mode 100644 components/timeline/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/timeline/__tests__/demo.test.js delete mode 100644 components/timeline/__tests__/index.test.js delete mode 100644 components/timeline/demo/alternate.vue delete mode 100644 components/timeline/demo/basic.vue delete mode 100644 components/timeline/demo/color.vue delete mode 100644 components/timeline/demo/custom.vue delete mode 100644 components/timeline/demo/index.vue delete mode 100644 components/timeline/demo/label.vue delete mode 100644 components/timeline/demo/pending.vue delete mode 100644 components/timeline/demo/right.vue delete mode 100644 components/timeline/index.en-US.md delete mode 100644 components/timeline/index.tsx delete mode 100644 components/timeline/index.zh-CN.md delete mode 100644 components/timeline/style/index.tsx delete mode 100644 components/tooltip/Tooltip.tsx delete mode 100644 components/tooltip/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/tooltip/__tests__/demo.test.js delete mode 100644 components/tooltip/__tests__/tooltip.test.js delete mode 100644 components/tooltip/abstractTooltipProps.ts delete mode 100644 components/tooltip/demo/arrow-point-at-center.vue delete mode 100644 components/tooltip/demo/arrow.vue delete mode 100644 components/tooltip/demo/auto-adjust-overflow.vue delete mode 100644 components/tooltip/demo/basic.vue delete mode 100644 components/tooltip/demo/color.vue delete mode 100644 components/tooltip/demo/index.vue delete mode 100644 components/tooltip/demo/placement.vue delete mode 100644 components/tooltip/index.en-US.md delete mode 100644 components/tooltip/index.ts delete mode 100644 components/tooltip/index.zh-CN.md delete mode 100644 components/tooltip/style/index.ts delete mode 100644 components/tooltip/util.ts delete mode 100644 components/tour/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/tour/__tests__/demo.test.js delete mode 100644 components/tour/__tests__/index.test.js delete mode 100644 components/tour/demo/basic.vue delete mode 100644 components/tour/demo/index.vue delete mode 100644 components/tour/demo/indicator.vue delete mode 100644 components/tour/demo/mask.vue delete mode 100644 components/tour/demo/non-modal.vue delete mode 100644 components/tour/demo/placement.vue delete mode 100644 components/tour/index.en-US.md delete mode 100644 components/tour/index.tsx delete mode 100644 components/tour/index.zh-CN.md delete mode 100644 components/tour/interface.ts delete mode 100644 components/tour/panelRender.tsx delete mode 100644 components/tour/style/index.ts delete mode 100644 components/tour/useMergedType.ts delete mode 100644 components/transfer/ListBody.tsx delete mode 100644 components/transfer/ListItem.tsx delete mode 100644 components/transfer/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/transfer/__tests__/__snapshots__/index.test.js.snap delete mode 100644 components/transfer/__tests__/__snapshots__/list.test.js.snap delete mode 100644 components/transfer/__tests__/__snapshots__/search.test.js.snap delete mode 100644 components/transfer/__tests__/demo.test.js delete mode 100644 components/transfer/__tests__/index.test.js delete mode 100644 components/transfer/__tests__/list.test.js delete mode 100644 components/transfer/__tests__/search.test.js delete mode 100644 components/transfer/demo/advanced.vue delete mode 100644 components/transfer/demo/basic.vue delete mode 100644 components/transfer/demo/custom-item.vue delete mode 100644 components/transfer/demo/custom-select-all-labels.vue delete mode 100644 components/transfer/demo/index.vue delete mode 100644 components/transfer/demo/oneway.vue delete mode 100644 components/transfer/demo/pagination.vue delete mode 100644 components/transfer/demo/search.vue delete mode 100644 components/transfer/demo/status.vue delete mode 100644 components/transfer/demo/table-transfer.vue delete mode 100644 components/transfer/demo/tree-transfer.vue delete mode 100644 components/transfer/index.en-US.md delete mode 100644 components/transfer/index.tsx delete mode 100644 components/transfer/index.zh-CN.md delete mode 100644 components/transfer/interface.ts delete mode 100644 components/transfer/list.tsx delete mode 100644 components/transfer/operation.tsx delete mode 100644 components/transfer/search.tsx delete mode 100644 components/transfer/style/index.tsx delete mode 100644 components/tree-select/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/tree-select/__tests__/demo.test.js delete mode 100644 components/tree-select/__tests__/index.test.js delete mode 100644 components/tree-select/demo/async.vue delete mode 100644 components/tree-select/demo/basic.vue delete mode 100644 components/tree-select/demo/checkable.vue delete mode 100644 components/tree-select/demo/custom-tag-render.vue delete mode 100644 components/tree-select/demo/highlight.vue delete mode 100644 components/tree-select/demo/index.vue delete mode 100644 components/tree-select/demo/multiple.vue delete mode 100644 components/tree-select/demo/placement.vue delete mode 100644 components/tree-select/demo/replaceFields.vue delete mode 100644 components/tree-select/demo/status.vue delete mode 100644 components/tree-select/demo/suffix.vue delete mode 100644 components/tree-select/demo/tree-line.vue delete mode 100644 components/tree-select/demo/virtual-scroll.vue delete mode 100644 components/tree-select/index.en-US.md delete mode 100644 components/tree-select/index.tsx delete mode 100644 components/tree-select/index.zh-CN.md delete mode 100644 components/tree-select/style/index.tsx delete mode 100644 components/tree/DirectoryTree.tsx delete mode 100644 components/tree/Tree.tsx delete mode 100644 components/tree/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/tree/__tests__/demo.test.js delete mode 100644 components/tree/__tests__/util.test.js delete mode 100644 components/tree/breakchange.md delete mode 100644 components/tree/demo/accordion.vue delete mode 100644 components/tree/demo/basic.vue delete mode 100644 components/tree/demo/context-menu.vue delete mode 100644 components/tree/demo/customized-icon.vue delete mode 100644 components/tree/demo/directory.vue delete mode 100644 components/tree/demo/draggable.vue delete mode 100644 components/tree/demo/dynamic.vue delete mode 100644 components/tree/demo/index.vue delete mode 100644 components/tree/demo/line.vue delete mode 100644 components/tree/demo/replaceFields.vue delete mode 100644 components/tree/demo/search.vue delete mode 100644 components/tree/demo/switcher-icon.vue delete mode 100644 components/tree/demo/virtual-scroll.vue delete mode 100644 components/tree/index.en-US.md delete mode 100644 components/tree/index.tsx delete mode 100644 components/tree/index.zh-CN.md delete mode 100644 components/tree/style/index.ts delete mode 100644 components/tree/utils/dictUtil.ts delete mode 100644 components/tree/utils/dropIndicator.tsx delete mode 100644 components/tree/utils/iconUtil.tsx delete mode 100644 components/typography/Base.tsx delete mode 100644 components/typography/Editable.tsx delete mode 100644 components/typography/Link.tsx delete mode 100644 components/typography/Paragraph.tsx delete mode 100644 components/typography/Text.tsx delete mode 100644 components/typography/Title.tsx delete mode 100644 components/typography/Typography.tsx delete mode 100644 components/typography/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/typography/__tests__/demo.test.js delete mode 100644 components/typography/__tests__/index.test.js delete mode 100644 components/typography/demo/basic.vue delete mode 100644 components/typography/demo/ellipsis.vue delete mode 100644 components/typography/demo/index.vue delete mode 100644 components/typography/demo/interactive.vue delete mode 100644 components/typography/demo/suffix.vue delete mode 100644 components/typography/demo/text.vue delete mode 100644 components/typography/demo/title.vue delete mode 100644 components/typography/index.en-US.md delete mode 100644 components/typography/index.tsx delete mode 100644 components/typography/index.zh-CN.md delete mode 100644 components/typography/style/index.tsx delete mode 100644 components/typography/style/mixins.tsx delete mode 100644 components/typography/util.tsx delete mode 100644 components/upload/Dragger.tsx delete mode 100644 components/upload/Upload.tsx delete mode 100644 components/upload/UploadList/ListItem.tsx delete mode 100644 components/upload/UploadList/index.tsx delete mode 100644 components/upload/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/upload/__tests__/__snapshots__/uploadlist.test.js.snap delete mode 100644 components/upload/__tests__/demo.test.js delete mode 100644 components/upload/__tests__/mock.js delete mode 100644 components/upload/__tests__/requests.js delete mode 100644 components/upload/__tests__/upload.test.js delete mode 100644 components/upload/__tests__/uploadlist.test.js delete mode 100644 components/upload/demo/avatar.vue delete mode 100644 components/upload/demo/basic.vue delete mode 100644 components/upload/demo/custom-render.vue delete mode 100644 components/upload/demo/customize-progress-bar.vue delete mode 100644 components/upload/demo/defaultFileList.vue delete mode 100644 components/upload/demo/directory.vue delete mode 100644 components/upload/demo/drag.vue delete mode 100644 components/upload/demo/fileList.vue delete mode 100644 components/upload/demo/index.vue delete mode 100644 components/upload/demo/max-count.vue delete mode 100644 components/upload/demo/picture-card.vue delete mode 100644 components/upload/demo/picture-style.vue delete mode 100644 components/upload/demo/preview-file.vue delete mode 100644 components/upload/demo/transform-file.vue delete mode 100644 components/upload/demo/upload-custom-action-icon.vue delete mode 100644 components/upload/demo/upload-manually.vue delete mode 100644 components/upload/demo/upload-png-only.vue delete mode 100644 components/upload/index.en-US.md delete mode 100644 components/upload/index.tsx delete mode 100644 components/upload/index.zh-CN.md delete mode 100755 components/upload/interface.tsx delete mode 100644 components/upload/style/dragger.ts delete mode 100644 components/upload/style/index.ts delete mode 100644 components/upload/style/list.ts delete mode 100644 components/upload/style/motion.ts delete mode 100644 components/upload/style/picture.ts delete mode 100644 components/upload/style/rtl.ts delete mode 100644 components/upload/utils.tsx delete mode 100644 components/vc-align/Align.tsx delete mode 100644 components/vc-align/hooks/useBuffer.tsx delete mode 100644 components/vc-align/index.ts delete mode 100644 components/vc-align/interface.ts delete mode 100644 components/vc-align/util.ts delete mode 100644 components/vc-cascader/Cascader.tsx delete mode 100644 components/vc-cascader/OptionList/Checkbox.tsx delete mode 100644 components/vc-cascader/OptionList/Column.tsx delete mode 100644 components/vc-cascader/OptionList/index.tsx delete mode 100644 components/vc-cascader/OptionList/useActive.ts delete mode 100644 components/vc-cascader/OptionList/useKeyboard.ts delete mode 100644 components/vc-cascader/context.ts delete mode 100644 components/vc-cascader/hooks/useDisplayValues.ts delete mode 100644 components/vc-cascader/hooks/useEntities.ts delete mode 100644 components/vc-cascader/hooks/useMissingValues.ts delete mode 100644 components/vc-cascader/hooks/useSearchConfig.ts delete mode 100644 components/vc-cascader/hooks/useSearchOptions.ts delete mode 100644 components/vc-cascader/index.tsx delete mode 100644 components/vc-cascader/utils/commonUtil.ts delete mode 100644 components/vc-cascader/utils/treeUtil.ts delete mode 100644 components/vc-checkbox/Checkbox.tsx delete mode 100644 components/vc-dialog/Content.tsx delete mode 100644 components/vc-dialog/Dialog.tsx delete mode 100644 components/vc-dialog/DialogWrap.tsx delete mode 100644 components/vc-dialog/IDialogPropTypes.ts delete mode 100644 components/vc-dialog/Mask.tsx delete mode 100644 components/vc-dialog/index.ts delete mode 100644 components/vc-dialog/util.ts delete mode 100644 components/vc-drawer/index.ts delete mode 100644 components/vc-drawer/src/DrawerChild.tsx delete mode 100644 components/vc-drawer/src/DrawerWrapper.tsx delete mode 100644 components/vc-drawer/src/IDrawerPropTypes.ts delete mode 100644 components/vc-drawer/src/utils.ts delete mode 100644 components/vc-dropdown/Dropdown.tsx delete mode 100644 components/vc-dropdown/index.ts delete mode 100644 components/vc-dropdown/placements.ts delete mode 100644 components/vc-image/index.ts delete mode 100644 components/vc-image/src/Image.tsx delete mode 100644 components/vc-image/src/Preview.tsx delete mode 100644 components/vc-image/src/PreviewGroup.tsx delete mode 100644 components/vc-image/src/getFixScaleEleTransPosition.ts delete mode 100644 components/vc-image/src/hooks/useFrameSetState.ts delete mode 100644 components/vc-input/BaseInput.tsx delete mode 100644 components/vc-input/Input.tsx delete mode 100644 components/vc-input/inputProps.ts delete mode 100644 components/vc-input/utils/commonUtils.ts delete mode 100644 components/vc-input/utils/types.ts delete mode 100644 components/vc-mentions/index.ts delete mode 100644 components/vc-mentions/src/DropdownMenu.tsx delete mode 100644 components/vc-mentions/src/KeywordTrigger.tsx delete mode 100644 components/vc-mentions/src/Mentions.tsx delete mode 100644 components/vc-mentions/src/MentionsContext.ts delete mode 100644 components/vc-mentions/src/Option.tsx delete mode 100644 components/vc-mentions/src/mentionsProps.ts delete mode 100644 components/vc-mentions/src/util.ts delete mode 100644 components/vc-notification/HookNotification.tsx delete mode 100644 components/vc-notification/Notice.tsx delete mode 100644 components/vc-notification/Notification.tsx delete mode 100644 components/vc-notification/index.ts delete mode 100644 components/vc-notification/useNotification.tsx delete mode 100644 components/vc-overflow/Item.tsx delete mode 100644 components/vc-overflow/Overflow.tsx delete mode 100644 components/vc-overflow/RawItem.tsx delete mode 100644 components/vc-overflow/context.ts delete mode 100644 components/vc-overflow/index.ts delete mode 100644 components/vc-pagination/KeyCode.ts delete mode 100644 components/vc-pagination/Options.tsx delete mode 100644 components/vc-pagination/Pager.tsx delete mode 100644 components/vc-pagination/Pagination.tsx delete mode 100644 components/vc-pagination/index.ts delete mode 100644 components/vc-pagination/locale/ar_EG.ts delete mode 100644 components/vc-pagination/locale/az_AZ.ts delete mode 100644 components/vc-pagination/locale/bg_BG.ts delete mode 100644 components/vc-pagination/locale/bn_BD.ts delete mode 100644 components/vc-pagination/locale/by_BY.ts delete mode 100644 components/vc-pagination/locale/ca_ES.ts delete mode 100644 components/vc-pagination/locale/cs_CZ.ts delete mode 100644 components/vc-pagination/locale/da_DK.ts delete mode 100644 components/vc-pagination/locale/de_DE.ts delete mode 100644 components/vc-pagination/locale/el_GR.ts delete mode 100644 components/vc-pagination/locale/en_GB.ts delete mode 100644 components/vc-pagination/locale/en_US.ts delete mode 100644 components/vc-pagination/locale/es_ES.ts delete mode 100644 components/vc-pagination/locale/et_EE.ts delete mode 100644 components/vc-pagination/locale/fa_IR.ts delete mode 100644 components/vc-pagination/locale/fi_FI.ts delete mode 100644 components/vc-pagination/locale/fr_BE.ts delete mode 100644 components/vc-pagination/locale/fr_CA.ts delete mode 100644 components/vc-pagination/locale/fr_FR.ts delete mode 100644 components/vc-pagination/locale/ga_IE.ts delete mode 100644 components/vc-pagination/locale/gl_ES.ts delete mode 100644 components/vc-pagination/locale/he_IL.ts delete mode 100644 components/vc-pagination/locale/hi_IN.ts delete mode 100644 components/vc-pagination/locale/hr_HR.ts delete mode 100644 components/vc-pagination/locale/hu_HU.ts delete mode 100644 components/vc-pagination/locale/id_ID.ts delete mode 100644 components/vc-pagination/locale/is_IS.ts delete mode 100644 components/vc-pagination/locale/it_IT.ts delete mode 100644 components/vc-pagination/locale/ja_JP.ts delete mode 100644 components/vc-pagination/locale/ka_GE.ts delete mode 100644 components/vc-pagination/locale/kk_KZ.ts delete mode 100644 components/vc-pagination/locale/km_KH.ts delete mode 100644 components/vc-pagination/locale/kmr_IQ.ts delete mode 100644 components/vc-pagination/locale/kn_IN.ts delete mode 100644 components/vc-pagination/locale/ko_KR.ts delete mode 100644 components/vc-pagination/locale/lt_LT.ts delete mode 100644 components/vc-pagination/locale/lv_LV.ts delete mode 100644 components/vc-pagination/locale/mk_MK.ts delete mode 100644 components/vc-pagination/locale/ml_IN.ts delete mode 100644 components/vc-pagination/locale/mm_MM.ts delete mode 100644 components/vc-pagination/locale/mn_MN.ts delete mode 100644 components/vc-pagination/locale/ms_MY.ts delete mode 100644 components/vc-pagination/locale/nb_NO.ts delete mode 100644 components/vc-pagination/locale/nl_BE.ts delete mode 100644 components/vc-pagination/locale/nl_NL.ts delete mode 100644 components/vc-pagination/locale/pa_IN.ts delete mode 100644 components/vc-pagination/locale/pb_IN.ts delete mode 100644 components/vc-pagination/locale/pl_PL.ts delete mode 100644 components/vc-pagination/locale/pt_BR.ts delete mode 100644 components/vc-pagination/locale/pt_PT.ts delete mode 100644 components/vc-pagination/locale/ro_RO.ts delete mode 100644 components/vc-pagination/locale/ru_RU.ts delete mode 100644 components/vc-pagination/locale/sk_SK.ts delete mode 100644 components/vc-pagination/locale/sl_SI.ts delete mode 100644 components/vc-pagination/locale/sr_RS.ts delete mode 100644 components/vc-pagination/locale/sv_SE.ts delete mode 100644 components/vc-pagination/locale/ta_IN.ts delete mode 100644 components/vc-pagination/locale/th_TH.ts delete mode 100644 components/vc-pagination/locale/tr_TR.ts delete mode 100644 components/vc-pagination/locale/ug_CN.ts delete mode 100644 components/vc-pagination/locale/uk_UA.ts delete mode 100644 components/vc-pagination/locale/ur_PK.ts delete mode 100644 components/vc-pagination/locale/vi_VN.ts delete mode 100644 components/vc-pagination/locale/zh_CN.ts delete mode 100644 components/vc-pagination/locale/zh_TW.ts delete mode 100644 components/vc-picker/PanelContext.tsx delete mode 100644 components/vc-picker/Picker.tsx delete mode 100644 components/vc-picker/PickerPanel.tsx delete mode 100644 components/vc-picker/PickerTrigger.tsx delete mode 100644 components/vc-picker/PresetPanel.tsx delete mode 100644 components/vc-picker/RangeContext.tsx delete mode 100644 components/vc-picker/RangePicker.tsx delete mode 100644 components/vc-picker/generate/dateFns.ts delete mode 100644 components/vc-picker/generate/dayjs.ts delete mode 100644 components/vc-picker/generate/index.ts delete mode 100644 components/vc-picker/generate/moment.ts delete mode 100644 components/vc-picker/hooks/useCellClassName.ts delete mode 100644 components/vc-picker/hooks/useHoverValue.ts delete mode 100644 components/vc-picker/hooks/useMergeProps.ts delete mode 100644 components/vc-picker/hooks/usePickerInput.ts delete mode 100644 components/vc-picker/hooks/usePresets.ts delete mode 100644 components/vc-picker/hooks/useRangeDisabled.ts delete mode 100644 components/vc-picker/hooks/useRangeViewDates.ts delete mode 100644 components/vc-picker/hooks/useTextValueMapping.ts delete mode 100644 components/vc-picker/hooks/useValueTexts.ts delete mode 100644 components/vc-picker/index.tsx delete mode 100644 components/vc-picker/interface.ts delete mode 100644 components/vc-picker/locale/ar_EG.ts delete mode 100644 components/vc-picker/locale/az_AZ.ts delete mode 100644 components/vc-picker/locale/bg_BG.ts delete mode 100644 components/vc-picker/locale/bn_BD.ts delete mode 100644 components/vc-picker/locale/by_BY.ts delete mode 100644 components/vc-picker/locale/ca_ES.ts delete mode 100644 components/vc-picker/locale/cs_CZ.ts delete mode 100644 components/vc-picker/locale/da_DK.ts delete mode 100644 components/vc-picker/locale/de_DE.ts delete mode 100644 components/vc-picker/locale/el_GR.ts delete mode 100644 components/vc-picker/locale/en_GB.ts delete mode 100644 components/vc-picker/locale/en_US.ts delete mode 100644 components/vc-picker/locale/es_ES.ts delete mode 100644 components/vc-picker/locale/es_MX.ts delete mode 100644 components/vc-picker/locale/et_EE.ts delete mode 100644 components/vc-picker/locale/fa_IR.ts delete mode 100644 components/vc-picker/locale/fi_FI.ts delete mode 100644 components/vc-picker/locale/fr_BE.ts delete mode 100644 components/vc-picker/locale/fr_CA.ts delete mode 100644 components/vc-picker/locale/fr_FR.ts delete mode 100644 components/vc-picker/locale/ga_IE.ts delete mode 100644 components/vc-picker/locale/gl_ES.ts delete mode 100644 components/vc-picker/locale/he_IL.ts delete mode 100644 components/vc-picker/locale/hi_IN.ts delete mode 100644 components/vc-picker/locale/hr_HR.ts delete mode 100644 components/vc-picker/locale/hu_HU.ts delete mode 100644 components/vc-picker/locale/id_ID.ts delete mode 100644 components/vc-picker/locale/is_IS.ts delete mode 100644 components/vc-picker/locale/it_IT.ts delete mode 100644 components/vc-picker/locale/ja_JP.ts delete mode 100644 components/vc-picker/locale/ka_GE.ts delete mode 100644 components/vc-picker/locale/kk_KZ.ts delete mode 100644 components/vc-picker/locale/km_KH.ts delete mode 100644 components/vc-picker/locale/kmr_IQ.ts delete mode 100644 components/vc-picker/locale/kn_IN.ts delete mode 100644 components/vc-picker/locale/ko_KR.ts delete mode 100644 components/vc-picker/locale/lt_LT.ts delete mode 100644 components/vc-picker/locale/lv_LV.ts delete mode 100644 components/vc-picker/locale/mk_MK.ts delete mode 100644 components/vc-picker/locale/ml_IN.ts delete mode 100644 components/vc-picker/locale/mm_MM.ts delete mode 100644 components/vc-picker/locale/mn_MN.ts delete mode 100644 components/vc-picker/locale/ms_MY.ts delete mode 100644 components/vc-picker/locale/nb_NO.ts delete mode 100644 components/vc-picker/locale/nl_BE.ts delete mode 100644 components/vc-picker/locale/nl_NL.ts delete mode 100644 components/vc-picker/locale/pl_PL.ts delete mode 100644 components/vc-picker/locale/pt_BR.ts delete mode 100644 components/vc-picker/locale/pt_PT.ts delete mode 100644 components/vc-picker/locale/ro_RO.ts delete mode 100644 components/vc-picker/locale/ru_RU.ts delete mode 100644 components/vc-picker/locale/sk_SK.ts delete mode 100644 components/vc-picker/locale/sl_SI.ts delete mode 100644 components/vc-picker/locale/sr_RS.ts delete mode 100644 components/vc-picker/locale/sv_SE.ts delete mode 100644 components/vc-picker/locale/ta_IN.ts delete mode 100644 components/vc-picker/locale/th_TH.ts delete mode 100644 components/vc-picker/locale/tr_TR.ts delete mode 100644 components/vc-picker/locale/ug_CN.ts delete mode 100644 components/vc-picker/locale/uk_UA.ts delete mode 100644 components/vc-picker/locale/ur_PK.ts delete mode 100644 components/vc-picker/locale/vi_VN.ts delete mode 100644 components/vc-picker/locale/zh_CN.ts delete mode 100644 components/vc-picker/locale/zh_TW.ts delete mode 100644 components/vc-picker/panels/DatePanel/DateBody.tsx delete mode 100644 components/vc-picker/panels/DatePanel/DateHeader.tsx delete mode 100644 components/vc-picker/panels/DatePanel/index.tsx delete mode 100644 components/vc-picker/panels/DatetimePanel/index.tsx delete mode 100644 components/vc-picker/panels/DecadePanel/DecadeBody.tsx delete mode 100644 components/vc-picker/panels/DecadePanel/DecadeHeader.tsx delete mode 100644 components/vc-picker/panels/DecadePanel/index.tsx delete mode 100644 components/vc-picker/panels/Header.tsx delete mode 100644 components/vc-picker/panels/MonthPanel/MonthBody.tsx delete mode 100644 components/vc-picker/panels/MonthPanel/MonthHeader.tsx delete mode 100644 components/vc-picker/panels/MonthPanel/index.tsx delete mode 100644 components/vc-picker/panels/PanelBody.tsx delete mode 100644 components/vc-picker/panels/QuarterPanel/QuarterBody.tsx delete mode 100644 components/vc-picker/panels/QuarterPanel/QuarterHeader.tsx delete mode 100644 components/vc-picker/panels/QuarterPanel/index.tsx delete mode 100644 components/vc-picker/panels/TimePanel/TimeBody.tsx delete mode 100644 components/vc-picker/panels/TimePanel/TimeHeader.tsx delete mode 100644 components/vc-picker/panels/TimePanel/TimeUnitColumn.tsx delete mode 100644 components/vc-picker/panels/TimePanel/index.tsx delete mode 100644 components/vc-picker/panels/WeekPanel/index.tsx delete mode 100644 components/vc-picker/panels/YearPanel/YearBody.tsx delete mode 100644 components/vc-picker/panels/YearPanel/YearHeader.tsx delete mode 100644 components/vc-picker/panels/YearPanel/index.tsx delete mode 100644 components/vc-picker/utils/dateUtil.ts delete mode 100644 components/vc-picker/utils/getExtraFooter.tsx delete mode 100644 components/vc-picker/utils/getRanges.tsx delete mode 100644 components/vc-picker/utils/miscUtil.ts delete mode 100644 components/vc-picker/utils/timeUtil.ts delete mode 100644 components/vc-picker/utils/uiUtil.ts delete mode 100644 components/vc-picker/utils/warnUtil.ts delete mode 100644 components/vc-progress/index.ts delete mode 100644 components/vc-progress/src/Circle.tsx delete mode 100644 components/vc-progress/src/Line.tsx delete mode 100644 components/vc-progress/src/common.ts delete mode 100644 components/vc-progress/src/index.ts delete mode 100644 components/vc-progress/src/types.ts delete mode 100644 components/vc-resize-observer/index.tsx delete mode 100644 components/vc-select/BaseSelect.tsx delete mode 100644 components/vc-select/OptGroup.tsx delete mode 100644 components/vc-select/Option.tsx delete mode 100644 components/vc-select/OptionList.tsx delete mode 100644 components/vc-select/Select.tsx delete mode 100644 components/vc-select/SelectContext.ts delete mode 100644 components/vc-select/SelectTrigger.tsx delete mode 100644 components/vc-select/Selector/Input.tsx delete mode 100644 components/vc-select/Selector/MultipleSelector.tsx delete mode 100644 components/vc-select/Selector/SingleSelector.tsx delete mode 100644 components/vc-select/Selector/index.tsx delete mode 100644 components/vc-select/Selector/interface.ts delete mode 100644 components/vc-select/TransBtn.tsx delete mode 100644 components/vc-select/hooks/useBaseProps.ts delete mode 100644 components/vc-select/hooks/useCache.ts delete mode 100644 components/vc-select/hooks/useDelayReset.ts delete mode 100644 components/vc-select/hooks/useFilterOptions.ts delete mode 100644 components/vc-select/hooks/useId.ts delete mode 100644 components/vc-select/hooks/useLock.ts delete mode 100644 components/vc-select/hooks/useOptions.ts delete mode 100644 components/vc-select/hooks/useSelectTriggerControl.ts delete mode 100644 components/vc-select/index.ts delete mode 100644 components/vc-select/interface.ts delete mode 100644 components/vc-select/utils/commonUtil.ts delete mode 100644 components/vc-select/utils/keyUtil.ts delete mode 100644 components/vc-select/utils/legacyUtil.ts delete mode 100644 components/vc-select/utils/platformUtil.ts delete mode 100644 components/vc-select/utils/valueUtil.ts delete mode 100644 components/vc-select/utils/warningPropsUtil.ts delete mode 100644 components/vc-slick/arrows.jsx delete mode 100644 components/vc-slick/default-props.js delete mode 100644 components/vc-slick/dots.jsx delete mode 100644 components/vc-slick/index.js delete mode 100644 components/vc-slick/initial-state.js delete mode 100644 components/vc-slick/inner-slider.jsx delete mode 100644 components/vc-slick/slider.jsx delete mode 100644 components/vc-slick/track.jsx delete mode 100644 components/vc-slick/utils/innerSliderUtils.js delete mode 100644 components/vc-slider/index.ts delete mode 100644 components/vc-slider/src/Handle.tsx delete mode 100644 components/vc-slider/src/Range.tsx delete mode 100644 components/vc-slider/src/Slider.tsx delete mode 100644 components/vc-slider/src/common/Marks.tsx delete mode 100644 components/vc-slider/src/common/Steps.tsx delete mode 100644 components/vc-slider/src/common/Track.tsx delete mode 100644 components/vc-slider/src/common/createSlider.tsx delete mode 100644 components/vc-slider/src/index.ts delete mode 100644 components/vc-slider/src/utils.ts delete mode 100644 components/vc-steps/Step.tsx delete mode 100644 components/vc-steps/Steps.tsx delete mode 100644 components/vc-steps/index.ts delete mode 100644 components/vc-steps/interface.ts delete mode 100644 components/vc-table/Body/BodyRow.tsx delete mode 100644 components/vc-table/Body/ExpandedRow.tsx delete mode 100644 components/vc-table/Body/MeasureCell.tsx delete mode 100644 components/vc-table/Body/index.tsx delete mode 100644 components/vc-table/Cell/index.tsx delete mode 100644 components/vc-table/ColGroup.tsx delete mode 100644 components/vc-table/FixedHolder/index.tsx delete mode 100644 components/vc-table/Footer/Cell.tsx delete mode 100644 components/vc-table/Footer/Row.tsx delete mode 100644 components/vc-table/Footer/Summary.tsx delete mode 100644 components/vc-table/Footer/index.tsx delete mode 100644 components/vc-table/Header/DragHandle.tsx delete mode 100644 components/vc-table/Header/Header.tsx delete mode 100644 components/vc-table/Header/HeaderRow.tsx delete mode 100644 components/vc-table/Panel/index.tsx delete mode 100644 components/vc-table/Table.tsx delete mode 100644 components/vc-table/constant.ts delete mode 100644 components/vc-table/context/BodyContext.tsx delete mode 100644 components/vc-table/context/ExpandedRowContext.tsx delete mode 100644 components/vc-table/context/HoverContext.tsx delete mode 100644 components/vc-table/context/ResizeContext.tsx delete mode 100644 components/vc-table/context/StickyContext.tsx delete mode 100644 components/vc-table/context/SummaryContext.tsx delete mode 100644 components/vc-table/context/TableContext.tsx delete mode 100644 components/vc-table/hooks/useColumns.tsx delete mode 100644 components/vc-table/hooks/useFlattenRecords.ts delete mode 100644 components/vc-table/hooks/useFrame.ts delete mode 100644 components/vc-table/hooks/useSticky.ts delete mode 100644 components/vc-table/hooks/useStickyOffsets.ts delete mode 100644 components/vc-table/index.ts delete mode 100644 components/vc-table/interface.ts delete mode 100644 components/vc-table/stickyScrollBar.tsx delete mode 100644 components/vc-table/sugar/Column.tsx delete mode 100644 components/vc-table/sugar/ColumnGroup.tsx delete mode 100644 components/vc-table/utils/expandUtil.tsx delete mode 100644 components/vc-table/utils/fixUtil.ts delete mode 100644 components/vc-table/utils/legacyUtil.ts delete mode 100644 components/vc-table/utils/valueUtil.tsx delete mode 100644 components/vc-tooltip/index.ts delete mode 100644 components/vc-tooltip/src/Content.tsx delete mode 100644 components/vc-tooltip/src/Tooltip.tsx delete mode 100644 components/vc-tooltip/src/placements.ts delete mode 100644 components/vc-tour/Mask.tsx delete mode 100644 components/vc-tour/Tour.tsx delete mode 100644 components/vc-tour/TourStep/DefaultPanel.tsx delete mode 100644 components/vc-tour/TourStep/index.tsx delete mode 100644 components/vc-tour/hooks/useTarget.ts delete mode 100644 components/vc-tour/index.ts delete mode 100644 components/vc-tour/interface.ts delete mode 100644 components/vc-tour/placements.tsx delete mode 100644 components/vc-tour/util.ts delete mode 100644 components/vc-tree-select/LegacyContext.tsx delete mode 100644 components/vc-tree-select/OptionList.tsx delete mode 100644 components/vc-tree-select/TreeNode.tsx delete mode 100644 components/vc-tree-select/TreeSelect.tsx delete mode 100644 components/vc-tree-select/TreeSelectContext.ts delete mode 100644 components/vc-tree-select/hooks/useCache.ts delete mode 100644 components/vc-tree-select/hooks/useCheckedKeys.ts delete mode 100644 components/vc-tree-select/hooks/useDataEntities.ts delete mode 100644 components/vc-tree-select/hooks/useFilterTreeData.ts delete mode 100644 components/vc-tree-select/hooks/useTreeData.ts delete mode 100644 components/vc-tree-select/index.tsx delete mode 100644 components/vc-tree-select/interface.ts delete mode 100644 components/vc-tree-select/utils/legacyUtil.tsx delete mode 100644 components/vc-tree-select/utils/strategyUtil.ts delete mode 100644 components/vc-tree-select/utils/valueUtil.ts delete mode 100644 components/vc-tree-select/utils/warningPropsUtil.ts delete mode 100644 components/vc-tree/DropIndicator.tsx delete mode 100644 components/vc-tree/Indent.tsx delete mode 100644 components/vc-tree/MotionTreeNode.tsx delete mode 100644 components/vc-tree/NodeList.tsx delete mode 100644 components/vc-tree/Tree.tsx delete mode 100644 components/vc-tree/TreeNode.tsx delete mode 100644 components/vc-tree/contextTypes.ts delete mode 100644 components/vc-tree/index.ts delete mode 100644 components/vc-tree/interface.tsx delete mode 100644 components/vc-tree/props.ts delete mode 100644 components/vc-tree/useMaxLevel.ts delete mode 100644 components/vc-tree/util.tsx delete mode 100644 components/vc-tree/utils/conductUtil.ts delete mode 100644 components/vc-tree/utils/diffUtil.ts delete mode 100644 components/vc-tree/utils/treeUtil.ts delete mode 100644 components/vc-trigger/Popup/Mask.tsx delete mode 100644 components/vc-trigger/Popup/MobilePopupInner.tsx delete mode 100644 components/vc-trigger/Popup/PopupInner.tsx delete mode 100644 components/vc-trigger/Popup/index.tsx delete mode 100644 components/vc-trigger/Popup/interface.ts delete mode 100644 components/vc-trigger/Popup/useStretchStyle.ts delete mode 100644 components/vc-trigger/Popup/useVisibleStatus.ts delete mode 100644 components/vc-trigger/Trigger.tsx delete mode 100644 components/vc-trigger/context.ts delete mode 100644 components/vc-trigger/index.ts delete mode 100644 components/vc-trigger/interface.ts delete mode 100644 components/vc-trigger/utils/alignUtil.ts delete mode 100644 components/vc-trigger/utils/motionUtil.ts delete mode 100644 components/vc-upload/AjaxUploader.tsx delete mode 100644 components/vc-upload/Upload.tsx delete mode 100644 components/vc-upload/attr-accept.ts delete mode 100644 components/vc-upload/index.ts delete mode 100644 components/vc-upload/interface.tsx delete mode 100644 components/vc-upload/request.ts delete mode 100644 components/vc-upload/traverseFileTree.ts delete mode 100644 components/vc-upload/uid.ts delete mode 100644 components/vc-util/Children/toArray.ts delete mode 100644 components/vc-util/Dom/addEventListener.js delete mode 100644 components/vc-util/Dom/class.js delete mode 100644 components/vc-util/Dom/contains.ts delete mode 100644 components/vc-util/Dom/css.ts delete mode 100644 components/vc-util/Dom/dynamicCSS.ts delete mode 100644 components/vc-util/Dom/isVisible.ts delete mode 100644 components/vc-util/Dom/scrollLocker.ts delete mode 100644 components/vc-util/devWarning.ts delete mode 100644 components/vc-util/get.ts delete mode 100644 components/vc-util/isEqual.ts delete mode 100644 components/vc-util/isMobile.ts delete mode 100644 components/vc-util/set.ts delete mode 100644 components/vc-util/warning.ts delete mode 100644 components/vc-virtual-list/Filler.tsx delete mode 100644 components/vc-virtual-list/Item.tsx delete mode 100644 components/vc-virtual-list/List.tsx delete mode 100644 components/vc-virtual-list/ScrollBar.tsx delete mode 100644 components/vc-virtual-list/hooks/useFrameWheel.ts delete mode 100644 components/vc-virtual-list/hooks/useHeights.tsx delete mode 100644 components/vc-virtual-list/hooks/useMobileTouchMove.ts delete mode 100644 components/vc-virtual-list/hooks/useOriginScroll.ts delete mode 100644 components/vc-virtual-list/hooks/useScrollTo.tsx delete mode 100644 components/vc-virtual-list/index.ts delete mode 100644 components/vc-virtual-list/interface.ts delete mode 100644 components/vc-virtual-list/utils/algorithmUtil.js delete mode 100644 components/vc-virtual-list/utils/isFirefox.ts delete mode 100644 components/vc-virtual-list/utils/itemUtil.js delete mode 100644 components/version/index.ts delete mode 100644 components/version/token-meta.json delete mode 100644 components/version/token.json delete mode 100644 components/version/version.ts delete mode 100644 components/watermark/__tests__/__snapshots__/demo.test.js.snap delete mode 100644 components/watermark/__tests__/__snapshots__/index.test.js.snap delete mode 100644 components/watermark/__tests__/demo.test.js delete mode 100644 components/watermark/__tests__/index.test.js delete mode 100644 components/watermark/demo/basic.vue delete mode 100644 components/watermark/demo/custom.vue delete mode 100644 components/watermark/demo/image.vue delete mode 100644 components/watermark/demo/index.vue delete mode 100644 components/watermark/demo/multi-line.vue delete mode 100644 components/watermark/index.en-US.md delete mode 100644 components/watermark/index.tsx delete mode 100644 components/watermark/index.zh-CN.md delete mode 100644 components/watermark/utils.ts delete mode 100644 index-style-only.js delete mode 100644 index-with-locales.js delete mode 100644 index.esm.js delete mode 100644 index.js create mode 100644 packages/ui/src/shims.vue.d.ts delete mode 100644 plugin/docs/index.ts delete mode 100644 plugin/docs/vueToMarkdown.ts delete mode 100644 plugin/md/index.ts delete mode 100644 plugin/md/markdown/markdown.ts delete mode 100644 plugin/md/markdown/plugins/component.ts delete mode 100644 plugin/md/markdown/plugins/containers.ts delete mode 100644 plugin/md/markdown/plugins/header.ts delete mode 100644 plugin/md/markdown/plugins/highlight.ts delete mode 100644 plugin/md/markdown/plugins/highlightLines.ts delete mode 100644 plugin/md/markdown/plugins/hoist.ts delete mode 100644 plugin/md/markdown/plugins/lineNumbers.ts delete mode 100644 plugin/md/markdown/plugins/link.ts delete mode 100644 plugin/md/markdown/plugins/preWrapper.ts delete mode 100644 plugin/md/markdown/plugins/slugify.ts delete mode 100644 plugin/md/markdown/plugins/snippet.ts delete mode 100644 plugin/md/markdownToVue.ts delete mode 100644 plugin/md/utils/fetchCode.ts delete mode 100644 plugin/md/utils/parseHeader.ts delete mode 100644 plugin/md/utils/query.ts delete mode 100644 plugin/md/utils/tsToJs.ts delete mode 100644 plugin/shared.ts create mode 100644 pnpm-workspace.yaml delete mode 100644 renovate.json delete mode 100644 scripts/.npmrc.template delete mode 100644 scripts/collect-token-statistic.js delete mode 100644 scripts/commitizen.js delete mode 100644 scripts/compact-vars.js delete mode 100644 scripts/css-variable-sync.js delete mode 100644 scripts/deploy-to-gh-pages.sh delete mode 100644 scripts/generate-version.js delete mode 100644 scripts/gulpfile.js delete mode 100644 scripts/prepub.js delete mode 100644 scripts/prettier.js delete mode 100644 scripts/run.js delete mode 100644 typings/global.d.ts diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index 81be93137..000000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1,5 +0,0 @@ -# These are supported funding model platforms - -github: # [tangjinzhou] -open_collective: ant-design-vue -patreon: tangjinzhou diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index 00c687e3b..000000000 --- a/.github/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -1,17 +0,0 @@ -blank_issues_enabled: true -contact_links: - - name: Create new issue - url: https://vuecomponent.github.io/issue-helper/ - about: Please use the following link to create a new issue. - - name: Patreon - url: https://www.patreon.com/tangjinzhou - about: Love Ant Design Vue? Please consider supporting us via Patreon. - - name: Open Collective - url: https://opencollective.com/ant-design-vue/donate - about: Love Ant Design Vue? Please consider supporting us via Open Collective. - - name: Paypal - url: https://www.paypal.me/tangjinzhou - about: Love Ant Design Vue? Please consider supporting us via Paypal. - - name: 支付宝/微信 赞助 - url: https://aliyuncdn.antdv.com/alipay-and-wechat.png - about: Ant Design Vue 的健康持续发展需要您的支持,🙏 diff --git a/.github/PULL_REQUEST_TEMPLATE/pr_cn.md b/.github/PULL_REQUEST_TEMPLATE/pr_cn.md deleted file mode 100644 index d3b86ada6..000000000 --- a/.github/PULL_REQUEST_TEMPLATE/pr_cn.md +++ /dev/null @@ -1,50 +0,0 @@ -首先,感谢你的贡献! 😄 - -新特性请提交至 feature 分支,其余可提交至 main 分支。在一个维护者审核通过后合并。请确保填写以下 pull request 的信息,谢谢!~ - -[[English Template / 英文模板](./pr_en.md)] - -### 这个变动的性质是 - -- [ ] 新特性提交 -- [ ] 日常 bug 修复 -- [ ] 站点、文档改进 -- [ ] 组件样式改进 -- [ ] TypeScript 定义更新 -- [ ] 重构 -- [ ] 代码风格优化 -- [ ] 分支合并 -- [ ] 其他改动(是关于什么的改动?) - -### 需求背景 - -> 1. 描述相关需求的来源。 -> 2. 要解决的问题。 -> 3. 相关的 issue 讨论链接。 - -### 实现方案和 API(非新功能可选) - -> 1. 基本的解决思路和其他可选方案。 -> 2. 列出最终的 API 实现和用法。 -> 3. 涉及 UI/交互变动需要有截图或 GIF。 - -### 对用户的影响和可能的风险(非新功能可选) - -> 1. 这个改动对用户端是否有影响?影响的方面有哪些? -> 2. 是否有可能隐含的 break change 和其他风险? - -### Changelog 描述(非新功能可选) - -> 1. 英文描述 -> 2. 中文描述(可选) - -### 请求合并前的自查清单 - -- [ ] 文档已补充或无须补充 -- [ ] 代码演示已提供或无须提供 -- [ ] TypeScript 定义已补充或无须补充 -- [ ] Changelog 已提供或无须提供 - -### 后续计划(非新功能可选) - -> 如果这个提交后面还有相关的其他提交和跟进信息,可以写在这里。 diff --git a/.github/PULL_REQUEST_TEMPLATE/pr_en.md b/.github/PULL_REQUEST_TEMPLATE/pr_en.md deleted file mode 100644 index 06560cafe..000000000 --- a/.github/PULL_REQUEST_TEMPLATE/pr_en.md +++ /dev/null @@ -1,51 +0,0 @@ -First of all, thank you for your contribution! 😄 - -New feature please send pull request to feature branch, and rest to main branch. Pull request will be merged after one of collaborators approve. Please makes sure that these form are filled before submitting your pull request, thank you! - -[[中文版模板 / Chinese template](./pr_cn.md)] - -### This is a ... - -- [ ] New feature -- [ ] Bug fix -- [ ] Site / document update -- [ ] Component style update -- [ ] TypeScript definition update -- [ ] Refactoring -- [ ] Code style optimization -- [ ] Branch merge -- [ ] Other (about what?) - -### What's the background? - -> 1. Describe the source of requirement. -> 2. Resolve what problem. -> 3. Related issue link. - -### API Realization (Optional if not new feature) - -> 1. Basic thought of solution and other optional proposal. -> 2. List final API realization and usage sample. -> 3. GIF or snapshot should be provided if includes UI/interactive modification. - -### What's the effect? (Optional if not new feature) - -> 1. Does this PR affect user? Which part will be affected? -> 2. What will say in changelog? -> 3. Does this PR contains potential break change or other risk? - -### Changelog description (Optional if not new feature) - -> 1. English description -> 2. Chinese description (optional) - -### Self Check before Merge - -- [ ] Doc is updated/provided or not needed -- [ ] Demo is updated/provided or not needed -- [ ] TypeScript definition is updated/provided or not needed -- [ ] Changelog is provided or not needed - -### Additional Plan? (Optional if not new feature) - -> If this PR related with other PR or following info. You can type here. diff --git a/.github/issue-close-app.yml b/.github/issue-close-app.yml deleted file mode 100644 index a0e728635..000000000 --- a/.github/issue-close-app.yml +++ /dev/null @@ -1,14 +0,0 @@ -comment: "Your issue has been closed because it does not conform to our issue requirements. Please use the [Issue Helper](https://vuecomponent.github.io/issue-helper/) to create an issue, thank you!

为了能够进行高效沟通,我们对 issue 有一定的格式要求,你的 issue 因为不符合要求而被自动关闭。你可以通过 [issue 助手](https://vuecomponent.github.io/issue-helper/) 来创建 issue 以方便我们定位错误。谢谢配合!" -issueConfigs: -- content: - - "" -- content: - - "Version" - - "Environment" - - "Reproduction link" - - "Steps to reproduce" - - "What is expected" - - "What is actually happening" -- content: - - "What problem does this feature solve" - - "What does the proposed API look like" diff --git a/.github/workflows/codecov.yml b/.github/workflows/codecov.yml deleted file mode 100644 index 5938a11d3..000000000 --- a/.github/workflows/codecov.yml +++ /dev/null @@ -1,76 +0,0 @@ -name: codecov - -on: [push] - -jobs: - setup: - runs-on: ubuntu-latest - steps: - - name: checkout - uses: actions/checkout@v2 - - - name: cache package-lock.json - uses: actions/cache@v1 - with: - path: package-temp-dir - key: lock-${{ github.sha }} - - - name: create package-lock.json - run: npm i --package-lock-only --ignore-scripts - - - name: hack for singe file - run: | - if [ ! -d "package-temp-dir" ]; then - mkdir package-temp-dir - fi - cp package-lock.json package-temp-dir - - - name: cache node_modules - id: node_modules_cache_id - uses: actions/cache@v1 - with: - path: node_modules - key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }} - - - name: install - if: steps.node_modules_cache_id.outputs.cache-hit != 'true' - run: npm ci - - node: - runs-on: ubuntu-latest - steps: - - name: checkout - uses: actions/checkout@v2 - # with: - # token: ${{ secrets.ACCESS_TOKEN }} - # - name: Checkout submodules - # uses: actions/checkout@v2 - # with: - # repository: tangjinzhou/antdv-demo - # token: ${{ secrets.ACCESS_TOKEN }} - # path: antdv-demo - # submodules: true - - - name: restore cache from package-lock.json - uses: actions/cache@v1 - with: - path: package-temp-dir - key: lock-${{ github.sha }} - - - name: restore cache from node_modules - uses: actions/cache@v1 - with: - path: node_modules - key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }} - - - name: Generate coverage report - run: npm test - env: - COVERAGE: "true" - - - name: Upload coverage to Codecov - uses: codecov/codecov-action@v1 - with: - token: ${{ secrets.CODECOV_TOKEN }} - - needs: setup diff --git a/.github/workflows/emoji-helper.yml b/.github/workflows/emoji-helper.yml deleted file mode 100644 index 8965a1a29..000000000 --- a/.github/workflows/emoji-helper.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: Emoji Helper - -on: - release: - types: [published] - -jobs: - emoji: - runs-on: ubuntu-latest - steps: - - uses: actions-cool/emoji-helper@v1.0.0 - with: - type: 'release' - emoji: '+1, laugh, heart, hooray, rocket, eyes' diff --git a/.github/workflows/issue-close-require.yml b/.github/workflows/issue-close-require.yml deleted file mode 100644 index 5149c3824..000000000 --- a/.github/workflows/issue-close-require.yml +++ /dev/null @@ -1,23 +0,0 @@ -name: Issue Close Require - -on: - schedule: - - cron: "0 0 * * *" - -permissions: - contents: read - -jobs: - close-issues: - runs-on: ubuntu-latest - steps: - - name: need reproduce - uses: actions-cool/issues-helper@v3 - with: - actions: 'close-issues' - labels: '🤔 Need Reproduce' - inactive-day: 7 - body: | - Since the issue was labeled with `Need Reproduce`, but no response in 7 days. This issue will be closed. If you have any questions, you can comment and reply. - - 由于该 issue 被标记为需要复现信息,却 7 天未收到回应。现关闭 issue,若有任何问题,可评论回复。 diff --git a/.github/workflows/issue-labeled.yml b/.github/workflows/issue-labeled.yml deleted file mode 100644 index ad5aac395..000000000 --- a/.github/workflows/issue-labeled.yml +++ /dev/null @@ -1,76 +0,0 @@ -name: Issue Labeled - -on: - issues: - types: [labeled] - -permissions: - contents: read - -jobs: - issue-labeled: - permissions: - issues: write # for actions-cool/issues-helper to update issues - pull-requests: write # for actions-cool/issues-helper to update PRs - runs-on: ubuntu-latest - steps: - - name: Need Reproduce - if: github.event.label.name == '🤔 Need Reproduce' - uses: actions-cool/issues-helper@v3 - with: - actions: 'create-comment' - token: ${{ secrets.GITHUB_TOKEN }} - issue-number: ${{ github.event.issue.number }} - body: | - Hello @${{ github.event.issue.user.login }}. Please provide a online reproduction by forking this [link for vue2](https://codesandbox.io/s/2wpk21kzvr)、 [link for vue3](https://codesandbox.io/s/agitated-franklin-1w72v) or a minimal GitHub repository. Make sure to choose the correct version. - - 你好 @${{ github.event.issue.user.login }}, 我们需要你提供一个在线的重现实例以便于我们帮你排查问题。你可以通过点击 [此处 for vue2](https://codesandbox.io/s/2wpk21kzvr)、 [此处 for vue3](https://codesandbox.io/s/agitated-franklin-1w72v) 创建一个 codesandbox 或者提供一个最小化的 GitHub 仓库。请确保选择准确的版本。 - - - name: help wanted - if: github.event.label.name == 'help wanted' - uses: actions-cool/issues-helper@v3 - with: - actions: 'create-comment' - token: ${{ secrets.GITHUB_TOKEN }} - issue-number: ${{ github.event.issue.number }} - body: | - Hello @${{ github.event.issue.user.login }}. We totally like your proposal/feedback, welcome to send us a Pull Request for it. Please send your Pull Request to proper branch, fill the Pull Request Template here, provide changelog/TypeScript/documentation/test cases if needed and make sure CI passed, we will review it soon. We appreciate your effort in advance and looking forward to your contribution! - - 你好 @${{ github.event.issue.user.login }},我们完全同意你的提议/反馈,欢迎直接在此仓库创建一个 Pull Request 来解决这个问题。请将 Pull Request 发到正确的分支,务必填写 Pull Request 内的预设模板,提供改动所需相应的 changelog、TypeScript 定义、测试用例、文档等,并确保 CI 通过,我们会尽快进行 Review,提前感谢和期待您的贡献。 - - - name: Usage - if: github.event.label.name == 'Usage' - uses: actions-cool/issues-helper@v3 - with: - actions: 'create-comment, close-issue' - token: ${{ secrets.GITHUB_TOKEN }} - issue-number: ${{ github.event.issue.number }} - body: | - Hello @${{ github.event.issue.user.login }}, we use GitHub issues to trace bugs or discuss plans of Ant Design Vue. So, please don't ask usage questions here. You can try to open a new discussion in [antdv discussions](https://github.com/vueComponent/ant-design-vue/discussions), select `Q&A` to ask questions, also can ask questions on [Stack Overflow](http://stackoverflow.com/questions/) or [Segment Fault](https://segmentfault.com). - - 你好 @${{ github.event.issue.user.login }},Ant Design Vue Issue 板块是用于 bug 反馈与需求讨论的地方。请勿询问如何使用的问题,你可以试着在 [antdv discussions](https://github.com/vueComponent/ant-design-vue/discussions) 新开一个 discussion,选择 `Q&A` 类别进行提问,也可以在 [Stack Overflow](http://stackoverflow.com/questions/) 或者 [Segment Fault](https://segmentfault.com/) 中提问。 - - - name: 1.x - if: github.event.label.name == '1.x' - uses: actions-cool/issues-helper@v3 - with: - actions: 'create-comment,close-issue' - token: ${{ secrets.GITHUB_TOKEN }} - issue-number: ${{ github.event.issue.number }} - body: | - Hi @${{ github.event.issue.user.login }}. Current version (1.x) is off the maintenance period. We may not accept pull request or fix bug with it anymore. This topic will be auto closed. - - 你好 @${{ github.event.issue.user.login }},当前版本(1.x)已经过了维护期。我们不会再接受对其的相关 PR 与 issue。当前 topic 会被自动关闭。 - - - name: 2.x - if: github.event.label.name == '2.x' - uses: actions-cool/issues-helper@v3 - with: - actions: 'create-comment,close-issue' - token: ${{ secrets.GITHUB_TOKEN }} - issue-number: ${{ github.event.issue.number }} - body: | - Hi @${{ github.event.issue.user.login }}. Current version (2.x) is off the maintenance period. We may not accept pull request or fix bug with it anymore. This topic will be auto closed. - - 你好 @${{ github.event.issue.user.login }},当前版本(2.x)已经过了维护期。我们不会再接受对其的相关 PR 与 issue。当前 topic 会被自动关闭。 - diff --git a/.github/workflows/issue-open-check.yml b/.github/workflows/issue-open-check.yml deleted file mode 100644 index 5857f0bd1..000000000 --- a/.github/workflows/issue-open-check.yml +++ /dev/null @@ -1,34 +0,0 @@ -name: Issue Open Check - -on: - issues: - types: [opened] - - -permissions: - contents: read - -jobs: - issue-open-check: - permissions: - contents: read # for visiky/dingtalk-release-notify to get latest release - issues: write # for actions-cool/issues-helper to update issues - pull-requests: write # for actions-cool/issues-helper to update PRs - runs-on: ubuntu-latest - steps: - - uses: actions-cool/check-user-permission@v1.0.0 - id: checkUser - with: - require: 'write' - - - name: check invalid - if: (contains(github.event.issue.body, 'issue-helper') == false) && (steps.checkUser.outputs.result == 'false') - uses: actions-cool/issues-helper@v3 - with: - actions: 'create-comment,add-labels,close-issue' - issue-number: ${{ github.event.issue.number }} - labels: 'Invalid' - body: | - Hello @${{ github.event.issue.user.login }}, your issue has been closed because it does not conform to our issue requirements. Please use the [Issue Helper](https://vuecomponent.github.io/issue-helper/) to create an issue, thank you! - - 你好 @${{ github.event.issue.user.login }},为了能够进行高效沟通,我们对 issue 有一定的格式要求,你的 issue 因为不符合要求而被自动关闭。你可以通过 [issue 助手](https://vuecomponent.github.io/issue-helper/) 来创建 issue 以方便我们定位错误。谢谢配合! diff --git a/.github/workflows/lock-issue.yml b/.github/workflows/lock-issue.yml deleted file mode 100644 index dfac96647..000000000 --- a/.github/workflows/lock-issue.yml +++ /dev/null @@ -1,23 +0,0 @@ -name: 'Lock threads' - -on: - schedule: - - cron: '0 0 * * *' - -jobs: - lock: - runs-on: ubuntu-latest - steps: - - uses: dessant/lock-threads@v2 - with: - github-token: ${{ github.token }} - issue-lock-inactive-days: '365' - issue-lock-labels: 'outdated' - issue-lock-comment: > - This issue has been automatically locked since there - has not been any recent activity after it was closed. - Please open a new issue for related bugs. - pr-lock-comment: > - This pull request has been automatically locked since there - has not been any recent activity after it was closed. - Please open a new issue for related bugs. \ No newline at end of file diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml deleted file mode 100644 index 884d3dced..000000000 --- a/.github/workflows/stale.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: "Close stale issues" - -on: - schedule: - - cron: "30 1 * * *" - -jobs: - stale: - runs-on: ubuntu-latest - steps: - - uses: actions/stale@v3 - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - stale-issue-message: 'This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 7 days' - stale-pr-message: 'This PR is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 7 days' - exempt-issue-labels: 'bug,enhancement' - days-before-stale: 60 - days-before-close: 7 - diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index a37ba8fe0..000000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,115 +0,0 @@ -name: test - -on: [push, pull_request] - -jobs: - setup: - runs-on: ubuntu-latest - steps: - - name: checkout - uses: actions/checkout@v2 - - - name: cache package-lock.json - uses: actions/cache@v2 - with: - path: package-temp-dir - key: lock-${{ github.sha }} - - - name: create package-lock.json - run: npm i --package-lock-only --ignore-scripts - - - name: hack for singe file - run: | - if [ ! -d "package-temp-dir" ]; then - mkdir package-temp-dir - fi - cp package-lock.json package-temp-dir - - - name: cache node_modules - id: node_modules_cache_id - uses: actions/cache@v2 - with: - path: node_modules - key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }} - - - name: install - if: steps.node_modules_cache_id.outputs.cache-hit != 'true' - run: npm ci - - compile: - runs-on: ubuntu-latest - steps: - - name: checkout - uses: actions/checkout@v2 - - - name: restore cache from package-lock.json - uses: actions/cache@v2 - with: - path: package-temp-dir - key: lock-${{ github.sha }} - - - name: restore cache from node_modules - uses: actions/cache@v2 - with: - path: node_modules - key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }} - - - name: cache lib - uses: actions/cache@v2 - with: - path: lib - key: lib-${{ github.sha }} - - - name: cache es - uses: actions/cache@v2 - with: - path: es - key: es-${{ github.sha }} - - - name: compile - run: npm run compile - needs: setup - - lint: - runs-on: ubuntu-latest - steps: - - name: checkout - uses: actions/checkout@v2 - - - name: restore cache from package-lock.json - uses: actions/cache@v2 - with: - path: package-temp-dir - key: lock-${{ github.sha }} - - - name: restore cache from node_modules - uses: actions/cache@v2 - with: - path: node_modules - key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }} - - - name: lint - run: npm run lint - needs: setup - - node: - runs-on: ubuntu-latest - steps: - - name: checkout - uses: actions/checkout@v2 - - - name: restore cache from package-lock.json - uses: actions/cache@v2 - with: - path: package-temp-dir - key: lock-${{ github.sha }} - - - name: restore cache from node_modules - uses: actions/cache@v2 - with: - path: node_modules - key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }} - - - name: test - run: npm test - needs: setup diff --git a/.husky/.gitignore b/.husky/.gitignore deleted file mode 100644 index 31354ec13..000000000 --- a/.husky/.gitignore +++ /dev/null @@ -1 +0,0 @@ -_ diff --git a/BACKERS.md b/BACKERS.md deleted file mode 100644 index af4850a5e..000000000 --- a/BACKERS.md +++ /dev/null @@ -1,55 +0,0 @@ -

Sponsors & Backers

- -

- -

企业赞助

-

- -

- -

Sponsors

-

- - - - - - - - - - - -

- -

Backers

-

- - - - - - - - - - - - - -

- -

Patreon

- -

- -

- -

支付宝/微信

- -### 使用支付宝/微信的赞助的用户,如需要添加名单,赞助后可发 github 账号到邮箱(antdv@foxmail.com) - -- [fastgoo](https://github.com/fastgoo) -- [sendya](https://github.com/sendya) -- [limichange](https://github.com/limichange) -- [LvHang](https://github.com/184005306) diff --git a/CHANGELOG.en-US.md b/CHANGELOG.en-US.md deleted file mode 100644 index 84d4ffa90..000000000 --- a/CHANGELOG.en-US.md +++ /dev/null @@ -1,239 +0,0 @@ -# Change Log (The following content is translated by Google) - -`ant-design-vue` strictly follows [Semantic Versioning 2.0.0](http://semver.org/). - -#### Release Schedule - -- Weekly release: patch version at the end of every week for routine bugfix (anytime for urgent bugfix). -- Monthly release: minor version at the end of every month for new features. -- Major version release is not included in this schedule for breaking change and new features. - ---- - -## 4.2.6 - -- 🐞 Fix Modal component aria-hidden error problem under chrome [#7823](https://github.com/vueComponent/ant-design-vue/issues/7823) -- 🐞 Fix the problem that the built-in input method of Safari automatically fills in the decimal point when inputting Chinese [#7918](https://github.com/vueComponent/ant-design-vue/issues/7918) -- 🐞 Fix InputNumber component disabled style problem [#7776](https://github.com/vueComponent/ant-design-vue/issues/7776) -- 🐞 Fix Select cannot lose focus problem [#7819](https://github.com/vueComponent/ant-design-vue/issues/7819) - -## 4.2.5 - -- 🐞 Fix Empty component memory leak problem -- 🐞 Fix Image width & height property not working problem - -## 4.2.4 - -- 🐞 Fix Wave memory leak problem - -## 4.2.3 - -- 🌟 TourStep custom Button, support function children [#7628](https://github.com/vueComponent/ant-design-vue/pull/7628) -- 🐞 Fix the problem that the input value is hidden in Select and Cascader search multi-select mode [#7640](https://github.com/vueComponent/ant-design-vue/issues/7640) - -## 4.2.2 - -- 🐞 Fix TreeSelect placeholder slot invalid [#7545](https://github.com/vueComponent/ant-design-vue/issues/7545) -- 🐞 Fix Tree slot responsive invalid issue [40ad45](https://github.com/vueComponent/ant-design-vue/commit/40ad45bc05b2bf9d0a2445d9f6ff365468ba90b7) -- 🐞 Fix FloatButton target type error issue [#7576](https://github.com/vueComponent/ant-design-vue/issues/7576) -- 🐞 Fix FormItem className error issue [#7582](https://github.com/vueComponent/ant-design-vue/issues/7582) -- 🐞 Fix Input Cannot input problem under lazy [#7543](https://github.com/vueComponent/ant-design-vue/issues/7543) -- 🐞 Fix the problem that placeholder is not hidden when inputting Chinese in Select [#7611](https://github.com/vueComponent/ant-design-vue/issues/7611) -- 🐞 Fix the problem that the pop-up window flashes when clicking the preset option in DatePicker [#7550](https://github.com/vueComponent/ant-design-vue/issues/7550) - -## 4.2.1 - -- 🐞 fix Input clear action error [#7523](https://github.com/vueComponent/ant-design-vue/issues/7523) - -## 4.2.0 - -- 🌟 Optimize the textColor change when the layout component switches to dark mode [#7498](https://github.com/vueComponent/ant-design-vue/issues/7498) -- 🌟 Tooltip added arrow hidden configuration [#7459](https://github.com/vueComponent/ant-design-vue/issues/7459) -- 🌟 Optimize Table hover performance [#7451](https://github.com/vueComponent/ant-design-vue/issues/7451) -- 🐞 Fixed the problem of changing the model during useForm verification, resulting in verification errors [#ffd4d8](https://github.com/vueComponent/ant-design-vue/commit/ffd4d8fe927f9ea40cbb6358ad997c447bd9a74e) -- 🐞 Fix Tabs folding calculation error issue [#7491](https://github.com/vueComponent/ant-design-vue/issues/7491) -- 🐞 Fix Qrcode missing type hint issue [#7502](https://github.com/vueComponent/ant-design-vue/issues/7502) -- 🐞 Fix Menu rendering error under SSR [#7349](https://github.com/vueComponent/ant-design-vue/issues/7349) -- 🐞 Fix Select and Cascader rendering errors under SSR [#7377](https://github.com/vueComponent/ant-design-vue/issues/7377) -- 🐞 Fix AutoComplete missing option slot declaration issue [#7396](https://github.com/vueComponent/ant-design-vue/issues/7396) -- 🐞 Fix Textarea autoSize not taking effect [#7478](https://github.com/vueComponent/ant-design-vue/issues/7478) -- 🐞 Fix Pagination’s Enter key triggering two page turns [#7368](https://github.com/vueComponent/ant-design-vue/issues/7368) -- 🐞 Fix the problem of Chinese input in the input box [#7391](https://github.com/vueComponent/ant-design-vue/issues/7391)[#7516](https://github.com/vueComponent/ant- design-vue/issues/7516) -- 🐞 Fix Carousel beforeChange current parameter error issue [#7419](https://github.com/vueComponent/ant-design-vue/issues/7419) - -## 4.1.2 - -- 🐞 Fix table resize error reporting under vue 3.4 [#7291](https://github.com/vueComponent/ant-design-vue/issues/7291) -- 🐞 Fix the problem that the Segmented title attribute is not displayed [#7302](https://github.com/vueComponent/ant-design-vue/issues/7302) - -## 4.1.1 - -- 🌟 QRcode adds scanned status [#7242](https://github.com/vueComponent/ant-design-vue/issues/7242) -- 🐞 Fix css prefix issue in nuxt [#7256](https://github.com/vueComponent/ant-design-vue/issues/7256) -- 🐞 Fix dropdown closing issue [#7246](https://github.com/vueComponent/ant-design-vue/issues/7246) -- 🐞 Fix divider vertical dashed not display issue [#7218](https://github.com/vueComponent/ant-design-vue/issues/7218) -- 🐞 Fix hook mode message console warning issue [#7281](https://github.com/vueComponent/ant-design-vue/issues/7281) -- 🐞 Fix table expansion error reporting under vue 3.4 [#7265](https://github.com/vueComponent/ant-design-vue/issues/7265) -- 🐞 Fix table group filter status error issue [#7233](https://github.com/vueComponent/ant-design-vue/issues/7233) - -## 4.1.0 - -- 🐞 support vue 3.4 [#7239](https://github.com/vueComponent/ant-design-vue/issues/7239) - -## 4.0.8 - -- 🐞 Fix theme responsiveness failure issue under Nuxt [#7180](https://github.com/vueComponent/ant-design-vue/issues/7180) -- 🐞 Fix error reporting caused by Wave [#7108](https://github.com/vueComponent/ant-design-vue/issues/7108) -- 🐞 Fix Upload disabled inheritance issue [#7110](https://github.com/vueComponent/ant-design-vue/issues/7110) -- 🐞 Fix Tooltip popupAlign not taking effect [#7112](https://github.com/vueComponent/ant-design-vue/issues/7112) -- 🐞 Fix Typography flashing problem [#7146](https://github.com/vueComponent/ant-design-vue/issues/7146) -- 🐞 Fix the issue that RangePicker prevIcon nextIcon does not take effect [#7127](https://github.com/vueComponent/ant-design-vue/issues/7127) -- 🐞 Fixed the issue of watermark not monitoring child element changes [#7149](https://github.com/vueComponent/ant-design-vue/issues/7149) -- 🐞 Fix Menu animation missing issue [#7130](https://github.com/vueComponent/ant-design-vue/issues/7130) -- 🐞 Fix the cursor change issue when TextArea autosize [#7121](https://github.com/vueComponent/ant-design-vue/issues/7121) - -## 4.0.7 - -- 🌟 Added Flex component [#7052](https://github.com/vueComponent/ant-design-vue/issues/7052) -- 🌟 ConfigProvider adds wave configuration [#7036](https://github.com/vueComponent/ant-design-vue/issues/7036) -- 🌟 Watermark supports dark mode [#7067](https://github.com/vueComponent/ant-design-vue/issues/7067) -- 🐞 Fix Space duplicate Key problem [#7048](https://github.com/vueComponent/ant-design-vue/issues/7048) -- 🐞 Fix Upload disabled priority error issue [#7047](https://github.com/vueComponent/ant-design-vue/issues/7047) -- 🐞 Fix Carousel rendering error in jsx [#7077](https://github.com/vueComponent/ant-design-vue/issues/7077) -- 🐞 Fix Message offset position problem [#7093](https://github.com/vueComponent/ant-design-vue/issues/7093) -- 🐞 Fix the problem of animation failure when using Collapse custom prefix [#7074](https://github.com/vueComponent/ant-design-vue/issues/7074) - -## 4.0.6 - -- 🐞 Fix the Dropdown onVisibleChange failure issue introduced in 4.0.4 [#7031](https://github.com/vueComponent/ant-design-vue/issues/7031) - -## 4.0.5 - -- 🐞 Fix cssinjs performance issue [#7023](https://github.com/vueComponent/ant-design-vue/issues/7023) - -## 4.0.4 - -- 🌟 Added esm target file -- 🌟 Added tooltip attribute to FormItem [#7014](https://github.com/vueComponent/ant-design-vue/issues/7014) -- 🐞 Fix useMessage getContainer not taking effect [#6942](https://github.com/vueComponent/ant-design-vue/issues/6942) -- 🐞 Fix the problem of Image triggering onPreviewVisibleChange event multiple times [#6945](https://github.com/vueComponent/ant-design-vue/issues/6945) -- 🐞 Fix the problem that Checkbox global disabled does not take effect [#6970](https://github.com/vueComponent/ant-design-vue/issues/6970) -- 🐞 Fix Drawer contentWrapperStyle not taking effect [#6983](https://github.com/vueComponent/ant-design-vue/issues/6983) -- 🐞 Optimize Select Dropdown and other drop-down list scroll bar display hidden logic [#6987](https://github.com/vueComponent/ant-design-vue/issues/6987) -- 🐞 Fix the problem of hiding when there are components such as input in the drop-down list such as Select Dropdown [#7020](https://github.com/vueComponent/ant-design-vue/issues/7020) - -## 4.0.3 - -- 🐞 Fix the problem of style loss under shadow Dom [#6912](https://github.com/vueComponent/ant-design-vue/issues/6912) -- 🐞 Upgrade Icon dependency and fix icon css missing problem under shadow Dom [#6914](https://github.com/vueComponent/ant-design-vue/issues/6914) - -## 4.0.2 - -- 🐞 Fix useMessage causing body to be removed [#6880](https://github.com/vueComponent/ant-design-vue/issues/6880) -- 🐞 Fix the problem that the water ripple effect does not disappear after Button loading is switched [#6895](https://github.com/vueComponent/ant-design-vue/issues/6895) -- 🐞 Fixed the problem that flip does not reset after Image is closed [#6913](https://github.com/vueComponent/ant-design-vue/issues/6913) -- 🐞 Fix ImageGroup animation effect loss problem [#6898](https://github.com/vueComponent/ant-design-vue/issues/6898) -- 🐞 Fix Modal missing onUpdate:open attribute declaration [#6876](https://github.com/vueComponent/ant-design-vue/issues/6876) -- 🐞 Fixed the issue of multiple clicks being triggered at the edge of Transfer's Checkbox [#6902](https://github.com/vueComponent/ant-design-vue/issues/6902) - -## 4.0.1 - -- 🌟 FloatButton add Badge support [#6738](https://github.com/vueComponent/ant-design-vue/issues/6738) -- 🌟 Image preview zoom in and out sensitivity adjustment [#6784](https://github.com/vueComponent/ant-design-vue/issues/6784) -- 🌟 Add flip feature to Image [#6785](https://github.com/vueComponent/ant-design-vue/issues/6785) -- 🌟 Add App component to provide context [#6735](https://github.com/vueComponent/ant-design-vue/issues/6735) -- 🌟 Style extraction feature for SSR [#6757](https://github.com/vueComponent/ant-design-vue/issues/6757) -- 🌟 Support px2rem [#6817](https://github.com/vueComponent/ant-design-vue/issues/6817) -- 🌟 Tag supports borderless mode [#6819](https://github.com/vueComponent/ant-design-vue/issues/6819) -- 🌟 Avatar group mode supports shape [#6822](https://github.com/vueComponent/ant-design-vue/issues/6822) -- 🌟 AutoComplete supports borderless and custom clearIcon [#6829](https://github.com/vueComponent/ant-design-vue/issues/6829) -- 🌟 InputPassword supports controlled visible [#6863](https://github.com/vueComponent/ant-design-vue/issues/6863) -- 🐞 Fix the style misalignment problem when InputGroup is large [#6866](https://github.com/vueComponent/ant-design-vue/issues/6866) -- 🐞 Fix the problem that Checkable Tag cannot customize class [#6854](https://github.com/vueComponent/ant-design-vue/issues/6854) -- 🐞 Fix the rendering problem in Tabs animation mode [#6855](https://github.com/vueComponent/ant-design-vue/issues/6855) -- 🐞 Fix the problem that the Image height attribute does not take effect [#6840](https://github.com/vueComponent/ant-design-vue/issues/6840) -- 🐞 Fix InputNumber trigger mouseup event [#6772](https://github.com/vueComponent/ant-design-vue/issues/6772) -- 🐞 Fix the Dropdown style problem when Tabs are collapsed [#6757](https://github.com/vueComponent/ant-design-vue/issues/6757) -- 🐞 Fix Table expandedRowRender property does not take effect [#6783](https://github.com/vueComponent/ant-design-vue/issues/6783) -- 🐞 Fix dayjs not packaged into dist [#6767](https://github.com/vueComponent/ant-design-vue/issues/6767) -- 🐞 Fix clipPath browser compatibility issue [#6770](https://github.com/vueComponent/ant-design-vue/issues/6770) -- 🐞 Fix Carousel autoplay responsive problem [#6768](https://github.com/vueComponent/ant-design-vue/issues/6768) -- 🐞 Fix PageHeader ghost style problem [#6761](https://github.com/vueComponent/ant-design-vue/issues/6761) -- 🐞 Fix Checkbox not triggering Form validation [#6741](https://github.com/vueComponent/ant-design-vue/issues/6741) -- 🐞 Fix the problem that the Input prefix attribute does not take effect [#6810](https://github.com/vueComponent/ant-design-vue/issues/6810) -- 🐞 Fix Badge style problem in Avatar [#6874](https://github.com/vueComponent/ant-design-vue/issues/6874) - -## 4.0 - -### 🔥🔥🔥 4.0 official version released 🔥🔥🔥 - -### Design specification adjustment - -- Basic rounded corner adjustment, changed from unified `2px` to four-level rounded corners, which are `2px` `4px` `6px` `8px` respectively, which are applied to different scenarios, for example, the rounded corners of the default size Button are adjusted to `6px`. -- Main color adjustment, changed from `#1890ff` to `#1677ff`. -- Overall shadow adjustment, from the original three-level shadow adjustment to two levels, which are used for resident page components (such as Card) and interactive feedback (such as Dropdown). -- Adjust the internal spacing of some components. -- Overall de-wireframing. - -### Add 5 new components - -- Segmented segment controller -- WaterMark watermark -- QrCode QR code -- FloatButton floating button -- Tour roaming guide - -### Technical adjustments - -- Deprecated less and adopted CSS-in-JS to better support dynamic themes. - - All less files are removed, and less variables no longer support leaking. - - css files are no longer included in the product. Since CSS-in-JS supports importing on demand, the original `ant-design-vue/dist/antd.css` has also been removed. If you need to reset some basic styles, please import `ant-design-vue/dist/reset .css`. - - If you need to reset the style of the component and don't want to introduce `ant-design-vue/dist/reset.css` to pollute the global style, you can try to use [App component](/components/app), to solve the problem that native elements do not have ant-design-vue specification style. -- Removed css variables and dynamic theme schemes built on top of it. -- LocaleProvider has been deprecated in 3.x (use `` instead), we have completely removed the related directories `ant-design-vue/es/locale-provider`, `ant- design-vue/lib/locale-provider`. -- `babel-plugin-import` is no longer supported, CSS-in-JS itself has the ability to load on demand, no longer need plug-in support. - -#### Component API adjustments - -- The classname API of the component popup is unified to `popupClassName`, and similar APIs such as `dropdownClassName` will be replaced. - - - AutoComplete component - - Cascader component - - Select component - - TreeSelect component - - TimePicker component - - DatePicker component - - Mentions component - -- The controlled visibility API of the component popup is unified as `open`, and `visible` and other similar APIs will be replaced. - - Drawer component `visible` becomes `open`. - - Modal component `visible` becomes `open`. - - Dropdown component `visible` becomes `open`. - - Tooltip component `visible` becomes `open`. - - Tag component `visible` has been removed. - - Slider component `tooltip` related API converges to `tooltip` property. - - Table component `filterDropdownVisible` changed to `filterDropdownOpen`. -- `getPopupContainer`: All `getPopupContainer` needs to ensure that the returned div is unique. -- Drawer `style` and `class` are migrated to the Drawer popup area, and the original attributes are replaced by `rootClassName` and `rootStyle`. - -#### Component refactoring and removal - -- Remove the `locale-provider` directory. `LocaleProvider` has been removed in v4, please use `ConfigProvider` instead. - -- Remove `xxxl` breakpoint attribute in grid layout. `xxxl` attribute has been removed in v4, you can use [theme customization](/docs/vue/customize-theme) to modify `screen[XS|SM|MD|LG|XL|XXL]` to modify the break Point value achieved. - -- The BackTop component was deprecated in `4.0.0` and moved to the FloatButton floating button. If needed, it can be imported from FloatButton. - -### [Upgrade Guide](/docs/vue/migration-v4) - -## 3.x - -Visit [GitHub](https://github.com/vueComponent/ant-design-vue/blob/3.x/CHANGELOG.zh-CN.md) `3.x` Change Log。 - -## 2.x - -Visit [GitHub](https://github.com/vueComponent/ant-design-vue/blob/2.x/CHANGELOG.zh-CN.md) `2.x` Change Log。 - -## 1.x - -Visit [GitHub](https://github.com/vueComponent/ant-design-vue/blob/1.x/CHANGELOG.en-US.md) to read change logs from `0.x` to `1.x`. diff --git a/CHANGELOG.zh-CN.md b/CHANGELOG.zh-CN.md deleted file mode 100644 index c9b50d963..000000000 --- a/CHANGELOG.zh-CN.md +++ /dev/null @@ -1,239 +0,0 @@ -# 更新日志 - -`ant-design-vue` 严格遵循 [Semantic Versioning 2.0.0](http://semver.org/lang/zh-CN/) 语义化版本规范。 - -#### 发布周期 - -- 修订版本号:每周末会进行日常 bugfix 更新。(如果有紧急的 bugfix,则任何时候都可发布) -- 次版本号:每月发布一个带有新特性的向下兼容的版本。 -- 主版本号:含有破坏性更新和新特性,不在发布周期内。 - ---- - -## 4.2.6 - -- 🐞 修复 Modal 组件在 chrome 下,aria-hidden 报错问题 [#7823](https://github.com/vueComponent/ant-design-vue/issues/7823) -- 🐞 修复 Safari 下自带输入法 input 组件输入中文时,自动填写小数点问题 [#7918](https://github.com/vueComponent/ant-design-vue/issues/7918) -- 🐞 修复 InputNumber 组件 disabled 样式问题 [#7776](https://github.com/vueComponent/ant-design-vue/issues/7776) -- 🐞 修复 Select 无法失焦问题 [#7819](https://github.com/vueComponent/ant-design-vue/issues/7819) - -## 4.2.5 - -- 🐞 修复 Empty 组件内存泄漏问题 -- 🐞 修复 Image width & height 属性不生效问题 - -## 4.2.4 - -- 🐞 修复 Wave 内存泄漏问题 - -## 4.2.3 - -- 🌟 TourStep 自定义 Button,支持函数 children [#7628](https://github.com/vueComponent/ant-design-vue/pull/7628) -- 🐞 修复 Select 和 Cascader 搜索多选模式下,输入值被隐藏问题 [#7640](https://github.com/vueComponent/ant-design-vue/issues/7640) - -## 4.2.2 - -- 🐞 修复 TreeSelect placeholder 插槽无效 [#7545](https://github.com/vueComponent/ant-design-vue/issues/7545) -- 🐞 修复 Tree 插槽响应式无效问题 [40ad45](https://github.com/vueComponent/ant-design-vue/commit/40ad45bc05b2bf9d0a2445d9f6ff365468ba90b7) -- 🐞 修复 FloatButton target 类型错误问题 [#7576](https://github.com/vueComponent/ant-design-vue/issues/7576) -- 🐞 修复 FormItem className 错误问题 [#7582](https://github.com/vueComponent/ant-design-vue/issues/7582) -- 🐞 修复 Input lazy 下无法输入问题 [#7543](https://github.com/vueComponent/ant-design-vue/issues/7543) -- 🐞 修复 Select 输入中文时,placeholder 未隐藏问题 [#7611](https://github.com/vueComponent/ant-design-vue/issues/7611) -- 🐞 修复 DatePicker 点击预设选项时,弹窗闪动问题 [#7550](https://github.com/vueComponent/ant-design-vue/issues/7550) - -## 4.2.1 - -- 🐞 修复 Input 清空操作才报错问题 [#7523](https://github.com/vueComponent/ant-design-vue/issues/7523) - -## 4.2.0 - -- 🌟 优化 layout 组件切换 dark 模式时 textColor 变化 [#7498](https://github.com/vueComponent/ant-design-vue/issues/7498) -- 🌟 Tooltip 新增 arrow 隐藏配置 [#7459](https://github.com/vueComponent/ant-design-vue/issues/7459) -- 🌟 优化 Table hover 性能 [#7451](https://github.com/vueComponent/ant-design-vue/issues/7451) -- 🐞 修复 useForm 校验时更改 model,导致校验错误问题 [#ffd4d8](https://github.com/vueComponent/ant-design-vue/commit/ffd4d8fe927f9ea40cbb6358ad997c447bd9a74e) -- 🐞 修复 Tabs 折叠计算错误问题 [#7491](https://github.com/vueComponent/ant-design-vue/issues/7491) -- 🐞 修复 Qrcode 缺少类型提示问题 [#7502](https://github.com/vueComponent/ant-design-vue/issues/7502) -- 🐞 修复 Menu 在 SSR 下渲染错误问题 [#7349](https://github.com/vueComponent/ant-design-vue/issues/7349) -- 🐞 修复 Select、Cascader 在 SSR 下渲染错误问题 [#7377](https://github.com/vueComponent/ant-design-vue/issues/7377) -- 🐞 修复 AutoComplete 缺少 option slot 声明问题 [#7396](https://github.com/vueComponent/ant-design-vue/issues/7396) -- 🐞 修复 Textarea autoSize 不生效问题 [#7478](https://github.com/vueComponent/ant-design-vue/issues/7478) -- 🐞 修复 Pagination 回车键触发两次翻页问题 [#7368](https://github.com/vueComponent/ant-design-vue/issues/7368) -- 🐞 修复输入框输入中文问题 [#7391](https://github.com/vueComponent/ant-design-vue/issues/7391)[#7516](https://github.com/vueComponent/ant-design-vue/issues/7516) -- 🐞 修复 Carousel beforeChange current 参数错误问题 [#7419](https://github.com/vueComponent/ant-design-vue/issues/7419) - -## 4.1.2 - -- 🐞 修复 table resize 在 vue 3.4 下报错问题 [#7291](https://github.com/vueComponent/ant-design-vue/issues/7291) -- 🐞 修复 Segmented title 属性不显示问题 [#7302](https://github.com/vueComponent/ant-design-vue/issues/7302) - -## 4.1.1 - -- 🌟 QRcode 新增 scanned 状态 [#7242](https://github.com/vueComponent/ant-design-vue/issues/7242) -- 🐞 修复 css prefix 在 nuxt 问题 [#7256](https://github.com/vueComponent/ant-design-vue/issues/7256) -- 🐞 修复 dropdown 关闭问题 [#7246](https://github.com/vueComponent/ant-design-vue/issues/7246) -- 🐞 修复 divider vertical dashed 不显示问题 [#7218](https://github.com/vueComponent/ant-design-vue/issues/7218) -- 🐞 修复 hook 模式 message 控制台 warning 问题 [#7281](https://github.com/vueComponent/ant-design-vue/issues/7281) -- 🐞 修复 table 展开在 vue 3.4 下报错问题 [#7265](https://github.com/vueComponent/ant-design-vue/issues/7265) -- 🐞 修复 table group 过滤状态错误问题 [#7233](https://github.com/vueComponent/ant-design-vue/issues/7233) - -## 4.1.0 - -- 🐞 适配 vue 3.4 [#7239](https://github.com/vueComponent/ant-design-vue/issues/7239) - -## 4.0.8 - -- 🐞 修复在 Nuxt 下 theme 响应式失效问题 [#7180](https://github.com/vueComponent/ant-design-vue/issues/7180) -- 🐞 修复 Wave 引起的报错问题 [#7108](https://github.com/vueComponent/ant-design-vue/issues/7108) -- 🐞 修复 Upload disabled 继承问题 [#7110](https://github.com/vueComponent/ant-design-vue/issues/7110) -- 🐞 修复 Tooltip popupAlign 未生效问题 [#7112](https://github.com/vueComponent/ant-design-vue/issues/7112) -- 🐞 修复 Typography 闪动问题 [#7146](https://github.com/vueComponent/ant-design-vue/issues/7146) -- 🐞 修复 RangePicker prevIcon nextIcon 未生效问题 [#7127](https://github.com/vueComponent/ant-design-vue/issues/7127) -- 🐞 修复 watermark 未监听子元素变动问题 [#7149](https://github.com/vueComponent/ant-design-vue/issues/7149) -- 🐞 修复 Menu 动画丢失问题 [#7130](https://github.com/vueComponent/ant-design-vue/issues/7130) -- 🐞 修复 TextArea autosize 时光标变化问题 [#7121](https://github.com/vueComponent/ant-design-vue/issues/7121) - -## 4.0.7 - -- 🌟 新增 Flex 组件 [#7052](https://github.com/vueComponent/ant-design-vue/issues/7052) -- 🌟 ConfigProvider 新增 wave 配置 [#7036](https://github.com/vueComponent/ant-design-vue/issues/7036) -- 🌟 Watermark 支持暗黑模式 [#7067](https://github.com/vueComponent/ant-design-vue/issues/7067) -- 🐞 修复 Space 重复 Key 问题 [#7048](https://github.com/vueComponent/ant-design-vue/issues/7048) -- 🐞 修复 Upload disabled 优先级错误问题 [#7047](https://github.com/vueComponent/ant-design-vue/issues/7047) -- 🐞 修复 Carousel 在 jsx 中渲染错误问题 [#7077](https://github.com/vueComponent/ant-design-vue/issues/7077) -- 🐞 修复 Message 偏移位置问题 [#7093](https://github.com/vueComponent/ant-design-vue/issues/7093) -- 🐞 修复 Collapse 自定义 prefix 时动画失效问题 [#7074](https://github.com/vueComponent/ant-design-vue/issues/7074) - -## 4.0.6 - -- 🐞 修复 4.0.4 引入的 Dropdown onVisibleChange 失效问题 [#7031](https://github.com/vueComponent/ant-design-vue/issues/7031) - -## 4.0.5 - -- 🐞 修复 cssinjs 性能问题 [#7023](https://github.com/vueComponent/ant-design-vue/issues/7023) - -## 4.0.4 - -- 🌟 新增 esm 目标文件 -- 🌟 FormItem 新增 tooltip 属性 [#7014](https://github.com/vueComponent/ant-design-vue/issues/7014) -- 🐞 修复 useMessage getContainer 不生效问题 [#6942](https://github.com/vueComponent/ant-design-vue/issues/6942) -- 🐞 修复 Image 多次触发 onPreviewVisibleChange 事件问题 [#6945](https://github.com/vueComponent/ant-design-vue/issues/6945) -- 🐞 修复 Checkbox 全局 disabled 不生效问题 [#6970](https://github.com/vueComponent/ant-design-vue/issues/6970) -- 🐞 修复 Drawer contentWrapperStyle 不生效问题 [#6983](https://github.com/vueComponent/ant-design-vue/issues/6983) -- 🐞 优化 Select Dropdown 等下拉列表滚动条显示隐藏逻辑 [#6987](https://github.com/vueComponent/ant-design-vue/issues/6987) -- 🐞 修复 Select Dropdown 等下拉列表中有 input 等组件时,隐藏问题 [#7020](https://github.com/vueComponent/ant-design-vue/issues/7020) - -## 4.0.3 - -- 🐞 修复 shadow Dom 下样式丢失问题 [#6912](https://github.com/vueComponent/ant-design-vue/issues/6912) -- 🐞 升级 Icon 依赖,修复 shadow Dom 下 icon css 丢失问题 [#6914](https://github.com/vueComponent/ant-design-vue/issues/6914) - -## 4.0.2 - -- 🐞 修复 useMessage 导致 body 被移除问题 [#6880](https://github.com/vueComponent/ant-design-vue/issues/6880) -- 🐞 修复 Button loading 切换后,水波纹效果不消失问题 [#6895](https://github.com/vueComponent/ant-design-vue/issues/6895) -- 🐞 修复 Image 关闭后 flip 没有重置问题 [#6913](https://github.com/vueComponent/ant-design-vue/issues/6913) -- 🐞 修复 ImageGroup 动画效果丢失问题 [#6898](https://github.com/vueComponent/ant-design-vue/issues/6898) -- 🐞 修复 Modal 缺少 onUpdate:open 属性声明 [#6876](https://github.com/vueComponent/ant-design-vue/issues/6876) -- 🐞 修复 Transfer 的 Checkbox 边缘处会触发多次 click 问题 [#6902](https://github.com/vueComponent/ant-design-vue/issues/6902) - -## 4.0.1 - -- 🌟 FloatButton 添加 Badge 支持 [#6738](https://github.com/vueComponent/ant-design-vue/issues/6738) -- 🌟 Image 预览放大缩小灵敏度调整 [#6784](https://github.com/vueComponent/ant-design-vue/issues/6784) -- 🌟 Image 新增翻转特性 [#6785](https://github.com/vueComponent/ant-design-vue/issues/6785) -- 🌟 新增 App 组件,用于提供上下文 [#6735](https://github.com/vueComponent/ant-design-vue/issues/6735) -- 🌟 样式抽离特性用于 SSR [#6757](https://github.com/vueComponent/ant-design-vue/issues/6757) -- 🌟 支持 px2rem [#6817](https://github.com/vueComponent/ant-design-vue/issues/6817) -- 🌟 Tag 支持无边框模式 [#6819](https://github.com/vueComponent/ant-design-vue/issues/6819) -- 🌟 Avatar group 模式支持 shape [#6822](https://github.com/vueComponent/ant-design-vue/issues/6822) -- 🌟 AutoComplete 支持无边框和自定义 clearIcon [#6829](https://github.com/vueComponent/ant-design-vue/issues/6829) -- 🌟 InputPassword 支持受控 visible [#6863](https://github.com/vueComponent/ant-design-vue/issues/6863) -- 🐞 修复 InputGroup 在 large 时样式错位问题 [#6866](https://github.com/vueComponent/ant-design-vue/issues/6866) -- 🐞 修复 Checkable Tag 无法自定义 class 问题 [#6854](https://github.com/vueComponent/ant-design-vue/issues/6854) -- 🐞 修复 Tabs 动画模式下渲染问题 [#6855](https://github.com/vueComponent/ant-design-vue/issues/6855) -- 🐞 修复 Image height 属性不生效问题 [#6840](https://github.com/vueComponent/ant-design-vue/issues/6840) -- 🐞 修复 InputNumber 触发 mouseup 事件问题 [#6772](https://github.com/vueComponent/ant-design-vue/issues/6772) -- 🐞 修复 Tabs 折叠时 Dropdown 样式问题 [#6757](https://github.com/vueComponent/ant-design-vue/issues/6757) -- 🐞 修复 Table expandedRowRender 属性不生效 [#6783](https://github.com/vueComponent/ant-design-vue/issues/6783) -- 🐞 修复 dayjs 未打包进 dist 问题 [#6767](https://github.com/vueComponent/ant-design-vue/issues/6767) -- 🐞 解决 clipPath 浏览器兼容问题 [#6770](https://github.com/vueComponent/ant-design-vue/issues/6770) -- 🐞 修复 Carousel autoplay 响应式问题 [#6768](https://github.com/vueComponent/ant-design-vue/issues/6768) -- 🐞 修复 PageHeader ghost 样式问题 [#6761](https://github.com/vueComponent/ant-design-vue/issues/6761) -- 🐞 修复 Checkbox 没有触发 Form 校验问题 [#6741](https://github.com/vueComponent/ant-design-vue/issues/6741) -- 🐞 修复 Input prefix 属性未生效问题 [#6810](https://github.com/vueComponent/ant-design-vue/issues/6810) -- 🐞 修复 Badge 在 Avatar 中样式问题 [#6874](https://github.com/vueComponent/ant-design-vue/issues/6874) - -## 4.0 - -### 🔥🔥🔥 4.0 正式版发布 🔥🔥🔥 - -### 设计规范调整 - -- 基础圆角调整,由统一的 `2px` 改为四级圆角,分别为 `2px` `4px` `6px` `8px`,分别应用于不同场景,比如默认尺寸的 Button 的圆角调整为了 `6px`。 -- 主色调整,由 `#1890ff` 改为 `#1677ff`。 -- 整体阴影调整,由原本的三级阴影调整为两级,分别用于常驻页面的组件(如 Card)和交互反馈(如 Dropdown)。 -- 部分组件内间距调整。 -- 整体去线框化。 - -### 新增 5 个组件 - -- Segmented 分段控制器 -- WaterMark 水印 -- QrCode 二维码 -- FloatButton 悬浮按钮 -- Tour 漫游式引导 - -### 技术调整 - -- 弃用 less,采用 CSS-in-JS,更好地支持动态主题。 - - 所有 less 文件全部移除,less 变量不再支持透出。 - - 产物中不再包含 css 文件。由于 CSS-in-JS 支持按需引入,原本的 `ant-design-vue/dist/antd.css` 也已经移除,如果需要重置一些基本样式请引入 `ant-design-vue/dist/reset.css`。 - - 如果需要组件重置样式,又不想引入 `ant-design-vue/dist/reset.css` 从而导致污染全局样式的话,可以尝试在应用最外层使用[App 组件](/components/app-cn),解决原生元素没有 ant-design-vue 规范样式的问题。 -- 移除 css variables 以及在此之上构筑的动态主题方案。 -- LocaleProvider 在 3.x 中已经废弃(使用 `` 替代),我们在 4.x 里彻底移除了相关目录 `ant-design-vue/es/locale-provider`、`ant-design-vue/lib/locale-provider`。 -- 不再支持 `babel-plugin-import`,CSS-in-JS 本身具有按需加载的能力,不再需要插件支持。 - -#### 组件 API 调整 - -- 组件弹框的 classname API 统一为 `popupClassName`,`dropdownClassName` 等类似 API 都会被替换。 - - - AutoComplete 组件 - - Cascader 组件 - - Select 组件 - - TreeSelect 组件 - - TimePicker 组件 - - DatePicker 组件 - - Mentions 组件 - -- 组件弹框的受控可见 API 统一为 `open`,`visible` 等类似 API 都会被替换。 - - Drawer 组件 `visible` 变为 `open`。 - - Modal 组件 `visible` 变为 `open`。 - - Dropdown 组件 `visible` 变为 `open`。 - - Tooltip 组件 `visible` 变为 `open`。 - - Tag 组件 `visible` 已移除。 - - Slider 组件 `tooltip` 相关 API 收敛到 `tooltip` 属性中。 - - Table 组件 `filterDropdownVisible` 变为 `filterDropdownOpen`。 -- `getPopupContainer`: 所有的 `getPopupContainer` 都需要保证返回的是唯一的 div。 -- Drawer `style` 和 `class` 迁移至 Drawer 弹层区域上,原属性替换为 `rootClassName` 和 `rootStyle`。 - -#### 组件重构与移除 - -- 移除 `locale-provider` 目录。`LocaleProvider` 在 v4 中已移除,请使用 `ConfigProvider` 替代。 - -- 移除栅格布局中的`xxxl`断点属性。 `xxxl`属性已经在 v4 被移除,您可以使用 [主题定制](/docs/vue/customize-theme-cn) 修改 `screen[XS|SM|MD|LG|XL|XXL]` 来修改断点值实现。 - -- BackTop 组件在 `4.0.0` 中废弃,移至 FloatButton 悬浮按钮中。如需使用,可以从 FloatButton 中引入。 - -### [升级指南](/docs/vue/migration-v4-cn) - -## 3.x - -去 [GitHub](https://github.com/vueComponent/ant-design-vue/blob/3.x/CHANGELOG.zh-CN.md) 查看 `3.x` 的 Change Log。 - -## 2.x - -去 [GitHub](https://github.com/vueComponent/ant-design-vue/blob/2.x/CHANGELOG.zh-CN.md) 查看 `2.x` 的 Change Log。 - -## 1.x - -去 [GitHub](https://github.com/vueComponent/ant-design-vue/blob/1.x/CHANGELOG.zh-CN.md) 查看 `0.x` 到 `1.x` 的 Change Log。 diff --git a/README-zh_CN.md b/README-zh_CN.md deleted file mode 100644 index 05a8f7030..000000000 --- a/README-zh_CN.md +++ /dev/null @@ -1,120 +0,0 @@ -

- - - -

- -

- Ant Design Vue -

- -
- -基于 Ant Design 和 Vue 3 的企业级 UI 组件库。 - -![test](https://github.com/vueComponent/ant-design-vue/workflows/test/badge.svg) [![codecov](https://img.shields.io/codecov/c/github/vueComponent/ant-design-vue/master.svg?style=flat-square)](https://codecov.io/gh/vueComponent/ant-design-vue) [![npm package](https://img.shields.io/npm/v/ant-design-vue.svg?style=flat-square)](https://www.npmjs.org/package/ant-design-vue) [![NPM downloads](http://img.shields.io/npm/dm/ant-design-vue.svg?style=flat-square)](http://www.npmtrends.com/ant-design-vue) [![backers](https://opencollective.com/ant-design-vue/backers/badge.svg)](#backers) [![sponsors](https://opencollective.com/ant-design-vue/sponsors/badge.svg)](#sponsors) [![extension-for-VSCode](https://img.shields.io/badge/extension%20for-VSCode-blue.svg?style=flat-square)](https://marketplace.visualstudio.com/items?itemName=ant-design-vue.vscode-ant-design-vue-helper) [![issues-helper](https://img.shields.io/badge/Issues%20Manage%20By-issues--helper-orange?style=flat-square)](https://github.com/actions-cool/issues-helper) - -
- -[![](https://cdn-images-1.medium.com/max/2000/1*NIlj0-TdLMbo_hzSBP8tmg.png)](https://www.antdv.com/) - -[English](./README.md) | 简体中文 - -## 特性 - -- 提炼自企业级中后台产品的交互语言和视觉风格。 -- 开箱即用的高质量 Vue 组件。 -- 共享 [Ant Design of React](http://ant-design.gitee.io/docs/spec/introduce-cn) 设计工具体系。 - -## 关注我们 - -收藏加关注,第一时间获取更新动态! - -![star us](https://user-images.githubusercontent.com/6937879/261937060-e0501ab3-9388-4712-a25d-3f2ba2271865.gif) - -## 支持环境 - -- 现代浏览器。1.x 版本支持 IE 9+(需要 [polyfills](https://www.antdv.com/docs/vue/getting-started-cn/#兼容性)) -- 支持服务端渲染。 -- [Electron](https://electronjs.org/) -- 支持 Vue 2 和 Vue 3 - -| [IE / Edge](http://godban.github.io/browsers-support-badges/)
IE / Edge | [Firefox](http://godban.github.io/browsers-support-badges/)
Firefox | [Chrome](http://godban.github.io/browsers-support-badges/)
Chrome | [Safari](http://godban.github.io/browsers-support-badges/)
Safari | [Opera](http://godban.github.io/browsers-support-badges/)
Opera | [Electron](http://godban.github.io/browsers-support-badges/)
Electron | -| --- | --- | --- | --- | --- | --- | -| Edge | last 2 versions | last 2 versions | last 2 versions | last 2 versions | last 2 versions | - -## 安装 - -### 使用 npm 或 yarn 安装 - -```bash -$ npm install ant-design-vue --save -``` - -```bash -$ yarn add ant-design-vue -``` - -如果你的网络环境不佳,推荐使用 [cnpm](https://github.com/cnpm/cnpm)。 - -## 链接 - -- [首页](https://www.antdv.com/) -- [Vue 官方文档](https://cn.vuejs.org/) -- [Ant Design Of React](http://ant.design/) - -## 生态 - -| Project | Description | -| --- | --- | -| [vue-ref](https://github.com/vueComponent/vue-ref) | 您可以使用回调来获取组件的引用,类似 react | -| [ant-design-vue-helper](https://marketplace.visualstudio.com/items?itemName=ant-design-vue.vscode-ant-design-vue-helper) | ant-design-vue 的 vscode 扩展 | -| [vue-cli-plugin-ant-design](https://github.com/vueComponent/vue-cli-plugin-ant-design) | 使用 vue-cli3 快速使用 ant-design-vue 组件库 | -| [vue-dash-event](https://github.com/vueComponent/vue-dash-event) | 在 DOM 模板中,您可以使用 ant-design-vue 组件的自定义事件(camelCase) | -| [@formily/antdv](https://github.com/formilyjs/antdv) | 这是一个结合了 Formily 和 ant-design-vue 的组件库 | -| [@ant-design-vue/nuxt](https://github.com/vueComponent/ant-design-vue-nuxt) | ant-design-vue 的 nuxt 模块扩展 | -| [ant-design-x-vue](https://github.com/wzc520pyfm/ant-design-x-vue) | 基于 Ant Design X 设计规范的 Vue AI 界面解决方案 | - -## 问答 - -> 强烈推荐阅读 [《提问的智慧》](https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way)、[《如何向开源社区提问题》](https://github.com/seajs/seajs/issues/545) 和 [《如何有效地报告 Bug》](http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html)、[《如何向开源项目提交无法解答的问题》](https://zhuanlan.zhihu.com/p/25795393),更好的问题更容易获得帮助。 - -[![Let's fund issues in this repository](https://issuehunt.io/static/embed/issuehunt-button-v1.svg)](https://issuehunt.io/repos/104172832) - -## 赞助 - -ant-design-vue 是 MIT 协议的开源项目。为了项目能够更好的持续的发展,我们期望获得更多的[支持者](https://github.com/vueComponent/ant-design-vue/blob/master/BACKERS.md),你可以通过如下任何一种方式支持我们: - -- [Patreon](https://www.patreon.com/tangjinzhou) -- [opencollective](https://opencollective.com/ant-design-vue) -- [paypal](https://www.paypal.me/tangjinzhou) -- [支付宝或微信](https://aliyuncdn.antdv.com/alipay-and-wechat.png) -- ETH: 0x30cc48515d8ae9fefa20ab87226ad7e8ab9c3bc2 - -## 赞助商 - -成为赞助商,并在 Github 上的自述文件上获得您的徽标,并链接到您的网站。 [[成为赞助商](https://opencollective.com/ant-design-vue#sponsor)] - - - -## 支持者 - -每月捐款支持我们,帮助我们继续我们的活动。 [[成为支持者](https://opencollective.com/ant-design-vue#backer)] - - - -## Patreon - -每月捐款支持我们,帮助我们继续我们的活动。 [[成为支持者](https://www.patreon.com/tangjinzhou)] - - - -## [更多赞助者 (通过 Patreon、支付宝、微信、paypal 等等)](https://github.com/vueComponent/ant-design-vue/blob/master/BACKERS.md) - -## 贡献者 - -感谢所有为 ant-design-vue 做出贡献的人! - - - - diff --git a/README.md b/README.md index 3bc3fb0fc..2f6d44b73 100644 --- a/README.md +++ b/README.md @@ -1,106 +1 @@ -

- - - -

- -

- Ant Design Vue -

- -
- -An enterprise-class UI components based on Ant Design and Vue. - -![test](https://github.com/vueComponent/ant-design-vue/workflows/test/badge.svg) [![codecov](https://img.shields.io/codecov/c/github/vueComponent/ant-design-vue/master.svg?style=flat-square)](https://codecov.io/gh/vueComponent/ant-design-vue) [![npm package](https://img.shields.io/npm/v/ant-design-vue.svg?style=flat-square)](https://www.npmjs.org/package/ant-design-vue) [![NPM downloads](http://img.shields.io/npm/dm/ant-design-vue.svg?style=flat-square)](http://www.npmtrends.com/ant-design-vue) [![backers](https://opencollective.com/ant-design-vue/backers/badge.svg)](#backers) [![sponsors](https://opencollective.com/ant-design-vue/sponsors/badge.svg)](#sponsors) [![extension-for-VSCode](https://img.shields.io/badge/extension%20for-VSCode-blue.svg?style=flat-square)](https://marketplace.visualstudio.com/items?itemName=ant-design-vue.vscode-ant-design-vue-helper) [![issues-helper](https://img.shields.io/badge/Issues%20Manage%20By-issues--helper-orange?style=flat-square)](https://github.com/actions-cool/issues-helper) - -
- -[![](https://cdn-images-1.medium.com/max/2000/1*NIlj0-TdLMbo_hzSBP8tmg.png)](https://www.antdv.com/) - -English | [简体中文](./README-zh_CN.md) - -## Features - -- An enterprise-class UI design system for desktop applications. -- A set of high-quality Vue components out of the box. -- Shared [Ant Design of React](https://ant.design/docs/spec/introduce) design resources. - -## Getting started & staying tuned with us. - -Star us, and you will receive all releases notifications from GitHub without any delay! - -![star us](https://user-images.githubusercontent.com/6937879/261937060-e0501ab3-9388-4712-a25d-3f2ba2271865.gif) - -## Environment Support - -- Modern browsers. v1.x support Internet Explorer 9+ (with [polyfills](https://www.antdv.com/docs/vue/getting-started/#compatibility)) -- Server-side Rendering -- Support Vue 2 & Vue 3 -- [Electron](https://electronjs.org/) - -| [IE / Edge](http://godban.github.io/browsers-support-badges/)
IE / Edge | [Firefox](http://godban.github.io/browsers-support-badges/)
Firefox | [Chrome](http://godban.github.io/browsers-support-badges/)
Chrome | [Safari](http://godban.github.io/browsers-support-badges/)
Safari | [Opera](http://godban.github.io/browsers-support-badges/)
Opera | [Electron](http://godban.github.io/browsers-support-badges/)
Electron | -| --- | --- | --- | --- | --- | --- | -| Edge | last 2 versions | last 2 versions | last 2 versions | last 2 versions | last 2 versions | - -## Using npm or yarn - -**We recommend using npm or yarn to install**, it not only makes development easier, but also allow you to take advantage of the rich ecosystem of Javascript packages and tooling. - -```bash -$ npm install ant-design-vue --save -``` - -```bash -$ yarn add ant-design-vue -``` - -If you are in a bad network environment, you can try other registries and tools like [cnpm](https://github.com/cnpm/cnpm). - -## Links - -- [Home page](https://www.antdv.com/) -- [Vue](https://vuejs.org/) -- [Ant Design Of React](http://ant.design/) - -## Ecosystem - -| Project | Description | -| --- | --- | -| [vue-ref](https://github.com/vueComponent/vue-ref) | You can use the callback to get a reference like react | -| [ant-design-vue-helper](https://marketplace.visualstudio.com/items?itemName=ant-design-vue.vscode-ant-design-vue-helper) | A vscode extension for ant-design-vue | -| [vue-cli-plugin-ant-design](https://github.com/vueComponent/vue-cli-plugin-ant-design) | Vue-cli 3 plugin to add ant-design-vue | -| [vue-dash-event](https://github.com/vueComponent/vue-dash-event) | The library function, implemented in the DOM template, can use the custom event of the ant-design-vue component (camelCase) | -| [@formily/antdv](https://github.com/formilyjs/antdv) | The Library with Formily and ant-design-vue | -| [@ant-design-vue/nuxt](https://github.com/vueComponent/ant-design-vue-nuxt) | A nuxt module for ant-design-vue | -| [ant-design-x-vue](https://github.com/wzc520pyfm/ant-design-x-vue) | A Vue AI interface solutions base on the Ant Design X design specification | - -## Donation - -ant-design-vue is an MIT-licensed open source project. In order to achieve better and sustainable development of the project, we expect to gain more [backers](https://github.com/vueComponent/ant-design-vue/blob/master/BACKERS.md). You can support us in any of the following ways: - -- [Patreon](https://www.patreon.com/tangjinzhou) -- [opencollective](https://opencollective.com/ant-design-vue) -- [paypal](https://www.paypal.me/tangjinzhou) -- [支付宝或微信](https://aliyuncdn.antdv.com/alipay-and-wechat.png) -- ETH: 0x30cc48515d8ae9fefa20ab87226ad7e8ab9c3bc2 - -## Sponsors - -Become a sponsor and get your logo on our README on Github with a link to your site. [[Become a sponsor](https://opencollective.com/ant-design-vue#sponsor)] - - - -## [More Sponsor (From Patreon、alipay、wechat、paypal...)](https://github.com/vueComponent/ant-design-vue/blob/master/BACKERS.md) - -## Contributors - -Thank you to all the people who already contributed to ant-design-vue! - - - - - -[![Let's fund issues in this repository](https://issuehunt.io/static/embed/issuehunt-button-v1.svg)](https://issuehunt.io/repos/104172832) - -This project is tested with BrowserStack. +## And Design Vue 5.0 diff --git a/antd-tools/apiCollection.js b/antd-tools/apiCollection.js deleted file mode 100644 index 99843601c..000000000 --- a/antd-tools/apiCollection.js +++ /dev/null @@ -1,68 +0,0 @@ -// Read all the api from current documents - -const glob = require('glob'); -const fs = require('fs'); - -const COMPONENT_NAME = /components\/([^/]*)/; -const PROP_NAME = /^\s*\|\s*([^\s|]*)/; - -const components = {}; - -function mappingPropLine(component, line) { - const propMatch = line.match(PROP_NAME); - if (!propMatch) return; - - const propName = propMatch[1]; - if (!/^[a-z]/.test(propName)) return; - - components[component] = Array.from(new Set([...(components[component] || []), propName])); -} - -function apiReport(entities) { - const apis = {}; - Object.keys(entities).forEach(component => { - const apiList = entities[component]; - apiList.forEach(api => { - if (typeof apis[api] === 'function') { - apis[api] = []; - } - apis[api] = [...(apis[api] || []), component]; - }); - }); - - return apis; -} - -function printReport(apis) { - const apiList = Object.keys(apis).map(api => ({ - name: api, - componentList: apis[api], - })); - apiList.sort((a, b) => b.componentList.length - a.componentList.length); - // eslint-disable-next-line no-console - console.log('| name | components | comments |'); - // eslint-disable-next-line no-console - console.log('| ---- | ---------- | -------- |'); - apiList.forEach(({ name, componentList }) => { - // eslint-disable-next-line no-console - console.log('|', name, '|', componentList.join(', '), '| |'); - }); -} - -module.exports = () => { - glob('components/*/*.md', (error, files) => { - files.forEach(filePath => { - // Read md file to parse content - const content = fs.readFileSync(filePath, 'utf8'); - const component = filePath.match(COMPONENT_NAME)[1]; - - // Parse lines to get API - const lines = content.split(/[\r\n]+/); - lines.forEach(line => { - mappingPropLine(component, line); - }); - }); - - printReport(apiReport(components)); - }); -}; diff --git a/antd-tools/cli/index.js b/antd-tools/cli/index.js deleted file mode 100644 index 6ef2ab5b2..000000000 --- a/antd-tools/cli/index.js +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env node - -'use strict'; - -require('colorful').colorful(); - -const program = require('commander'); -const packageInfo = require('../../package.json'); - -program - .version(packageInfo.version) - .command('run [name]', 'run specified task') - .parse(process.argv); - -// https://github.com/tj/commander.js/pull/260 -const proc = program.runningCommand; -if (proc) { - proc.on('close', process.exit.bind(process)); - proc.on('error', () => { - process.exit(1); - }); -} - -const subCmd = program.args[0]; -if (!subCmd || subCmd !== 'run') { - program.help(); -} diff --git a/antd-tools/cli/run.js b/antd-tools/cli/run.js deleted file mode 100644 index e1466aa6c..000000000 --- a/antd-tools/cli/run.js +++ /dev/null @@ -1,51 +0,0 @@ -#!/usr/bin/env node -/* eslint-disable no-console */ - -'use strict'; - -require('colorful').colorful(); -const gulp = require('gulp'); -const program = require('commander'); - -program.option('-c --npm-tag ', 'add --npm-tag=xxx'); - -program.on('--help', () => { - console.log(' Usage:'.to.bold.blue.color); - console.log(); -}); - -program.parse(process.argv); - -function runTask(toRun) { - const metadata = { task: toRun }; - // Gulp >= 4.0.0 (doesn't support events) - const taskInstance = gulp.task(toRun); - if (taskInstance === undefined) { - gulp.emit('task_not_found', metadata); - return; - } - const start = process.hrtime(); - gulp.emit('task_start', metadata); - try { - taskInstance.apply(gulp); - metadata.hrDuration = process.hrtime(start); - gulp.emit('task_stop', metadata); - gulp.emit('stop'); - } catch (err) { - err.hrDuration = process.hrtime(start); - err.task = metadata.task; - gulp.emit('task_err', err); - } -} - -const task = program.args[0]; - -if (!task) { - program.help(); -} else { - console.log('antd-tools run', task); - - require('../gulpfile'); - - runTask(task); -} diff --git a/antd-tools/generator-types/README.md b/antd-tools/generator-types/README.md deleted file mode 100644 index 199c688ba..000000000 --- a/antd-tools/generator-types/README.md +++ /dev/null @@ -1 +0,0 @@ -fork github.com/youzan/vant packages/generator-types diff --git a/antd-tools/generator-types/index.js b/antd-tools/generator-types/index.js deleted file mode 100644 index 8a456e0a1..000000000 --- a/antd-tools/generator-types/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const path = require('path'); -const pkg = require('../../package.json'); -const { parseAndWrite } = require('./lib/index.js'); -const rootPath = path.resolve(__dirname, '../../'); - -parseAndWrite({ - version: pkg.version, - name: 'ant-design-vue', - path: path.resolve(rootPath, './components'), - typingsPath: path.resolve(rootPath, './typings/global.d.ts'), - // default match lang - test: /en-US\.md/, - outputDir: path.resolve(rootPath, './vetur'), - tagPrefix: 'a-', -}) - .then(result => { - // eslint-disable-next-line no-console - console.log(`generator types success: ${result} tags generated`); - }) - .catch(error => { - console.error('generator types error', error); - return Promise.reject(error); - }); diff --git a/antd-tools/generator-types/src/formatter.ts b/antd-tools/generator-types/src/formatter.ts deleted file mode 100644 index 581ac46be..000000000 --- a/antd-tools/generator-types/src/formatter.ts +++ /dev/null @@ -1,128 +0,0 @@ -import type { Articals } from './parser'; -import { formatType, removeVersion, toKebabCase } from './utils'; -import type { VueTag } from './type'; - -function getComponentName(name: string, tagPrefix: string) { - if (name) { - return tagPrefix + toKebabCase(name.split(' ')[0]); - } - return ''; -} - -function parserProps(tag: VueTag, line: any) { - const [name, desc, type, defaultVal] = line; - if ( - type && - (type.includes('v-slot') || - type.includes('slot') || - type.includes('slots') || - type.includes('slot-scoped')) - ) { - tag.slots!.push({ - name: removeVersion(name), - description: desc, - }); - } - tag.attributes!.push({ - name: removeVersion(name), - default: defaultVal, - description: desc, - value: { - type: formatType(type || ''), - kind: 'expression', - }, - }); -} - -export function formatter( - articals: Articals, - componentName: string, - kebabComponentName: string, - tagPrefix = '', -) { - if (!articals.length) { - return; - } - - const tags: VueTag[] = []; - const tag: VueTag = { - name: kebabComponentName, - slots: [], - events: [], - attributes: [], - }; - tags.push(tag); - - const tables = articals.filter(artical => artical.type === 'table'); - - tables.forEach(item => { - const { table } = item; - const prevIndex = articals.indexOf(item) - 1; - const prevArtical = articals[prevIndex]; - - if (!prevArtical || !prevArtical.content || !table || !table.body) { - return; - } - - const tableTitle = prevArtical.content; - - if (tableTitle.includes('API')) { - table.body.forEach(line => { - parserProps(tag, line); - }); - return; - } - - if (tableTitle.includes('events') && !tableTitle.includes(componentName)) { - table.body.forEach(line => { - const [name, desc] = line; - tag.events!.push({ - name: removeVersion(name), - description: desc, - }); - }); - return; - } - - // 额外的子组件 - if ( - tableTitle.includes(componentName) && - !tableTitle.includes('events') && - !tableTitle.includes('()') - ) { - const childTag: VueTag = { - name: getComponentName(tableTitle.replace(/\.|\//g, ''), tagPrefix), - slots: [], - events: [], - attributes: [], - }; - table.body.forEach(line => { - parserProps(childTag, line); - }); - tags.push(childTag); - return; - } - - // 额外的子组件事件 - if (tableTitle.includes(componentName) && tableTitle.includes('events')) { - const childTagName = getComponentName( - tableTitle.replace('.', '').replace('events', ''), - tagPrefix, - ); - const childTag: VueTag | undefined = tags.find(item => item.name === childTagName.trim()); - if (!childTag) { - return; - } - table.body.forEach(line => { - const [name, desc] = line; - childTag.events!.push({ - name: removeVersion(name), - description: desc, - }); - }); - return; - } - }); - - return tags; -} diff --git a/antd-tools/generator-types/src/index.ts b/antd-tools/generator-types/src/index.ts deleted file mode 100644 index aad960d39..000000000 --- a/antd-tools/generator-types/src/index.ts +++ /dev/null @@ -1,84 +0,0 @@ -import glob from 'fast-glob'; -import { dirname, join } from 'path'; -import { mdParser } from './parser'; -import { formatter } from './formatter'; -import { genWebTypes } from './web-types'; -import { outputFileSync, readFileSync } from 'fs-extra'; -import type { Options, VueTag } from './type'; -import { getComponentName, normalizePath, toKebabCase } from './utils'; -import { flatMap } from 'lodash'; - -async function readMarkdown(options: Options): Promise> { - const mdPaths = await glob(normalizePath(`${options.path}/**/*.md`)); - const data = mdPaths - .filter(md => options.test.test(md)) - .map(path => { - const docPath = dirname(path); - const kebabComponentName = - options.tagPrefix + docPath.substring(docPath.lastIndexOf('/') + 1) || ''; - const componentName = getComponentName(docPath.substring(docPath.lastIndexOf('/') + 1) || ''); - const fileContent = readFileSync(path, 'utf-8'); - return formatter(mdParser(fileContent), componentName, kebabComponentName, options.tagPrefix); - }) - .filter(item => item) as VueTag[][]; - const tags = new Map(); - flatMap(data, item => item).forEach(mergedTag => mergeTag(tags, mergedTag)); - return tags; -} - -function readTypings(options: Options): Map { - const tags = new Map(); - const fileContent = readFileSync(options.typingsPath, 'utf-8'); - fileContent - .split('\n') - .filter(line => line && line.includes('typeof')) - .map(line => { - const l = line.trim(); - return toKebabCase(l.substring(0, l.indexOf(':'))); - }) - .forEach(tagName => - tags.set(tagName, { - name: tagName, - slots: [], - events: [], - attributes: [], - }), - ); - return tags; -} - -function mergeTag(tags: Map, mergedTag: VueTag) { - const tagName = mergedTag.name; - const vueTag = tags.get(tagName); - if (vueTag) { - vueTag.slots = [...vueTag.slots, ...mergedTag.slots]; - vueTag.events = [...vueTag.events, ...mergedTag.events]; - vueTag.attributes = [...vueTag.attributes, ...mergedTag.attributes]; - } else { - tags.set(tagName, mergedTag); - } -} - -function mergeTags(mergedTagsArr: Map[]): VueTag[] { - if (mergedTagsArr.length === 1) return [...mergedTagsArr[0].values()]; - const tags = new Map(); - if (mergedTagsArr.length === 0) return []; - mergedTagsArr.forEach(mergedTags => { - mergedTags.forEach(mergedTag => mergeTag(tags, mergedTag)); - }); - return [...tags.values()]; -} - -export async function parseAndWrite(options: Options): Promise { - if (!options.outputDir) { - throw new Error('outputDir can not be empty.'); - } - const tagsFromMarkdown = await readMarkdown(options); - const tagsFromTypings = await readTypings(options); - const tags = mergeTags([tagsFromMarkdown, tagsFromTypings]); - const webTypes = genWebTypes(tags, options); - outputFileSync(join(options.outputDir, 'web-types.json'), JSON.stringify(webTypes, null, 2)); - return tags.length; -} - -export default { parseAndWrite }; diff --git a/antd-tools/generator-types/src/parser.ts b/antd-tools/generator-types/src/parser.ts deleted file mode 100644 index bdcafb3d5..000000000 --- a/antd-tools/generator-types/src/parser.ts +++ /dev/null @@ -1,107 +0,0 @@ -/* eslint-disable no-cond-assign */ -const TITLE_REG = /^(#+)\s+([^\n]*)/; -const TABLE_REG = /^\|.+\r?\n\|\s*-+/; -const TD_REG = /\s*`[^`]+`\s*|([^|`]+)/g; -const TABLE_SPLIT_LINE_REG = /^\|\s*-/; - -type TableContent = { - head: string[]; - body: string[][]; -}; - -export type Artical = { - type: string; - content?: string; - table?: TableContent; - level?: number; -}; - -export type Articals = Artical[]; - -function readLine(input: string) { - const end = input.indexOf('\n'); - - return input.substring(0, end !== -1 ? end : input.length); -} - -function splitTableLine(line: string) { - line = line.replace(/\\\|/g, 'JOIN'); - - const items = line.split('|').map(item => item.trim().replace(/JOIN/g, '|')); - - // remove pipe character on both sides - items.pop(); - items.shift(); - - return items; -} - -function tableParse(input: string) { - let start = 0; - let isHead = true; - - const end = input.length; - const table: TableContent = { - head: [], - body: [], - }; - - while (start < end) { - const target = input.substring(start); - const line = readLine(target); - - if (!/^\|/.test(target)) { - break; - } - - if (TABLE_SPLIT_LINE_REG.test(target)) { - isHead = false; - } else if (!isHead && line.includes('|')) { - const matched = line.trim().match(TD_REG); - - if (matched) { - table.body.push(splitTableLine(line)); - } - } - - start += line.length + 1; - } - - return { - table, - usedLength: start, - }; -} - -export function mdParser(input: string): Articals { - const artical = []; - let start = 0; - const end = input.length; - - while (start < end) { - const target = input.substring(start); - - let match; - if ((match = TITLE_REG.exec(target))) { - artical.push({ - type: 'title', - content: match[2].replace('\r', ''), - level: match[1].length, - }); - - start += match.index + match[0].length; - } else if ((match = TABLE_REG.exec(target))) { - const { table, usedLength } = tableParse(target.substring(match.index)); - artical.push({ - type: 'table', - table, - }); - - start += match.index + usedLength; - } else { - start += readLine(target).length + 1; - } - } - - return artical; -} diff --git a/antd-tools/generator-types/src/type.ts b/antd-tools/generator-types/src/type.ts deleted file mode 100644 index 6be1c0ba5..000000000 --- a/antd-tools/generator-types/src/type.ts +++ /dev/null @@ -1,45 +0,0 @@ -import type { PathLike } from 'fs'; - -export type VueSlot = { - name: string; - description: string; -}; - -export type VueEventArgument = { - name: string; - type: string; -}; - -export type VueEvent = { - name: string; - description?: string; - arguments?: VueEventArgument[]; -}; - -export type VueAttribute = { - name: string; - default: string; - description: string; - value: { - kind: 'expression'; - type: string; - }; -}; - -export type VueTag = { - name: string; - slots: VueSlot[]; - events: VueEvent[]; - attributes: VueAttribute[]; - description?: string; -}; - -export type Options = { - name: string; - path: PathLike; - typingsPath: PathLike; - test: RegExp; - version: string; - outputDir?: string; - tagPrefix?: string; -}; diff --git a/antd-tools/generator-types/src/utils.ts b/antd-tools/generator-types/src/utils.ts deleted file mode 100644 index 50ef2ab34..000000000 --- a/antd-tools/generator-types/src/utils.ts +++ /dev/null @@ -1,30 +0,0 @@ -// myName -> my-name -export function toKebabCase(camel: string): string { - return camel.replace(/((?<=[a-z\d])[A-Z]|(?<=[A-Z\d])[A-Z](?=[a-z]))/g, '-$1').toLowerCase(); -} - -// name `v2.0.0` -> name -export function removeVersion(str: string) { - return str.replace(/`(\w|\.)+`/g, '').trim(); -} - -// *boolean* -> boolean -// _boolean_ -> boolean -export function formatType(type: string) { - return type - .replace(/(^(\*|_))|((\*|_)$)/g, '') - .replace('\\', '') - .replace('\\', ''); -} - -export function getComponentName(name: string) { - const title = name - .split('-') - .map(it => it.substring(0, 1) + it.substring(1)) - .join(''); - return title.substring(0, 1).toUpperCase() + title.substring(1); -} - -export function normalizePath(path: string): string { - return path.replace(/\\/g, '/'); -} diff --git a/antd-tools/generator-types/src/web-types.ts b/antd-tools/generator-types/src/web-types.ts deleted file mode 100644 index c2ed48d04..000000000 --- a/antd-tools/generator-types/src/web-types.ts +++ /dev/null @@ -1,18 +0,0 @@ -import type { VueTag, Options } from './type'; - -// create web-types.json to provide autocomplete in JetBrains IDEs -export function genWebTypes(tags: VueTag[], options: Options) { - return { - $schema: 'https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json', - framework: 'vue', - name: options.name, - version: options.version, - contributions: { - html: { - tags, - attributes: [], - 'types-syntax': 'typescript', - }, - }, - }; -} diff --git a/antd-tools/generator-types/tsconfig.json b/antd-tools/generator-types/tsconfig.json deleted file mode 100644 index 83790d350..000000000 --- a/antd-tools/generator-types/tsconfig.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "compilerOptions": { - "target": "ES2017", - "outDir": "./lib", - "module": "commonjs", - "strict": true, - "declaration": true, - "skipLibCheck": true, - "esModuleInterop": true, - "lib": ["esnext"] - }, - "include": ["src/**/*"] -} diff --git a/antd-tools/getBabelCommonConfig.js b/antd-tools/getBabelCommonConfig.js deleted file mode 100644 index 3232837b9..000000000 --- a/antd-tools/getBabelCommonConfig.js +++ /dev/null @@ -1,57 +0,0 @@ -const { resolve, isThereHaveBrowserslistConfig } = require('./utils/projectHelper'); - -module.exports = function (modules) { - const plugins = [ - [ - resolve('@babel/plugin-transform-typescript'), - { - isTSX: true, - }, - ], - [resolve('@vue/babel-plugin-jsx'), { mergeProps: false, enableObjectSlots: false }], - resolve('@babel/plugin-proposal-optional-chaining'), - resolve('@babel/plugin-transform-object-assign'), - resolve('@babel/plugin-proposal-object-rest-spread'), - resolve('@babel/plugin-proposal-export-default-from'), - resolve('@babel/plugin-proposal-export-namespace-from'), - resolve('@babel/plugin-proposal-class-properties'), - resolve('@babel/plugin-syntax-dynamic-import'), - [ - resolve('@babel/plugin-transform-runtime'), - { - useESModules: modules === false, - version: - require(`${process.cwd()}/package.json`).dependencies['@babel/runtime'] || '^7.10.4', - }, - ], - // resolve('babel-plugin-inline-import-data-uri'), - // resolve('@babel/plugin-transform-member-expression-literals'), - // resolve('@babel/plugin-transform-property-literals'), - // resolve('@babel/plugin-proposal-export-default-from'), - // resolve('@babel/plugin-transform-object-assign'), - // resolve('@babel/plugin-transform-template-literals'), - // resolve('@babel/plugin-proposal-object-rest-spread'), - // resolve('@babel/plugin-proposal-class-properties'), - ]; - return { - presets: [ - [ - resolve('@babel/preset-env'), - { - modules, - targets: isThereHaveBrowserslistConfig() - ? undefined - : { - browsers: ['last 2 versions', 'Firefox ESR', '> 1%', 'ie >= 11'], - }, - }, - ], - ], - plugins, - env: { - test: { - plugins: [resolve('babel-plugin-istanbul')], - }, - }, - }; -}; diff --git a/antd-tools/getNpm.js b/antd-tools/getNpm.js deleted file mode 100644 index 52eee5011..000000000 --- a/antd-tools/getNpm.js +++ /dev/null @@ -1,17 +0,0 @@ -'use strict'; - -const runCmd = require('./runCmd'); - -module.exports = function (done) { - if (process.env.NPM_CLI) { - done(process.env.NPM_CLI); - return; - } - runCmd('which', ['tnpm'], code => { - let npm = 'npm'; - if (!code) { - npm = 'tnpm'; - } - done(npm); - }); -}; diff --git a/antd-tools/getTSCommonConfig.js b/antd-tools/getTSCommonConfig.js deleted file mode 100644 index fd2a33ff6..000000000 --- a/antd-tools/getTSCommonConfig.js +++ /dev/null @@ -1,24 +0,0 @@ -'use strict'; - -const fs = require('fs'); -const { getProjectPath } = require('./utils/projectHelper'); - -module.exports = function () { - let my = {}; - if (fs.existsSync(getProjectPath('tsconfig.json'))) { - my = require(getProjectPath('tsconfig.json')); - } - return Object.assign( - { - noUnusedParameters: true, - noUnusedLocals: true, - strictNullChecks: true, - target: 'es6', - jsx: 'preserve', - moduleResolution: 'node', - declaration: true, - allowSyntheticDefaultImports: true, - }, - my.compilerOptions, - ); -}; diff --git a/antd-tools/getWebpackConfig.js b/antd-tools/getWebpackConfig.js deleted file mode 100644 index a45bb011f..000000000 --- a/antd-tools/getWebpackConfig.js +++ /dev/null @@ -1,273 +0,0 @@ -const { getProjectPath, resolve } = require('./utils/projectHelper'); -const path = require('path'); -const webpack = require('webpack'); -const WebpackBar = require('webpackbar'); -const { merge } = require('webpack-merge'); -const TerserPlugin = require('terser-webpack-plugin'); -const MiniCssExtractPlugin = require('mini-css-extract-plugin'); -const CssMinimizerPlugin = require('css-minimizer-webpack-plugin'); -const CaseSensitivePathsPlugin = require('case-sensitive-paths-webpack-plugin'); -const CleanUpStatsPlugin = require('./utils/CleanUpStatsPlugin'); -// const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin; - -const distFileBaseName = 'antd'; - -const svgRegex = /\.svg(\?v=\d+\.\d+\.\d+)?$/; -const svgOptions = { - limit: 10000, - minetype: 'image/svg+xml', -}; - -const imageOptions = { - limit: 10000, -}; - -function getWebpackConfig(modules, esm = false) { - const pkg = require(getProjectPath('package.json')); - const babelConfig = require('./getBabelCommonConfig')(modules || false); - - const pluginImportOptions = { - style: true, - libraryName: distFileBaseName, - libraryDirectory: 'components', - }; - babelConfig.plugins.push([resolve('babel-plugin-import'), pluginImportOptions]); - - if (modules === false) { - babelConfig.plugins.push(require.resolve('./replaceLib')); - } - - /** @type {import('webpack').Configuration} */ - const config = { - devtool: 'source-map', - - output: { - path: getProjectPath('./dist/'), - filename: '[name].js', - }, - - resolve: { - modules: ['node_modules', path.join(__dirname, '../node_modules')], - extensions: [ - '.web.tsx', - '.web.ts', - '.web.jsx', - '.web.js', - '.ts', - '.tsx', - '.js', - '.jsx', - '.vue', - '.md', - '.json', - ], - alias: { - '@': process.cwd(), - }, - fallback: [ - 'child_process', - 'cluster', - 'dgram', - 'dns', - 'fs', - 'module', - 'net', - 'readline', - 'repl', - 'tls', - ].reduce((acc, name) => Object.assign({}, acc, { [name]: 'empty' }), {}), - }, - - module: { - rules: [ - { - test: /\.vue$/, - exclude: /node_modules/, - use: [ - { - loader: 'vue-loader', - options: { - loaders: { - js: [ - { - loader: 'babel-loader', - options: { - presets: [resolve('@babel/preset-env')], - plugins: [ - [ - resolve('@vue/babel-plugin-jsx'), - { mergeProps: false, enableObjectSlots: false }, - ], - resolve('@babel/plugin-proposal-object-rest-spread'), - ], - }, - }, - ], - }, - }, - }, - ], - }, - { - test: /\.(js|jsx)$/, - loader: 'babel-loader', - exclude: /node_modules/, - options: babelConfig, - }, - { - test: /\.tsx?$/, - use: [ - { - loader: 'babel-loader', - options: babelConfig, - }, - { - loader: 'ts-loader', - options: { - transpileOnly: true, - }, - }, - ], - }, - { - test: /\.css$/, - use: [ - MiniCssExtractPlugin.loader, - { - loader: 'css-loader', - options: { - sourceMap: true, - }, - }, - { - loader: 'postcss-loader', - options: { - postcssOptions: { - plugins: ['autoprefixer'], - }, - sourceMap: true, - }, - }, - ], - }, - // Images - { - test: svgRegex, - loader: 'url-loader', - options: svgOptions, - }, - { - test: /\.(png|jpg|jpeg|gif)(\?v=\d+\.\d+\.\d+)?$/i, - loader: 'url-loader', - options: imageOptions, - }, - ], - }, - - plugins: [ - // new BundleAnalyzerPlugin(), - new CaseSensitivePathsPlugin(), - new webpack.BannerPlugin(` -${pkg.name} v${pkg.version} - -Copyright 2017-present, Ant Design Vue. -All rights reserved. - `), - new WebpackBar({ - name: '🚚 Ant Design Vue Tools', - color: '#2f54eb', - }), - new CleanUpStatsPlugin(), - ], - performance: { - hints: false, - }, - }; - - if (process.env.RUN_ENV === 'PRODUCTION') { - let entry = ['./index']; - config.externals = [ - { - vue: { - root: 'Vue', - commonjs2: 'vue', - commonjs: 'vue', - amd: 'vue', - module: 'vue', - }, - }, - ]; - if (esm) { - entry = ['./index.esm']; - config.experiments = { - ...config.experiments, - outputModule: true, - }; - config.output.chunkFormat = 'module'; - config.output.library = { - type: 'module', - }; - config.target = 'es2019'; - } else { - config.output.libraryTarget = 'umd'; - config.output.library = distFileBaseName; - config.output.globalObject = 'this'; - } - - const entryName = esm ? `${distFileBaseName}.esm` : distFileBaseName; - - config.optimization = { - minimizer: [ - new TerserPlugin({ - parallel: true, - terserOptions: { - warnings: false, - }, - }), - ], - }; - // Development - const uncompressedConfig = merge({}, config, { - entry: { - [entryName]: entry, - }, - mode: 'development', - plugins: [ - new MiniCssExtractPlugin({ - filename: '[name].css', - }), - ], - }); - - // Production - const prodConfig = merge({}, config, { - entry: { - [`${entryName}.min`]: entry, - }, - mode: 'production', - plugins: [ - new webpack.LoaderOptionsPlugin({ - minimize: true, - }), - new MiniCssExtractPlugin({ - filename: '[name].css', - }), - ], - optimization: { - minimize: true, - minimizer: [new CssMinimizerPlugin({})], - }, - }); - - return [prodConfig, uncompressedConfig]; - } - - return [config]; -} - -getWebpackConfig.webpack = webpack; -getWebpackConfig.svgRegex = svgRegex; -getWebpackConfig.svgOptions = svgOptions; -getWebpackConfig.imageOptions = imageOptions; - -module.exports = getWebpackConfig; diff --git a/antd-tools/gulpfile.js b/antd-tools/gulpfile.js deleted file mode 100644 index b0353a1ee..000000000 --- a/antd-tools/gulpfile.js +++ /dev/null @@ -1,499 +0,0 @@ -/* eslint-disable no-console */ -const { getProjectPath, getConfig } = require('./utils/projectHelper'); -const runCmd = require('./runCmd'); -const getBabelCommonConfig = require('./getBabelCommonConfig'); -const merge2 = require('merge2'); -const { execSync } = require('child_process'); -const through2 = require('through2'); -const webpack = require('webpack'); -const babel = require('gulp-babel'); -const argv = require('minimist')(process.argv.slice(2)); -const { Octokit } = require('@octokit/rest'); - -// const getNpm = require('./getNpm') -// const selfPackage = require('../package.json') -const chalk = require('chalk'); -const getNpmArgs = require('./utils/get-npm-args'); -const getChangelog = require('./utils/getChangelog'); -const path = require('path'); -// const watch = require('gulp-watch') -const ts = require('gulp-typescript'); -const gulp = require('gulp'); -const fs = require('fs'); -const rimraf = require('rimraf'); -const stripCode = require('gulp-strip-code'); -const compareVersions = require('compare-versions'); -const getTSCommonConfig = require('./getTSCommonConfig'); -const replaceLib = require('./replaceLib'); -const sortApiTable = require('./sortApiTable'); -const { glob } = require('glob'); - -const packageJson = require(getProjectPath('package.json')); -const tsDefaultReporter = ts.reporter.defaultReporter(); -const cwd = process.cwd(); -const libDir = getProjectPath('lib'); -const esDir = getProjectPath('es'); -const localeDir = getProjectPath('locale'); - -const tsConfig = getTSCommonConfig(); - -// FIXME: hard code, not find typescript can modify the path resolution -const localeDts = `import type { Locale } from '../lib/locale-provider'; -declare const localeValues: Locale; -export default localeValues;`; - -function dist(done) { - rimraf.sync(path.join(cwd, 'dist')); - process.env.RUN_ENV = 'PRODUCTION'; - const webpackConfig = require(getProjectPath('webpack.build.conf.js')); - webpack(webpackConfig, (err, stats) => { - if (err) { - console.error(err.stack || err); - if (err.details) { - console.error(err.details); - } - return; - } - - const info = stats.toJson(); - const { dist: { finalize } = {}, bail } = getConfig(); - - if (stats.hasErrors()) { - (info.errors || []).forEach(error => { - console.error(error); - }); - // https://github.com/ant-design/ant-design/pull/31662 - if (bail) { - process.exit(1); - } - } - if (stats.hasWarnings()) { - console.warn(info.warnings); - } - - const buildInfo = stats.toString({ - colors: true, - children: true, - chunks: false, - modules: false, - chunkModules: false, - hash: false, - version: false, - }); - console.log(buildInfo); - // Additional process of dist finalize - if (finalize) { - console.log('[Dist] Finalization...'); - finalize(); - } - done(0); - }); -} - -const tsFiles = ['**/*.ts', '**/*.tsx', '!node_modules/**/*.*', 'typings/**/*.d.ts']; - -function compileTs(stream) { - return stream - .pipe(ts(tsConfig)) - .js.pipe( - through2.obj(function (file, encoding, next) { - // console.log(file.path, file.base); - file.path = file.path.replace(/\.[jt]sx$/, '.js'); - this.push(file); - next(); - }), - ) - .pipe(gulp.dest(process.cwd())); -} - -gulp.task('tsc', () => - compileTs( - gulp.src(tsFiles, { - base: cwd, - }), - ), -); - -gulp.task('clean', () => { - rimraf.sync(getProjectPath('_site')); - rimraf.sync(getProjectPath('_data')); -}); - -function babelify(js, modules) { - const babelConfig = getBabelCommonConfig(modules); - babelConfig.babelrc = false; - delete babelConfig.cacheDirectory; - if (modules === false) { - babelConfig.plugins.push(replaceLib); - } - const stream = js.pipe(babel(babelConfig)).pipe( - through2.obj(function z(file, encoding, next) { - this.push(file.clone()); - if (modules !== false) { - const content = file.contents.toString(encoding); - file.contents = Buffer.from( - content - .replace(/lodash-es/g, 'lodash') - .replace(/@ant-design\/icons-vue/g, '@ant-design/icons-vue/lib/icons'), - ); - this.push(file); - } - next(); - }), - ); - return stream.pipe(gulp.dest(modules === false ? esDir : libDir)); -} - -function compile(modules) { - const { compile: { transformTSFile, transformFile } = {} } = getConfig(); - rimraf.sync(modules !== false ? libDir : esDir); - - const assets = gulp - .src(['components/**/*.@(png|svg)']) - .pipe(gulp.dest(modules === false ? esDir : libDir)); - let error = 0; - - // =============================== FILE =============================== - let transformFileStream; - - if (transformFile) { - transformFileStream = gulp - .src(['components/**/*.tsx']) - .pipe( - through2.obj(function (file, encoding, next) { - let nextFile = transformFile(file) || file; - nextFile = Array.isArray(nextFile) ? nextFile : [nextFile]; - nextFile.forEach(f => this.push(f)); - next(); - }), - ) - .pipe(gulp.dest(modules === false ? esDir : libDir)); - } - - // ================================ TS ================================ - const source = [ - 'components/**/*.js', - 'components/**/*.jsx', - 'components/**/*.tsx', - 'components/**/*.ts', - 'typings/**/*.d.ts', - '!components/*/__tests__/*', - ]; - - // Strip content if needed - let sourceStream = gulp.src(source); - if (modules === false) { - sourceStream = sourceStream.pipe( - stripCode({ - start_comment: '@remove-on-es-build-begin', - end_comment: '@remove-on-es-build-end', - }), - ); - } - - if (transformTSFile) { - sourceStream = sourceStream.pipe( - through2.obj(function (file, encoding, next) { - let nextFile = transformTSFile(file) || file; - nextFile = Array.isArray(nextFile) ? nextFile : [nextFile]; - nextFile.forEach(f => this.push(f)); - next(); - }), - ); - } - - const tsResult = sourceStream.pipe( - ts(tsConfig, { - error(e) { - tsDefaultReporter.error(e); - error = 1; - }, - finish: tsDefaultReporter.finish, - }), - ); - - function check() { - if (error && !argv['ignore-error']) { - process.exit(1); - } - } - - tsResult.on('finish', check); - tsResult.on('end', check); - const tsFilesStream = babelify(tsResult.js, modules); - const tsd = tsResult.dts.pipe(gulp.dest(modules === false ? esDir : libDir)); - return merge2([tsFilesStream, tsd, assets, transformFileStream].filter(s => s)); -} - -function generateLocale() { - if (!fs.existsSync(localeDir)) { - fs.mkdirSync(localeDir); - } - - const localeFiles = glob.sync('components/locale/*.ts?(x)'); - localeFiles.forEach(item => { - const match = item.match(/components\/locale\/(.*)\.tsx?/); - if (match) { - const locale = match[1]; - fs.writeFileSync( - path.join(localeDir, `${locale}.js`), - `module.exports = require('../lib/locale/${locale}');`, - ); - fs.writeFileSync(path.join(localeDir, `${locale}.d.ts`), localeDts); - } - }); -} - -function tag() { - console.log('tagging'); - const { version } = packageJson; - execSync(`git config --global user.email ${process.env.GITHUB_USER_EMAIL}`); - execSync(`git config --global user.name ${process.env.GITHUB_USER_NAME}`); - execSync(`git tag ${version}`); - execSync( - `git push https://${process.env.GITHUB_TOKEN}@github.com/vueComponent/ant-design-vue.git ${version}:${version}`, - ); - execSync( - `git push https://${process.env.GITHUB_TOKEN}@github.com/vueComponent/ant-design-vue.git master:master`, - ); - console.log('tagged'); -} - -function githubRelease(done) { - const changlogFiles = [ - path.join(cwd, 'CHANGELOG.en-US.md'), - path.join(cwd, 'CHANGELOG.zh-CN.md'), - ]; - console.log('creating release on GitHub'); - if (!process.env.GITHUB_TOKEN) { - console.log('no GitHub token found, skip'); - return; - } - if (!changlogFiles.every(file => fs.existsSync(file))) { - console.log('no changelog found, skip'); - return; - } - const github = new Octokit({ - auth: process.env.GITHUB_TOKEN, - }); - const date = new Date(); - const { version } = packageJson; - const enChangelog = getChangelog(changlogFiles[0], version); - const cnChangelog = getChangelog(changlogFiles[1], version); - const changelog = [ - `\`${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}\``, - enChangelog, - '\n', - '---', - '\n', - cnChangelog, - ].join('\n'); - const [_, owner, repo] = execSync('git remote get-url origin') // eslint-disable-line - .toString() - .match(/github.com[:/](.+)\/(.+)\.git/); - github.repos - .createRelease({ - owner, - repo, - tag_name: version, - name: version, - body: changelog, - }) - .then(() => { - done(); - }) - .catch(err => { - console.log(err); - }); -} - -gulp.task( - 'tag', - gulp.series(done => { - tag(); - githubRelease(done); - }), -); - -gulp.task( - 'check-git', - gulp.series(done => { - runCmd('git', ['status', '--porcelain'], (code, result) => { - if (/^\?\?/m.test(result)) { - return done(`There are untracked files in the working tree.\n${result} - `); - } - if (/^([ADRM]| [ADRM])/m.test(result)) { - return done(`There are uncommitted changes in the working tree.\n${result} - `); - } - return done(); - }); - }), -); - -function publish(tagString, done) { - let args = ['publish', '--with-antd-tools']; - if (tagString) { - args = args.concat(['--tag', tagString]); - } - const publishNpm = process.env.PUBLISH_NPM_CLI || 'npm'; - runCmd(publishNpm, args, code => { - tag(); - githubRelease(() => { - done(code); - }); - }); -} - -function pub(done) { - const notOk = !packageJson.version.match(/^\d+\.\d+\.\d+$/); - let tagString; - if (argv['npm-tag']) { - tagString = argv['npm-tag']; - } - if (!tagString && notOk) { - tagString = 'next'; - } - if (packageJson.scripts['pre-publish']) { - runCmd('npm', ['run', 'pre-publish'], code2 => { - if (code2) { - done(code2); - return; - } - publish(tagString, done); - }); - } else { - publish(tagString, done); - } -} - -const startTime = new Date(); -gulp.task('compile-with-es', done => { - console.log('start compile at ', startTime); - console.log('[Parallel] Compile to es...'); - compile(false).on('finish', done); -}); - -gulp.task('compile-with-lib', done => { - console.log('[Parallel] Compile to js...'); - compile().on('finish', () => { - generateLocale(); - done(); - }); -}); - -gulp.task('compile-finalize', done => { - // Additional process of compile finalize - const { compile: { finalize } = {} } = getConfig(); - if (finalize) { - console.log('[Compile] Finalization...'); - finalize(); - } - done(); -}); - -gulp.task( - 'compile', - gulp.series(gulp.parallel('compile-with-es', 'compile-with-lib'), 'compile-finalize', done => { - console.log('end compile at ', new Date()); - console.log('compile time ', (new Date() - startTime) / 1000, 's'); - done(); - }), -); - -gulp.task( - 'dist', - gulp.series(done => { - dist(done); - }), -); - -gulp.task( - 'pub', - gulp.series('check-git', 'compile', 'dist', done => { - // if (!process.env.GITHUB_TOKEN) { - // console.log('no GitHub token found, skip'); - // } else { - // pub(done); - // } - pub(done); - }), -); - -gulp.task( - 'pub-with-ci', - gulp.series(done => { - if (!process.env.NPM_TOKEN) { - console.log('no NPM token found, skip'); - } else { - const github = new Octokit({ - auth: process.env.GITHUB_TOKEN, - }); - const [_, owner, repo] = execSync('git remote get-url origin') // eslint-disable-line - .toString() - .match(/github.com[:/](.+)\/(.+)\.git/); - const getLatestRelease = github.repos.getLatestRelease({ - owner, - repo, - }); - const listCommits = github.repos.listCommits({ - owner, - repo, - per_page: 1, - }); - Promise.all([getLatestRelease, listCommits]).then(([latestRelease, commits]) => { - const preVersion = latestRelease.data.tag_name; - const { version } = packageJson; - const [_, newVersion] = commits.data[0].commit.message.trim().match(/bump (.+)/) || []; // eslint-disable-line - if ( - compareVersions(version, preVersion) === 1 && - newVersion && - newVersion.trim() === version - ) { - // eslint-disable-next-line no-unused-vars - runCmd('npm', ['run', 'pub'], _code => { - done(); - }); - } else { - console.log('donot need publish' + version); - } - }); - } - }), -); - -gulp.task( - 'guard', - gulp.series(done => { - function reportError() { - console.log(chalk.bgRed('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!')); - console.log(chalk.bgRed('!! `npm publish` is forbidden for this package. !!')); - console.log(chalk.bgRed('!! Use `npm run pub` instead. !!')); - console.log(chalk.bgRed('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!')); - } - const npmArgs = getNpmArgs(); - if (npmArgs) { - for (let arg = npmArgs.shift(); arg; arg = npmArgs.shift()) { - if ( - /^pu(b(l(i(sh?)?)?)?)?$/.test(arg) && - npmArgs.indexOf('--with-antd-tools') < 0 && - !process.env.npm_config_with_antd_tools - ) { - reportError(); - done(1); - return; - } - } - } - done(); - }), -); - -gulp.task( - 'sort-api-table', - gulp.series(done => { - sortApiTable(); - done(); - }), -); diff --git a/antd-tools/replaceLib.js b/antd-tools/replaceLib.js deleted file mode 100644 index e9da6e86c..000000000 --- a/antd-tools/replaceLib.js +++ /dev/null @@ -1,39 +0,0 @@ -'use strict'; - -const { dirname } = require('path'); -const fs = require('fs'); -const { getProjectPath } = require('./utils/projectHelper'); - -function replacePath(path) { - if (path.node.source && /\/lib\//.test(path.node.source.value)) { - const esModule = path.node.source.value.replace('/lib/', '/es/'); - const esPath = dirname(getProjectPath('node_modules', esModule)); - if (fs.existsSync(esPath)) { - path.node.source.value = esModule; - } - } - - // @ant-design/icons-vue/xxx => @ant-design/icons-vue/es/icons/xxx - const antdIconMatcher = /@ant-design\/icons-vue\/([^/]*)$/; - if (path.node.source && antdIconMatcher.test(path.node.source.value)) { - const esModule = path.node.source.value.replace( - antdIconMatcher, - (_, iconName) => `@ant-design/icons-vue/es/icons/${iconName}`, - ); - const esPath = dirname(getProjectPath('node_modules', esModule)); - if (fs.existsSync(esPath)) { - path.node.source.value = esModule; - } - } -} - -function replaceLib() { - return { - visitor: { - ImportDeclaration: replacePath, - ExportNamedDeclaration: replacePath, - }, - }; -} - -module.exports = replaceLib; diff --git a/antd-tools/runCmd.js b/antd-tools/runCmd.js deleted file mode 100644 index b25ca5711..000000000 --- a/antd-tools/runCmd.js +++ /dev/null @@ -1,28 +0,0 @@ -'use strict'; - -const isWindows = require('is-windows'); -const getRunCmdEnv = require('./utils/getRunCmdEnv'); - -function runCmd(cmd, _args, fn) { - const args = _args || []; - - if (isWindows()) { - args.unshift(cmd); - args.unshift('/c'); - cmd = process.env.ComSpec; - } - - const runner = require('child_process').spawn(cmd, args, { - // keep color - stdio: 'inherit', - env: getRunCmdEnv(), - }); - - runner.on('close', code => { - if (fn) { - fn(code); - } - }); -} - -module.exports = runCmd; diff --git a/antd-tools/sortApiTable.js b/antd-tools/sortApiTable.js deleted file mode 100644 index 56a2bd21b..000000000 --- a/antd-tools/sortApiTable.js +++ /dev/null @@ -1,165 +0,0 @@ -const program = require('commander'); -const majo = require('majo'); -const fs = require('fs'); -const path = require('path'); -const chalk = require('chalk'); - -const unified = require('unified'); -const parse = require('remark-parse'); -const stringify = require('remark-stringify'); - -const yamlConfig = require('remark-yaml-config'); -const frontmatter = require('remark-frontmatter'); - -let fileAPIs = {}; -const remarkWithYaml = unified() - .use(parse) - .use(stringify, { - paddedTable: false, - listItemIndent: 1, - stringLength: () => 3, - }) - .use(frontmatter) - .use(yamlConfig); - -const stream = majo.majo(); - -function getCellValue(node) { - return node.children[0].children[0].value; -} - -// from small to large -const sizeBreakPoints = ['xs', 'sm', 'md', 'lg', 'xl', 'xxl']; - -const whiteMethodList = ['afterChange', 'beforeChange']; - -const groups = { - isDynamic: val => /^on[A-Z]/.test(val) || whiteMethodList.indexOf(val) > -1, - isSize: val => sizeBreakPoints.indexOf(val) > -1, -}; - -function asciiSort(prev, next) { - if (prev > next) { - return 1; - } - - if (prev < next) { - return -1; - } - - return 0; -} - -// follow the alphabet order -function alphabetSort(nodes) { - // use toLowerCase to keep `case insensitive` - return nodes.sort((...comparison) => - asciiSort(...comparison.map(val => getCellValue(val).toLowerCase())), - ); -} - -function sizeSort(nodes) { - return nodes.sort((...comparison) => - asciiSort(...comparison.map(val => sizeBreakPoints.indexOf(getCellValue(val).toLowerCase()))), - ); -} - -function sort(ast, filename) { - const nameMatch = filename.match(/^components\/([^/]*)\//); - const componentName = nameMatch[1]; - fileAPIs[componentName] = fileAPIs[componentName] || { - static: new Set(), - size: new Set(), - dynamic: new Set(), - }; - - ast.children.forEach(child => { - const staticProps = []; - // prefix with `on` - const dynamicProps = []; - // one of ['xs', 'sm', 'md', 'lg', 'xl'] - const sizeProps = []; - - // find table markdown type - if (child.type === 'table') { - // slice will create new array, so sort can affect the original array. - // slice(1) cut down the thead - child.children.slice(1).forEach(node => { - const value = getCellValue(node); - if (groups.isDynamic(value)) { - dynamicProps.push(node); - fileAPIs[componentName].dynamic.add(value); - } else if (groups.isSize(value)) { - sizeProps.push(node); - fileAPIs[componentName].size.add(value); - } else { - staticProps.push(node); - fileAPIs[componentName].static.add(value); - } - }); - - // eslint-disable-next-line - child.children = [ - child.children[0], - ...alphabetSort(staticProps), - ...sizeSort(sizeProps), - ...alphabetSort(dynamicProps), - ]; - } - }); - - return ast; -} - -function sortAPI(md, filename) { - return remarkWithYaml.stringify(sort(remarkWithYaml.parse(md), filename)); -} - -function sortMiddleware(ctx) { - Object.keys(ctx.files).forEach(filename => { - const content = ctx.fileContents(filename); - ctx.writeContents(filename, sortAPI(content, filename)); - }); -} - -module.exports = () => { - fileAPIs = {}; - - program - .version('0.1.0') - .option( - '-f, --file [file]', - 'Specify which file to be transformed', - // default value - 'components/**/index.+(zh-CN|en-US).md', - ) - .option('-o, --output [output]', 'Specify component api output path', '~component-api.json') - .parse(process.argv); - // Get the markdown file all need to be transformed - - /* eslint-disable no-console */ - stream - .source(program.file) - .use(sortMiddleware) - .dest('.') - .then(() => { - if (program.output) { - const data = {}; - Object.keys(fileAPIs).forEach(componentName => { - data[componentName] = { - static: [...fileAPIs[componentName].static], - size: [...fileAPIs[componentName].size], - dynamic: [...fileAPIs[componentName].dynamic], - }; - }); - - const reportPath = path.resolve(program.output); - fs.writeFileSync(reportPath, JSON.stringify(data, null, 2), 'utf8'); - console.log(chalk.cyan(`API list file: ${reportPath}`)); - } - }) - .then(() => { - console.log(chalk.green(`sort ant-design-vue api successfully!`)); - }); - /* eslint-enable no-console */ -}; diff --git a/antd-tools/utils/CleanUpStatsPlugin.js b/antd-tools/utils/CleanUpStatsPlugin.js deleted file mode 100644 index 300168c4f..000000000 --- a/antd-tools/utils/CleanUpStatsPlugin.js +++ /dev/null @@ -1,38 +0,0 @@ -// We should use `stats` props of webpack. But it not work in v4. -class CleanUpStatsPlugin { - constructor(option) { - this.option = { - MiniCSSExtractPlugin: true, - tsLoader: true, - ...option, - }; - } - - shouldPickStatChild(child) { - const { MiniCSSExtractPlugin } = this.option; - if (MiniCSSExtractPlugin && child.name.includes('mini-css-extract-plugin')) return false; - return true; - } - - shouldPickWarning(message) { - const { tsLoader } = this.option; - if (tsLoader && /export .* was not found in .*/.test(message)) { - return false; - } - return true; - } - - apply(compiler) { - compiler.hooks.done.tap('CleanUpStatsPlugin', stats => { - const { children, warnings } = stats.compilation; - if (Array.isArray(children)) { - stats.compilation.children = children.filter(child => this.shouldPickStatChild(child)); - } - if (Array.isArray(warnings)) { - stats.compilation.warnings = warnings.filter(message => this.shouldPickWarning(message)); - } - }); - } -} - -module.exports = CleanUpStatsPlugin; diff --git a/antd-tools/utils/get-npm-args.js b/antd-tools/utils/get-npm-args.js deleted file mode 100644 index 2e11613cc..000000000 --- a/antd-tools/utils/get-npm-args.js +++ /dev/null @@ -1,23 +0,0 @@ -'use strict'; - -// NOTE: the following code was partially adopted from https://github.com/iarna/in-publish -module.exports = function getNpmArgs() { - // https://github.com/iarna/in-publish/pull/14 - if (process.env.npm_command) { - return [process.env.npm_command]; - } - - let npmArgv = null; - - try { - npmArgv = JSON.parse(process.env.npm_config_argv); - } catch (err) { - return null; - } - - if (typeof npmArgv !== 'object' || !npmArgv.cooked || !Array.isArray(npmArgv.cooked)) { - return null; - } - - return npmArgv.cooked; -}; diff --git a/antd-tools/utils/getChangelog.js b/antd-tools/utils/getChangelog.js deleted file mode 100644 index b22396784..000000000 --- a/antd-tools/utils/getChangelog.js +++ /dev/null @@ -1,23 +0,0 @@ -const fs = require('fs'); - -module.exports = function getChangelog(file, version) { - const lines = fs.readFileSync(file).toString().split('\n'); - const changeLog = []; - const startPattern = new RegExp(`^## ${version}`); - const stopPattern = /^## /; // 前一个版本 - const skipPattern = /^`/; // 日期 - let begin = false; - for (let i = 0; i < lines.length; i += 1) { - const line = lines[i]; - if (begin && stopPattern.test(line)) { - break; - } - if (begin && line && !skipPattern.test(line)) { - changeLog.push(line); - } - if (!begin) { - begin = startPattern.test(line); - } - } - return changeLog.join('\n'); -}; diff --git a/antd-tools/utils/getRunCmdEnv.js b/antd-tools/utils/getRunCmdEnv.js deleted file mode 100644 index 12e326050..000000000 --- a/antd-tools/utils/getRunCmdEnv.js +++ /dev/null @@ -1,23 +0,0 @@ -'use strict'; - -const path = require('path'); -const isWindows = require('is-windows'); - -module.exports = function getRunCmdEnv() { - const env = {}; - Object.keys(process.env).forEach(key => { - env[key] = process.env[key]; - }); - // make sure `antd-tools/node_modules/.bin` in the PATH env - const nodeModulesBinDir = path.join(__dirname, '../../node_modules/.bin'); - - Object.entries(env) - .filter(v => v.slice(0, 1).pop().toLowerCase() === 'path') - .forEach(v => { - const key = v.slice(0, 1).pop(); - env[key] = env[key] - ? `${nodeModulesBinDir}${isWindows() ? ';' : ':'}${env[key]}` - : nodeModulesBinDir; - }); - return env; -}; diff --git a/antd-tools/utils/projectHelper.js b/antd-tools/utils/projectHelper.js deleted file mode 100644 index 9ade6c777..000000000 --- a/antd-tools/utils/projectHelper.js +++ /dev/null @@ -1,80 +0,0 @@ -const fs = require('fs'); -const path = require('path'); - -const cwd = process.cwd(); - -function getProjectPath(...filePath) { - return path.join(cwd, ...filePath); -} - -function resolve(moduleName) { - return require.resolve(moduleName); -} - -// We need hack the require to ensure use package module first -// For example, `typescript` is required by `gulp-typescript` but provided by `antd` -// we do not need for ant-design-vue -let injected = false; -function injectRequire() { - if (injected) return; - - const Module = require('module'); - - const oriRequire = Module.prototype.require; - Module.prototype.require = function (...args) { - const moduleName = args[0]; - try { - return oriRequire.apply(this, args); - } catch (err) { - const newArgs = [...args]; - if (moduleName[0] !== '/') { - newArgs[0] = getProjectPath('node_modules', moduleName); - } - return oriRequire.apply(this, newArgs); - } - }; - - injected = true; -} - -function getConfig() { - const configPath = getProjectPath('.antd-tools.config.js'); - if (fs.existsSync(configPath)) { - return require(configPath); - } - - return {}; -} - -/** - * 是否存在可用的browserslist config - * https://github.com/browserslist/browserslist#queries - * @returns - */ -function isThereHaveBrowserslistConfig() { - try { - const packageJson = require(getProjectPath('package.json')); - if (packageJson.browserslist) { - return true; - } - } catch (e) { - // - } - if (fs.existsSync(getProjectPath('.browserslistrc'))) { - return true; - } - if (fs.existsSync(getProjectPath('browserslist'))) { - return true; - } - // parent项目的配置支持,需要再补充 - // ROWSERSLIST ROWSERSLIST_ENV 变量的形式,需要再补充。 - return false; -} - -module.exports = { - getProjectPath, - resolve, - injectRequire, - getConfig, - isThereHaveBrowserslistConfig, -}; diff --git a/logo.png b/apps/playground/assets/logo.png similarity index 100% rename from logo.png rename to apps/playground/assets/logo.png diff --git a/apps/playground/package.json b/apps/playground/package.json index cb2a4ca9d..4dba3629d 100644 --- a/apps/playground/package.json +++ b/apps/playground/package.json @@ -13,7 +13,7 @@ "dependencies": { "@floating-ui/vue": "^1.1.5", "@heroicons/vue": "^2.1.5", - "@ant-design-vue/ui": "*", + "@ant-design-vue/ui": "workspace:*", "@simonwep/pickr": "^1.9.1", "@trpc/client": "^11.0.0", "@trpc/server": "^11.0.0", @@ -25,11 +25,11 @@ "vue-router": "^4.4.0" }, "devDependencies": { - "@ant-design-vue/eslint-config": "*", - "@ant-design-vue/prettier-config": "*", - "@ant-design-vue/typescript-config": "*", - "@ant-design-vue/vite-config": "*", - "@ant-design-vue/tailwind-config": "*", + "@ant-design-vue/eslint-config": "workspace:*", + "@ant-design-vue/prettier-config": "workspace:*", + "@ant-design-vue/typescript-config": "workspace:*", + "@ant-design-vue/vite-config": "workspace:*", + "@ant-design-vue/tailwind-config": "workspace:*", "@tailwindcss/vite": "^4.1.3", "@types/cookies": "^0.9.0", "@types/node": "^20.0.0", diff --git a/components/__tests__/util/domHook.js b/components/__tests__/util/domHook.js deleted file mode 100644 index dddc3ffc2..000000000 --- a/components/__tests__/util/domHook.js +++ /dev/null @@ -1,58 +0,0 @@ -const __NULL__ = { notExist: true }; - -export function spyElementPrototypes(Element, properties) { - const propNames = Object.keys(properties); - const originDescriptors = {}; - - propNames.forEach(propName => { - const originDescriptor = Object.getOwnPropertyDescriptor(Element.prototype, propName); - originDescriptors[propName] = originDescriptor || __NULL__; - - const spyProp = properties[propName]; - - if (typeof spyProp === 'function') { - // If is a function - Element.prototype[propName] = function spyFunc(...args) { - return spyProp.call(this, originDescriptor, ...args); - }; - } else { - // Otherwise tread as a property - Object.defineProperty(Element.prototype, propName, { - ...spyProp, - set(value) { - if (spyProp.set) { - return spyProp.set.call(this, originDescriptor, value); - } - return originDescriptor.set(value); - }, - get() { - if (spyProp.get) { - return spyProp.get.call(this, originDescriptor); - } - return originDescriptor.get(); - }, - }); - } - }); - - return { - mockRestore() { - propNames.forEach(propName => { - const originDescriptor = originDescriptors[propName]; - if (originDescriptor === __NULL__) { - delete Element.prototype[propName]; - } else if (typeof originDescriptor === 'function') { - Element.prototype[propName] = originDescriptor; - } else { - Object.defineProperty(Element.prototype, propName, originDescriptor); - } - }); - }, - }; -} - -export function spyElementPrototype(Element, propName, property) { - return spyElementPrototypes(Element, { - [propName]: property, - }); -} diff --git a/components/_util/ActionButton.tsx b/components/_util/ActionButton.tsx deleted file mode 100644 index 0958d2404..000000000 --- a/components/_util/ActionButton.tsx +++ /dev/null @@ -1,123 +0,0 @@ -import type { ExtractPropTypes, PropType } from 'vue'; -import { shallowRef, onMounted, defineComponent, onBeforeUnmount } from 'vue'; -import Button from '../button'; -import type { ButtonProps } from '../button'; -import type { LegacyButtonType } from '../button/buttonTypes'; -import { convertLegacyProps } from '../button/buttonTypes'; -import useDestroyed from './hooks/useDestroyed'; -import { objectType } from './type'; -import { findDOMNode } from './props-util'; - -const actionButtonProps = { - type: { - type: String as PropType, - }, - actionFn: Function as PropType<(...args: any[]) => any | PromiseLike>, - close: Function, - autofocus: Boolean, - prefixCls: String, - buttonProps: objectType(), - emitEvent: Boolean, - quitOnNullishReturnValue: Boolean, -}; - -export type ActionButtonProps = ExtractPropTypes; - -function isThenable(thing?: PromiseLike): boolean { - return !!(thing && thing.then); -} - -export default defineComponent({ - compatConfig: { MODE: 3 }, - name: 'ActionButton', - props: actionButtonProps, - setup(props, { slots }) { - const clickedRef = shallowRef(false); - const buttonRef = shallowRef(); - const loading = shallowRef(false); - let timeoutId: any; - const isDestroyed = useDestroyed(); - onMounted(() => { - if (props.autofocus) { - timeoutId = setTimeout(() => findDOMNode(buttonRef.value)?.focus?.()); - } - }); - onBeforeUnmount(() => { - clearTimeout(timeoutId); - }); - - const onInternalClose = (...args: any[]) => { - props.close?.(...args); - }; - - const handlePromiseOnOk = (returnValueOfOnOk?: PromiseLike) => { - if (!isThenable(returnValueOfOnOk)) { - return; - } - loading.value = true; - returnValueOfOnOk!.then( - (...args: any[]) => { - if (!isDestroyed.value) { - loading.value = false; - } - onInternalClose(...args); - clickedRef.value = false; - }, - (e: Error) => { - // See: https://github.com/ant-design/ant-design/issues/6183 - if (!isDestroyed.value) { - loading.value = false; - } - clickedRef.value = false; - return Promise.reject(e); - }, - ); - }; - - const onClick = (e: MouseEvent) => { - const { actionFn } = props; - if (clickedRef.value) { - return; - } - clickedRef.value = true; - if (!actionFn) { - onInternalClose(); - return; - } - let returnValueOfOnOk: PromiseLike; - if (props.emitEvent) { - returnValueOfOnOk = actionFn(e); - if (props.quitOnNullishReturnValue && !isThenable(returnValueOfOnOk)) { - clickedRef.value = false; - onInternalClose(e); - return; - } - } else if (actionFn.length) { - returnValueOfOnOk = actionFn(props.close); - // https://github.com/ant-design/ant-design/issues/23358 - clickedRef.value = false; - } else { - returnValueOfOnOk = actionFn(); - if (!returnValueOfOnOk) { - onInternalClose(); - return; - } - } - handlePromiseOnOk(returnValueOfOnOk); - }; - return () => { - const { type, prefixCls, buttonProps } = props; - return ( - - ); - }; - }, -}); diff --git a/components/_util/BaseInput.tsx b/components/_util/BaseInput.tsx deleted file mode 100644 index e6bc9d708..000000000 --- a/components/_util/BaseInput.tsx +++ /dev/null @@ -1,168 +0,0 @@ -import type { PropType } from 'vue'; -import { computed, defineComponent, shallowRef, ref, watch } from 'vue'; -import PropTypes from './vue-types'; -import type { BaseInputInnerExpose } from './BaseInputInner'; -import BaseInputInner from './BaseInputInner'; -import { styleObjectToString } from '../vc-util/Dom/css'; - -export interface BaseInputExpose { - focus: () => void; - blur: () => void; - input: HTMLInputElement | HTMLTextAreaElement | null; - setSelectionRange: ( - start: number, - end: number, - direction?: 'forward' | 'backward' | 'none', - ) => void; - select: () => void; - getSelectionStart: () => number | null; - getSelectionEnd: () => number | null; - getScrollTop: () => number | null; - setScrollTop: (scrollTop: number) => void; -} -const BaseInput = defineComponent({ - compatConfig: { MODE: 3 }, - inheritAttrs: false, - props: { - disabled: PropTypes.looseBool, - type: PropTypes.string, - value: PropTypes.any, - lazy: PropTypes.bool.def(true), - tag: { - type: String as PropType<'input' | 'textarea'>, - default: 'input', - }, - size: PropTypes.string, - style: PropTypes.oneOfType([String, Object]), - class: PropTypes.string, - }, - emits: [ - 'change', - 'input', - 'blur', - 'keydown', - 'focus', - 'compositionstart', - 'compositionend', - 'keyup', - 'paste', - 'mousedown', - ], - setup(props, { emit, attrs, expose }) { - const inputRef = shallowRef(null); - const renderValue = ref(); - const isComposing = ref(false); - watch( - [() => props.value, isComposing], - () => { - if (isComposing.value) return; - renderValue.value = props.value; - }, - { immediate: true }, - ); - const handleChange = (e: Event) => { - emit('change', e); - }; - const onCompositionstart = (e: CompositionEvent) => { - isComposing.value = true; - (e.target as any).composing = true; - emit('compositionstart', e); - }; - const onCompositionend = (e: CompositionEvent) => { - isComposing.value = false; - (e.target as any).composing = false; - emit('compositionend', e); - const event = document.createEvent('HTMLEvents'); - event.initEvent('input', true, true); - e.target.dispatchEvent(event); - handleChange(e); - }; - const handleInput = (e: Event) => { - if (isComposing.value && props.lazy) { - renderValue.value = (e.target as HTMLInputElement).value; - return; - } - emit('input', e); - }; - - const handleBlur = (e: Event) => { - emit('blur', e); - }; - const handleFocus = (e: Event) => { - emit('focus', e); - }; - - const focus = () => { - if (inputRef.value) { - inputRef.value.focus(); - } - }; - const blur = () => { - if (inputRef.value) { - inputRef.value.blur(); - } - }; - const handleKeyDown = (e: KeyboardEvent) => { - emit('keydown', e); - }; - const handleKeyUp = (e: KeyboardEvent) => { - emit('keyup', e); - }; - const setSelectionRange = ( - start: number, - end: number, - direction?: 'forward' | 'backward' | 'none', - ) => { - inputRef.value?.setSelectionRange(start, end, direction); - }; - - const select = () => { - inputRef.value?.select(); - }; - expose({ - focus, - blur, - input: computed(() => inputRef.value?.input), - setSelectionRange, - select, - getSelectionStart: () => inputRef.value?.getSelectionStart(), - getSelectionEnd: () => inputRef.value?.getSelectionEnd(), - getScrollTop: () => inputRef.value?.getScrollTop(), - }); - const handleMousedown = (e: MouseEvent) => { - emit('mousedown', e); - }; - const handlePaste = (e: ClipboardEvent) => { - emit('paste', e); - }; - const styleString = computed(() => { - return props.style && typeof props.style !== 'string' - ? styleObjectToString(props.style) - : props.style; - }); - return () => { - const { style, lazy, ...restProps } = props; - return ( - - ); - }; - }, -}); - -export default BaseInput; diff --git a/components/_util/BaseInputInner.tsx b/components/_util/BaseInputInner.tsx deleted file mode 100644 index 10423d7a4..000000000 --- a/components/_util/BaseInputInner.tsx +++ /dev/null @@ -1,96 +0,0 @@ -import type { PropType } from 'vue'; -import { defineComponent, shallowRef } from 'vue'; -import PropTypes from './vue-types'; - -export interface BaseInputInnerExpose { - focus: () => void; - blur: () => void; - input: HTMLInputElement | HTMLTextAreaElement | null; - setSelectionRange: ( - start: number, - end: number, - direction?: 'forward' | 'backward' | 'none', - ) => void; - select: () => void; - getSelectionStart: () => number | null; - getSelectionEnd: () => number | null; - getScrollTop: () => number | null; - setScrollTop: (scrollTop: number) => void; -} -const BaseInputInner = defineComponent({ - compatConfig: { MODE: 3 }, - // inheritAttrs: false, - props: { - disabled: PropTypes.looseBool, - type: PropTypes.string, - value: PropTypes.any, - tag: { - type: String as PropType<'input' | 'textarea'>, - default: 'input', - }, - size: PropTypes.string, - onChange: Function as PropType<(e: Event) => void>, - onInput: Function as PropType<(e: Event) => void>, - onBlur: Function as PropType<(e: Event) => void>, - onFocus: Function as PropType<(e: Event) => void>, - onKeydown: Function as PropType<(e: Event) => void>, - onCompositionstart: Function as PropType<(e: Event) => void>, - onCompositionend: Function as PropType<(e: Event) => void>, - onKeyup: Function as PropType<(e: Event) => void>, - onPaste: Function as PropType<(e: Event) => void>, - onMousedown: Function as PropType<(e: Event) => void>, - }, - emits: [ - 'change', - 'input', - 'blur', - 'keydown', - 'focus', - 'compositionstart', - 'compositionend', - 'keyup', - 'paste', - 'mousedown', - ], - setup(props, { expose }) { - const inputRef = shallowRef(null); - - const focus = () => { - if (inputRef.value) { - inputRef.value.focus(); - } - }; - const blur = () => { - if (inputRef.value) { - inputRef.value.blur(); - } - }; - const setSelectionRange = ( - start: number, - end: number, - direction?: 'forward' | 'backward' | 'none', - ) => { - inputRef.value?.setSelectionRange(start, end, direction); - }; - - const select = () => { - inputRef.value?.select(); - }; - expose({ - focus, - blur, - input: inputRef, - setSelectionRange, - select, - getSelectionStart: () => inputRef.value?.selectionStart, - getSelectionEnd: () => inputRef.value?.selectionEnd, - getScrollTop: () => inputRef.value?.scrollTop, - }); - return () => { - const { tag: Tag, value, ...restProps } = props; - return ; - }; - }, -}); - -export default BaseInputInner; diff --git a/components/_util/BaseMixin.ts b/components/_util/BaseMixin.ts deleted file mode 100644 index 33831b9fa..000000000 --- a/components/_util/BaseMixin.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { nextTick } from 'vue'; -import { getOptionProps } from './props-util'; - -export default { - methods: { - setState(state = {}, callback: () => any) { - let newState = typeof state === 'function' ? state(this.$data, this.$props) : state; - if (this.getDerivedStateFromProps) { - const s = this.getDerivedStateFromProps(getOptionProps(this), { - ...this.$data, - ...newState, - }); - if (s === null) { - return; - } else { - newState = { ...newState, ...(s || {}) }; - } - } - Object.assign(this.$data, newState); - if (this._.isMounted) { - this.$forceUpdate(); - } - nextTick(() => { - callback && callback(); - }); - }, - __emit() { - // 直接调用事件,底层组件不需要vueTool记录events - // eslint-disable-next-line prefer-rest-params - const args = [].slice.call(arguments, 0); - let eventName = args[0]; - eventName = `on${eventName[0].toUpperCase()}${eventName.substring(1)}`; - const event = this.$props[eventName] || this.$attrs[eventName]; - if (args.length && event) { - if (Array.isArray(event)) { - for (let i = 0, l = event.length; i < l; i++) { - event[i](...args.slice(1)); - } - } else { - event(...args.slice(1)); - } - } - }, - }, -}; diff --git a/components/_util/EventInterface.ts b/components/_util/EventInterface.ts deleted file mode 100644 index b72777cf5..000000000 --- a/components/_util/EventInterface.ts +++ /dev/null @@ -1,19 +0,0 @@ -export type FocusEventHandler = (e: FocusEvent) => void; -export type MouseEventHandler = (e: MouseEvent) => void; -export type KeyboardEventHandler = (e: KeyboardEvent) => void; -export type CompositionEventHandler = (e: CompositionEvent) => void; -export type ClipboardEventHandler = (e: ClipboardEvent) => void; -export type ChangeEventHandler = (e: ChangeEvent) => void; -export type WheelEventHandler = (e: WheelEvent) => void; -export type ChangeEvent = Event & { - target: { - value?: string | undefined; - }; -}; -export type CheckboxChangeEvent = Event & { - target: { - checked?: boolean; - }; -}; - -export type EventHandler = (...args: any[]) => void; diff --git a/components/_util/KeyCode.ts b/components/_util/KeyCode.ts deleted file mode 100644 index 2746f9e9a..000000000 --- a/components/_util/KeyCode.ts +++ /dev/null @@ -1,522 +0,0 @@ -/** - * @ignore - * some key-codes definition and utils from closure-library - * @author yiminghe@gmail.com - */ - -const KeyCode = { - /** - * MAC_ENTER - */ - MAC_ENTER: 3, - /** - * BACKSPACE - */ - BACKSPACE: 8, - /** - * TAB - */ - TAB: 9, - /** - * NUMLOCK on FF/Safari Mac - */ - NUM_CENTER: 12, // NUMLOCK on FF/Safari Mac - /** - * ENTER - */ - ENTER: 13, - /** - * SHIFT - */ - SHIFT: 16, - /** - * CTRL - */ - CTRL: 17, - /** - * ALT - */ - ALT: 18, - /** - * PAUSE - */ - PAUSE: 19, - /** - * CAPS_LOCK - */ - CAPS_LOCK: 20, - /** - * ESC - */ - ESC: 27, - /** - * SPACE - */ - SPACE: 32, - /** - * PAGE_UP - */ - PAGE_UP: 33, // also NUM_NORTH_EAST - /** - * PAGE_DOWN - */ - PAGE_DOWN: 34, // also NUM_SOUTH_EAST - /** - * END - */ - END: 35, // also NUM_SOUTH_WEST - /** - * HOME - */ - HOME: 36, // also NUM_NORTH_WEST - /** - * LEFT - */ - LEFT: 37, // also NUM_WEST - /** - * UP - */ - UP: 38, // also NUM_NORTH - /** - * RIGHT - */ - RIGHT: 39, // also NUM_EAST - /** - * DOWN - */ - DOWN: 40, // also NUM_SOUTH - /** - * PRINT_SCREEN - */ - PRINT_SCREEN: 44, - /** - * INSERT - */ - INSERT: 45, // also NUM_INSERT - /** - * DELETE - */ - DELETE: 46, // also NUM_DELETE - /** - * ZERO - */ - ZERO: 48, - /** - * ONE - */ - ONE: 49, - /** - * TWO - */ - TWO: 50, - /** - * THREE - */ - THREE: 51, - /** - * FOUR - */ - FOUR: 52, - /** - * FIVE - */ - FIVE: 53, - /** - * SIX - */ - SIX: 54, - /** - * SEVEN - */ - SEVEN: 55, - /** - * EIGHT - */ - EIGHT: 56, - /** - * NINE - */ - NINE: 57, - /** - * QUESTION_MARK - */ - QUESTION_MARK: 63, // needs localization - /** - * A - */ - A: 65, - /** - * B - */ - B: 66, - /** - * C - */ - C: 67, - /** - * D - */ - D: 68, - /** - * E - */ - E: 69, - /** - * F - */ - F: 70, - /** - * G - */ - G: 71, - /** - * H - */ - H: 72, - /** - * I - */ - I: 73, - /** - * J - */ - J: 74, - /** - * K - */ - K: 75, - /** - * L - */ - L: 76, - /** - * M - */ - M: 77, - /** - * N - */ - N: 78, - /** - * O - */ - O: 79, - /** - * P - */ - P: 80, - /** - * Q - */ - Q: 81, - /** - * R - */ - R: 82, - /** - * S - */ - S: 83, - /** - * T - */ - T: 84, - /** - * U - */ - U: 85, - /** - * V - */ - V: 86, - /** - * W - */ - W: 87, - /** - * X - */ - X: 88, - /** - * Y - */ - Y: 89, - /** - * Z - */ - Z: 90, - /** - * META - */ - META: 91, // WIN_KEY_LEFT - /** - * WIN_KEY_RIGHT - */ - WIN_KEY_RIGHT: 92, - /** - * CONTEXT_MENU - */ - CONTEXT_MENU: 93, - /** - * NUM_ZERO - */ - NUM_ZERO: 96, - /** - * NUM_ONE - */ - NUM_ONE: 97, - /** - * NUM_TWO - */ - NUM_TWO: 98, - /** - * NUM_THREE - */ - NUM_THREE: 99, - /** - * NUM_FOUR - */ - NUM_FOUR: 100, - /** - * NUM_FIVE - */ - NUM_FIVE: 101, - /** - * NUM_SIX - */ - NUM_SIX: 102, - /** - * NUM_SEVEN - */ - NUM_SEVEN: 103, - /** - * NUM_EIGHT - */ - NUM_EIGHT: 104, - /** - * NUM_NINE - */ - NUM_NINE: 105, - /** - * NUM_MULTIPLY - */ - NUM_MULTIPLY: 106, - /** - * NUM_PLUS - */ - NUM_PLUS: 107, - /** - * NUM_MINUS - */ - NUM_MINUS: 109, - /** - * NUM_PERIOD - */ - NUM_PERIOD: 110, - /** - * NUM_DIVISION - */ - NUM_DIVISION: 111, - /** - * F1 - */ - F1: 112, - /** - * F2 - */ - F2: 113, - /** - * F3 - */ - F3: 114, - /** - * F4 - */ - F4: 115, - /** - * F5 - */ - F5: 116, - /** - * F6 - */ - F6: 117, - /** - * F7 - */ - F7: 118, - /** - * F8 - */ - F8: 119, - /** - * F9 - */ - F9: 120, - /** - * F10 - */ - F10: 121, - /** - * F11 - */ - F11: 122, - /** - * F12 - */ - F12: 123, - /** - * NUMLOCK - */ - NUMLOCK: 144, - /** - * SEMICOLON - */ - SEMICOLON: 186, // needs localization - /** - * DASH - */ - DASH: 189, // needs localization - /** - * EQUALS - */ - EQUALS: 187, // needs localization - /** - * COMMA - */ - COMMA: 188, // needs localization - /** - * PERIOD - */ - PERIOD: 190, // needs localization - /** - * SLASH - */ - SLASH: 191, // needs localization - /** - * APOSTROPHE - */ - APOSTROPHE: 192, // needs localization - /** - * SINGLE_QUOTE - */ - SINGLE_QUOTE: 222, // needs localization - /** - * OPEN_SQUARE_BRACKET - */ - OPEN_SQUARE_BRACKET: 219, // needs localization - /** - * BACKSLASH - */ - BACKSLASH: 220, // needs localization - /** - * CLOSE_SQUARE_BRACKET - */ - CLOSE_SQUARE_BRACKET: 221, // needs localization - /** - * WIN_KEY - */ - WIN_KEY: 224, - /** - * MAC_FF_META - */ - MAC_FF_META: 224, // Firefox (Gecko) fires this for the meta key instead of 91 - /** - * WIN_IME - */ - WIN_IME: 229, - - // ======================== Function ======================== - /** - * whether text and modified key is entered at the same time. - */ - isTextModifyingKeyEvent: function isTextModifyingKeyEvent(e: KeyboardEvent) { - const { keyCode } = e; - if ( - (e.altKey && !e.ctrlKey) || - e.metaKey || - // Function keys don't generate text - (keyCode >= KeyCode.F1 && keyCode <= KeyCode.F12) - ) { - return false; - } - - // The following keys are quite harmless, even in combination with - // CTRL, ALT or SHIFT. - switch (keyCode) { - case KeyCode.ALT: - case KeyCode.CAPS_LOCK: - case KeyCode.CONTEXT_MENU: - case KeyCode.CTRL: - case KeyCode.DOWN: - case KeyCode.END: - case KeyCode.ESC: - case KeyCode.HOME: - case KeyCode.INSERT: - case KeyCode.LEFT: - case KeyCode.MAC_FF_META: - case KeyCode.META: - case KeyCode.NUMLOCK: - case KeyCode.NUM_CENTER: - case KeyCode.PAGE_DOWN: - case KeyCode.PAGE_UP: - case KeyCode.PAUSE: - case KeyCode.PRINT_SCREEN: - case KeyCode.RIGHT: - case KeyCode.SHIFT: - case KeyCode.UP: - case KeyCode.WIN_KEY: - case KeyCode.WIN_KEY_RIGHT: - return false; - default: - return true; - } - }, - - /** - * whether character is entered. - */ - isCharacterKey: function isCharacterKey(keyCode: number) { - if (keyCode >= KeyCode.ZERO && keyCode <= KeyCode.NINE) { - return true; - } - - if (keyCode >= KeyCode.NUM_ZERO && keyCode <= KeyCode.NUM_MULTIPLY) { - return true; - } - - if (keyCode >= KeyCode.A && keyCode <= KeyCode.Z) { - return true; - } - - // Safari sends zero key code for non-latin characters. - if (window.navigator.userAgent.indexOf('WebKit') !== -1 && keyCode === 0) { - return true; - } - - switch (keyCode) { - case KeyCode.SPACE: - case KeyCode.QUESTION_MARK: - case KeyCode.NUM_PLUS: - case KeyCode.NUM_MINUS: - case KeyCode.NUM_PERIOD: - case KeyCode.NUM_DIVISION: - case KeyCode.SEMICOLON: - case KeyCode.DASH: - case KeyCode.EQUALS: - case KeyCode.COMMA: - case KeyCode.PERIOD: - case KeyCode.SLASH: - case KeyCode.APOSTROPHE: - case KeyCode.SINGLE_QUOTE: - case KeyCode.OPEN_SQUARE_BRACKET: - case KeyCode.BACKSLASH: - case KeyCode.CLOSE_SQUARE_BRACKET: - return true; - default: - return false; - } - }, -}; - -export default KeyCode; diff --git a/components/_util/Portal.tsx b/components/_util/Portal.tsx deleted file mode 100644 index caba27b22..000000000 --- a/components/_util/Portal.tsx +++ /dev/null @@ -1,72 +0,0 @@ -import PropTypes from './vue-types'; -import { - defineComponent, - nextTick, - onBeforeMount, - onMounted, - onUpdated, - Teleport, - watch, -} from 'vue'; -import { useInjectPortal } from '../vc-trigger/context'; - -export default defineComponent({ - compatConfig: { MODE: 3 }, - name: 'Portal', - inheritAttrs: false, - props: { - getContainer: PropTypes.func.isRequired, - didUpdate: Function, - }, - setup(props, { slots }) { - let isSSR = true; - // getContainer 不会改变,不用响应式 - let container: HTMLElement; - const { shouldRender } = useInjectPortal(); - - function setContainer() { - if (shouldRender.value) { - container = props.getContainer(); - } - } - - onBeforeMount(() => { - isSSR = false; - // drawer - setContainer(); - }); - onMounted(() => { - if (container) return; - // https://github.com/vueComponent/ant-design-vue/issues/6937 - setContainer(); - }); - - const stopWatch = watch(shouldRender, () => { - if (shouldRender.value && !container) { - container = props.getContainer(); - } - if (container) { - stopWatch(); - } - }); - onUpdated(() => { - nextTick(() => { - if (shouldRender.value) { - props.didUpdate?.(props); - } - }); - }); - // onBeforeUnmount(() => { - // if (container && container.parentNode) { - // container.parentNode.removeChild(container); - // } - // }); - return () => { - if (!shouldRender.value) return null; - if (isSSR) { - return slots.default?.(); - } - return container ? : null; - }; - }, -}); diff --git a/components/_util/PortalWrapper.tsx b/components/_util/PortalWrapper.tsx deleted file mode 100644 index 91561990b..000000000 --- a/components/_util/PortalWrapper.tsx +++ /dev/null @@ -1,191 +0,0 @@ -import PropTypes from './vue-types'; -import Portal from './Portal'; -import { - defineComponent, - shallowRef, - watch, - onMounted, - onBeforeUnmount, - onUpdated, - nextTick, - computed, -} from 'vue'; -import canUseDom from './canUseDom'; -import raf from './raf'; -import { booleanType } from './type'; -import useScrollLocker from './hooks/useScrollLocker'; - -let openCount = 0; -const supportDom = canUseDom(); - -/** @private Test usage only */ -export function getOpenCount() { - return process.env.NODE_ENV === 'test' ? openCount : 0; -} - -const getParent = (getContainer: GetContainer) => { - if (!supportDom) { - return null; - } - if (getContainer) { - if (typeof getContainer === 'string') { - return document.querySelectorAll(getContainer)[0] as HTMLElement; - } - if (typeof getContainer === 'function') { - return getContainer(); - } - if (typeof getContainer === 'object' && getContainer instanceof window.HTMLElement) { - return getContainer; - } - } - return document.body; -}; - -export type GetContainer = string | HTMLElement | (() => HTMLElement); - -export default defineComponent({ - compatConfig: { MODE: 3 }, - name: 'PortalWrapper', - inheritAttrs: false, - props: { - wrapperClassName: String, - forceRender: { type: Boolean, default: undefined }, - getContainer: PropTypes.any, - visible: { type: Boolean, default: undefined }, - autoLock: booleanType(), - didUpdate: Function, - }, - - setup(props, { slots }) { - const container = shallowRef(); - const componentRef = shallowRef(); - const rafId = shallowRef(); - const triggerUpdate = shallowRef(1); - const defaultContainer = canUseDom() && document.createElement('div'); - const removeCurrentContainer = () => { - // Portal will remove from `parentNode`. - // Let's handle this again to avoid refactor issue. - if (container.value === defaultContainer) { - container.value?.parentNode?.removeChild(container.value); - } - container.value = null; - }; - let parent: HTMLElement = null; - const attachToParent = (force = false) => { - if (force || (container.value && !container.value.parentNode)) { - parent = getParent(props.getContainer); - if (parent) { - parent.appendChild(container.value); - return true; - } - - return false; - } - - return true; - }; - const getContainer = () => { - if (!supportDom) { - return null; - } - if (!container.value) { - container.value = defaultContainer; - attachToParent(true); - } - setWrapperClassName(); - return container.value; - }; - const setWrapperClassName = () => { - const { wrapperClassName } = props; - if (container.value && wrapperClassName && wrapperClassName !== container.value.className) { - container.value.className = wrapperClassName; - } - }; - onUpdated(() => { - setWrapperClassName(); - attachToParent(); - }); - - useScrollLocker( - computed(() => { - return ( - props.autoLock && - props.visible && - canUseDom() && - (container.value === document.body || container.value === defaultContainer) - ); - }), - ); - onMounted(() => { - let init = false; - watch( - [() => props.visible, () => props.getContainer], - ([visible, getContainer], [prevVisible, prevGetContainer]) => { - // Update count - if (supportDom) { - parent = getParent(props.getContainer); - if (parent === document.body) { - if (visible && !prevVisible) { - openCount += 1; - } else if (init) { - openCount -= 1; - } - } - } - - if (init) { - // Clean up container if needed - const getContainerIsFunc = - typeof getContainer === 'function' && typeof prevGetContainer === 'function'; - if ( - getContainerIsFunc - ? getContainer.toString() !== prevGetContainer.toString() - : getContainer !== prevGetContainer - ) { - removeCurrentContainer(); - } - } - init = true; - }, - { immediate: true, flush: 'post' }, - ); - - nextTick(() => { - if (!attachToParent()) { - rafId.value = raf(() => { - triggerUpdate.value += 1; - }); - } - }); - }); - - onBeforeUnmount(() => { - const { visible } = props; - if (supportDom && parent === document.body) { - // 离开时不会 render, 导到离开时数值不变,改用 func 。。 - openCount = visible && openCount ? openCount - 1 : openCount; - } - removeCurrentContainer(); - raf.cancel(rafId.value); - }); - return () => { - const { forceRender, visible } = props; - let portal = null; - const childProps = { - getOpenCount: () => openCount, - getContainer, - }; - if (triggerUpdate.value && (forceRender || visible || componentRef.value)) { - portal = ( - slots.default?.(childProps) }} - > - ); - } - return portal; - }; - }, -}); diff --git a/components/_util/__mocks__/Portal.tsx b/components/_util/__mocks__/Portal.tsx deleted file mode 100644 index d71306396..000000000 --- a/components/_util/__mocks__/Portal.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { defineComponent } from 'vue'; - -export default defineComponent({ - compatConfig: { MODE: 3 }, - name: 'Portal', - inheritAttrs: false, - props: ['getContainer'], - setup(_props, { slots }) { - return () => { - return slots.default?.(); - }; - }, -}); diff --git a/components/_util/__mocks__/RenderSlot.tsx b/components/_util/__mocks__/RenderSlot.tsx deleted file mode 100644 index 42e40ee0a..000000000 --- a/components/_util/__mocks__/RenderSlot.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { defineComponent } from 'vue'; -import { customRenderSlot } from '../vnode'; - -export default defineComponent({ - name: 'RenderSlot', - setup(_props, { slots }) { - return () => { - return customRenderSlot(slots, 'default', {}, () => ['default value']); - }; - }, -}); diff --git a/components/_util/__tests__/easings.test.js b/components/_util/__tests__/easings.test.js deleted file mode 100644 index d32e0dd7f..000000000 --- a/components/_util/__tests__/easings.test.js +++ /dev/null @@ -1,13 +0,0 @@ -import { easeInOutCubic } from '../easings'; - -describe('Test easings', () => { - it('easeInOutCubic return value', () => { - const nums = []; - // eslint-disable-next-line no-plusplus - for (let index = 0; index < 5; index++) { - nums.push(easeInOutCubic(index, 1, 5, 4)); - } - - expect(nums).toEqual([1, 1.25, 3, 4.75, 5]); - }); -}); diff --git a/components/_util/__tests__/scrollTo.test.js b/components/_util/__tests__/scrollTo.test.js deleted file mode 100644 index 3e41a60ee..000000000 --- a/components/_util/__tests__/scrollTo.test.js +++ /dev/null @@ -1,56 +0,0 @@ -import scrollTo from '../scrollTo'; - -describe('Test ScrollTo function', () => { - let dateNowMock; - - beforeAll(() => { - jest.useFakeTimers(); - }); - - afterAll(() => { - jest.useRealTimers(); - }); - - beforeEach(() => { - dateNowMock = jest - .spyOn(Date, 'now') - .mockImplementationOnce(() => 0) - .mockImplementationOnce(() => 1000); - }); - - afterEach(() => { - dateNowMock.mockRestore(); - }); - - it('test scrollTo', async () => { - const scrollToSpy = jest.spyOn(window, 'scrollTo').mockImplementation((x, y) => { - window.scrollY = y; - window.pageYOffset = y; - }); - - scrollTo(1000); - - jest.runAllTimers(); - expect(window.pageYOffset).toBe(1000); - - scrollToSpy.mockRestore(); - }); - - it('test callback - option', async () => { - const cbMock = jest.fn(); - scrollTo(1000, { - callback: cbMock, - }); - jest.runAllTimers(); - expect(cbMock).toHaveBeenCalledTimes(1); - }); - - it('test getContainer - option', async () => { - const div = document.createElement('div'); - scrollTo(1000, { - getContainer: () => div, - }); - jest.runAllTimers(); - expect(div.scrollTop).toBe(1000); - }); -}); diff --git a/components/_util/__tests__/unreachableException.test.js b/components/_util/__tests__/unreachableException.test.js deleted file mode 100644 index 4019e4fed..000000000 --- a/components/_util/__tests__/unreachableException.test.js +++ /dev/null @@ -1,8 +0,0 @@ -import UnreachableException from '../unreachableException'; - -describe('UnreachableException', () => { - it('error thrown matches snapshot', () => { - const exception = new UnreachableException('some value'); - expect(exception.error.message).toMatchInlineSnapshot(`"unreachable case: \\"some value\\""`); - }); -}); diff --git a/components/_util/__tests__/vNode.test.js b/components/_util/__tests__/vNode.test.js deleted file mode 100644 index 4bfc7e8fa..000000000 --- a/components/_util/__tests__/vNode.test.js +++ /dev/null @@ -1,26 +0,0 @@ -import RenderSlot from '../__mocks__/RenderSlot'; -import { mount } from '@vue/test-utils'; -import { nextTick } from 'vue'; - -describe('render slot content', () => { - it('renders slot content', () => { - const wrapper = mount(RenderSlot, { - slots: { - default: () => 'This is slot content', - }, - }); - - expect(wrapper.html()).toContain('This is slot content'); - }); - - it('render default value when slot is fragment', async () => { - const wrapper = mount(RenderSlot, { - slots: { - default: () => <>, - }, - }); - - await nextTick(); - expect(wrapper.html()).toContain('default value'); - }); -}); diff --git a/components/_util/canUseDom.ts b/components/_util/canUseDom.ts deleted file mode 100644 index 39705dc74..000000000 --- a/components/_util/canUseDom.ts +++ /dev/null @@ -1,5 +0,0 @@ -function canUseDom() { - return !!(typeof window !== 'undefined' && window.document && window.document.createElement); -} - -export default canUseDom; diff --git a/components/_util/classNames.ts b/components/_util/classNames.ts deleted file mode 100644 index b5832326f..000000000 --- a/components/_util/classNames.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { isArray, isString, isObject } from './util'; -function classNames(...args: any[]) { - const classes = []; - for (let i = 0; i < args.length; i++) { - const value = args[i]; - if (!value) continue; - if (isString(value)) { - classes.push(value); - } else if (isArray(value)) { - for (let i = 0; i < value.length; i++) { - const inner = classNames(value[i]); - if (inner) { - classes.push(inner); - } - } - } else if (isObject(value)) { - for (const name in value) { - if (value[name]) { - classes.push(name); - } - } - } - } - return classes.join(' '); -} - -export default classNames; diff --git a/components/_util/collapseMotion.tsx b/components/_util/collapseMotion.tsx deleted file mode 100644 index 6af29a463..000000000 --- a/components/_util/collapseMotion.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import { nextTick } from 'vue'; -import { addClass, removeClass } from '../vc-util/Dom/class'; -import type { CSSMotionProps } from './transition'; - -const collapseMotion = (name = 'ant-motion-collapse', appear = true): CSSMotionProps => { - return { - name, - appear, - css: true, - onBeforeEnter: (node: HTMLDivElement) => { - node.style.height = '0px'; - node.style.opacity = '0'; - addClass(node, name); - }, - onEnter: (node: HTMLDivElement) => { - nextTick(() => { - node.style.height = `${node.scrollHeight}px`; - node.style.opacity = '1'; - }); - }, - onAfterEnter: (node: HTMLDivElement) => { - if (node) { - removeClass(node, name); - node.style.height = null; - node.style.opacity = null; - } - }, - onBeforeLeave: (node: HTMLDivElement) => { - addClass(node, name); - node.style.height = `${node.offsetHeight}px`; - node.style.opacity = null; - }, - onLeave: (node: HTMLDivElement) => { - setTimeout(() => { - node.style.height = '0px'; - node.style.opacity = '0'; - }); - }, - onAfterLeave: (node: HTMLDivElement) => { - if (node) { - removeClass(node, name); - if (node.style) { - node.style.height = null; - node.style.opacity = null; - } - } - }, - }; -}; -export default collapseMotion; diff --git a/components/_util/colors.ts b/components/_util/colors.ts deleted file mode 100644 index 8bb5a90ab..000000000 --- a/components/_util/colors.ts +++ /dev/null @@ -1,34 +0,0 @@ -import type { PresetColorKey } from '../theme/interface'; -import { PresetColors } from '../theme/interface'; - -type InverseColor = `${PresetColorKey}-inverse`; -const inverseColors = PresetColors.map(color => `${color}-inverse`); - -export const PresetStatusColorTypes = [ - 'success', - 'processing', - 'error', - 'default', - 'warning', -] as const; - -export type PresetColorType = PresetColorKey | InverseColor; - -export type PresetStatusColorType = (typeof PresetStatusColorTypes)[number]; - -/** - * determine if the color keyword belongs to the `Ant Design` {@link PresetColors}. - * @param color color to be judged - * @param includeInverse whether to include reversed colors - */ -export function isPresetColor(color?: any, includeInverse = true) { - if (includeInverse) { - return [...inverseColors, ...PresetColors].includes(color); - } - - return PresetColors.includes(color); -} - -export function isPresetStatusColor(color?: any): color is PresetStatusColorType { - return PresetStatusColorTypes.includes(color); -} diff --git a/components/_util/component-classes.ts b/components/_util/component-classes.ts deleted file mode 100644 index fc854ec05..000000000 --- a/components/_util/component-classes.ts +++ /dev/null @@ -1,168 +0,0 @@ -/** - * source by `component-classes` - * https://github.com/component/classes.git - */ - -import indexOf from 'lodash-es/indexOf'; - -/** - * Whitespace regexp. - */ -const re = /\s+/; - -export class ClassList { - el: Element; - list: DOMTokenList; - - constructor(el: Element) { - if (!el || !el.nodeType) { - throw new Error('A DOM element reference is required'); - } - this.el = el; - this.list = el.classList; - } - - array() { - const className = this.el.getAttribute('class') || ''; - const str = className.replace(/^\s+|\s+$/g, ''); - const arr = str.split(re); - if ('' === arr[0]) arr.shift(); - return arr; - } - - /** - * Add class `name` if not already present. - * - * @param {String} name - * @return {ClassList} - * @api public - */ - add(name: string): ClassList { - // classList - if (this.list) { - this.list.add(name); - return this; - } - - // fallback - const arr = this.array(); - const i = indexOf(arr, name); - if (!~i) arr.push(name); - this.el.className = arr.join(' '); - return this; - } - /** - * Remove class `name` when present, or - * pass a regular expression to remove - * any which match. - * - * @param {String|RegExp} name - * @return {ClassList} - * @api public - */ - remove(name: string | RegExp): ClassList { - if ('[object RegExp]' === toString.call(name)) { - return this._removeMatching(name as RegExp); - } - - // classList - if (this.list) { - this.list.remove(name as string); - return this; - } - - // fallback - const arr = this.array(); - const i = indexOf(arr, name); - if (~i) arr.splice(i, 1); - this.el.className = arr.join(' '); - return this; - } - /** - * Remove all classes matching `re`. - * - * @param {RegExp} re - * @return {ClassList} - * @api private - */ - _removeMatching(re: RegExp): ClassList { - const arr = this.array(); - for (let i = 0; i < arr.length; i++) { - if (re.test(arr[i])) { - this.remove(arr[i]); - } - } - return this; - } - - /** - * Toggle class `name`, can force state via `force`. - * - * For browsers that support classList, but do not support `force` yet, - * the mistake will be detected and corrected. - * - * @param {String} name - * @param {Boolean} force - * @return {ClassList} - * @api public - */ - toggle(name: string, force: boolean): ClassList { - // classList - if (this.list) { - if ('undefined' !== typeof force) { - if (force !== this.list.toggle(name, force)) { - this.list.toggle(name); // toggle again to correct - } - } else { - this.list.toggle(name); - } - return this; - } - - // fallback - if ('undefined' !== typeof force) { - if (!force) { - this.remove(name); - } else { - this.add(name); - } - } else { - if (this.has(name)) { - this.remove(name); - } else { - this.add(name); - } - } - - return this; - } - /** - * Check if class `name` is present. - * - * @param {String} name - * @api public - */ - has(name: string) { - return this.list ? this.list.contains(name) : !!~indexOf(this.array(), name); - } - /** - * Check if class `name` is present. - * - * @param {String} name - * @api public - */ - contains(name: string) { - return this.has(name); - } -} - -/** - * Wrap `el` in a `ClassList`. - * - * @param {Element} el - * @return {ClassList} - * @api public - */ -export default function (el: Element): ClassList { - return new ClassList(el); -} diff --git a/components/_util/copy-to-clipboard/index.ts b/components/_util/copy-to-clipboard/index.ts deleted file mode 100644 index bc69aae33..000000000 --- a/components/_util/copy-to-clipboard/index.ts +++ /dev/null @@ -1,120 +0,0 @@ -import deselectCurrent from './toggle-selection'; - -interface Options { - debug?: boolean; - message?: string; - format?: string; // MIME type - onCopy?: (clipboardData: object) => void; -} - -const clipboardToIE11Formatting = { - 'text/plain': 'Text', - 'text/html': 'Url', - default: 'Text', -}; - -const defaultMessage = 'Copy to clipboard: #{key}, Enter'; - -function format(message: string) { - const copyKey = (/mac os x/i.test(navigator.userAgent) ? '⌘' : 'Ctrl') + '+C'; - return message.replace(/#{\s*key\s*}/g, copyKey); -} - -function copy(text: string, options?: Options): boolean { - let message, - reselectPrevious, - range, - selection, - mark, - success = false; - if (!options) { - options = {}; - } - const debug = options.debug || false; - try { - reselectPrevious = deselectCurrent(); - - range = document.createRange(); - selection = document.getSelection(); - - mark = document.createElement('span'); - mark.textContent = text; - // reset user styles for span element - mark.style.all = 'unset'; - // prevents scrolling to the end of the page - mark.style.position = 'fixed'; - mark.style.top = 0; - mark.style.clip = 'rect(0, 0, 0, 0)'; - // used to preserve spaces and line breaks - mark.style.whiteSpace = 'pre'; - // do not inherit user-select (it may be `none`) - mark.style.webkitUserSelect = 'text'; - mark.style.MozUserSelect = 'text'; - mark.style.msUserSelect = 'text'; - mark.style.userSelect = 'text'; - mark.addEventListener('copy', function (e) { - e.stopPropagation(); - if (options.format) { - e.preventDefault(); - if (typeof e.clipboardData === 'undefined') { - // IE 11 - debug && console.warn('unable to use e.clipboardData'); - debug && console.warn('trying IE specific stuff'); - (window as any).clipboardData.clearData(); - const format = - clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting['default']; - (window as any).clipboardData.setData(format, text); - } else { - // all other browsers - e.clipboardData.clearData(); - e.clipboardData.setData(options.format, text); - } - } - if (options.onCopy) { - e.preventDefault(); - options.onCopy(e.clipboardData); - } - }); - - document.body.appendChild(mark); - - range.selectNodeContents(mark); - selection.addRange(range); - - const successful = document.execCommand('copy'); - if (!successful) { - throw new Error('copy command was unsuccessful'); - } - success = true; - } catch (err) { - debug && console.error('unable to copy using execCommand: ', err); - debug && console.warn('trying IE specific stuff'); - try { - (window as any).clipboardData.setData(options.format || 'text', text); - options.onCopy && options.onCopy((window as any).clipboardData); - success = true; - } catch (err) { - debug && console.error('unable to copy using clipboardData: ', err); - debug && console.error('falling back to prompt'); - message = format('message' in options ? options.message : defaultMessage); - window.prompt(message, text); - } - } finally { - if (selection) { - if (typeof selection.removeRange == 'function') { - selection.removeRange(range); - } else { - selection.removeAllRanges(); - } - } - - if (mark) { - document.body.removeChild(mark); - } - reselectPrevious(); - } - - return success; -} - -export default copy; diff --git a/components/_util/copy-to-clipboard/toggle-selection.ts b/components/_util/copy-to-clipboard/toggle-selection.ts deleted file mode 100644 index e422d1efa..000000000 --- a/components/_util/copy-to-clipboard/toggle-selection.ts +++ /dev/null @@ -1,41 +0,0 @@ -// copy from https://github.com/sudodoki/toggle-selection -// refactor to esm -const deselectCurrent = (): (() => void) => { - const selection = document.getSelection(); - if (!selection.rangeCount) { - return function () {}; - } - let active = document.activeElement as any; - - const ranges = []; - for (let i = 0; i < selection.rangeCount; i++) { - ranges.push(selection.getRangeAt(i)); - } - - switch ( - active.tagName.toUpperCase() // .toUpperCase handles XHTML - ) { - case 'INPUT': - case 'TEXTAREA': - active.blur(); - break; - - default: - active = null; - break; - } - - selection.removeAllRanges(); - return function () { - selection.type === 'Caret' && selection.removeAllRanges(); - - if (!selection.rangeCount) { - ranges.forEach(function (range) { - selection.addRange(range); - }); - } - - active && active.focus(); - }; -}; -export default deselectCurrent; diff --git a/components/_util/createContext.ts b/components/_util/createContext.ts deleted file mode 100644 index 2a666d3f6..000000000 --- a/components/_util/createContext.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { inject, provide, reactive, watchEffect } from 'vue'; - -function createContext>(defaultValue?: T) { - const contextKey = Symbol('contextKey'); - const useProvide = (props: T, newProps?: T) => { - const mergedProps = reactive({} as T); - provide(contextKey, mergedProps); - watchEffect(() => { - Object.assign(mergedProps, props, newProps || {}); - }); - return mergedProps; - }; - const useInject = () => { - return inject(contextKey, defaultValue as T) || ({} as T); - }; - return { - useProvide, - useInject, - }; -} - -export default createContext; diff --git a/components/_util/createRef.ts b/components/_util/createRef.ts deleted file mode 100644 index a13c5a8e1..000000000 --- a/components/_util/createRef.ts +++ /dev/null @@ -1,31 +0,0 @@ -export interface RefObject extends Function { - current?: any; -} - -function createRef(): any { - const func: RefObject = (node: any) => { - func.current = node; - }; - return func; -} - -export function fillRef(ref, node: T) { - if (typeof ref === 'function') { - ref(node); - } else if (typeof ref === 'object' && ref && 'current' in ref) { - (ref as any).current = node; - } -} - -/** - * Merge refs into one ref function to support ref passing. - */ -export function composeRef(...refs: any[]) { - return (node: T) => { - refs.forEach(ref => { - fillRef(ref, node); - }); - }; -} - -export default createRef; diff --git a/components/_util/cssinjs/Cache.ts b/components/_util/cssinjs/Cache.ts deleted file mode 100644 index cff14b475..000000000 --- a/components/_util/cssinjs/Cache.ts +++ /dev/null @@ -1,32 +0,0 @@ -export type KeyType = string | number; -type ValueType = [number, any]; // [times, realValue] - -const SPLIT = '%'; - -class Entity { - instanceId: string; - constructor(instanceId: string) { - this.instanceId = instanceId; - } - - /** @private Internal cache map. Do not access this directly */ - cache = new Map(); - - get(keys: KeyType[] | string): ValueType | null { - return this.cache.get(Array.isArray(keys) ? keys.join(SPLIT) : keys) || null; - } - - update(keys: KeyType[] | string, valueFn: (origin: ValueType | null) => ValueType | null) { - const path = Array.isArray(keys) ? keys.join(SPLIT) : keys; - const prevValue = this.cache.get(path)!; - const nextValue = valueFn(prevValue); - - if (nextValue === null) { - this.cache.delete(path); - } else { - this.cache.set(path, nextValue); - } - } -} - -export default Entity; diff --git a/components/_util/cssinjs/Keyframes.ts b/components/_util/cssinjs/Keyframes.ts deleted file mode 100644 index 64b99e27c..000000000 --- a/components/_util/cssinjs/Keyframes.ts +++ /dev/null @@ -1,19 +0,0 @@ -import type { CSSInterpolation } from './hooks/useStyleRegister'; - -class Keyframe { - private name: string; - style: CSSInterpolation; - - constructor(name: string, style: CSSInterpolation) { - this.name = name; - this.style = style; - } - - getName(hashId = ''): string { - return hashId ? `${hashId}-${this.name}` : this.name; - } - - _keyframe = true; -} - -export default Keyframe; diff --git a/components/_util/cssinjs/StyleContext.tsx b/components/_util/cssinjs/StyleContext.tsx deleted file mode 100644 index 6d062eece..000000000 --- a/components/_util/cssinjs/StyleContext.tsx +++ /dev/null @@ -1,194 +0,0 @@ -import type { ShallowRef, ExtractPropTypes, InjectionKey, Ref } from 'vue'; -import { - provide, - defineComponent, - unref, - inject, - watch, - shallowRef, - getCurrentInstance, -} from 'vue'; -import CacheEntity from './Cache'; -import type { Linter } from './linters/interface'; -import type { Transformer } from './transformers/interface'; -import { arrayType, booleanType, objectType, someType, stringType, withInstall } from '../type'; -export const ATTR_TOKEN = 'data-token-hash'; -export const ATTR_MARK = 'data-css-hash'; -export const ATTR_CACHE_PATH = 'data-cache-path'; - -// Mark css-in-js instance in style element -export const CSS_IN_JS_INSTANCE = '__cssinjs_instance__'; - -export function createCache() { - const cssinjsInstanceId = Math.random().toString(12).slice(2); - - // Tricky SSR: Move all inline style to the head. - // PS: We do not recommend tricky mode. - if (typeof document !== 'undefined' && document.head && document.body) { - const styles = document.body.querySelectorAll(`style[${ATTR_MARK}]`) || []; - const { firstChild } = document.head; - - Array.from(styles).forEach(style => { - (style as any)[CSS_IN_JS_INSTANCE] = (style as any)[CSS_IN_JS_INSTANCE] || cssinjsInstanceId; - - // Not force move if no head - if ((style as any)[CSS_IN_JS_INSTANCE] === cssinjsInstanceId) { - document.head.insertBefore(style, firstChild); - } - }); - - // Deduplicate of moved styles - const styleHash: Record = {}; - Array.from(document.querySelectorAll(`style[${ATTR_MARK}]`)).forEach(style => { - const hash = style.getAttribute(ATTR_MARK)!; - if (styleHash[hash]) { - if ((style as any)[CSS_IN_JS_INSTANCE] === cssinjsInstanceId) { - style.parentNode?.removeChild(style); - } - } else { - styleHash[hash] = true; - } - }); - } - - return new CacheEntity(cssinjsInstanceId); -} - -export type HashPriority = 'low' | 'high'; - -export interface StyleContextProps { - autoClear?: boolean; - /** @private Test only. Not work in production. */ - mock?: 'server' | 'client'; - /** - * Only set when you need ssr to extract style on you own. - * If not provided, it will auto create `; -} diff --git a/components/_util/debouncedWatch.ts b/components/_util/debouncedWatch.ts deleted file mode 100644 index c822ab5ca..000000000 --- a/components/_util/debouncedWatch.ts +++ /dev/null @@ -1,89 +0,0 @@ -// copy from https://github.dev/vueuse/vueuse - -import type { Ref, WatchOptions, WatchStopHandle } from 'vue'; -import { unref, watch } from 'vue'; - -type MaybeRef = T | Ref; - -type Fn = () => void; - -export type FunctionArgs = (...args: Args) => Return; - -export interface FunctionWrapperOptions { - fn: FunctionArgs; - args: Args; - thisArg: This; -} - -export type EventFilter = ( - invoke: Fn, - options: FunctionWrapperOptions, -) => void; - -const bypassFilter: EventFilter = invoke => { - return invoke(); -}; -/** - * Create an EventFilter that debounce the events - * - * @param ms - */ -export function debounceFilter(ms: MaybeRef) { - let timer: ReturnType | undefined; - - const filter: EventFilter = invoke => { - const duration = unref(ms); - - if (timer) clearTimeout(timer); - - if (duration <= 0) return invoke(); - - timer = setTimeout(invoke, duration); - }; - - return filter; -} -export interface DebouncedWatchOptions extends WatchOptions { - debounce?: MaybeRef; -} - -interface ConfigurableEventFilter { - eventFilter?: EventFilter; -} -/** - * @internal - */ -function createFilterWrapper(filter: EventFilter, fn: T) { - function wrapper(this: any, ...args: any[]) { - filter(() => fn.apply(this, args), { fn, thisArg: this, args }); - } - - return wrapper as any as T; -} -export interface WatchWithFilterOptions - extends WatchOptions, - ConfigurableEventFilter {} -// implementation -export function watchWithFilter = false>( - source: any, - cb: any, - options: WatchWithFilterOptions = {}, -): WatchStopHandle { - const { eventFilter = bypassFilter, ...watchOptions } = options; - - return watch(source, createFilterWrapper(eventFilter, cb), watchOptions); -} - -// implementation -export default function debouncedWatch = false>( - source: any, - cb: any, - options: DebouncedWatchOptions = {}, -): WatchStopHandle { - const { debounce = 0, ...watchOptions } = options; - - return watchWithFilter(source, cb, { - ...watchOptions, - eventFilter: debounceFilter(debounce), - }); -} diff --git a/components/_util/eagerComputed.ts b/components/_util/eagerComputed.ts deleted file mode 100644 index bc15ca9f2..000000000 --- a/components/_util/eagerComputed.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { watchEffect, shallowRef } from 'vue'; -import type { ComputedRef } from 'vue'; -export declare type ComputedGetter = (...args: any[]) => T; -export default function eagerComputed(fn: ComputedGetter) { - const result = shallowRef(); - watchEffect( - () => { - result.value = fn(); - }, - { - flush: 'sync', // needed so updates are immediate. - }, - ); - - return result as any as ComputedRef; -} diff --git a/components/_util/easings.ts b/components/_util/easings.ts deleted file mode 100644 index a71ac8f22..000000000 --- a/components/_util/easings.ts +++ /dev/null @@ -1,8 +0,0 @@ -export function easeInOutCubic(t: number, b: number, c: number, d: number) { - const cc = c - b; - t /= d / 2; - if (t < 1) { - return (cc / 2) * t * t * t + b; - } - return (cc / 2) * ((t -= 2) * t * t + 2) + b; -} diff --git a/components/_util/env.ts b/components/_util/env.ts deleted file mode 100644 index 5dc106191..000000000 --- a/components/_util/env.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* eslint-disable no-undef */ -// Browser environment sniffing -export const inBrowser = typeof window !== 'undefined'; -export const UA = inBrowser && window.navigator.userAgent.toLowerCase(); -export const isIE = UA && /msie|trident/.test(UA); -export const isIE9 = UA && UA.indexOf('msie 9.0') > 0; -export const isEdge = UA && UA.indexOf('edge/') > 0; -export const isChrome = UA && /chrome\/\d+/.test(UA) && !isEdge; -export const isPhantomJS = UA && /phantomjs/.test(UA); -export const isFF = UA && UA.match(/firefox\/(\d+)/); diff --git a/components/_util/extendsObject.ts b/components/_util/extendsObject.ts deleted file mode 100644 index 3f6959ce4..000000000 --- a/components/_util/extendsObject.ts +++ /dev/null @@ -1,21 +0,0 @@ -type RecordType = Record; - -function extendsObject(...list: T[]) { - const result: RecordType = { ...list[0] }; - - for (let i = 1; i < list.length; i++) { - const obj = list[i]; - if (obj) { - Object.keys(obj).forEach(key => { - const val = obj[key]; - if (val !== undefined) { - result[key] = val; - } - }); - } - } - - return result; -} - -export default extendsObject; diff --git a/components/_util/firstNotUndefined.ts b/components/_util/firstNotUndefined.ts deleted file mode 100644 index 0b81ee9b0..000000000 --- a/components/_util/firstNotUndefined.ts +++ /dev/null @@ -1,10 +0,0 @@ -function firstNotUndefined(arr: T[] = []): T { - for (let i = 0, len = arr.length; i < len; i++) { - if (arr[i] !== undefined) { - return arr[i]; - } - } - return undefined; -} - -export default firstNotUndefined; diff --git a/components/_util/gapSize.ts b/components/_util/gapSize.ts deleted file mode 100644 index f4f35ec38..000000000 --- a/components/_util/gapSize.ts +++ /dev/null @@ -1,13 +0,0 @@ -import type { SizeType } from '../config-provider/SizeContext'; - -export function isPresetSize(size?: SizeType | string | number): size is SizeType { - return ['small', 'middle', 'large'].includes(size as string); -} - -export function isValidGapNumber(size?: SizeType | string | number): size is number { - if (!size) { - // The case of size = 0 is deliberately excluded here, because the default value of the gap attribute in CSS is 0, so if the user passes 0 in, we can directly ignore it. - return false; - } - return typeof size === 'number' && !Number.isNaN(size); -} diff --git a/components/_util/getRequestAnimationFrame.ts b/components/_util/getRequestAnimationFrame.ts deleted file mode 100644 index 25bdc2ab2..000000000 --- a/components/_util/getRequestAnimationFrame.ts +++ /dev/null @@ -1,46 +0,0 @@ -const availablePrefixs = ['moz', 'ms', 'webkit']; - -function requestAnimationFramePolyfill() { - let lastTime = 0; - return function (callback) { - const currTime = new Date().getTime(); - const timeToCall = Math.max(0, 16 - (currTime - lastTime)); - const id = window.setTimeout(function () { - callback(currTime + timeToCall); - }, timeToCall); - lastTime = currTime + timeToCall; - return id; - }; -} - -export default function getRequestAnimationFrame() { - if (typeof window === 'undefined') { - return () => {}; - } - if (window.requestAnimationFrame) { - // https://github.com/vuejs/vue/issues/4465 - return window.requestAnimationFrame.bind(window); - } - - const prefix = availablePrefixs.filter(key => `${key}RequestAnimationFrame` in window)[0]; - - return prefix ? window[`${prefix}RequestAnimationFrame`] : requestAnimationFramePolyfill(); -} - -export function cancelRequestAnimationFrame(id) { - if (typeof window === 'undefined') { - return null; - } - if (window.cancelAnimationFrame) { - return window.cancelAnimationFrame(id); - } - const prefix = availablePrefixs.filter( - key => `${key}CancelAnimationFrame` in window || `${key}CancelRequestAnimationFrame` in window, - )[0]; - - return prefix - ? ( - window[`${prefix}CancelAnimationFrame`] || window[`${prefix}CancelRequestAnimationFrame`] - ).call(this, id) - : clearTimeout(id); -} diff --git a/components/_util/getScroll.ts b/components/_util/getScroll.ts deleted file mode 100644 index f3e42f1bc..000000000 --- a/components/_util/getScroll.ts +++ /dev/null @@ -1,32 +0,0 @@ -export function isWindow(obj: any): obj is Window { - return obj !== null && obj !== undefined && obj === obj.window; -} - -const getScroll = (target: HTMLElement | Window | Document | null): number => { - if (typeof window === 'undefined') { - return 0; - } - let result = 0; - if (isWindow(target)) { - result = target.pageYOffset; - } else if (target instanceof Document) { - result = target.documentElement.scrollTop; - } else if (target instanceof HTMLElement) { - result = target.scrollTop; - } else if (target) { - // According to the type inference, the `target` is `never` type. - // Since we configured the loose mode type checking, and supports mocking the target with such shape below:: - // `{ documentElement: { scrollLeft: 200, scrollTop: 400 } }`, - // the program may falls into this branch. - // Check the corresponding tests for details. Don't sure what is the real scenario this happens. - /* biome-ignore lint/complexity/useLiteralKeys: target is a never type */ /* eslint-disable-next-line dot-notation */ - result = target['scrollTop']; - } - - if (target && !isWindow(target) && typeof result !== 'number') { - result = (target.ownerDocument ?? (target as Document)).documentElement?.scrollTop; - } - return result; -}; - -export default getScroll; diff --git a/components/_util/getScrollBarSize.ts b/components/_util/getScrollBarSize.ts deleted file mode 100644 index 12a142f3f..000000000 --- a/components/_util/getScrollBarSize.ts +++ /dev/null @@ -1,62 +0,0 @@ -/* eslint-disable no-param-reassign */ - -let cached: number; - -export default function getScrollBarSize(fresh?: boolean) { - if (typeof document === 'undefined') { - return 0; - } - - if (fresh || cached === undefined) { - const inner = document.createElement('div'); - inner.style.width = '100%'; - inner.style.height = '200px'; - - const outer = document.createElement('div'); - const outerStyle = outer.style; - - outerStyle.position = 'absolute'; - outerStyle.top = '0'; - outerStyle.left = '0'; - outerStyle.pointerEvents = 'none'; - outerStyle.visibility = 'hidden'; - outerStyle.width = '200px'; - outerStyle.height = '150px'; - outerStyle.overflow = 'hidden'; - - outer.appendChild(inner); - - document.body.appendChild(outer); - - const widthContained = inner.offsetWidth; - outer.style.overflow = 'scroll'; - let widthScroll = inner.offsetWidth; - - if (widthContained === widthScroll) { - widthScroll = outer.clientWidth; - } - - document.body.removeChild(outer); - - cached = widthContained - widthScroll; - } - return cached; -} - -function ensureSize(str: string) { - const match = str.match(/^(.*)px$/); - const value = Number(match?.[1]); - return Number.isNaN(value) ? getScrollBarSize() : value; -} - -export function getTargetScrollBarSize(target: HTMLElement) { - if (typeof document === 'undefined' || !target || !(target instanceof Element)) { - return { width: 0, height: 0 }; - } - - const { width, height } = getComputedStyle(target, '::-webkit-scrollbar'); - return { - width: ensureSize(width), - height: ensureSize(height), - }; -} diff --git a/components/_util/hooks/_vueuse/_configurable.ts b/components/_util/hooks/_vueuse/_configurable.ts deleted file mode 100644 index a32d33939..000000000 --- a/components/_util/hooks/_vueuse/_configurable.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { isClient } from './is'; - -export interface ConfigurableWindow { - /* - * Specify a custom `window` instance, e.g. working with iframes or in testing environments. - */ - window?: Window; -} - -export interface ConfigurableDocument { - /* - * Specify a custom `document` instance, e.g. working with iframes or in testing environments. - */ - document?: Document; -} - -export interface ConfigurableNavigator { - /* - * Specify a custom `navigator` instance, e.g. working with iframes or in testing environments. - */ - navigator?: Navigator; -} - -export interface ConfigurableLocation { - /* - * Specify a custom `location` instance, e.g. working with iframes or in testing environments. - */ - location?: Location; -} - -export const defaultWindow = isClient ? window : undefined; -export const defaultDocument = isClient ? window.document : undefined; -export const defaultNavigator = isClient ? window.navigator : undefined; -export const defaultLocation = isClient ? window.location : undefined; diff --git a/components/_util/hooks/_vueuse/is.ts b/components/_util/hooks/_vueuse/is.ts deleted file mode 100644 index 1acf122e8..000000000 --- a/components/_util/hooks/_vueuse/is.ts +++ /dev/null @@ -1,26 +0,0 @@ -export const isClient = typeof window !== 'undefined'; -export const isDef = (val?: T): val is T => typeof val !== 'undefined'; -export const assert = (condition: boolean, ...infos: any[]) => { - if (!condition) console.warn(...infos); -}; -const toString = Object.prototype.toString; -export const isBoolean = (val: any): val is boolean => typeof val === 'boolean'; -export const isFunction = (val: any): val is T => typeof val === 'function'; -export const isNumber = (val: any): val is number => typeof val === 'number'; -export const isString = (val: unknown): val is string => typeof val === 'string'; -export const isObject = (val: any): val is object => toString.call(val) === '[object Object]'; -export const isWindow = (val: any): val is Window => - typeof window !== 'undefined' && toString.call(val) === '[object Window]'; -export const now = () => Date.now(); -export const timestamp = () => +Date.now(); -export const clamp = (n: number, min: number, max: number) => Math.min(max, Math.max(min, n)); -export const noop = () => {}; -export const rand = (min: number, max: number) => { - min = Math.ceil(min); - max = Math.floor(max); - return Math.floor(Math.random() * (max - min + 1)) + min; -}; -export const isIOS = - isClient && window?.navigator?.userAgent && /iP(ad|hone|od)/.test(window.navigator.userAgent); -export const hasOwn = (val: T, key: K): key is K => - Object.prototype.hasOwnProperty.call(val, key); diff --git a/components/_util/hooks/_vueuse/resolveUnref.ts b/components/_util/hooks/_vueuse/resolveUnref.ts deleted file mode 100644 index 99d31ffd2..000000000 --- a/components/_util/hooks/_vueuse/resolveUnref.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { unref } from 'vue'; -import type { MaybeComputedRef } from './types'; - -/** - * Get the value of value/ref/getter. - */ -export function resolveUnref(r: MaybeComputedRef): T { - return typeof r === 'function' ? (r as any)() : unref(r); -} diff --git a/components/_util/hooks/_vueuse/tryOnMounted.ts b/components/_util/hooks/_vueuse/tryOnMounted.ts deleted file mode 100644 index 3c0155093..000000000 --- a/components/_util/hooks/_vueuse/tryOnMounted.ts +++ /dev/null @@ -1,15 +0,0 @@ -// eslint-disable-next-line no-restricted-imports -import { getCurrentInstance, nextTick, onMounted } from 'vue'; -import type { Fn } from './types'; - -/** - * Call onMounted() if it's inside a component lifecycle, if not, just call the function - * - * @param fn - * @param sync if set to false, it will run in the nextTick() of Vue - */ -export function tryOnMounted(fn: Fn, sync = true) { - if (getCurrentInstance()) onMounted(fn); - else if (sync) fn(); - else nextTick(fn); -} diff --git a/components/_util/hooks/_vueuse/tryOnScopeDispose.ts b/components/_util/hooks/_vueuse/tryOnScopeDispose.ts deleted file mode 100644 index 460efc5e4..000000000 --- a/components/_util/hooks/_vueuse/tryOnScopeDispose.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { getCurrentScope, onScopeDispose } from 'vue'; -import type { Fn } from './types'; - -/** - * Call onScopeDispose() if it's inside a effect scope lifecycle, if not, do nothing - * - * @param fn - */ -export function tryOnScopeDispose(fn: Fn) { - if (getCurrentScope()) { - onScopeDispose(fn); - return true; - } - return false; -} diff --git a/components/_util/hooks/_vueuse/types.ts b/components/_util/hooks/_vueuse/types.ts deleted file mode 100644 index 1bde2360c..000000000 --- a/components/_util/hooks/_vueuse/types.ts +++ /dev/null @@ -1,142 +0,0 @@ -import type { ComputedRef, Ref, WatchOptions, WatchSource } from 'vue'; - -/** - * Any function - */ -export type Fn = () => void; - -/** - * A ref that allow to set null or undefined - */ -export type RemovableRef = Omit, 'value'> & { - get value(): T; - set value(value: T | null | undefined); -}; - -/** - * @deprecated Use `RemovableRef` - */ -export type RemoveableRef = RemovableRef; - -/** - * Maybe it's a ref, or a plain value - * - * ```ts - * type MaybeRef = T | Ref - * ``` - */ -export type MaybeRef = T | Ref; - -/** - * Maybe it's a ref, or a plain value, or a getter function - * - * ```ts - * type MaybeComputedRef = (() => T) | T | Ref | ComputedRef - * ``` - */ -export type MaybeComputedRef = MaybeReadonlyRef | MaybeRef; - -/** - * Maybe it's a computed ref, or a getter function - * - * ```ts - * type MaybeReadonlyRef = (() => T) | ComputedRef - * ``` - */ -export type MaybeReadonlyRef = (() => T) | ComputedRef; - -/** - * Make all the nested attributes of an object or array to MaybeRef - * - * Good for accepting options that will be wrapped with `reactive` or `ref` - * - * ```ts - * UnwrapRef> === T - * ``` - */ -export type DeepMaybeRef = T extends Ref - ? MaybeRef - : T extends Array | object - ? { [K in keyof T]: DeepMaybeRef } - : MaybeRef; - -/** - * Infers the element type of an array - */ -export type ElementOf = T extends (infer E)[] ? E : never; - -export type ShallowUnwrapRef = T extends Ref ? P : T; - -export type Awaitable = Promise | T; - -export type ArgumentsType = T extends (...args: infer U) => any ? U : never; - -export interface Pausable { - /** - * A ref indicate whether a pausable instance is active - */ - isActive: Ref; - - /** - * Temporary pause the effect from executing - */ - pause: Fn; - - /** - * Resume the effects - */ - resume: Fn; -} - -export interface Stoppable { - /** - * A ref indicate whether a stoppable instance is executing - */ - isPending: Ref; - - /** - * Stop the effect from executing - */ - stop: Fn; - - /** - * Start the effects - */ - start: Fn; -} - -/** - * @deprecated Use `Stoppable` - */ -export type Stopable = Stoppable; - -export interface ConfigurableFlush { - /** - * Timing for monitoring changes, refer to WatchOptions for more details - * - * @default 'pre' - */ - flush?: WatchOptions['flush']; -} - -export interface ConfigurableFlushSync { - /** - * Timing for monitoring changes, refer to WatchOptions for more details. - * Unlike `watch()`, the default is set to `sync` - * - * @default 'sync' - */ - flush?: WatchOptions['flush']; -} - -// Internal Types -export type MapSources = { - [K in keyof T]: T[K] extends WatchSource ? V : never; -}; -export type MapOldSources = { - [K in keyof T]: T[K] extends WatchSource - ? Immediate extends true - ? V | undefined - : V - : never; -}; diff --git a/components/_util/hooks/_vueuse/unrefElement.ts b/components/_util/hooks/_vueuse/unrefElement.ts deleted file mode 100644 index 2f278c8be..000000000 --- a/components/_util/hooks/_vueuse/unrefElement.ts +++ /dev/null @@ -1,24 +0,0 @@ -import type { ComponentPublicInstance } from 'vue'; -import type { MaybeComputedRef, MaybeRef } from './types'; -import { resolveUnref } from './resolveUnref'; - -export type VueInstance = ComponentPublicInstance; -export type MaybeElementRef = MaybeRef; -export type MaybeComputedElementRef = MaybeComputedRef; -export type MaybeElement = HTMLElement | SVGElement | VueInstance | undefined | null; - -export type UnRefElementReturn = T extends VueInstance - ? Exclude - : T | undefined; - -/** - * Get the dom element of a ref of element or Vue component instance - * - * @param elRef - */ -export function unrefElement( - elRef: MaybeComputedElementRef, -): UnRefElementReturn { - const plain = resolveUnref(elRef); - return (plain as VueInstance)?.$el ?? plain; -} diff --git a/components/_util/hooks/_vueuse/useElementSize.ts b/components/_util/hooks/_vueuse/useElementSize.ts deleted file mode 100644 index bc90e9a06..000000000 --- a/components/_util/hooks/_vueuse/useElementSize.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { shallowRef, watch } from 'vue'; -import type { MaybeComputedElementRef } from './unrefElement'; -import type { UseResizeObserverOptions } from './useResizeObserver'; -import { useResizeObserver } from './useResizeObserver'; -import { unrefElement } from './unrefElement'; - -export interface ElementSize { - width: number; - height: number; -} - -/** - * Reactive size of an HTML element. - * - * @see https://vueuse.org/useElementSize - * @param target - * @param callback - * @param options - */ -export function useElementSize( - target: MaybeComputedElementRef, - initialSize: ElementSize = { width: 0, height: 0 }, - options: UseResizeObserverOptions = {}, -) { - const { box = 'content-box' } = options; - const width = shallowRef(initialSize.width); - const height = shallowRef(initialSize.height); - - useResizeObserver( - target, - ([entry]) => { - const boxSize = - box === 'border-box' - ? entry.borderBoxSize - : box === 'content-box' - ? entry.contentBoxSize - : entry.devicePixelContentBoxSize; - - if (boxSize) { - width.value = boxSize.reduce((acc, { inlineSize }) => acc + inlineSize, 0); - height.value = boxSize.reduce((acc, { blockSize }) => acc + blockSize, 0); - } else { - // fallback - width.value = entry.contentRect.width; - height.value = entry.contentRect.height; - } - }, - options, - ); - - watch( - () => unrefElement(target), - ele => { - width.value = ele ? initialSize.width : 0; - height.value = ele ? initialSize.height : 0; - }, - ); - - return { - width, - height, - }; -} - -export type UseElementSizeReturn = ReturnType; diff --git a/components/_util/hooks/_vueuse/useMutationObserver.ts b/components/_util/hooks/_vueuse/useMutationObserver.ts deleted file mode 100644 index 3a191d396..000000000 --- a/components/_util/hooks/_vueuse/useMutationObserver.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { tryOnScopeDispose } from './tryOnScopeDispose'; -import { watch } from 'vue'; -import type { MaybeElementRef } from './unrefElement'; -import { unrefElement } from './unrefElement'; -import { useSupported } from './useSupported'; -import type { ConfigurableWindow } from './_configurable'; -import { defaultWindow } from './_configurable'; - -export interface UseMutationObserverOptions extends MutationObserverInit, ConfigurableWindow {} - -/** - * Watch for changes being made to the DOM tree. - * - * @see https://vueuse.org/useMutationObserver - * @see https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver MutationObserver MDN - * @param target - * @param callback - * @param options - */ -export function useMutationObserver( - target: MaybeElementRef, - callback: MutationCallback, - options: UseMutationObserverOptions = {}, -) { - const { window = defaultWindow, ...mutationOptions } = options; - let observer: MutationObserver | undefined; - const isSupported = useSupported(() => window && 'MutationObserver' in window); - - const cleanup = () => { - if (observer) { - observer.disconnect(); - observer = undefined; - } - }; - - const stopWatch = watch( - () => unrefElement(target), - el => { - cleanup(); - - if (isSupported.value && window && el) { - observer = new MutationObserver(callback); - observer!.observe(el, mutationOptions); - } - }, - { immediate: true }, - ); - - const stop = () => { - cleanup(); - stopWatch(); - }; - - tryOnScopeDispose(stop); - - return { - isSupported, - stop, - }; -} - -export type UseMutationObserverReturn = ReturnType; diff --git a/components/_util/hooks/_vueuse/useResizeObserver.ts b/components/_util/hooks/_vueuse/useResizeObserver.ts deleted file mode 100644 index 288084cbb..000000000 --- a/components/_util/hooks/_vueuse/useResizeObserver.ts +++ /dev/null @@ -1,94 +0,0 @@ -import { tryOnScopeDispose } from './tryOnScopeDispose'; -import { watch } from 'vue'; -import type { MaybeComputedElementRef } from './unrefElement'; -import { unrefElement } from './unrefElement'; -import { useSupported } from './useSupported'; -import type { ConfigurableWindow } from './_configurable'; -import { defaultWindow } from './_configurable'; - -export interface ResizeObserverSize { - readonly inlineSize: number; - readonly blockSize: number; -} - -export interface ResizeObserverEntry { - readonly target: Element; - readonly contentRect: DOMRectReadOnly; - readonly borderBoxSize?: ReadonlyArray; - readonly contentBoxSize?: ReadonlyArray; - readonly devicePixelContentBoxSize?: ReadonlyArray; -} - -export type ResizeObserverCallback = ( - entries: ReadonlyArray, - observer: ResizeObserver, -) => void; - -export interface UseResizeObserverOptions extends ConfigurableWindow { - /** - * Sets which box model the observer will observe changes to. Possible values - * are `content-box` (the default), `border-box` and `device-pixel-content-box`. - * - * @default 'content-box' - */ - box?: ResizeObserverBoxOptions; -} - -declare class ResizeObserver { - constructor(callback: ResizeObserverCallback); - disconnect(): void; - observe(target: Element, options?: UseResizeObserverOptions): void; - unobserve(target: Element): void; -} - -/** - * Reports changes to the dimensions of an Element's content or the border-box - * - * @see https://vueuse.org/useResizeObserver - * @param target - * @param callback - * @param options - */ -export function useResizeObserver( - target: MaybeComputedElementRef, - callback: ResizeObserverCallback, - options: UseResizeObserverOptions = {}, -) { - const { window = defaultWindow, ...observerOptions } = options; - let observer: ResizeObserver | undefined; - const isSupported = useSupported(() => window && 'ResizeObserver' in window); - - const cleanup = () => { - if (observer) { - observer.disconnect(); - observer = undefined; - } - }; - - const stopWatch = watch( - () => unrefElement(target), - el => { - cleanup(); - - if (isSupported.value && window && el) { - observer = new ResizeObserver(callback); - observer!.observe(el, observerOptions); - } - }, - { immediate: true, flush: 'post' }, - ); - - const stop = () => { - cleanup(); - stopWatch(); - }; - - tryOnScopeDispose(stop); - - return { - isSupported, - stop, - }; -} - -export type UseResizeObserverReturn = ReturnType; diff --git a/components/_util/hooks/_vueuse/useSupported.ts b/components/_util/hooks/_vueuse/useSupported.ts deleted file mode 100644 index 360e8e613..000000000 --- a/components/_util/hooks/_vueuse/useSupported.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { tryOnMounted } from './tryOnMounted'; -import { shallowRef } from 'vue'; - -export function useSupported(callback: () => unknown, sync = false) { - const isSupported = shallowRef(); - - const update = () => (isSupported.value = Boolean(callback())); - - update(); - - tryOnMounted(update, sync); - return isSupported; -} diff --git a/components/_util/hooks/useBreakpoint.ts b/components/_util/hooks/useBreakpoint.ts deleted file mode 100644 index 1c20a996d..000000000 --- a/components/_util/hooks/useBreakpoint.ts +++ /dev/null @@ -1,24 +0,0 @@ -import type { Ref } from 'vue'; -import { onMounted, onUnmounted, shallowRef } from 'vue'; -import type { ScreenMap } from '../../_util/responsiveObserve'; -import useResponsiveObserve from '../../_util/responsiveObserve'; - -function useBreakpoint(): Ref { - const screens = shallowRef({}); - let token = null; - const responsiveObserve = useResponsiveObserve(); - - onMounted(() => { - token = responsiveObserve.value.subscribe(supportScreens => { - screens.value = supportScreens; - }); - }); - - onUnmounted(() => { - responsiveObserve.value.unsubscribe(token); - }); - - return screens; -} - -export default useBreakpoint; diff --git a/components/_util/hooks/useDestroyed.ts b/components/_util/hooks/useDestroyed.ts deleted file mode 100644 index 7fa1f5022..000000000 --- a/components/_util/hooks/useDestroyed.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { onBeforeUnmount, shallowRef } from 'vue'; - -const useDestroyed = () => { - const destroyed = shallowRef(false); - onBeforeUnmount(() => { - destroyed.value = true; - }); - - return destroyed; -}; - -export default useDestroyed; diff --git a/components/_util/hooks/useFlexGapSupport.ts b/components/_util/hooks/useFlexGapSupport.ts deleted file mode 100644 index 592cc762a..000000000 --- a/components/_util/hooks/useFlexGapSupport.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { onMounted, shallowRef } from 'vue'; -import { detectFlexGapSupported } from '../styleChecker'; - -export default () => { - const flexible = shallowRef(false); - onMounted(() => { - flexible.value = detectFlexGapSupported(); - }); - - return flexible; -}; diff --git a/components/_util/hooks/useId.ts b/components/_util/hooks/useId.ts deleted file mode 100644 index fea54f908..000000000 --- a/components/_util/hooks/useId.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { ref } from 'vue'; -import canUseDom from '../../_util/canUseDom'; - -let uuid = 0; - -/** Is client side and not jsdom */ -export const isBrowserClient = process.env.NODE_ENV !== 'test' && canUseDom(); - -/** Get unique id for accessibility usage */ -export function getUUID(): number | string { - let retId: string | number; - - // Test never reach - /* istanbul ignore if */ - if (isBrowserClient) { - retId = uuid; - uuid += 1; - } else { - retId = 'TEST_OR_SSR'; - } - - return retId; -} - -export default function useId(id = ref('')) { - // Inner id for accessibility usage. Only work in client side - const innerId = `vc_unique_${getUUID()}`; - - return id.value || innerId; -} diff --git a/components/_util/hooks/useLayoutEffect.ts b/components/_util/hooks/useLayoutEffect.ts deleted file mode 100644 index 6f17aedaa..000000000 --- a/components/_util/hooks/useLayoutEffect.ts +++ /dev/null @@ -1,48 +0,0 @@ -import type { Ref, ShallowRef } from 'vue'; - -import { shallowRef, ref, watch, nextTick, onMounted, onUnmounted } from 'vue'; - -function useLayoutEffect( - fn: (mount: boolean) => void | VoidFunction, - deps?: Ref | Ref[] | ShallowRef | ShallowRef[], -) { - const firstMount = shallowRef(true); - const cleanupFn = ref(null); - let stopWatch = null; - - stopWatch = watch( - deps, - () => { - nextTick(() => { - if (cleanupFn.value) { - cleanupFn.value(); - } - cleanupFn.value = fn(firstMount.value); - }); - }, - { immediate: true, flush: 'post' }, - ); - - onMounted(() => { - firstMount.value = false; - }); - - onUnmounted(() => { - if (cleanupFn.value) { - cleanupFn.value(); - } - if (stopWatch) { - stopWatch(); - } - }); -} - -export const useLayoutUpdateEffect = (callback, deps) => { - useLayoutEffect(firstMount => { - if (!firstMount) { - return callback(); - } - }, deps); -}; - -export default useLayoutEffect; diff --git a/components/_util/hooks/useLayoutState.ts b/components/_util/hooks/useLayoutState.ts deleted file mode 100644 index 95189fccd..000000000 --- a/components/_util/hooks/useLayoutState.ts +++ /dev/null @@ -1,41 +0,0 @@ -import type { Ref } from 'vue'; -import { onBeforeUnmount, shallowRef } from 'vue'; -import raf from '../raf'; - -export type Updater = (prev: State) => State; -/** - * Execute code before next frame but async - */ -export function useLayoutState( - defaultState: State, -): [Ref, (updater: Updater) => void] { - const stateRef = shallowRef(defaultState); - let tempState = stateRef.value; - - let updateBatchRef = []; - const rafRef = shallowRef(); - function setFrameState(updater: Updater) { - raf.cancel(rafRef.value); - updateBatchRef.push(updater); - - rafRef.value = raf(() => { - const prevBatch = updateBatchRef; - // const prevState = stateRef.value; - updateBatchRef = []; - - prevBatch.forEach(batchUpdater => { - tempState = batchUpdater(tempState); - }); - - // if (tempState !== stateRef.value) { - stateRef.value = tempState; - // } - }); - } - - onBeforeUnmount(() => { - raf.cancel(rafRef.value); - }); - - return [stateRef as Ref, setFrameState]; -} diff --git a/components/_util/hooks/useMemo.ts b/components/_util/hooks/useMemo.ts deleted file mode 100644 index 769136999..000000000 --- a/components/_util/hooks/useMemo.ts +++ /dev/null @@ -1,21 +0,0 @@ -import type { Ref, WatchSource } from 'vue'; -import { ref, watch } from 'vue'; - -export default function useMemo( - getValue: () => T, - condition: (WatchSource | object)[], - shouldUpdate?: (prev: any[], next: any[]) => boolean, -) { - const cacheRef: Ref = ref(getValue() as any); - watch(condition, (next, pre) => { - if (shouldUpdate) { - if (shouldUpdate(next, pre)) { - cacheRef.value = getValue(); - } - } else { - cacheRef.value = getValue(); - } - }); - - return cacheRef; -} diff --git a/components/_util/hooks/useMergedState.ts b/components/_util/hooks/useMergedState.ts deleted file mode 100644 index 179e7dc61..000000000 --- a/components/_util/hooks/useMergedState.ts +++ /dev/null @@ -1,47 +0,0 @@ -import type { Ref, UnwrapRef } from 'vue'; -import { toRaw, watchEffect, unref, watch, ref } from 'vue'; - -export default function useMergedState>( - defaultStateValue: T | (() => T), - option?: { - defaultValue?: T | (() => T); - value?: Ref | Ref>; - onChange?: (val: T, prevValue: T) => void; - postState?: (val: T) => T; - }, -): [R, (val: T) => void] { - const { defaultValue, value = ref() } = option || {}; - let initValue: T = - typeof defaultStateValue === 'function' ? (defaultStateValue as any)() : defaultStateValue; - if (value.value !== undefined) { - initValue = unref(value as any) as T; - } - if (defaultValue !== undefined) { - initValue = typeof defaultValue === 'function' ? (defaultValue as any)() : defaultValue; - } - - const innerValue = ref(initValue) as Ref; - const mergedValue = ref(initValue) as Ref; - watchEffect(() => { - let val = value.value !== undefined ? value.value : innerValue.value; - if (option.postState) { - val = option.postState(val as T); - } - mergedValue.value = val as T; - }); - - function triggerChange(newValue: T) { - const preVal = mergedValue.value; - innerValue.value = newValue; - if (toRaw(mergedValue.value) !== newValue && option.onChange) { - option.onChange(newValue, preVal); - } - } - - // Effect of reset value to `undefined` - watch(value, () => { - innerValue.value = value.value as T; - }); - - return [mergedValue as unknown as R, triggerChange]; -} diff --git a/components/_util/hooks/useRefs.ts b/components/_util/hooks/useRefs.ts deleted file mode 100644 index 965805e20..000000000 --- a/components/_util/hooks/useRefs.ts +++ /dev/null @@ -1,20 +0,0 @@ -import type { Ref, ComponentPublicInstance } from 'vue'; -import { onBeforeUpdate, ref } from 'vue'; -import type { Key } from '../type'; - -type RefType = HTMLElement | ComponentPublicInstance; -export type RefsValue = Map; -type UseRef = [(key: Key) => (el: RefType) => void, Ref]; -const useRefs = (): UseRef => { - const refs = ref(new Map()); - - const setRef = (key: Key) => (el: RefType) => { - refs.value.set(key, el); - }; - onBeforeUpdate(() => { - refs.value = new Map(); - }); - return [setRef, refs]; -}; - -export default useRefs; diff --git a/components/_util/hooks/useScrollLocker.ts b/components/_util/hooks/useScrollLocker.ts deleted file mode 100644 index a1e8bb4eb..000000000 --- a/components/_util/hooks/useScrollLocker.ts +++ /dev/null @@ -1,52 +0,0 @@ -import type { Ref } from 'vue'; -import { computed, watchEffect } from 'vue'; -import { updateCSS, removeCSS } from '../../vc-util/Dom/dynamicCSS'; -import getScrollBarSize from '../../_util/getScrollBarSize'; -import canUseDom from '../../_util/canUseDom'; - -const UNIQUE_ID = `vc-util-locker-${Date.now()}`; - -let uuid = 0; - -/**../vc-util/Dom/dynam - * Test usage export. Do not use in your production - */ -export function isBodyOverflowing() { - return ( - document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight) && - window.innerWidth > document.body.offsetWidth - ); -} - -export default function useScrollLocker(lock?: Ref) { - const mergedLock = computed(() => !!lock && !!lock.value); - uuid += 1; - const id = `${UNIQUE_ID}_${uuid}`; - - watchEffect( - onClear => { - if (!canUseDom()) { - return; - } - if (mergedLock.value) { - const scrollbarSize = getScrollBarSize(); - const isOverflow = isBodyOverflowing(); - - updateCSS( - ` -html body { - overflow-y: hidden; - ${isOverflow ? `width: calc(100% - ${scrollbarSize}px);` : ''} -}`, - id, - ); - } else { - removeCSS(id); - } - onClear(() => { - removeCSS(id); - }); - }, - { flush: 'post' }, - ); -} diff --git a/components/_util/hooks/useState.ts b/components/_util/hooks/useState.ts deleted file mode 100644 index 5276ab44a..000000000 --- a/components/_util/hooks/useState.ts +++ /dev/null @@ -1,17 +0,0 @@ -import type { Ref } from 'vue'; -import { ref } from 'vue'; - -export default function useState>( - defaultStateValue?: T | (() => T), -): [R, (val: T) => void] { - const initValue: T = - typeof defaultStateValue === 'function' ? (defaultStateValue as any)() : defaultStateValue; - - const innerValue = ref(initValue) as Ref; - - function triggerChange(newValue: T) { - innerValue.value = newValue; - } - - return [innerValue as unknown as R, triggerChange]; -} diff --git a/components/_util/isNumeric.ts b/components/_util/isNumeric.ts deleted file mode 100644 index 2545ed60f..000000000 --- a/components/_util/isNumeric.ts +++ /dev/null @@ -1,5 +0,0 @@ -const isNumeric = (value: any): boolean => { - return !isNaN(parseFloat(value)) && isFinite(value); -}; - -export default isNumeric; diff --git a/components/_util/isValid.ts b/components/_util/isValid.ts deleted file mode 100644 index c89b176e7..000000000 --- a/components/_util/isValid.ts +++ /dev/null @@ -1,4 +0,0 @@ -const isValid = (value: any): boolean => { - return value !== undefined && value !== null && value !== ''; -}; -export default isValid; diff --git a/components/_util/isValidValue.ts b/components/_util/isValidValue.ts deleted file mode 100644 index d83b13f30..000000000 --- a/components/_util/isValidValue.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default function (val: any) { - return val !== undefined && val !== null; -} diff --git a/components/_util/json2mq.ts b/components/_util/json2mq.ts deleted file mode 100644 index f384396db..000000000 --- a/components/_util/json2mq.ts +++ /dev/null @@ -1,60 +0,0 @@ -/** - * source by `json2mq` - * https://github.com/akiran/json2mq.git - */ - -const camel2hyphen = function (str: string) { - return str - .replace(/[A-Z]/g, function (match) { - return '-' + match.toLowerCase(); - }) - .toLowerCase(); -}; - -const isDimension = function (feature: string) { - const re = /[height|width]$/; - return re.test(feature); -}; - -const obj2mq = function (obj: { [x: string]: any }) { - let mq = ''; - const features = Object.keys(obj); - features.forEach(function (feature, index) { - let value = obj[feature]; - feature = camel2hyphen(feature); - // Add px to dimension features - if (isDimension(feature) && typeof value === 'number') { - value = value + 'px'; - } - if (value === true) { - mq += feature; - } else if (value === false) { - mq += 'not ' + feature; - } else { - mq += '(' + feature + ': ' + value + ')'; - } - if (index < features.length - 1) { - mq += ' and '; - } - }); - return mq; -}; - -export default function (query: any[]) { - let mq = ''; - if (typeof query === 'string') { - return query; - } - // Handling array of media queries - if (query instanceof Array) { - query.forEach(function (q, index) { - mq += obj2mq(q); - if (index < query.length - 1) { - mq += ', '; - } - }); - return mq; - } - // Handling single media query - return obj2mq(query); -} diff --git a/components/_util/omit.ts b/components/_util/omit.ts deleted file mode 100644 index 3388fd122..000000000 --- a/components/_util/omit.ts +++ /dev/null @@ -1,10 +0,0 @@ -function omit(obj: T, fields: K[]): Omit { - // eslint-disable-next-line prefer-object-spread - const shallowCopy = Object.assign({}, obj); - for (let i = 0; i < fields.length; i += 1) { - const key = fields[i]; - delete shallowCopy[key]; - } - return shallowCopy; -} -export default omit; diff --git a/components/_util/pickAttrs.ts b/components/_util/pickAttrs.ts deleted file mode 100644 index 54dc00c1d..000000000 --- a/components/_util/pickAttrs.ts +++ /dev/null @@ -1,75 +0,0 @@ -const attributes = `accept acceptcharset accesskey action allowfullscreen allowtransparency -alt async autocomplete autofocus autoplay capture cellpadding cellspacing challenge -charset checked classid classname colspan cols content contenteditable contextmenu -controls coords crossorigin data datetime default defer dir disabled download draggable -enctype form formaction formenctype formmethod formnovalidate formtarget frameborder -headers height hidden high href hreflang htmlfor for httpequiv icon id inputmode integrity -is keyparams keytype kind label lang list loop low manifest marginheight marginwidth max maxlength media -mediagroup method min minlength multiple muted name novalidate nonce open -optimum pattern placeholder poster preload radiogroup readonly rel required -reversed role rowspan rows sandbox scope scoped scrolling seamless selected -shape size sizes span spellcheck src srcdoc srclang srcset start step style -summary tabindex target title type usemap value width wmode wrap`; - -const eventsName = `onCopy onCut onPaste onCompositionend onCompositionstart onCompositionupdate onKeydown - onKeypress onKeyup onFocus onBlur onChange onInput onSubmit onClick onContextmenu onDoubleclick onDblclick - onDrag onDragend onDragenter onDragexit onDragleave onDragover onDragstart onDrop onMousedown - onMouseenter onMouseleave onMousemove onMouseout onMouseover onMouseup onSelect onTouchcancel - onTouchend onTouchmove onTouchstart onTouchstartPassive onTouchmovePassive onScroll onWheel onAbort onCanplay onCanplaythrough - onDurationchange onEmptied onEncrypted onEnded onError onLoadeddata onLoadedmetadata - onLoadstart onPause onPlay onPlaying onProgress onRatechange onSeeked onSeeking onStalled onSuspend onTimeupdate onVolumechange onWaiting onLoad onError`; - -const propList = `${attributes} ${eventsName}`.split(/[\s\n]+/); - -/* eslint-enable max-len */ -const ariaPrefix = 'aria-'; -const dataPrefix = 'data-'; - -function match(key: string, prefix: string) { - return key.indexOf(prefix) === 0; -} - -export interface PickConfig { - aria?: boolean; - data?: boolean; - attr?: boolean; -} - -/** - * Picker props from exist props with filter - * @param props Passed props - * @param ariaOnly boolean | { aria?: boolean; data?: boolean; attr?: boolean; } filter config - */ -export default function pickAttrs(props: object, ariaOnly: boolean | PickConfig = false) { - let mergedConfig; - if (ariaOnly === false) { - mergedConfig = { - aria: true, - data: true, - attr: true, - }; - } else if (ariaOnly === true) { - mergedConfig = { - aria: true, - }; - } else { - mergedConfig = { - ...ariaOnly, - }; - } - - const attrs = {}; - Object.keys(props).forEach(key => { - if ( - // Aria - (mergedConfig.aria && (key === 'role' || match(key, ariaPrefix))) || - // Data - (mergedConfig.data && match(key, dataPrefix)) || - // Attr - (mergedConfig.attr && (propList.includes(key) || propList.includes(key.toLowerCase()))) - ) { - attrs[key] = props[key]; - } - }); - return attrs; -} diff --git a/components/_util/placements.ts b/components/_util/placements.ts deleted file mode 100644 index c96ff90ee..000000000 --- a/components/_util/placements.ts +++ /dev/null @@ -1,111 +0,0 @@ -import { placements } from '../vc-tooltip/src/placements'; - -const autoAdjustOverflowEnabled = { - adjustX: 1, - adjustY: 1, -}; - -const autoAdjustOverflowDisabled = { - adjustX: 0, - adjustY: 0, -}; - -const targetOffset = [0, 0]; - -export interface AdjustOverflow { - adjustX?: 0 | 1; - adjustY?: 0 | 1; -} - -export interface PlacementsConfig { - arrowWidth?: number; - horizontalArrowShift?: number; - verticalArrowShift?: number; - arrowPointAtCenter?: boolean; - autoAdjustOverflow?: boolean | AdjustOverflow; -} - -export function getOverflowOptions(autoAdjustOverflow?: boolean | AdjustOverflow) { - if (typeof autoAdjustOverflow === 'boolean') { - return autoAdjustOverflow ? autoAdjustOverflowEnabled : autoAdjustOverflowDisabled; - } - return { - ...autoAdjustOverflowDisabled, - ...autoAdjustOverflow, - }; -} - -export default function getPlacements(config: PlacementsConfig) { - const { - arrowWidth = 4, - horizontalArrowShift = 16, - verticalArrowShift = 8, - autoAdjustOverflow, - arrowPointAtCenter, - } = config; - const placementMap = { - left: { - points: ['cr', 'cl'], - offset: [-4, 0], - }, - right: { - points: ['cl', 'cr'], - offset: [4, 0], - }, - top: { - points: ['bc', 'tc'], - offset: [0, -4], - }, - bottom: { - points: ['tc', 'bc'], - offset: [0, 4], - }, - topLeft: { - points: ['bl', 'tc'], - offset: [-(horizontalArrowShift + arrowWidth), -4], - }, - leftTop: { - points: ['tr', 'cl'], - offset: [-4, -(verticalArrowShift + arrowWidth)], - }, - topRight: { - points: ['br', 'tc'], - offset: [horizontalArrowShift + arrowWidth, -4], - }, - rightTop: { - points: ['tl', 'cr'], - offset: [4, -(verticalArrowShift + arrowWidth)], - }, - bottomRight: { - points: ['tr', 'bc'], - offset: [horizontalArrowShift + arrowWidth, 4], - }, - rightBottom: { - points: ['bl', 'cr'], - offset: [4, verticalArrowShift + arrowWidth], - }, - bottomLeft: { - points: ['tl', 'bc'], - offset: [-(horizontalArrowShift + arrowWidth), 4], - }, - leftBottom: { - points: ['br', 'cl'], - offset: [-4, verticalArrowShift + arrowWidth], - }, - }; - Object.keys(placementMap).forEach(key => { - placementMap[key] = arrowPointAtCenter - ? { - ...placementMap[key], - overflow: getOverflowOptions(autoAdjustOverflow), - targetOffset, - } - : { - ...placements[key], - overflow: getOverflowOptions(autoAdjustOverflow), - }; - - placementMap[key].ignoreShake = true; - }); - return placementMap; -} diff --git a/components/_util/props-util/index.ts b/components/_util/props-util/index.ts deleted file mode 100644 index 85d694af8..000000000 --- a/components/_util/props-util/index.ts +++ /dev/null @@ -1,285 +0,0 @@ -import classNames from '../classNames'; -import { isVNode, Fragment, Comment, Text } from 'vue'; -import { camelize, hyphenate, isOn, resolvePropValue } from '../util'; -import isValid from '../isValid'; -import initDefaultProps from './initDefaultProps'; -import type { VueInstance } from '../hooks/_vueuse/unrefElement'; -// function getType(fn) { -// const match = fn && fn.toString().match(/^\s*function (\w+)/); -// return match ? match[1] : ''; -// } - -const splitAttrs = (attrs: any) => { - const allAttrs = Object.keys(attrs); - const eventAttrs: Record = {}; - const onEvents: Record = {}; - const extraAttrs: Record = {}; - for (let i = 0, l = allAttrs.length; i < l; i++) { - const key = allAttrs[i]; - if (isOn(key)) { - eventAttrs[key[2].toLowerCase() + key.slice(3)] = attrs[key]; - onEvents[key] = attrs[key]; - } else { - extraAttrs[key] = attrs[key]; - } - } - return { onEvents, events: eventAttrs, extraAttrs }; -}; -const parseStyleText = (cssText = '', camel = false) => { - const res = {}; - const listDelimiter = /;(?![^(]*\))/g; - const propertyDelimiter = /:(.+)/; - if (typeof cssText === 'object') return cssText; - cssText.split(listDelimiter).forEach(function (item) { - if (item) { - const tmp = item.split(propertyDelimiter); - if (tmp.length > 1) { - const k = camel ? camelize(tmp[0].trim()) : tmp[0].trim(); - res[k] = tmp[1].trim(); - } - } - }); - return res; -}; - -const hasProp = (instance: any, prop: string) => { - return instance[prop] !== undefined; -}; - -export const skipFlattenKey = Symbol('skipFlatten'); -const flattenChildren = (children = [], filterEmpty = true) => { - const temp = Array.isArray(children) ? children : [children]; - const res = []; - temp.forEach(child => { - if (Array.isArray(child)) { - res.push(...flattenChildren(child, filterEmpty)); - } else if (child && child.type === Fragment) { - if (child.key === skipFlattenKey) { - res.push(child); - } else { - res.push(...flattenChildren(child.children, filterEmpty)); - } - } else if (child && isVNode(child)) { - if (filterEmpty && !isEmptyElement(child)) { - res.push(child); - } else if (!filterEmpty) { - res.push(child); - } - } else if (isValid(child)) { - res.push(child); - } - }); - return res; -}; - -const getSlot = (self: any, name = 'default', options = {}) => { - if (isVNode(self)) { - if (self.type === Fragment) { - return name === 'default' ? flattenChildren(self.children as any[]) : []; - } else if (self.children && self.children[name]) { - return flattenChildren(self.children[name](options)); - } else { - return []; - } - } else { - const res = self.$slots[name] && self.$slots[name](options); - return flattenChildren(res); - } -}; - -const findDOMNode = (instance: any) => { - let node = instance?.vnode?.el || (instance && (instance.$el || instance)); - while (node && !node.tagName) { - node = node.nextSibling; - } - return node; -}; -const getOptionProps = (instance: VueInstance) => { - const res = {}; - if (instance.$ && instance.$.vnode) { - const props = instance.$.vnode.props || {}; - Object.keys(instance.$props).forEach(k => { - const v = instance.$props[k]; - const hyphenateKey = hyphenate(k); - if (v !== undefined || hyphenateKey in props) { - res[k] = v; // 直接取 $props[k] - } - }); - } else if (isVNode(instance) && typeof instance.type === 'object') { - const originProps = instance.props || {}; - const props = {}; - Object.keys(originProps).forEach(key => { - props[camelize(key)] = originProps[key]; - }); - const options = (instance.type as any).props || {}; - Object.keys(options).forEach(k => { - const v = resolvePropValue(options, props, k, props[k]); - if (v !== undefined || k in props) { - res[k] = v; - } - }); - } - return res; -}; -const getComponent = (instance: any, prop = 'default', options = instance, execute = true) => { - let com = undefined; - if (instance.$) { - const temp = instance[prop]; - if (temp !== undefined) { - return typeof temp === 'function' && execute ? temp(options) : temp; - } else { - com = instance.$slots[prop]; - com = execute && com ? com(options) : com; - } - } else if (isVNode(instance)) { - const temp = instance.props && instance.props[prop]; - if (temp !== undefined && instance.props !== null) { - return typeof temp === 'function' && execute ? temp(options) : temp; - } else if (instance.type === Fragment) { - com = instance.children; - } else if (instance.children && instance.children[prop]) { - com = instance.children[prop]; - com = execute && com ? com(options) : com; - } - } - if (Array.isArray(com)) { - com = flattenChildren(com); - com = com.length === 1 ? com[0] : com; - com = com.length === 0 ? undefined : com; - } - return com; -}; - -const getKey = (ele: any) => { - const key = ele.key; - return key; -}; - -export function getEvents(ele: any = {}, on = true) { - let props = {}; - if (ele.$) { - props = { ...props, ...ele.$attrs }; - } else { - props = { ...props, ...ele.props }; - } - return splitAttrs(props)[on ? 'onEvents' : 'events']; -} - -export function getClass(ele: any) { - const props = (isVNode(ele) ? ele.props : ele.$attrs) || {}; - const tempCls = props.class || {}; - let cls = {}; - if (typeof tempCls === 'string') { - tempCls.split(' ').forEach(c => { - cls[c.trim()] = true; - }); - } else if (Array.isArray(tempCls)) { - classNames(tempCls) - .split(' ') - .forEach(c => { - cls[c.trim()] = true; - }); - } else { - cls = { ...cls, ...tempCls }; - } - return cls; -} -export function getStyle(ele: any, camel?: boolean) { - const props = (isVNode(ele) ? ele.props : ele.$attrs) || {}; - let style = props.style || {}; - if (typeof style === 'string') { - style = parseStyleText(style, camel); - } else if (camel && style) { - // 驼峰化 - const res = {}; - Object.keys(style).forEach(k => (res[camelize(k)] = style[k])); - return res; - } - return style; -} - -export function getComponentName(opts: any) { - return opts && (opts.Ctor.options.name || opts.tag); -} - -export function isFragment(c: any) { - return c.length === 1 && c[0].type === Fragment; -} - -export function isEmptyContent(c: any) { - return c === undefined || c === null || c === '' || (Array.isArray(c) && c.length === 0); -} - -export function isEmptyElement(c: any) { - return ( - c && - (c.type === Comment || - (c.type === Fragment && c.children.length === 0) || - (c.type === Text && c.children.trim() === '')) - ); -} - -export function isEmptySlot(c: any) { - return !c || c().every(isEmptyElement); -} - -export function isStringElement(c: any) { - return c && c.type === Text; -} - -export function filterEmpty(children = []) { - const res = []; - children.forEach(child => { - if (Array.isArray(child)) { - res.push(...child); - } else if (child?.type === Fragment) { - res.push(...filterEmpty(child.children)); - } else { - res.push(child); - } - }); - return res.filter(c => !isEmptyElement(c)); -} - -export function filterEmptyWithUndefined(children: any[]) { - if (children) { - const coms = filterEmpty(children); - return coms.length ? coms : undefined; - } else { - return children; - } -} - -function isValidElement(element: any) { - if (Array.isArray(element) && element.length === 1) { - element = element[0]; - } - return element && element.__v_isVNode && typeof element.type !== 'symbol'; // remove text node -} - -function getPropsSlot(slots: any, props: any, prop = 'default') { - return props[prop] ?? slots[prop]?.(); -} - -export const getTextFromElement = (ele: any) => { - if (isValidElement(ele) && isStringElement(ele[0])) { - return ele[0].children; - } - return ele; -}; -export { - splitAttrs, - hasProp, - getOptionProps, - getComponent, - getKey, - parseStyleText, - initDefaultProps, - isValidElement, - camelize, - getSlot, - findDOMNode, - flattenChildren, - getPropsSlot, -}; -export default hasProp; diff --git a/components/_util/props-util/initDefaultProps.ts b/components/_util/props-util/initDefaultProps.ts deleted file mode 100644 index 4bdc319b2..000000000 --- a/components/_util/props-util/initDefaultProps.ts +++ /dev/null @@ -1,34 +0,0 @@ -import type { PropType } from 'vue'; -import type { VueTypeValidableDef, VueTypeDef } from 'vue-types'; - -const initDefaultProps = ( - types: T, - defaultProps: { - [K in keyof T]?: T[K] extends VueTypeValidableDef - ? U - : T[K] extends VueTypeDef - ? U - : T[K] extends { type: PropType } - ? U - : any; - }, -): T => { - const propTypes: T = { ...types }; - Object.keys(defaultProps).forEach(k => { - const prop = propTypes[k] as VueTypeValidableDef; - if (prop) { - if (prop.type || prop.default) { - prop.default = defaultProps[k]; - } else if (prop.def) { - prop.def(defaultProps[k]); - } else { - propTypes[k] = { type: prop, default: defaultProps[k] }; - } - } else { - throw new Error(`not have ${k} prop`); - } - }); - return propTypes; -}; - -export default initDefaultProps; diff --git a/components/_util/raf.ts b/components/_util/raf.ts deleted file mode 100644 index 160c73c80..000000000 --- a/components/_util/raf.ts +++ /dev/null @@ -1,47 +0,0 @@ -let raf = (callback: FrameRequestCallback) => setTimeout(callback, 16) as any; -let caf = (num: number) => clearTimeout(num); - -if (typeof window !== 'undefined' && 'requestAnimationFrame' in window) { - raf = (callback: FrameRequestCallback) => window.requestAnimationFrame(callback); - caf = (handle: number) => window.cancelAnimationFrame(handle); -} - -let rafUUID = 0; -const rafIds = new Map(); - -function cleanup(id: number) { - rafIds.delete(id); -} - -export default function wrapperRaf(callback: () => void, times = 1): number { - rafUUID += 1; - const id = rafUUID; - - function callRef(leftTimes: number) { - if (leftTimes === 0) { - // Clean up - cleanup(id); - - // Trigger - callback(); - } else { - // Next raf - const realId = raf(() => { - callRef(leftTimes - 1); - }); - - // Bind real raf id - rafIds.set(id, realId); - } - } - - callRef(times); - - return id; -} - -wrapperRaf.cancel = (id: number) => { - const realId = rafIds.get(id); - cleanup(realId); - return caf(realId); -}; diff --git a/components/_util/reactivePick.ts b/components/_util/reactivePick.ts deleted file mode 100644 index c4164470e..000000000 --- a/components/_util/reactivePick.ts +++ /dev/null @@ -1,15 +0,0 @@ -import type { UnwrapRef } from 'vue'; -import { reactive, toRef } from 'vue'; -import fromPairs from 'lodash-es/fromPairs'; - -/** - * Reactively pick fields from a reactive object - * - * @see https://vueuse.js.org/reactivePick - */ -export function reactivePick( - obj: T, - ...keys: K[] -): { [S in K]: UnwrapRef } { - return reactive(fromPairs(keys.map(k => [k, toRef(obj, k)]))) as any; -} diff --git a/components/_util/requestAnimationTimeout.ts b/components/_util/requestAnimationTimeout.ts deleted file mode 100644 index f82f19fed..000000000 --- a/components/_util/requestAnimationTimeout.ts +++ /dev/null @@ -1,23 +0,0 @@ -import getRequestAnimationFrame, { - cancelRequestAnimationFrame as caf, -} from './getRequestAnimationFrame'; -const raf = getRequestAnimationFrame(); - -export const cancelAnimationTimeout = frame => caf(frame.id); - -export const requestAnimationTimeout = (callback, delay = 0) => { - const start = Date.now(); - function timeout() { - if (Date.now() - start >= delay) { - callback.call(); - } else { - frame.id = raf(timeout); - } - } - - const frame = { - id: raf(timeout), - }; - - return frame; -}; diff --git a/components/_util/responsiveObserve.ts b/components/_util/responsiveObserve.ts deleted file mode 100644 index 11bd47db2..000000000 --- a/components/_util/responsiveObserve.ts +++ /dev/null @@ -1,85 +0,0 @@ -import { computed } from 'vue'; -import type { GlobalToken } from '../theme/interface'; -import { useToken } from '../theme/internal'; - -export type Breakpoint = 'xxxl' | 'xxl' | 'xl' | 'lg' | 'md' | 'sm' | 'xs'; -export type BreakpointMap = Record; -export type ScreenMap = Partial>; -export type ScreenSizeMap = Partial>; - -export const responsiveArray: Breakpoint[] = ['xxxl', 'xxl', 'xl', 'lg', 'md', 'sm', 'xs']; -type SubscribeFunc = (screens: ScreenMap) => void; - -const getResponsiveMap = (token: GlobalToken): BreakpointMap => ({ - xs: `(max-width: ${token.screenXSMax}px)`, - sm: `(min-width: ${token.screenSM}px)`, - md: `(min-width: ${token.screenMD}px)`, - lg: `(min-width: ${token.screenLG}px)`, - xl: `(min-width: ${token.screenXL}px)`, - xxl: `(min-width: ${token.screenXXL}px)`, - xxxl: `{min-width: ${token.screenXXXL}px}`, -}); - -export default function useResponsiveObserver() { - const [, token] = useToken(); - - return computed(() => { - const responsiveMap: BreakpointMap = getResponsiveMap(token.value); - const subscribers = new Map(); - let subUid = -1; - let screens = {}; - - return { - matchHandlers: {} as { - [prop: string]: { - mql: MediaQueryList; - listener: ((this: MediaQueryList, ev: MediaQueryListEvent) => any) | null; - }; - }, - dispatch(pointMap: ScreenMap) { - screens = pointMap; - subscribers.forEach(func => func(screens)); - return subscribers.size >= 1; - }, - subscribe(func: SubscribeFunc): number { - if (!subscribers.size) this.register(); - subUid += 1; - subscribers.set(subUid, func); - func(screens); - return subUid; - }, - unsubscribe(paramToken: number) { - subscribers.delete(paramToken); - if (!subscribers.size) this.unregister(); - }, - unregister() { - Object.keys(responsiveMap).forEach((screen: string) => { - const matchMediaQuery = responsiveMap[screen]; - const handler = this.matchHandlers[matchMediaQuery]; - handler?.mql.removeListener(handler?.listener); - }); - subscribers.clear(); - }, - register() { - Object.keys(responsiveMap).forEach((screen: string) => { - const matchMediaQuery = responsiveMap[screen]; - const listener = ({ matches }: { matches: boolean }) => { - this.dispatch({ - ...screens, - [screen]: matches, - }); - }; - const mql = window.matchMedia(matchMediaQuery); - mql.addListener(listener); - this.matchHandlers[matchMediaQuery] = { - mql, - listener, - }; - - listener(mql); - }); - }, - responsiveMap, - }; - }); -} diff --git a/components/_util/scrollTo.ts b/components/_util/scrollTo.ts deleted file mode 100644 index 59bb1436a..000000000 --- a/components/_util/scrollTo.ts +++ /dev/null @@ -1,38 +0,0 @@ -import raf from './raf'; -import { easeInOutCubic } from './easings'; -import getScroll, { isWindow } from './getScroll'; - -interface ScrollToOptions { - /** Scroll container, default as window */ - getContainer?: () => HTMLElement | Window | Document; - /** Scroll end callback */ - callback?: () => any; - /** Animation duration, default as 450 */ - duration?: number; -} - -export default function scrollTo(y: number, options: ScrollToOptions = {}) { - const { getContainer = () => window, callback, duration = 450 } = options; - const container = getContainer(); - const scrollTop = getScroll(container); - const startTime = Date.now(); - - const frameFunc = () => { - const timestamp = Date.now(); - const time = timestamp - startTime; - const nextScrollTop = easeInOutCubic(time > duration ? duration : time, scrollTop, y, duration); - if (isWindow(container)) { - (container as Window).scrollTo(window.scrollX, nextScrollTop); - } else if (container instanceof Document) { - (container as Document).documentElement.scrollTop = nextScrollTop; - } else { - (container as HTMLElement).scrollTop = nextScrollTop; - } - if (time < duration) { - raf(frameFunc); - } else if (typeof callback === 'function') { - callback(); - } - }; - raf(frameFunc); -} diff --git a/components/_util/setStyle.ts b/components/_util/setStyle.ts deleted file mode 100644 index c12e8c85f..000000000 --- a/components/_util/setStyle.ts +++ /dev/null @@ -1,30 +0,0 @@ -import type { CSSProperties } from 'vue'; - -/** - * Easy to set element style, return previous style - * IE browser compatible(IE browser doesn't merge overflow style, need to set it separately) - * https://github.com/ant-design/ant-design/issues/19393 - * - */ -export interface SetStyleOptions { - element?: HTMLElement; -} -function setStyle(style: CSSProperties, options: SetStyleOptions = {}): CSSProperties { - const { element = document.body } = options; - const oldStyle: CSSProperties = {}; - - const styleKeys = Object.keys(style); - - // IE browser compatible - styleKeys.forEach(key => { - oldStyle[key] = element.style[key]; - }); - - styleKeys.forEach(key => { - element.style[key] = style[key]; - }); - - return oldStyle; -} - -export default setStyle; diff --git a/components/_util/shallowequal.ts b/components/_util/shallowequal.ts deleted file mode 100644 index 9a09cc9b6..000000000 --- a/components/_util/shallowequal.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { toRaw } from 'vue'; - -function shallowEqual(objA: any, objB: any, compare?: any, compareContext?: any) { - let ret = compare ? compare.call(compareContext, objA, objB) : void 0; - - if (ret !== void 0) { - return !!ret; - } - - if (objA === objB) { - return true; - } - - if (typeof objA !== 'object' || !objA || typeof objB !== 'object' || !objB) { - return false; - } - - const keysA = Object.keys(objA); - const keysB = Object.keys(objB); - - if (keysA.length !== keysB.length) { - return false; - } - - const bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB); - - // Test for A's keys different from B. - for (let idx = 0; idx < keysA.length; idx++) { - const key = keysA[idx]; - - if (!bHasOwnProperty(key)) { - return false; - } - - const valueA = objA[key]; - const valueB = objB[key]; - - ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0; - - if (ret === false || (ret === void 0 && valueA !== valueB)) { - return false; - } - } - - return true; -} - -export default function (value: any, other: any) { - return shallowEqual(toRaw(value), toRaw(other)); -} diff --git a/components/_util/static-style-extract/__tests__/__snapshots__/index.test.js.snap b/components/_util/static-style-extract/__tests__/__snapshots__/index.test.js.snap deleted file mode 100644 index 0c5c3c60c..000000000 --- a/components/_util/static-style-extract/__tests__/__snapshots__/index.test.js.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Static-Style-Extract should extract static styles with customTheme and customStyle 1`] = `".anticon{display:inline-flex;align-items:center;color:inherit;font-style:normal;line-height:0;text-align:center;text-transform:none;vertical-align:-0.125em;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}.anticon >*{line-height:1;}.anticon svg{display:inline-block;}.anticon .anticon .anticon-icon{display:block;}a{color:#1668dc;text-decoration:none;background-color:transparent;outline:none;cursor:pointer;transition:color 0.3s;-webkit-text-decoration-skip:objects;}a:hover{color:#15417e;}a:active{color:#1554ad;}a:active,a:hover{text-decoration:none;outline:0;}a:focus{text-decoration:none;outline:0;}a[disabled]{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;}[class^=\\"ant-affix\\"],[class*=\\" ant-affix\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-affix\\"]::before,[class*=\\" ant-affix\\"]::before,[class^=\\"ant-affix\\"]::after,[class*=\\" ant-affix\\"]::after{box-sizing:border-box;}[class^=\\"ant-affix\\"] [class^=\\"ant-affix\\"],[class*=\\" ant-affix\\"] [class^=\\"ant-affix\\"],[class^=\\"ant-affix\\"] [class*=\\" ant-affix\\"],[class*=\\" ant-affix\\"] [class*=\\" ant-affix\\"]{box-sizing:border-box;}[class^=\\"ant-affix\\"] [class^=\\"ant-affix\\"]::before,[class*=\\" ant-affix\\"] [class^=\\"ant-affix\\"]::before,[class^=\\"ant-affix\\"] [class*=\\" ant-affix\\"]::before,[class*=\\" ant-affix\\"] [class*=\\" ant-affix\\"]::before,[class^=\\"ant-affix\\"] [class^=\\"ant-affix\\"]::after,[class*=\\" ant-affix\\"] [class^=\\"ant-affix\\"]::after,[class^=\\"ant-affix\\"] [class*=\\" ant-affix\\"]::after,[class*=\\" ant-affix\\"] [class*=\\" ant-affix\\"]::after{box-sizing:border-box;}.ant-affix{position:fixed;z-index:10;}[class^=\\"ant-anchor\\"],[class*=\\" ant-anchor\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-anchor\\"]::before,[class*=\\" ant-anchor\\"]::before,[class^=\\"ant-anchor\\"]::after,[class*=\\" ant-anchor\\"]::after{box-sizing:border-box;}[class^=\\"ant-anchor\\"] [class^=\\"ant-anchor\\"],[class*=\\" ant-anchor\\"] [class^=\\"ant-anchor\\"],[class^=\\"ant-anchor\\"] [class*=\\" ant-anchor\\"],[class*=\\" ant-anchor\\"] [class*=\\" ant-anchor\\"]{box-sizing:border-box;}[class^=\\"ant-anchor\\"] [class^=\\"ant-anchor\\"]::before,[class*=\\" ant-anchor\\"] [class^=\\"ant-anchor\\"]::before,[class^=\\"ant-anchor\\"] [class*=\\" ant-anchor\\"]::before,[class*=\\" ant-anchor\\"] [class*=\\" ant-anchor\\"]::before,[class^=\\"ant-anchor\\"] [class^=\\"ant-anchor\\"]::after,[class*=\\" ant-anchor\\"] [class^=\\"ant-anchor\\"]::after,[class^=\\"ant-anchor\\"] [class*=\\" ant-anchor\\"]::after,[class*=\\" ant-anchor\\"] [class*=\\" ant-anchor\\"]::after{box-sizing:border-box;}.ant-anchor-wrapper{margin-block-start:-4px;padding-block-start:4px;background-color:transparent;}.ant-anchor-wrapper .ant-anchor{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;padding-inline-start:2px;}.ant-anchor-wrapper .ant-anchor .ant-anchor-link{padding-block:4px;padding-inline:16px 0;}.ant-anchor-wrapper .ant-anchor .ant-anchor-link-title{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;position:relative;display:block;margin-block-end:3px;color:rgba(255, 255, 255, 0.85);transition:all 0.3s;}.ant-anchor-wrapper .ant-anchor .ant-anchor-link-title:only-child{margin-block-end:0;}.ant-anchor-wrapper .ant-anchor .ant-anchor-link-active>.ant-anchor-link-title{color:#037003;}.ant-anchor-wrapper .ant-anchor .ant-anchor-link .ant-anchor-link{padding-block:2px;}.ant-anchor-wrapper:not(.ant-anchor-wrapper-horizontal) .ant-anchor::before{position:absolute;left:0;top:0;height:100%;border-inline-start:2px solid rgba(253, 253, 253, 0.12);content:\\" \\";}.ant-anchor-wrapper:not(.ant-anchor-wrapper-horizontal) .ant-anchor .ant-anchor-ink{position:absolute;left:0;display:none;transform:translateY(-50%);transition:top 0.3s ease-in-out;width:2px;background-color:#037003;}.ant-anchor-wrapper:not(.ant-anchor-wrapper-horizontal) .ant-anchor .ant-anchor-ink.ant-anchor-ink-visible{display:inline-block;}.ant-anchor-wrapper .ant-anchor-fixed .ant-anchor-ink .ant-anchor-ink{display:none;}.ant-anchor-wrapper-horizontal{position:relative;}.ant-anchor-wrapper-horizontal::before{position:absolute;left:0;right:0;bottom:0;border-bottom:1px solid rgba(253, 253, 253, 0.12);content:\\" \\";}.ant-anchor-wrapper-horizontal .ant-anchor{overflow-x:scroll;position:relative;display:flex;scrollbar-width:none;}.ant-anchor-wrapper-horizontal .ant-anchor::-webkit-scrollbar{display:none;}.ant-anchor-wrapper-horizontal .ant-anchor .ant-anchor-link:first-of-type{padding-inline:0;}.ant-anchor-wrapper-horizontal .ant-anchor .ant-anchor-ink{position:absolute;bottom:0;transition:left 0.3s ease-in-out,width 0.3s ease-in-out;height:2px;background-color:#037003;}[class^=\\"ant-select\\"],[class*=\\" ant-select\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-select\\"]::before,[class*=\\" ant-select\\"]::before,[class^=\\"ant-select\\"]::after,[class*=\\" ant-select\\"]::after{box-sizing:border-box;}[class^=\\"ant-select\\"] [class^=\\"ant-select\\"],[class*=\\" ant-select\\"] [class^=\\"ant-select\\"],[class^=\\"ant-select\\"] [class*=\\" ant-select\\"],[class*=\\" ant-select\\"] [class*=\\" ant-select\\"]{box-sizing:border-box;}[class^=\\"ant-select\\"] [class^=\\"ant-select\\"]::before,[class*=\\" ant-select\\"] [class^=\\"ant-select\\"]::before,[class^=\\"ant-select\\"] [class*=\\" ant-select\\"]::before,[class*=\\" ant-select\\"] [class*=\\" ant-select\\"]::before,[class^=\\"ant-select\\"] [class^=\\"ant-select\\"]::after,[class*=\\" ant-select\\"] [class^=\\"ant-select\\"]::after,[class^=\\"ant-select\\"] [class*=\\" ant-select\\"]::after,[class*=\\" ant-select\\"] [class*=\\" ant-select\\"]::after{box-sizing:border-box;}.ant-select-borderless .ant-select-selector{background-color:transparent!important;border-color:transparent!important;box-shadow:none!important;}.ant-select.ant-select-in-form-item{width:100%;}.ant-select{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;display:inline-block;cursor:pointer;}.ant-select:not(.ant-select-customize-input) .ant-select-selector{position:relative;background-color:#141414;border:1px solid #424242;transition:all 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);}.ant-select:not(.ant-select-customize-input) .ant-select-selector input{cursor:pointer;}.ant-select-show-search.ant-select:not(.ant-select-customize-input) .ant-select-selector{cursor:text;}.ant-select-show-search.ant-select:not(.ant-select-customize-input) .ant-select-selector input{cursor:auto;color:inherit;}.ant-select-disabled.ant-select:not(.ant-select-customize-input) .ant-select-selector{color:rgba(255, 255, 255, 0.25);background:rgba(255, 255, 255, 0.08);cursor:not-allowed;}.ant-select-multiple.ant-select-disabled.ant-select:not(.ant-select-customize-input) .ant-select-selector{background:rgba(255, 255, 255, 0.08);}.ant-select-disabled.ant-select:not(.ant-select-customize-input) .ant-select-selector input{cursor:not-allowed;}.ant-select:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-search-input{margin:0;padding:0;background:transparent;border:none;outline:none;appearance:none;}.ant-select:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-search-input::-webkit-search-cancel-button{display:none;-webkit-appearance:none;}.ant-select .ant-select-selection-item{flex:1;font-weight:normal;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.ant-select .ant-select-selection-placeholder{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;flex:1;color:rgba(255, 255, 255, 0.25);pointer-events:none;}.ant-select .ant-select-arrow{display:flex;align-items:center;color:rgba(255, 255, 255, 0.25);font-style:normal;line-height:1;text-align:center;text-transform:none;vertical-align:-0.125em;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;top:50%;inset-inline-start:auto;inset-inline-end:11px;height:12px;margin-top:-6px;font-size:12px;pointer-events:none;}.ant-select .ant-select-arrow >*{line-height:1;}.ant-select .ant-select-arrow svg{display:inline-block;}.ant-select .ant-select-arrow .anticon{vertical-align:top;transition:transform 0.3s;}.ant-select .ant-select-arrow .anticon >svg{vertical-align:top;}.ant-select .ant-select-arrow .anticon:not(.ant-select-suffix){pointer-events:auto;}.ant-select-disabled .ant-select .ant-select-arrow{cursor:not-allowed;}.ant-select .ant-select-arrow >*:not(:last-child){margin-inline-end:8px;}.ant-select .ant-select-clear{position:absolute;top:50%;inset-inline-start:auto;inset-inline-end:11px;z-index:1;display:inline-block;width:12px;height:12px;margin-top:-6px;color:rgba(255, 255, 255, 0.25);font-size:12px;font-style:normal;line-height:1;text-align:center;text-transform:none;background:#141414;cursor:pointer;opacity:0;transition:color 0.2s ease,opacity 0.3s ease;text-rendering:auto;}.ant-select .ant-select-clear:before{display:block;}.ant-select .ant-select-clear:hover{color:rgba(255, 255, 255, 0.45);}.ant-select:hover .ant-select-clear{opacity:1;}.ant-select-has-feedback .ant-select-clear{inset-inline-end:29px;}.ant-select-single{font-size:14px;}.ant-select-single .ant-select-selector{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:flex;border-radius:6px;}.ant-select-single .ant-select-selector .ant-select-selection-search{position:absolute;top:0;inset-inline-start:11px;inset-inline-end:11px;bottom:0;}.ant-select-single .ant-select-selector .ant-select-selection-search-input{width:100%;}.ant-select-single .ant-select-selector .ant-select-selection-item,.ant-select-single .ant-select-selector .ant-select-selection-placeholder{padding:0;line-height:30px;transition:all 0.3s;}@supports (-moz-appearance: meterbar){.ant-select-single .ant-select-selector .ant-select-selection-item,.ant-select-single .ant-select-selector .ant-select-selection-placeholder{line-height:30px;}}.ant-select-single .ant-select-selector .ant-select-selection-item{position:relative;user-select:none;}.ant-select-single .ant-select-selector .ant-select-selection-placeholder{transition:none;pointer-events:none;}.ant-select-single .ant-select-selector:after,.ant-select-single .ant-select-selector .ant-select-selection-item:after,.ant-select-single .ant-select-selector .ant-select-selection-placeholder:after{display:inline-block;width:0;visibility:hidden;content:\\"\\\\a0\\";}.ant-select-single.ant-select-show-arrow .ant-select-selection-item,.ant-select-single.ant-select-show-arrow .ant-select-selection-placeholder{padding-inline-end:18px;}.ant-select-single.ant-select-open .ant-select-selection-item{color:rgba(255, 255, 255, 0.25);}.ant-select-single:not(.ant-select-customize-input) .ant-select-selector{width:100%;height:32px;padding:0 11px;}.ant-select-single:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-search-input{height:30px;}.ant-select-single:not(.ant-select-customize-input) .ant-select-selector:after{line-height:30px;}.ant-select-single.ant-select-customize-input .ant-select-selector:after{display:none;}.ant-select-single.ant-select-customize-input .ant-select-selector .ant-select-selection-search{position:static;width:100%;}.ant-select-single.ant-select-customize-input .ant-select-selector .ant-select-selection-placeholder{position:absolute;inset-inline-start:0;inset-inline-end:0;padding:0 11px;}.ant-select-single.ant-select-customize-input .ant-select-selector .ant-select-selection-placeholder:after{display:none;}.ant-select-single.ant-select-sm{font-size:14px;}.ant-select-single.ant-select-sm .ant-select-selector{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:flex;border-radius:4px;}.ant-select-single.ant-select-sm .ant-select-selector .ant-select-selection-search{position:absolute;top:0;inset-inline-start:11px;inset-inline-end:11px;bottom:0;}.ant-select-single.ant-select-sm .ant-select-selector .ant-select-selection-search-input{width:100%;}.ant-select-single.ant-select-sm .ant-select-selector .ant-select-selection-item,.ant-select-single.ant-select-sm .ant-select-selector .ant-select-selection-placeholder{padding:0;line-height:22px;transition:all 0.3s;}@supports (-moz-appearance: meterbar){.ant-select-single.ant-select-sm .ant-select-selector .ant-select-selection-item,.ant-select-single.ant-select-sm .ant-select-selector .ant-select-selection-placeholder{line-height:22px;}}.ant-select-single.ant-select-sm .ant-select-selector .ant-select-selection-item{position:relative;user-select:none;}.ant-select-single.ant-select-sm .ant-select-selector .ant-select-selection-placeholder{transition:none;pointer-events:none;}.ant-select-single.ant-select-sm .ant-select-selector:after,.ant-select-single.ant-select-sm .ant-select-selector .ant-select-selection-item:after,.ant-select-single.ant-select-sm .ant-select-selector .ant-select-selection-placeholder:after{display:inline-block;width:0;visibility:hidden;content:\\"\\\\a0\\";}.ant-select-single.ant-select-sm.ant-select-show-arrow .ant-select-selection-item,.ant-select-single.ant-select-sm.ant-select-show-arrow .ant-select-selection-placeholder{padding-inline-end:18px;}.ant-select-single.ant-select-sm.ant-select-open .ant-select-selection-item{color:rgba(255, 255, 255, 0.25);}.ant-select-single.ant-select-sm:not(.ant-select-customize-input) .ant-select-selector{width:100%;height:24px;padding:0 11px;}.ant-select-single.ant-select-sm:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-search-input{height:22px;}.ant-select-single.ant-select-sm:not(.ant-select-customize-input) .ant-select-selector:after{line-height:22px;}.ant-select-single.ant-select-sm.ant-select-customize-input .ant-select-selector:after{display:none;}.ant-select-single.ant-select-sm.ant-select-customize-input .ant-select-selector .ant-select-selection-search{position:static;width:100%;}.ant-select-single.ant-select-sm.ant-select-customize-input .ant-select-selector .ant-select-selection-placeholder{position:absolute;inset-inline-start:0;inset-inline-end:0;padding:0 11px;}.ant-select-single.ant-select-sm.ant-select-customize-input .ant-select-selector .ant-select-selection-placeholder:after{display:none;}.ant-select-single.ant-select-sm:not(.ant-select-customize-input) .ant-select-selection-search{inset-inline-start:7px;inset-inline-end:7px;}.ant-select-single.ant-select-sm:not(.ant-select-customize-input) .ant-select-selector{padding:0 7px;}.ant-select-single.ant-select-sm:not(.ant-select-customize-input).ant-select-show-arrow .ant-select-selection-search{inset-inline-end:28px;}.ant-select-single.ant-select-sm:not(.ant-select-customize-input).ant-select-show-arrow .ant-select-selection-item,.ant-select-single.ant-select-sm:not(.ant-select-customize-input).ant-select-show-arrow .ant-select-selection-placeholder{padding-inline-end:21px;}.ant-select-single.ant-select-lg{font-size:16px;}.ant-select-single.ant-select-lg .ant-select-selector{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:16px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:flex;border-radius:8px;}.ant-select-single.ant-select-lg .ant-select-selector .ant-select-selection-search{position:absolute;top:0;inset-inline-start:11px;inset-inline-end:11px;bottom:0;}.ant-select-single.ant-select-lg .ant-select-selector .ant-select-selection-search-input{width:100%;}.ant-select-single.ant-select-lg .ant-select-selector .ant-select-selection-item,.ant-select-single.ant-select-lg .ant-select-selector .ant-select-selection-placeholder{padding:0;line-height:38px;transition:all 0.3s;}@supports (-moz-appearance: meterbar){.ant-select-single.ant-select-lg .ant-select-selector .ant-select-selection-item,.ant-select-single.ant-select-lg .ant-select-selector .ant-select-selection-placeholder{line-height:38px;}}.ant-select-single.ant-select-lg .ant-select-selector .ant-select-selection-item{position:relative;user-select:none;}.ant-select-single.ant-select-lg .ant-select-selector .ant-select-selection-placeholder{transition:none;pointer-events:none;}.ant-select-single.ant-select-lg .ant-select-selector:after,.ant-select-single.ant-select-lg .ant-select-selector .ant-select-selection-item:after,.ant-select-single.ant-select-lg .ant-select-selector .ant-select-selection-placeholder:after{display:inline-block;width:0;visibility:hidden;content:\\"\\\\a0\\";}.ant-select-single.ant-select-lg.ant-select-show-arrow .ant-select-selection-item,.ant-select-single.ant-select-lg.ant-select-show-arrow .ant-select-selection-placeholder{padding-inline-end:20px;}.ant-select-single.ant-select-lg.ant-select-open .ant-select-selection-item{color:rgba(255, 255, 255, 0.25);}.ant-select-single.ant-select-lg:not(.ant-select-customize-input) .ant-select-selector{width:100%;height:40px;padding:0 11px;}.ant-select-single.ant-select-lg:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-search-input{height:38px;}.ant-select-single.ant-select-lg:not(.ant-select-customize-input) .ant-select-selector:after{line-height:38px;}.ant-select-single.ant-select-lg.ant-select-customize-input .ant-select-selector:after{display:none;}.ant-select-single.ant-select-lg.ant-select-customize-input .ant-select-selector .ant-select-selection-search{position:static;width:100%;}.ant-select-single.ant-select-lg.ant-select-customize-input .ant-select-selector .ant-select-selection-placeholder{position:absolute;inset-inline-start:0;inset-inline-end:0;padding:0 11px;}.ant-select-single.ant-select-lg.ant-select-customize-input .ant-select-selector .ant-select-selection-placeholder:after{display:none;}.ant-select-multiple{font-size:14px;}.ant-select-multiple .ant-select-selection-overflow{position:relative;display:flex;flex:auto;flex-wrap:wrap;max-width:100%;}.ant-select-multiple .ant-select-selection-overflow-item{flex:none;align-self:center;max-width:100%;display:inline-flex;}.ant-select-multiple .ant-select-selector{display:flex;flex-wrap:wrap;align-items:center;padding:1px 4px;border-radius:6px;}.ant-select-show-search.ant-select-multiple .ant-select-selector{cursor:text;}.ant-select-disabled.ant-select-multiple .ant-select-selector{background:rgba(255, 255, 255, 0.08);cursor:not-allowed;}.ant-select-multiple .ant-select-selector:after{display:inline-block;width:0;margin:2px 0;line-height:24px;content:\\"\\\\a0\\";}.ant-select-multiple.ant-select-show-arrow .ant-select-selector,.ant-select-multiple.ant-select-allow-clear .ant-select-selector{padding-inline-end:24px;}.ant-select-multiple .ant-select-selection-item{position:relative;display:flex;flex:none;box-sizing:border-box;max-width:100%;height:24px;margin-top:2px;margin-bottom:2px;line-height:22px;background:rgba(255, 255, 255, 0.12);border:1px solid rgba(253, 253, 253, 0.12);border-radius:4px;cursor:default;transition:font-size 0.3s,line-height 0.3s,height 0.3s;user-select:none;margin-inline-end:4px;padding-inline-start:8px;padding-inline-end:4px;}.ant-select-disabled.ant-select-multiple .ant-select-selection-item{color:rgba(255, 255, 255, 0.25);border-color:#424242;cursor:not-allowed;}.ant-select-multiple .ant-select-selection-item-content{display:inline-block;margin-inline-end:4px;overflow:hidden;white-space:pre;text-overflow:ellipsis;}.ant-select-multiple .ant-select-selection-item-remove{display:inline-block;align-items:center;color:rgba(255, 255, 255, 0.45);font-style:normal;line-height:inherit;text-align:center;text-transform:none;vertical-align:-0.125em;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:bold;font-size:10px;cursor:pointer;}.ant-select-multiple .ant-select-selection-item-remove >*{line-height:1;}.ant-select-multiple .ant-select-selection-item-remove svg{display:inline-block;}.ant-select-multiple .ant-select-selection-item-remove >.anticon{vertical-align:-0.2em;}.ant-select-multiple .ant-select-selection-item-remove:hover{color:rgba(255, 255, 255, 0.85);}.ant-select-multiple .ant-select-selection-overflow-item+.ant-select-selection-overflow-item .ant-select-selection-search{margin-inline-start:0;}.ant-select-multiple .ant-select-selection-search{display:inline-flex;position:relative;max-width:100%;margin-inline-start:8px;}.ant-select-multiple .ant-select-selection-search-input,.ant-select-multiple .ant-select-selection-search-mirror{height:24px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';line-height:24px;transition:all 0.3s;}.ant-select-multiple .ant-select-selection-search-input{width:100%;min-width:4.1px;}.ant-select-multiple .ant-select-selection-search-mirror{position:absolute;top:0;inset-inline-start:0;inset-inline-end:auto;z-index:999;white-space:pre;visibility:hidden;}.ant-select-multiple .ant-select-selection-placeholder{position:absolute;top:50%;inset-inline-start:11px;inset-inline-end:11px;transform:translateY(-50%);transition:all 0.3s;}.ant-select-multiple.ant-select-sm{font-size:14px;}.ant-select-multiple.ant-select-sm .ant-select-selection-overflow{position:relative;display:flex;flex:auto;flex-wrap:wrap;max-width:100%;}.ant-select-multiple.ant-select-sm .ant-select-selection-overflow-item{flex:none;align-self:center;max-width:100%;display:inline-flex;}.ant-select-multiple.ant-select-sm .ant-select-selector{display:flex;flex-wrap:wrap;align-items:center;padding:1px 4px;border-radius:4px;}.ant-select-show-search.ant-select-multiple.ant-select-sm .ant-select-selector{cursor:text;}.ant-select-disabled.ant-select-multiple.ant-select-sm .ant-select-selector{background:rgba(255, 255, 255, 0.08);cursor:not-allowed;}.ant-select-multiple.ant-select-sm .ant-select-selector:after{display:inline-block;width:0;margin:2px 0;line-height:16px;content:\\"\\\\a0\\";}.ant-select-multiple.ant-select-sm.ant-select-show-arrow .ant-select-selector,.ant-select-multiple.ant-select-sm.ant-select-allow-clear .ant-select-selector{padding-inline-end:24px;}.ant-select-multiple.ant-select-sm .ant-select-selection-item{position:relative;display:flex;flex:none;box-sizing:border-box;max-width:100%;height:16px;margin-top:2px;margin-bottom:2px;line-height:14px;background:rgba(255, 255, 255, 0.12);border:1px solid rgba(253, 253, 253, 0.12);border-radius:2px;cursor:default;transition:font-size 0.3s,line-height 0.3s,height 0.3s;user-select:none;margin-inline-end:4px;padding-inline-start:8px;padding-inline-end:4px;}.ant-select-disabled.ant-select-multiple.ant-select-sm .ant-select-selection-item{color:rgba(255, 255, 255, 0.25);border-color:#424242;cursor:not-allowed;}.ant-select-multiple.ant-select-sm .ant-select-selection-item-content{display:inline-block;margin-inline-end:4px;overflow:hidden;white-space:pre;text-overflow:ellipsis;}.ant-select-multiple.ant-select-sm .ant-select-selection-item-remove{display:inline-block;align-items:center;color:rgba(255, 255, 255, 0.45);font-style:normal;line-height:inherit;text-align:center;text-transform:none;vertical-align:-0.125em;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:bold;font-size:10px;cursor:pointer;}.ant-select-multiple.ant-select-sm .ant-select-selection-item-remove >*{line-height:1;}.ant-select-multiple.ant-select-sm .ant-select-selection-item-remove svg{display:inline-block;}.ant-select-multiple.ant-select-sm .ant-select-selection-item-remove >.anticon{vertical-align:-0.2em;}.ant-select-multiple.ant-select-sm .ant-select-selection-item-remove:hover{color:rgba(255, 255, 255, 0.85);}.ant-select-multiple.ant-select-sm .ant-select-selection-overflow-item+.ant-select-selection-overflow-item .ant-select-selection-search{margin-inline-start:0;}.ant-select-multiple.ant-select-sm .ant-select-selection-search{display:inline-flex;position:relative;max-width:100%;margin-inline-start:8px;}.ant-select-multiple.ant-select-sm .ant-select-selection-search-input,.ant-select-multiple.ant-select-sm .ant-select-selection-search-mirror{height:16px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';line-height:16px;transition:all 0.3s;}.ant-select-multiple.ant-select-sm .ant-select-selection-search-input{width:100%;min-width:4.1px;}.ant-select-multiple.ant-select-sm .ant-select-selection-search-mirror{position:absolute;top:0;inset-inline-start:0;inset-inline-end:auto;z-index:999;white-space:pre;visibility:hidden;}.ant-select-multiple.ant-select-sm .ant-select-selection-placeholder{position:absolute;top:50%;inset-inline-start:11px;inset-inline-end:11px;transform:translateY(-50%);transition:all 0.3s;}.ant-select-multiple.ant-select-sm .ant-select-selection-placeholder{inset-inline-start:7px;inset-inline-end:auto;}.ant-select-multiple.ant-select-sm .ant-select-selection-search{margin-inline-start:2px;}.ant-select-multiple.ant-select-lg{font-size:16px;}.ant-select-multiple.ant-select-lg .ant-select-selection-overflow{position:relative;display:flex;flex:auto;flex-wrap:wrap;max-width:100%;}.ant-select-multiple.ant-select-lg .ant-select-selection-overflow-item{flex:none;align-self:center;max-width:100%;display:inline-flex;}.ant-select-multiple.ant-select-lg .ant-select-selector{display:flex;flex-wrap:wrap;align-items:center;padding:1px 4px;border-radius:8px;}.ant-select-show-search.ant-select-multiple.ant-select-lg .ant-select-selector{cursor:text;}.ant-select-disabled.ant-select-multiple.ant-select-lg .ant-select-selector{background:rgba(255, 255, 255, 0.08);cursor:not-allowed;}.ant-select-multiple.ant-select-lg .ant-select-selector:after{display:inline-block;width:0;margin:2px 0;line-height:32px;content:\\"\\\\a0\\";}.ant-select-multiple.ant-select-lg.ant-select-show-arrow .ant-select-selector,.ant-select-multiple.ant-select-lg.ant-select-allow-clear .ant-select-selector{padding-inline-end:24px;}.ant-select-multiple.ant-select-lg .ant-select-selection-item{position:relative;display:flex;flex:none;box-sizing:border-box;max-width:100%;height:32px;margin-top:2px;margin-bottom:2px;line-height:30px;background:rgba(255, 255, 255, 0.12);border:1px solid rgba(253, 253, 253, 0.12);border-radius:6px;cursor:default;transition:font-size 0.3s,line-height 0.3s,height 0.3s;user-select:none;margin-inline-end:4px;padding-inline-start:8px;padding-inline-end:4px;}.ant-select-disabled.ant-select-multiple.ant-select-lg .ant-select-selection-item{color:rgba(255, 255, 255, 0.25);border-color:#424242;cursor:not-allowed;}.ant-select-multiple.ant-select-lg .ant-select-selection-item-content{display:inline-block;margin-inline-end:4px;overflow:hidden;white-space:pre;text-overflow:ellipsis;}.ant-select-multiple.ant-select-lg .ant-select-selection-item-remove{display:inline-block;align-items:center;color:rgba(255, 255, 255, 0.45);font-style:normal;line-height:inherit;text-align:center;text-transform:none;vertical-align:-0.125em;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:bold;font-size:10px;cursor:pointer;}.ant-select-multiple.ant-select-lg .ant-select-selection-item-remove >*{line-height:1;}.ant-select-multiple.ant-select-lg .ant-select-selection-item-remove svg{display:inline-block;}.ant-select-multiple.ant-select-lg .ant-select-selection-item-remove >.anticon{vertical-align:-0.2em;}.ant-select-multiple.ant-select-lg .ant-select-selection-item-remove:hover{color:rgba(255, 255, 255, 0.85);}.ant-select-multiple.ant-select-lg .ant-select-selection-overflow-item+.ant-select-selection-overflow-item .ant-select-selection-search{margin-inline-start:0;}.ant-select-multiple.ant-select-lg .ant-select-selection-search{display:inline-flex;position:relative;max-width:100%;margin-inline-start:8px;}.ant-select-multiple.ant-select-lg .ant-select-selection-search-input,.ant-select-multiple.ant-select-lg .ant-select-selection-search-mirror{height:32px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';line-height:32px;transition:all 0.3s;}.ant-select-multiple.ant-select-lg .ant-select-selection-search-input{width:100%;min-width:4.1px;}.ant-select-multiple.ant-select-lg .ant-select-selection-search-mirror{position:absolute;top:0;inset-inline-start:0;inset-inline-end:auto;z-index:999;white-space:pre;visibility:hidden;}.ant-select-multiple.ant-select-lg .ant-select-selection-placeholder{position:absolute;top:50%;inset-inline-start:11px;inset-inline-end:11px;transform:translateY(-50%);transition:all 0.3s;}.ant-select-dropdown{box-sizing:border-box;margin:0;padding:4px;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:absolute;top:-9999px;z-index:1050;overflow:hidden;font-variant:initial;background-color:#1f1f1f;border-radius:8px;outline:none;box-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08),0 3px 6px -4px rgba(0, 0, 0, 0.12),0 9px 28px 8px rgba(0, 0, 0, 0.05);}.ant-select-dropdown.ant-slide-up-enter.ant-slide-up-enter-active.ant-select-dropdown-placement-bottomLeft,.ant-select-dropdown.ant-slide-up-appear.ant-slide-up-appear-active.ant-select-dropdown-placement-bottomLeft{animation-name:antSlideUpIn;}.ant-select-dropdown.ant-slide-up-enter.ant-slide-up-enter-active.ant-select-dropdown-placement-topLeft,.ant-select-dropdown.ant-slide-up-appear.ant-slide-up-appear-active.ant-select-dropdown-placement-topLeft{animation-name:antSlideDownIn;}.ant-select-dropdown.ant-slide-up-leave.ant-slide-up-leave-active.ant-select-dropdown-placement-bottomLeft{animation-name:antSlideUpOut;}.ant-select-dropdown.ant-slide-up-leave.ant-slide-up-leave-active.ant-select-dropdown-placement-topLeft{animation-name:antSlideDownOut;}.ant-select-dropdown-hidden{display:none;}.ant-select-dropdown-empty{color:rgba(255, 255, 255, 0.25);}.ant-select-dropdown .ant-select-item-empty{position:relative;display:block;min-height:32px;padding:5px 12px;color:rgba(255, 255, 255, 0.25);font-weight:normal;font-size:14px;line-height:1.5714285714285714;box-sizing:border-box;}.ant-select-dropdown .ant-select-item{position:relative;display:block;min-height:32px;padding:5px 12px;color:rgba(255, 255, 255, 0.85);font-weight:normal;font-size:14px;line-height:1.5714285714285714;box-sizing:border-box;cursor:pointer;transition:background 0.3s ease;border-radius:4px;}.ant-select-dropdown .ant-select-item-group{color:rgba(255, 255, 255, 0.45);font-size:12px;cursor:default;}.ant-select-dropdown .ant-select-item-option{display:flex;}.ant-select-dropdown .ant-select-item-option-content{flex:auto;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.ant-select-dropdown .ant-select-item-option-state{flex:none;}.ant-select-dropdown .ant-select-item-option-active:not(.ant-select-item-option-disabled){background-color:rgba(255, 255, 255, 0.08);}.ant-select-dropdown .ant-select-item-option-selected:not(.ant-select-item-option-disabled){color:rgba(255, 255, 255, 0.85);font-weight:600;background-color:#111911;}.ant-select-dropdown .ant-select-item-option-selected:not(.ant-select-item-option-disabled) .ant-select-item-option-state{color:#037003;}.ant-select-dropdown .ant-select-item-option-disabled{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;}.ant-select-dropdown .ant-select-item-option-disabled.ant-select-item-option-selected{background-color:rgba(255, 255, 255, 0.08);}.ant-select-dropdown .ant-select-item-option-grouped{padding-inline-start:24px;}.ant-select-dropdown-rtl{direction:rtl;}.ant-slide-up-enter,.ant-slide-up-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-slide-up-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-slide-up-enter.ant-slide-up-enter-active,.ant-slide-up-appear.ant-slide-up-appear-active{animation-name:antSlideUpIn;animation-play-state:running;}.ant-slide-up-leave.ant-slide-up-leave-active{animation-name:antSlideUpOut;animation-play-state:running;pointer-events:none;}.ant-slide-up-enter,.ant-slide-up-appear{transform:scale(0);transform-origin:0% 0%;opacity:0;animation-timing-function:cubic-bezier(0.23, 1, 0.32, 1);}.ant-slide-up-leave{animation-timing-function:cubic-bezier(0.755, 0.05, 0.855, 0.06);}.ant-slide-down-enter,.ant-slide-down-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-slide-down-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-slide-down-enter.ant-slide-down-enter-active,.ant-slide-down-appear.ant-slide-down-appear-active{animation-name:antSlideDownIn;animation-play-state:running;}.ant-slide-down-leave.ant-slide-down-leave-active{animation-name:antSlideDownOut;animation-play-state:running;pointer-events:none;}.ant-slide-down-enter,.ant-slide-down-appear{transform:scale(0);transform-origin:0% 0%;opacity:0;animation-timing-function:cubic-bezier(0.23, 1, 0.32, 1);}.ant-slide-down-leave{animation-timing-function:cubic-bezier(0.755, 0.05, 0.855, 0.06);}.ant-move-up-enter,.ant-move-up-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-move-up-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-move-up-enter.ant-move-up-enter-active,.ant-move-up-appear.ant-move-up-appear-active{animation-name:antMoveUpIn;animation-play-state:running;}.ant-move-up-leave.ant-move-up-leave-active{animation-name:antMoveUpOut;animation-play-state:running;pointer-events:none;}.ant-move-up-enter,.ant-move-up-appear{opacity:0;animation-timing-function:cubic-bezier(0.08, 0.82, 0.17, 1);}.ant-move-up-leave{animation-timing-function:cubic-bezier(0.78, 0.14, 0.15, 0.86);}.ant-move-down-enter,.ant-move-down-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-move-down-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-move-down-enter.ant-move-down-enter-active,.ant-move-down-appear.ant-move-down-appear-active{animation-name:antMoveDownIn;animation-play-state:running;}.ant-move-down-leave.ant-move-down-leave-active{animation-name:antMoveDownOut;animation-play-state:running;pointer-events:none;}.ant-move-down-enter,.ant-move-down-appear{opacity:0;animation-timing-function:cubic-bezier(0.08, 0.82, 0.17, 1);}.ant-move-down-leave{animation-timing-function:cubic-bezier(0.78, 0.14, 0.15, 0.86);}.ant-select-rtl{direction:rtl;}.ant-select-focused.ant-select:not(.ant-select-disabled):not(.ant-select-customize-input):not(.ant-pagination-size-changer) .ant-select-selector{border-color:#198016;box-shadow:0 0 0 2px rgba(0, 53, 0, 0.15);border-inline-end-width:undefinedpx!important;outline:0;}.ant-select:not(.ant-select-disabled):not(.ant-select-customize-input):not(.ant-pagination-size-changer):hover .ant-select-selector{border-color:#198016;border-inline-end-width:undefinedpx!important;}.ant-select-status-error:not(.ant-select-disabled):not(.ant-select-customize-input):not(.ant-pagination-size-changer) .ant-select-selector{border-color:#e86e6b;}.ant-select-focused.ant-select-status-error:not(.ant-select-disabled):not(.ant-select-customize-input):not(.ant-pagination-size-changer) .ant-select-selector{border-color:#e86e6b;box-shadow:0 0 0 2px rgba(238, 38, 56, 0.11);border-inline-end-width:undefinedpx!important;outline:0;}.ant-select-status-error:not(.ant-select-disabled):not(.ant-select-customize-input):not(.ant-pagination-size-changer):hover .ant-select-selector{border-color:#e86e6b;border-inline-end-width:undefinedpx!important;}.ant-select-status-warning:not(.ant-select-disabled):not(.ant-select-customize-input):not(.ant-pagination-size-changer) .ant-select-selector{border-color:#7c5914;}.ant-select-focused.ant-select-status-warning:not(.ant-select-disabled):not(.ant-select-customize-input):not(.ant-pagination-size-changer) .ant-select-selector{border-color:#7c5914;box-shadow:0 0 0 2px rgba(173, 107, 0, 0.15);border-inline-end-width:undefinedpx!important;outline:0;}.ant-select-status-warning:not(.ant-select-disabled):not(.ant-select-customize-input):not(.ant-pagination-size-changer):hover .ant-select-selector{border-color:#7c5914;border-inline-end-width:undefinedpx!important;}.ant-select-compact-item:not(.ant-select-compact-last-item){margin-inline-end:-1px;}.ant-select-compact-item:hover>*,.ant-select-compact-item:active>*{z-index:2;}.ant-select-compact-item.ant-select-focused{z-index:2;}.ant-select-compact-item[disabled]>*{z-index:0;}.ant-select-compact-item:not(.ant-select-compact-first-item):not(.ant-select-compact-last-item)>.ant-select-selector{border-radius:0;}.ant-select-compact-item:not(.ant-select-compact-last-item).ant-select-compact-first-item>.ant-select-selector,.ant-select-compact-item:not(.ant-select-compact-last-item).ant-select-compact-first-item.ant-select-sm>.ant-select-selector,.ant-select-compact-item:not(.ant-select-compact-last-item).ant-select-compact-first-item.ant-select-lg>.ant-select-selector{border-start-end-radius:0;border-end-end-radius:0;}.ant-select-compact-item:not(.ant-select-compact-first-item).ant-select-compact-last-item>.ant-select-selector,.ant-select-compact-item:not(.ant-select-compact-first-item).ant-select-compact-last-item.ant-select-sm>.ant-select-selector,.ant-select-compact-item:not(.ant-select-compact-first-item).ant-select-compact-last-item.ant-select-lg>.ant-select-selector{border-start-start-radius:0;border-end-start-radius:0;}@keyframes antSlideUpIn{0%{transform:scaleY(0.8);transform-origin:0% 0%;opacity:0;}100%{transform:scaleY(1);transform-origin:0% 0%;opacity:1;}}@keyframes antSlideDownIn{0%{transform:scaleY(0.8);transform-origin:100% 100%;opacity:0;}100%{transform:scaleY(1);transform-origin:100% 100%;opacity:1;}}@keyframes antSlideUpOut{0%{transform:scaleY(1);transform-origin:0% 0%;opacity:1;}100%{transform:scaleY(0.8);transform-origin:0% 0%;opacity:0;}}@keyframes antSlideDownOut{0%{transform:scaleY(1);transform-origin:100% 100%;opacity:1;}100%{transform:scaleY(0.8);transform-origin:100% 100%;opacity:0;}}@keyframes antMoveUpIn{0%{transform:translate3d(0, -100%, 0);transform-origin:0 0;opacity:0;}100%{transform:translate3d(0, 0, 0);transform-origin:0 0;opacity:1;}}@keyframes antMoveUpOut{0%{transform:translate3d(0, 0, 0);transform-origin:0 0;opacity:1;}100%{transform:translate3d(0, -100%, 0);transform-origin:0 0;opacity:0;}}@keyframes antMoveDownIn{0%{transform:translate3d(0, 100%, 0);transform-origin:0 0;opacity:0;}100%{transform:translate3d(0, 0, 0);transform-origin:0 0;opacity:1;}}@keyframes antMoveDownOut{0%{transform:translate3d(0, 0, 0);transform-origin:0 0;opacity:1;}100%{transform:translate3d(0, 100%, 0);transform-origin:0 0;opacity:0;}}[class^=\\"ant-alert\\"],[class*=\\" ant-alert\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-alert\\"]::before,[class*=\\" ant-alert\\"]::before,[class^=\\"ant-alert\\"]::after,[class*=\\" ant-alert\\"]::after{box-sizing:border-box;}[class^=\\"ant-alert\\"] [class^=\\"ant-alert\\"],[class*=\\" ant-alert\\"] [class^=\\"ant-alert\\"],[class^=\\"ant-alert\\"] [class*=\\" ant-alert\\"],[class*=\\" ant-alert\\"] [class*=\\" ant-alert\\"]{box-sizing:border-box;}[class^=\\"ant-alert\\"] [class^=\\"ant-alert\\"]::before,[class*=\\" ant-alert\\"] [class^=\\"ant-alert\\"]::before,[class^=\\"ant-alert\\"] [class*=\\" ant-alert\\"]::before,[class*=\\" ant-alert\\"] [class*=\\" ant-alert\\"]::before,[class^=\\"ant-alert\\"] [class^=\\"ant-alert\\"]::after,[class*=\\" ant-alert\\"] [class^=\\"ant-alert\\"]::after,[class^=\\"ant-alert\\"] [class*=\\" ant-alert\\"]::after,[class*=\\" ant-alert\\"] [class*=\\" ant-alert\\"]::after{box-sizing:border-box;}.ant-alert{box-sizing:border-box;margin:0;padding:8px 12px;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;display:flex;align-items:center;word-wrap:break-word;border-radius:8px;}.ant-alert.ant-alert-rtl{direction:rtl;}.ant-alert .ant-alert-content{flex:1;min-width:0;}.ant-alert .ant-alert-icon{margin-inline-end:8px;line-height:0;}.ant-alert-description{display:none;font-size:14px;line-height:1.5714285714285714;}.ant-alert-message{color:rgba(255, 255, 255, 0.85);}.ant-alert.ant-alert-motion-leave{overflow:hidden;opacity:1;transition:max-height 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86),opacity 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86),padding-top 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86),padding-bottom 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86),margin-bottom 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86);}.ant-alert.ant-alert-motion-leave-active{max-height:0;margin-bottom:0!important;padding-top:0;padding-bottom:0;opacity:0;}.ant-alert-with-description{align-items:flex-start;padding-inline:24px;padding-block:20px;}.ant-alert-with-description .ant-alert-icon{margin-inline-end:12px;font-size:24px;line-height:0;}.ant-alert-with-description .ant-alert-message{display:block;margin-bottom:8px;color:rgba(255, 255, 255, 0.85);font-size:16px;}.ant-alert-with-description .ant-alert-description{display:block;}.ant-alert-banner{margin-bottom:0;border:0!important;border-radius:0;}.ant-alert-success{background-color:#162312;border:1px solid #274916;}.ant-alert-success .ant-alert-icon{color:#49aa19;}.ant-alert-info{background-color:#111a2c;border:1px solid #15325b;}.ant-alert-info .ant-alert-icon{color:#1668dc;}.ant-alert-warning{background-color:#2b2111;border:1px solid #594214;}.ant-alert-warning .ant-alert-icon{color:#d89614;}.ant-alert-error{background-color:#2c1618;border:1px solid #5b2526;}.ant-alert-error .ant-alert-icon{color:#dc4446;}.ant-alert-error .ant-alert-description>pre{margin:0;padding:0;}.ant-alert-action{margin-inline-start:8px;}.ant-alert .ant-alert-close-icon{margin-inline-start:8px;padding:0;overflow:hidden;font-size:12px;line-height:12px;background-color:transparent;border:none;outline:none;cursor:pointer;}.ant-alert .ant-alert-close-icon .anticon-close{color:rgba(255, 255, 255, 0.45);transition:color 0.2s;}.ant-alert .ant-alert-close-icon .anticon-close:hover{color:rgba(255, 255, 255, 0.85);}.ant-alert-close-text{color:rgba(255, 255, 255, 0.45);transition:color 0.2s;}.ant-alert-close-text:hover{color:rgba(255, 255, 255, 0.85);}[class^=\\"ant-avatar\\"],[class*=\\" ant-avatar\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-avatar\\"]::before,[class*=\\" ant-avatar\\"]::before,[class^=\\"ant-avatar\\"]::after,[class*=\\" ant-avatar\\"]::after{box-sizing:border-box;}[class^=\\"ant-avatar\\"] [class^=\\"ant-avatar\\"],[class*=\\" ant-avatar\\"] [class^=\\"ant-avatar\\"],[class^=\\"ant-avatar\\"] [class*=\\" ant-avatar\\"],[class*=\\" ant-avatar\\"] [class*=\\" ant-avatar\\"]{box-sizing:border-box;}[class^=\\"ant-avatar\\"] [class^=\\"ant-avatar\\"]::before,[class*=\\" ant-avatar\\"] [class^=\\"ant-avatar\\"]::before,[class^=\\"ant-avatar\\"] [class*=\\" ant-avatar\\"]::before,[class*=\\" ant-avatar\\"] [class*=\\" ant-avatar\\"]::before,[class^=\\"ant-avatar\\"] [class^=\\"ant-avatar\\"]::after,[class*=\\" ant-avatar\\"] [class^=\\"ant-avatar\\"]::after,[class^=\\"ant-avatar\\"] [class*=\\" ant-avatar\\"]::after,[class*=\\" ant-avatar\\"] [class*=\\" ant-avatar\\"]::after{box-sizing:border-box;}.ant-avatar{box-sizing:border-box;margin:0;padding:0;color:#fff;font-size:14px;line-height:30px;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;display:inline-block;overflow:hidden;white-space:nowrap;text-align:center;vertical-align:middle;background:rgba(255, 255, 255, 0.25);border:1px solid transparent;width:32px;height:32px;border-radius:50%;}.ant-avatar-image{background:transparent;}.ant-avatar .ant-image-img{display:block;}.ant-avatar.ant-avatar-square{border-radius:6px;}.ant-avatar .ant-avatar-string{position:absolute;left:50%;transform-origin:0 center;}.ant-avatar.ant-avatar-icon{font-size:18px;}.ant-avatar.ant-avatar-icon >.anticon{margin:0;}.ant-avatar-lg{width:40px;height:40px;line-height:38px;border-radius:50%;}.ant-avatar-lg.ant-avatar-square{border-radius:8px;}.ant-avatar-lg .ant-avatar-string{position:absolute;left:50%;transform-origin:0 center;}.ant-avatar-lg.ant-avatar-icon{font-size:24px;}.ant-avatar-lg.ant-avatar-icon >.anticon{margin:0;}.ant-avatar-sm{width:24px;height:24px;line-height:22px;border-radius:50%;}.ant-avatar-sm.ant-avatar-square{border-radius:4px;}.ant-avatar-sm .ant-avatar-string{position:absolute;left:50%;transform-origin:0 center;}.ant-avatar-sm.ant-avatar-icon{font-size:14px;}.ant-avatar-sm.ant-avatar-icon >.anticon{margin:0;}.ant-avatar >img{display:block;width:100%;height:100%;object-fit:cover;}.ant-avatar-group{display:inline-flex;}.ant-avatar-group .ant-avatar{border-color:#141414;}.ant-avatar-group >*:not(:first-child){margin-inline-start:-8px;}.ant-avatar-group-popover .ant-avatar+.ant-avatar{margin-inline-start:4px;}[class^=\\"ant-badge\\"],[class*=\\" ant-badge\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-badge\\"]::before,[class*=\\" ant-badge\\"]::before,[class^=\\"ant-badge\\"]::after,[class*=\\" ant-badge\\"]::after{box-sizing:border-box;}[class^=\\"ant-badge\\"] [class^=\\"ant-badge\\"],[class*=\\" ant-badge\\"] [class^=\\"ant-badge\\"],[class^=\\"ant-badge\\"] [class*=\\" ant-badge\\"],[class*=\\" ant-badge\\"] [class*=\\" ant-badge\\"]{box-sizing:border-box;}[class^=\\"ant-badge\\"] [class^=\\"ant-badge\\"]::before,[class*=\\" ant-badge\\"] [class^=\\"ant-badge\\"]::before,[class^=\\"ant-badge\\"] [class*=\\" ant-badge\\"]::before,[class*=\\" ant-badge\\"] [class*=\\" ant-badge\\"]::before,[class^=\\"ant-badge\\"] [class^=\\"ant-badge\\"]::after,[class*=\\" ant-badge\\"] [class^=\\"ant-badge\\"]::after,[class^=\\"ant-badge\\"] [class*=\\" ant-badge\\"]::after,[class*=\\" ant-badge\\"] [class*=\\" ant-badge\\"]::after{box-sizing:border-box;}.ant-badge{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;display:inline-block;width:fit-content;}.ant-badge .ant-badge-count{z-index:auto;min-width:20px;height:20px;color:#141414;font-weight:normal;font-size:12px;line-height:20px;white-space:nowrap;text-align:center;background:#dc4446;border-radius:10px;box-shadow:0 0 0 1px #141414;transition:background 0.2s;}.ant-badge .ant-badge-count a{color:#141414;}.ant-badge .ant-badge-count a:hover{color:#141414;}a:hover .ant-badge .ant-badge-count{background:#e86e6b;}.ant-badge .ant-badge-count-sm{min-width:14px;height:14px;font-size:12px;line-height:14px;border-radius:7px;}.ant-badge .ant-badge-multiple-words{padding:0 8px;}.ant-badge .ant-badge-dot{z-index:auto;width:6px;min-width:6px;height:6px;background:#dc4446;border-radius:100%;box-shadow:0 0 0 1px #141414;}.ant-badge .ant-badge-dot.ant-scroll-number{transition:background 0.3s;}.ant-badge .ant-badge-count,.ant-badge .ant-badge-dot,.ant-badge .ant-scroll-number-custom-component{position:absolute;top:0;inset-inline-end:0;transform:translate(50%, -50%);transform-origin:100% 0%;}.ant-badge .ant-badge-count.anticon-spin,.ant-badge .ant-badge-dot.anticon-spin,.ant-badge .ant-scroll-number-custom-component.anticon-spin{animation-name:antBadgeLoadingCircle;animation-duration:1s;animation-iteration-count:infinite;animation-timing-function:linear;}.ant-badge.ant-badge-status{line-height:inherit;vertical-align:baseline;}.ant-badge.ant-badge-status .ant-badge-status-dot{position:relative;top:-1px;display:inline-block;width:6px;height:6px;vertical-align:middle;border-radius:50%;}.ant-badge.ant-badge-status .ant-badge-status-success{background-color:#49aa19;}.ant-badge.ant-badge-status .ant-badge-status-processing{overflow:visible;color:#037003;background-color:#037003;}.ant-badge.ant-badge-status .ant-badge-status-processing::after{position:absolute;top:0;inset-inline-start:0;width:100%;height:100%;border-width:1px;border-style:solid;border-color:inherit;border-radius:50%;animation-name:antStatusProcessing;animation-duration:1.2s;animation-iteration-count:infinite;animation-timing-function:ease-in-out;content:\\"\\";}.ant-badge.ant-badge-status .ant-badge-status-default{background-color:rgba(255, 255, 255, 0.25);}.ant-badge.ant-badge-status .ant-badge-status-error{background-color:#dc4446;}.ant-badge.ant-badge-status .ant-badge-status-warning{background-color:#d89614;}.ant-badge.ant-badge-status .ant-badge-status-text{margin-inline-start:8px;color:rgba(255, 255, 255, 0.85);font-size:14px;}.ant-badge.ant-badge .ant-badge-color-blue{background:#1668dc;}.ant-badge.ant-badge .ant-badge-color-blue:not(.ant-badge-count){color:#1668dc;}.ant-badge.ant-badge .ant-badge-color-purple{background:#642ab5;}.ant-badge.ant-badge .ant-badge-color-purple:not(.ant-badge-count){color:#642ab5;}.ant-badge.ant-badge .ant-badge-color-cyan{background:#13a8a8;}.ant-badge.ant-badge .ant-badge-color-cyan:not(.ant-badge-count){color:#13a8a8;}.ant-badge.ant-badge .ant-badge-color-green{background:#49aa19;}.ant-badge.ant-badge .ant-badge-color-green:not(.ant-badge-count){color:#49aa19;}.ant-badge.ant-badge .ant-badge-color-magenta{background:#cb2b83;}.ant-badge.ant-badge .ant-badge-color-magenta:not(.ant-badge-count){color:#cb2b83;}.ant-badge.ant-badge .ant-badge-color-pink{background:#cb2b83;}.ant-badge.ant-badge .ant-badge-color-pink:not(.ant-badge-count){color:#cb2b83;}.ant-badge.ant-badge .ant-badge-color-red{background:#d32029;}.ant-badge.ant-badge .ant-badge-color-red:not(.ant-badge-count){color:#d32029;}.ant-badge.ant-badge .ant-badge-color-orange{background:#d87a16;}.ant-badge.ant-badge .ant-badge-color-orange:not(.ant-badge-count){color:#d87a16;}.ant-badge.ant-badge .ant-badge-color-yellow{background:#d8bd14;}.ant-badge.ant-badge .ant-badge-color-yellow:not(.ant-badge-count){color:#d8bd14;}.ant-badge.ant-badge .ant-badge-color-volcano{background:#d84a1b;}.ant-badge.ant-badge .ant-badge-color-volcano:not(.ant-badge-count){color:#d84a1b;}.ant-badge.ant-badge .ant-badge-color-geekblue{background:#2b4acb;}.ant-badge.ant-badge .ant-badge-color-geekblue:not(.ant-badge-count){color:#2b4acb;}.ant-badge.ant-badge .ant-badge-color-lime{background:#8bbb11;}.ant-badge.ant-badge .ant-badge-color-lime:not(.ant-badge-count){color:#8bbb11;}.ant-badge.ant-badge .ant-badge-color-gold{background:#d89614;}.ant-badge.ant-badge .ant-badge-color-gold:not(.ant-badge-count){color:#d89614;}.ant-badge .ant-badge-zoom-appear,.ant-badge .ant-badge-zoom-enter{animation-name:antZoomBadgeIn;animation-duration:0.3s;animation-timing-function:cubic-bezier(0.12, 0.4, 0.29, 1.46);animation-fill-mode:both;}.ant-badge .ant-badge-zoom-leave{animation-name:antZoomBadgeOut;animation-duration:0.3s;animation-timing-function:cubic-bezier(0.12, 0.4, 0.29, 1.46);animation-fill-mode:both;}.ant-badge.ant-badge-not-a-wrapper .ant-badge-zoom-appear,.ant-badge.ant-badge-not-a-wrapper .ant-badge-zoom-enter{animation-name:antNoWrapperZoomBadgeIn;animation-duration:0.3s;animation-timing-function:cubic-bezier(0.12, 0.4, 0.29, 1.46);}.ant-badge.ant-badge-not-a-wrapper .ant-badge-zoom-leave{animation-name:antNoWrapperZoomBadgeOut;animation-duration:0.3s;animation-timing-function:cubic-bezier(0.12, 0.4, 0.29, 1.46);}.ant-badge.ant-badge-not-a-wrapper:not(.ant-badge-status){vertical-align:middle;}.ant-badge.ant-badge-not-a-wrapper .ant-scroll-number-custom-component,.ant-badge.ant-badge-not-a-wrapper .ant-badge-count{transform:none;}.ant-badge.ant-badge-not-a-wrapper .ant-scroll-number-custom-component,.ant-badge.ant-badge-not-a-wrapper .ant-scroll-number{position:relative;top:auto;display:block;transform-origin:50% 50%;}.ant-badge .ant-scroll-number{overflow:hidden;}.ant-badge .ant-scroll-number .ant-scroll-number-only{position:relative;display:inline-block;height:20px;transition:all 0.3s cubic-bezier(0.12, 0.4, 0.29, 1.46);-webkit-transform-style:preserve-3d;-webkit-backface-visibility:hidden;}.ant-badge .ant-scroll-number .ant-scroll-number-only >p.ant-scroll-number-only-unit{height:20px;margin:0;-webkit-transform-style:preserve-3d;-webkit-backface-visibility:hidden;}.ant-badge .ant-scroll-number .ant-scroll-number-symbol{vertical-align:top;}.ant-badge-rtl{direction:rtl;}.ant-badge-rtl .ant-badge-count,.ant-badge-rtl .ant-badge-dot,.ant-badge-rtl .ant-scroll-number-custom-component{transform:translate(-50%, -50%);}.ant-ribbon-wrapper{position:relative;}.ant-ribbon{box-sizing:border-box;margin:0;padding:0 8px;color:#037003;font-size:14px;line-height:22px;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:absolute;top:8px;white-space:nowrap;background-color:#037003;border-radius:4px;}.ant-ribbon .ant-ribbon-text{color:#fff;}.ant-ribbon .ant-ribbon-corner{position:absolute;top:100%;width:8px;height:8px;color:currentcolor;border:4px solid;transform:scaleY(0.75);transform-origin:top;filter:brightness(75%);}.ant-ribbon.ant-ribbon-color-blue{background:#1668dc;color:#1668dc;}.ant-ribbon.ant-ribbon-color-purple{background:#642ab5;color:#642ab5;}.ant-ribbon.ant-ribbon-color-cyan{background:#13a8a8;color:#13a8a8;}.ant-ribbon.ant-ribbon-color-green{background:#49aa19;color:#49aa19;}.ant-ribbon.ant-ribbon-color-magenta{background:#cb2b83;color:#cb2b83;}.ant-ribbon.ant-ribbon-color-pink{background:#cb2b83;color:#cb2b83;}.ant-ribbon.ant-ribbon-color-red{background:#d32029;color:#d32029;}.ant-ribbon.ant-ribbon-color-orange{background:#d87a16;color:#d87a16;}.ant-ribbon.ant-ribbon-color-yellow{background:#d8bd14;color:#d8bd14;}.ant-ribbon.ant-ribbon-color-volcano{background:#d84a1b;color:#d84a1b;}.ant-ribbon.ant-ribbon-color-geekblue{background:#2b4acb;color:#2b4acb;}.ant-ribbon.ant-ribbon-color-lime{background:#8bbb11;color:#8bbb11;}.ant-ribbon.ant-ribbon-color-gold{background:#d89614;color:#d89614;}.ant-ribbon.ant-ribbon-placement-end{inset-inline-end:-8px;border-end-end-radius:0;}.ant-ribbon.ant-ribbon-placement-end .ant-ribbon-corner{inset-inline-end:0;border-inline-end-color:transparent;border-block-end-color:transparent;}.ant-ribbon.ant-ribbon-placement-start{inset-inline-start:-8px;border-end-start-radius:0;}.ant-ribbon.ant-ribbon-placement-start .ant-ribbon-corner{inset-inline-start:0;border-block-end-color:transparent;border-inline-start-color:transparent;}.ant-ribbon-rtl{direction:rtl;}@keyframes antBadgeLoadingCircle{0%{transform-origin:50%;}100%{transform:translate(50%, -50%) rotate(360deg);transform-origin:50%;}}@keyframes antStatusProcessing{0%{transform:scale(0.8);opacity:0.5;}100%{transform:scale(2.4);opacity:0;}}@keyframes antZoomBadgeIn{0%{transform:scale(0) translate(50%, -50%);opacity:0;}100%{transform:scale(1) translate(50%, -50%);}}@keyframes antZoomBadgeOut{0%{transform:scale(1) translate(50%, -50%);}100%{transform:scale(0) translate(50%, -50%);opacity:0;}}@keyframes antNoWrapperZoomBadgeIn{0%{transform:scale(0);opacity:0;}100%{transform:scale(1);}}@keyframes antNoWrapperZoomBadgeOut{0%{transform:scale(1);}100%{transform:scale(0);opacity:0;}}[class^=\\"ant-ribbon\\"],[class*=\\" ant-ribbon\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-ribbon\\"]::before,[class*=\\" ant-ribbon\\"]::before,[class^=\\"ant-ribbon\\"]::after,[class*=\\" ant-ribbon\\"]::after{box-sizing:border-box;}[class^=\\"ant-ribbon\\"] [class^=\\"ant-ribbon\\"],[class*=\\" ant-ribbon\\"] [class^=\\"ant-ribbon\\"],[class^=\\"ant-ribbon\\"] [class*=\\" ant-ribbon\\"],[class*=\\" ant-ribbon\\"] [class*=\\" ant-ribbon\\"]{box-sizing:border-box;}[class^=\\"ant-ribbon\\"] [class^=\\"ant-ribbon\\"]::before,[class*=\\" ant-ribbon\\"] [class^=\\"ant-ribbon\\"]::before,[class^=\\"ant-ribbon\\"] [class*=\\" ant-ribbon\\"]::before,[class*=\\" ant-ribbon\\"] [class*=\\" ant-ribbon\\"]::before,[class^=\\"ant-ribbon\\"] [class^=\\"ant-ribbon\\"]::after,[class*=\\" ant-ribbon\\"] [class^=\\"ant-ribbon\\"]::after,[class^=\\"ant-ribbon\\"] [class*=\\" ant-ribbon\\"]::after,[class*=\\" ant-ribbon\\"] [class*=\\" ant-ribbon\\"]::after{box-sizing:border-box;}.ant-ribbon{box-sizing:border-box;margin:0;padding:0 8px;color:#037003;font-size:14px;line-height:22px;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:absolute;top:8px;white-space:nowrap;background-color:#037003;border-radius:4px;}.ant-ribbon .ant-ribbon-text{color:#fff;}.ant-ribbon .ant-ribbon-corner{position:absolute;top:100%;width:8px;height:8px;color:currentcolor;border:4px solid;transform:scaleY(0.75);transform-origin:top;filter:brightness(75%);}.ant-ribbon.ant-ribbon-color-blue{background:#1668dc;color:#1668dc;}.ant-ribbon.ant-ribbon-color-purple{background:#642ab5;color:#642ab5;}.ant-ribbon.ant-ribbon-color-cyan{background:#13a8a8;color:#13a8a8;}.ant-ribbon.ant-ribbon-color-green{background:#49aa19;color:#49aa19;}.ant-ribbon.ant-ribbon-color-magenta{background:#cb2b83;color:#cb2b83;}.ant-ribbon.ant-ribbon-color-pink{background:#cb2b83;color:#cb2b83;}.ant-ribbon.ant-ribbon-color-red{background:#d32029;color:#d32029;}.ant-ribbon.ant-ribbon-color-orange{background:#d87a16;color:#d87a16;}.ant-ribbon.ant-ribbon-color-yellow{background:#d8bd14;color:#d8bd14;}.ant-ribbon.ant-ribbon-color-volcano{background:#d84a1b;color:#d84a1b;}.ant-ribbon.ant-ribbon-color-geekblue{background:#2b4acb;color:#2b4acb;}.ant-ribbon.ant-ribbon-color-lime{background:#8bbb11;color:#8bbb11;}.ant-ribbon.ant-ribbon-color-gold{background:#d89614;color:#d89614;}.ant-ribbon.ant-ribbon-placement-end{inset-inline-end:-8px;border-end-end-radius:0;}.ant-ribbon.ant-ribbon-placement-end .ant-ribbon-corner{inset-inline-end:0;border-inline-end-color:transparent;border-block-end-color:transparent;}.ant-ribbon.ant-ribbon-placement-start{inset-inline-start:-8px;border-end-start-radius:0;}.ant-ribbon.ant-ribbon-placement-start .ant-ribbon-corner{inset-inline-start:0;border-block-end-color:transparent;border-inline-start-color:transparent;}.ant-ribbon-rtl{direction:rtl;}.ant-ribbon-wrapper{position:relative;}[class^=\\"ant-breadcrumb\\"],[class*=\\" ant-breadcrumb\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-breadcrumb\\"]::before,[class*=\\" ant-breadcrumb\\"]::before,[class^=\\"ant-breadcrumb\\"]::after,[class*=\\" ant-breadcrumb\\"]::after{box-sizing:border-box;}[class^=\\"ant-breadcrumb\\"] [class^=\\"ant-breadcrumb\\"],[class*=\\" ant-breadcrumb\\"] [class^=\\"ant-breadcrumb\\"],[class^=\\"ant-breadcrumb\\"] [class*=\\" ant-breadcrumb\\"],[class*=\\" ant-breadcrumb\\"] [class*=\\" ant-breadcrumb\\"]{box-sizing:border-box;}[class^=\\"ant-breadcrumb\\"] [class^=\\"ant-breadcrumb\\"]::before,[class*=\\" ant-breadcrumb\\"] [class^=\\"ant-breadcrumb\\"]::before,[class^=\\"ant-breadcrumb\\"] [class*=\\" ant-breadcrumb\\"]::before,[class*=\\" ant-breadcrumb\\"] [class*=\\" ant-breadcrumb\\"]::before,[class^=\\"ant-breadcrumb\\"] [class^=\\"ant-breadcrumb\\"]::after,[class*=\\" ant-breadcrumb\\"] [class^=\\"ant-breadcrumb\\"]::after,[class^=\\"ant-breadcrumb\\"] [class*=\\" ant-breadcrumb\\"]::after,[class*=\\" ant-breadcrumb\\"] [class*=\\" ant-breadcrumb\\"]::after{box-sizing:border-box;}.ant-breadcrumb{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.45);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';}.ant-breadcrumb .anticon{font-size:14px;}.ant-breadcrumb ol{display:flex;flex-wrap:wrap;margin:0;padding:0;list-style:none;}.ant-breadcrumb a{color:rgba(255, 255, 255, 0.45);transition:color 0.2s;padding:0 4px;border-radius:4px;height:22px;display:inline-block;margin-inline:-4px;}.ant-breadcrumb a:hover{color:rgba(255, 255, 255, 0.85);background-color:rgba(255, 255, 255, 0.12);}.ant-breadcrumb a:focus-visible{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-breadcrumb li:last-child{color:rgba(255, 255, 255, 0.85);}.ant-breadcrumb li:last-child>.ant-breadcrumb-separator{display:none;}.ant-breadcrumb .ant-breadcrumb-separator{margin-inline:8px;color:rgba(255, 255, 255, 0.45);}.ant-breadcrumb .ant-breadcrumb-link >.anticon+span,.ant-breadcrumb .ant-breadcrumb-link >.anticon+a{margin-inline-start:4px;}.ant-breadcrumb .ant-breadcrumb-overlay-link{border-radius:4px;height:22px;display:inline-block;padding:0 4px;margin-inline:-4px;}.ant-breadcrumb .ant-breadcrumb-overlay-link >.anticon{margin-inline-start:4px;font-size:12px;}.ant-breadcrumb .ant-breadcrumb-overlay-link:hover{color:rgba(255, 255, 255, 0.85);background-color:rgba(255, 255, 255, 0.12);}.ant-breadcrumb .ant-breadcrumb-overlay-link:hover a{color:rgba(255, 255, 255, 0.85);}.ant-breadcrumb .ant-breadcrumb-overlay-link a:hover{background-color:transparent;}.ant-breadcrumb.ant-breadcrumb-rtl{direction:rtl;}[class^=\\"ant-btn\\"],[class*=\\" ant-btn\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-btn\\"]::before,[class*=\\" ant-btn\\"]::before,[class^=\\"ant-btn\\"]::after,[class*=\\" ant-btn\\"]::after{box-sizing:border-box;}[class^=\\"ant-btn\\"] [class^=\\"ant-btn\\"],[class*=\\" ant-btn\\"] [class^=\\"ant-btn\\"],[class^=\\"ant-btn\\"] [class*=\\" ant-btn\\"],[class*=\\" ant-btn\\"] [class*=\\" ant-btn\\"]{box-sizing:border-box;}[class^=\\"ant-btn\\"] [class^=\\"ant-btn\\"]::before,[class*=\\" ant-btn\\"] [class^=\\"ant-btn\\"]::before,[class^=\\"ant-btn\\"] [class*=\\" ant-btn\\"]::before,[class*=\\" ant-btn\\"] [class*=\\" ant-btn\\"]::before,[class^=\\"ant-btn\\"] [class^=\\"ant-btn\\"]::after,[class*=\\" ant-btn\\"] [class^=\\"ant-btn\\"]::after,[class^=\\"ant-btn\\"] [class*=\\" ant-btn\\"]::after,[class*=\\" ant-btn\\"] [class*=\\" ant-btn\\"]::after{box-sizing:border-box;}.ant-btn{outline:none;position:relative;display:inline-block;font-weight:400;white-space:nowrap;text-align:center;background-image:none;background-color:transparent;border:1px solid transparent;cursor:pointer;transition:all 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);user-select:none;touch-action:manipulation;line-height:1.5714285714285714;color:rgba(255, 255, 255, 0.85);}.ant-btn >span{display:inline-block;}.ant-btn >.anticon+span,.ant-btn >span+.anticon{margin-inline-start:8px;}.ant-btn >a{color:currentColor;}.ant-btn:not(:disabled):focus-visible{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-btn-icon-only.ant-btn-compact-item{flex:none;}.ant-btn-compact-item.ant-btn-primary:not([disabled])+.ant-btn-compact-item.ant-btn-primary:not([disabled]){position:relative;}.ant-btn-compact-item.ant-btn-primary:not([disabled])+.ant-btn-compact-item.ant-btn-primary:not([disabled]):before{position:absolute;top:-1px;inset-inline-start:-1px;display:inline-block;width:1px;height:calc(100% + 2px);background-color:#198016;content:\\"\\";}.ant-btn-compact-vertical-item.ant-btn-primary:not([disabled])+.ant-btn-compact-vertical-item.ant-btn-primary:not([disabled]){position:relative;}.ant-btn-compact-vertical-item.ant-btn-primary:not([disabled])+.ant-btn-compact-vertical-item.ant-btn-primary:not([disabled]):before{position:absolute;top:-1px;inset-inline-start:-1px;display:inline-block;width:calc(100% + 2px);height:1px;background-color:#198016;content:\\"\\";}.ant-btn.ant-btn-sm{font-size:14px;height:24px;padding:0px 7px;border-radius:4px;}.ant-btn.ant-btn-sm.ant-btn-icon-only{width:24px;padding-inline-start:0;padding-inline-end:0;}.ant-btn.ant-btn-sm.ant-btn-icon-only.ant-btn-round{width:auto;}.ant-btn.ant-btn-sm.ant-btn-icon-only >span{transform:scale(1.143);}.ant-btn.ant-btn-sm.ant-btn-loading{opacity:0.65;cursor:default;}.ant-btn.ant-btn-sm .ant-btn-loading-icon{transition:width 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),opacity 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);}.ant-btn.ant-btn-sm:not(.ant-btn-icon-only) .ant-btn-loading-icon>.anticon{margin-inline-end:8px;}.ant-btn.ant-btn-circle.ant-btn-sm{min-width:24px;padding-inline-start:0;padding-inline-end:0;border-radius:50%;}.ant-btn.ant-btn-round.ant-btn-sm{border-radius:24px;padding-inline-start:12px;padding-inline-end:12px;}.ant-btn{font-size:14px;height:32px;padding:4px 15px;border-radius:6px;}.ant-btn.ant-btn-icon-only{width:32px;padding-inline-start:0;padding-inline-end:0;}.ant-btn.ant-btn-icon-only.ant-btn-round{width:auto;}.ant-btn.ant-btn-icon-only >span{transform:scale(1.143);}.ant-btn.ant-btn-loading{opacity:0.65;cursor:default;}.ant-btn .ant-btn-loading-icon{transition:width 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),opacity 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);}.ant-btn:not(.ant-btn-icon-only) .ant-btn-loading-icon>.anticon{margin-inline-end:8px;}.ant-btn.ant-btn-circle{min-width:32px;padding-inline-start:0;padding-inline-end:0;border-radius:50%;}.ant-btn.ant-btn-round{border-radius:32px;padding-inline-start:16px;padding-inline-end:16px;}.ant-btn.ant-btn-lg{font-size:16px;height:40px;padding:6.428571428571429px 15px;border-radius:8px;}.ant-btn.ant-btn-lg.ant-btn-icon-only{width:40px;padding-inline-start:0;padding-inline-end:0;}.ant-btn.ant-btn-lg.ant-btn-icon-only.ant-btn-round{width:auto;}.ant-btn.ant-btn-lg.ant-btn-icon-only >span{transform:scale(1.143);}.ant-btn.ant-btn-lg.ant-btn-loading{opacity:0.65;cursor:default;}.ant-btn.ant-btn-lg .ant-btn-loading-icon{transition:width 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),opacity 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);}.ant-btn.ant-btn-lg:not(.ant-btn-icon-only) .ant-btn-loading-icon>.anticon{margin-inline-end:8px;}.ant-btn.ant-btn-circle.ant-btn-lg{min-width:40px;padding-inline-start:0;padding-inline-end:0;border-radius:50%;}.ant-btn.ant-btn-round.ant-btn-lg{border-radius:40px;padding-inline-start:20px;padding-inline-end:20px;}.ant-btn.ant-btn-block{width:100%;}.ant-btn-default{background-color:#141414;border-color:#424242;box-shadow:0 2px 0 rgba(255, 255, 255, 0.04);}.ant-btn-default:disabled{cursor:not-allowed;border-color:#424242;color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);box-shadow:none;}.ant-btn-default:not(:disabled):hover{color:#198016;border-color:#198016;}.ant-btn-default:not(:disabled):active{color:#075a07;border-color:#075a07;}.ant-btn-default.ant-btn-background-ghost{color:#141414;background-color:transparent;border-color:#141414;box-shadow:none;}.ant-btn-default.ant-btn-background-ghost:not(:disabled):hover{background-color:transparent;}.ant-btn-default.ant-btn-background-ghost:not(:disabled):active{background-color:transparent;}.ant-btn-default.ant-btn-background-ghost:disabled{cursor:not-allowed;color:rgba(255, 255, 255, 0.25);border-color:#424242;}.ant-btn-default.ant-btn-dangerous{color:#dc4446;border-color:#dc4446;}.ant-btn-default.ant-btn-dangerous:not(:disabled):hover{color:#e86e6b;border-color:#7e2e2f;}.ant-btn-default.ant-btn-dangerous:not(:disabled):active{color:#ad393a;border-color:#ad393a;}.ant-btn-default.ant-btn-dangerous.ant-btn-background-ghost{color:#dc4446;background-color:transparent;border-color:#dc4446;box-shadow:none;}.ant-btn-default.ant-btn-dangerous.ant-btn-background-ghost:not(:disabled):hover{background-color:transparent;}.ant-btn-default.ant-btn-dangerous.ant-btn-background-ghost:not(:disabled):active{background-color:transparent;}.ant-btn-default.ant-btn-dangerous.ant-btn-background-ghost:disabled{cursor:not-allowed;color:rgba(255, 255, 255, 0.25);border-color:#424242;}.ant-btn-default.ant-btn-dangerous:disabled{cursor:not-allowed;border-color:#424242;color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);box-shadow:none;}.ant-btn-primary{color:#fff;background-color:#037003;box-shadow:0 2px 0 rgba(0, 53, 0, 0.15);}.ant-btn-primary:disabled{cursor:not-allowed;border-color:#424242;color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);box-shadow:none;}.ant-btn-primary:not(:disabled):hover{color:#fff;background-color:#198016;}.ant-btn-primary:not(:disabled):active{color:#fff;background-color:#075a07;}.ant-btn-primary.ant-btn-background-ghost{color:#037003;background-color:transparent;border-color:#037003;box-shadow:none;}.ant-btn-primary.ant-btn-background-ghost:not(:disabled):hover{background-color:transparent;color:#198016;border-color:#198016;}.ant-btn-primary.ant-btn-background-ghost:not(:disabled):active{background-color:transparent;color:#075a07;border-color:#075a07;}.ant-btn-primary.ant-btn-background-ghost:disabled{cursor:not-allowed;color:rgba(255, 255, 255, 0.25);border-color:#424242;}.ant-btn-primary.ant-btn-dangerous{background-color:#dc4446;box-shadow:0 2px 0 rgba(238, 38, 56, 0.11);}.ant-btn-primary.ant-btn-dangerous:not(:disabled):hover{background-color:#e86e6b;}.ant-btn-primary.ant-btn-dangerous:not(:disabled):active{background-color:#ad393a;}.ant-btn-primary.ant-btn-dangerous.ant-btn-background-ghost{color:#dc4446;background-color:transparent;border-color:#dc4446;box-shadow:none;}.ant-btn-primary.ant-btn-dangerous.ant-btn-background-ghost:not(:disabled):hover{background-color:transparent;color:#e86e6b;border-color:#e86e6b;}.ant-btn-primary.ant-btn-dangerous.ant-btn-background-ghost:not(:disabled):active{background-color:transparent;color:#ad393a;border-color:#ad393a;}.ant-btn-primary.ant-btn-dangerous.ant-btn-background-ghost:disabled{cursor:not-allowed;color:rgba(255, 255, 255, 0.25);border-color:#424242;}.ant-btn-primary.ant-btn-dangerous:disabled{cursor:not-allowed;border-color:#424242;color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);box-shadow:none;}.ant-btn-dashed{background-color:#141414;border-color:#424242;box-shadow:0 2px 0 rgba(255, 255, 255, 0.04);border-style:dashed;}.ant-btn-dashed:disabled{cursor:not-allowed;border-color:#424242;color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);box-shadow:none;}.ant-btn-dashed:not(:disabled):hover{color:#198016;border-color:#198016;}.ant-btn-dashed:not(:disabled):active{color:#075a07;border-color:#075a07;}.ant-btn-dashed.ant-btn-background-ghost{color:#141414;background-color:transparent;border-color:#141414;box-shadow:none;}.ant-btn-dashed.ant-btn-background-ghost:not(:disabled):hover{background-color:transparent;}.ant-btn-dashed.ant-btn-background-ghost:not(:disabled):active{background-color:transparent;}.ant-btn-dashed.ant-btn-background-ghost:disabled{cursor:not-allowed;color:rgba(255, 255, 255, 0.25);border-color:#424242;}.ant-btn-dashed.ant-btn-dangerous{color:#dc4446;border-color:#dc4446;}.ant-btn-dashed.ant-btn-dangerous:not(:disabled):hover{color:#e86e6b;border-color:#7e2e2f;}.ant-btn-dashed.ant-btn-dangerous:not(:disabled):active{color:#ad393a;border-color:#ad393a;}.ant-btn-dashed.ant-btn-dangerous.ant-btn-background-ghost{color:#dc4446;background-color:transparent;border-color:#dc4446;box-shadow:none;}.ant-btn-dashed.ant-btn-dangerous.ant-btn-background-ghost:not(:disabled):hover{background-color:transparent;}.ant-btn-dashed.ant-btn-dangerous.ant-btn-background-ghost:not(:disabled):active{background-color:transparent;}.ant-btn-dashed.ant-btn-dangerous.ant-btn-background-ghost:disabled{cursor:not-allowed;color:rgba(255, 255, 255, 0.25);border-color:#424242;}.ant-btn-dashed.ant-btn-dangerous:disabled{cursor:not-allowed;border-color:#424242;color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);box-shadow:none;}.ant-btn-link{color:#1668dc;}.ant-btn-link:not(:disabled):hover{color:#15417e;}.ant-btn-link:not(:disabled):active{color:#1554ad;}.ant-btn-link:disabled{cursor:not-allowed;color:rgba(255, 255, 255, 0.25);}.ant-btn-link.ant-btn-dangerous{color:#dc4446;}.ant-btn-link.ant-btn-dangerous:not(:disabled):hover{color:#e86e6b;}.ant-btn-link.ant-btn-dangerous:not(:disabled):active{color:#ad393a;}.ant-btn-link.ant-btn-dangerous:disabled{cursor:not-allowed;color:rgba(255, 255, 255, 0.25);}.ant-btn-text:not(:disabled):hover{color:rgba(255, 255, 255, 0.85);background-color:rgba(255, 255, 255, 0.12);}.ant-btn-text:not(:disabled):active{color:rgba(255, 255, 255, 0.85);background-color:rgba(255, 255, 255, 0.18);}.ant-btn-text:disabled{cursor:not-allowed;color:rgba(255, 255, 255, 0.25);}.ant-btn-text.ant-btn-dangerous{color:#dc4446;}.ant-btn-text.ant-btn-dangerous:disabled{cursor:not-allowed;color:rgba(255, 255, 255, 0.25);}.ant-btn-text.ant-btn-dangerous:not(:disabled):hover{color:#e86e6b;background-color:#2c1618;}.ant-btn-text.ant-btn-dangerous:not(:disabled):active{color:#e86e6b;background-color:#2c1618;}.ant-btn-disabled{cursor:not-allowed;border-color:#424242;color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);box-shadow:none;}.ant-btn-disabled.ant-btn:hover{cursor:not-allowed;border-color:#424242;color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);box-shadow:none;}.ant-btn-group{position:relative;display:inline-flex;}.ant-btn-group >span:not(:last-child),.ant-btn-group >.ant-btn:not(:last-child),.ant-btn-group >span:not(:last-child)>.ant-btn,.ant-btn-group >.ant-btn:not(:last-child)>.ant-btn{border-start-end-radius:0;border-end-end-radius:0;}.ant-btn-group >span:not(:first-child),.ant-btn-group >.ant-btn:not(:first-child){margin-inline-start:-1px;}.ant-btn-group >span:not(:first-child),.ant-btn-group >.ant-btn:not(:first-child),.ant-btn-group >span:not(:first-child)>.ant-btn,.ant-btn-group >.ant-btn:not(:first-child)>.ant-btn{border-start-start-radius:0;border-end-start-radius:0;}.ant-btn-group .ant-btn{position:relative;z-index:1;}.ant-btn-group .ant-btn:hover,.ant-btn-group .ant-btn:focus,.ant-btn-group .ant-btn:active{z-index:2;}.ant-btn-group .ant-btn[disabled]{z-index:0;}.ant-btn-group .ant-btn-icon-only{font-size:14px;}.ant-btn-group >span:not(:last-child):not(:disabled),.ant-btn-group >.ant-btn-primary:not(:last-child):not(:disabled),.ant-btn-group >span:not(:last-child)>.ant-btn-primary:not(:disabled),.ant-btn-group >.ant-btn-primary:not(:last-child)>.ant-btn-primary:not(:disabled){border-inline-end-color:#198016;}.ant-btn-group >span:not(:first-child):not(:disabled),.ant-btn-group >.ant-btn-primary:not(:first-child):not(:disabled),.ant-btn-group >span:not(:first-child)>.ant-btn-primary:not(:disabled),.ant-btn-group >.ant-btn-primary:not(:first-child)>.ant-btn-primary:not(:disabled){border-inline-start-color:#198016;}.ant-btn-group >span:not(:last-child):not(:disabled),.ant-btn-group >.ant-btn-danger:not(:last-child):not(:disabled),.ant-btn-group >span:not(:last-child)>.ant-btn-danger:not(:disabled),.ant-btn-group >.ant-btn-danger:not(:last-child)>.ant-btn-danger:not(:disabled){border-inline-end-color:#e86e6b;}.ant-btn-group >span:not(:first-child):not(:disabled),.ant-btn-group >.ant-btn-danger:not(:first-child):not(:disabled),.ant-btn-group >span:not(:first-child)>.ant-btn-danger:not(:disabled),.ant-btn-group >.ant-btn-danger:not(:first-child)>.ant-btn-danger:not(:disabled){border-inline-start-color:#e86e6b;}.ant-btn-compact-item:not(.ant-btn-compact-last-item){margin-inline-end:-1px;}.ant-btn-compact-item:hover,.ant-btn-compact-item:active{z-index:2;}.ant-btn-compact-item[disabled]{z-index:0;}.ant-btn-compact-item:not(.ant-btn-compact-first-item):not(.ant-btn-compact-last-item){border-radius:0;}.ant-btn-compact-item:not(.ant-btn-compact-last-item).ant-btn-compact-first-item,.ant-btn-compact-item:not(.ant-btn-compact-last-item).ant-btn-compact-first-item.ant-btn-sm,.ant-btn-compact-item:not(.ant-btn-compact-last-item).ant-btn-compact-first-item.ant-btn-lg{border-start-end-radius:0;border-end-end-radius:0;}.ant-btn-compact-item:not(.ant-btn-compact-first-item).ant-btn-compact-last-item,.ant-btn-compact-item:not(.ant-btn-compact-first-item).ant-btn-compact-last-item.ant-btn-sm,.ant-btn-compact-item:not(.ant-btn-compact-first-item).ant-btn-compact-last-item.ant-btn-lg{border-start-start-radius:0;border-end-start-radius:0;}.ant-btn-compact-vertical-item:not(.ant-btn-compact-vertical-last-item){margin-bottom:-1px;}.ant-btn-compact-vertical-item:hover,.ant-btn-compact-vertical-item:focus,.ant-btn-compact-vertical-item:active{z-index:2;}.ant-btn-compact-vertical-item[disabled]{z-index:0;}.ant-btn-compact-vertical-item:not(.ant-btn-compact-vertical-first-item):not(.ant-btn-compact-vertical-last-item){border-radius:0;}.ant-btn-compact-vertical-item.ant-btn-compact-vertical-first-item:not(.ant-btn-compact-vertical-last-item),.ant-btn-compact-vertical-item.ant-btn-compact-vertical-first-item:not(.ant-btn-compact-vertical-last-item).ant-btn-sm,.ant-btn-compact-vertical-item.ant-btn-compact-vertical-first-item:not(.ant-btn-compact-vertical-last-item).ant-btn-lg{border-end-end-radius:0;border-end-start-radius:0;}.ant-btn-compact-vertical-item.ant-btn-compact-vertical-last-item:not(.ant-btn-compact-vertical-first-item),.ant-btn-compact-vertical-item.ant-btn-compact-vertical-last-item:not(.ant-btn-compact-vertical-first-item).ant-btn-sm,.ant-btn-compact-vertical-item.ant-btn-compact-vertical-last-item:not(.ant-btn-compact-vertical-first-item).ant-btn-lg{border-start-start-radius:0;border-start-end-radius:0;}[class^=\\"ant-wave\\"],[class*=\\" ant-wave\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-wave\\"]::before,[class*=\\" ant-wave\\"]::before,[class^=\\"ant-wave\\"]::after,[class*=\\" ant-wave\\"]::after{box-sizing:border-box;}[class^=\\"ant-wave\\"] [class^=\\"ant-wave\\"],[class*=\\" ant-wave\\"] [class^=\\"ant-wave\\"],[class^=\\"ant-wave\\"] [class*=\\" ant-wave\\"],[class*=\\" ant-wave\\"] [class*=\\" ant-wave\\"]{box-sizing:border-box;}[class^=\\"ant-wave\\"] [class^=\\"ant-wave\\"]::before,[class*=\\" ant-wave\\"] [class^=\\"ant-wave\\"]::before,[class^=\\"ant-wave\\"] [class*=\\" ant-wave\\"]::before,[class*=\\" ant-wave\\"] [class*=\\" ant-wave\\"]::before,[class^=\\"ant-wave\\"] [class^=\\"ant-wave\\"]::after,[class*=\\" ant-wave\\"] [class^=\\"ant-wave\\"]::after,[class^=\\"ant-wave\\"] [class*=\\" ant-wave\\"]::after,[class*=\\" ant-wave\\"] [class*=\\" ant-wave\\"]::after{box-sizing:border-box;}.ant-wave{position:absolute;background:transparent;pointer-events:none;box-sizing:border-box;color:var(--wave-color, #037003);box-shadow:0 0 0 0 currentcolor;opacity:0.2;}.ant-wave.wave-motion-appear{transition:box-shadow 0.4s cubic-bezier(0.08, 0.82, 0.17, 1),opacity 2s cubic-bezier(0.08, 0.82, 0.17, 1);}.ant-wave.wave-motion-appear-active{box-shadow:0 0 0 6px currentcolor;opacity:0;}[class^=\\"ant-picker\\"],[class*=\\" ant-picker\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-picker\\"]::before,[class*=\\" ant-picker\\"]::before,[class^=\\"ant-picker\\"]::after,[class*=\\" ant-picker\\"]::after{box-sizing:border-box;}[class^=\\"ant-picker\\"] [class^=\\"ant-picker\\"],[class*=\\" ant-picker\\"] [class^=\\"ant-picker\\"],[class^=\\"ant-picker\\"] [class*=\\" ant-picker\\"],[class*=\\" ant-picker\\"] [class*=\\" ant-picker\\"]{box-sizing:border-box;}[class^=\\"ant-picker\\"] [class^=\\"ant-picker\\"]::before,[class*=\\" ant-picker\\"] [class^=\\"ant-picker\\"]::before,[class^=\\"ant-picker\\"] [class*=\\" ant-picker\\"]::before,[class*=\\" ant-picker\\"] [class*=\\" ant-picker\\"]::before,[class^=\\"ant-picker\\"] [class^=\\"ant-picker\\"]::after,[class*=\\" ant-picker\\"] [class^=\\"ant-picker\\"]::after,[class^=\\"ant-picker\\"] [class*=\\" ant-picker\\"]::after,[class*=\\" ant-picker\\"] [class*=\\" ant-picker\\"]::after{box-sizing:border-box;}.ant-picker-calendar{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';background:#141414;}.ant-picker-calendar .ant-picker-panel{display:inline-flex;flex-direction:column;text-align:center;background:#141414;border:1px solid rgba(253, 253, 253, 0.12);border-radius:8px;outline:none;}.ant-picker-calendar .ant-picker-panel-focused{border-color:#037003;}.ant-picker-calendar .ant-picker-panel-rtl{direction:rtl;}.ant-picker-calendar .ant-picker-panel-rtl .ant-picker-prev-icon,.ant-picker-calendar .ant-picker-panel-rtl .ant-picker-super-prev-icon{transform:rotate(45deg);}.ant-picker-calendar .ant-picker-panel-rtl .ant-picker-next-icon,.ant-picker-calendar .ant-picker-panel-rtl .ant-picker-super-next-icon{transform:rotate(-135deg);}.ant-picker-calendar .ant-picker-decade-panel,.ant-picker-calendar .ant-picker-year-panel,.ant-picker-calendar .ant-picker-quarter-panel,.ant-picker-calendar .ant-picker-month-panel,.ant-picker-calendar .ant-picker-week-panel,.ant-picker-calendar .ant-picker-date-panel,.ant-picker-calendar .ant-picker-time-panel{display:flex;flex-direction:column;width:280px;}.ant-picker-calendar .ant-picker-header{display:flex;padding:0 8px;color:rgba(255, 255, 255, 0.85);border-bottom:1px solid rgba(253, 253, 253, 0.12);}.ant-picker-calendar .ant-picker-header >*{flex:none;}.ant-picker-calendar .ant-picker-header button{padding:0;color:rgba(255, 255, 255, 0.45);line-height:40px;background:transparent;border:0;cursor:pointer;transition:color 0.2s;}.ant-picker-calendar .ant-picker-header >button{min-width:1.6em;font-size:14px;}.ant-picker-calendar .ant-picker-header >button:hover{color:rgba(255, 255, 255, 0.85);}.ant-picker-calendar .ant-picker-header-view{flex:auto;font-weight:600;line-height:40px;}.ant-picker-calendar .ant-picker-header-view button{color:inherit;font-weight:inherit;vertical-align:top;}.ant-picker-calendar .ant-picker-header-view button:not(:first-child){margin-inline-start:8px;}.ant-picker-calendar .ant-picker-header-view button:hover{color:#037003;}.ant-picker-calendar .ant-picker-prev-icon,.ant-picker-calendar .ant-picker-next-icon,.ant-picker-calendar .ant-picker-super-prev-icon,.ant-picker-calendar .ant-picker-super-next-icon{position:relative;display:inline-block;width:7px;height:7px;}.ant-picker-calendar .ant-picker-prev-icon::before,.ant-picker-calendar .ant-picker-next-icon::before,.ant-picker-calendar .ant-picker-super-prev-icon::before,.ant-picker-calendar .ant-picker-super-next-icon::before{position:absolute;top:0;inset-inline-start:0;display:inline-block;width:7px;height:7px;border:0 solid currentcolor;border-block-start-width:1.5px;border-block-end-width:0;border-inline-start-width:1.5px;border-inline-end-width:0;content:\\"\\";}.ant-picker-calendar .ant-picker-super-prev-icon::after,.ant-picker-calendar .ant-picker-super-next-icon::after{position:absolute;top:4px;inset-inline-start:4px;display:inline-block;width:7px;height:7px;border:0 solid currentcolor;border-block-start-width:1.5px;border-block-end-width:0;border-inline-start-width:1.5px;border-inline-end-width:0;content:\\"\\";}.ant-picker-calendar .ant-picker-prev-icon,.ant-picker-calendar .ant-picker-super-prev-icon{transform:rotate(-45deg);}.ant-picker-calendar .ant-picker-next-icon,.ant-picker-calendar .ant-picker-super-next-icon{transform:rotate(135deg);}.ant-picker-calendar .ant-picker-content{width:100%;table-layout:fixed;border-collapse:collapse;}.ant-picker-calendar .ant-picker-content th,.ant-picker-calendar .ant-picker-content td{position:relative;min-width:24px;font-weight:normal;}.ant-picker-calendar .ant-picker-content th{height:32px;color:rgba(255, 255, 255, 0.85);vertical-align:middle;}.ant-picker-calendar .ant-picker-cell{padding:4px 0;color:rgba(255, 255, 255, 0.25);cursor:pointer;}.ant-picker-calendar .ant-picker-cell-in-view{color:rgba(255, 255, 255, 0.85);}.ant-picker-calendar .ant-picker-cell::before{position:absolute;top:50%;inset-inline-start:0;inset-inline-end:0;z-index:1;height:24px;transform:translateY(-50%);transition:all 0.3s;content:\\"\\";}.ant-picker-calendar .ant-picker-cell .ant-picker-cell-inner{position:relative;z-index:2;display:inline-block;min-width:24px;height:24px;line-height:24px;border-radius:4px;transition:background 0.2s,border 0.2s;}.ant-picker-calendar .ant-picker-cell:hover:not(.ant-picker-cell-in-view) .ant-picker-cell-inner,.ant-picker-calendar .ant-picker-cell:hover:not(.ant-picker-cell-selected):not(.ant-picker-cell-range-start):not(.ant-picker-cell-range-end):not(.ant-picker-cell-range-hover-start):not(.ant-picker-cell-range-hover-end) .ant-picker-cell-inner{background:rgba(255, 255, 255, 0.08);}.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-today .ant-picker-cell-inner::before{position:absolute;top:0;inset-inline-end:0;bottom:0;inset-inline-start:0;z-index:1;border:1px solid #037003;border-radius:4px;content:\\"\\";}.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-in-range{position:relative;}.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-in-range::before{background:#111911;}.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-selected .ant-picker-cell-inner,.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-start .ant-picker-cell-inner,.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-end .ant-picker-cell-inner{color:#fff;background:#037003;}.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-start:not(.ant-picker-cell-range-start-single)::before,.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-end:not(.ant-picker-cell-range-end-single)::before{background:#111911;}.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-start::before{inset-inline-start:50%;}.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-end::before{inset-inline-end:50%;}.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:not(.ant-picker-cell-in-range):not(.ant-picker-cell-range-start):not(.ant-picker-cell-range-end)::after,.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-hover-end:not(.ant-picker-cell-in-range):not(.ant-picker-cell-range-start):not(.ant-picker-cell-range-end)::after,.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-hover-start.ant-picker-cell-range-start-single::after,.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-hover-start.ant-picker-cell-range-start.ant-picker-cell-range-end.ant-picker-cell-range-end-near-hover::after,.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-hover-end.ant-picker-cell-range-start.ant-picker-cell-range-end.ant-picker-cell-range-start-near-hover::after,.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-hover-end.ant-picker-cell-range-end-single::after,.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-hover:not(.ant-picker-cell-in-range)::after{position:absolute;top:50%;z-index:0;height:24px;border-top:1px dashed #06d306;border-bottom:1px dashed #06d306;transform:translateY(-50%);transition:all 0.3s;content:\\"\\";}.ant-picker-calendar .ant-picker-cell-range-hover-start::after,.ant-picker-calendar .ant-picker-cell-range-hover-end::after,.ant-picker-calendar .ant-picker-cell-range-hover::after{inset-inline-end:0;inset-inline-start:2px;}.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover::before,.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-start.ant-picker-cell-range-hover::before,.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-end.ant-picker-cell-range-hover::before,.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-start:not(.ant-picker-cell-range-start-single).ant-picker-cell-range-hover-start::before,.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-end:not(.ant-picker-cell-range-end-single).ant-picker-cell-range-hover-end::before,.ant-picker-panel>:not(.ant-picker-date-panel) .ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-start::before,.ant-picker-panel>:not(.ant-picker-date-panel) .ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-end::before{background:#2cf92c;}.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-start:not(.ant-picker-cell-range-start-single):not(.ant-picker-cell-range-end) .ant-picker-cell-inner{border-start-start-radius:4px;border-end-start-radius:4px;border-start-end-radius:0;border-end-end-radius:0;}.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-end:not(.ant-picker-cell-range-end-single):not(.ant-picker-cell-range-start) .ant-picker-cell-inner{border-start-start-radius:0;border-end-start-radius:0;border-start-end-radius:4px;border-end-end-radius:4px;}.ant-picker-calendar .ant-picker-cell-range-hover.ant-picker-cell-range-end::after{inset-inline-start:50%;}tr>.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-hover:first-child::after,tr>.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-hover-end:first-child::after,.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-start.ant-picker-cell-range-hover-edge-start.ant-picker-cell-range-hover-edge-start-near-range::after,.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-hover-edge-start:not(.ant-picker-cell-range-hover-edge-start-near-range)::after,.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-hover-start::after{inset-inline-start:6px;border-inline-start:1px dashed #06d306;border-start-start-radius:1px;border-end-start-radius:1px;}tr>.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-hover:last-child::after,tr>.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::after,.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-end.ant-picker-cell-range-hover-edge-end.ant-picker-cell-range-hover-edge-end-near-range::after,.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-hover-edge-end:not(.ant-picker-cell-range-hover-edge-end-near-range)::after,.ant-picker-calendar .ant-picker-cell-in-view.ant-picker-cell-range-hover-end::after{inset-inline-end:6px;border-inline-end:1px dashed #06d306;border-start-end-radius:1px;border-end-end-radius:1px;}.ant-picker-calendar .ant-picker-cell-disabled{color:rgba(255, 255, 255, 0.25);pointer-events:none;}.ant-picker-calendar .ant-picker-cell-disabled .ant-picker-cell-inner{background:transparent;}.ant-picker-calendar .ant-picker-cell-disabled::before{background:rgba(255, 255, 255, 0.08);}.ant-picker-calendar .ant-picker-cell-disabled.ant-picker-cell-today .ant-picker-cell-inner::before{border-color:rgba(255, 255, 255, 0.25);}.ant-picker-calendar .ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-start .ant-picker-cell-inner::after,.ant-picker-calendar .ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-end .ant-picker-cell-inner::after{position:absolute;top:0;bottom:0;z-index:-1;background:#2cf92c;transition:all 0.3s;content:\\"\\";}.ant-picker-calendar .ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-start .ant-picker-cell-inner::after{inset-inline-end:-6px;inset-inline-start:0;}.ant-picker-calendar .ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-end .ant-picker-cell-inner::after{inset-inline-end:0;inset-inline-start:-6px;}.ant-picker-calendar .ant-picker-range-hover.ant-picker-range-start::after{inset-inline-end:50%;}.ant-picker-calendar .ant-picker-decade-panel .ant-picker-content,.ant-picker-calendar .ant-picker-year-panel .ant-picker-content,.ant-picker-calendar .ant-picker-quarter-panel .ant-picker-content,.ant-picker-calendar .ant-picker-month-panel .ant-picker-content{height:264px;}.ant-picker-calendar .ant-picker-decade-panel .ant-picker-cell-inner,.ant-picker-calendar .ant-picker-year-panel .ant-picker-cell-inner,.ant-picker-calendar .ant-picker-quarter-panel .ant-picker-cell-inner,.ant-picker-calendar .ant-picker-month-panel .ant-picker-cell-inner{padding:0 8px;}.ant-picker-calendar .ant-picker-quarter-panel .ant-picker-content{height:56px;}.ant-picker-calendar .ant-picker-panel .ant-picker-footer{border-top:1px solid rgba(253, 253, 253, 0.12);}.ant-picker-calendar .ant-picker-footer{width:min-content;min-width:100%;line-height:38px;text-align:center;}.ant-picker-calendar .ant-picker-footer-extra{padding:0 12;line-height:38px;text-align:start;}.ant-picker-calendar .ant-picker-footer-extra:not(:last-child){border-bottom:1px solid rgba(253, 253, 253, 0.12);}.ant-picker-calendar .ant-picker-now{text-align:start;}.ant-picker-calendar .ant-picker-today-btn{color:#1668dc;}.ant-picker-calendar .ant-picker-today-btn:hover{color:#15417e;}.ant-picker-calendar .ant-picker-today-btn:active{color:#1554ad;}.ant-picker-calendar .ant-picker-today-btn.ant-picker-today-btn-disabled{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;}.ant-picker-calendar .ant-picker-decade-panel .ant-picker-cell-inner{padding:0 4px;}.ant-picker-calendar .ant-picker-decade-panel .ant-picker-cell::before{display:none;}.ant-picker-calendar .ant-picker-year-panel .ant-picker-body,.ant-picker-calendar .ant-picker-quarter-panel .ant-picker-body,.ant-picker-calendar .ant-picker-month-panel .ant-picker-body{padding:0 8px;}.ant-picker-calendar .ant-picker-year-panel .ant-picker-cell-inner,.ant-picker-calendar .ant-picker-quarter-panel .ant-picker-cell-inner,.ant-picker-calendar .ant-picker-month-panel .ant-picker-cell-inner{width:60px;}.ant-picker-calendar .ant-picker-year-panel .ant-picker-cell-range-hover-start::after,.ant-picker-calendar .ant-picker-quarter-panel .ant-picker-cell-range-hover-start::after,.ant-picker-calendar .ant-picker-month-panel .ant-picker-cell-range-hover-start::after{inset-inline-start:16px;border-inline-start:1px dashed #06d306;border-start-start-radius:4px;border-bottom-start-radius:4px;border-start-end-radius:0;border-bottom-end-radius:0;}.ant-picker-panel-rtl .ant-picker-calendar .ant-picker-year-panel .ant-picker-cell-range-hover-start::after,.ant-picker-panel-rtl .ant-picker-calendar .ant-picker-quarter-panel .ant-picker-cell-range-hover-start::after,.ant-picker-panel-rtl .ant-picker-calendar .ant-picker-month-panel .ant-picker-cell-range-hover-start::after{inset-inline-end:16px;border-inline-end:1px dashed #06d306;border-start-start-radius:0;border-bottom-start-radius:0;border-start-end-radius:4px;border-bottom-end-radius:4px;}.ant-picker-calendar .ant-picker-year-panel .ant-picker-cell-range-hover-end::after,.ant-picker-calendar .ant-picker-quarter-panel .ant-picker-cell-range-hover-end::after,.ant-picker-calendar .ant-picker-month-panel .ant-picker-cell-range-hover-end::after{inset-inline-end:16px;border-inline-end:1px dashed #06d306;border-start-start-radius:0;border-end-start-radius:0;border-start-end-radius:6px;border-end-end-radius:6px;}.ant-picker-panel-rtl .ant-picker-calendar .ant-picker-year-panel .ant-picker-cell-range-hover-end::after,.ant-picker-panel-rtl .ant-picker-calendar .ant-picker-quarter-panel .ant-picker-cell-range-hover-end::after,.ant-picker-panel-rtl .ant-picker-calendar .ant-picker-month-panel .ant-picker-cell-range-hover-end::after{inset-inline-start:16px;border-inline-start:1px dashed #06d306;border-start-start-radius:6px;border-end-start-radius:6px;border-start-end-radius:0;border-end-end-radius:0;}.ant-picker-calendar .ant-picker-week-panel .ant-picker-body{padding:8px 12px;}.ant-picker-calendar .ant-picker-week-panel .ant-picker-cell:hover .ant-picker-cell-inner,.ant-picker-calendar .ant-picker-week-panel .ant-picker-cell-selected .ant-picker-cell-inner,.ant-picker-calendar .ant-picker-week-panel .ant-picker-cell .ant-picker-cell-inner{background:transparent!important;}.ant-picker-calendar .ant-picker-week-panel-row td{transition:background 0.2s;}.ant-picker-calendar .ant-picker-week-panel-row td:first-child{border-start-start-radius:4px;border-end-start-radius:4px;}.ant-picker-calendar .ant-picker-week-panel-row td:last-child{border-start-end-radius:4px;border-end-end-radius:4px;}.ant-picker-calendar .ant-picker-week-panel-row:hover td{background:rgba(255, 255, 255, 0.08);}.ant-picker-calendar .ant-picker-week-panel-row-selected td,.ant-picker-calendar .ant-picker-week-panel-row-selected:hover td{background:#037003;}.ant-picker-calendar .ant-picker-week-panel-row-selected td.ant-picker-cell-week,.ant-picker-calendar .ant-picker-week-panel-row-selected:hover td.ant-picker-cell-week{color:#ffffff;}.ant-picker-calendar .ant-picker-week-panel-row-selected td.ant-picker-cell-today .ant-picker-cell-inner::before,.ant-picker-calendar .ant-picker-week-panel-row-selected:hover td.ant-picker-cell-today .ant-picker-cell-inner::before{border-color:#fff;}.ant-picker-calendar .ant-picker-week-panel-row-selected td .ant-picker-cell-inner,.ant-picker-calendar .ant-picker-week-panel-row-selected:hover td .ant-picker-cell-inner{color:#fff;}.ant-picker-calendar .ant-picker-date-panel .ant-picker-body{padding:8px 12px;}.ant-picker-calendar .ant-picker-date-panel .ant-picker-content{width:252px;}.ant-picker-calendar .ant-picker-date-panel .ant-picker-content th{width:36px;}.ant-picker-calendar .ant-picker-datetime-panel{display:flex;}.ant-picker-calendar .ant-picker-datetime-panel .ant-picker-time-panel{border-inline-start:1px solid rgba(253, 253, 253, 0.12);}.ant-picker-calendar .ant-picker-datetime-panel .ant-picker-date-panel,.ant-picker-calendar .ant-picker-datetime-panel .ant-picker-time-panel{transition:opacity 0.3s;}.ant-picker-calendar .ant-picker-datetime-panel-active .ant-picker-date-panel,.ant-picker-calendar .ant-picker-datetime-panel-active .ant-picker-time-panel{opacity:0.3;}.ant-picker-calendar .ant-picker-datetime-panel-active .ant-picker-date-panel-active,.ant-picker-calendar .ant-picker-datetime-panel-active .ant-picker-time-panel-active{opacity:1;}.ant-picker-calendar .ant-picker-time-panel{width:auto;min-width:auto;direction:ltr;}.ant-picker-calendar .ant-picker-time-panel .ant-picker-content{display:flex;flex:auto;height:224px;}.ant-picker-calendar .ant-picker-time-panel-column{flex:1 0 auto;width:56px;margin:4px 0;padding:0;overflow-y:hidden;text-align:start;list-style:none;transition:background 0.2s;overflow-x:hidden;}.ant-picker-calendar .ant-picker-time-panel-column::after{display:block;height:196px;content:\\"\\";}.ant-picker-calendar .ant-picker-time-panel-column:not(:first-child){border-inline-start:1px solid rgba(253, 253, 253, 0.12);}.ant-picker-calendar .ant-picker-time-panel-column-active{background:#111911;}.ant-picker-calendar .ant-picker-time-panel-column:hover{overflow-y:auto;}.ant-picker-calendar .ant-picker-time-panel-column >li{margin:0;padding:0;}.ant-picker-calendar .ant-picker-time-panel-column >li.ant-picker-time-panel-cell{margin-inline:4px;}.ant-picker-calendar .ant-picker-time-panel-column >li.ant-picker-time-panel-cell .ant-picker-time-panel-cell-inner{display:block;width:48px;height:28px;margin:0;padding-block:0;padding-inline-end:0;padding-inline-start:14px;color:rgba(255, 255, 255, 0.85);line-height:28px;border-radius:4px;cursor:pointer;transition:background 0.2s;}.ant-picker-calendar .ant-picker-time-panel-column >li.ant-picker-time-panel-cell .ant-picker-time-panel-cell-inner:hover{background:rgba(255, 255, 255, 0.08);}.ant-picker-calendar .ant-picker-time-panel-column >li.ant-picker-time-panel-cell-selected .ant-picker-time-panel-cell-inner{background:#111911;}.ant-picker-calendar .ant-picker-time-panel-column >li.ant-picker-time-panel-cell-disabled .ant-picker-time-panel-cell-inner{color:rgba(255, 255, 255, 0.25);background:transparent;cursor:not-allowed;}.ant-picker-calendar .ant-picker-datetime-panel .ant-picker-time-panel-column:after{height:204px;}.ant-picker-calendar-rtl{direction:rtl;}.ant-picker-calendar .ant-picker-calendar-header{display:flex;justify-content:flex-end;padding:12px 0;}.ant-picker-calendar .ant-picker-calendar-header .ant-picker-calendar-year-select{min-width:80px;}.ant-picker-calendar .ant-picker-calendar-header .ant-picker-calendar-month-select{min-width:70px;margin-inline-start:8px;}.ant-picker-calendar .ant-picker-calendar-header .ant-picker-calendar-mode-switch{margin-inline-start:8px;}.ant-picker-calendar .ant-picker-panel{background:#141414;border:0;border-top:1px solid rgba(253, 253, 253, 0.12);border-radius:0;}.ant-picker-calendar .ant-picker-panel .ant-picker-month-panel,.ant-picker-calendar .ant-picker-panel .ant-picker-date-panel{width:auto;}.ant-picker-calendar .ant-picker-panel .ant-picker-body{padding:8px 0;}.ant-picker-calendar .ant-picker-panel .ant-picker-content{width:100%;}.ant-picker-calendar-mini{border-radius:8px;}.ant-picker-calendar-mini .ant-picker-calendar-header{padding-inline-end:8px;padding-inline-start:8px;}.ant-picker-calendar-mini .ant-picker-panel{border-radius:0 0 8px 8px;}.ant-picker-calendar-mini .ant-picker-content{height:256px;}.ant-picker-calendar-mini .ant-picker-content th{height:auto;padding:0;line-height:18px;}.ant-picker-calendar-mini .ant-picker-cell::before{pointer-events:none;}.ant-picker-calendar.ant-picker-calendar-full .ant-picker-panel{display:block;width:100%;text-align:end;background:#141414;border:0;}.ant-picker-calendar.ant-picker-calendar-full .ant-picker-panel .ant-picker-body th,.ant-picker-calendar.ant-picker-calendar-full .ant-picker-panel .ant-picker-body td{padding:0;}.ant-picker-calendar.ant-picker-calendar-full .ant-picker-panel .ant-picker-body th{height:auto;padding-inline-end:12px;padding-bottom:4px;line-height:18px;}.ant-picker-calendar.ant-picker-calendar-full .ant-picker-cell::before{display:none;}.ant-picker-calendar.ant-picker-calendar-full .ant-picker-cell:hover .ant-picker-calendar-date{background:rgba(255, 255, 255, 0.08);}.ant-picker-calendar.ant-picker-calendar-full .ant-picker-cell .ant-picker-calendar-date-today::before{display:none;}.ant-picker-calendar.ant-picker-calendar-full .ant-picker-cell-in-view.ant-picker-cell-selected .ant-picker-calendar-date,.ant-picker-calendar.ant-picker-calendar-full .ant-picker-cell-in-view.ant-picker-cell-selected .ant-picker-calendar-date-today{background:#111911;}.ant-picker-calendar.ant-picker-calendar-full .ant-picker-cell-selected .ant-picker-calendar-date .ant-picker-calendar-date-value,.ant-picker-calendar.ant-picker-calendar-full .ant-picker-cell-selected:hover .ant-picker-calendar-date .ant-picker-calendar-date-value,.ant-picker-calendar.ant-picker-calendar-full .ant-picker-cell-selected .ant-picker-calendar-date-today .ant-picker-calendar-date-value,.ant-picker-calendar.ant-picker-calendar-full .ant-picker-cell-selected:hover .ant-picker-calendar-date-today .ant-picker-calendar-date-value{color:#037003;}.ant-picker-calendar.ant-picker-calendar-full .ant-picker-calendar-date{display:block;width:auto;height:auto;margin:0 4px;padding:4px 8px 0;border:0;border-top:2px solid rgba(253, 253, 253, 0.12);border-radius:0;transition:background 0.3s;}.ant-picker-calendar.ant-picker-calendar-full .ant-picker-calendar-date-value{line-height:24px;transition:color 0.3s;}.ant-picker-calendar.ant-picker-calendar-full .ant-picker-calendar-date-content{position:static;width:auto;height:86px;overflow-y:auto;color:rgba(255, 255, 255, 0.85);line-height:1.5714285714285714;text-align:start;}.ant-picker-calendar.ant-picker-calendar-full .ant-picker-calendar-date-today{border-color:#037003;}.ant-picker-calendar.ant-picker-calendar-full .ant-picker-calendar-date-today .ant-picker-calendar-date-value{color:rgba(255, 255, 255, 0.85);}@media only screen and (max-width: 480px){.ant-picker-calendar .ant-picker-calendar-header{display:block;}.ant-picker-calendar .ant-picker-calendar-header .ant-picker-calendar-year-select{width:50%;}.ant-picker-calendar .ant-picker-calendar-header .ant-picker-calendar-month-select{width:calc(50% - 8px);}.ant-picker-calendar .ant-picker-calendar-header .ant-picker-calendar-mode-switch{width:100%;margin-top:8px;margin-inline-start:0;}.ant-picker-calendar .ant-picker-calendar-header .ant-picker-calendar-mode-switch >label{width:50%;text-align:center;}}[class^=\\"ant-radio\\"],[class*=\\" ant-radio\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-radio\\"]::before,[class*=\\" ant-radio\\"]::before,[class^=\\"ant-radio\\"]::after,[class*=\\" ant-radio\\"]::after{box-sizing:border-box;}[class^=\\"ant-radio\\"] [class^=\\"ant-radio\\"],[class*=\\" ant-radio\\"] [class^=\\"ant-radio\\"],[class^=\\"ant-radio\\"] [class*=\\" ant-radio\\"],[class*=\\" ant-radio\\"] [class*=\\" ant-radio\\"]{box-sizing:border-box;}[class^=\\"ant-radio\\"] [class^=\\"ant-radio\\"]::before,[class*=\\" ant-radio\\"] [class^=\\"ant-radio\\"]::before,[class^=\\"ant-radio\\"] [class*=\\" ant-radio\\"]::before,[class*=\\" ant-radio\\"] [class*=\\" ant-radio\\"]::before,[class^=\\"ant-radio\\"] [class^=\\"ant-radio\\"]::after,[class*=\\" ant-radio\\"] [class^=\\"ant-radio\\"]::after,[class^=\\"ant-radio\\"] [class*=\\" ant-radio\\"]::after,[class*=\\" ant-radio\\"] [class*=\\" ant-radio\\"]::after{box-sizing:border-box;}.ant-radio-group{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:0;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:inline-block;}.ant-radio-group.ant-radio-group-rtl{direction:rtl;}.ant-radio-group .ant-badge .ant-badge-count{z-index:1;}.ant-radio-group >.ant-badge:not(:first-child)>.ant-button-wrapper{border-inline-start:none;}.ant-radio-wrapper{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;display:inline-flex;align-items:baseline;margin-inline-start:0;margin-inline-end:8px;cursor:pointer;}.ant-radio-wrapper.ant-radio-wrapper-rtl{direction:rtl;}.ant-radio-wrapper-disabled{cursor:not-allowed;color:rgba(255, 255, 255, 0.25);}.ant-radio-wrapper::after{display:inline-block;width:0;overflow:hidden;content:\\"\\\\a0\\";}.ant-radio-wrapper .ant-radio-checked::after{position:absolute;inset-block-start:0;inset-inline-start:0;width:100%;height:100%;border:1px solid #037003;border-radius:50%;visibility:hidden;animation-name:antRadioEffect;animation-duration:0.3s;animation-timing-function:cubic-bezier(0.645, 0.045, 0.355, 1);animation-fill-mode:both;content:\\"\\";}.ant-radio-wrapper .ant-radio{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;display:inline-block;outline:none;cursor:pointer;align-self:center;}.ant-radio-wrapper:hover .ant-radio-wrapper,.ant-radio-wrapper:hover .ant-radio-inner{border-color:#037003;}.ant-radio-wrapper .ant-radio-input:focus-visible+.ant-radio-inner{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-radio-wrapper .ant-radio:hover::after,.ant-radio-wrapper:hover .ant-radio-wrapper::after{visibility:visible;}.ant-radio-wrapper .ant-radio-inner{box-sizing:border-box;position:relative;inset-block-start:0;inset-inline-start:0;display:block;width:16px;height:16px;background-color:#141414;border-color:#424242;border-style:solid;border-width:1px;border-radius:50%;transition:all 0.2s;}.ant-radio-wrapper .ant-radio-inner::after{box-sizing:border-box;position:absolute;inset-block-start:50%;inset-inline-start:50%;display:block;width:16px;height:16px;margin-block-start:-8px;margin-inline-start:-8px;background-color:#fff;border-block-start:0;border-inline-start:0;border-radius:16px;transform:scale(0);opacity:0;transition:all 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86);content:\\"\\";}.ant-radio-wrapper .ant-radio-input{position:absolute;inset-block-start:0;inset-inline-end:0;inset-block-end:0;inset-inline-start:0;z-index:1;cursor:pointer;opacity:0;}.ant-radio-wrapper .ant-radio-checked .ant-radio-inner{border-color:#037003;background-color:#037003;}.ant-radio-wrapper .ant-radio-checked .ant-radio-inner::after{transform:scale(0.375);opacity:1;transition:all 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86);}.ant-radio-wrapper .ant-radio-disabled{cursor:not-allowed;}.ant-radio-wrapper .ant-radio-disabled .ant-radio-inner{background-color:rgba(255, 255, 255, 0.08);border-color:#424242;cursor:not-allowed;}.ant-radio-wrapper .ant-radio-disabled .ant-radio-inner::after{background-color:rgba(255, 255, 255, 0.25);}.ant-radio-wrapper .ant-radio-disabled .ant-radio-input{cursor:not-allowed;}.ant-radio-wrapper .ant-radio-disabled .ant-radio-disabled+span{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;}.ant-radio-wrapper .ant-radio-disabled.ant-radio-checked .ant-radio-inner::after{transform:scale(0.5);}.ant-radio-wrapper span.ant-radio+*{padding-inline-start:8px;padding-inline-end:8px;}.ant-radio-button-wrapper{position:relative;display:inline-block;height:32px;margin:0;padding-inline:15px;padding-block:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:30px;background:#141414;border:1px solid #424242;border-block-start-width:1.02px;border-inline-start-width:0;border-inline-end-width:1px;cursor:pointer;transition:color 0.2s,background 0.2s,border-color 0.2s,box-shadow 0.2s;}.ant-radio-button-wrapper a{color:rgba(255, 255, 255, 0.85);}.ant-radio-button-wrapper >.ant-radio-button{position:absolute;inset-block-start:0;inset-inline-start:0;z-index:-1;width:100%;height:100%;}.ant-radio-button-wrapper:not(:first-child)::before{position:absolute;inset-block-start:-1px;inset-inline-start:-1px;display:block;box-sizing:content-box;width:1px;height:100%;padding-block:1px;padding-inline:0;background-color:#424242;transition:background-color 0.3s;content:\\"\\";}.ant-radio-button-wrapper:first-child{border-inline-start:1px solid #424242;border-start-start-radius:6px;border-end-start-radius:6px;}.ant-radio-button-wrapper:last-child{border-start-end-radius:6px;border-end-end-radius:6px;}.ant-radio-button-wrapper:first-child:last-child{border-radius:6px;}.ant-radio-group-large .ant-radio-button-wrapper{height:40px;font-size:16px;line-height:38px;}.ant-radio-group-large .ant-radio-button-wrapper:first-child{border-start-start-radius:8px;border-end-start-radius:8px;}.ant-radio-group-large .ant-radio-button-wrapper:last-child{border-start-end-radius:8px;border-end-end-radius:8px;}.ant-radio-group-small .ant-radio-button-wrapper{height:24px;padding-inline:7px;padding-block:0;line-height:22px;}.ant-radio-group-small .ant-radio-button-wrapper:first-child{border-start-start-radius:4px;border-end-start-radius:4px;}.ant-radio-group-small .ant-radio-button-wrapper:last-child{border-start-end-radius:4px;border-end-end-radius:4px;}.ant-radio-button-wrapper:hover{position:relative;color:#037003;}.ant-radio-button-wrapper:has(:focus-visible){outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-radio-button-wrapper .ant-radio-inner,.ant-radio-button-wrapper input[type='checkbox'],.ant-radio-button-wrapper input[type='radio']{width:0;height:0;opacity:0;pointer-events:none;}.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled){z-index:1;color:#037003;background:#141414;border-color:#037003;}.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled)::before{background-color:#037003;}.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):first-child{border-color:#037003;}.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover{color:#198016;border-color:#198016;}.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover::before{background-color:#198016;}.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active{color:#075a07;border-color:#075a07;}.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active::before{background-color:#075a07;}.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled){color:#fff;background:#037003;border-color:#037003;}.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover{color:#fff;background:#198016;border-color:#198016;}.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active{color:#fff;background:#075a07;border-color:#075a07;}.ant-radio-button-wrapper-disabled{color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);border-color:#424242;cursor:not-allowed;}.ant-radio-button-wrapper-disabled:first-child,.ant-radio-button-wrapper-disabled:hover{color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);border-color:#424242;}.ant-radio-button-wrapper-disabled.ant-radio-button-wrapper-checked{color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.18);border-color:#424242;box-shadow:none;}@keyframes antRadioEffect{0%{transform:scale(1);opacity:0.5;}100%{transform:scale(1.6);opacity:0;}}[class^=\\"ant-card\\"],[class*=\\" ant-card\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-card\\"]::before,[class*=\\" ant-card\\"]::before,[class^=\\"ant-card\\"]::after,[class*=\\" ant-card\\"]::after{box-sizing:border-box;}[class^=\\"ant-card\\"] [class^=\\"ant-card\\"],[class*=\\" ant-card\\"] [class^=\\"ant-card\\"],[class^=\\"ant-card\\"] [class*=\\" ant-card\\"],[class*=\\" ant-card\\"] [class*=\\" ant-card\\"]{box-sizing:border-box;}[class^=\\"ant-card\\"] [class^=\\"ant-card\\"]::before,[class*=\\" ant-card\\"] [class^=\\"ant-card\\"]::before,[class^=\\"ant-card\\"] [class*=\\" ant-card\\"]::before,[class*=\\" ant-card\\"] [class*=\\" ant-card\\"]::before,[class^=\\"ant-card\\"] [class^=\\"ant-card\\"]::after,[class*=\\" ant-card\\"] [class^=\\"ant-card\\"]::after,[class^=\\"ant-card\\"] [class*=\\" ant-card\\"]::after,[class*=\\" ant-card\\"] [class*=\\" ant-card\\"]::after{box-sizing:border-box;}.ant-card{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;background:#141414;border-radius:8px;}.ant-card:not(.ant-card-bordered){box-shadow:0 1px 2px 0 rgba(0, 0, 0, 0.03),0 1px 6px -1px rgba(0, 0, 0, 0.02),0 2px 4px 0 rgba(0, 0, 0, 0.02);}.ant-card .ant-card-head{display:flex;justify-content:center;flex-direction:column;min-height:56px;margin-bottom:-1px;padding:0 24px;color:rgba(255, 255, 255, 0.85);font-weight:600;font-size:16px;background:transparent;border-bottom:1px solid #303030;border-radius:8px 8px 0 0;}.ant-card .ant-card-head::before{display:table;content:\\"\\";}.ant-card .ant-card-head::after{display:table;clear:both;content:\\"\\";}.ant-card .ant-card-head-wrapper{width:100%;display:flex;align-items:center;}.ant-card .ant-card-head-title{display:inline-block;flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.ant-card .ant-card-head-title >.ant-card-typography,.ant-card .ant-card-head-title >.ant-card-typography-edit-content{inset-inline-start:0;margin-top:0;margin-bottom:0;}.ant-card .ant-card-head .ant-tabs-top{clear:both;margin-bottom:-17px;color:rgba(255, 255, 255, 0.85);font-weight:normal;font-size:14px;}.ant-card .ant-card-head .ant-tabs-top-bar{border-bottom:1px solid #303030;}.ant-card .ant-card-extra{margin-inline-start:auto;font-weight:normal;font-size:14px;}.ant-card .ant-card-body{padding:24px;border-radius:0 0 8px 8px;}.ant-card .ant-card-body::before{display:table;content:\\"\\";}.ant-card .ant-card-body::after{display:table;clear:both;content:\\"\\";}.ant-card .ant-card-grid{width:33.33%;padding:24px;border:0;border-radius:0;box-shadow:1px 0 0 0 #303030,0 1px 0 0 #303030,1px 1px 0 0 #303030,1px 0 0 0 #303030 inset,0 1px 0 0 #303030 inset;transition:all 0.2s;}.ant-card .ant-card-grid-hoverable:hover{position:relative;z-index:1;box-shadow:0 1px 2px -2px rgba(0, 0, 0, 0.16),0 3px 6px 0 rgba(0, 0, 0, 0.12),0 5px 12px 4px rgba(0, 0, 0, 0.09);}.ant-card .ant-card-cover >*{display:block;width:100%;}.ant-card .ant-card-cover img{border-radius:8px 8px 0 0;}.ant-card .ant-card-actions{margin:0;padding:0;list-style:none;background:#141414;border-top:1px solid #303030;display:flex;border-radius:0 0 8px 8px;}.ant-card .ant-card-actions::before{display:table;content:\\"\\";}.ant-card .ant-card-actions::after{display:table;clear:both;content:\\"\\";}.ant-card .ant-card-actions>li{margin:12px 0;color:rgba(255, 255, 255, 0.45);text-align:center;}.ant-card .ant-card-actions>li >span{position:relative;display:block;min-width:28px;font-size:14px;line-height:1.5714285714285714;cursor:pointer;}.ant-card .ant-card-actions>li >span:hover{color:#037003;transition:color 0.2s;}.ant-card .ant-card-actions>li >span a:not(.ant-card-btn),.ant-card .ant-card-actions>li >span >.anticon{display:inline-block;width:100%;color:rgba(255, 255, 255, 0.45);line-height:22px;transition:color 0.2s;}.ant-card .ant-card-actions>li >span a:not(.ant-card-btn):hover,.ant-card .ant-card-actions>li >span >.anticon:hover{color:#037003;}.ant-card .ant-card-actions>li >span >.anticon{font-size:14px;line-height:22px;}.ant-card .ant-card-actions>li:not(:last-child){border-inline-end:1px solid #303030;}.ant-card .ant-card-meta{margin:-4px 0;display:flex;}.ant-card .ant-card-meta::before{display:table;content:\\"\\";}.ant-card .ant-card-meta::after{display:table;clear:both;content:\\"\\";}.ant-card .ant-card-meta-avatar{padding-inline-end:16px;}.ant-card .ant-card-meta-detail{overflow:hidden;flex:1;}.ant-card .ant-card-meta-detail >div:not(:last-child){margin-bottom:8px;}.ant-card .ant-card-meta-title{color:rgba(255, 255, 255, 0.85);font-weight:600;font-size:16px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.ant-card .ant-card-meta-description{color:rgba(255, 255, 255, 0.45);}.ant-card-bordered{border:1px solid #303030;}.ant-card-bordered .ant-card-cover{margin-top:-1px;margin-inline-start:-1px;margin-inline-end:-1px;}.ant-card-hoverable{cursor:pointer;transition:box-shadow 0.2s,border-color 0.2s;}.ant-card-hoverable:hover{border-color:transparent;box-shadow:0 1px 2px -2px rgba(0, 0, 0, 0.16),0 3px 6px 0 rgba(0, 0, 0, 0.12),0 5px 12px 4px rgba(0, 0, 0, 0.09);}.ant-card-contain-grid .ant-card-body{display:flex;flex-wrap:wrap;}.ant-card-contain-grid:not(.ant-card-loading) .ant-card-body{margin-block-start:-1px;margin-inline-start:-1px;padding:0;}.ant-card-contain-tabs >.ant-card-head .ant-card-head-title,.ant-card-contain-tabs >.ant-card-head .ant-card-extra{padding-top:16px;}.ant-card-type-inner .ant-card-head{padding:0 24px;background:rgba(255, 255, 255, 0.04);}.ant-card-type-inner .ant-card-head-title{font-size:14px;}.ant-card-type-inner .ant-card-body{padding:16px 24px;}.ant-card-loading{overflow:hidden;}.ant-card-loading .ant-card-body{user-select:none;}.ant-card-rtl{direction:rtl;}.ant-card-small >.ant-card-head{min-height:38px;padding:0 12px;font-size:14px;}.ant-card-small >.ant-card-head >.ant-card-head-wrapper >.ant-card-extra{font-size:14px;}.ant-card-small >.ant-card-body{padding:12px;}.ant-card-small.ant-card-contain-tabs >.ant-card-head .ant-card-head-title,.ant-card-small.ant-card-contain-tabs >.ant-card-head .ant-card-extra{min-height:38px;padding-top:0;display:flex;align-items:center;}[class^=\\"ant-collapse\\"],[class*=\\" ant-collapse\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-collapse\\"]::before,[class*=\\" ant-collapse\\"]::before,[class^=\\"ant-collapse\\"]::after,[class*=\\" ant-collapse\\"]::after{box-sizing:border-box;}[class^=\\"ant-collapse\\"] [class^=\\"ant-collapse\\"],[class*=\\" ant-collapse\\"] [class^=\\"ant-collapse\\"],[class^=\\"ant-collapse\\"] [class*=\\" ant-collapse\\"],[class*=\\" ant-collapse\\"] [class*=\\" ant-collapse\\"]{box-sizing:border-box;}[class^=\\"ant-collapse\\"] [class^=\\"ant-collapse\\"]::before,[class*=\\" ant-collapse\\"] [class^=\\"ant-collapse\\"]::before,[class^=\\"ant-collapse\\"] [class*=\\" ant-collapse\\"]::before,[class*=\\" ant-collapse\\"] [class*=\\" ant-collapse\\"]::before,[class^=\\"ant-collapse\\"] [class^=\\"ant-collapse\\"]::after,[class*=\\" ant-collapse\\"] [class^=\\"ant-collapse\\"]::after,[class^=\\"ant-collapse\\"] [class*=\\" ant-collapse\\"]::after,[class*=\\" ant-collapse\\"] [class*=\\" ant-collapse\\"]::after{box-sizing:border-box;}.ant-collapse{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';background-color:rgba(255, 255, 255, 0.04);border:1px solid #424242;border-bottom:0;border-radius:8px;}.ant-collapse-rtl{direction:rtl;}.ant-collapse>.ant-collapse-item{border-bottom:1px solid #424242;}.ant-collapse>.ant-collapse-item:last-child,.ant-collapse>.ant-collapse-item:last-child>.ant-collapse-header{border-radius:0 0 8px 8px;}.ant-collapse>.ant-collapse-item >.ant-collapse-header{position:relative;display:flex;flex-wrap:nowrap;align-items:flex-start;padding:12px 16px;color:rgba(255, 255, 255, 0.85);line-height:1.5714285714285714;cursor:pointer;transition:all 0.3s,visibility 0s;}.ant-collapse>.ant-collapse-item >.ant-collapse-header >.ant-collapse-header-text{flex:auto;}.ant-collapse>.ant-collapse-item >.ant-collapse-header:focus{outline:none;}.ant-collapse>.ant-collapse-item >.ant-collapse-header .ant-collapse-expand-icon{height:22px;display:flex;align-items:center;padding-inline-end:12px;}.ant-collapse>.ant-collapse-item >.ant-collapse-header .ant-collapse-arrow{display:inline-flex;align-items:center;color:inherit;font-style:normal;line-height:0;text-align:center;text-transform:none;vertical-align:-0.125em;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:12px;}.ant-collapse>.ant-collapse-item >.ant-collapse-header .ant-collapse-arrow >*{line-height:1;}.ant-collapse>.ant-collapse-item >.ant-collapse-header .ant-collapse-arrow svg{transition:transform 0.3s;}.ant-collapse>.ant-collapse-item >.ant-collapse-header .ant-collapse-header-text{margin-inline-end:auto;}.ant-collapse>.ant-collapse-item .ant-collapse-header-collapsible-only{cursor:default;}.ant-collapse>.ant-collapse-item .ant-collapse-header-collapsible-only .ant-collapse-header-text{flex:none;cursor:pointer;}.ant-collapse>.ant-collapse-item .ant-collapse-header-collapsible-only .ant-collapse-expand-icon{cursor:pointer;}.ant-collapse>.ant-collapse-item .ant-collapse-icon-collapsible-only{cursor:default;}.ant-collapse>.ant-collapse-item .ant-collapse-icon-collapsible-only .ant-collapse-expand-icon{cursor:pointer;}.ant-collapse>.ant-collapse-item.ant-collapse-no-arrow >.ant-collapse-header{padding-inline-start:12px;}.ant-collapse .ant-collapse-content{color:rgba(255, 255, 255, 0.85);background-color:#141414;border-top:1px solid #424242;}.ant-collapse .ant-collapse-content>.ant-collapse-content-box{padding:16px 16px;}.ant-collapse .ant-collapse-content-hidden{display:none;}.ant-collapse .ant-collapse-item:last-child >.ant-collapse-content{border-radius:0 0 8px 8px;}.ant-collapse .ant-collapse-item-disabled>.ant-collapse-header,.ant-collapse .ant-collapse-item-disabled>.ant-collapse-header>.arrow{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;}.ant-collapse.ant-collapse-icon-position-end>.ant-collapse-item >.ant-collapse-header .ant-collapse-expand-icon{order:1;padding-inline-end:0;padding-inline-start:12px;}.ant-collapse-borderless{background-color:rgba(255, 255, 255, 0.04);border:0;}.ant-collapse-borderless >.ant-collapse-item{border-bottom:1px solid #424242;}.ant-collapse-borderless >.ant-collapse-item:last-child,.ant-collapse-borderless >.ant-collapse-item:last-child .ant-collapse-header{border-radius:0;}.ant-collapse-borderless >.ant-collapse-item:last-child{border-bottom:0;}.ant-collapse-borderless >.ant-collapse-item>.ant-collapse-content{background-color:transparent;border-top:0;}.ant-collapse-borderless >.ant-collapse-item>.ant-collapse-content>.ant-collapse-content-box{padding-top:4px;}.ant-collapse-ghost{background-color:transparent;border:0;}.ant-collapse-ghost >.ant-collapse-item{border-bottom:0;}.ant-collapse-ghost >.ant-collapse-item >.ant-collapse-content{background-color:transparent;border:0;}.ant-collapse-ghost >.ant-collapse-item >.ant-collapse-content >.ant-collapse-content-box{padding-block:12px;}.ant-collapse-rtl >.ant-collapse-item>.ant-collapse-header .ant-collapse-arrow svg{transform:rotate(180deg);}.ant-collapse .ant-motion-collapse-legacy{overflow:hidden;}.ant-collapse .ant-motion-collapse-legacy-active{transition:height 0.2s cubic-bezier(0.645, 0.045, 0.355, 1),opacity 0.2s cubic-bezier(0.645, 0.045, 0.355, 1)!important;}.ant-collapse .ant-motion-collapse{overflow:hidden;transition:height 0.2s cubic-bezier(0.645, 0.045, 0.355, 1),opacity 0.2s cubic-bezier(0.645, 0.045, 0.355, 1)!important;}[class^=\\"ant-carousel\\"],[class*=\\" ant-carousel\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-carousel\\"]::before,[class*=\\" ant-carousel\\"]::before,[class^=\\"ant-carousel\\"]::after,[class*=\\" ant-carousel\\"]::after{box-sizing:border-box;}[class^=\\"ant-carousel\\"] [class^=\\"ant-carousel\\"],[class*=\\" ant-carousel\\"] [class^=\\"ant-carousel\\"],[class^=\\"ant-carousel\\"] [class*=\\" ant-carousel\\"],[class*=\\" ant-carousel\\"] [class*=\\" ant-carousel\\"]{box-sizing:border-box;}[class^=\\"ant-carousel\\"] [class^=\\"ant-carousel\\"]::before,[class*=\\" ant-carousel\\"] [class^=\\"ant-carousel\\"]::before,[class^=\\"ant-carousel\\"] [class*=\\" ant-carousel\\"]::before,[class*=\\" ant-carousel\\"] [class*=\\" ant-carousel\\"]::before,[class^=\\"ant-carousel\\"] [class^=\\"ant-carousel\\"]::after,[class*=\\" ant-carousel\\"] [class^=\\"ant-carousel\\"]::after,[class^=\\"ant-carousel\\"] [class*=\\" ant-carousel\\"]::after,[class*=\\" ant-carousel\\"] [class*=\\" ant-carousel\\"]::after{box-sizing:border-box;}.ant-carousel{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';}.ant-carousel .slick-slider{position:relative;display:block;box-sizing:border-box;touch-action:pan-y;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;}.ant-carousel .slick-slider .slick-track,.ant-carousel .slick-slider .slick-list{transform:translate3d(0, 0, 0);touch-action:pan-y;}.ant-carousel .slick-list{position:relative;display:block;margin:0;padding:0;overflow:hidden;}.ant-carousel .slick-list:focus{outline:none;}.ant-carousel .slick-list.dragging{cursor:pointer;}.ant-carousel .slick-list .slick-slide{pointer-events:none;}.ant-carousel .slick-list .slick-slide input.ant-radio-input,.ant-carousel .slick-list .slick-slide input.ant-checkbox-input{visibility:hidden;}.ant-carousel .slick-list .slick-slide.slick-active{pointer-events:auto;}.ant-carousel .slick-list .slick-slide.slick-active input.ant-radio-input,.ant-carousel .slick-list .slick-slide.slick-active input.ant-checkbox-input{visibility:visible;}.ant-carousel .slick-list .slick-slide >div>div{vertical-align:bottom;}.ant-carousel .slick-track{position:relative;top:0;inset-inline-start:0;display:block;}.ant-carousel .slick-track::before,.ant-carousel .slick-track::after{display:table;content:\\"\\";}.ant-carousel .slick-track::after{clear:both;}.ant-carousel .slick-slide{display:none;float:left;height:100%;min-height:1px;}.ant-carousel .slick-slide img{display:block;}.ant-carousel .slick-slide.dragging img{pointer-events:none;}.ant-carousel .slick-initialized .slick-slide{display:block;}.ant-carousel .slick-vertical .slick-slide{display:block;height:auto;}.ant-carousel .slick-arrow.slick-hidden{display:none;}.ant-carousel .slick-prev,.ant-carousel .slick-next{position:absolute;top:50%;display:block;width:20px;height:20px;margin-top:-10px;padding:0;color:transparent;font-size:0;line-height:0;background:transparent;border:0;outline:none;cursor:pointer;}.ant-carousel .slick-prev:hover,.ant-carousel .slick-next:hover,.ant-carousel .slick-prev:focus,.ant-carousel .slick-next:focus{color:transparent;background:transparent;outline:none;}.ant-carousel .slick-prev:hover::before,.ant-carousel .slick-next:hover::before,.ant-carousel .slick-prev:focus::before,.ant-carousel .slick-next:focus::before{opacity:1;}.ant-carousel .slick-prev.slick-disabled::before,.ant-carousel .slick-next.slick-disabled::before{opacity:0.25;}.ant-carousel .slick-prev{inset-inline-start:-25px;}.ant-carousel .slick-prev::before{content:\\"←\\";}.ant-carousel .slick-next{inset-inline-end:-25px;}.ant-carousel .slick-next::before{content:\\"→\\";}.ant-carousel .slick-dots{position:absolute;inset-inline-end:0;bottom:0;inset-inline-start:0;z-index:15;display:flex!important;justify-content:center;padding-inline-start:0;list-style:none;}.ant-carousel .slick-dots-bottom{bottom:12px;}.ant-carousel .slick-dots-top{top:12px;bottom:auto;}.ant-carousel .slick-dots li{position:relative;display:inline-block;flex:0 1 auto;box-sizing:content-box;width:16px;height:3px;margin-inline:4px;padding:0;text-align:center;text-indent:-999px;vertical-align:top;transition:all 0.3s;}.ant-carousel .slick-dots li button{position:relative;display:block;width:100%;height:3px;padding:0;color:transparent;font-size:0;background:#141414;border:0;border-radius:1px;outline:none;cursor:pointer;opacity:0.3;transition:all 0.3s;}.ant-carousel .slick-dots li button:hover,.ant-carousel .slick-dots li button:focus{opacity:0.75;}.ant-carousel .slick-dots li button::after{position:absolute;inset:-4px;content:\\"\\";}.ant-carousel .slick-dots li.slick-active{width:24px;}.ant-carousel .slick-dots li.slick-active button{background:#141414;opacity:1;}.ant-carousel .slick-dots li.slick-active:hover,.ant-carousel .slick-dots li.slick-active:focus{opacity:1;}.ant-carousel-vertical .slick-dots{top:50%;bottom:auto;flex-direction:column;width:3px;height:auto;margin:0;transform:translateY(-50%);}.ant-carousel-vertical .slick-dots-left{inset-inline-end:auto;inset-inline-start:12px;}.ant-carousel-vertical .slick-dots-right{inset-inline-end:12px;inset-inline-start:auto;}.ant-carousel-vertical .slick-dots li{width:3px;height:16px;margin:4px 0;vertical-align:baseline;}.ant-carousel-vertical .slick-dots li button{width:3px;height:16px;}.ant-carousel-vertical .slick-dots li.slick-active{width:3px;height:16px;}.ant-carousel-vertical .slick-dots li.slick-active button{width:3px;height:16px;}.ant-carousel-rtl{direction:rtl;}.ant-carousel-rtl.ant-carousel-rtl .slick-dots{flex-direction:row-reverse;}.ant-carousel-rtl.ant-carousel-vertical .slick-dots{flex-direction:column;}[class^=\\"ant-cascader\\"],[class*=\\" ant-cascader\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-cascader\\"]::before,[class*=\\" ant-cascader\\"]::before,[class^=\\"ant-cascader\\"]::after,[class*=\\" ant-cascader\\"]::after{box-sizing:border-box;}[class^=\\"ant-cascader\\"] [class^=\\"ant-cascader\\"],[class*=\\" ant-cascader\\"] [class^=\\"ant-cascader\\"],[class^=\\"ant-cascader\\"] [class*=\\" ant-cascader\\"],[class*=\\" ant-cascader\\"] [class*=\\" ant-cascader\\"]{box-sizing:border-box;}[class^=\\"ant-cascader\\"] [class^=\\"ant-cascader\\"]::before,[class*=\\" ant-cascader\\"] [class^=\\"ant-cascader\\"]::before,[class^=\\"ant-cascader\\"] [class*=\\" ant-cascader\\"]::before,[class*=\\" ant-cascader\\"] [class*=\\" ant-cascader\\"]::before,[class^=\\"ant-cascader\\"] [class^=\\"ant-cascader\\"]::after,[class*=\\" ant-cascader\\"] [class^=\\"ant-cascader\\"]::after,[class^=\\"ant-cascader\\"] [class*=\\" ant-cascader\\"]::after,[class*=\\" ant-cascader\\"] [class*=\\" ant-cascader\\"]::after{box-sizing:border-box;}.ant-cascader{width:184px;}.ant-cascader-dropdown .ant-cascader-checkbox-group{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:inline-flex;flex-wrap:wrap;column-gap:8px;}.ant-cascader-dropdown .ant-cascader-checkbox-group >.ant-row{flex:1;}.ant-cascader-dropdown .ant-cascader-checkbox-wrapper{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:inline-flex;align-items:baseline;cursor:pointer;}.ant-cascader-dropdown .ant-cascader-checkbox-wrapper:after{display:inline-block;width:0;overflow:hidden;content:'\\\\a0';}.ant-cascader-dropdown .ant-cascader-checkbox-wrapper+.ant-cascader-checkbox-wrapper{margin-inline-start:0;}.ant-cascader-dropdown .ant-cascader-checkbox-wrapper.ant-cascader-checkbox-wrapper-in-form-item input[type=\\"checkbox\\"]{width:14px;height:14px;}.ant-cascader-dropdown .ant-cascader-checkbox{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;white-space:nowrap;cursor:pointer;align-self:center;}.ant-cascader-dropdown .ant-cascader-checkbox .ant-cascader-checkbox-input{position:absolute;inset:0;z-index:1;cursor:pointer;opacity:0;margin:0;}.ant-cascader-dropdown .ant-cascader-checkbox .ant-cascader-checkbox-input:focus-visible+.ant-cascader-checkbox-inner{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-cascader-dropdown .ant-cascader-checkbox .ant-cascader-checkbox-inner{box-sizing:border-box;position:relative;top:0;inset-inline-start:0;display:block;width:16px;height:16px;direction:ltr;background-color:#141414;border:1px solid #424242;border-radius:4px;border-collapse:separate;transition:all 0.3s;}.ant-cascader-dropdown .ant-cascader-checkbox .ant-cascader-checkbox-inner:after{box-sizing:border-box;position:absolute;top:50%;inset-inline-start:21.5%;display:table;width:5.7142857142857135px;height:9.142857142857142px;border:2px solid #fff;border-top:0;border-inline-start:0;transform:rotate(45deg) scale(0) translate(-50%,-50%);opacity:0;content:\\"\\";transition:all 0.1s cubic-bezier(0.71, -0.46, 0.88, 0.6),opacity 0.1s;}.ant-cascader-dropdown .ant-cascader-checkbox+span{padding-inline-start:8px;padding-inline-end:8px;}.ant-cascader-dropdown .ant-cascader-checkbox-indeterminate .ant-cascader-checkbox-inner:after{top:50%;inset-inline-start:50%;width:8px;height:8px;background-color:#037003;border:0;transform:translate(-50%, -50%) scale(1);opacity:1;content:\\"\\";}.ant-cascader-dropdown .ant-cascader-checkbox-wrapper:hover .ant-cascader-checkbox:after{visibility:visible;}.ant-cascader-dropdown .ant-cascader-checkbox-wrapper:not(.ant-cascader-checkbox-wrapper-disabled):hover .ant-cascader-checkbox-inner,.ant-cascader-dropdown .ant-cascader-checkbox:not(.ant-cascader-checkbox-disabled):hover .ant-cascader-checkbox-inner{border-color:#037003;}.ant-cascader-dropdown .ant-cascader-checkbox-wrapper:not(.ant-cascader-checkbox-wrapper-disabled):hover .ant-cascader-checkbox-checked:not(.ant-cascader-checkbox-disabled) .ant-cascader-checkbox-inner{background-color:#198016;border-color:transparent;}.ant-cascader-dropdown .ant-cascader-checkbox-wrapper:not(.ant-cascader-checkbox-wrapper-disabled):hover .ant-cascader-checkbox-checked:not(.ant-cascader-checkbox-disabled):after{border-color:#198016;}.ant-cascader-dropdown .ant-cascader-checkbox-checked .ant-cascader-checkbox-inner{background-color:#037003;border-color:#037003;}.ant-cascader-dropdown .ant-cascader-checkbox-checked .ant-cascader-checkbox-inner:after{opacity:1;transform:rotate(45deg) scale(1) translate(-50%,-50%);transition:all 0.2s cubic-bezier(0.12, 0.4, 0.29, 1.46) 0.1s;}.ant-cascader-dropdown .ant-cascader-checkbox-checked:after{position:absolute;top:0;inset-inline-start:0;width:100%;height:100%;border-radius:4px;visibility:hidden;border:2px solid #037003;animation-name:antCheckboxEffect;animation-duration:0.3s;animation-timing-function:ease-in-out;animation-fill-mode:backwards;content:\\"\\";transition:all 0.3s;}.ant-cascader-dropdown .ant-cascader-checkbox-wrapper-checked:not(.ant-cascader-checkbox-wrapper-disabled):hover .ant-cascader-checkbox-inner,.ant-cascader-dropdown .ant-cascader-checkbox-checked:not(.ant-cascader-checkbox-disabled):hover .ant-cascader-checkbox-inner{background-color:#198016;border-color:transparent;}.ant-cascader-dropdown .ant-cascader-checkbox-wrapper-checked:not(.ant-cascader-checkbox-wrapper-disabled):hover .ant-cascader-checkbox:after,.ant-cascader-dropdown .ant-cascader-checkbox-checked:not(.ant-cascader-checkbox-disabled):hover .ant-cascader-checkbox:after{border-color:#198016;}.ant-cascader-dropdown .ant-cascader-checkbox-wrapper-disabled{cursor:not-allowed;}.ant-cascader-dropdown .ant-cascader-checkbox-disabled,.ant-cascader-dropdown .ant-cascader-checkbox-disabled .ant-cascader-checkbox-input{cursor:not-allowed;pointer-events:none;}.ant-cascader-dropdown .ant-cascader-checkbox-disabled .ant-cascader-checkbox-inner{background:rgba(255, 255, 255, 0.08);border-color:#424242;}.ant-cascader-dropdown .ant-cascader-checkbox-disabled .ant-cascader-checkbox-inner:after{border-color:rgba(255, 255, 255, 0.25);}.ant-cascader-dropdown .ant-cascader-checkbox-disabled:after{display:none;}.ant-cascader-dropdown .ant-cascader-checkbox-disabled+span{color:rgba(255, 255, 255, 0.25);}.ant-cascader-dropdown .ant-cascader-checkbox-disabled.ant-cascader-checkbox-indeterminate .ant-cascader-checkbox-inner::after{background:rgba(255, 255, 255, 0.25);}.ant-cascader-dropdown.ant-select-dropdown{padding:0;}.ant-cascader-dropdown .ant-cascader-checkbox{top:0;margin-inline-end:8px;}.ant-cascader-dropdown .ant-cascader-menus{display:flex;flex-wrap:nowrap;align-items:flex-start;}.ant-cascader-dropdown .ant-cascader-menus.ant-cascader-menu-empty .ant-cascader-menu{width:100%;height:auto;}.ant-cascader-dropdown .ant-cascader-menus.ant-cascader-menu-empty .ant-cascader-menu .ant-cascader-menu-item{color:rgba(255, 255, 255, 0.25);}.ant-cascader-dropdown .ant-cascader-menu{flex-grow:1;min-width:111px;height:180px;margin:0;padding:4px;overflow:auto;vertical-align:top;list-style:none;-ms-overflow-style:-ms-autohiding-scrollbar;}.ant-cascader-dropdown .ant-cascader-menu:not(:last-child){border-inline-end:1px solid rgba(253, 253, 253, 0.12);}.ant-cascader-dropdown .ant-cascader-menu-item{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:flex;flex-wrap:nowrap;align-items:center;padding:5px 12px;line-height:1.5714285714285714;cursor:pointer;transition:all 0.2s;border-radius:4px;}.ant-cascader-dropdown .ant-cascader-menu-item:hover{background:rgba(255, 255, 255, 0.08);}.ant-cascader-dropdown .ant-cascader-menu-item-disabled{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;}.ant-cascader-dropdown .ant-cascader-menu-item-disabled:hover{background:transparent;}.ant-cascader-dropdown .ant-cascader-menu-item-disabled.ant-cascader-menu-item-expand .ant-cascader-menu-item-expand-icon,.ant-cascader-dropdown .ant-cascader-menu-item-disabled .ant-cascader-menu-item-loading-icon{color:rgba(255, 255, 255, 0.25);}.ant-cascader-dropdown .ant-cascader-menu-item-active:not(.ant-cascader-menu-item-disabled),.ant-cascader-dropdown .ant-cascader-menu-item-active:not(.ant-cascader-menu-item-disabled):hover{font-weight:600;background-color:#111911;}.ant-cascader-dropdown .ant-cascader-menu-item-content{flex:auto;}.ant-cascader-dropdown .ant-cascader-menu-item.ant-cascader-menu-item-expand .ant-cascader-menu-item-expand-icon,.ant-cascader-dropdown .ant-cascader-menu-item .ant-cascader-menu-item-loading-icon{margin-inline-start:4px;color:rgba(255, 255, 255, 0.45);font-size:12px;}.ant-cascader-dropdown .ant-cascader-menu-item-keyword{color:#dc4446;}.ant-cascader-dropdown-rtl{direction:rtl;}.ant-cascader-compact-item:not(.ant-cascader-compact-last-item){margin-inline-end:-1px;}.ant-cascader-compact-item:hover,.ant-cascader-compact-item:focus,.ant-cascader-compact-item:active{z-index:2;}.ant-cascader-compact-item[disabled]{z-index:0;}.ant-cascader-compact-item:not(.ant-cascader-compact-first-item):not(.ant-cascader-compact-last-item){border-radius:0;}.ant-cascader-compact-item:not(.ant-cascader-compact-last-item).ant-cascader-compact-first-item,.ant-cascader-compact-item:not(.ant-cascader-compact-last-item).ant-cascader-compact-first-item.ant-cascader-sm,.ant-cascader-compact-item:not(.ant-cascader-compact-last-item).ant-cascader-compact-first-item.ant-cascader-lg{border-start-end-radius:0;border-end-end-radius:0;}.ant-cascader-compact-item:not(.ant-cascader-compact-first-item).ant-cascader-compact-last-item,.ant-cascader-compact-item:not(.ant-cascader-compact-first-item).ant-cascader-compact-last-item.ant-cascader-sm,.ant-cascader-compact-item:not(.ant-cascader-compact-first-item).ant-cascader-compact-last-item.ant-cascader-lg{border-start-start-radius:0;border-end-start-radius:0;}@keyframes antCheckboxEffect{0%{transform:scale(1);opacity:0.5;}100%{transform:scale(1.6);opacity:0;}}[class^=\\"ant-checkbox\\"],[class*=\\" ant-checkbox\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-checkbox\\"]::before,[class*=\\" ant-checkbox\\"]::before,[class^=\\"ant-checkbox\\"]::after,[class*=\\" ant-checkbox\\"]::after{box-sizing:border-box;}[class^=\\"ant-checkbox\\"] [class^=\\"ant-checkbox\\"],[class*=\\" ant-checkbox\\"] [class^=\\"ant-checkbox\\"],[class^=\\"ant-checkbox\\"] [class*=\\" ant-checkbox\\"],[class*=\\" ant-checkbox\\"] [class*=\\" ant-checkbox\\"]{box-sizing:border-box;}[class^=\\"ant-checkbox\\"] [class^=\\"ant-checkbox\\"]::before,[class*=\\" ant-checkbox\\"] [class^=\\"ant-checkbox\\"]::before,[class^=\\"ant-checkbox\\"] [class*=\\" ant-checkbox\\"]::before,[class*=\\" ant-checkbox\\"] [class*=\\" ant-checkbox\\"]::before,[class^=\\"ant-checkbox\\"] [class^=\\"ant-checkbox\\"]::after,[class*=\\" ant-checkbox\\"] [class^=\\"ant-checkbox\\"]::after,[class^=\\"ant-checkbox\\"] [class*=\\" ant-checkbox\\"]::after,[class*=\\" ant-checkbox\\"] [class*=\\" ant-checkbox\\"]::after{box-sizing:border-box;}.ant-checkbox-group{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:inline-flex;flex-wrap:wrap;column-gap:8px;}.ant-checkbox-group >.ant-row{flex:1;}.ant-checkbox-wrapper{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:inline-flex;align-items:baseline;cursor:pointer;}.ant-checkbox-wrapper:after{display:inline-block;width:0;overflow:hidden;content:'\\\\a0';}.ant-checkbox-wrapper+.ant-checkbox-wrapper{margin-inline-start:0;}.ant-checkbox-wrapper.ant-checkbox-wrapper-in-form-item input[type=\\"checkbox\\"]{width:14px;height:14px;}.ant-checkbox{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;white-space:nowrap;cursor:pointer;align-self:center;}.ant-checkbox .ant-checkbox-input{position:absolute;inset:0;z-index:1;cursor:pointer;opacity:0;margin:0;}.ant-checkbox .ant-checkbox-input:focus-visible+.ant-checkbox-inner{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-checkbox .ant-checkbox-inner{box-sizing:border-box;position:relative;top:0;inset-inline-start:0;display:block;width:16px;height:16px;direction:ltr;background-color:#141414;border:1px solid #424242;border-radius:4px;border-collapse:separate;transition:all 0.3s;}.ant-checkbox .ant-checkbox-inner:after{box-sizing:border-box;position:absolute;top:50%;inset-inline-start:21.5%;display:table;width:5.7142857142857135px;height:9.142857142857142px;border:2px solid #fff;border-top:0;border-inline-start:0;transform:rotate(45deg) scale(0) translate(-50%,-50%);opacity:0;content:\\"\\";transition:all 0.1s cubic-bezier(0.71, -0.46, 0.88, 0.6),opacity 0.1s;}.ant-checkbox+span{padding-inline-start:8px;padding-inline-end:8px;}.ant-checkbox-indeterminate .ant-checkbox-inner:after{top:50%;inset-inline-start:50%;width:8px;height:8px;background-color:#037003;border:0;transform:translate(-50%, -50%) scale(1);opacity:1;content:\\"\\";}.ant-checkbox-wrapper:hover .ant-checkbox:after{visibility:visible;}.ant-checkbox-wrapper:not(.ant-checkbox-wrapper-disabled):hover .ant-checkbox-inner,.ant-checkbox:not(.ant-checkbox-disabled):hover .ant-checkbox-inner{border-color:#037003;}.ant-checkbox-wrapper:not(.ant-checkbox-wrapper-disabled):hover .ant-checkbox-checked:not(.ant-checkbox-disabled) .ant-checkbox-inner{background-color:#198016;border-color:transparent;}.ant-checkbox-wrapper:not(.ant-checkbox-wrapper-disabled):hover .ant-checkbox-checked:not(.ant-checkbox-disabled):after{border-color:#198016;}.ant-checkbox-checked .ant-checkbox-inner{background-color:#037003;border-color:#037003;}.ant-checkbox-checked .ant-checkbox-inner:after{opacity:1;transform:rotate(45deg) scale(1) translate(-50%,-50%);transition:all 0.2s cubic-bezier(0.12, 0.4, 0.29, 1.46) 0.1s;}.ant-checkbox-checked:after{position:absolute;top:0;inset-inline-start:0;width:100%;height:100%;border-radius:4px;visibility:hidden;border:2px solid #037003;animation-name:antCheckboxEffect;animation-duration:0.3s;animation-timing-function:ease-in-out;animation-fill-mode:backwards;content:\\"\\";transition:all 0.3s;}.ant-checkbox-wrapper-checked:not(.ant-checkbox-wrapper-disabled):hover .ant-checkbox-inner,.ant-checkbox-checked:not(.ant-checkbox-disabled):hover .ant-checkbox-inner{background-color:#198016;border-color:transparent;}.ant-checkbox-wrapper-checked:not(.ant-checkbox-wrapper-disabled):hover .ant-checkbox:after,.ant-checkbox-checked:not(.ant-checkbox-disabled):hover .ant-checkbox:after{border-color:#198016;}.ant-checkbox-wrapper-disabled{cursor:not-allowed;}.ant-checkbox-disabled,.ant-checkbox-disabled .ant-checkbox-input{cursor:not-allowed;pointer-events:none;}.ant-checkbox-disabled .ant-checkbox-inner{background:rgba(255, 255, 255, 0.08);border-color:#424242;}.ant-checkbox-disabled .ant-checkbox-inner:after{border-color:rgba(255, 255, 255, 0.25);}.ant-checkbox-disabled:after{display:none;}.ant-checkbox-disabled+span{color:rgba(255, 255, 255, 0.25);}.ant-checkbox-disabled.ant-checkbox-indeterminate .ant-checkbox-inner::after{background:rgba(255, 255, 255, 0.25);}[class^=\\"ant-checkbox-group\\"],[class*=\\" ant-checkbox-group\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-checkbox-group\\"]::before,[class*=\\" ant-checkbox-group\\"]::before,[class^=\\"ant-checkbox-group\\"]::after,[class*=\\" ant-checkbox-group\\"]::after{box-sizing:border-box;}[class^=\\"ant-checkbox-group\\"] [class^=\\"ant-checkbox-group\\"],[class*=\\" ant-checkbox-group\\"] [class^=\\"ant-checkbox-group\\"],[class^=\\"ant-checkbox-group\\"] [class*=\\" ant-checkbox-group\\"],[class*=\\" ant-checkbox-group\\"] [class*=\\" ant-checkbox-group\\"]{box-sizing:border-box;}[class^=\\"ant-checkbox-group\\"] [class^=\\"ant-checkbox-group\\"]::before,[class*=\\" ant-checkbox-group\\"] [class^=\\"ant-checkbox-group\\"]::before,[class^=\\"ant-checkbox-group\\"] [class*=\\" ant-checkbox-group\\"]::before,[class*=\\" ant-checkbox-group\\"] [class*=\\" ant-checkbox-group\\"]::before,[class^=\\"ant-checkbox-group\\"] [class^=\\"ant-checkbox-group\\"]::after,[class*=\\" ant-checkbox-group\\"] [class^=\\"ant-checkbox-group\\"]::after,[class^=\\"ant-checkbox-group\\"] [class*=\\" ant-checkbox-group\\"]::after,[class*=\\" ant-checkbox-group\\"] [class*=\\" ant-checkbox-group\\"]::after{box-sizing:border-box;}.ant-checkbox-group-group{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:inline-flex;flex-wrap:wrap;column-gap:8px;}.ant-checkbox-group-group >.ant-row{flex:1;}.ant-checkbox-group-wrapper{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:inline-flex;align-items:baseline;cursor:pointer;}.ant-checkbox-group-wrapper:after{display:inline-block;width:0;overflow:hidden;content:'\\\\a0';}.ant-checkbox-group-wrapper+.ant-checkbox-group-wrapper{margin-inline-start:0;}.ant-checkbox-group-wrapper.ant-checkbox-group-wrapper-in-form-item input[type=\\"checkbox\\"]{width:14px;height:14px;}.ant-checkbox-group{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;white-space:nowrap;cursor:pointer;align-self:center;}.ant-checkbox-group .ant-checkbox-group-input{position:absolute;inset:0;z-index:1;cursor:pointer;opacity:0;margin:0;}.ant-checkbox-group .ant-checkbox-group-input:focus-visible+.ant-checkbox-group-inner{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-checkbox-group .ant-checkbox-group-inner{box-sizing:border-box;position:relative;top:0;inset-inline-start:0;display:block;width:16px;height:16px;direction:ltr;background-color:#141414;border:1px solid #424242;border-radius:4px;border-collapse:separate;transition:all 0.3s;}.ant-checkbox-group .ant-checkbox-group-inner:after{box-sizing:border-box;position:absolute;top:50%;inset-inline-start:21.5%;display:table;width:5.7142857142857135px;height:9.142857142857142px;border:2px solid #fff;border-top:0;border-inline-start:0;transform:rotate(45deg) scale(0) translate(-50%,-50%);opacity:0;content:\\"\\";transition:all 0.1s cubic-bezier(0.71, -0.46, 0.88, 0.6),opacity 0.1s;}.ant-checkbox-group+span{padding-inline-start:8px;padding-inline-end:8px;}.ant-checkbox-group-indeterminate .ant-checkbox-group-inner:after{top:50%;inset-inline-start:50%;width:8px;height:8px;background-color:#037003;border:0;transform:translate(-50%, -50%) scale(1);opacity:1;content:\\"\\";}.ant-checkbox-group-wrapper:hover .ant-checkbox-group:after{visibility:visible;}.ant-checkbox-group-wrapper:not(.ant-checkbox-group-wrapper-disabled):hover .ant-checkbox-group-inner,.ant-checkbox-group:not(.ant-checkbox-group-disabled):hover .ant-checkbox-group-inner{border-color:#037003;}.ant-checkbox-group-wrapper:not(.ant-checkbox-group-wrapper-disabled):hover .ant-checkbox-group-checked:not(.ant-checkbox-group-disabled) .ant-checkbox-group-inner{background-color:#198016;border-color:transparent;}.ant-checkbox-group-wrapper:not(.ant-checkbox-group-wrapper-disabled):hover .ant-checkbox-group-checked:not(.ant-checkbox-group-disabled):after{border-color:#198016;}.ant-checkbox-group-checked .ant-checkbox-group-inner{background-color:#037003;border-color:#037003;}.ant-checkbox-group-checked .ant-checkbox-group-inner:after{opacity:1;transform:rotate(45deg) scale(1) translate(-50%,-50%);transition:all 0.2s cubic-bezier(0.12, 0.4, 0.29, 1.46) 0.1s;}.ant-checkbox-group-checked:after{position:absolute;top:0;inset-inline-start:0;width:100%;height:100%;border-radius:4px;visibility:hidden;border:2px solid #037003;animation-name:antCheckboxEffect;animation-duration:0.3s;animation-timing-function:ease-in-out;animation-fill-mode:backwards;content:\\"\\";transition:all 0.3s;}.ant-checkbox-group-wrapper-checked:not(.ant-checkbox-group-wrapper-disabled):hover .ant-checkbox-group-inner,.ant-checkbox-group-checked:not(.ant-checkbox-group-disabled):hover .ant-checkbox-group-inner{background-color:#198016;border-color:transparent;}.ant-checkbox-group-wrapper-checked:not(.ant-checkbox-group-wrapper-disabled):hover .ant-checkbox-group:after,.ant-checkbox-group-checked:not(.ant-checkbox-group-disabled):hover .ant-checkbox-group:after{border-color:#198016;}.ant-checkbox-group-wrapper-disabled{cursor:not-allowed;}.ant-checkbox-group-disabled,.ant-checkbox-group-disabled .ant-checkbox-group-input{cursor:not-allowed;pointer-events:none;}.ant-checkbox-group-disabled .ant-checkbox-group-inner{background:rgba(255, 255, 255, 0.08);border-color:#424242;}.ant-checkbox-group-disabled .ant-checkbox-group-inner:after{border-color:rgba(255, 255, 255, 0.25);}.ant-checkbox-group-disabled:after{display:none;}.ant-checkbox-group-disabled+span{color:rgba(255, 255, 255, 0.25);}.ant-checkbox-group-disabled.ant-checkbox-group-indeterminate .ant-checkbox-group-inner::after{background:rgba(255, 255, 255, 0.25);}[class^=\\"ant-col\\"],[class*=\\" ant-col\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-col\\"]::before,[class*=\\" ant-col\\"]::before,[class^=\\"ant-col\\"]::after,[class*=\\" ant-col\\"]::after{box-sizing:border-box;}[class^=\\"ant-col\\"] [class^=\\"ant-col\\"],[class*=\\" ant-col\\"] [class^=\\"ant-col\\"],[class^=\\"ant-col\\"] [class*=\\" ant-col\\"],[class*=\\" ant-col\\"] [class*=\\" ant-col\\"]{box-sizing:border-box;}[class^=\\"ant-col\\"] [class^=\\"ant-col\\"]::before,[class*=\\" ant-col\\"] [class^=\\"ant-col\\"]::before,[class^=\\"ant-col\\"] [class*=\\" ant-col\\"]::before,[class*=\\" ant-col\\"] [class*=\\" ant-col\\"]::before,[class^=\\"ant-col\\"] [class^=\\"ant-col\\"]::after,[class*=\\" ant-col\\"] [class^=\\"ant-col\\"]::after,[class^=\\"ant-col\\"] [class*=\\" ant-col\\"]::after,[class*=\\" ant-col\\"] [class*=\\" ant-col\\"]::after{box-sizing:border-box;}.ant-col{position:relative;max-width:100%;min-height:1px;}.ant-col-24{display:block;flex:0 0 100%;max-width:100%;}.ant-col-push-24{inset-inline-start:100%;}.ant-col-pull-24{inset-inline-end:100%;}.ant-col-offset-24{margin-inline-start:100%;}.ant-col-order-24{order:24;}.ant-col-23{display:block;flex:0 0 95.83333333333334%;max-width:95.83333333333334%;}.ant-col-push-23{inset-inline-start:95.83333333333334%;}.ant-col-pull-23{inset-inline-end:95.83333333333334%;}.ant-col-offset-23{margin-inline-start:95.83333333333334%;}.ant-col-order-23{order:23;}.ant-col-22{display:block;flex:0 0 91.66666666666666%;max-width:91.66666666666666%;}.ant-col-push-22{inset-inline-start:91.66666666666666%;}.ant-col-pull-22{inset-inline-end:91.66666666666666%;}.ant-col-offset-22{margin-inline-start:91.66666666666666%;}.ant-col-order-22{order:22;}.ant-col-21{display:block;flex:0 0 87.5%;max-width:87.5%;}.ant-col-push-21{inset-inline-start:87.5%;}.ant-col-pull-21{inset-inline-end:87.5%;}.ant-col-offset-21{margin-inline-start:87.5%;}.ant-col-order-21{order:21;}.ant-col-20{display:block;flex:0 0 83.33333333333334%;max-width:83.33333333333334%;}.ant-col-push-20{inset-inline-start:83.33333333333334%;}.ant-col-pull-20{inset-inline-end:83.33333333333334%;}.ant-col-offset-20{margin-inline-start:83.33333333333334%;}.ant-col-order-20{order:20;}.ant-col-19{display:block;flex:0 0 79.16666666666666%;max-width:79.16666666666666%;}.ant-col-push-19{inset-inline-start:79.16666666666666%;}.ant-col-pull-19{inset-inline-end:79.16666666666666%;}.ant-col-offset-19{margin-inline-start:79.16666666666666%;}.ant-col-order-19{order:19;}.ant-col-18{display:block;flex:0 0 75%;max-width:75%;}.ant-col-push-18{inset-inline-start:75%;}.ant-col-pull-18{inset-inline-end:75%;}.ant-col-offset-18{margin-inline-start:75%;}.ant-col-order-18{order:18;}.ant-col-17{display:block;flex:0 0 70.83333333333334%;max-width:70.83333333333334%;}.ant-col-push-17{inset-inline-start:70.83333333333334%;}.ant-col-pull-17{inset-inline-end:70.83333333333334%;}.ant-col-offset-17{margin-inline-start:70.83333333333334%;}.ant-col-order-17{order:17;}.ant-col-16{display:block;flex:0 0 66.66666666666666%;max-width:66.66666666666666%;}.ant-col-push-16{inset-inline-start:66.66666666666666%;}.ant-col-pull-16{inset-inline-end:66.66666666666666%;}.ant-col-offset-16{margin-inline-start:66.66666666666666%;}.ant-col-order-16{order:16;}.ant-col-15{display:block;flex:0 0 62.5%;max-width:62.5%;}.ant-col-push-15{inset-inline-start:62.5%;}.ant-col-pull-15{inset-inline-end:62.5%;}.ant-col-offset-15{margin-inline-start:62.5%;}.ant-col-order-15{order:15;}.ant-col-14{display:block;flex:0 0 58.333333333333336%;max-width:58.333333333333336%;}.ant-col-push-14{inset-inline-start:58.333333333333336%;}.ant-col-pull-14{inset-inline-end:58.333333333333336%;}.ant-col-offset-14{margin-inline-start:58.333333333333336%;}.ant-col-order-14{order:14;}.ant-col-13{display:block;flex:0 0 54.166666666666664%;max-width:54.166666666666664%;}.ant-col-push-13{inset-inline-start:54.166666666666664%;}.ant-col-pull-13{inset-inline-end:54.166666666666664%;}.ant-col-offset-13{margin-inline-start:54.166666666666664%;}.ant-col-order-13{order:13;}.ant-col-12{display:block;flex:0 0 50%;max-width:50%;}.ant-col-push-12{inset-inline-start:50%;}.ant-col-pull-12{inset-inline-end:50%;}.ant-col-offset-12{margin-inline-start:50%;}.ant-col-order-12{order:12;}.ant-col-11{display:block;flex:0 0 45.83333333333333%;max-width:45.83333333333333%;}.ant-col-push-11{inset-inline-start:45.83333333333333%;}.ant-col-pull-11{inset-inline-end:45.83333333333333%;}.ant-col-offset-11{margin-inline-start:45.83333333333333%;}.ant-col-order-11{order:11;}.ant-col-10{display:block;flex:0 0 41.66666666666667%;max-width:41.66666666666667%;}.ant-col-push-10{inset-inline-start:41.66666666666667%;}.ant-col-pull-10{inset-inline-end:41.66666666666667%;}.ant-col-offset-10{margin-inline-start:41.66666666666667%;}.ant-col-order-10{order:10;}.ant-col-9{display:block;flex:0 0 37.5%;max-width:37.5%;}.ant-col-push-9{inset-inline-start:37.5%;}.ant-col-pull-9{inset-inline-end:37.5%;}.ant-col-offset-9{margin-inline-start:37.5%;}.ant-col-order-9{order:9;}.ant-col-8{display:block;flex:0 0 33.33333333333333%;max-width:33.33333333333333%;}.ant-col-push-8{inset-inline-start:33.33333333333333%;}.ant-col-pull-8{inset-inline-end:33.33333333333333%;}.ant-col-offset-8{margin-inline-start:33.33333333333333%;}.ant-col-order-8{order:8;}.ant-col-7{display:block;flex:0 0 29.166666666666668%;max-width:29.166666666666668%;}.ant-col-push-7{inset-inline-start:29.166666666666668%;}.ant-col-pull-7{inset-inline-end:29.166666666666668%;}.ant-col-offset-7{margin-inline-start:29.166666666666668%;}.ant-col-order-7{order:7;}.ant-col-6{display:block;flex:0 0 25%;max-width:25%;}.ant-col-push-6{inset-inline-start:25%;}.ant-col-pull-6{inset-inline-end:25%;}.ant-col-offset-6{margin-inline-start:25%;}.ant-col-order-6{order:6;}.ant-col-5{display:block;flex:0 0 20.833333333333336%;max-width:20.833333333333336%;}.ant-col-push-5{inset-inline-start:20.833333333333336%;}.ant-col-pull-5{inset-inline-end:20.833333333333336%;}.ant-col-offset-5{margin-inline-start:20.833333333333336%;}.ant-col-order-5{order:5;}.ant-col-4{display:block;flex:0 0 16.666666666666664%;max-width:16.666666666666664%;}.ant-col-push-4{inset-inline-start:16.666666666666664%;}.ant-col-pull-4{inset-inline-end:16.666666666666664%;}.ant-col-offset-4{margin-inline-start:16.666666666666664%;}.ant-col-order-4{order:4;}.ant-col-3{display:block;flex:0 0 12.5%;max-width:12.5%;}.ant-col-push-3{inset-inline-start:12.5%;}.ant-col-pull-3{inset-inline-end:12.5%;}.ant-col-offset-3{margin-inline-start:12.5%;}.ant-col-order-3{order:3;}.ant-col-2{display:block;flex:0 0 8.333333333333332%;max-width:8.333333333333332%;}.ant-col-push-2{inset-inline-start:8.333333333333332%;}.ant-col-pull-2{inset-inline-end:8.333333333333332%;}.ant-col-offset-2{margin-inline-start:8.333333333333332%;}.ant-col-order-2{order:2;}.ant-col-1{display:block;flex:0 0 4.166666666666666%;max-width:4.166666666666666%;}.ant-col-push-1{inset-inline-start:4.166666666666666%;}.ant-col-pull-1{inset-inline-end:4.166666666666666%;}.ant-col-offset-1{margin-inline-start:4.166666666666666%;}.ant-col-order-1{order:1;}.ant-col-0{display:none;}.ant-col-push-0{inset-inline-start:auto;}.ant-col-pull-0{inset-inline-end:auto;}.ant-col-offset-0{margin-inline-end:0;}.ant-col-order-0{order:0;}.ant-col-xs-24{display:block;flex:0 0 100%;max-width:100%;}.ant-col-xs-push-24{inset-inline-start:100%;}.ant-col-xs-pull-24{inset-inline-end:100%;}.ant-col-xs-offset-24{margin-inline-start:100%;}.ant-col-xs-order-24{order:24;}.ant-col-xs-23{display:block;flex:0 0 95.83333333333334%;max-width:95.83333333333334%;}.ant-col-xs-push-23{inset-inline-start:95.83333333333334%;}.ant-col-xs-pull-23{inset-inline-end:95.83333333333334%;}.ant-col-xs-offset-23{margin-inline-start:95.83333333333334%;}.ant-col-xs-order-23{order:23;}.ant-col-xs-22{display:block;flex:0 0 91.66666666666666%;max-width:91.66666666666666%;}.ant-col-xs-push-22{inset-inline-start:91.66666666666666%;}.ant-col-xs-pull-22{inset-inline-end:91.66666666666666%;}.ant-col-xs-offset-22{margin-inline-start:91.66666666666666%;}.ant-col-xs-order-22{order:22;}.ant-col-xs-21{display:block;flex:0 0 87.5%;max-width:87.5%;}.ant-col-xs-push-21{inset-inline-start:87.5%;}.ant-col-xs-pull-21{inset-inline-end:87.5%;}.ant-col-xs-offset-21{margin-inline-start:87.5%;}.ant-col-xs-order-21{order:21;}.ant-col-xs-20{display:block;flex:0 0 83.33333333333334%;max-width:83.33333333333334%;}.ant-col-xs-push-20{inset-inline-start:83.33333333333334%;}.ant-col-xs-pull-20{inset-inline-end:83.33333333333334%;}.ant-col-xs-offset-20{margin-inline-start:83.33333333333334%;}.ant-col-xs-order-20{order:20;}.ant-col-xs-19{display:block;flex:0 0 79.16666666666666%;max-width:79.16666666666666%;}.ant-col-xs-push-19{inset-inline-start:79.16666666666666%;}.ant-col-xs-pull-19{inset-inline-end:79.16666666666666%;}.ant-col-xs-offset-19{margin-inline-start:79.16666666666666%;}.ant-col-xs-order-19{order:19;}.ant-col-xs-18{display:block;flex:0 0 75%;max-width:75%;}.ant-col-xs-push-18{inset-inline-start:75%;}.ant-col-xs-pull-18{inset-inline-end:75%;}.ant-col-xs-offset-18{margin-inline-start:75%;}.ant-col-xs-order-18{order:18;}.ant-col-xs-17{display:block;flex:0 0 70.83333333333334%;max-width:70.83333333333334%;}.ant-col-xs-push-17{inset-inline-start:70.83333333333334%;}.ant-col-xs-pull-17{inset-inline-end:70.83333333333334%;}.ant-col-xs-offset-17{margin-inline-start:70.83333333333334%;}.ant-col-xs-order-17{order:17;}.ant-col-xs-16{display:block;flex:0 0 66.66666666666666%;max-width:66.66666666666666%;}.ant-col-xs-push-16{inset-inline-start:66.66666666666666%;}.ant-col-xs-pull-16{inset-inline-end:66.66666666666666%;}.ant-col-xs-offset-16{margin-inline-start:66.66666666666666%;}.ant-col-xs-order-16{order:16;}.ant-col-xs-15{display:block;flex:0 0 62.5%;max-width:62.5%;}.ant-col-xs-push-15{inset-inline-start:62.5%;}.ant-col-xs-pull-15{inset-inline-end:62.5%;}.ant-col-xs-offset-15{margin-inline-start:62.5%;}.ant-col-xs-order-15{order:15;}.ant-col-xs-14{display:block;flex:0 0 58.333333333333336%;max-width:58.333333333333336%;}.ant-col-xs-push-14{inset-inline-start:58.333333333333336%;}.ant-col-xs-pull-14{inset-inline-end:58.333333333333336%;}.ant-col-xs-offset-14{margin-inline-start:58.333333333333336%;}.ant-col-xs-order-14{order:14;}.ant-col-xs-13{display:block;flex:0 0 54.166666666666664%;max-width:54.166666666666664%;}.ant-col-xs-push-13{inset-inline-start:54.166666666666664%;}.ant-col-xs-pull-13{inset-inline-end:54.166666666666664%;}.ant-col-xs-offset-13{margin-inline-start:54.166666666666664%;}.ant-col-xs-order-13{order:13;}.ant-col-xs-12{display:block;flex:0 0 50%;max-width:50%;}.ant-col-xs-push-12{inset-inline-start:50%;}.ant-col-xs-pull-12{inset-inline-end:50%;}.ant-col-xs-offset-12{margin-inline-start:50%;}.ant-col-xs-order-12{order:12;}.ant-col-xs-11{display:block;flex:0 0 45.83333333333333%;max-width:45.83333333333333%;}.ant-col-xs-push-11{inset-inline-start:45.83333333333333%;}.ant-col-xs-pull-11{inset-inline-end:45.83333333333333%;}.ant-col-xs-offset-11{margin-inline-start:45.83333333333333%;}.ant-col-xs-order-11{order:11;}.ant-col-xs-10{display:block;flex:0 0 41.66666666666667%;max-width:41.66666666666667%;}.ant-col-xs-push-10{inset-inline-start:41.66666666666667%;}.ant-col-xs-pull-10{inset-inline-end:41.66666666666667%;}.ant-col-xs-offset-10{margin-inline-start:41.66666666666667%;}.ant-col-xs-order-10{order:10;}.ant-col-xs-9{display:block;flex:0 0 37.5%;max-width:37.5%;}.ant-col-xs-push-9{inset-inline-start:37.5%;}.ant-col-xs-pull-9{inset-inline-end:37.5%;}.ant-col-xs-offset-9{margin-inline-start:37.5%;}.ant-col-xs-order-9{order:9;}.ant-col-xs-8{display:block;flex:0 0 33.33333333333333%;max-width:33.33333333333333%;}.ant-col-xs-push-8{inset-inline-start:33.33333333333333%;}.ant-col-xs-pull-8{inset-inline-end:33.33333333333333%;}.ant-col-xs-offset-8{margin-inline-start:33.33333333333333%;}.ant-col-xs-order-8{order:8;}.ant-col-xs-7{display:block;flex:0 0 29.166666666666668%;max-width:29.166666666666668%;}.ant-col-xs-push-7{inset-inline-start:29.166666666666668%;}.ant-col-xs-pull-7{inset-inline-end:29.166666666666668%;}.ant-col-xs-offset-7{margin-inline-start:29.166666666666668%;}.ant-col-xs-order-7{order:7;}.ant-col-xs-6{display:block;flex:0 0 25%;max-width:25%;}.ant-col-xs-push-6{inset-inline-start:25%;}.ant-col-xs-pull-6{inset-inline-end:25%;}.ant-col-xs-offset-6{margin-inline-start:25%;}.ant-col-xs-order-6{order:6;}.ant-col-xs-5{display:block;flex:0 0 20.833333333333336%;max-width:20.833333333333336%;}.ant-col-xs-push-5{inset-inline-start:20.833333333333336%;}.ant-col-xs-pull-5{inset-inline-end:20.833333333333336%;}.ant-col-xs-offset-5{margin-inline-start:20.833333333333336%;}.ant-col-xs-order-5{order:5;}.ant-col-xs-4{display:block;flex:0 0 16.666666666666664%;max-width:16.666666666666664%;}.ant-col-xs-push-4{inset-inline-start:16.666666666666664%;}.ant-col-xs-pull-4{inset-inline-end:16.666666666666664%;}.ant-col-xs-offset-4{margin-inline-start:16.666666666666664%;}.ant-col-xs-order-4{order:4;}.ant-col-xs-3{display:block;flex:0 0 12.5%;max-width:12.5%;}.ant-col-xs-push-3{inset-inline-start:12.5%;}.ant-col-xs-pull-3{inset-inline-end:12.5%;}.ant-col-xs-offset-3{margin-inline-start:12.5%;}.ant-col-xs-order-3{order:3;}.ant-col-xs-2{display:block;flex:0 0 8.333333333333332%;max-width:8.333333333333332%;}.ant-col-xs-push-2{inset-inline-start:8.333333333333332%;}.ant-col-xs-pull-2{inset-inline-end:8.333333333333332%;}.ant-col-xs-offset-2{margin-inline-start:8.333333333333332%;}.ant-col-xs-order-2{order:2;}.ant-col-xs-1{display:block;flex:0 0 4.166666666666666%;max-width:4.166666666666666%;}.ant-col-xs-push-1{inset-inline-start:4.166666666666666%;}.ant-col-xs-pull-1{inset-inline-end:4.166666666666666%;}.ant-col-xs-offset-1{margin-inline-start:4.166666666666666%;}.ant-col-xs-order-1{order:1;}.ant-col-xs-0{display:none;}.ant-col-push-0{inset-inline-start:auto;}.ant-col-pull-0{inset-inline-end:auto;}.ant-col-xs-push-0{inset-inline-start:auto;}.ant-col-xs-pull-0{inset-inline-end:auto;}.ant-col-xs-offset-0{margin-inline-end:0;}.ant-col-xs-order-0{order:0;}@media (min-width: 576px){.ant-col-sm-24{display:block;flex:0 0 100%;max-width:100%;}.ant-col-sm-push-24{inset-inline-start:100%;}.ant-col-sm-pull-24{inset-inline-end:100%;}.ant-col-sm-offset-24{margin-inline-start:100%;}.ant-col-sm-order-24{order:24;}.ant-col-sm-23{display:block;flex:0 0 95.83333333333334%;max-width:95.83333333333334%;}.ant-col-sm-push-23{inset-inline-start:95.83333333333334%;}.ant-col-sm-pull-23{inset-inline-end:95.83333333333334%;}.ant-col-sm-offset-23{margin-inline-start:95.83333333333334%;}.ant-col-sm-order-23{order:23;}.ant-col-sm-22{display:block;flex:0 0 91.66666666666666%;max-width:91.66666666666666%;}.ant-col-sm-push-22{inset-inline-start:91.66666666666666%;}.ant-col-sm-pull-22{inset-inline-end:91.66666666666666%;}.ant-col-sm-offset-22{margin-inline-start:91.66666666666666%;}.ant-col-sm-order-22{order:22;}.ant-col-sm-21{display:block;flex:0 0 87.5%;max-width:87.5%;}.ant-col-sm-push-21{inset-inline-start:87.5%;}.ant-col-sm-pull-21{inset-inline-end:87.5%;}.ant-col-sm-offset-21{margin-inline-start:87.5%;}.ant-col-sm-order-21{order:21;}.ant-col-sm-20{display:block;flex:0 0 83.33333333333334%;max-width:83.33333333333334%;}.ant-col-sm-push-20{inset-inline-start:83.33333333333334%;}.ant-col-sm-pull-20{inset-inline-end:83.33333333333334%;}.ant-col-sm-offset-20{margin-inline-start:83.33333333333334%;}.ant-col-sm-order-20{order:20;}.ant-col-sm-19{display:block;flex:0 0 79.16666666666666%;max-width:79.16666666666666%;}.ant-col-sm-push-19{inset-inline-start:79.16666666666666%;}.ant-col-sm-pull-19{inset-inline-end:79.16666666666666%;}.ant-col-sm-offset-19{margin-inline-start:79.16666666666666%;}.ant-col-sm-order-19{order:19;}.ant-col-sm-18{display:block;flex:0 0 75%;max-width:75%;}.ant-col-sm-push-18{inset-inline-start:75%;}.ant-col-sm-pull-18{inset-inline-end:75%;}.ant-col-sm-offset-18{margin-inline-start:75%;}.ant-col-sm-order-18{order:18;}.ant-col-sm-17{display:block;flex:0 0 70.83333333333334%;max-width:70.83333333333334%;}.ant-col-sm-push-17{inset-inline-start:70.83333333333334%;}.ant-col-sm-pull-17{inset-inline-end:70.83333333333334%;}.ant-col-sm-offset-17{margin-inline-start:70.83333333333334%;}.ant-col-sm-order-17{order:17;}.ant-col-sm-16{display:block;flex:0 0 66.66666666666666%;max-width:66.66666666666666%;}.ant-col-sm-push-16{inset-inline-start:66.66666666666666%;}.ant-col-sm-pull-16{inset-inline-end:66.66666666666666%;}.ant-col-sm-offset-16{margin-inline-start:66.66666666666666%;}.ant-col-sm-order-16{order:16;}.ant-col-sm-15{display:block;flex:0 0 62.5%;max-width:62.5%;}.ant-col-sm-push-15{inset-inline-start:62.5%;}.ant-col-sm-pull-15{inset-inline-end:62.5%;}.ant-col-sm-offset-15{margin-inline-start:62.5%;}.ant-col-sm-order-15{order:15;}.ant-col-sm-14{display:block;flex:0 0 58.333333333333336%;max-width:58.333333333333336%;}.ant-col-sm-push-14{inset-inline-start:58.333333333333336%;}.ant-col-sm-pull-14{inset-inline-end:58.333333333333336%;}.ant-col-sm-offset-14{margin-inline-start:58.333333333333336%;}.ant-col-sm-order-14{order:14;}.ant-col-sm-13{display:block;flex:0 0 54.166666666666664%;max-width:54.166666666666664%;}.ant-col-sm-push-13{inset-inline-start:54.166666666666664%;}.ant-col-sm-pull-13{inset-inline-end:54.166666666666664%;}.ant-col-sm-offset-13{margin-inline-start:54.166666666666664%;}.ant-col-sm-order-13{order:13;}.ant-col-sm-12{display:block;flex:0 0 50%;max-width:50%;}.ant-col-sm-push-12{inset-inline-start:50%;}.ant-col-sm-pull-12{inset-inline-end:50%;}.ant-col-sm-offset-12{margin-inline-start:50%;}.ant-col-sm-order-12{order:12;}.ant-col-sm-11{display:block;flex:0 0 45.83333333333333%;max-width:45.83333333333333%;}.ant-col-sm-push-11{inset-inline-start:45.83333333333333%;}.ant-col-sm-pull-11{inset-inline-end:45.83333333333333%;}.ant-col-sm-offset-11{margin-inline-start:45.83333333333333%;}.ant-col-sm-order-11{order:11;}.ant-col-sm-10{display:block;flex:0 0 41.66666666666667%;max-width:41.66666666666667%;}.ant-col-sm-push-10{inset-inline-start:41.66666666666667%;}.ant-col-sm-pull-10{inset-inline-end:41.66666666666667%;}.ant-col-sm-offset-10{margin-inline-start:41.66666666666667%;}.ant-col-sm-order-10{order:10;}.ant-col-sm-9{display:block;flex:0 0 37.5%;max-width:37.5%;}.ant-col-sm-push-9{inset-inline-start:37.5%;}.ant-col-sm-pull-9{inset-inline-end:37.5%;}.ant-col-sm-offset-9{margin-inline-start:37.5%;}.ant-col-sm-order-9{order:9;}.ant-col-sm-8{display:block;flex:0 0 33.33333333333333%;max-width:33.33333333333333%;}.ant-col-sm-push-8{inset-inline-start:33.33333333333333%;}.ant-col-sm-pull-8{inset-inline-end:33.33333333333333%;}.ant-col-sm-offset-8{margin-inline-start:33.33333333333333%;}.ant-col-sm-order-8{order:8;}.ant-col-sm-7{display:block;flex:0 0 29.166666666666668%;max-width:29.166666666666668%;}.ant-col-sm-push-7{inset-inline-start:29.166666666666668%;}.ant-col-sm-pull-7{inset-inline-end:29.166666666666668%;}.ant-col-sm-offset-7{margin-inline-start:29.166666666666668%;}.ant-col-sm-order-7{order:7;}.ant-col-sm-6{display:block;flex:0 0 25%;max-width:25%;}.ant-col-sm-push-6{inset-inline-start:25%;}.ant-col-sm-pull-6{inset-inline-end:25%;}.ant-col-sm-offset-6{margin-inline-start:25%;}.ant-col-sm-order-6{order:6;}.ant-col-sm-5{display:block;flex:0 0 20.833333333333336%;max-width:20.833333333333336%;}.ant-col-sm-push-5{inset-inline-start:20.833333333333336%;}.ant-col-sm-pull-5{inset-inline-end:20.833333333333336%;}.ant-col-sm-offset-5{margin-inline-start:20.833333333333336%;}.ant-col-sm-order-5{order:5;}.ant-col-sm-4{display:block;flex:0 0 16.666666666666664%;max-width:16.666666666666664%;}.ant-col-sm-push-4{inset-inline-start:16.666666666666664%;}.ant-col-sm-pull-4{inset-inline-end:16.666666666666664%;}.ant-col-sm-offset-4{margin-inline-start:16.666666666666664%;}.ant-col-sm-order-4{order:4;}.ant-col-sm-3{display:block;flex:0 0 12.5%;max-width:12.5%;}.ant-col-sm-push-3{inset-inline-start:12.5%;}.ant-col-sm-pull-3{inset-inline-end:12.5%;}.ant-col-sm-offset-3{margin-inline-start:12.5%;}.ant-col-sm-order-3{order:3;}.ant-col-sm-2{display:block;flex:0 0 8.333333333333332%;max-width:8.333333333333332%;}.ant-col-sm-push-2{inset-inline-start:8.333333333333332%;}.ant-col-sm-pull-2{inset-inline-end:8.333333333333332%;}.ant-col-sm-offset-2{margin-inline-start:8.333333333333332%;}.ant-col-sm-order-2{order:2;}.ant-col-sm-1{display:block;flex:0 0 4.166666666666666%;max-width:4.166666666666666%;}.ant-col-sm-push-1{inset-inline-start:4.166666666666666%;}.ant-col-sm-pull-1{inset-inline-end:4.166666666666666%;}.ant-col-sm-offset-1{margin-inline-start:4.166666666666666%;}.ant-col-sm-order-1{order:1;}.ant-col-sm-0{display:none;}.ant-col-push-0{inset-inline-start:auto;}.ant-col-pull-0{inset-inline-end:auto;}.ant-col-sm-push-0{inset-inline-start:auto;}.ant-col-sm-pull-0{inset-inline-end:auto;}.ant-col-sm-offset-0{margin-inline-end:0;}.ant-col-sm-order-0{order:0;}}@media (min-width: 768px){.ant-col-md-24{display:block;flex:0 0 100%;max-width:100%;}.ant-col-md-push-24{inset-inline-start:100%;}.ant-col-md-pull-24{inset-inline-end:100%;}.ant-col-md-offset-24{margin-inline-start:100%;}.ant-col-md-order-24{order:24;}.ant-col-md-23{display:block;flex:0 0 95.83333333333334%;max-width:95.83333333333334%;}.ant-col-md-push-23{inset-inline-start:95.83333333333334%;}.ant-col-md-pull-23{inset-inline-end:95.83333333333334%;}.ant-col-md-offset-23{margin-inline-start:95.83333333333334%;}.ant-col-md-order-23{order:23;}.ant-col-md-22{display:block;flex:0 0 91.66666666666666%;max-width:91.66666666666666%;}.ant-col-md-push-22{inset-inline-start:91.66666666666666%;}.ant-col-md-pull-22{inset-inline-end:91.66666666666666%;}.ant-col-md-offset-22{margin-inline-start:91.66666666666666%;}.ant-col-md-order-22{order:22;}.ant-col-md-21{display:block;flex:0 0 87.5%;max-width:87.5%;}.ant-col-md-push-21{inset-inline-start:87.5%;}.ant-col-md-pull-21{inset-inline-end:87.5%;}.ant-col-md-offset-21{margin-inline-start:87.5%;}.ant-col-md-order-21{order:21;}.ant-col-md-20{display:block;flex:0 0 83.33333333333334%;max-width:83.33333333333334%;}.ant-col-md-push-20{inset-inline-start:83.33333333333334%;}.ant-col-md-pull-20{inset-inline-end:83.33333333333334%;}.ant-col-md-offset-20{margin-inline-start:83.33333333333334%;}.ant-col-md-order-20{order:20;}.ant-col-md-19{display:block;flex:0 0 79.16666666666666%;max-width:79.16666666666666%;}.ant-col-md-push-19{inset-inline-start:79.16666666666666%;}.ant-col-md-pull-19{inset-inline-end:79.16666666666666%;}.ant-col-md-offset-19{margin-inline-start:79.16666666666666%;}.ant-col-md-order-19{order:19;}.ant-col-md-18{display:block;flex:0 0 75%;max-width:75%;}.ant-col-md-push-18{inset-inline-start:75%;}.ant-col-md-pull-18{inset-inline-end:75%;}.ant-col-md-offset-18{margin-inline-start:75%;}.ant-col-md-order-18{order:18;}.ant-col-md-17{display:block;flex:0 0 70.83333333333334%;max-width:70.83333333333334%;}.ant-col-md-push-17{inset-inline-start:70.83333333333334%;}.ant-col-md-pull-17{inset-inline-end:70.83333333333334%;}.ant-col-md-offset-17{margin-inline-start:70.83333333333334%;}.ant-col-md-order-17{order:17;}.ant-col-md-16{display:block;flex:0 0 66.66666666666666%;max-width:66.66666666666666%;}.ant-col-md-push-16{inset-inline-start:66.66666666666666%;}.ant-col-md-pull-16{inset-inline-end:66.66666666666666%;}.ant-col-md-offset-16{margin-inline-start:66.66666666666666%;}.ant-col-md-order-16{order:16;}.ant-col-md-15{display:block;flex:0 0 62.5%;max-width:62.5%;}.ant-col-md-push-15{inset-inline-start:62.5%;}.ant-col-md-pull-15{inset-inline-end:62.5%;}.ant-col-md-offset-15{margin-inline-start:62.5%;}.ant-col-md-order-15{order:15;}.ant-col-md-14{display:block;flex:0 0 58.333333333333336%;max-width:58.333333333333336%;}.ant-col-md-push-14{inset-inline-start:58.333333333333336%;}.ant-col-md-pull-14{inset-inline-end:58.333333333333336%;}.ant-col-md-offset-14{margin-inline-start:58.333333333333336%;}.ant-col-md-order-14{order:14;}.ant-col-md-13{display:block;flex:0 0 54.166666666666664%;max-width:54.166666666666664%;}.ant-col-md-push-13{inset-inline-start:54.166666666666664%;}.ant-col-md-pull-13{inset-inline-end:54.166666666666664%;}.ant-col-md-offset-13{margin-inline-start:54.166666666666664%;}.ant-col-md-order-13{order:13;}.ant-col-md-12{display:block;flex:0 0 50%;max-width:50%;}.ant-col-md-push-12{inset-inline-start:50%;}.ant-col-md-pull-12{inset-inline-end:50%;}.ant-col-md-offset-12{margin-inline-start:50%;}.ant-col-md-order-12{order:12;}.ant-col-md-11{display:block;flex:0 0 45.83333333333333%;max-width:45.83333333333333%;}.ant-col-md-push-11{inset-inline-start:45.83333333333333%;}.ant-col-md-pull-11{inset-inline-end:45.83333333333333%;}.ant-col-md-offset-11{margin-inline-start:45.83333333333333%;}.ant-col-md-order-11{order:11;}.ant-col-md-10{display:block;flex:0 0 41.66666666666667%;max-width:41.66666666666667%;}.ant-col-md-push-10{inset-inline-start:41.66666666666667%;}.ant-col-md-pull-10{inset-inline-end:41.66666666666667%;}.ant-col-md-offset-10{margin-inline-start:41.66666666666667%;}.ant-col-md-order-10{order:10;}.ant-col-md-9{display:block;flex:0 0 37.5%;max-width:37.5%;}.ant-col-md-push-9{inset-inline-start:37.5%;}.ant-col-md-pull-9{inset-inline-end:37.5%;}.ant-col-md-offset-9{margin-inline-start:37.5%;}.ant-col-md-order-9{order:9;}.ant-col-md-8{display:block;flex:0 0 33.33333333333333%;max-width:33.33333333333333%;}.ant-col-md-push-8{inset-inline-start:33.33333333333333%;}.ant-col-md-pull-8{inset-inline-end:33.33333333333333%;}.ant-col-md-offset-8{margin-inline-start:33.33333333333333%;}.ant-col-md-order-8{order:8;}.ant-col-md-7{display:block;flex:0 0 29.166666666666668%;max-width:29.166666666666668%;}.ant-col-md-push-7{inset-inline-start:29.166666666666668%;}.ant-col-md-pull-7{inset-inline-end:29.166666666666668%;}.ant-col-md-offset-7{margin-inline-start:29.166666666666668%;}.ant-col-md-order-7{order:7;}.ant-col-md-6{display:block;flex:0 0 25%;max-width:25%;}.ant-col-md-push-6{inset-inline-start:25%;}.ant-col-md-pull-6{inset-inline-end:25%;}.ant-col-md-offset-6{margin-inline-start:25%;}.ant-col-md-order-6{order:6;}.ant-col-md-5{display:block;flex:0 0 20.833333333333336%;max-width:20.833333333333336%;}.ant-col-md-push-5{inset-inline-start:20.833333333333336%;}.ant-col-md-pull-5{inset-inline-end:20.833333333333336%;}.ant-col-md-offset-5{margin-inline-start:20.833333333333336%;}.ant-col-md-order-5{order:5;}.ant-col-md-4{display:block;flex:0 0 16.666666666666664%;max-width:16.666666666666664%;}.ant-col-md-push-4{inset-inline-start:16.666666666666664%;}.ant-col-md-pull-4{inset-inline-end:16.666666666666664%;}.ant-col-md-offset-4{margin-inline-start:16.666666666666664%;}.ant-col-md-order-4{order:4;}.ant-col-md-3{display:block;flex:0 0 12.5%;max-width:12.5%;}.ant-col-md-push-3{inset-inline-start:12.5%;}.ant-col-md-pull-3{inset-inline-end:12.5%;}.ant-col-md-offset-3{margin-inline-start:12.5%;}.ant-col-md-order-3{order:3;}.ant-col-md-2{display:block;flex:0 0 8.333333333333332%;max-width:8.333333333333332%;}.ant-col-md-push-2{inset-inline-start:8.333333333333332%;}.ant-col-md-pull-2{inset-inline-end:8.333333333333332%;}.ant-col-md-offset-2{margin-inline-start:8.333333333333332%;}.ant-col-md-order-2{order:2;}.ant-col-md-1{display:block;flex:0 0 4.166666666666666%;max-width:4.166666666666666%;}.ant-col-md-push-1{inset-inline-start:4.166666666666666%;}.ant-col-md-pull-1{inset-inline-end:4.166666666666666%;}.ant-col-md-offset-1{margin-inline-start:4.166666666666666%;}.ant-col-md-order-1{order:1;}.ant-col-md-0{display:none;}.ant-col-push-0{inset-inline-start:auto;}.ant-col-pull-0{inset-inline-end:auto;}.ant-col-md-push-0{inset-inline-start:auto;}.ant-col-md-pull-0{inset-inline-end:auto;}.ant-col-md-offset-0{margin-inline-end:0;}.ant-col-md-order-0{order:0;}}@media (min-width: 992px){.ant-col-lg-24{display:block;flex:0 0 100%;max-width:100%;}.ant-col-lg-push-24{inset-inline-start:100%;}.ant-col-lg-pull-24{inset-inline-end:100%;}.ant-col-lg-offset-24{margin-inline-start:100%;}.ant-col-lg-order-24{order:24;}.ant-col-lg-23{display:block;flex:0 0 95.83333333333334%;max-width:95.83333333333334%;}.ant-col-lg-push-23{inset-inline-start:95.83333333333334%;}.ant-col-lg-pull-23{inset-inline-end:95.83333333333334%;}.ant-col-lg-offset-23{margin-inline-start:95.83333333333334%;}.ant-col-lg-order-23{order:23;}.ant-col-lg-22{display:block;flex:0 0 91.66666666666666%;max-width:91.66666666666666%;}.ant-col-lg-push-22{inset-inline-start:91.66666666666666%;}.ant-col-lg-pull-22{inset-inline-end:91.66666666666666%;}.ant-col-lg-offset-22{margin-inline-start:91.66666666666666%;}.ant-col-lg-order-22{order:22;}.ant-col-lg-21{display:block;flex:0 0 87.5%;max-width:87.5%;}.ant-col-lg-push-21{inset-inline-start:87.5%;}.ant-col-lg-pull-21{inset-inline-end:87.5%;}.ant-col-lg-offset-21{margin-inline-start:87.5%;}.ant-col-lg-order-21{order:21;}.ant-col-lg-20{display:block;flex:0 0 83.33333333333334%;max-width:83.33333333333334%;}.ant-col-lg-push-20{inset-inline-start:83.33333333333334%;}.ant-col-lg-pull-20{inset-inline-end:83.33333333333334%;}.ant-col-lg-offset-20{margin-inline-start:83.33333333333334%;}.ant-col-lg-order-20{order:20;}.ant-col-lg-19{display:block;flex:0 0 79.16666666666666%;max-width:79.16666666666666%;}.ant-col-lg-push-19{inset-inline-start:79.16666666666666%;}.ant-col-lg-pull-19{inset-inline-end:79.16666666666666%;}.ant-col-lg-offset-19{margin-inline-start:79.16666666666666%;}.ant-col-lg-order-19{order:19;}.ant-col-lg-18{display:block;flex:0 0 75%;max-width:75%;}.ant-col-lg-push-18{inset-inline-start:75%;}.ant-col-lg-pull-18{inset-inline-end:75%;}.ant-col-lg-offset-18{margin-inline-start:75%;}.ant-col-lg-order-18{order:18;}.ant-col-lg-17{display:block;flex:0 0 70.83333333333334%;max-width:70.83333333333334%;}.ant-col-lg-push-17{inset-inline-start:70.83333333333334%;}.ant-col-lg-pull-17{inset-inline-end:70.83333333333334%;}.ant-col-lg-offset-17{margin-inline-start:70.83333333333334%;}.ant-col-lg-order-17{order:17;}.ant-col-lg-16{display:block;flex:0 0 66.66666666666666%;max-width:66.66666666666666%;}.ant-col-lg-push-16{inset-inline-start:66.66666666666666%;}.ant-col-lg-pull-16{inset-inline-end:66.66666666666666%;}.ant-col-lg-offset-16{margin-inline-start:66.66666666666666%;}.ant-col-lg-order-16{order:16;}.ant-col-lg-15{display:block;flex:0 0 62.5%;max-width:62.5%;}.ant-col-lg-push-15{inset-inline-start:62.5%;}.ant-col-lg-pull-15{inset-inline-end:62.5%;}.ant-col-lg-offset-15{margin-inline-start:62.5%;}.ant-col-lg-order-15{order:15;}.ant-col-lg-14{display:block;flex:0 0 58.333333333333336%;max-width:58.333333333333336%;}.ant-col-lg-push-14{inset-inline-start:58.333333333333336%;}.ant-col-lg-pull-14{inset-inline-end:58.333333333333336%;}.ant-col-lg-offset-14{margin-inline-start:58.333333333333336%;}.ant-col-lg-order-14{order:14;}.ant-col-lg-13{display:block;flex:0 0 54.166666666666664%;max-width:54.166666666666664%;}.ant-col-lg-push-13{inset-inline-start:54.166666666666664%;}.ant-col-lg-pull-13{inset-inline-end:54.166666666666664%;}.ant-col-lg-offset-13{margin-inline-start:54.166666666666664%;}.ant-col-lg-order-13{order:13;}.ant-col-lg-12{display:block;flex:0 0 50%;max-width:50%;}.ant-col-lg-push-12{inset-inline-start:50%;}.ant-col-lg-pull-12{inset-inline-end:50%;}.ant-col-lg-offset-12{margin-inline-start:50%;}.ant-col-lg-order-12{order:12;}.ant-col-lg-11{display:block;flex:0 0 45.83333333333333%;max-width:45.83333333333333%;}.ant-col-lg-push-11{inset-inline-start:45.83333333333333%;}.ant-col-lg-pull-11{inset-inline-end:45.83333333333333%;}.ant-col-lg-offset-11{margin-inline-start:45.83333333333333%;}.ant-col-lg-order-11{order:11;}.ant-col-lg-10{display:block;flex:0 0 41.66666666666667%;max-width:41.66666666666667%;}.ant-col-lg-push-10{inset-inline-start:41.66666666666667%;}.ant-col-lg-pull-10{inset-inline-end:41.66666666666667%;}.ant-col-lg-offset-10{margin-inline-start:41.66666666666667%;}.ant-col-lg-order-10{order:10;}.ant-col-lg-9{display:block;flex:0 0 37.5%;max-width:37.5%;}.ant-col-lg-push-9{inset-inline-start:37.5%;}.ant-col-lg-pull-9{inset-inline-end:37.5%;}.ant-col-lg-offset-9{margin-inline-start:37.5%;}.ant-col-lg-order-9{order:9;}.ant-col-lg-8{display:block;flex:0 0 33.33333333333333%;max-width:33.33333333333333%;}.ant-col-lg-push-8{inset-inline-start:33.33333333333333%;}.ant-col-lg-pull-8{inset-inline-end:33.33333333333333%;}.ant-col-lg-offset-8{margin-inline-start:33.33333333333333%;}.ant-col-lg-order-8{order:8;}.ant-col-lg-7{display:block;flex:0 0 29.166666666666668%;max-width:29.166666666666668%;}.ant-col-lg-push-7{inset-inline-start:29.166666666666668%;}.ant-col-lg-pull-7{inset-inline-end:29.166666666666668%;}.ant-col-lg-offset-7{margin-inline-start:29.166666666666668%;}.ant-col-lg-order-7{order:7;}.ant-col-lg-6{display:block;flex:0 0 25%;max-width:25%;}.ant-col-lg-push-6{inset-inline-start:25%;}.ant-col-lg-pull-6{inset-inline-end:25%;}.ant-col-lg-offset-6{margin-inline-start:25%;}.ant-col-lg-order-6{order:6;}.ant-col-lg-5{display:block;flex:0 0 20.833333333333336%;max-width:20.833333333333336%;}.ant-col-lg-push-5{inset-inline-start:20.833333333333336%;}.ant-col-lg-pull-5{inset-inline-end:20.833333333333336%;}.ant-col-lg-offset-5{margin-inline-start:20.833333333333336%;}.ant-col-lg-order-5{order:5;}.ant-col-lg-4{display:block;flex:0 0 16.666666666666664%;max-width:16.666666666666664%;}.ant-col-lg-push-4{inset-inline-start:16.666666666666664%;}.ant-col-lg-pull-4{inset-inline-end:16.666666666666664%;}.ant-col-lg-offset-4{margin-inline-start:16.666666666666664%;}.ant-col-lg-order-4{order:4;}.ant-col-lg-3{display:block;flex:0 0 12.5%;max-width:12.5%;}.ant-col-lg-push-3{inset-inline-start:12.5%;}.ant-col-lg-pull-3{inset-inline-end:12.5%;}.ant-col-lg-offset-3{margin-inline-start:12.5%;}.ant-col-lg-order-3{order:3;}.ant-col-lg-2{display:block;flex:0 0 8.333333333333332%;max-width:8.333333333333332%;}.ant-col-lg-push-2{inset-inline-start:8.333333333333332%;}.ant-col-lg-pull-2{inset-inline-end:8.333333333333332%;}.ant-col-lg-offset-2{margin-inline-start:8.333333333333332%;}.ant-col-lg-order-2{order:2;}.ant-col-lg-1{display:block;flex:0 0 4.166666666666666%;max-width:4.166666666666666%;}.ant-col-lg-push-1{inset-inline-start:4.166666666666666%;}.ant-col-lg-pull-1{inset-inline-end:4.166666666666666%;}.ant-col-lg-offset-1{margin-inline-start:4.166666666666666%;}.ant-col-lg-order-1{order:1;}.ant-col-lg-0{display:none;}.ant-col-push-0{inset-inline-start:auto;}.ant-col-pull-0{inset-inline-end:auto;}.ant-col-lg-push-0{inset-inline-start:auto;}.ant-col-lg-pull-0{inset-inline-end:auto;}.ant-col-lg-offset-0{margin-inline-end:0;}.ant-col-lg-order-0{order:0;}}@media (min-width: 1200px){.ant-col-xl-24{display:block;flex:0 0 100%;max-width:100%;}.ant-col-xl-push-24{inset-inline-start:100%;}.ant-col-xl-pull-24{inset-inline-end:100%;}.ant-col-xl-offset-24{margin-inline-start:100%;}.ant-col-xl-order-24{order:24;}.ant-col-xl-23{display:block;flex:0 0 95.83333333333334%;max-width:95.83333333333334%;}.ant-col-xl-push-23{inset-inline-start:95.83333333333334%;}.ant-col-xl-pull-23{inset-inline-end:95.83333333333334%;}.ant-col-xl-offset-23{margin-inline-start:95.83333333333334%;}.ant-col-xl-order-23{order:23;}.ant-col-xl-22{display:block;flex:0 0 91.66666666666666%;max-width:91.66666666666666%;}.ant-col-xl-push-22{inset-inline-start:91.66666666666666%;}.ant-col-xl-pull-22{inset-inline-end:91.66666666666666%;}.ant-col-xl-offset-22{margin-inline-start:91.66666666666666%;}.ant-col-xl-order-22{order:22;}.ant-col-xl-21{display:block;flex:0 0 87.5%;max-width:87.5%;}.ant-col-xl-push-21{inset-inline-start:87.5%;}.ant-col-xl-pull-21{inset-inline-end:87.5%;}.ant-col-xl-offset-21{margin-inline-start:87.5%;}.ant-col-xl-order-21{order:21;}.ant-col-xl-20{display:block;flex:0 0 83.33333333333334%;max-width:83.33333333333334%;}.ant-col-xl-push-20{inset-inline-start:83.33333333333334%;}.ant-col-xl-pull-20{inset-inline-end:83.33333333333334%;}.ant-col-xl-offset-20{margin-inline-start:83.33333333333334%;}.ant-col-xl-order-20{order:20;}.ant-col-xl-19{display:block;flex:0 0 79.16666666666666%;max-width:79.16666666666666%;}.ant-col-xl-push-19{inset-inline-start:79.16666666666666%;}.ant-col-xl-pull-19{inset-inline-end:79.16666666666666%;}.ant-col-xl-offset-19{margin-inline-start:79.16666666666666%;}.ant-col-xl-order-19{order:19;}.ant-col-xl-18{display:block;flex:0 0 75%;max-width:75%;}.ant-col-xl-push-18{inset-inline-start:75%;}.ant-col-xl-pull-18{inset-inline-end:75%;}.ant-col-xl-offset-18{margin-inline-start:75%;}.ant-col-xl-order-18{order:18;}.ant-col-xl-17{display:block;flex:0 0 70.83333333333334%;max-width:70.83333333333334%;}.ant-col-xl-push-17{inset-inline-start:70.83333333333334%;}.ant-col-xl-pull-17{inset-inline-end:70.83333333333334%;}.ant-col-xl-offset-17{margin-inline-start:70.83333333333334%;}.ant-col-xl-order-17{order:17;}.ant-col-xl-16{display:block;flex:0 0 66.66666666666666%;max-width:66.66666666666666%;}.ant-col-xl-push-16{inset-inline-start:66.66666666666666%;}.ant-col-xl-pull-16{inset-inline-end:66.66666666666666%;}.ant-col-xl-offset-16{margin-inline-start:66.66666666666666%;}.ant-col-xl-order-16{order:16;}.ant-col-xl-15{display:block;flex:0 0 62.5%;max-width:62.5%;}.ant-col-xl-push-15{inset-inline-start:62.5%;}.ant-col-xl-pull-15{inset-inline-end:62.5%;}.ant-col-xl-offset-15{margin-inline-start:62.5%;}.ant-col-xl-order-15{order:15;}.ant-col-xl-14{display:block;flex:0 0 58.333333333333336%;max-width:58.333333333333336%;}.ant-col-xl-push-14{inset-inline-start:58.333333333333336%;}.ant-col-xl-pull-14{inset-inline-end:58.333333333333336%;}.ant-col-xl-offset-14{margin-inline-start:58.333333333333336%;}.ant-col-xl-order-14{order:14;}.ant-col-xl-13{display:block;flex:0 0 54.166666666666664%;max-width:54.166666666666664%;}.ant-col-xl-push-13{inset-inline-start:54.166666666666664%;}.ant-col-xl-pull-13{inset-inline-end:54.166666666666664%;}.ant-col-xl-offset-13{margin-inline-start:54.166666666666664%;}.ant-col-xl-order-13{order:13;}.ant-col-xl-12{display:block;flex:0 0 50%;max-width:50%;}.ant-col-xl-push-12{inset-inline-start:50%;}.ant-col-xl-pull-12{inset-inline-end:50%;}.ant-col-xl-offset-12{margin-inline-start:50%;}.ant-col-xl-order-12{order:12;}.ant-col-xl-11{display:block;flex:0 0 45.83333333333333%;max-width:45.83333333333333%;}.ant-col-xl-push-11{inset-inline-start:45.83333333333333%;}.ant-col-xl-pull-11{inset-inline-end:45.83333333333333%;}.ant-col-xl-offset-11{margin-inline-start:45.83333333333333%;}.ant-col-xl-order-11{order:11;}.ant-col-xl-10{display:block;flex:0 0 41.66666666666667%;max-width:41.66666666666667%;}.ant-col-xl-push-10{inset-inline-start:41.66666666666667%;}.ant-col-xl-pull-10{inset-inline-end:41.66666666666667%;}.ant-col-xl-offset-10{margin-inline-start:41.66666666666667%;}.ant-col-xl-order-10{order:10;}.ant-col-xl-9{display:block;flex:0 0 37.5%;max-width:37.5%;}.ant-col-xl-push-9{inset-inline-start:37.5%;}.ant-col-xl-pull-9{inset-inline-end:37.5%;}.ant-col-xl-offset-9{margin-inline-start:37.5%;}.ant-col-xl-order-9{order:9;}.ant-col-xl-8{display:block;flex:0 0 33.33333333333333%;max-width:33.33333333333333%;}.ant-col-xl-push-8{inset-inline-start:33.33333333333333%;}.ant-col-xl-pull-8{inset-inline-end:33.33333333333333%;}.ant-col-xl-offset-8{margin-inline-start:33.33333333333333%;}.ant-col-xl-order-8{order:8;}.ant-col-xl-7{display:block;flex:0 0 29.166666666666668%;max-width:29.166666666666668%;}.ant-col-xl-push-7{inset-inline-start:29.166666666666668%;}.ant-col-xl-pull-7{inset-inline-end:29.166666666666668%;}.ant-col-xl-offset-7{margin-inline-start:29.166666666666668%;}.ant-col-xl-order-7{order:7;}.ant-col-xl-6{display:block;flex:0 0 25%;max-width:25%;}.ant-col-xl-push-6{inset-inline-start:25%;}.ant-col-xl-pull-6{inset-inline-end:25%;}.ant-col-xl-offset-6{margin-inline-start:25%;}.ant-col-xl-order-6{order:6;}.ant-col-xl-5{display:block;flex:0 0 20.833333333333336%;max-width:20.833333333333336%;}.ant-col-xl-push-5{inset-inline-start:20.833333333333336%;}.ant-col-xl-pull-5{inset-inline-end:20.833333333333336%;}.ant-col-xl-offset-5{margin-inline-start:20.833333333333336%;}.ant-col-xl-order-5{order:5;}.ant-col-xl-4{display:block;flex:0 0 16.666666666666664%;max-width:16.666666666666664%;}.ant-col-xl-push-4{inset-inline-start:16.666666666666664%;}.ant-col-xl-pull-4{inset-inline-end:16.666666666666664%;}.ant-col-xl-offset-4{margin-inline-start:16.666666666666664%;}.ant-col-xl-order-4{order:4;}.ant-col-xl-3{display:block;flex:0 0 12.5%;max-width:12.5%;}.ant-col-xl-push-3{inset-inline-start:12.5%;}.ant-col-xl-pull-3{inset-inline-end:12.5%;}.ant-col-xl-offset-3{margin-inline-start:12.5%;}.ant-col-xl-order-3{order:3;}.ant-col-xl-2{display:block;flex:0 0 8.333333333333332%;max-width:8.333333333333332%;}.ant-col-xl-push-2{inset-inline-start:8.333333333333332%;}.ant-col-xl-pull-2{inset-inline-end:8.333333333333332%;}.ant-col-xl-offset-2{margin-inline-start:8.333333333333332%;}.ant-col-xl-order-2{order:2;}.ant-col-xl-1{display:block;flex:0 0 4.166666666666666%;max-width:4.166666666666666%;}.ant-col-xl-push-1{inset-inline-start:4.166666666666666%;}.ant-col-xl-pull-1{inset-inline-end:4.166666666666666%;}.ant-col-xl-offset-1{margin-inline-start:4.166666666666666%;}.ant-col-xl-order-1{order:1;}.ant-col-xl-0{display:none;}.ant-col-push-0{inset-inline-start:auto;}.ant-col-pull-0{inset-inline-end:auto;}.ant-col-xl-push-0{inset-inline-start:auto;}.ant-col-xl-pull-0{inset-inline-end:auto;}.ant-col-xl-offset-0{margin-inline-end:0;}.ant-col-xl-order-0{order:0;}}@media (min-width: 1600px){.ant-col-xxl-24{display:block;flex:0 0 100%;max-width:100%;}.ant-col-xxl-push-24{inset-inline-start:100%;}.ant-col-xxl-pull-24{inset-inline-end:100%;}.ant-col-xxl-offset-24{margin-inline-start:100%;}.ant-col-xxl-order-24{order:24;}.ant-col-xxl-23{display:block;flex:0 0 95.83333333333334%;max-width:95.83333333333334%;}.ant-col-xxl-push-23{inset-inline-start:95.83333333333334%;}.ant-col-xxl-pull-23{inset-inline-end:95.83333333333334%;}.ant-col-xxl-offset-23{margin-inline-start:95.83333333333334%;}.ant-col-xxl-order-23{order:23;}.ant-col-xxl-22{display:block;flex:0 0 91.66666666666666%;max-width:91.66666666666666%;}.ant-col-xxl-push-22{inset-inline-start:91.66666666666666%;}.ant-col-xxl-pull-22{inset-inline-end:91.66666666666666%;}.ant-col-xxl-offset-22{margin-inline-start:91.66666666666666%;}.ant-col-xxl-order-22{order:22;}.ant-col-xxl-21{display:block;flex:0 0 87.5%;max-width:87.5%;}.ant-col-xxl-push-21{inset-inline-start:87.5%;}.ant-col-xxl-pull-21{inset-inline-end:87.5%;}.ant-col-xxl-offset-21{margin-inline-start:87.5%;}.ant-col-xxl-order-21{order:21;}.ant-col-xxl-20{display:block;flex:0 0 83.33333333333334%;max-width:83.33333333333334%;}.ant-col-xxl-push-20{inset-inline-start:83.33333333333334%;}.ant-col-xxl-pull-20{inset-inline-end:83.33333333333334%;}.ant-col-xxl-offset-20{margin-inline-start:83.33333333333334%;}.ant-col-xxl-order-20{order:20;}.ant-col-xxl-19{display:block;flex:0 0 79.16666666666666%;max-width:79.16666666666666%;}.ant-col-xxl-push-19{inset-inline-start:79.16666666666666%;}.ant-col-xxl-pull-19{inset-inline-end:79.16666666666666%;}.ant-col-xxl-offset-19{margin-inline-start:79.16666666666666%;}.ant-col-xxl-order-19{order:19;}.ant-col-xxl-18{display:block;flex:0 0 75%;max-width:75%;}.ant-col-xxl-push-18{inset-inline-start:75%;}.ant-col-xxl-pull-18{inset-inline-end:75%;}.ant-col-xxl-offset-18{margin-inline-start:75%;}.ant-col-xxl-order-18{order:18;}.ant-col-xxl-17{display:block;flex:0 0 70.83333333333334%;max-width:70.83333333333334%;}.ant-col-xxl-push-17{inset-inline-start:70.83333333333334%;}.ant-col-xxl-pull-17{inset-inline-end:70.83333333333334%;}.ant-col-xxl-offset-17{margin-inline-start:70.83333333333334%;}.ant-col-xxl-order-17{order:17;}.ant-col-xxl-16{display:block;flex:0 0 66.66666666666666%;max-width:66.66666666666666%;}.ant-col-xxl-push-16{inset-inline-start:66.66666666666666%;}.ant-col-xxl-pull-16{inset-inline-end:66.66666666666666%;}.ant-col-xxl-offset-16{margin-inline-start:66.66666666666666%;}.ant-col-xxl-order-16{order:16;}.ant-col-xxl-15{display:block;flex:0 0 62.5%;max-width:62.5%;}.ant-col-xxl-push-15{inset-inline-start:62.5%;}.ant-col-xxl-pull-15{inset-inline-end:62.5%;}.ant-col-xxl-offset-15{margin-inline-start:62.5%;}.ant-col-xxl-order-15{order:15;}.ant-col-xxl-14{display:block;flex:0 0 58.333333333333336%;max-width:58.333333333333336%;}.ant-col-xxl-push-14{inset-inline-start:58.333333333333336%;}.ant-col-xxl-pull-14{inset-inline-end:58.333333333333336%;}.ant-col-xxl-offset-14{margin-inline-start:58.333333333333336%;}.ant-col-xxl-order-14{order:14;}.ant-col-xxl-13{display:block;flex:0 0 54.166666666666664%;max-width:54.166666666666664%;}.ant-col-xxl-push-13{inset-inline-start:54.166666666666664%;}.ant-col-xxl-pull-13{inset-inline-end:54.166666666666664%;}.ant-col-xxl-offset-13{margin-inline-start:54.166666666666664%;}.ant-col-xxl-order-13{order:13;}.ant-col-xxl-12{display:block;flex:0 0 50%;max-width:50%;}.ant-col-xxl-push-12{inset-inline-start:50%;}.ant-col-xxl-pull-12{inset-inline-end:50%;}.ant-col-xxl-offset-12{margin-inline-start:50%;}.ant-col-xxl-order-12{order:12;}.ant-col-xxl-11{display:block;flex:0 0 45.83333333333333%;max-width:45.83333333333333%;}.ant-col-xxl-push-11{inset-inline-start:45.83333333333333%;}.ant-col-xxl-pull-11{inset-inline-end:45.83333333333333%;}.ant-col-xxl-offset-11{margin-inline-start:45.83333333333333%;}.ant-col-xxl-order-11{order:11;}.ant-col-xxl-10{display:block;flex:0 0 41.66666666666667%;max-width:41.66666666666667%;}.ant-col-xxl-push-10{inset-inline-start:41.66666666666667%;}.ant-col-xxl-pull-10{inset-inline-end:41.66666666666667%;}.ant-col-xxl-offset-10{margin-inline-start:41.66666666666667%;}.ant-col-xxl-order-10{order:10;}.ant-col-xxl-9{display:block;flex:0 0 37.5%;max-width:37.5%;}.ant-col-xxl-push-9{inset-inline-start:37.5%;}.ant-col-xxl-pull-9{inset-inline-end:37.5%;}.ant-col-xxl-offset-9{margin-inline-start:37.5%;}.ant-col-xxl-order-9{order:9;}.ant-col-xxl-8{display:block;flex:0 0 33.33333333333333%;max-width:33.33333333333333%;}.ant-col-xxl-push-8{inset-inline-start:33.33333333333333%;}.ant-col-xxl-pull-8{inset-inline-end:33.33333333333333%;}.ant-col-xxl-offset-8{margin-inline-start:33.33333333333333%;}.ant-col-xxl-order-8{order:8;}.ant-col-xxl-7{display:block;flex:0 0 29.166666666666668%;max-width:29.166666666666668%;}.ant-col-xxl-push-7{inset-inline-start:29.166666666666668%;}.ant-col-xxl-pull-7{inset-inline-end:29.166666666666668%;}.ant-col-xxl-offset-7{margin-inline-start:29.166666666666668%;}.ant-col-xxl-order-7{order:7;}.ant-col-xxl-6{display:block;flex:0 0 25%;max-width:25%;}.ant-col-xxl-push-6{inset-inline-start:25%;}.ant-col-xxl-pull-6{inset-inline-end:25%;}.ant-col-xxl-offset-6{margin-inline-start:25%;}.ant-col-xxl-order-6{order:6;}.ant-col-xxl-5{display:block;flex:0 0 20.833333333333336%;max-width:20.833333333333336%;}.ant-col-xxl-push-5{inset-inline-start:20.833333333333336%;}.ant-col-xxl-pull-5{inset-inline-end:20.833333333333336%;}.ant-col-xxl-offset-5{margin-inline-start:20.833333333333336%;}.ant-col-xxl-order-5{order:5;}.ant-col-xxl-4{display:block;flex:0 0 16.666666666666664%;max-width:16.666666666666664%;}.ant-col-xxl-push-4{inset-inline-start:16.666666666666664%;}.ant-col-xxl-pull-4{inset-inline-end:16.666666666666664%;}.ant-col-xxl-offset-4{margin-inline-start:16.666666666666664%;}.ant-col-xxl-order-4{order:4;}.ant-col-xxl-3{display:block;flex:0 0 12.5%;max-width:12.5%;}.ant-col-xxl-push-3{inset-inline-start:12.5%;}.ant-col-xxl-pull-3{inset-inline-end:12.5%;}.ant-col-xxl-offset-3{margin-inline-start:12.5%;}.ant-col-xxl-order-3{order:3;}.ant-col-xxl-2{display:block;flex:0 0 8.333333333333332%;max-width:8.333333333333332%;}.ant-col-xxl-push-2{inset-inline-start:8.333333333333332%;}.ant-col-xxl-pull-2{inset-inline-end:8.333333333333332%;}.ant-col-xxl-offset-2{margin-inline-start:8.333333333333332%;}.ant-col-xxl-order-2{order:2;}.ant-col-xxl-1{display:block;flex:0 0 4.166666666666666%;max-width:4.166666666666666%;}.ant-col-xxl-push-1{inset-inline-start:4.166666666666666%;}.ant-col-xxl-pull-1{inset-inline-end:4.166666666666666%;}.ant-col-xxl-offset-1{margin-inline-start:4.166666666666666%;}.ant-col-xxl-order-1{order:1;}.ant-col-xxl-0{display:none;}.ant-col-push-0{inset-inline-start:auto;}.ant-col-pull-0{inset-inline-end:auto;}.ant-col-xxl-push-0{inset-inline-start:auto;}.ant-col-xxl-pull-0{inset-inline-end:auto;}.ant-col-xxl-offset-0{margin-inline-end:0;}.ant-col-xxl-order-0{order:0;}}[class^=\\"ant-comment\\"],[class*=\\" ant-comment\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-comment\\"]::before,[class*=\\" ant-comment\\"]::before,[class^=\\"ant-comment\\"]::after,[class*=\\" ant-comment\\"]::after{box-sizing:border-box;}[class^=\\"ant-comment\\"] [class^=\\"ant-comment\\"],[class*=\\" ant-comment\\"] [class^=\\"ant-comment\\"],[class^=\\"ant-comment\\"] [class*=\\" ant-comment\\"],[class*=\\" ant-comment\\"] [class*=\\" ant-comment\\"]{box-sizing:border-box;}[class^=\\"ant-comment\\"] [class^=\\"ant-comment\\"]::before,[class*=\\" ant-comment\\"] [class^=\\"ant-comment\\"]::before,[class^=\\"ant-comment\\"] [class*=\\" ant-comment\\"]::before,[class*=\\" ant-comment\\"] [class*=\\" ant-comment\\"]::before,[class^=\\"ant-comment\\"] [class^=\\"ant-comment\\"]::after,[class*=\\" ant-comment\\"] [class^=\\"ant-comment\\"]::after,[class^=\\"ant-comment\\"] [class*=\\" ant-comment\\"]::after,[class*=\\" ant-comment\\"] [class*=\\" ant-comment\\"]::after{box-sizing:border-box;}.ant-comment{position:relative;background-color:inherit;}.ant-comment .ant-comment-inner{display:flex;padding:20px 0;}.ant-comment .ant-comment-avatar{position:relative;flex-shrink:0;margin-right:12px;cursor:pointer;}.ant-comment .ant-comment-avatar img{width:32px;height:32px;border-radius:50%;}.ant-comment .ant-comment-content{position:relative;flex:1 1 auto;min-width:1px;font-size:14px;word-wrap:break-word;}.ant-comment .ant-comment-content-author{display:flex;flex-wrap:wrap;justify-content:flex-start;margin-bottom:4px;font-size:14px;}.ant-comment .ant-comment-content-author>a,.ant-comment .ant-comment-content-author>span{padding-right:8px;font-size:12px;line-height:18px;}.ant-comment .ant-comment-content-author-name{color:rgba(255, 255, 255, 0.45);font-size:14px;transition:color 0.3s;}.ant-comment .ant-comment-content-author-name >*{color:rgba(255, 255, 255, 0.45);}.ant-comment .ant-comment-content-author-name >*:hover{color:rgba(255, 255, 255, 0.45);}.ant-comment .ant-comment-content-author-time{color:rgba(255, 255, 255, 0.25);white-space:nowrap;cursor:auto;}.ant-comment .ant-comment-content-detail p{margin-bottom:inherit;white-space:pre-wrap;}.ant-comment .ant-comment-actions{margin-top:12px;margin-bottom:inherit;padding-left:0;}.ant-comment .ant-comment-actions >li{display:inline-block;color:rgba(255, 255, 255, 0.45);}.ant-comment .ant-comment-actions >li >span{margin-right:10px;color:rgba(255, 255, 255, 0.45);font-size:12px;cursor:pointer;transition:color 0.3s;user-select:none;}.ant-comment .ant-comment-actions >li >span:hover{color:rgba(255, 255, 255, 0.65);}.ant-comment .ant-comment-nested{margin-left:44px;}.ant-comment-rtl{direction:rtl;}[class^=\\"ant-picker\\"],[class*=\\" ant-picker\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-picker\\"]::before,[class*=\\" ant-picker\\"]::before,[class^=\\"ant-picker\\"]::after,[class*=\\" ant-picker\\"]::after{box-sizing:border-box;}[class^=\\"ant-picker\\"] [class^=\\"ant-picker\\"],[class*=\\" ant-picker\\"] [class^=\\"ant-picker\\"],[class^=\\"ant-picker\\"] [class*=\\" ant-picker\\"],[class*=\\" ant-picker\\"] [class*=\\" ant-picker\\"]{box-sizing:border-box;}[class^=\\"ant-picker\\"] [class^=\\"ant-picker\\"]::before,[class*=\\" ant-picker\\"] [class^=\\"ant-picker\\"]::before,[class^=\\"ant-picker\\"] [class*=\\" ant-picker\\"]::before,[class*=\\" ant-picker\\"] [class*=\\" ant-picker\\"]::before,[class^=\\"ant-picker\\"] [class^=\\"ant-picker\\"]::after,[class*=\\" ant-picker\\"] [class^=\\"ant-picker\\"]::after,[class^=\\"ant-picker\\"] [class*=\\" ant-picker\\"]::after,[class*=\\" ant-picker\\"] [class*=\\" ant-picker\\"]::after{box-sizing:border-box;}.ant-picker{box-sizing:border-box;margin:0;padding:4px 11px 4px;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;display:inline-flex;align-items:center;background:#141414;border:1px solid #424242;border-radius:6px;transition:border 0.2s,box-shadow 0.2s;}.ant-picker:hover,.ant-picker-focused{border-color:#198016;border-inline-end-width:1px;}.ant-picker-focused{border-color:#198016;box-shadow:0 0 0 2px rgba(0, 53, 0, 0.15);border-inline-end-width:1px;outline:0;}.ant-picker.ant-picker-disabled{background:rgba(255, 255, 255, 0.08);border-color:#424242;cursor:not-allowed;}.ant-picker.ant-picker-disabled .ant-picker-suffix{color:rgba(255, 255, 255, 0.25);}.ant-picker.ant-picker-borderless{background-color:transparent!important;border-color:transparent!important;box-shadow:none!important;}.ant-picker .ant-picker-input{position:relative;display:inline-flex;align-items:center;width:100%;}.ant-picker .ant-picker-input >input{position:relative;display:inline-block;width:100%;min-width:1px;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;background-color:#141414;background-image:none;border-width:1px;border-style:solid;border-color:#424242;border-radius:6px;transition:all 0.2s;flex:auto;height:auto;background:transparent;border:0;}.ant-picker .ant-picker-input >input::-moz-placeholder{opacity:1;}.ant-picker .ant-picker-input >input::placeholder{color:rgba(255, 255, 255, 0.25);user-select:none;}.ant-picker .ant-picker-input >input:placeholder-shown{text-overflow:ellipsis;}.ant-picker .ant-picker-input >input:hover{border-color:#198016;border-inline-end-width:1px;}.ant-picker .ant-picker-input >input:focus,.ant-picker .ant-picker-input >input-focused{border-color:#198016;box-shadow:0 0 0 2px rgba(0, 53, 0, 0.15);border-inline-end-width:1px;outline:0;}.ant-picker .ant-picker-input >input-disabled,.ant-picker .ant-picker-input >input[disabled]{color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);border-color:#424242;box-shadow:none;cursor:not-allowed;opacity:1;}.ant-picker .ant-picker-input >input-disabled:hover,.ant-picker .ant-picker-input >input[disabled]:hover{border-color:#424242;border-inline-end-width:1px;}.ant-picker .ant-picker-input >input-borderless,.ant-picker .ant-picker-input >input-borderless:hover,.ant-picker .ant-picker-input >input-borderless:focus,.ant-picker .ant-picker-input >input-borderless-focused,.ant-picker .ant-picker-input >input-borderless-disabled,.ant-picker .ant-picker-input >input-borderless[disabled]{background-color:transparent;border:none;box-shadow:none;}textarea.ant-picker .ant-picker-input >input{max-width:100%;height:auto;min-height:32px;line-height:1.5714285714285714;vertical-align:bottom;transition:all 0.3s,height 0s;resize:vertical;}.ant-picker .ant-picker-input >input-lg{padding:7px 11px;font-size:16px;line-height:1.5;border-radius:8px;}.ant-picker .ant-picker-input >input-sm{padding:0px 7px;border-radius:4px;}.ant-picker .ant-picker-input >input-rtl{direction:rtl;}.ant-picker .ant-picker-input >input-textarea-rtl{direction:rtl;}.ant-picker .ant-picker-input >input:focus{box-shadow:none;}.ant-picker .ant-picker-input >input[disabled]{background:transparent;}.ant-picker .ant-picker-input:hover .ant-picker-clear{opacity:1;}.ant-picker .ant-picker-input-placeholder >input{color:rgba(255, 255, 255, 0.25);}.ant-picker-large{padding:6.5px 11px 6.5px;}.ant-picker-large .ant-picker-input>input{font-size:16px;}.ant-picker-small{padding:0px 7px 0px;}.ant-picker .ant-picker-suffix{display:flex;flex:none;align-self:center;margin-inline-start:4px;color:rgba(255, 255, 255, 0.25);line-height:1;pointer-events:none;}.ant-picker .ant-picker-suffix >*{vertical-align:top;}.ant-picker .ant-picker-suffix >*:not(:last-child){margin-inline-end:8px;}.ant-picker .ant-picker-clear{position:absolute;top:50%;inset-inline-end:0;color:rgba(255, 255, 255, 0.25);line-height:1;background:#141414;transform:translateY(-50%);cursor:pointer;opacity:0;transition:opacity 0.2s,color 0.2s;}.ant-picker .ant-picker-clear >*{vertical-align:top;}.ant-picker .ant-picker-clear:hover{color:rgba(255, 255, 255, 0.45);}.ant-picker .ant-picker-separator{position:relative;display:inline-block;width:1em;height:16px;color:rgba(255, 255, 255, 0.25);font-size:16px;vertical-align:top;cursor:default;}.ant-picker-focused .ant-picker .ant-picker-separator{color:rgba(255, 255, 255, 0.45);}.ant-picker-disabled .ant-picker-range-separator .ant-picker .ant-picker-separator{cursor:not-allowed;}.ant-picker-range{position:relative;display:inline-flex;}.ant-picker-range .ant-picker-clear{inset-inline-end:11px;}.ant-picker-range:hover .ant-picker-clear{opacity:1;}.ant-picker-range .ant-picker-active-bar{bottom:-1px;height:2px;margin-inline-start:11px;background:#037003;opacity:0;transition:all 0.3s ease-out;pointer-events:none;}.ant-picker-range.ant-picker-focused .ant-picker-active-bar{opacity:1;}.ant-picker-range .ant-picker-range-separator{align-items:center;padding:0 8px;line-height:1;}.ant-picker-range.ant-picker-small .ant-picker-clear{inset-inline-end:7px;}.ant-picker-range.ant-picker-small .ant-picker-active-bar{margin-inline-start:7px;}.ant-picker-dropdown{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:absolute;top:-9999px;left:-9999px;z-index:1050;}.ant-picker-dropdown .ant-picker-panel{display:inline-flex;flex-direction:column;text-align:center;background:#141414;border:1px solid rgba(253, 253, 253, 0.12);border-radius:8px;outline:none;}.ant-picker-dropdown .ant-picker-panel-focused{border-color:#037003;}.ant-picker-dropdown .ant-picker-panel-rtl{direction:rtl;}.ant-picker-dropdown .ant-picker-panel-rtl .ant-picker-prev-icon,.ant-picker-dropdown .ant-picker-panel-rtl .ant-picker-super-prev-icon{transform:rotate(45deg);}.ant-picker-dropdown .ant-picker-panel-rtl .ant-picker-next-icon,.ant-picker-dropdown .ant-picker-panel-rtl .ant-picker-super-next-icon{transform:rotate(-135deg);}.ant-picker-dropdown .ant-picker-decade-panel,.ant-picker-dropdown .ant-picker-year-panel,.ant-picker-dropdown .ant-picker-quarter-panel,.ant-picker-dropdown .ant-picker-month-panel,.ant-picker-dropdown .ant-picker-week-panel,.ant-picker-dropdown .ant-picker-date-panel,.ant-picker-dropdown .ant-picker-time-panel{display:flex;flex-direction:column;width:280px;}.ant-picker-dropdown .ant-picker-header{display:flex;padding:0 8px;color:rgba(255, 255, 255, 0.85);border-bottom:1px solid rgba(253, 253, 253, 0.12);}.ant-picker-dropdown .ant-picker-header >*{flex:none;}.ant-picker-dropdown .ant-picker-header button{padding:0;color:rgba(255, 255, 255, 0.45);line-height:40px;background:transparent;border:0;cursor:pointer;transition:color 0.2s;}.ant-picker-dropdown .ant-picker-header >button{min-width:1.6em;font-size:14px;}.ant-picker-dropdown .ant-picker-header >button:hover{color:rgba(255, 255, 255, 0.85);}.ant-picker-dropdown .ant-picker-header-view{flex:auto;font-weight:600;line-height:40px;}.ant-picker-dropdown .ant-picker-header-view button{color:inherit;font-weight:inherit;vertical-align:top;}.ant-picker-dropdown .ant-picker-header-view button:not(:first-child){margin-inline-start:8px;}.ant-picker-dropdown .ant-picker-header-view button:hover{color:#037003;}.ant-picker-dropdown .ant-picker-prev-icon,.ant-picker-dropdown .ant-picker-next-icon,.ant-picker-dropdown .ant-picker-super-prev-icon,.ant-picker-dropdown .ant-picker-super-next-icon{position:relative;display:inline-block;width:7px;height:7px;}.ant-picker-dropdown .ant-picker-prev-icon::before,.ant-picker-dropdown .ant-picker-next-icon::before,.ant-picker-dropdown .ant-picker-super-prev-icon::before,.ant-picker-dropdown .ant-picker-super-next-icon::before{position:absolute;top:0;inset-inline-start:0;display:inline-block;width:7px;height:7px;border:0 solid currentcolor;border-block-start-width:1.5px;border-block-end-width:0;border-inline-start-width:1.5px;border-inline-end-width:0;content:\\"\\";}.ant-picker-dropdown .ant-picker-super-prev-icon::after,.ant-picker-dropdown .ant-picker-super-next-icon::after{position:absolute;top:4px;inset-inline-start:4px;display:inline-block;width:7px;height:7px;border:0 solid currentcolor;border-block-start-width:1.5px;border-block-end-width:0;border-inline-start-width:1.5px;border-inline-end-width:0;content:\\"\\";}.ant-picker-dropdown .ant-picker-prev-icon,.ant-picker-dropdown .ant-picker-super-prev-icon{transform:rotate(-45deg);}.ant-picker-dropdown .ant-picker-next-icon,.ant-picker-dropdown .ant-picker-super-next-icon{transform:rotate(135deg);}.ant-picker-dropdown .ant-picker-content{width:100%;table-layout:fixed;border-collapse:collapse;}.ant-picker-dropdown .ant-picker-content th,.ant-picker-dropdown .ant-picker-content td{position:relative;min-width:24px;font-weight:normal;}.ant-picker-dropdown .ant-picker-content th{height:32px;color:rgba(255, 255, 255, 0.85);vertical-align:middle;}.ant-picker-dropdown .ant-picker-cell{padding:4px 0;color:rgba(255, 255, 255, 0.25);cursor:pointer;}.ant-picker-dropdown .ant-picker-cell-in-view{color:rgba(255, 255, 255, 0.85);}.ant-picker-dropdown .ant-picker-cell::before{position:absolute;top:50%;inset-inline-start:0;inset-inline-end:0;z-index:1;height:24px;transform:translateY(-50%);transition:all 0.3s;content:\\"\\";}.ant-picker-dropdown .ant-picker-cell .ant-picker-cell-inner{position:relative;z-index:2;display:inline-block;min-width:24px;height:24px;line-height:24px;border-radius:4px;transition:background 0.2s,border 0.2s;}.ant-picker-dropdown .ant-picker-cell:hover:not(.ant-picker-cell-in-view) .ant-picker-cell-inner,.ant-picker-dropdown .ant-picker-cell:hover:not(.ant-picker-cell-selected):not(.ant-picker-cell-range-start):not(.ant-picker-cell-range-end):not(.ant-picker-cell-range-hover-start):not(.ant-picker-cell-range-hover-end) .ant-picker-cell-inner{background:rgba(255, 255, 255, 0.08);}.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-today .ant-picker-cell-inner::before{position:absolute;top:0;inset-inline-end:0;bottom:0;inset-inline-start:0;z-index:1;border:1px solid #037003;border-radius:4px;content:\\"\\";}.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-in-range{position:relative;}.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-in-range::before{background:#111911;}.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-selected .ant-picker-cell-inner,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-start .ant-picker-cell-inner,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-end .ant-picker-cell-inner{color:#fff;background:#037003;}.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-start:not(.ant-picker-cell-range-start-single)::before,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-end:not(.ant-picker-cell-range-end-single)::before{background:#111911;}.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-start::before{inset-inline-start:50%;}.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-end::before{inset-inline-end:50%;}.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:not(.ant-picker-cell-in-range):not(.ant-picker-cell-range-start):not(.ant-picker-cell-range-end)::after,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-hover-end:not(.ant-picker-cell-in-range):not(.ant-picker-cell-range-start):not(.ant-picker-cell-range-end)::after,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-hover-start.ant-picker-cell-range-start-single::after,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-hover-start.ant-picker-cell-range-start.ant-picker-cell-range-end.ant-picker-cell-range-end-near-hover::after,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-hover-end.ant-picker-cell-range-start.ant-picker-cell-range-end.ant-picker-cell-range-start-near-hover::after,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-hover-end.ant-picker-cell-range-end-single::after,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-hover:not(.ant-picker-cell-in-range)::after{position:absolute;top:50%;z-index:0;height:24px;border-top:1px dashed #06d306;border-bottom:1px dashed #06d306;transform:translateY(-50%);transition:all 0.3s;content:\\"\\";}.ant-picker-dropdown .ant-picker-cell-range-hover-start::after,.ant-picker-dropdown .ant-picker-cell-range-hover-end::after,.ant-picker-dropdown .ant-picker-cell-range-hover::after{inset-inline-end:0;inset-inline-start:2px;}.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover::before,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-start.ant-picker-cell-range-hover::before,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-end.ant-picker-cell-range-hover::before,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-start:not(.ant-picker-cell-range-start-single).ant-picker-cell-range-hover-start::before,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-end:not(.ant-picker-cell-range-end-single).ant-picker-cell-range-hover-end::before,.ant-picker-panel>:not(.ant-picker-date-panel) .ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-start::before,.ant-picker-panel>:not(.ant-picker-date-panel) .ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-end::before{background:#2cf92c;}.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-start:not(.ant-picker-cell-range-start-single):not(.ant-picker-cell-range-end) .ant-picker-cell-inner{border-start-start-radius:4px;border-end-start-radius:4px;border-start-end-radius:0;border-end-end-radius:0;}.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-end:not(.ant-picker-cell-range-end-single):not(.ant-picker-cell-range-start) .ant-picker-cell-inner{border-start-start-radius:0;border-end-start-radius:0;border-start-end-radius:4px;border-end-end-radius:4px;}.ant-picker-dropdown .ant-picker-cell-range-hover.ant-picker-cell-range-end::after{inset-inline-start:50%;}tr>.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-hover:first-child::after,tr>.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-hover-end:first-child::after,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-start.ant-picker-cell-range-hover-edge-start.ant-picker-cell-range-hover-edge-start-near-range::after,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-hover-edge-start:not(.ant-picker-cell-range-hover-edge-start-near-range)::after,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-hover-start::after{inset-inline-start:6px;border-inline-start:1px dashed #06d306;border-start-start-radius:1px;border-end-start-radius:1px;}tr>.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-hover:last-child::after,tr>.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::after,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-end.ant-picker-cell-range-hover-edge-end.ant-picker-cell-range-hover-edge-end-near-range::after,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-hover-edge-end:not(.ant-picker-cell-range-hover-edge-end-near-range)::after,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-hover-end::after{inset-inline-end:6px;border-inline-end:1px dashed #06d306;border-start-end-radius:1px;border-end-end-radius:1px;}.ant-picker-dropdown .ant-picker-cell-disabled{color:rgba(255, 255, 255, 0.25);pointer-events:none;}.ant-picker-dropdown .ant-picker-cell-disabled .ant-picker-cell-inner{background:transparent;}.ant-picker-dropdown .ant-picker-cell-disabled::before{background:rgba(255, 255, 255, 0.08);}.ant-picker-dropdown .ant-picker-cell-disabled.ant-picker-cell-today .ant-picker-cell-inner::before{border-color:rgba(255, 255, 255, 0.25);}.ant-picker-dropdown .ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-start .ant-picker-cell-inner::after,.ant-picker-dropdown .ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-end .ant-picker-cell-inner::after{position:absolute;top:0;bottom:0;z-index:-1;background:#2cf92c;transition:all 0.3s;content:\\"\\";}.ant-picker-dropdown .ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-start .ant-picker-cell-inner::after{inset-inline-end:-6px;inset-inline-start:0;}.ant-picker-dropdown .ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-end .ant-picker-cell-inner::after{inset-inline-end:0;inset-inline-start:-6px;}.ant-picker-dropdown .ant-picker-range-hover.ant-picker-range-start::after{inset-inline-end:50%;}.ant-picker-dropdown .ant-picker-decade-panel .ant-picker-content,.ant-picker-dropdown .ant-picker-year-panel .ant-picker-content,.ant-picker-dropdown .ant-picker-quarter-panel .ant-picker-content,.ant-picker-dropdown .ant-picker-month-panel .ant-picker-content{height:264px;}.ant-picker-dropdown .ant-picker-decade-panel .ant-picker-cell-inner,.ant-picker-dropdown .ant-picker-year-panel .ant-picker-cell-inner,.ant-picker-dropdown .ant-picker-quarter-panel .ant-picker-cell-inner,.ant-picker-dropdown .ant-picker-month-panel .ant-picker-cell-inner{padding:0 8px;}.ant-picker-dropdown .ant-picker-quarter-panel .ant-picker-content{height:56px;}.ant-picker-dropdown .ant-picker-panel .ant-picker-footer{border-top:1px solid rgba(253, 253, 253, 0.12);}.ant-picker-dropdown .ant-picker-footer{width:min-content;min-width:100%;line-height:38px;text-align:center;}.ant-picker-dropdown .ant-picker-footer-extra{padding:0 12;line-height:38px;text-align:start;}.ant-picker-dropdown .ant-picker-footer-extra:not(:last-child){border-bottom:1px solid rgba(253, 253, 253, 0.12);}.ant-picker-dropdown .ant-picker-now{text-align:start;}.ant-picker-dropdown .ant-picker-today-btn{color:#1668dc;}.ant-picker-dropdown .ant-picker-today-btn:hover{color:#15417e;}.ant-picker-dropdown .ant-picker-today-btn:active{color:#1554ad;}.ant-picker-dropdown .ant-picker-today-btn.ant-picker-today-btn-disabled{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;}.ant-picker-dropdown .ant-picker-decade-panel .ant-picker-cell-inner{padding:0 4px;}.ant-picker-dropdown .ant-picker-decade-panel .ant-picker-cell::before{display:none;}.ant-picker-dropdown .ant-picker-year-panel .ant-picker-body,.ant-picker-dropdown .ant-picker-quarter-panel .ant-picker-body,.ant-picker-dropdown .ant-picker-month-panel .ant-picker-body{padding:0 8px;}.ant-picker-dropdown .ant-picker-year-panel .ant-picker-cell-inner,.ant-picker-dropdown .ant-picker-quarter-panel .ant-picker-cell-inner,.ant-picker-dropdown .ant-picker-month-panel .ant-picker-cell-inner{width:60px;}.ant-picker-dropdown .ant-picker-year-panel .ant-picker-cell-range-hover-start::after,.ant-picker-dropdown .ant-picker-quarter-panel .ant-picker-cell-range-hover-start::after,.ant-picker-dropdown .ant-picker-month-panel .ant-picker-cell-range-hover-start::after{inset-inline-start:16px;border-inline-start:1px dashed #06d306;border-start-start-radius:4px;border-bottom-start-radius:4px;border-start-end-radius:0;border-bottom-end-radius:0;}.ant-picker-panel-rtl .ant-picker-dropdown .ant-picker-year-panel .ant-picker-cell-range-hover-start::after,.ant-picker-panel-rtl .ant-picker-dropdown .ant-picker-quarter-panel .ant-picker-cell-range-hover-start::after,.ant-picker-panel-rtl .ant-picker-dropdown .ant-picker-month-panel .ant-picker-cell-range-hover-start::after{inset-inline-end:16px;border-inline-end:1px dashed #06d306;border-start-start-radius:0;border-bottom-start-radius:0;border-start-end-radius:4px;border-bottom-end-radius:4px;}.ant-picker-dropdown .ant-picker-year-panel .ant-picker-cell-range-hover-end::after,.ant-picker-dropdown .ant-picker-quarter-panel .ant-picker-cell-range-hover-end::after,.ant-picker-dropdown .ant-picker-month-panel .ant-picker-cell-range-hover-end::after{inset-inline-end:16px;border-inline-end:1px dashed #06d306;border-start-start-radius:0;border-end-start-radius:0;border-start-end-radius:6px;border-end-end-radius:6px;}.ant-picker-panel-rtl .ant-picker-dropdown .ant-picker-year-panel .ant-picker-cell-range-hover-end::after,.ant-picker-panel-rtl .ant-picker-dropdown .ant-picker-quarter-panel .ant-picker-cell-range-hover-end::after,.ant-picker-panel-rtl .ant-picker-dropdown .ant-picker-month-panel .ant-picker-cell-range-hover-end::after{inset-inline-start:16px;border-inline-start:1px dashed #06d306;border-start-start-radius:6px;border-end-start-radius:6px;border-start-end-radius:0;border-end-end-radius:0;}.ant-picker-dropdown .ant-picker-week-panel .ant-picker-body{padding:8px 12px;}.ant-picker-dropdown .ant-picker-week-panel .ant-picker-cell:hover .ant-picker-cell-inner,.ant-picker-dropdown .ant-picker-week-panel .ant-picker-cell-selected .ant-picker-cell-inner,.ant-picker-dropdown .ant-picker-week-panel .ant-picker-cell .ant-picker-cell-inner{background:transparent!important;}.ant-picker-dropdown .ant-picker-week-panel-row td{transition:background 0.2s;}.ant-picker-dropdown .ant-picker-week-panel-row td:first-child{border-start-start-radius:4px;border-end-start-radius:4px;}.ant-picker-dropdown .ant-picker-week-panel-row td:last-child{border-start-end-radius:4px;border-end-end-radius:4px;}.ant-picker-dropdown .ant-picker-week-panel-row:hover td{background:rgba(255, 255, 255, 0.08);}.ant-picker-dropdown .ant-picker-week-panel-row-selected td,.ant-picker-dropdown .ant-picker-week-panel-row-selected:hover td{background:#037003;}.ant-picker-dropdown .ant-picker-week-panel-row-selected td.ant-picker-cell-week,.ant-picker-dropdown .ant-picker-week-panel-row-selected:hover td.ant-picker-cell-week{color:#ffffff;}.ant-picker-dropdown .ant-picker-week-panel-row-selected td.ant-picker-cell-today .ant-picker-cell-inner::before,.ant-picker-dropdown .ant-picker-week-panel-row-selected:hover td.ant-picker-cell-today .ant-picker-cell-inner::before{border-color:#fff;}.ant-picker-dropdown .ant-picker-week-panel-row-selected td .ant-picker-cell-inner,.ant-picker-dropdown .ant-picker-week-panel-row-selected:hover td .ant-picker-cell-inner{color:#fff;}.ant-picker-dropdown .ant-picker-date-panel .ant-picker-body{padding:8px 12px;}.ant-picker-dropdown .ant-picker-date-panel .ant-picker-content{width:252px;}.ant-picker-dropdown .ant-picker-date-panel .ant-picker-content th{width:36px;}.ant-picker-dropdown .ant-picker-datetime-panel{display:flex;}.ant-picker-dropdown .ant-picker-datetime-panel .ant-picker-time-panel{border-inline-start:1px solid rgba(253, 253, 253, 0.12);}.ant-picker-dropdown .ant-picker-datetime-panel .ant-picker-date-panel,.ant-picker-dropdown .ant-picker-datetime-panel .ant-picker-time-panel{transition:opacity 0.3s;}.ant-picker-dropdown .ant-picker-datetime-panel-active .ant-picker-date-panel,.ant-picker-dropdown .ant-picker-datetime-panel-active .ant-picker-time-panel{opacity:0.3;}.ant-picker-dropdown .ant-picker-datetime-panel-active .ant-picker-date-panel-active,.ant-picker-dropdown .ant-picker-datetime-panel-active .ant-picker-time-panel-active{opacity:1;}.ant-picker-dropdown .ant-picker-time-panel{width:auto;min-width:auto;direction:ltr;}.ant-picker-dropdown .ant-picker-time-panel .ant-picker-content{display:flex;flex:auto;height:224px;}.ant-picker-dropdown .ant-picker-time-panel-column{flex:1 0 auto;width:56px;margin:4px 0;padding:0;overflow-y:hidden;text-align:start;list-style:none;transition:background 0.2s;overflow-x:hidden;}.ant-picker-dropdown .ant-picker-time-panel-column::after{display:block;height:196px;content:\\"\\";}.ant-picker-dropdown .ant-picker-time-panel-column:not(:first-child){border-inline-start:1px solid rgba(253, 253, 253, 0.12);}.ant-picker-dropdown .ant-picker-time-panel-column-active{background:#111911;}.ant-picker-dropdown .ant-picker-time-panel-column:hover{overflow-y:auto;}.ant-picker-dropdown .ant-picker-time-panel-column >li{margin:0;padding:0;}.ant-picker-dropdown .ant-picker-time-panel-column >li.ant-picker-time-panel-cell{margin-inline:4px;}.ant-picker-dropdown .ant-picker-time-panel-column >li.ant-picker-time-panel-cell .ant-picker-time-panel-cell-inner{display:block;width:48px;height:28px;margin:0;padding-block:0;padding-inline-end:0;padding-inline-start:14px;color:rgba(255, 255, 255, 0.85);line-height:28px;border-radius:4px;cursor:pointer;transition:background 0.2s;}.ant-picker-dropdown .ant-picker-time-panel-column >li.ant-picker-time-panel-cell .ant-picker-time-panel-cell-inner:hover{background:rgba(255, 255, 255, 0.08);}.ant-picker-dropdown .ant-picker-time-panel-column >li.ant-picker-time-panel-cell-selected .ant-picker-time-panel-cell-inner{background:#111911;}.ant-picker-dropdown .ant-picker-time-panel-column >li.ant-picker-time-panel-cell-disabled .ant-picker-time-panel-cell-inner{color:rgba(255, 255, 255, 0.25);background:transparent;cursor:not-allowed;}.ant-picker-dropdown .ant-picker-datetime-panel .ant-picker-time-panel-column:after{height:204px;}.ant-picker-dropdown.ant-picker-dropdown-hidden{display:none;}.ant-picker-dropdown.ant-picker-dropdown-placement-bottomLeft .ant-picker-range-arrow{top:0;display:block;transform:translateY(-100%);}.ant-picker-dropdown.ant-picker-dropdown-placement-topLeft .ant-picker-range-arrow{bottom:0;display:block;transform:translateY(100%) rotate(180deg);}.ant-picker-dropdown.ant-slide-up-enter.ant-slide-up-enter-active.ant-picker-dropdown-placement-topLeft,.ant-picker-dropdown.ant-slide-up-enter.ant-slide-up-enter-active.ant-picker-dropdown-placement-topRight,.ant-picker-dropdown.ant-slide-up-appear.ant-slide-up-appear-active.ant-picker-dropdown-placement-topLeft,.ant-picker-dropdown.ant-slide-up-appear.ant-slide-up-appear-active.ant-picker-dropdown-placement-topRight{animation-name:antSlideDownIn;}.ant-picker-dropdown.ant-slide-up-enter.ant-slide-up-enter-active.ant-picker-dropdown-placement-bottomLeft,.ant-picker-dropdown.ant-slide-up-enter.ant-slide-up-enter-active.ant-picker-dropdown-placement-bottomRight,.ant-picker-dropdown.ant-slide-up-appear.ant-slide-up-appear-active.ant-picker-dropdown-placement-bottomLeft,.ant-picker-dropdown.ant-slide-up-appear.ant-slide-up-appear-active.ant-picker-dropdown-placement-bottomRight{animation-name:antSlideUpIn;}.ant-picker-dropdown.ant-slide-up-leave.ant-slide-up-leave-active.ant-picker-dropdown-placement-topLeft,.ant-picker-dropdown.ant-slide-up-leave.ant-slide-up-leave-active.ant-picker-dropdown-placement-topRight{animation-name:antSlideDownOut;}.ant-picker-dropdown.ant-slide-up-leave.ant-slide-up-leave-active.ant-picker-dropdown-placement-bottomLeft,.ant-picker-dropdown.ant-slide-up-leave.ant-slide-up-leave-active.ant-picker-dropdown-placement-bottomRight{animation-name:antSlideUpOut;}.ant-picker-dropdown .ant-picker-panel>.ant-picker-time-panel{padding-top:4px;}.ant-picker-dropdown .ant-picker-ranges{margin-bottom:0;padding:4px 12px;overflow:hidden;line-height:34px;text-align:start;list-style:none;display:flex;justify-content:space-between;}.ant-picker-dropdown .ant-picker-ranges >li{display:inline-block;}.ant-picker-dropdown .ant-picker-ranges .ant-picker-preset>.ant-tag-blue{color:#037003;background:#111911;border-color:#0e340e;cursor:pointer;}.ant-picker-dropdown .ant-picker-ranges .ant-picker-ok{margin-inline-start:auto;}.ant-picker-dropdown .ant-picker-range-wrapper{display:flex;position:relative;}.ant-picker-dropdown .ant-picker-range-arrow{position:absolute;z-index:1;display:none;margin-inline-start:16.5px;transition:left 0.3s ease-out;pointer-events:none;width:16px;height:16px;overflow:hidden;}.ant-picker-dropdown .ant-picker-range-arrow::after{content:\\"\\";position:absolute;width:8.970562748477143px;height:8.970562748477143px;bottom:0;inset-inline:0;margin:auto;border-radius:0 0 2px 0;transform:translateY(50%) rotate(-135deg);box-shadow:3px 3px 7px rgba(0, 0, 0, 0.1);z-index:0;background:transparent;}.ant-picker-dropdown .ant-picker-range-arrow::before{position:absolute;bottom:0;inset-inline-start:0;width:16px;height:8px;background:#1f1f1f;clip-path:polygon(1.6568542494923806px 100%, 50% 1.6568542494923806px, 14.34314575050762px 100%, 1.6568542494923806px 100%);clip-path:path('M 0 8 A 4 4 0 0 0 2.82842712474619 6.82842712474619 L 6.585786437626905 3.0710678118654755 A 2 2 0 0 1 9.414213562373096 3.0710678118654755 L 13.17157287525381 6.82842712474619 A 4 4 0 0 0 16 8 Z');content:\\"\\";}.ant-picker-dropdown .ant-picker-panel-container{overflow:hidden;vertical-align:top;background:#1f1f1f;border-radius:8px;box-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08),0 3px 6px -4px rgba(0, 0, 0, 0.12),0 9px 28px 8px rgba(0, 0, 0, 0.05);transition:margin 0.3s;}.ant-picker-dropdown .ant-picker-panel-container .ant-picker-panel-layout{display:flex;flex-wrap:nowrap;align-items:stretch;}.ant-picker-dropdown .ant-picker-panel-container .ant-picker-presets{display:flex;flex-direction:column;min-width:120px;max-width:200px;}.ant-picker-dropdown .ant-picker-panel-container .ant-picker-presets ul{height:0;flex:auto;list-style:none;overflow:auto;margin:0;padding:8px;border-inline-end:1px solid rgba(253, 253, 253, 0.12);}.ant-picker-dropdown .ant-picker-panel-container .ant-picker-presets ul li{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;border-radius:4px;padding-inline:8px;padding-block:1px;cursor:pointer;transition:all 0.3s;}.ant-picker-dropdown .ant-picker-panel-container .ant-picker-presets ul li +li{margin-top:8px;}.ant-picker-dropdown .ant-picker-panel-container .ant-picker-presets ul li:hover{background:rgba(255, 255, 255, 0.08);}.ant-picker-dropdown .ant-picker-panel-container .ant-picker-panels{display:inline-flex;flex-wrap:nowrap;direction:ltr;}.ant-picker-dropdown .ant-picker-panel-container .ant-picker-panels .ant-picker-panel{border-width:0 0 1px;}.ant-picker-dropdown .ant-picker-panel-container .ant-picker-panels:last-child .ant-picker-panel{border-width:0;}.ant-picker-dropdown .ant-picker-panel-container .ant-picker-panel{vertical-align:top;background:transparent;border-radius:0;border-width:0;}.ant-picker-dropdown .ant-picker-panel-container .ant-picker-panel .ant-picker-content,.ant-picker-dropdown .ant-picker-panel-container .ant-picker-panel table{text-align:center;}.ant-picker-dropdown .ant-picker-panel-container .ant-picker-panel-focused{border-color:#424242;}.ant-picker-dropdown-range{padding:10.666666666666666px 0;}.ant-picker-dropdown-range-hidden{display:none;}.ant-picker-rtl{direction:rtl;}.ant-picker-rtl .ant-picker-separator{transform:rotate(180deg);}.ant-picker-rtl .ant-picker-footer-extra{direction:rtl;}.ant-slide-up-enter,.ant-slide-up-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-slide-up-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-slide-up-enter.ant-slide-up-enter-active,.ant-slide-up-appear.ant-slide-up-appear-active{animation-name:antSlideUpIn;animation-play-state:running;}.ant-slide-up-leave.ant-slide-up-leave-active{animation-name:antSlideUpOut;animation-play-state:running;pointer-events:none;}.ant-slide-up-enter,.ant-slide-up-appear{transform:scale(0);transform-origin:0% 0%;opacity:0;animation-timing-function:cubic-bezier(0.23, 1, 0.32, 1);}.ant-slide-up-leave{animation-timing-function:cubic-bezier(0.755, 0.05, 0.855, 0.06);}.ant-slide-down-enter,.ant-slide-down-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-slide-down-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-slide-down-enter.ant-slide-down-enter-active,.ant-slide-down-appear.ant-slide-down-appear-active{animation-name:antSlideDownIn;animation-play-state:running;}.ant-slide-down-leave.ant-slide-down-leave-active{animation-name:antSlideDownOut;animation-play-state:running;pointer-events:none;}.ant-slide-down-enter,.ant-slide-down-appear{transform:scale(0);transform-origin:0% 0%;opacity:0;animation-timing-function:cubic-bezier(0.23, 1, 0.32, 1);}.ant-slide-down-leave{animation-timing-function:cubic-bezier(0.755, 0.05, 0.855, 0.06);}.ant-move-up-enter,.ant-move-up-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-move-up-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-move-up-enter.ant-move-up-enter-active,.ant-move-up-appear.ant-move-up-appear-active{animation-name:antMoveUpIn;animation-play-state:running;}.ant-move-up-leave.ant-move-up-leave-active{animation-name:antMoveUpOut;animation-play-state:running;pointer-events:none;}.ant-move-up-enter,.ant-move-up-appear{opacity:0;animation-timing-function:cubic-bezier(0.08, 0.82, 0.17, 1);}.ant-move-up-leave{animation-timing-function:cubic-bezier(0.78, 0.14, 0.15, 0.86);}.ant-move-down-enter,.ant-move-down-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-move-down-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-move-down-enter.ant-move-down-enter-active,.ant-move-down-appear.ant-move-down-appear-active{animation-name:antMoveDownIn;animation-play-state:running;}.ant-move-down-leave.ant-move-down-leave-active{animation-name:antMoveDownOut;animation-play-state:running;pointer-events:none;}.ant-move-down-enter,.ant-move-down-appear{opacity:0;animation-timing-function:cubic-bezier(0.08, 0.82, 0.17, 1);}.ant-move-down-leave{animation-timing-function:cubic-bezier(0.78, 0.14, 0.15, 0.86);}.ant-picker-status-error.ant-picker,.ant-picker-status-error.ant-picker:not([disabled]):hover{background-color:#141414;border-color:#dc4446;}.ant-picker-status-error.ant-picker-focused,.ant-picker-status-error.ant-picker:focus{border-color:#dc4446;box-shadow:0 0 0 2px rgba(238, 38, 56, 0.11);border-inline-end-width:1px;outline:0;}.ant-picker-status-error.ant-picker .ant-picker-active-bar{background:#dc4446;}.ant-picker-status-warning.ant-picker,.ant-picker-status-warning.ant-picker:not([disabled]):hover{background-color:#141414;border-color:#d89614;}.ant-picker-status-warning.ant-picker-focused,.ant-picker-status-warning.ant-picker:focus{border-color:#d89614;box-shadow:0 0 0 2px rgba(173, 107, 0, 0.15);border-inline-end-width:1px;outline:0;}.ant-picker-status-warning.ant-picker .ant-picker-active-bar{background:#d89614;}.ant-picker-compact-item:not(.ant-picker-compact-last-item){margin-inline-end:-1px;}.ant-picker-compact-item:hover,.ant-picker-compact-item:active{z-index:2;}.ant-picker-compact-item.ant-picker-focused{z-index:2;}.ant-picker-compact-item[disabled]{z-index:0;}.ant-picker-compact-item:not(.ant-picker-compact-first-item):not(.ant-picker-compact-last-item){border-radius:0;}.ant-picker-compact-item:not(.ant-picker-compact-last-item).ant-picker-compact-first-item,.ant-picker-compact-item:not(.ant-picker-compact-last-item).ant-picker-compact-first-item.ant-picker-sm,.ant-picker-compact-item:not(.ant-picker-compact-last-item).ant-picker-compact-first-item.ant-picker-lg{border-start-end-radius:0;border-end-end-radius:0;}.ant-picker-compact-item:not(.ant-picker-compact-first-item).ant-picker-compact-last-item,.ant-picker-compact-item:not(.ant-picker-compact-first-item).ant-picker-compact-last-item.ant-picker-sm,.ant-picker-compact-item:not(.ant-picker-compact-first-item).ant-picker-compact-last-item.ant-picker-lg{border-start-start-radius:0;border-end-start-radius:0;}[class^=\\"ant-descriptions\\"],[class*=\\" ant-descriptions\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-descriptions\\"]::before,[class*=\\" ant-descriptions\\"]::before,[class^=\\"ant-descriptions\\"]::after,[class*=\\" ant-descriptions\\"]::after{box-sizing:border-box;}[class^=\\"ant-descriptions\\"] [class^=\\"ant-descriptions\\"],[class*=\\" ant-descriptions\\"] [class^=\\"ant-descriptions\\"],[class^=\\"ant-descriptions\\"] [class*=\\" ant-descriptions\\"],[class*=\\" ant-descriptions\\"] [class*=\\" ant-descriptions\\"]{box-sizing:border-box;}[class^=\\"ant-descriptions\\"] [class^=\\"ant-descriptions\\"]::before,[class*=\\" ant-descriptions\\"] [class^=\\"ant-descriptions\\"]::before,[class^=\\"ant-descriptions\\"] [class*=\\" ant-descriptions\\"]::before,[class*=\\" ant-descriptions\\"] [class*=\\" ant-descriptions\\"]::before,[class^=\\"ant-descriptions\\"] [class^=\\"ant-descriptions\\"]::after,[class*=\\" ant-descriptions\\"] [class^=\\"ant-descriptions\\"]::after,[class^=\\"ant-descriptions\\"] [class*=\\" ant-descriptions\\"]::after,[class*=\\" ant-descriptions\\"] [class*=\\" ant-descriptions\\"]::after{box-sizing:border-box;}.ant-descriptions{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';}.ant-descriptions.ant-descriptions-bordered .ant-descriptions-view{border:1px solid rgba(253, 253, 253, 0.12);}.ant-descriptions.ant-descriptions-bordered .ant-descriptions-view >table{table-layout:auto;border-collapse:collapse;}.ant-descriptions.ant-descriptions-bordered .ant-descriptions-item-label,.ant-descriptions.ant-descriptions-bordered .ant-descriptions-item-content{padding:16px 24px;border-inline-end:1px solid rgba(253, 253, 253, 0.12);}.ant-descriptions.ant-descriptions-bordered .ant-descriptions-item-label:last-child,.ant-descriptions.ant-descriptions-bordered .ant-descriptions-item-content:last-child{border-inline-end:none;}.ant-descriptions.ant-descriptions-bordered .ant-descriptions-item-label{background-color:rgba(255, 255, 255, 0.04);}.ant-descriptions.ant-descriptions-bordered .ant-descriptions-item-label::after{display:none;}.ant-descriptions.ant-descriptions-bordered .ant-descriptions-row{border-bottom:1px solid rgba(253, 253, 253, 0.12);}.ant-descriptions.ant-descriptions-bordered .ant-descriptions-row:last-child{border-bottom:none;}.ant-descriptions.ant-descriptions-bordered.ant-descriptions-middle .ant-descriptions-item-label,.ant-descriptions.ant-descriptions-bordered.ant-descriptions-middle .ant-descriptions-item-content{padding:12px 24px;}.ant-descriptions.ant-descriptions-bordered.ant-descriptions-small .ant-descriptions-item-label,.ant-descriptions.ant-descriptions-bordered.ant-descriptions-small .ant-descriptions-item-content{padding:8px 16px;}.ant-descriptions-rtl{direction:rtl;}.ant-descriptions .ant-descriptions-header{display:flex;align-items:center;margin-bottom:20px;}.ant-descriptions .ant-descriptions-title{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;flex:auto;color:rgba(255, 255, 255, 0.85);font-weight:600;font-size:16px;line-height:1.5;}.ant-descriptions .ant-descriptions-extra{margin-inline-start:auto;color:rgba(255, 255, 255, 0.85);font-size:14px;}.ant-descriptions .ant-descriptions-view{width:100%;border-radius:8px;}.ant-descriptions .ant-descriptions-view table{width:100%;table-layout:fixed;}.ant-descriptions .ant-descriptions-row >th,.ant-descriptions .ant-descriptions-row >td{padding-bottom:16px;}.ant-descriptions .ant-descriptions-row:last-child{border-bottom:none;}.ant-descriptions .ant-descriptions-item-label{color:rgba(255, 255, 255, 0.85);font-weight:normal;font-size:14px;line-height:1.5714285714285714;text-align:start;}.ant-descriptions .ant-descriptions-item-label::after{content:\\":\\";position:relative;top:-0.5px;margin-inline:2px 8px;}.ant-descriptions .ant-descriptions-item-label.ant-descriptions-item-no-colon::after{content:\\"\\";}.ant-descriptions .ant-descriptions-item-no-label::after{margin:0;content:\\"\\";}.ant-descriptions .ant-descriptions-item-content{display:table-cell;flex:1;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;word-break:break-word;overflow-wrap:break-word;}.ant-descriptions .ant-descriptions-item{padding-bottom:0;vertical-align:top;}.ant-descriptions .ant-descriptions-item-container{display:flex;}.ant-descriptions .ant-descriptions-item-container .ant-descriptions-item-label{display:inline-flex;align-items:baseline;}.ant-descriptions .ant-descriptions-item-container .ant-descriptions-item-content{display:inline-flex;align-items:baseline;}.ant-descriptions-middle .ant-descriptions-row >th,.ant-descriptions-middle .ant-descriptions-row >td{padding-bottom:12px;}.ant-descriptions-small .ant-descriptions-row >th,.ant-descriptions-small .ant-descriptions-row >td{padding-bottom:8px;}[class^=\\"ant-divider\\"],[class*=\\" ant-divider\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-divider\\"]::before,[class*=\\" ant-divider\\"]::before,[class^=\\"ant-divider\\"]::after,[class*=\\" ant-divider\\"]::after{box-sizing:border-box;}[class^=\\"ant-divider\\"] [class^=\\"ant-divider\\"],[class*=\\" ant-divider\\"] [class^=\\"ant-divider\\"],[class^=\\"ant-divider\\"] [class*=\\" ant-divider\\"],[class*=\\" ant-divider\\"] [class*=\\" ant-divider\\"]{box-sizing:border-box;}[class^=\\"ant-divider\\"] [class^=\\"ant-divider\\"]::before,[class*=\\" ant-divider\\"] [class^=\\"ant-divider\\"]::before,[class^=\\"ant-divider\\"] [class*=\\" ant-divider\\"]::before,[class*=\\" ant-divider\\"] [class*=\\" ant-divider\\"]::before,[class^=\\"ant-divider\\"] [class^=\\"ant-divider\\"]::after,[class*=\\" ant-divider\\"] [class^=\\"ant-divider\\"]::after,[class^=\\"ant-divider\\"] [class*=\\" ant-divider\\"]::after,[class*=\\" ant-divider\\"] [class*=\\" ant-divider\\"]::after{box-sizing:border-box;}.ant-divider{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';border-block-start:1px solid rgba(253, 253, 253, 0.12);}.ant-divider-vertical{position:relative;top:-0.06em;display:inline-block;height:0.9em;margin:0 8px;vertical-align:middle;border-top:0;border-inline-start:1px solid rgba(253, 253, 253, 0.12);}.ant-divider-horizontal{display:flex;clear:both;width:100%;min-width:100%;margin:24px 0;}.ant-divider-horizontal.ant-divider-with-text{display:flex;align-items:center;margin:16px 0;color:rgba(255, 255, 255, 0.85);font-weight:500;font-size:16px;white-space:nowrap;text-align:center;border-block-start:0 rgba(253, 253, 253, 0.12);}.ant-divider-horizontal.ant-divider-with-text::before,.ant-divider-horizontal.ant-divider-with-text::after{position:relative;width:50%;border-block-start:1px solid transparent;border-block-start-color:inherit;border-block-end:0;transform:translateY(50%);content:'';}.ant-divider-horizontal.ant-divider-with-text-left::before{width:5%;}.ant-divider-horizontal.ant-divider-with-text-left::after{width:95%;}.ant-divider-horizontal.ant-divider-with-text-right::before{width:95%;}.ant-divider-horizontal.ant-divider-with-text-right::after{width:5%;}.ant-divider .ant-divider-inner-text{display:inline-block;padding:0 1em;}.ant-divider-dashed{background:none;border-color:rgba(253, 253, 253, 0.12);border-style:dashed;border-width:1px 0 0;}.ant-divider-horizontal.ant-divider-with-text.ant-divider-dashed::before,.ant-divider-horizontal.ant-divider-with-text.ant-divider-dashed::after{border-style:dashed none none;}.ant-divider-vertical.ant-divider-dashed{border-inline-start:1px;border-inline-end:0;border-block-start:0;border-block-end:0;}.ant-divider-plain.ant-divider-with-text{color:rgba(255, 255, 255, 0.85);font-weight:normal;font-size:14px;}.ant-divider-horizontal.ant-divider-with-text-left.ant-divider-no-default-orientation-margin-left::before{width:0;}.ant-divider-horizontal.ant-divider-with-text-left.ant-divider-no-default-orientation-margin-left::after{width:100%;}.ant-divider-horizontal.ant-divider-with-text-left.ant-divider-no-default-orientation-margin-left .ant-divider-inner-text{padding-inline-start:0;}.ant-divider-horizontal.ant-divider-with-text-right.ant-divider-no-default-orientation-margin-right::before{width:100%;}.ant-divider-horizontal.ant-divider-with-text-right.ant-divider-no-default-orientation-margin-right::after{width:0;}.ant-divider-horizontal.ant-divider-with-text-right.ant-divider-no-default-orientation-margin-right .ant-divider-inner-text{padding-inline-end:0;}[class^=\\"ant-dropdown\\"],[class*=\\" ant-dropdown\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-dropdown\\"]::before,[class*=\\" ant-dropdown\\"]::before,[class^=\\"ant-dropdown\\"]::after,[class*=\\" ant-dropdown\\"]::after{box-sizing:border-box;}[class^=\\"ant-dropdown\\"] [class^=\\"ant-dropdown\\"],[class*=\\" ant-dropdown\\"] [class^=\\"ant-dropdown\\"],[class^=\\"ant-dropdown\\"] [class*=\\" ant-dropdown\\"],[class*=\\" ant-dropdown\\"] [class*=\\" ant-dropdown\\"]{box-sizing:border-box;}[class^=\\"ant-dropdown\\"] [class^=\\"ant-dropdown\\"]::before,[class*=\\" ant-dropdown\\"] [class^=\\"ant-dropdown\\"]::before,[class^=\\"ant-dropdown\\"] [class*=\\" ant-dropdown\\"]::before,[class*=\\" ant-dropdown\\"] [class*=\\" ant-dropdown\\"]::before,[class^=\\"ant-dropdown\\"] [class^=\\"ant-dropdown\\"]::after,[class*=\\" ant-dropdown\\"] [class^=\\"ant-dropdown\\"]::after,[class^=\\"ant-dropdown\\"] [class*=\\" ant-dropdown\\"]::after,[class*=\\" ant-dropdown\\"] [class*=\\" ant-dropdown\\"]::after{box-sizing:border-box;}.ant-dropdown{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:absolute;top:-9999px;left:-9999px;z-index:1050;display:block;}.ant-dropdown::before{position:absolute;inset-block:-4px;z-index:-9999;opacity:0.0001;content:\\"\\";}.ant-dropdown .ant-dropdown-wrap{position:relative;}.ant-dropdown .ant-dropdown-wrap .ant-btn>.anticon-down{font-size:12px;}.ant-dropdown .ant-dropdown-wrap .anticon-down::before{transition:transform 0.2s;}.ant-dropdown .ant-dropdown-wrap-open .anticon-down::before{transform:rotate(180deg);}.ant-dropdown-hidden,.ant-dropdown-menu-hidden,.ant-dropdown-menu-submenu-hidden{display:none;}.ant-dropdown-show-arrow.ant-dropdown-placement-topLeft,.ant-dropdown-show-arrow.ant-dropdown-placement-top,.ant-dropdown-show-arrow.ant-dropdown-placement-topRight{padding-bottom:12px;}.ant-dropdown-show-arrow.ant-dropdown-placement-bottomLeft,.ant-dropdown-show-arrow.ant-dropdown-placement-bottom,.ant-dropdown-show-arrow.ant-dropdown-placement-bottomRight{padding-top:12px;}.ant-dropdown .ant-dropdown-arrow{position:absolute;z-index:1;display:block;pointer-events:none;width:16px;height:16px;overflow:hidden;}.ant-dropdown .ant-dropdown-arrow::after{content:\\"\\";position:absolute;width:8.970562748477143px;height:8.970562748477143px;bottom:0;inset-inline:0;margin:auto;border-radius:0 0 2px 0;transform:translateY(50%) rotate(-135deg);box-shadow:3px 3px 7px rgba(0, 0, 0, 0.1);z-index:0;background:transparent;}.ant-dropdown .ant-dropdown-arrow::before{position:absolute;bottom:0;inset-inline-start:0;width:16px;height:8px;background:#1f1f1f;clip-path:polygon(1.6568542494923806px 100%, 50% 1.6568542494923806px, 14.34314575050762px 100%, 1.6568542494923806px 100%);clip-path:path('M 0 8 A 4 4 0 0 0 2.82842712474619 6.82842712474619 L 6.585786437626905 3.0710678118654755 A 2 2 0 0 1 9.414213562373096 3.0710678118654755 L 13.17157287525381 6.82842712474619 A 4 4 0 0 0 16 8 Z');content:\\"\\";}.ant-dropdown-placement-top>.ant-dropdown-arrow,.ant-dropdown-placement-topLeft>.ant-dropdown-arrow,.ant-dropdown-placement-topRight>.ant-dropdown-arrow{bottom:12px;transform:translateY(100%) rotate(180deg);}.ant-dropdown-placement-top>.ant-dropdown-arrow{left:50%;transform:translateX(-50%) translateY(100%) rotate(180deg);}.ant-dropdown-placement-topLeft>.ant-dropdown-arrow{left:6px;}.ant-dropdown-placement-topRight>.ant-dropdown-arrow{right:6px;}.ant-dropdown-placement-bottom>.ant-dropdown-arrow,.ant-dropdown-placement-bottomLeft>.ant-dropdown-arrow,.ant-dropdown-placement-bottomRight>.ant-dropdown-arrow{top:12px;transform:translateY(-100%);}.ant-dropdown-placement-bottom>.ant-dropdown-arrow{left:50%;transform:translateY(-100%) translateX(-50%);}.ant-dropdown-placement-bottomLeft>.ant-dropdown-arrow{left:6px;}.ant-dropdown-placement-bottomRight>.ant-dropdown-arrow{right:6px;}.ant-dropdown.ant-slide-down-enter.ant-slide-down-enter-active.ant-dropdown-placement-bottomLeft,.ant-dropdown.ant-slide-down-appear.ant-slide-down-appear-active.ant-dropdown-placement-bottomLeft,.ant-dropdown.ant-slide-down-enter.ant-slide-down-enter-active.ant-dropdown-placement-bottom,.ant-dropdown.ant-slide-down-appear.ant-slide-down-appear-active.ant-dropdown-placement-bottom,.ant-dropdown.ant-slide-down-enter.ant-slide-down-enter-active.ant-dropdown-placement-bottomRight,.ant-dropdown.ant-slide-down-appear.ant-slide-down-appear-active.ant-dropdown-placement-bottomRight{animation-name:antSlideUpIn;}.ant-dropdown.ant-slide-up-enter.ant-slide-up-enter-active.ant-dropdown-placement-topLeft,.ant-dropdown.ant-slide-up-appear.ant-slide-up-appear-active.ant-dropdown-placement-topLeft,.ant-dropdown.ant-slide-up-enter.ant-slide-up-enter-active.ant-dropdown-placement-top,.ant-dropdown.ant-slide-up-appear.ant-slide-up-appear-active.ant-dropdown-placement-top,.ant-dropdown.ant-slide-up-enter.ant-slide-up-enter-active.ant-dropdown-placement-topRight,.ant-dropdown.ant-slide-up-appear.ant-slide-up-appear-active.ant-dropdown-placement-topRight{animation-name:antSlideDownIn;}.ant-dropdown.ant-slide-down-leave.ant-slide-down-leave-active.ant-dropdown-placement-bottomLeft,.ant-dropdown.ant-slide-down-leave.ant-slide-down-leave-active.ant-dropdown-placement-bottom,.ant-dropdown.ant-slide-down-leave.ant-slide-down-leave-active.ant-dropdown-placement-bottomRight{animation-name:antSlideUpOut;}.ant-dropdown.ant-slide-up-leave.ant-slide-up-leave-active.ant-dropdown-placement-topLeft,.ant-dropdown.ant-slide-up-leave.ant-slide-up-leave-active.ant-dropdown-placement-top,.ant-dropdown.ant-slide-up-leave.ant-slide-up-leave-active.ant-dropdown-placement-topRight{animation-name:antSlideDownOut;}.ant-dropdown .ant-dropdown-menu{position:relative;margin:0;}.ant-dropdown-menu-submenu-popup{position:absolute;z-index:1050;background:transparent;box-shadow:none;transform-origin:0 0;}.ant-dropdown-menu-submenu-popup ul,.ant-dropdown-menu-submenu-popup li{list-style:none;}.ant-dropdown-menu-submenu-popup ul{margin-inline:0.3em;}.ant-dropdown .ant-dropdown-menu,.ant-dropdown-menu-submenu .ant-dropdown-menu{padding:4px;list-style-type:none;background-color:#1f1f1f;background-clip:padding-box;border-radius:8px;outline:none;box-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08),0 3px 6px -4px rgba(0, 0, 0, 0.12),0 9px 28px 8px rgba(0, 0, 0, 0.05);}.ant-dropdown .ant-dropdown-menu:focus-visible,.ant-dropdown-menu-submenu .ant-dropdown-menu:focus-visible{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-item-group-title,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-item-group-title{padding:5px 12px;color:rgba(255, 255, 255, 0.45);transition:all 0.2s;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-item,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-item{position:relative;display:flex;align-items:center;border-radius:4px;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-item-icon,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-item-icon{min-width:14px;margin-inline-end:8px;font-size:12px;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-title-content,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-title-content{flex:auto;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-title-content >a,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-title-content >a{color:inherit;transition:all 0.2s;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-title-content >a:hover,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-title-content >a:hover{color:inherit;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-title-content >a::after,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-title-content >a::after{position:absolute;inset:0;content:\\"\\";}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-item,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-item,.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-submenu-title,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-submenu-title{clear:both;margin:0;padding:5px 12px;color:rgba(255, 255, 255, 0.85);font-weight:normal;font-size:14px;line-height:1.5714285714285714;cursor:pointer;transition:all 0.2s;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-item:hover,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-item:hover,.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-submenu-title:hover,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-submenu-title:hover,.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-item-active,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-item-active,.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-submenu-title-active,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-submenu-title-active{background-color:rgba(255, 255, 255, 0.08);}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-item:focus-visible,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-item:focus-visible,.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-submenu-title:focus-visible,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-submenu-title:focus-visible{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-item-selected,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-item-selected,.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-submenu-title-selected,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-submenu-title-selected{color:#037003;background-color:#111911;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-item-selected:hover,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-item-selected:hover,.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-submenu-title-selected:hover,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-submenu-title-selected:hover,.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-item-selected-active,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-item-selected-active,.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-submenu-title-selected-active,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-submenu-title-selected-active{background-color:#0f2510;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-item-disabled,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-item-disabled,.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-submenu-title-disabled,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-submenu-title-disabled{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-item-disabled:hover,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-item-disabled:hover,.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-submenu-title-disabled:hover,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-submenu-title-disabled:hover{color:rgba(255, 255, 255, 0.25);background-color:#1f1f1f;cursor:not-allowed;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-item-disabled a,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-item-disabled a,.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-submenu-title-disabled a,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-submenu-title-disabled a{pointer-events:none;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-item-divider,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-item-divider,.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-submenu-title-divider,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-submenu-title-divider{height:1px;margin:4px 0;overflow:hidden;line-height:0;background-color:rgba(253, 253, 253, 0.12);}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-item .ant-dropdown-menu-submenu-expand-icon,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-item .ant-dropdown-menu-submenu-expand-icon,.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-expand-icon,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-expand-icon{position:absolute;inset-inline-end:8px;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-item .ant-dropdown-menu-submenu-expand-icon .ant-dropdown-menu-submenu-arrow-icon,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-item .ant-dropdown-menu-submenu-expand-icon .ant-dropdown-menu-submenu-arrow-icon,.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-expand-icon .ant-dropdown-menu-submenu-arrow-icon,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-expand-icon .ant-dropdown-menu-submenu-arrow-icon{margin-inline-end:0!important;color:rgba(255, 255, 255, 0.45);font-size:12px;font-style:normal;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-item-group-list,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-item-group-list{margin:0 8px;padding:0;list-style:none;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-submenu-title,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-submenu-title{padding-inline-end:24px;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-submenu-vertical,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-submenu-vertical{position:relative;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-submenu.ant-dropdown-menu-submenu-disabled .ant-dropdown-menu-submenu-title,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-submenu.ant-dropdown-menu-submenu-disabled .ant-dropdown-menu-submenu-title,.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-submenu.ant-dropdown-menu-submenu-disabled .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow-icon,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-submenu.ant-dropdown-menu-submenu-disabled .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow-icon{color:rgba(255, 255, 255, 0.25);background-color:#1f1f1f;cursor:not-allowed;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-submenu-selected .ant-dropdown-menu-submenu-title,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-submenu-selected .ant-dropdown-menu-submenu-title{color:#037003;}.ant-slide-up-enter,.ant-slide-up-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-slide-up-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-slide-up-enter.ant-slide-up-enter-active,.ant-slide-up-appear.ant-slide-up-appear-active{animation-name:antSlideUpIn;animation-play-state:running;}.ant-slide-up-leave.ant-slide-up-leave-active{animation-name:antSlideUpOut;animation-play-state:running;pointer-events:none;}.ant-slide-up-enter,.ant-slide-up-appear{transform:scale(0);transform-origin:0% 0%;opacity:0;animation-timing-function:cubic-bezier(0.23, 1, 0.32, 1);}.ant-slide-up-leave{animation-timing-function:cubic-bezier(0.755, 0.05, 0.855, 0.06);}.ant-slide-down-enter,.ant-slide-down-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-slide-down-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-slide-down-enter.ant-slide-down-enter-active,.ant-slide-down-appear.ant-slide-down-appear-active{animation-name:antSlideDownIn;animation-play-state:running;}.ant-slide-down-leave.ant-slide-down-leave-active{animation-name:antSlideDownOut;animation-play-state:running;pointer-events:none;}.ant-slide-down-enter,.ant-slide-down-appear{transform:scale(0);transform-origin:0% 0%;opacity:0;animation-timing-function:cubic-bezier(0.23, 1, 0.32, 1);}.ant-slide-down-leave{animation-timing-function:cubic-bezier(0.755, 0.05, 0.855, 0.06);}.ant-move-up-enter,.ant-move-up-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-move-up-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-move-up-enter.ant-move-up-enter-active,.ant-move-up-appear.ant-move-up-appear-active{animation-name:antMoveUpIn;animation-play-state:running;}.ant-move-up-leave.ant-move-up-leave-active{animation-name:antMoveUpOut;animation-play-state:running;pointer-events:none;}.ant-move-up-enter,.ant-move-up-appear{opacity:0;animation-timing-function:cubic-bezier(0.08, 0.82, 0.17, 1);}.ant-move-up-leave{animation-timing-function:cubic-bezier(0.78, 0.14, 0.15, 0.86);}.ant-move-down-enter,.ant-move-down-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-move-down-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-move-down-enter.ant-move-down-enter-active,.ant-move-down-appear.ant-move-down-appear-active{animation-name:antMoveDownIn;animation-play-state:running;}.ant-move-down-leave.ant-move-down-leave-active{animation-name:antMoveDownOut;animation-play-state:running;pointer-events:none;}.ant-move-down-enter,.ant-move-down-appear{opacity:0;animation-timing-function:cubic-bezier(0.08, 0.82, 0.17, 1);}.ant-move-down-leave{animation-timing-function:cubic-bezier(0.78, 0.14, 0.15, 0.86);}.ant-zoom-big-enter,.ant-zoom-big-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-zoom-big-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-zoom-big-enter.ant-zoom-big-enter-active,.ant-zoom-big-appear.ant-zoom-big-appear-active{animation-name:antZoomBigIn;animation-play-state:running;}.ant-zoom-big-leave.ant-zoom-big-leave-active{animation-name:antZoomBigOut;animation-play-state:running;pointer-events:none;}.ant-zoom-big-enter,.ant-zoom-big-appear{transform:scale(0);opacity:0;animation-timing-function:cubic-bezier(0.08, 0.82, 0.17, 1);}.ant-zoom-big-enter-prepare,.ant-zoom-big-appear-prepare{transform:none;}.ant-zoom-big-leave{animation-timing-function:cubic-bezier(0.78, 0.14, 0.15, 0.86);}.ant-dropdown-button{white-space:nowrap;}.ant-dropdown-button.ant-btn-group>.ant-btn-loading,.ant-dropdown-button.ant-btn-group>.ant-btn-loading+.ant-btn{cursor:default;pointer-events:none;opacity:0.65;}.ant-dropdown-button.ant-btn-group>.ant-btn:last-child:not(:first-child):not(.ant-btn-icon-only){padding-inline:8px;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-danger:not(.ant-dropdown-menu-item-disabled),.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-danger:not(.ant-dropdown-menu-item-disabled){color:#dc4446;}.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-danger:not(.ant-dropdown-menu-item-disabled):hover,.ant-dropdown-menu-submenu .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-danger:not(.ant-dropdown-menu-item-disabled):hover{color:#fff;background-color:#dc4446;}@keyframes antZoomBigIn{0%{transform:scale(0.8);opacity:0;}100%{transform:scale(1);opacity:1;}}@keyframes antZoomBigOut{0%{transform:scale(1);}100%{transform:scale(0.8);opacity:0;}}[class^=\\"ant-drawer\\"],[class*=\\" ant-drawer\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-drawer\\"]::before,[class*=\\" ant-drawer\\"]::before,[class^=\\"ant-drawer\\"]::after,[class*=\\" ant-drawer\\"]::after{box-sizing:border-box;}[class^=\\"ant-drawer\\"] [class^=\\"ant-drawer\\"],[class*=\\" ant-drawer\\"] [class^=\\"ant-drawer\\"],[class^=\\"ant-drawer\\"] [class*=\\" ant-drawer\\"],[class*=\\" ant-drawer\\"] [class*=\\" ant-drawer\\"]{box-sizing:border-box;}[class^=\\"ant-drawer\\"] [class^=\\"ant-drawer\\"]::before,[class*=\\" ant-drawer\\"] [class^=\\"ant-drawer\\"]::before,[class^=\\"ant-drawer\\"] [class*=\\" ant-drawer\\"]::before,[class*=\\" ant-drawer\\"] [class*=\\" ant-drawer\\"]::before,[class^=\\"ant-drawer\\"] [class^=\\"ant-drawer\\"]::after,[class*=\\" ant-drawer\\"] [class^=\\"ant-drawer\\"]::after,[class^=\\"ant-drawer\\"] [class*=\\" ant-drawer\\"]::after,[class*=\\" ant-drawer\\"] [class*=\\" ant-drawer\\"]::after{box-sizing:border-box;}.ant-drawer{position:fixed;inset:0;z-index:1000;pointer-events:none;}.ant-drawer-pure{position:relative;background:#1f1f1f;}.ant-drawer-pure.ant-drawer-left{box-shadow:6px 0 16px 0 rgba(0, 0, 0, 0.08),3px 0 6px -4px rgba(0, 0, 0, 0.12),9px 0 28px 8px rgba(0, 0, 0, 0.05);}.ant-drawer-pure.ant-drawer-right{box-shadow:-6px 0 16px 0 rgba(0, 0, 0, 0.08),-3px 0 6px -4px rgba(0, 0, 0, 0.12),-9px 0 28px 8px rgba(0, 0, 0, 0.05);}.ant-drawer-pure.ant-drawer-top{box-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08),0 3px 6px -4px rgba(0, 0, 0, 0.12),0 9px 28px 8px rgba(0, 0, 0, 0.05);}.ant-drawer-pure.ant-drawer-bottom{box-shadow:0 -6px 16px 0 rgba(0, 0, 0, 0.08),0 -3px 6px -4px rgba(0, 0, 0, 0.12),0 -9px 28px 8px rgba(0, 0, 0, 0.05);}.ant-drawer-inline{position:absolute;}.ant-drawer .ant-drawer-mask{position:absolute;inset:0;z-index:1000;background:rgba(0, 0, 0, 0.45);pointer-events:auto;}.ant-drawer .ant-drawer-content-wrapper{position:absolute;z-index:1000;transition:all 0.3s;}.ant-drawer .ant-drawer-content-wrapper-hidden{display:none;}.ant-drawer-left>.ant-drawer-content-wrapper{top:0;bottom:0;left:0;box-shadow:6px 0 16px 0 rgba(0, 0, 0, 0.08),3px 0 6px -4px rgba(0, 0, 0, 0.12),9px 0 28px 8px rgba(0, 0, 0, 0.05);}.ant-drawer-right>.ant-drawer-content-wrapper{top:0;right:0;bottom:0;box-shadow:-6px 0 16px 0 rgba(0, 0, 0, 0.08),-3px 0 6px -4px rgba(0, 0, 0, 0.12),-9px 0 28px 8px rgba(0, 0, 0, 0.05);}.ant-drawer-top>.ant-drawer-content-wrapper{top:0;inset-inline:0;box-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08),0 3px 6px -4px rgba(0, 0, 0, 0.12),0 9px 28px 8px rgba(0, 0, 0, 0.05);}.ant-drawer-bottom>.ant-drawer-content-wrapper{bottom:0;inset-inline:0;box-shadow:0 -6px 16px 0 rgba(0, 0, 0, 0.08),0 -3px 6px -4px rgba(0, 0, 0, 0.12),0 -9px 28px 8px rgba(0, 0, 0, 0.05);}.ant-drawer .ant-drawer-content{width:100%;height:100%;overflow:auto;background:#1f1f1f;pointer-events:auto;}.ant-drawer .ant-drawer-wrapper-body{display:flex;flex-direction:column;width:100%;height:100%;}.ant-drawer .ant-drawer-header{display:flex;flex:0;align-items:center;padding:16px 24px;font-size:16px;line-height:1.5;border-bottom:1px solid rgba(253, 253, 253, 0.12);}.ant-drawer .ant-drawer-header-title{display:flex;flex:1;align-items:center;min-width:0;min-height:0;}.ant-drawer .ant-drawer-extra{flex:none;}.ant-drawer .ant-drawer-close{display:inline-block;margin-inline-end:12px;color:rgba(255, 255, 255, 0.45);font-weight:600;font-size:16px;font-style:normal;line-height:1;text-align:center;text-transform:none;text-decoration:none;background:transparent;border:0;outline:0;cursor:pointer;transition:color 0.2s;text-rendering:auto;}.ant-drawer .ant-drawer-close:focus,.ant-drawer .ant-drawer-close:hover{color:rgba(255, 255, 255, 0.85);text-decoration:none;}.ant-drawer .ant-drawer-title{flex:1;margin:0;color:rgba(255, 255, 255, 0.85);font-weight:600;font-size:16px;line-height:1.5;}.ant-drawer .ant-drawer-body{flex:1;min-width:0;min-height:0;padding:24px;overflow:auto;}.ant-drawer .ant-drawer-footer{flex-shrink:0;padding:8px 16px;border-top:1px solid rgba(253, 253, 253, 0.12);}.ant-drawer-rtl{direction:rtl;}.ant-drawer .ant-drawer-mask-motion-enter-active,.ant-drawer .ant-drawer-mask-motion-appear-active,.ant-drawer .ant-drawer-mask-motion-leave-active{transition:all 0.3s;}.ant-drawer .ant-drawer-mask-motion-enter,.ant-drawer .ant-drawer-mask-motion-appear{opacity:0;}.ant-drawer .ant-drawer-mask-motion-enter-active,.ant-drawer .ant-drawer-mask-motion-appear-active{opacity:1;}.ant-drawer .ant-drawer-mask-motion-leave{opacity:1;}.ant-drawer .ant-drawer-mask-motion-leave-active{opacity:0;}.ant-drawer .ant-drawer-panel-motion-left-enter-start,.ant-drawer .ant-drawer-panel-motion-left-appear-start,.ant-drawer .ant-drawer-panel-motion-left-leave-start{transition:none;}.ant-drawer .ant-drawer-panel-motion-left-enter-active,.ant-drawer .ant-drawer-panel-motion-left-appear-active,.ant-drawer .ant-drawer-panel-motion-left-leave-active{transition:all 0.3s;}.ant-drawer .ant-drawer-panel-motion-left-enter-start,.ant-drawer .ant-drawer-panel-motion-left-appear-start{transform:translateX(-100%)!important;}.ant-drawer .ant-drawer-panel-motion-left-enter-active,.ant-drawer .ant-drawer-panel-motion-left-appear-active{transform:translateX(0);}.ant-drawer .ant-drawer-panel-motion-left-leave{transform:translateX(0);}.ant-drawer .ant-drawer-panel-motion-left-leave-active{transform:translateX(-100%);}.ant-drawer .ant-drawer-panel-motion-right-enter-start,.ant-drawer .ant-drawer-panel-motion-right-appear-start,.ant-drawer .ant-drawer-panel-motion-right-leave-start{transition:none;}.ant-drawer .ant-drawer-panel-motion-right-enter-active,.ant-drawer .ant-drawer-panel-motion-right-appear-active,.ant-drawer .ant-drawer-panel-motion-right-leave-active{transition:all 0.3s;}.ant-drawer .ant-drawer-panel-motion-right-enter-start,.ant-drawer .ant-drawer-panel-motion-right-appear-start{transform:translateX(100%)!important;}.ant-drawer .ant-drawer-panel-motion-right-enter-active,.ant-drawer .ant-drawer-panel-motion-right-appear-active{transform:translateX(0);}.ant-drawer .ant-drawer-panel-motion-right-leave{transform:translateX(0);}.ant-drawer .ant-drawer-panel-motion-right-leave-active{transform:translateX(100%);}.ant-drawer .ant-drawer-panel-motion-top-enter-start,.ant-drawer .ant-drawer-panel-motion-top-appear-start,.ant-drawer .ant-drawer-panel-motion-top-leave-start{transition:none;}.ant-drawer .ant-drawer-panel-motion-top-enter-active,.ant-drawer .ant-drawer-panel-motion-top-appear-active,.ant-drawer .ant-drawer-panel-motion-top-leave-active{transition:all 0.3s;}.ant-drawer .ant-drawer-panel-motion-top-enter-start,.ant-drawer .ant-drawer-panel-motion-top-appear-start{transform:translateY(-100%)!important;}.ant-drawer .ant-drawer-panel-motion-top-enter-active,.ant-drawer .ant-drawer-panel-motion-top-appear-active{transform:translateY(0);}.ant-drawer .ant-drawer-panel-motion-top-leave{transform:translateY(0);}.ant-drawer .ant-drawer-panel-motion-top-leave-active{transform:translateY(-100%);}.ant-drawer .ant-drawer-panel-motion-bottom-enter-start,.ant-drawer .ant-drawer-panel-motion-bottom-appear-start,.ant-drawer .ant-drawer-panel-motion-bottom-leave-start{transition:none;}.ant-drawer .ant-drawer-panel-motion-bottom-enter-active,.ant-drawer .ant-drawer-panel-motion-bottom-appear-active,.ant-drawer .ant-drawer-panel-motion-bottom-leave-active{transition:all 0.3s;}.ant-drawer .ant-drawer-panel-motion-bottom-enter-start,.ant-drawer .ant-drawer-panel-motion-bottom-appear-start{transform:translateY(100%)!important;}.ant-drawer .ant-drawer-panel-motion-bottom-enter-active,.ant-drawer .ant-drawer-panel-motion-bottom-appear-active{transform:translateY(0);}.ant-drawer .ant-drawer-panel-motion-bottom-leave{transform:translateY(0);}.ant-drawer .ant-drawer-panel-motion-bottom-leave-active{transform:translateY(100%);}[class^=\\"ant-empty\\"],[class*=\\" ant-empty\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-empty\\"]::before,[class*=\\" ant-empty\\"]::before,[class^=\\"ant-empty\\"]::after,[class*=\\" ant-empty\\"]::after{box-sizing:border-box;}[class^=\\"ant-empty\\"] [class^=\\"ant-empty\\"],[class*=\\" ant-empty\\"] [class^=\\"ant-empty\\"],[class^=\\"ant-empty\\"] [class*=\\" ant-empty\\"],[class*=\\" ant-empty\\"] [class*=\\" ant-empty\\"]{box-sizing:border-box;}[class^=\\"ant-empty\\"] [class^=\\"ant-empty\\"]::before,[class*=\\" ant-empty\\"] [class^=\\"ant-empty\\"]::before,[class^=\\"ant-empty\\"] [class*=\\" ant-empty\\"]::before,[class*=\\" ant-empty\\"] [class*=\\" ant-empty\\"]::before,[class^=\\"ant-empty\\"] [class^=\\"ant-empty\\"]::after,[class*=\\" ant-empty\\"] [class^=\\"ant-empty\\"]::after,[class^=\\"ant-empty\\"] [class*=\\" ant-empty\\"]::after,[class*=\\" ant-empty\\"] [class*=\\" ant-empty\\"]::after{box-sizing:border-box;}.ant-empty{margin-inline:8px;font-size:14px;line-height:1.5714285714285714;text-align:center;}.ant-empty .ant-empty-image{height:100px;margin-bottom:8px;opacity:1;}.ant-empty .ant-empty-image img{height:100%;}.ant-empty .ant-empty-image svg{height:100%;margin:auto;}.ant-empty .ant-empty-footer{margin-top:16px;}.ant-empty-normal{margin-block:32px;color:rgba(255, 255, 255, 0.25);}.ant-empty-normal .ant-empty-image{height:40px;}.ant-empty-small{margin-block:8px;color:rgba(255, 255, 255, 0.25);}.ant-empty-small .ant-empty-image{height:35px;}[class^=\\"ant-float-btn\\"],[class*=\\" ant-float-btn\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-float-btn\\"]::before,[class*=\\" ant-float-btn\\"]::before,[class^=\\"ant-float-btn\\"]::after,[class*=\\" ant-float-btn\\"]::after{box-sizing:border-box;}[class^=\\"ant-float-btn\\"] [class^=\\"ant-float-btn\\"],[class*=\\" ant-float-btn\\"] [class^=\\"ant-float-btn\\"],[class^=\\"ant-float-btn\\"] [class*=\\" ant-float-btn\\"],[class*=\\" ant-float-btn\\"] [class*=\\" ant-float-btn\\"]{box-sizing:border-box;}[class^=\\"ant-float-btn\\"] [class^=\\"ant-float-btn\\"]::before,[class*=\\" ant-float-btn\\"] [class^=\\"ant-float-btn\\"]::before,[class^=\\"ant-float-btn\\"] [class*=\\" ant-float-btn\\"]::before,[class*=\\" ant-float-btn\\"] [class*=\\" ant-float-btn\\"]::before,[class^=\\"ant-float-btn\\"] [class^=\\"ant-float-btn\\"]::after,[class*=\\" ant-float-btn\\"] [class^=\\"ant-float-btn\\"]::after,[class^=\\"ant-float-btn\\"] [class*=\\" ant-float-btn\\"]::after,[class*=\\" ant-float-btn\\"] [class*=\\" ant-float-btn\\"]::after{box-sizing:border-box;}.ant-float-btn-group{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';z-index:99;display:block;border:none;position:fixed;width:40px;height:auto;box-shadow:none;min-height:40px;inset-inline-end:24px;inset-block-end:48px;border-radius:8px;}.ant-float-btn-group .ant-float-btn-group-wrap{z-index:-1;display:block;position:relative;margin-bottom:16px;}.ant-float-btn-group.ant-float-btn-group-rtl{direction:rtl;}.ant-float-btn-group .ant-float-btn{position:static;}.ant-float-btn-group-circle .ant-float-btn-circle:not(:last-child){margin-bottom:16px;}.ant-float-btn-group-circle .ant-float-btn-circle:not(:last-child) .ant-float-btn-body{width:40px;height:40px;border-radius:50%;}.ant-float-btn-group-square .ant-float-btn-square{border-radius:0;padding:0;}.ant-float-btn-group-square .ant-float-btn-square:first-child{border-start-start-radius:8px;border-start-end-radius:8px;}.ant-float-btn-group-square .ant-float-btn-square:last-child{border-end-start-radius:8px;border-end-end-radius:8px;}.ant-float-btn-group-square .ant-float-btn-square:not(:last-child){border-bottom:1px solid rgba(253, 253, 253, 0.12);}.ant-float-btn-group-square .ant-float-btn-square .ant-badge .ant-badge-count{top:-10px;inset-inline-end:-10px;}.ant-float-btn-group-square .ant-float-btn-group-wrap{display:block;border-radius:8px;box-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08),0 3px 6px -4px rgba(0, 0, 0, 0.12),0 9px 28px 8px rgba(0, 0, 0, 0.05);}.ant-float-btn-group-square .ant-float-btn-group-wrap .ant-float-btn-square{box-shadow:none;margin-top:0;border-radius:0;padding:4px;}.ant-float-btn-group-square .ant-float-btn-group-wrap .ant-float-btn-square:first-child{border-start-start-radius:8px;border-start-end-radius:8px;}.ant-float-btn-group-square .ant-float-btn-group-wrap .ant-float-btn-square:last-child{border-end-start-radius:8px;border-end-end-radius:8px;}.ant-float-btn-group-square .ant-float-btn-group-wrap .ant-float-btn-square:not(:last-child){border-bottom:1px solid rgba(253, 253, 253, 0.12);}.ant-float-btn-group-square .ant-float-btn-group-wrap .ant-float-btn-square .ant-float-btn-body{width:32px;height:32px;}.ant-float-btn-group-circle-shadow{box-shadow:none;}.ant-float-btn-group-square-shadow{box-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08),0 3px 6px -4px rgba(0, 0, 0, 0.12),0 9px 28px 8px rgba(0, 0, 0, 0.05);}.ant-float-btn-group-square-shadow .ant-float-btn-square{box-shadow:none;padding:4px;}.ant-float-btn-group-square-shadow .ant-float-btn-square .ant-float-btn-body{width:32px;height:32px;border-radius:4px;}.ant-float-btn{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';border:none;position:fixed;cursor:pointer;z-index:99;display:block;justify-content:center;align-items:center;width:40px;height:40px;inset-inline-end:24px;inset-block-end:48px;box-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08),0 3px 6px -4px rgba(0, 0, 0, 0.12),0 9px 28px 8px rgba(0, 0, 0, 0.05);}.ant-float-btn-pure{position:relative;inset:auto;}.ant-float-btn:empty{display:none;}.ant-float-btn .ant-badge{width:100%;height:100%;}.ant-float-btn .ant-badge .ant-badge-count{transform:translate(0, 0);transform-origin:center;top:-6px;inset-inline-end:-6px;}.ant-float-btn .ant-float-btn-body{width:100%;height:100%;display:flex;justify-content:center;align-items:center;transition:all 0.2s;}.ant-float-btn .ant-float-btn-body .ant-float-btn-content{overflow:hidden;text-align:center;min-height:40px;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:2px 4px;}.ant-float-btn .ant-float-btn-body .ant-float-btn-content .ant-float-btn-icon{text-align:center;margin:auto;width:18px;font-size:18px;line-height:1;}.ant-float-btn-rtl{direction:rtl;}.ant-float-btn-circle{height:40px;border-radius:50%;}.ant-float-btn-circle .ant-badge .ant-badge-dot{top:5.857864376269049px;inset-inline-end:5.857864376269049px;}.ant-float-btn-circle .ant-float-btn-body{border-radius:50%;}.ant-float-btn-square{height:auto;min-height:40px;border-radius:8px;}.ant-float-btn-square .ant-badge .ant-badge-dot{top:2.3431457505076194px;inset-inline-end:2.3431457505076194px;}.ant-float-btn-square .ant-float-btn-body{height:auto;border-radius:8px;}.ant-float-btn-default{background-color:#1f1f1f;transition:background-color 0.2s;}.ant-float-btn-default .ant-float-btn-body{background-color:#1f1f1f;transition:background-color 0.2s;}.ant-float-btn-default .ant-float-btn-body:hover{background-color:rgba(255, 255, 255, 0.12);}.ant-float-btn-default .ant-float-btn-body .ant-float-btn-content .ant-float-btn-icon{color:rgba(255, 255, 255, 0.85);}.ant-float-btn-default .ant-float-btn-body .ant-float-btn-content .ant-float-btn-description{display:flex;align-items:center;line-height:16px;color:rgba(255, 255, 255, 0.85);font-size:12px;}.ant-float-btn-primary{background-color:#037003;}.ant-float-btn-primary .ant-float-btn-body{background-color:#037003;transition:background-color 0.2s;}.ant-float-btn-primary .ant-float-btn-body:hover{background-color:#198016;}.ant-float-btn-primary .ant-float-btn-body .ant-float-btn-content .ant-float-btn-icon{color:#fff;}.ant-float-btn-primary .ant-float-btn-body .ant-float-btn-content .ant-float-btn-description{display:flex;align-items:center;line-height:16px;color:#fff;font-size:12px;}.ant-fade-enter,.ant-fade-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-fade-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-fade-enter.ant-fade-enter-active,.ant-fade-appear.ant-fade-appear-active{animation-name:antFadeIn;animation-play-state:running;}.ant-fade-leave.ant-fade-leave-active{animation-name:antFadeOut;animation-play-state:running;pointer-events:none;}.ant-fade-enter,.ant-fade-appear{opacity:0;animation-timing-function:linear;}.ant-fade-leave{animation-timing-function:linear;}.ant-float-btn-group-wrap.ant-float-btn-group-wrap-enter,.ant-float-btn-group-wrap.ant-float-btn-group-wrap-appear{animation-duration:0.3s;animation-fill-mode:both;animation-play-state:paused;}.ant-float-btn-group-wrap.ant-float-btn-group-wrap-leave{animation-duration:0.3s;animation-fill-mode:both;animation-play-state:paused;}.ant-float-btn-group-wrap.ant-float-btn-group-wrap-enter.ant-float-btn-group-wrap-enter-active,.ant-float-btn-group-wrap.ant-float-btn-group-wrap-appear.ant-float-btn-group-wrap-appear-active{animation-name:antFloatButtonMoveDownIn;animation-play-state:running;}.ant-float-btn-group-wrap.ant-float-btn-group-wrap-leave.ant-float-btn-group-wrap-leave-active{animation-name:antFloatButtonMoveDownOut;animation-play-state:running;pointer-events:none;}.ant-float-btn-group-wrap.ant-float-btn-group-wrap-enter,.ant-float-btn-group-wrap.ant-float-btn-group-wrap-appear{opacity:0;animation-timing-function:cubic-bezier(0.78, 0.14, 0.15, 0.86);}.ant-float-btn-group-wrap.ant-float-btn-group-wrap-leave{animation-timing-function:cubic-bezier(0.78, 0.14, 0.15, 0.86);}@keyframes antFadeIn{0%{opacity:0;}100%{opacity:1;}}@keyframes antFadeOut{0%{opacity:1;}100%{opacity:0;}}@keyframes antFloatButtonMoveDownIn{0%{transform:translate3d(0, 40px, 0);transform-origin:0 0;opacity:0;}100%{transform:translate3d(0, 0, 0);transform-origin:0 0;opacity:1;}}@keyframes antFloatButtonMoveDownOut{0%{transform:translate3d(0, 0, 0);transform-origin:0 0;opacity:1;}100%{transform:translate3d(0, 40px, 0);transform-origin:0 0;opacity:0;}}[class^=\\"ant-tooltip\\"],[class*=\\" ant-tooltip\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-tooltip\\"]::before,[class*=\\" ant-tooltip\\"]::before,[class^=\\"ant-tooltip\\"]::after,[class*=\\" ant-tooltip\\"]::after{box-sizing:border-box;}[class^=\\"ant-tooltip\\"] [class^=\\"ant-tooltip\\"],[class*=\\" ant-tooltip\\"] [class^=\\"ant-tooltip\\"],[class^=\\"ant-tooltip\\"] [class*=\\" ant-tooltip\\"],[class*=\\" ant-tooltip\\"] [class*=\\" ant-tooltip\\"]{box-sizing:border-box;}[class^=\\"ant-tooltip\\"] [class^=\\"ant-tooltip\\"]::before,[class*=\\" ant-tooltip\\"] [class^=\\"ant-tooltip\\"]::before,[class^=\\"ant-tooltip\\"] [class*=\\" ant-tooltip\\"]::before,[class*=\\" ant-tooltip\\"] [class*=\\" ant-tooltip\\"]::before,[class^=\\"ant-tooltip\\"] [class^=\\"ant-tooltip\\"]::after,[class*=\\" ant-tooltip\\"] [class^=\\"ant-tooltip\\"]::after,[class^=\\"ant-tooltip\\"] [class*=\\" ant-tooltip\\"]::after,[class*=\\" ant-tooltip\\"] [class*=\\" ant-tooltip\\"]::after{box-sizing:border-box;}.ant-tooltip{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:absolute;z-index:1070;display:block;max-width:250px;visibility:visible;--antd-arrow-background-color:#424242;}.ant-tooltip{width:max-content;width:intrinsic;}.ant-tooltip-hidden{display:none;}.ant-tooltip .ant-tooltip-inner{min-width:32px;min-height:32px;padding:6px 8px;color:#fff;text-align:start;text-decoration:none;word-wrap:break-word;background-color:#424242;border-radius:6px;box-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08),0 3px 6px -4px rgba(0, 0, 0, 0.12),0 9px 28px 8px rgba(0, 0, 0, 0.05);}.ant-tooltip-placement-left .ant-tooltip-inner,.ant-tooltip-placement-leftTop .ant-tooltip-inner,.ant-tooltip-placement-leftBottom .ant-tooltip-inner,.ant-tooltip-placement-right .ant-tooltip-inner,.ant-tooltip-placement-rightTop .ant-tooltip-inner,.ant-tooltip-placement-rightBottom .ant-tooltip-inner{border-radius:6px;}.ant-tooltip .ant-tooltip-content{position:relative;}.ant-tooltip.ant-tooltip-blue .ant-tooltip-inner{background-color:#1668dc;}.ant-tooltip.ant-tooltip-blue .ant-tooltip-arrow{--antd-arrow-background-color:#1668dc;}.ant-tooltip.ant-tooltip-purple .ant-tooltip-inner{background-color:#642ab5;}.ant-tooltip.ant-tooltip-purple .ant-tooltip-arrow{--antd-arrow-background-color:#642ab5;}.ant-tooltip.ant-tooltip-cyan .ant-tooltip-inner{background-color:#13a8a8;}.ant-tooltip.ant-tooltip-cyan .ant-tooltip-arrow{--antd-arrow-background-color:#13a8a8;}.ant-tooltip.ant-tooltip-green .ant-tooltip-inner{background-color:#49aa19;}.ant-tooltip.ant-tooltip-green .ant-tooltip-arrow{--antd-arrow-background-color:#49aa19;}.ant-tooltip.ant-tooltip-magenta .ant-tooltip-inner{background-color:#cb2b83;}.ant-tooltip.ant-tooltip-magenta .ant-tooltip-arrow{--antd-arrow-background-color:#cb2b83;}.ant-tooltip.ant-tooltip-pink .ant-tooltip-inner{background-color:#cb2b83;}.ant-tooltip.ant-tooltip-pink .ant-tooltip-arrow{--antd-arrow-background-color:#cb2b83;}.ant-tooltip.ant-tooltip-red .ant-tooltip-inner{background-color:#d32029;}.ant-tooltip.ant-tooltip-red .ant-tooltip-arrow{--antd-arrow-background-color:#d32029;}.ant-tooltip.ant-tooltip-orange .ant-tooltip-inner{background-color:#d87a16;}.ant-tooltip.ant-tooltip-orange .ant-tooltip-arrow{--antd-arrow-background-color:#d87a16;}.ant-tooltip.ant-tooltip-yellow .ant-tooltip-inner{background-color:#d8bd14;}.ant-tooltip.ant-tooltip-yellow .ant-tooltip-arrow{--antd-arrow-background-color:#d8bd14;}.ant-tooltip.ant-tooltip-volcano .ant-tooltip-inner{background-color:#d84a1b;}.ant-tooltip.ant-tooltip-volcano .ant-tooltip-arrow{--antd-arrow-background-color:#d84a1b;}.ant-tooltip.ant-tooltip-geekblue .ant-tooltip-inner{background-color:#2b4acb;}.ant-tooltip.ant-tooltip-geekblue .ant-tooltip-arrow{--antd-arrow-background-color:#2b4acb;}.ant-tooltip.ant-tooltip-lime .ant-tooltip-inner{background-color:#8bbb11;}.ant-tooltip.ant-tooltip-lime .ant-tooltip-arrow{--antd-arrow-background-color:#8bbb11;}.ant-tooltip.ant-tooltip-gold .ant-tooltip-inner{background-color:#d89614;}.ant-tooltip.ant-tooltip-gold .ant-tooltip-arrow{--antd-arrow-background-color:#d89614;}.ant-tooltip-rtl{direction:rtl;}.ant-tooltip .ant-tooltip-arrow{position:absolute;z-index:1;display:block;pointer-events:none;width:16px;height:16px;overflow:hidden;}.ant-tooltip .ant-tooltip-arrow::after{content:\\"\\";position:absolute;width:8.970562748477143px;height:8.970562748477143px;bottom:0;inset-inline:0;margin:auto;border-radius:0 0 2px 0;transform:translateY(50%) rotate(-135deg);box-shadow:3px 3px 7px rgba(0, 0, 0, 0.1);z-index:0;background:transparent;}.ant-tooltip .ant-tooltip-arrow::before{position:absolute;bottom:0;inset-inline-start:0;width:16px;height:8px;background:var(--antd-arrow-background-color);clip-path:polygon(1.6568542494923806px 100%, 50% 1.6568542494923806px, 14.34314575050762px 100%, 1.6568542494923806px 100%);clip-path:path('M 0 8 A 4 4 0 0 0 2.82842712474619 6.82842712474619 L 6.585786437626905 3.0710678118654755 A 2 2 0 0 1 9.414213562373096 3.0710678118654755 L 13.17157287525381 6.82842712474619 A 4 4 0 0 0 16 8 Z');content:\\"\\";}.ant-tooltip .ant-tooltip-arrow:before{background:var(--antd-arrow-background-color);}.ant-tooltip-placement-top .ant-tooltip-arrow,.ant-tooltip-placement-topLeft .ant-tooltip-arrow,.ant-tooltip-placement-topRight .ant-tooltip-arrow{bottom:0;transform:translateY(100%) rotate(180deg);}.ant-tooltip-placement-top .ant-tooltip-arrow{left:50%;transform:translateX(-50%) translateY(100%) rotate(180deg);}.ant-tooltip-placement-topLeft .ant-tooltip-arrow{left:6px;}.ant-tooltip-placement-topRight .ant-tooltip-arrow{right:6px;}.ant-tooltip-placement-bottom .ant-tooltip-arrow,.ant-tooltip-placement-bottomLeft .ant-tooltip-arrow,.ant-tooltip-placement-bottomRight .ant-tooltip-arrow{top:0;transform:translateY(-100%);}.ant-tooltip-placement-bottom .ant-tooltip-arrow{left:50%;transform:translateX(-50%) translateY(-100%);}.ant-tooltip-placement-bottomLeft .ant-tooltip-arrow{left:6px;}.ant-tooltip-placement-bottomRight .ant-tooltip-arrow{right:6px;}.ant-tooltip-placement-left .ant-tooltip-arrow,.ant-tooltip-placement-leftTop .ant-tooltip-arrow,.ant-tooltip-placement-leftBottom .ant-tooltip-arrow{right:0;transform:translateX(100%) rotate(90deg);}.ant-tooltip-placement-left .ant-tooltip-arrow{top:50%;transform:translateY(-50%) translateX(100%) rotate(90deg);}.ant-tooltip-placement-leftTop .ant-tooltip-arrow{top:2px;}.ant-tooltip-placement-leftBottom .ant-tooltip-arrow{bottom:2px;}.ant-tooltip-placement-right .ant-tooltip-arrow,.ant-tooltip-placement-rightTop .ant-tooltip-arrow,.ant-tooltip-placement-rightBottom .ant-tooltip-arrow{left:0;transform:translateX(-100%) rotate(-90deg);}.ant-tooltip-placement-right .ant-tooltip-arrow{top:50%;transform:translateY(-50%) translateX(-100%) rotate(-90deg);}.ant-tooltip-placement-rightTop .ant-tooltip-arrow{top:2px;}.ant-tooltip-placement-rightBottom .ant-tooltip-arrow{bottom:2px;}.ant-tooltip-placement-topLeft,.ant-tooltip-placement-top,.ant-tooltip-placement-topRight{padding-bottom:12px;}.ant-tooltip-placement-bottomLeft,.ant-tooltip-placement-bottom,.ant-tooltip-placement-bottomRight{padding-top:12px;}.ant-tooltip-placement-leftTop,.ant-tooltip-placement-left,.ant-tooltip-placement-leftBottom{padding-right:12px;}.ant-tooltip-placement-rightTop,.ant-tooltip-placement-right,.ant-tooltip-placement-rightBottom{padding-left:12px;}.ant-tooltip-pure{position:relative;max-width:none;}.ant-zoom-big-fast-enter,.ant-zoom-big-fast-appear{animation-duration:0.1s;animation-fill-mode:both;animation-play-state:paused;}.ant-zoom-big-fast-leave{animation-duration:0.1s;animation-fill-mode:both;animation-play-state:paused;}.ant-zoom-big-fast-enter.ant-zoom-big-fast-enter-active,.ant-zoom-big-fast-appear.ant-zoom-big-fast-appear-active{animation-name:antZoomBigIn;animation-play-state:running;}.ant-zoom-big-fast-leave.ant-zoom-big-fast-leave-active{animation-name:antZoomBigOut;animation-play-state:running;pointer-events:none;}.ant-zoom-big-fast-enter,.ant-zoom-big-fast-appear{transform:scale(0);opacity:0;animation-timing-function:cubic-bezier(0.08, 0.82, 0.17, 1);}.ant-zoom-big-fast-enter-prepare,.ant-zoom-big-fast-appear-prepare{transform:none;}.ant-zoom-big-fast-leave{animation-timing-function:cubic-bezier(0.78, 0.14, 0.15, 0.86);}[class^=\\"ant-form\\"],[class*=\\" ant-form\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-form\\"]::before,[class*=\\" ant-form\\"]::before,[class^=\\"ant-form\\"]::after,[class*=\\" ant-form\\"]::after{box-sizing:border-box;}[class^=\\"ant-form\\"] [class^=\\"ant-form\\"],[class*=\\" ant-form\\"] [class^=\\"ant-form\\"],[class^=\\"ant-form\\"] [class*=\\" ant-form\\"],[class*=\\" ant-form\\"] [class*=\\" ant-form\\"]{box-sizing:border-box;}[class^=\\"ant-form\\"] [class^=\\"ant-form\\"]::before,[class*=\\" ant-form\\"] [class^=\\"ant-form\\"]::before,[class^=\\"ant-form\\"] [class*=\\" ant-form\\"]::before,[class*=\\" ant-form\\"] [class*=\\" ant-form\\"]::before,[class^=\\"ant-form\\"] [class^=\\"ant-form\\"]::after,[class*=\\" ant-form\\"] [class^=\\"ant-form\\"]::after,[class^=\\"ant-form\\"] [class*=\\" ant-form\\"]::after,[class*=\\" ant-form\\"] [class*=\\" ant-form\\"]::after{box-sizing:border-box;}.ant-form{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';}.ant-form legend{display:block;width:100%;margin-bottom:24px;padding:0;color:rgba(255, 255, 255, 0.45);font-size:16px;line-height:inherit;border:0;border-bottom:1px solid #424242;}.ant-form label{font-size:14px;}.ant-form input[type=\\"search\\"]{box-sizing:border-box;}.ant-form input[type=\\"radio\\"],.ant-form input[type=\\"checkbox\\"]{line-height:normal;}.ant-form input[type=\\"file\\"]{display:block;}.ant-form input[type=\\"range\\"]{display:block;width:100%;}.ant-form select[multiple],.ant-form select[size]{height:auto;}.ant-form input[type='file']:focus,.ant-form input[type='radio']:focus,.ant-form input[type='checkbox']:focus{outline:0;box-shadow:0 0 0 2px rgba(0, 53, 0, 0.15);}.ant-form output{display:block;padding-top:15px;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;}.ant-form .ant-form-text{display:inline-block;padding-inline-end:12px;}.ant-form-small .ant-form-item .ant-form-item-label>label{height:24px;}.ant-form-small .ant-form-item .ant-form-item-control-input{min-height:24px;}.ant-form-large .ant-form-item .ant-form-item-label>label{height:40px;}.ant-form-large .ant-form-item .ant-form-item-control-input{min-height:40px;}.ant-form-item{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';margin-bottom:24px;vertical-align:top;}.ant-form-item-with-help{transition:none;}.ant-form-item-hidden,.ant-form-item-hidden.ant-row{display:none;}.ant-form-item-has-warning .ant-form-item-split{color:#dc4446;}.ant-form-item-has-error .ant-form-item-split{color:#d89614;}.ant-form-item .ant-form-item-label{display:inline-block;flex-grow:0;overflow:hidden;white-space:nowrap;text-align:end;vertical-align:middle;}.ant-form-item .ant-form-item-label-left{text-align:start;}.ant-form-item .ant-form-item-label-wrap{overflow:unset;line-height:1.5714285714285714 - 0.25em;white-space:unset;}.ant-form-item .ant-form-item-label >label{position:relative;display:inline-flex;align-items:center;max-width:100%;height:32px;color:rgba(255, 255, 255, 0.85);font-size:14px;}.ant-form-item .ant-form-item-label >label >.anticon{font-size:14px;vertical-align:top;}.ant-form-item .ant-form-item-label >label.ant-form-item-required:not(.ant-form-item-required-mark-optional)::before{display:inline-block;margin-inline-end:4px;color:#dc4446;font-size:14px;font-family:SimSun,sans-serif;line-height:1;content:\\"*\\";}.ant-form-hide-required-mark .ant-form-item .ant-form-item-label >label.ant-form-item-required:not(.ant-form-item-required-mark-optional)::before{display:none;}.ant-form-item .ant-form-item-label >label .ant-form-item-optional{display:inline-block;margin-inline-start:4px;color:rgba(255, 255, 255, 0.45);}.ant-form-hide-required-mark .ant-form-item .ant-form-item-label >label .ant-form-item-optional{display:none;}.ant-form-item .ant-form-item-label >label .ant-form-item-tooltip{color:rgba(255, 255, 255, 0.45);cursor:help;writing-mode:horizontal-tb;margin-inline-start:4px;}.ant-form-item .ant-form-item-label >label::after{content:\\":\\";position:relative;margin-block:0;margin-inline-start:2px;margin-inline-end:8px;}.ant-form-item .ant-form-item-label >label.ant-form-item-no-colon::after{content:\\" \\";}.ant-form-item .ant-form-item-control{display:flex;flex-direction:column;flex-grow:1;}.ant-form-item .ant-form-item-control:first-child:not([class^=\\"'ant-col-'\\"]):not([class*=\\"' ant-col-'\\"]){width:100%;}.ant-form-item .ant-form-item-control-input{position:relative;display:flex;align-items:center;min-height:32px;}.ant-form-item .ant-form-item-control-input-content{flex:auto;max-width:100%;}.ant-form-item .ant-form-item-explain,.ant-form-item .ant-form-item-extra{clear:both;color:rgba(255, 255, 255, 0.45);font-size:14px;line-height:1.5714285714285714;}.ant-form-item .ant-form-item-explain-connected{width:100%;}.ant-form-item .ant-form-item-extra{min-height:24px;transition:color 0.2s cubic-bezier(0.215, 0.61, 0.355, 1);}.ant-form-item .ant-form-item-explain-error{color:#dc4446;}.ant-form-item .ant-form-item-explain-warning{color:#d89614;}.ant-form-item-with-help .ant-form-item-explain{height:auto;opacity:1;}.ant-form-item .ant-form-item-feedback-icon{font-size:14px;text-align:center;visibility:visible;animation-name:antZoomIn;animation-duration:0.2s;animation-timing-function:cubic-bezier(0.12, 0.4, 0.29, 1.46);pointer-events:none;}.ant-form-item .ant-form-item-feedback-icon-success{color:#49aa19;}.ant-form-item .ant-form-item-feedback-icon-error{color:#dc4446;}.ant-form-item .ant-form-item-feedback-icon-warning{color:#d89614;}.ant-form-item .ant-form-item-feedback-icon-validating{color:#037003;}.ant-form-show-help{transition:opacity 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);}.ant-form-show-help-appear,.ant-form-show-help-enter{opacity:0;}.ant-form-show-help-appear-active,.ant-form-show-help-enter-active{opacity:1;}.ant-form-show-help-leave{opacity:1;}.ant-form-show-help-leave-active{opacity:0;}.ant-form-show-help .ant-form-show-help-item{overflow:hidden;transition:height 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),opacity 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1)!important;}.ant-form-show-help .ant-form-show-help-item.ant-form-show-help-item-appear,.ant-form-show-help .ant-form-show-help-item.ant-form-show-help-item-enter{transform:translateY(-5px);opacity:0;}.ant-form-show-help .ant-form-show-help-item.ant-form-show-help-item-appear-active,.ant-form-show-help .ant-form-show-help-item.ant-form-show-help-item-enter-active{transform:translateY(0);opacity:1;}.ant-form-show-help .ant-form-show-help-item.ant-form-show-help-item-leave-active{transform:translateY(-5px);}.ant-form-horizontal .ant-form-item-label{flex-grow:0;}.ant-form-horizontal .ant-form-item-control{flex:1 1 0;min-width:0;}.ant-form-horizontal .ant-form-item-label.ant-col-24+.ant-form-item-control{min-width:unset;}.ant-form-inline{display:flex;flex-wrap:wrap;}.ant-form-inline .ant-form-item{flex:none;flex-wrap:nowrap;margin-inline-end:16px;margin-bottom:0;}.ant-form-inline .ant-form-item-with-help{margin-bottom:24px;}.ant-form-inline .ant-form-item >.ant-form-item-label,.ant-form-inline .ant-form-item >.ant-form-item-control{display:inline-block;vertical-align:top;}.ant-form-inline .ant-form-item >.ant-form-item-label{flex:none;}.ant-form-inline .ant-form-item .ant-form-text{display:inline-block;}.ant-form-inline .ant-form-item .ant-form-item-has-feedback{display:inline-block;}.ant-form-vertical .ant-form-item-row{flex-direction:column;}.ant-form-vertical .ant-form-item-label>label{height:auto;}.ant-form-vertical .ant-form-item .ant-form-item-control{width:100%;}.ant-form-vertical .ant-form-item-label,.ant-col-24.ant-form-item-label,.ant-col-xl-24.ant-form-item-label{margin:0;padding:0 0 8px;white-space:initial;text-align:start;}.ant-form-vertical .ant-form-item-label >label,.ant-col-24.ant-form-item-label >label,.ant-col-xl-24.ant-form-item-label >label{margin:0;}.ant-form-vertical .ant-form-item-label >label::after,.ant-col-24.ant-form-item-label >label::after,.ant-col-xl-24.ant-form-item-label >label::after{display:none;}@media (max-width: 575px){.ant-form-item .ant-form-item-label{margin:0;padding:0 0 8px;white-space:initial;text-align:start;}.ant-form-item .ant-form-item-label >label{margin:0;}.ant-form-item .ant-form-item-label >label::after{display:none;}.ant-form .ant-form-item{flex-wrap:wrap;}.ant-form .ant-form-item .ant-form-item-label,.ant-form .ant-form-item .ant-form-item-control{flex:0 0 100%;max-width:100%;}.ant-form .ant-col-xs-24.ant-form-item-label{margin:0;padding:0 0 8px;white-space:initial;text-align:start;}.ant-form .ant-col-xs-24.ant-form-item-label >label{margin:0;}.ant-form .ant-col-xs-24.ant-form-item-label >label::after{display:none;}}@media (max-width: 767px){.ant-form .ant-col-sm-24.ant-form-item-label{margin:0;padding:0 0 8px;white-space:initial;text-align:start;}.ant-form .ant-col-sm-24.ant-form-item-label >label{margin:0;}.ant-form .ant-col-sm-24.ant-form-item-label >label::after{display:none;}}@media (max-width: 991px){.ant-form .ant-col-md-24.ant-form-item-label{margin:0;padding:0 0 8px;white-space:initial;text-align:start;}.ant-form .ant-col-md-24.ant-form-item-label >label{margin:0;}.ant-form .ant-col-md-24.ant-form-item-label >label::after{display:none;}}@media (max-width: 1199px){.ant-form .ant-col-lg-24.ant-form-item-label{margin:0;padding:0 0 8px;white-space:initial;text-align:start;}.ant-form .ant-col-lg-24.ant-form-item-label >label{margin:0;}.ant-form .ant-col-lg-24.ant-form-item-label >label::after{display:none;}}.ant-form .ant-motion-collapse-legacy{overflow:hidden;}.ant-form .ant-motion-collapse-legacy-active{transition:height 0.2s cubic-bezier(0.645, 0.045, 0.355, 1),opacity 0.2s cubic-bezier(0.645, 0.045, 0.355, 1)!important;}.ant-form .ant-motion-collapse{overflow:hidden;transition:height 0.2s cubic-bezier(0.645, 0.045, 0.355, 1),opacity 0.2s cubic-bezier(0.645, 0.045, 0.355, 1)!important;}@keyframes antZoomIn{0%{transform:scale(0.2);opacity:0;}100%{transform:scale(1);opacity:1;}}[class^=\\"ant-row\\"],[class*=\\" ant-row\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-row\\"]::before,[class*=\\" ant-row\\"]::before,[class^=\\"ant-row\\"]::after,[class*=\\" ant-row\\"]::after{box-sizing:border-box;}[class^=\\"ant-row\\"] [class^=\\"ant-row\\"],[class*=\\" ant-row\\"] [class^=\\"ant-row\\"],[class^=\\"ant-row\\"] [class*=\\" ant-row\\"],[class*=\\" ant-row\\"] [class*=\\" ant-row\\"]{box-sizing:border-box;}[class^=\\"ant-row\\"] [class^=\\"ant-row\\"]::before,[class*=\\" ant-row\\"] [class^=\\"ant-row\\"]::before,[class^=\\"ant-row\\"] [class*=\\" ant-row\\"]::before,[class*=\\" ant-row\\"] [class*=\\" ant-row\\"]::before,[class^=\\"ant-row\\"] [class^=\\"ant-row\\"]::after,[class*=\\" ant-row\\"] [class^=\\"ant-row\\"]::after,[class^=\\"ant-row\\"] [class*=\\" ant-row\\"]::after,[class*=\\" ant-row\\"] [class*=\\" ant-row\\"]::after{box-sizing:border-box;}.ant-row{display:flex;flex-flow:row wrap;min-width:0;}.ant-row::before,.ant-row::after{display:flex;}.ant-row-no-wrap{flex-wrap:nowrap;}.ant-row-start{justify-content:flex-start;}.ant-row-center{justify-content:center;}.ant-row-end{justify-content:flex-end;}.ant-row-space-between{justify-content:space-between;}.ant-row-space-around{justify-content:space-around;}.ant-row-top{align-items:flex-start;}.ant-row-middle{align-items:center;}.ant-row-bottom{align-items:flex-end;}[class^=\\"ant-input\\"],[class*=\\" ant-input\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-input\\"]::before,[class*=\\" ant-input\\"]::before,[class^=\\"ant-input\\"]::after,[class*=\\" ant-input\\"]::after{box-sizing:border-box;}[class^=\\"ant-input\\"] [class^=\\"ant-input\\"],[class*=\\" ant-input\\"] [class^=\\"ant-input\\"],[class^=\\"ant-input\\"] [class*=\\" ant-input\\"],[class*=\\" ant-input\\"] [class*=\\" ant-input\\"]{box-sizing:border-box;}[class^=\\"ant-input\\"] [class^=\\"ant-input\\"]::before,[class*=\\" ant-input\\"] [class^=\\"ant-input\\"]::before,[class^=\\"ant-input\\"] [class*=\\" ant-input\\"]::before,[class*=\\" ant-input\\"] [class*=\\" ant-input\\"]::before,[class^=\\"ant-input\\"] [class^=\\"ant-input\\"]::after,[class*=\\" ant-input\\"] [class^=\\"ant-input\\"]::after,[class^=\\"ant-input\\"] [class*=\\" ant-input\\"]::after,[class*=\\" ant-input\\"] [class*=\\" ant-input\\"]::after{box-sizing:border-box;}.ant-input{box-sizing:border-box;margin:0;padding:4px 11px;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;display:inline-block;width:100%;min-width:0;background-color:#141414;background-image:none;border-width:1px;border-style:solid;border-color:#424242;border-radius:6px;transition:all 0.2s;}.ant-input::-moz-placeholder{opacity:1;}.ant-input::placeholder{color:rgba(255, 255, 255, 0.25);user-select:none;}.ant-input:placeholder-shown{text-overflow:ellipsis;}.ant-input:hover{border-color:#198016;border-inline-end-width:1px;}.ant-input:focus,.ant-input-focused{border-color:#198016;box-shadow:0 0 0 2px rgba(0, 53, 0, 0.15);border-inline-end-width:1px;outline:0;}.ant-input-disabled,.ant-input[disabled]{color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);border-color:#424242;box-shadow:none;cursor:not-allowed;opacity:1;}.ant-input-disabled:hover,.ant-input[disabled]:hover{border-color:#424242;border-inline-end-width:1px;}.ant-input-borderless,.ant-input-borderless:hover,.ant-input-borderless:focus,.ant-input-borderless-focused,.ant-input-borderless-disabled,.ant-input-borderless[disabled]{background-color:transparent;border:none;box-shadow:none;}textarea.ant-input{max-width:100%;height:auto;min-height:32px;line-height:1.5714285714285714;vertical-align:bottom;transition:all 0.3s,height 0s;resize:vertical;}.ant-input-lg{padding:7px 11px;font-size:16px;line-height:1.5;border-radius:8px;}.ant-input-sm{padding:0px 7px;border-radius:4px;}.ant-input-rtl{direction:rtl;}.ant-input-textarea-rtl{direction:rtl;}.ant-input-status-error:not(.ant-input-disabled):not(.ant-input-borderless).ant-input{border-color:#dc4446;}.ant-input-status-error:not(.ant-input-disabled):not(.ant-input-borderless).ant-input:hover{border-color:#7e2e2f;}.ant-input-status-error:not(.ant-input-disabled):not(.ant-input-borderless).ant-input:focus,.ant-input-status-error:not(.ant-input-disabled):not(.ant-input-borderless).ant-input-focused{border-color:#dc4446;box-shadow:0 0 0 2px rgba(238, 38, 56, 0.11);border-inline-end-width:1px;outline:0;}.ant-input-status-error:not(.ant-input-disabled):not(.ant-input-borderless).ant-input .ant-input-prefix{color:#dc4446;}.ant-input-status-warning:not(.ant-input-disabled):not(.ant-input-borderless).ant-input{border-color:#d89614;}.ant-input-status-warning:not(.ant-input-disabled):not(.ant-input-borderless).ant-input:hover{border-color:#7c5914;}.ant-input-status-warning:not(.ant-input-disabled):not(.ant-input-borderless).ant-input:focus,.ant-input-status-warning:not(.ant-input-disabled):not(.ant-input-borderless).ant-input-focused{border-color:#d89614;box-shadow:0 0 0 2px rgba(173, 107, 0, 0.15);border-inline-end-width:1px;outline:0;}.ant-input-status-warning:not(.ant-input-disabled):not(.ant-input-borderless).ant-input .ant-input-prefix{color:#d89614;}.ant-input[type=\\"color\\"]{height:32px;}.ant-input[type=\\"color\\"].ant-input-lg{height:40px;}.ant-input[type=\\"color\\"].ant-input-sm{height:24px;padding-top:3px;padding-bottom:3px;}.ant-input-textarea{position:relative;}.ant-input-textarea .ant-input-textarea-suffix{position:absolute;top:0;inset-inline-end:11px;bottom:0;z-index:1;display:inline-flex;align-items:center;margin:auto;}.ant-input-textarea-status-error.ant-input-textarea-has-feedback .ant-input,.ant-input-textarea-status-warning.ant-input-textarea-has-feedback .ant-input,.ant-input-textarea-status-success.ant-input-textarea-has-feedback .ant-input,.ant-input-textarea-status-validating.ant-input-textarea-has-feedback .ant-input{padding-inline-end:24px;}.ant-input-textarea-show-count >.ant-input{height:100%;}.ant-input-textarea-show-count::after{color:rgba(255, 255, 255, 0.45);white-space:nowrap;content:attr(data-count);pointer-events:none;float:right;}.ant-input-textarea-rtl::after{float:left;}.ant-input-affix-wrapper{position:relative;display:inline-flex;width:100%;min-width:0;padding:4px 11px;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;background-color:#141414;background-image:none;border-width:1px;border-style:solid;border-color:#424242;border-radius:6px;transition:all 0.2s;}.ant-input-affix-wrapper::-moz-placeholder{opacity:1;}.ant-input-affix-wrapper::placeholder{color:rgba(255, 255, 255, 0.25);user-select:none;}.ant-input-affix-wrapper:placeholder-shown{text-overflow:ellipsis;}.ant-input-affix-wrapper:hover{border-color:#198016;border-inline-end-width:1px;}.ant-input-affix-wrapper:focus,.ant-input-affix-wrapper-focused{border-color:#198016;box-shadow:0 0 0 2px rgba(0, 53, 0, 0.15);border-inline-end-width:1px;outline:0;}.ant-input-affix-wrapper-disabled,.ant-input-affix-wrapper[disabled]{color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);border-color:#424242;box-shadow:none;cursor:not-allowed;opacity:1;}.ant-input-affix-wrapper-disabled:hover,.ant-input-affix-wrapper[disabled]:hover{border-color:#424242;border-inline-end-width:1px;}.ant-input-affix-wrapper-borderless,.ant-input-affix-wrapper-borderless:hover,.ant-input-affix-wrapper-borderless:focus,.ant-input-affix-wrapper-borderless-focused,.ant-input-affix-wrapper-borderless-disabled,.ant-input-affix-wrapper-borderless[disabled]{background-color:transparent;border:none;box-shadow:none;}textarea.ant-input-affix-wrapper{max-width:100%;height:auto;min-height:32px;line-height:1.5714285714285714;vertical-align:bottom;transition:all 0.3s,height 0s;resize:vertical;}.ant-input-affix-wrapper-lg{padding:7px 11px;font-size:16px;line-height:1.5;border-radius:8px;}.ant-input-affix-wrapper-sm{padding:0px 7px;border-radius:4px;}.ant-input-affix-wrapper-rtl{direction:rtl;}.ant-input-affix-wrapper-textarea-rtl{direction:rtl;}.ant-input-affix-wrapper:not(.ant-input-affix-wrapper-disabled):hover{border-color:#198016;border-inline-end-width:1px;z-index:1;}.ant-input-search-with-button .ant-input-affix-wrapper:not(.ant-input-affix-wrapper-disabled):hover{z-index:0;}.ant-input-affix-wrapper-focused,.ant-input-affix-wrapper:focus{z-index:1;}.ant-input-affix-wrapper-disabled .ant-input[disabled]{background:transparent;}.ant-input-affix-wrapper >input.ant-input{padding:0;font-size:inherit;border:none;border-radius:0;outline:none;}.ant-input-affix-wrapper >input.ant-input:focus{box-shadow:none!important;}.ant-input-affix-wrapper::before{width:0;visibility:hidden;content:\\"\\\\a0\\";}.ant-input-affix-wrapper .ant-input-prefix,.ant-input-affix-wrapper .ant-input-suffix{display:flex;flex:none;align-items:center;}.ant-input-affix-wrapper .ant-input-prefix >*:not(:last-child),.ant-input-affix-wrapper .ant-input-suffix >*:not(:last-child){margin-inline-end:8px;}.ant-input-affix-wrapper .ant-input-show-count-suffix{color:rgba(255, 255, 255, 0.45);}.ant-input-affix-wrapper .ant-input-show-count-has-suffix{margin-inline-end:4px;}.ant-input-affix-wrapper .ant-input-prefix{margin-inline-end:4px;}.ant-input-affix-wrapper .ant-input-suffix{margin-inline-start:4px;}.ant-input-affix-wrapper .ant-input-clear-icon{margin:0;color:rgba(255, 255, 255, 0.25);font-size:12px;vertical-align:-1px;cursor:pointer;transition:color 0.3s;}.ant-input-affix-wrapper .ant-input-clear-icon:hover{color:rgba(255, 255, 255, 0.45);}.ant-input-affix-wrapper .ant-input-clear-icon:active{color:rgba(255, 255, 255, 0.85);}.ant-input-affix-wrapper .ant-input-clear-icon-hidden{visibility:hidden;}.ant-input-affix-wrapper .ant-input-clear-icon-has-suffix{margin:0 4px;}.ant-input-affix-wrapper-textarea-with-clear-btn{padding:0!important;border:0!important;}.ant-input-affix-wrapper-textarea-with-clear-btn .ant-input-clear-icon{position:absolute;inset-block-start:8px;inset-inline-end:8px;z-index:1;}.ant-input-affix-wrapper .anticon.ant-input-password-icon{color:rgba(255, 255, 255, 0.45);cursor:pointer;transition:all 0.3s;}.ant-input-affix-wrapper .anticon.ant-input-password-icon:hover{color:rgba(255, 255, 255, 0.85);}.ant-input-affix-wrapper-status-error:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper{border-color:#dc4446;}.ant-input-affix-wrapper-status-error:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper:hover{border-color:#7e2e2f;}.ant-input-affix-wrapper-status-error:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper:focus,.ant-input-affix-wrapper-status-error:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper-focused{border-color:#dc4446;box-shadow:0 0 0 2px rgba(238, 38, 56, 0.11);border-inline-end-width:1px;outline:0;}.ant-input-affix-wrapper-status-error:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper .ant-input-prefix{color:#dc4446;}.ant-input-affix-wrapper-status-warning:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper{border-color:#d89614;}.ant-input-affix-wrapper-status-warning:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper:hover{border-color:#7c5914;}.ant-input-affix-wrapper-status-warning:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper:focus,.ant-input-affix-wrapper-status-warning:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper-focused{border-color:#d89614;box-shadow:0 0 0 2px rgba(173, 107, 0, 0.15);border-inline-end-width:1px;outline:0;}.ant-input-affix-wrapper-status-warning:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper .ant-input-prefix{color:#d89614;}.ant-input-group{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;display:table;width:100%;border-collapse:separate;border-spacing:0;}.ant-input-group[class*='col-']{padding-inline-end:8px;}.ant-input-group[class*='col-']:last-child{padding-inline-end:0;}.ant-input-group-lg .ant-input,.ant-input-group-lg>.ant-input-group-addon{padding:7px 11px;font-size:16px;line-height:1.5;border-radius:8px;}.ant-input-group-sm .ant-input,.ant-input-group-sm>.ant-input-group-addon{padding:0px 7px;border-radius:4px;}.ant-input-group >.ant-input{display:table-cell;}.ant-input-group >.ant-input:not(:first-child):not(:last-child){border-radius:0;}.ant-input-group .ant-input-group-addon,.ant-input-group .ant-input-group-wrap{display:table-cell;width:1px;white-space:nowrap;vertical-align:middle;}.ant-input-group .ant-input-group-addon:not(:first-child):not(:last-child),.ant-input-group .ant-input-group-wrap:not(:first-child):not(:last-child){border-radius:0;}.ant-input-group .ant-input-group-wrap>*{display:block!important;}.ant-input-group .ant-input-group-addon{position:relative;padding:0 11px;color:rgba(255, 255, 255, 0.85);font-weight:normal;font-size:14px;text-align:center;background-color:rgba(255, 255, 255, 0.04);border:1px solid #424242;border-radius:6px;transition:all 0.3s;line-height:1;}.ant-input-group .ant-input-group-addon .ant-select{margin:-5px -11px;}.ant-input-group .ant-input-group-addon .ant-select.ant-select-single:not(.ant-select-customize-input) .ant-select-selector{background-color:inherit;border:1px solid transparent;box-shadow:none;}.ant-input-group .ant-input-group-addon .ant-select-open .ant-select-selector,.ant-input-group .ant-input-group-addon .ant-select-focused .ant-select-selector{color:#037003;}.ant-input-group .ant-input-group-addon .ant-cascader-picker{margin:-9px -11px;background-color:transparent;}.ant-input-group .ant-input-group-addon .ant-cascader-picker .ant-cascader-input{text-align:start;border:0;box-shadow:none;}.ant-input-group .ant-input-group-addon:first-child{border-inline-end:0;}.ant-input-group .ant-input-group-addon:last-child{border-inline-start:0;}.ant-input-group .ant-input{float:inline-start;width:100%;margin-bottom:0;text-align:inherit;}.ant-input-group .ant-input:focus{z-index:1;border-inline-end-width:1px;}.ant-input-group .ant-input:hover{z-index:1;border-inline-end-width:1px;}.ant-input-search-with-button .ant-input-group .ant-input:hover{z-index:0;}.ant-input-group >.ant-input:first-child,.ant-input-group .ant-input-group-addon:first-child{border-start-end-radius:0;border-end-end-radius:0;}.ant-input-group >.ant-input:first-child .ant-select .ant-select-selector,.ant-input-group .ant-input-group-addon:first-child .ant-select .ant-select-selector{border-start-end-radius:0;border-end-end-radius:0;}.ant-input-group >.ant-input-affix-wrapper:not(:first-child) .ant-input{border-start-start-radius:0;border-end-start-radius:0;}.ant-input-group >.ant-input-affix-wrapper:not(:last-child) .ant-input{border-start-end-radius:0;border-end-end-radius:0;}.ant-input-group >.ant-input:last-child,.ant-input-group .ant-input-group-addon:last-child{border-start-start-radius:0;border-end-start-radius:0;}.ant-input-group >.ant-input:last-child .ant-select .ant-select-selector,.ant-input-group .ant-input-group-addon:last-child .ant-select .ant-select-selector{border-start-start-radius:0;border-end-start-radius:0;}.ant-input-group .ant-input-affix-wrapper:not(:last-child){border-start-end-radius:0;border-end-end-radius:0;}.ant-input-search .ant-input-group .ant-input-affix-wrapper:not(:last-child){border-start-start-radius:6px;border-end-start-radius:6px;}.ant-input-group .ant-input-affix-wrapper:not(:first-child),.ant-input-search .ant-input-group .ant-input-affix-wrapper:not(:first-child){border-start-start-radius:0;border-end-start-radius:0;}.ant-input-group.ant-input-group-compact{display:block;}.ant-input-group.ant-input-group-compact::before{display:table;content:\\"\\";}.ant-input-group.ant-input-group-compact::after{display:table;clear:both;content:\\"\\";}.ant-input-group.ant-input-group-compact .ant-input-group-addon:not(:first-child):not(:last-child),.ant-input-group.ant-input-group-compact .ant-input-group-wrap:not(:first-child):not(:last-child),.ant-input-group.ant-input-group-compact >.ant-input:not(:first-child):not(:last-child){border-inline-end-width:1px;}.ant-input-group.ant-input-group-compact .ant-input-group-addon:not(:first-child):not(:last-child):hover,.ant-input-group.ant-input-group-compact .ant-input-group-wrap:not(:first-child):not(:last-child):hover,.ant-input-group.ant-input-group-compact >.ant-input:not(:first-child):not(:last-child):hover{z-index:1;}.ant-input-group.ant-input-group-compact .ant-input-group-addon:not(:first-child):not(:last-child):focus,.ant-input-group.ant-input-group-compact .ant-input-group-wrap:not(:first-child):not(:last-child):focus,.ant-input-group.ant-input-group-compact >.ant-input:not(:first-child):not(:last-child):focus{z-index:1;}.ant-input-group.ant-input-group-compact>*{display:inline-block;float:none;vertical-align:top;border-radius:0;}.ant-input-group.ant-input-group-compact>.ant-input-affix-wrapper{display:inline-flex;}.ant-input-group.ant-input-group-compact>.ant-picker-range{display:inline-flex;}.ant-input-group.ant-input-group-compact>*:not(:last-child){margin-inline-end:-1px;border-inline-end-width:1px;}.ant-input-group.ant-input-group-compact .ant-input{float:none;}.ant-input-group.ant-input-group-compact>.ant-select>.ant-select-selector,.ant-input-group.ant-input-group-compact>.ant-select-auto-complete .ant-input,.ant-input-group.ant-input-group-compact>.ant-cascader-picker .ant-input,.ant-input-group.ant-input-group-compact>.ant-input-group-wrapper .ant-input{border-inline-end-width:1px;border-radius:0;}.ant-input-group.ant-input-group-compact>.ant-select>.ant-select-selector:hover,.ant-input-group.ant-input-group-compact>.ant-select-auto-complete .ant-input:hover,.ant-input-group.ant-input-group-compact>.ant-cascader-picker .ant-input:hover,.ant-input-group.ant-input-group-compact>.ant-input-group-wrapper .ant-input:hover{z-index:1;}.ant-input-group.ant-input-group-compact>.ant-select>.ant-select-selector:focus,.ant-input-group.ant-input-group-compact>.ant-select-auto-complete .ant-input:focus,.ant-input-group.ant-input-group-compact>.ant-cascader-picker .ant-input:focus,.ant-input-group.ant-input-group-compact>.ant-input-group-wrapper .ant-input:focus{z-index:1;}.ant-input-group.ant-input-group-compact>.ant-select-focused{z-index:1;}.ant-input-group.ant-input-group-compact>.ant-select>.ant-select-arrow{z-index:1;}.ant-input-group.ant-input-group-compact>*:first-child,.ant-input-group.ant-input-group-compact>.ant-select:first-child>.ant-select-selector,.ant-input-group.ant-input-group-compact>.ant-select-auto-complete:first-child .ant-input,.ant-input-group.ant-input-group-compact>.ant-cascader-picker:first-child .ant-input{border-start-start-radius:6px;border-end-start-radius:6px;}.ant-input-group.ant-input-group-compact>*:last-child,.ant-input-group.ant-input-group-compact>.ant-select:last-child>.ant-select-selector,.ant-input-group.ant-input-group-compact>.ant-cascader-picker:last-child .ant-input,.ant-input-group.ant-input-group-compact>.ant-cascader-picker-focused:last-child .ant-input{border-inline-end-width:1px;border-start-end-radius:6px;border-end-end-radius:6px;}.ant-input-group.ant-input-group-compact>.ant-select-auto-complete .ant-input{vertical-align:top;}.ant-input-group.ant-input-group-compact .ant-input-group-wrapper+.ant-input-group-wrapper{margin-inline-start:-1px;}.ant-input-group.ant-input-group-compact .ant-input-group-wrapper+.ant-input-group-wrapper .ant-input-affix-wrapper{border-radius:0;}.ant-input-group.ant-input-group-compact .ant-input-group-wrapper:not(:last-child).ant-input-search>.ant-input-group>.ant-input-group-addon>.ant-input-search-button{border-radius:0;}.ant-input-group.ant-input-group-compact .ant-input-group-wrapper:not(:last-child).ant-input-search>.ant-input-group>.ant-input{border-start-start-radius:6px;border-start-end-radius:0;border-end-end-radius:0;border-end-start-radius:6px;}.ant-input-group.ant-input-group-sm .ant-btn{font-size:12px;height:24px;line-height:normal;}.ant-input-group.ant-input-group-lg .ant-btn{font-size:16px;height:40px;line-height:normal;}.ant-input-group.ant-input-group-lg .ant-select-single .ant-select-selector{height:40px;}.ant-input-group.ant-input-group-lg .ant-select-single .ant-select-selector .ant-select-selection-item,.ant-input-group.ant-input-group-lg .ant-select-single .ant-select-selector .ant-select-selection-placeholder{line-height:38px;}.ant-input-group.ant-input-group-lg .ant-select-single .ant-select-selector .ant-select-selection-search-input{height:40px;}.ant-input-group.ant-input-group-sm .ant-select-single .ant-select-selector{height:24px;}.ant-input-group.ant-input-group-sm .ant-select-single .ant-select-selector .ant-select-selection-item,.ant-input-group.ant-input-group-sm .ant-select-single .ant-select-selector .ant-select-selection-placeholder{line-height:22px;}.ant-input-group.ant-input-group-sm .ant-select-single .ant-select-selector .ant-select-selection-search-input{height:24px;}.ant-input-group-rtl{direction:rtl;}.ant-input-group-wrapper{display:inline-block;width:100%;text-align:start;vertical-align:top;}.ant-input-group-wrapper-rtl{direction:rtl;}.ant-input-group-wrapper-lg .ant-input-group-addon{border-radius:8px;}.ant-input-group-wrapper-sm .ant-input-group-addon{border-radius:4px;}.ant-input-group-wrapper-status-error .ant-input-group-addon{color:#dc4446;border-color:#dc4446;}.ant-input-group-wrapper-status-warning .ant-input-group-addon:last-child{color:#49aa19;border-color:#49aa19;}.ant-input-search .ant-input:hover,.ant-input-search .ant-input:focus{border-color:#198016;}.ant-input-search .ant-input:hover +.ant-input-group-addon .ant-input-search-button:not(.ant-btn-primary),.ant-input-search .ant-input:focus +.ant-input-group-addon .ant-input-search-button:not(.ant-btn-primary){border-inline-start-color:#198016;}.ant-input-search .ant-input-affix-wrapper{border-radius:0;}.ant-input-search .ant-input-lg{line-height:1.4998;}.ant-input-search >.ant-input-group >.ant-input-group-addon:last-child{inset-inline-start:-1px;padding:0;border:0;}.ant-input-search >.ant-input-group >.ant-input-group-addon:last-child .ant-input-search-button{padding-top:0;padding-bottom:0;border-start-start-radius:0;border-start-end-radius:6px;border-end-end-radius:6px;border-end-start-radius:0;}.ant-input-search >.ant-input-group >.ant-input-group-addon:last-child .ant-input-search-button:not(.ant-btn-primary){color:rgba(255, 255, 255, 0.45);}.ant-input-search >.ant-input-group >.ant-input-group-addon:last-child .ant-input-search-button:not(.ant-btn-primary):hover{color:#198016;}.ant-input-search >.ant-input-group >.ant-input-group-addon:last-child .ant-input-search-button:not(.ant-btn-primary):active{color:#075a07;}.ant-input-search >.ant-input-group >.ant-input-group-addon:last-child .ant-input-search-button:not(.ant-btn-primary).ant-btn-loading::before{inset-inline-start:0;inset-inline-end:0;inset-block-start:0;inset-block-end:0;}.ant-input-search .ant-input-search-button{height:32px;}.ant-input-search .ant-input-search-button:hover,.ant-input-search .ant-input-search-button:focus{z-index:1;}.ant-input-search-large .ant-input-search-button{height:40px;}.ant-input-search-small .ant-input-search-button{height:24px;}.ant-input-search-rtl{direction:rtl;}.ant-input-search.ant-input-compact-item:not(.ant-input-compact-last-item) .ant-input-group-addon .ant-input-search-button{margin-inline-end:-1px;border-radius:0;}.ant-input-search.ant-input-compact-item:not(.ant-input-compact-first-item) .ant-input,.ant-input-search.ant-input-compact-item:not(.ant-input-compact-first-item) .ant-input-affix-wrapper{border-radius:0;}.ant-input-search.ant-input-compact-item >.ant-input-group-addon .ant-input-search-button:hover,.ant-input-search.ant-input-compact-item >.ant-input:hover,.ant-input-search.ant-input-compact-item .ant-input-affix-wrapper:hover,.ant-input-search.ant-input-compact-item >.ant-input-group-addon .ant-input-search-button:focus,.ant-input-search.ant-input-compact-item >.ant-input:focus,.ant-input-search.ant-input-compact-item .ant-input-affix-wrapper:focus,.ant-input-search.ant-input-compact-item >.ant-input-group-addon .ant-input-search-button:active,.ant-input-search.ant-input-compact-item >.ant-input:active,.ant-input-search.ant-input-compact-item .ant-input-affix-wrapper:active{z-index:2;}.ant-input-search.ant-input-compact-item >.ant-input-affix-wrapper-focused{z-index:2;}.ant-input-compact-item:not(.ant-input-compact-last-item){margin-inline-end:-1px;}.ant-input-compact-item:hover,.ant-input-compact-item:focus,.ant-input-compact-item:active{z-index:2;}.ant-input-compact-item[disabled]{z-index:0;}.ant-input-compact-item:not(.ant-input-compact-first-item):not(.ant-input-compact-last-item){border-radius:0;}.ant-input-compact-item:not(.ant-input-compact-last-item).ant-input-compact-first-item,.ant-input-compact-item:not(.ant-input-compact-last-item).ant-input-compact-first-item.ant-input-sm,.ant-input-compact-item:not(.ant-input-compact-last-item).ant-input-compact-first-item.ant-input-lg{border-start-end-radius:0;border-end-end-radius:0;}.ant-input-compact-item:not(.ant-input-compact-first-item).ant-input-compact-last-item,.ant-input-compact-item:not(.ant-input-compact-first-item).ant-input-compact-last-item.ant-input-sm,.ant-input-compact-item:not(.ant-input-compact-first-item).ant-input-compact-last-item.ant-input-lg{border-start-start-radius:0;border-end-start-radius:0;}[class^=\\"ant-image\\"],[class*=\\" ant-image\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-image\\"]::before,[class*=\\" ant-image\\"]::before,[class^=\\"ant-image\\"]::after,[class*=\\" ant-image\\"]::after{box-sizing:border-box;}[class^=\\"ant-image\\"] [class^=\\"ant-image\\"],[class*=\\" ant-image\\"] [class^=\\"ant-image\\"],[class^=\\"ant-image\\"] [class*=\\" ant-image\\"],[class*=\\" ant-image\\"] [class*=\\" ant-image\\"]{box-sizing:border-box;}[class^=\\"ant-image\\"] [class^=\\"ant-image\\"]::before,[class*=\\" ant-image\\"] [class^=\\"ant-image\\"]::before,[class^=\\"ant-image\\"] [class*=\\" ant-image\\"]::before,[class*=\\" ant-image\\"] [class*=\\" ant-image\\"]::before,[class^=\\"ant-image\\"] [class^=\\"ant-image\\"]::after,[class*=\\" ant-image\\"] [class^=\\"ant-image\\"]::after,[class^=\\"ant-image\\"] [class*=\\" ant-image\\"]::after,[class*=\\" ant-image\\"] [class*=\\" ant-image\\"]::after{box-sizing:border-box;}.ant-image{position:relative;display:inline-block;}.ant-image .ant-image-img{width:100%;height:auto;vertical-align:middle;}.ant-image .ant-image-img-placeholder{background-color:rgba(255, 255, 255, 0.08);background-image:url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTQuNSAyLjVoLTEzQS41LjUgMCAwIDAgMSAzdjEwYS41LjUgMCAwIDAgLjUuNWgxM2EuNS41IDAgMCAwIC41LS41VjNhLjUuNSAwIDAgMC0uNS0uNXpNNS4yODEgNC43NWExIDEgMCAwIDEgMCAyIDEgMSAwIDAgMSAwLTJ6bTguMDMgNi44M2EuMTI3LjEyNyAwIDAgMS0uMDgxLjAzSDIuNzY5YS4xMjUuMTI1IDAgMCAxLS4wOTYtLjIwN2wyLjY2MS0zLjE1NmEuMTI2LjEyNiAwIDAgMSAuMTc3LS4wMTZsLjAxNi4wMTZMNy4wOCAxMC4wOWwyLjQ3LTIuOTNhLjEyNi4xMjYgMCAwIDEgLjE3Ny0uMDE2bC4wMTUuMDE2IDMuNTg4IDQuMjQ0YS4xMjcuMTI3IDAgMCAxLS4wMi4xNzV6IiBmaWxsPSIjOEM4QzhDIiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4=');background-repeat:no-repeat;background-position:center center;background-size:30%;}.ant-image .ant-image-mask{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#fff;background:rgba(0, 0, 0, 0.5);cursor:pointer;opacity:0;transition:opacity 0.3s;}.ant-image .ant-image-mask .ant-image-mask-info{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding:0 4px;}.ant-image .ant-image-mask .ant-image-mask-info .anticon{margin-inline-end:4px;}.ant-image .ant-image-mask .ant-image-mask-info .anticon svg{vertical-align:baseline;}.ant-image .ant-image-mask:hover{opacity:1;}.ant-image .ant-image-placeholder{position:absolute;inset:0;}.ant-image-preview-root .ant-image-preview{height:100%;text-align:center;pointer-events:none;}.ant-image-preview-root .ant-image-preview-body{position:absolute;inset:0;overflow:hidden;}.ant-image-preview-root .ant-image-preview-img{max-width:100%;max-height:100%;vertical-align:middle;transform:scale3d(1, 1, 1);cursor:grab;transition:transform 0.3s cubic-bezier(0.215, 0.61, 0.355, 1) 0s;user-select:none;pointer-events:auto;}.ant-image-preview-root .ant-image-preview-img-wrapper{position:absolute;inset:0;transition:transform 0.3s cubic-bezier(0.215, 0.61, 0.355, 1) 0s;display:flex;justify-content:center;align-items:center;}.ant-image-preview-root .ant-image-preview-img-wrapper::before{display:inline-block;width:1px;height:50%;margin-inline-end:-1px;content:\\"\\";}.ant-image-preview-root .ant-image-preview-moving .ant-image-preview-preview-img{cursor:grabbing;}.ant-image-preview-root .ant-image-preview-moving .ant-image-preview-preview-img-wrapper{transition-duration:0s;}.ant-image-preview-root .ant-image-preview-wrap{z-index:1080;}.ant-image-preview-operations-wrapper{position:fixed;inset-block-start:0;inset-inline-end:0;z-index:1081;width:100%;}.ant-image-preview-operations{box-sizing:border-box;margin:0;padding:0;color:rgb(255, 255, 255);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:flex;flex-direction:row-reverse;align-items:center;background:rgba(0, 0, 0, 0.1);pointer-events:auto;}.ant-image-preview-operations-operation{margin-inline-start:12px;padding:12px;cursor:pointer;transition:all 0.3s;user-select:none;}.ant-image-preview-operations-operation:hover{background:rgba(0, 0, 0, 0.2);}.ant-image-preview-operations-operation-disabled{color:rgba(255, 255, 255, 0.25);pointer-events:none;}.ant-image-preview-operations-operation:last-of-type{margin-inline-start:0;}.ant-image-preview-operations-progress{position:absolute;left:50%;transform:translateX(-50%);}.ant-image-preview-operations-icon{font-size:18px;}.ant-image-preview-switch-left,.ant-image-preview-switch-right{position:fixed;inset-block-start:50%;z-index:1081;display:flex;align-items:center;justify-content:center;width:40px;height:40px;margin-top:-20px;color:rgb(255, 255, 255);background:rgba(0, 0, 0, 0.1);border-radius:50%;transform:translateY(-50%);cursor:pointer;transition:all 0.3s;pointer-events:auto;user-select:none;}.ant-image-preview-switch-left:hover,.ant-image-preview-switch-right:hover{background:rgba(0, 0, 0, 0.2);}.ant-image-preview-switch-left-disabled,.ant-image-preview-switch-right-disabled,.ant-image-preview-switch-left-disabled:hover,.ant-image-preview-switch-right-disabled:hover{color:rgba(255, 255, 255, 0.25);background:transparent;cursor:not-allowed;}.ant-image-preview-switch-left-disabled >.anticon,.ant-image-preview-switch-right-disabled >.anticon,.ant-image-preview-switch-left-disabled:hover >.anticon,.ant-image-preview-switch-right-disabled:hover >.anticon{cursor:not-allowed;}.ant-image-preview-switch-left >.anticon,.ant-image-preview-switch-right >.anticon{font-size:18px;}.ant-image-preview-switch-left{inset-inline-start:12px;}.ant-image-preview-switch-right{inset-inline-end:12px;}.ant-image-preview-root .ant-image-preview.ant-zoom-enter,.ant-image-preview-root .ant-image-preview.ant-zoom-appear{transform:none;opacity:0;animation-duration:0.3s;user-select:none;}.ant-image-preview-root .ant-image-preview.ant-zoom-leave .ant-image-preview-content{pointer-events:none;}.ant-image-preview-root .ant-image-preview-mask{position:fixed;top:0;inset-inline-end:0;bottom:0;inset-inline-start:0;z-index:1000;height:100%;background-color:rgba(0, 0, 0, 0.45);}.ant-image-preview-root .ant-image-preview-mask .ant-image-preview-hidden{display:none;}.ant-image-preview-root .ant-image-preview-wrap{position:fixed;top:0;inset-inline-end:0;bottom:0;inset-inline-start:0;overflow:auto;outline:0;-webkit-overflow-scrolling:touch;}.ant-image-preview-root .ant-fade-enter,.ant-image-preview-root .ant-fade-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-image-preview-root .ant-fade-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-image-preview-root .ant-fade-enter.ant-fade-enter-active,.ant-image-preview-root .ant-fade-appear.ant-fade-appear-active{animation-name:antFadeIn;animation-play-state:running;}.ant-image-preview-root .ant-fade-leave.ant-fade-leave-active{animation-name:antFadeOut;animation-play-state:running;pointer-events:none;}.ant-image-preview-root .ant-fade-enter,.ant-image-preview-root .ant-fade-appear{opacity:0;animation-timing-function:linear;}.ant-image-preview-root .ant-fade-leave{animation-timing-function:linear;}.ant-image-preview-root .ant-zoom-enter,.ant-image-preview-root .ant-zoom-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-image-preview-root .ant-zoom-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-image-preview-root .ant-zoom-enter.ant-zoom-enter-active,.ant-image-preview-root .ant-zoom-appear.ant-zoom-appear-active{animation-name:antZoomIn;animation-play-state:running;}.ant-image-preview-root .ant-zoom-leave.ant-zoom-leave-active{animation-name:antZoomOut;animation-play-state:running;pointer-events:none;}.ant-image-preview-root .ant-zoom-enter,.ant-image-preview-root .ant-zoom-appear{transform:scale(0);opacity:0;animation-timing-function:cubic-bezier(0.08, 0.82, 0.17, 1);}.ant-image-preview-root .ant-zoom-enter-prepare,.ant-image-preview-root .ant-zoom-appear-prepare{transform:none;}.ant-image-preview-root .ant-zoom-leave{animation-timing-function:cubic-bezier(0.78, 0.14, 0.15, 0.86);}.ant-fade-enter,.ant-fade-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-fade-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-fade-enter.ant-fade-enter-active,.ant-fade-appear.ant-fade-appear-active{animation-name:antFadeIn;animation-play-state:running;}.ant-fade-leave.ant-fade-leave-active{animation-name:antFadeOut;animation-play-state:running;pointer-events:none;}.ant-fade-enter,.ant-fade-appear{opacity:0;animation-timing-function:linear;}.ant-fade-leave{animation-timing-function:linear;}@keyframes antZoomOut{0%{transform:scale(1);}100%{transform:scale(0.2);opacity:0;}}[class^=\\"ant-input-number\\"],[class*=\\" ant-input-number\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-input-number\\"]::before,[class*=\\" ant-input-number\\"]::before,[class^=\\"ant-input-number\\"]::after,[class*=\\" ant-input-number\\"]::after{box-sizing:border-box;}[class^=\\"ant-input-number\\"] [class^=\\"ant-input-number\\"],[class*=\\" ant-input-number\\"] [class^=\\"ant-input-number\\"],[class^=\\"ant-input-number\\"] [class*=\\" ant-input-number\\"],[class*=\\" ant-input-number\\"] [class*=\\" ant-input-number\\"]{box-sizing:border-box;}[class^=\\"ant-input-number\\"] [class^=\\"ant-input-number\\"]::before,[class*=\\" ant-input-number\\"] [class^=\\"ant-input-number\\"]::before,[class^=\\"ant-input-number\\"] [class*=\\" ant-input-number\\"]::before,[class*=\\" ant-input-number\\"] [class*=\\" ant-input-number\\"]::before,[class^=\\"ant-input-number\\"] [class^=\\"ant-input-number\\"]::after,[class*=\\" ant-input-number\\"] [class^=\\"ant-input-number\\"]::after,[class^=\\"ant-input-number\\"] [class*=\\" ant-input-number\\"]::after,[class*=\\" ant-input-number\\"] [class*=\\" ant-input-number\\"]::after{box-sizing:border-box;}.ant-input-number{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;display:inline-block;width:90px;min-width:0;background-color:#141414;background-image:none;border-width:1px;border-style:solid;border-color:#424242;border-radius:6px;transition:all 0.2s;border:1px solid #424242;}.ant-input-number::-moz-placeholder{opacity:1;}.ant-input-number::placeholder{color:rgba(255, 255, 255, 0.25);user-select:none;}.ant-input-number:placeholder-shown{text-overflow:ellipsis;}.ant-input-number:hover{border-color:#198016;border-inline-end-width:1px;}.ant-input-number:focus,.ant-input-number-focused{border-color:#198016;box-shadow:0 0 0 2px rgba(0, 53, 0, 0.15);border-inline-end-width:1px;outline:0;}.ant-input-number-disabled,.ant-input-number[disabled]{color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);border-color:#424242;box-shadow:none;cursor:not-allowed;opacity:1;}.ant-input-number-disabled:hover,.ant-input-number[disabled]:hover{border-color:#424242;border-inline-end-width:1px;}.ant-input-number-borderless,.ant-input-number-borderless:hover,.ant-input-number-borderless:focus,.ant-input-number-borderless-focused,.ant-input-number-borderless-disabled,.ant-input-number-borderless[disabled]{background-color:transparent;border:none;box-shadow:none;}textarea.ant-input-number{max-width:100%;height:auto;min-height:32px;line-height:1.5714285714285714;vertical-align:bottom;transition:all 0.3s,height 0s;resize:vertical;}.ant-input-number-lg{padding:0;font-size:16px;border-radius:8px;}.ant-input-number-lg input.ant-input-number-input{height:38px;}.ant-input-number-sm{padding:0;border-radius:4px;}.ant-input-number-sm input.ant-input-number-input{height:22px;padding:0 7px;}.ant-input-number-rtl{direction:rtl;}.ant-input-number-rtl .ant-input-number-input{direction:rtl;}.ant-input-number-textarea-rtl{direction:rtl;}.ant-input-number-status-error:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number{border-color:#dc4446;}.ant-input-number-status-error:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number:hover{border-color:#7e2e2f;}.ant-input-number-status-error:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number:focus,.ant-input-number-status-error:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number-focused{border-color:#dc4446;box-shadow:0 0 0 2px rgba(238, 38, 56, 0.11);border-inline-end-width:1px;outline:0;}.ant-input-number-status-error:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number .ant-input-number-prefix{color:#dc4446;}.ant-input-number-status-warning:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number{border-color:#d89614;}.ant-input-number-status-warning:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number:hover{border-color:#7c5914;}.ant-input-number-status-warning:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number:focus,.ant-input-number-status-warning:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number-focused{border-color:#d89614;box-shadow:0 0 0 2px rgba(173, 107, 0, 0.15);border-inline-end-width:1px;outline:0;}.ant-input-number-status-warning:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number .ant-input-number-prefix{color:#d89614;}.ant-input-number-focused{border-color:#198016;box-shadow:0 0 0 2px rgba(0, 53, 0, 0.15);border-inline-end-width:1px;outline:0;}.ant-input-number-disabled{color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);border-color:#424242;box-shadow:none;cursor:not-allowed;opacity:1;}.ant-input-number-disabled:hover{border-color:#424242;border-inline-end-width:1px;}.ant-input-number-disabled .ant-input-number-input{cursor:not-allowed;}.ant-input-number-out-of-range input{color:#dc4446;}.ant-input-number-group{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;display:table;width:100%;border-collapse:separate;border-spacing:0;}.ant-input-number-group[class*='col-']{padding-inline-end:8px;}.ant-input-number-group[class*='col-']:last-child{padding-inline-end:0;}.ant-input-number-group-lg .ant-input-number,.ant-input-number-group-lg>.ant-input-number-group-addon{padding:7px 11px;font-size:16px;line-height:1.5;border-radius:8px;}.ant-input-number-group-sm .ant-input-number,.ant-input-number-group-sm>.ant-input-number-group-addon{padding:0px 7px;border-radius:4px;}.ant-input-number-group >.ant-input-number{display:table-cell;}.ant-input-number-group >.ant-input-number:not(:first-child):not(:last-child){border-radius:0;}.ant-input-number-group .ant-input-number-group-addon,.ant-input-number-group .ant-input-number-group-wrap{display:table-cell;width:1px;white-space:nowrap;vertical-align:middle;}.ant-input-number-group .ant-input-number-group-addon:not(:first-child):not(:last-child),.ant-input-number-group .ant-input-number-group-wrap:not(:first-child):not(:last-child){border-radius:0;}.ant-input-number-group .ant-input-number-group-wrap>*{display:block!important;}.ant-input-number-group .ant-input-number-group-addon{position:relative;padding:0 11px;color:rgba(255, 255, 255, 0.85);font-weight:normal;font-size:14px;text-align:center;background-color:rgba(255, 255, 255, 0.04);border:1px solid #424242;border-radius:6px;transition:all 0.3s;line-height:1;}.ant-input-number-group .ant-input-number-group-addon .ant-select{margin:-5px -11px;}.ant-input-number-group .ant-input-number-group-addon .ant-select.ant-select-single:not(.ant-select-customize-input) .ant-select-selector{background-color:inherit;border:1px solid transparent;box-shadow:none;}.ant-input-number-group .ant-input-number-group-addon .ant-select-open .ant-select-selector,.ant-input-number-group .ant-input-number-group-addon .ant-select-focused .ant-select-selector{color:#037003;}.ant-input-number-group .ant-input-number-group-addon .ant-cascader-picker{margin:-9px -11px;background-color:transparent;}.ant-input-number-group .ant-input-number-group-addon .ant-cascader-picker .ant-cascader-input{text-align:start;border:0;box-shadow:none;}.ant-input-number-group .ant-input-number-group-addon:first-child{border-inline-end:0;}.ant-input-number-group .ant-input-number-group-addon:last-child{border-inline-start:0;}.ant-input-number-group .ant-input-number{float:inline-start;width:100%;margin-bottom:0;text-align:inherit;}.ant-input-number-group .ant-input-number:focus{z-index:1;border-inline-end-width:1px;}.ant-input-number-group .ant-input-number:hover{z-index:1;border-inline-end-width:1px;}.ant-input-number-search-with-button .ant-input-number-group .ant-input-number:hover{z-index:0;}.ant-input-number-group >.ant-input-number:first-child,.ant-input-number-group .ant-input-number-group-addon:first-child{border-start-end-radius:0;border-end-end-radius:0;}.ant-input-number-group >.ant-input-number:first-child .ant-select .ant-select-selector,.ant-input-number-group .ant-input-number-group-addon:first-child .ant-select .ant-select-selector{border-start-end-radius:0;border-end-end-radius:0;}.ant-input-number-group >.ant-input-number-affix-wrapper:not(:first-child) .ant-input-number{border-start-start-radius:0;border-end-start-radius:0;}.ant-input-number-group >.ant-input-number-affix-wrapper:not(:last-child) .ant-input-number{border-start-end-radius:0;border-end-end-radius:0;}.ant-input-number-group >.ant-input-number:last-child,.ant-input-number-group .ant-input-number-group-addon:last-child{border-start-start-radius:0;border-end-start-radius:0;}.ant-input-number-group >.ant-input-number:last-child .ant-select .ant-select-selector,.ant-input-number-group .ant-input-number-group-addon:last-child .ant-select .ant-select-selector{border-start-start-radius:0;border-end-start-radius:0;}.ant-input-number-group .ant-input-number-affix-wrapper:not(:last-child){border-start-end-radius:0;border-end-end-radius:0;}.ant-input-number-search .ant-input-number-group .ant-input-number-affix-wrapper:not(:last-child){border-start-start-radius:6px;border-end-start-radius:6px;}.ant-input-number-group .ant-input-number-affix-wrapper:not(:first-child),.ant-input-number-search .ant-input-number-group .ant-input-number-affix-wrapper:not(:first-child){border-start-start-radius:0;border-end-start-radius:0;}.ant-input-number-group.ant-input-number-group-compact{display:block;}.ant-input-number-group.ant-input-number-group-compact::before{display:table;content:\\"\\";}.ant-input-number-group.ant-input-number-group-compact::after{display:table;clear:both;content:\\"\\";}.ant-input-number-group.ant-input-number-group-compact .ant-input-number-group-addon:not(:first-child):not(:last-child),.ant-input-number-group.ant-input-number-group-compact .ant-input-number-group-wrap:not(:first-child):not(:last-child),.ant-input-number-group.ant-input-number-group-compact >.ant-input-number:not(:first-child):not(:last-child){border-inline-end-width:1px;}.ant-input-number-group.ant-input-number-group-compact .ant-input-number-group-addon:not(:first-child):not(:last-child):hover,.ant-input-number-group.ant-input-number-group-compact .ant-input-number-group-wrap:not(:first-child):not(:last-child):hover,.ant-input-number-group.ant-input-number-group-compact >.ant-input-number:not(:first-child):not(:last-child):hover{z-index:1;}.ant-input-number-group.ant-input-number-group-compact .ant-input-number-group-addon:not(:first-child):not(:last-child):focus,.ant-input-number-group.ant-input-number-group-compact .ant-input-number-group-wrap:not(:first-child):not(:last-child):focus,.ant-input-number-group.ant-input-number-group-compact >.ant-input-number:not(:first-child):not(:last-child):focus{z-index:1;}.ant-input-number-group.ant-input-number-group-compact>*{display:inline-block;float:none;vertical-align:top;border-radius:0;}.ant-input-number-group.ant-input-number-group-compact>.ant-input-number-affix-wrapper{display:inline-flex;}.ant-input-number-group.ant-input-number-group-compact>.ant-picker-range{display:inline-flex;}.ant-input-number-group.ant-input-number-group-compact>*:not(:last-child){margin-inline-end:-1px;border-inline-end-width:1px;}.ant-input-number-group.ant-input-number-group-compact .ant-input-number{float:none;}.ant-input-number-group.ant-input-number-group-compact>.ant-select>.ant-select-selector,.ant-input-number-group.ant-input-number-group-compact>.ant-select-auto-complete .ant-input-number,.ant-input-number-group.ant-input-number-group-compact>.ant-cascader-picker .ant-input-number,.ant-input-number-group.ant-input-number-group-compact>.ant-input-number-group-wrapper .ant-input-number{border-inline-end-width:1px;border-radius:0;}.ant-input-number-group.ant-input-number-group-compact>.ant-select>.ant-select-selector:hover,.ant-input-number-group.ant-input-number-group-compact>.ant-select-auto-complete .ant-input-number:hover,.ant-input-number-group.ant-input-number-group-compact>.ant-cascader-picker .ant-input-number:hover,.ant-input-number-group.ant-input-number-group-compact>.ant-input-number-group-wrapper .ant-input-number:hover{z-index:1;}.ant-input-number-group.ant-input-number-group-compact>.ant-select>.ant-select-selector:focus,.ant-input-number-group.ant-input-number-group-compact>.ant-select-auto-complete .ant-input-number:focus,.ant-input-number-group.ant-input-number-group-compact>.ant-cascader-picker .ant-input-number:focus,.ant-input-number-group.ant-input-number-group-compact>.ant-input-number-group-wrapper .ant-input-number:focus{z-index:1;}.ant-input-number-group.ant-input-number-group-compact>.ant-select-focused{z-index:1;}.ant-input-number-group.ant-input-number-group-compact>.ant-select>.ant-select-arrow{z-index:1;}.ant-input-number-group.ant-input-number-group-compact>*:first-child,.ant-input-number-group.ant-input-number-group-compact>.ant-select:first-child>.ant-select-selector,.ant-input-number-group.ant-input-number-group-compact>.ant-select-auto-complete:first-child .ant-input-number,.ant-input-number-group.ant-input-number-group-compact>.ant-cascader-picker:first-child .ant-input-number{border-start-start-radius:6px;border-end-start-radius:6px;}.ant-input-number-group.ant-input-number-group-compact>*:last-child,.ant-input-number-group.ant-input-number-group-compact>.ant-select:last-child>.ant-select-selector,.ant-input-number-group.ant-input-number-group-compact>.ant-cascader-picker:last-child .ant-input-number,.ant-input-number-group.ant-input-number-group-compact>.ant-cascader-picker-focused:last-child .ant-input-number{border-inline-end-width:1px;border-start-end-radius:6px;border-end-end-radius:6px;}.ant-input-number-group.ant-input-number-group-compact>.ant-select-auto-complete .ant-input-number{vertical-align:top;}.ant-input-number-group.ant-input-number-group-compact .ant-input-number-group-wrapper+.ant-input-number-group-wrapper{margin-inline-start:-1px;}.ant-input-number-group.ant-input-number-group-compact .ant-input-number-group-wrapper+.ant-input-number-group-wrapper .ant-input-number-affix-wrapper{border-radius:0;}.ant-input-number-group.ant-input-number-group-compact .ant-input-number-group-wrapper:not(:last-child).ant-input-number-search>.ant-input-number-group>.ant-input-number-group-addon>.ant-input-number-search-button{border-radius:0;}.ant-input-number-group.ant-input-number-group-compact .ant-input-number-group-wrapper:not(:last-child).ant-input-number-search>.ant-input-number-group>.ant-input-number{border-start-start-radius:6px;border-start-end-radius:0;border-end-end-radius:0;border-end-start-radius:6px;}.ant-input-number-group.ant-input-number-group-sm .ant-btn{font-size:12px;height:24px;line-height:normal;}.ant-input-number-group.ant-input-number-group-lg .ant-btn{font-size:16px;height:40px;line-height:normal;}.ant-input-number-group.ant-input-number-group-lg .ant-select-single .ant-select-selector{height:40px;}.ant-input-number-group.ant-input-number-group-lg .ant-select-single .ant-select-selector .ant-select-selection-item,.ant-input-number-group.ant-input-number-group-lg .ant-select-single .ant-select-selector .ant-select-selection-placeholder{line-height:38px;}.ant-input-number-group.ant-input-number-group-lg .ant-select-single .ant-select-selector .ant-select-selection-search-input{height:40px;}.ant-input-number-group.ant-input-number-group-sm .ant-select-single .ant-select-selector{height:24px;}.ant-input-number-group.ant-input-number-group-sm .ant-select-single .ant-select-selector .ant-select-selection-item,.ant-input-number-group.ant-input-number-group-sm .ant-select-single .ant-select-selector .ant-select-selection-placeholder{line-height:22px;}.ant-input-number-group.ant-input-number-group-sm .ant-select-single .ant-select-selector .ant-select-selection-search-input{height:24px;}.ant-input-number-group-wrapper{display:inline-block;text-align:start;vertical-align:top;}.ant-input-number-group-wrapper .ant-input-number-affix-wrapper{width:100%;}.ant-input-number-group-wrapper-lg .ant-input-number-group-addon{border-radius:8px;}.ant-input-number-group-wrapper-sm .ant-input-number-group-addon{border-radius:4px;}.ant-input-number .ant-input-number-input{width:100%;height:30px;padding:0 11px;text-align:start;background-color:transparent;border:0;border-radius:6px;outline:0;transition:all 0.2s linear;appearance:textfield;color:rgba(255, 255, 255, 0.85);font-size:inherit;vertical-align:top;}.ant-input-number .ant-input-number-input::-moz-placeholder{opacity:1;}.ant-input-number .ant-input-number-input::placeholder{color:rgba(255, 255, 255, 0.25);user-select:none;}.ant-input-number .ant-input-number-input:placeholder-shown{text-overflow:ellipsis;}.ant-input-number .ant-input-number-input[type=\\"number\\"]::-webkit-inner-spin-button,.ant-input-number .ant-input-number-input[type=\\"number\\"]::-webkit-outer-spin-button{margin:0;webkit-appearance:none;appearance:none;}.ant-input-number:hover .ant-input-number-handler-wrap,.ant-input-number-focused .ant-input-number-handler-wrap{opacity:1;}.ant-input-number .ant-input-number-handler-wrap{position:absolute;inset-block-start:0;inset-inline-end:0;width:22px;height:100%;background:#141414;border-start-start-radius:0;border-start-end-radius:6px;border-end-end-radius:6px;border-end-start-radius:0;opacity:0;display:flex;flex-direction:column;align-items:stretch;transition:opacity 0.2s linear 0.2s;}.ant-input-number .ant-input-number-handler-wrap .ant-input-number-handler{display:flex;align-items:center;justify-content:center;flex:auto;height:40%;}.ant-input-number .ant-input-number-handler-wrap .ant-input-number-handler .ant-input-number-handler-up-inner,.ant-input-number .ant-input-number-handler-wrap .ant-input-number-handler .ant-input-number-handler-down-inner{margin-inline-end:0;font-size:7px;}.ant-input-number .ant-input-number-handler{height:50%;overflow:hidden;color:rgba(255, 255, 255, 0.45);font-weight:bold;line-height:0;text-align:center;cursor:pointer;border-inline-start:1px solid #424242;transition:all 0.2s linear;}.ant-input-number .ant-input-number-handler:active{background:rgba(255, 255, 255, 0.04);}.ant-input-number .ant-input-number-handler:hover{height:60%;}.ant-input-number .ant-input-number-handler:hover .ant-input-number-handler-up-inner,.ant-input-number .ant-input-number-handler:hover .ant-input-number-handler-down-inner{color:#037003;}.ant-input-number .ant-input-number-handler-up-inner,.ant-input-number .ant-input-number-handler-down-inner{display:inline-flex;align-items:center;color:rgba(255, 255, 255, 0.45);font-style:normal;line-height:0;text-align:center;text-transform:none;vertical-align:-0.125em;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:all 0.2s linear;user-select:none;}.ant-input-number .ant-input-number-handler-up-inner >*,.ant-input-number .ant-input-number-handler-down-inner >*{line-height:1;}.ant-input-number .ant-input-number-handler-up-inner svg,.ant-input-number .ant-input-number-handler-down-inner svg{display:inline-block;}.ant-input-number .ant-input-number-handler-up{border-start-end-radius:6px;}.ant-input-number .ant-input-number-handler-down{border-block-start:1px solid #424242;border-end-end-radius:6px;}.ant-input-number-disabled .ant-input-number-handler-wrap,.ant-input-number-readonly .ant-input-number-handler-wrap{display:none;}.ant-input-number .ant-input-number-handler-up-disabled,.ant-input-number .ant-input-number-handler-down-disabled{cursor:not-allowed;}.ant-input-number-handler-up-disabled:hover .ant-input-number-handler-up-inner,.ant-input-number-handler-down-disabled:hover .ant-input-number-handler-down-inner{color:rgba(255, 255, 255, 0.25);}.ant-input-number-borderless{border-color:transparent;box-shadow:none;}.ant-input-number-borderless .ant-input-number-handler-down{border-block-start-width:0;}.ant-input-number-affix-wrapper{position:relative;display:inline-flex;width:90px;min-width:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;background-color:#141414;background-image:none;border-width:1px;border-style:solid;border-color:#424242;border-radius:6px;transition:all 0.2s;padding-inline-start:11px;}.ant-input-number-affix-wrapper::-moz-placeholder{opacity:1;}.ant-input-number-affix-wrapper::placeholder{color:rgba(255, 255, 255, 0.25);user-select:none;}.ant-input-number-affix-wrapper:placeholder-shown{text-overflow:ellipsis;}.ant-input-number-affix-wrapper:hover{border-color:#198016;border-inline-end-width:1px;}.ant-input-number-affix-wrapper:focus,.ant-input-number-affix-wrapper-focused{border-color:#198016;box-shadow:0 0 0 2px rgba(0, 53, 0, 0.15);border-inline-end-width:1px;outline:0;}.ant-input-number-affix-wrapper-disabled,.ant-input-number-affix-wrapper[disabled]{color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);border-color:#424242;box-shadow:none;cursor:not-allowed;opacity:1;}.ant-input-number-affix-wrapper-disabled:hover,.ant-input-number-affix-wrapper[disabled]:hover{border-color:#424242;border-inline-end-width:1px;}.ant-input-number-affix-wrapper-borderless,.ant-input-number-affix-wrapper-borderless:hover,.ant-input-number-affix-wrapper-borderless:focus,.ant-input-number-affix-wrapper-borderless-focused,.ant-input-number-affix-wrapper-borderless-disabled,.ant-input-number-affix-wrapper-borderless[disabled]{background-color:transparent;border:none;box-shadow:none;}textarea.ant-input-number-affix-wrapper{max-width:100%;height:auto;min-height:32px;line-height:1.5714285714285714;vertical-align:bottom;transition:all 0.3s,height 0s;resize:vertical;}.ant-input-number-affix-wrapper-lg{border-radius:8px;}.ant-input-number-affix-wrapper-sm{border-radius:4px;}.ant-input-number-affix-wrapper-rtl{direction:rtl;}.ant-input-number-affix-wrapper-textarea-rtl{direction:rtl;}.ant-input-number-affix-wrapper-status-error:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper{border-color:#dc4446;}.ant-input-number-affix-wrapper-status-error:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper:hover{border-color:#7e2e2f;}.ant-input-number-affix-wrapper-status-error:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper:focus,.ant-input-number-affix-wrapper-status-error:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper-focused{border-color:#dc4446;box-shadow:0 0 0 2px rgba(238, 38, 56, 0.11);border-inline-end-width:1px;outline:0;}.ant-input-number-affix-wrapper-status-error:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper .ant-input-number-prefix{color:#dc4446;}.ant-input-number-affix-wrapper-status-warning:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper{border-color:#d89614;}.ant-input-number-affix-wrapper-status-warning:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper:hover{border-color:#7c5914;}.ant-input-number-affix-wrapper-status-warning:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper:focus,.ant-input-number-affix-wrapper-status-warning:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper-focused{border-color:#d89614;box-shadow:0 0 0 2px rgba(173, 107, 0, 0.15);border-inline-end-width:1px;outline:0;}.ant-input-number-affix-wrapper-status-warning:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper .ant-input-number-prefix{color:#d89614;}.ant-input-number-affix-wrapper:not(.ant-input-number-affix-wrapper-disabled):hover{border-color:#198016;border-inline-end-width:1px;z-index:1;}.ant-input-number-affix-wrapper-focused,.ant-input-number-affix-wrapper:focus{z-index:1;}.ant-input-number-affix-wrapper-disabled .ant-input-number[disabled]{background:transparent;}.ant-input-number-affix-wrapper >div.ant-input-number{width:100%;border:none;outline:none;}.ant-input-number-affix-wrapper >div.ant-input-number.ant-input-number-focused{box-shadow:none!important;}.ant-input-number-affix-wrapper input.ant-input-number-input{padding:0;}.ant-input-number-affix-wrapper::before{width:0;visibility:hidden;content:\\"\\\\a0\\";}.ant-input-number-affix-wrapper .ant-input-number-handler-wrap{z-index:2;}.ant-input-number-affix-wrapper .ant-input-number-prefix,.ant-input-number-affix-wrapper .ant-input-number-suffix{display:flex;flex:none;align-items:center;pointer-events:none;}.ant-input-number-affix-wrapper .ant-input-number-prefix{margin-inline-end:4px;}.ant-input-number-affix-wrapper .ant-input-number-suffix{position:absolute;inset-block-start:0;inset-inline-end:0;z-index:1;height:100%;margin-inline-end:11px;margin-inline-start:4px;}.ant-input-number-compact-item:not(.ant-input-number-compact-last-item){margin-inline-end:-1px;}.ant-input-number-compact-item:hover,.ant-input-number-compact-item:focus,.ant-input-number-compact-item:active{z-index:2;}.ant-input-number-compact-item[disabled]{z-index:0;}.ant-input-number-compact-item:not(.ant-input-number-compact-first-item):not(.ant-input-number-compact-last-item){border-radius:0;}.ant-input-number-compact-item:not(.ant-input-number-compact-last-item).ant-input-number-compact-first-item,.ant-input-number-compact-item:not(.ant-input-number-compact-last-item).ant-input-number-compact-first-item.ant-input-number-sm,.ant-input-number-compact-item:not(.ant-input-number-compact-last-item).ant-input-number-compact-first-item.ant-input-number-lg{border-start-end-radius:0;border-end-end-radius:0;}.ant-input-number-compact-item:not(.ant-input-number-compact-first-item).ant-input-number-compact-last-item,.ant-input-number-compact-item:not(.ant-input-number-compact-first-item).ant-input-number-compact-last-item.ant-input-number-sm,.ant-input-number-compact-item:not(.ant-input-number-compact-first-item).ant-input-number-compact-last-item.ant-input-number-lg{border-start-start-radius:0;border-end-start-radius:0;}[class^=\\"ant-layout\\"],[class*=\\" ant-layout\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-layout\\"]::before,[class*=\\" ant-layout\\"]::before,[class^=\\"ant-layout\\"]::after,[class*=\\" ant-layout\\"]::after{box-sizing:border-box;}[class^=\\"ant-layout\\"] [class^=\\"ant-layout\\"],[class*=\\" ant-layout\\"] [class^=\\"ant-layout\\"],[class^=\\"ant-layout\\"] [class*=\\" ant-layout\\"],[class*=\\" ant-layout\\"] [class*=\\" ant-layout\\"]{box-sizing:border-box;}[class^=\\"ant-layout\\"] [class^=\\"ant-layout\\"]::before,[class*=\\" ant-layout\\"] [class^=\\"ant-layout\\"]::before,[class^=\\"ant-layout\\"] [class*=\\" ant-layout\\"]::before,[class*=\\" ant-layout\\"] [class*=\\" ant-layout\\"]::before,[class^=\\"ant-layout\\"] [class^=\\"ant-layout\\"]::after,[class*=\\" ant-layout\\"] [class^=\\"ant-layout\\"]::after,[class^=\\"ant-layout\\"] [class*=\\" ant-layout\\"]::after,[class*=\\" ant-layout\\"] [class*=\\" ant-layout\\"]::after{box-sizing:border-box;}.ant-layout{display:flex;flex:auto;flex-direction:column;min-height:0;background:#000000;}.ant-layout,.ant-layout *{box-sizing:border-box;}.ant-layout.ant-layout-has-sider{flex-direction:row;}.ant-layout.ant-layout-has-sider >.ant-layout,.ant-layout.ant-layout-has-sider >.ant-layout-content{width:0;}.ant-layout .ant-layout-header,.ant-layout.ant-layout-footer{flex:0 0 auto;}.ant-layout .ant-layout-header{height:64px;padding-inline:50px;color:rgba(255, 255, 255, 0.85);line-height:64px;background:#001529;}.ant-layout .ant-layout-header .ant-menu{line-height:inherit;}.ant-layout .ant-layout-footer{padding:24px 50px;color:rgba(255, 255, 255, 0.85);font-size:14px;background:#000000;}.ant-layout .ant-layout-content{flex:auto;min-height:0;}.ant-layout .ant-layout-sider{position:relative;min-width:0;background:#001529;transition:all 0.2s,background 0s;}.ant-layout .ant-layout-sider-children{height:100%;margin-top:-0.1px;padding-top:0.1px;}.ant-layout .ant-layout-sider-children .ant-menu.ant-menu-inline-collapsed{width:auto;}.ant-layout .ant-layout-sider-has-trigger{padding-bottom:48px;}.ant-layout .ant-layout-sider-right{order:1;}.ant-layout .ant-layout-sider-trigger{position:fixed;bottom:0;z-index:1;height:48px;color:#fff;line-height:48px;text-align:center;background:#002140;cursor:pointer;transition:all 0.2s;}.ant-layout .ant-layout-sider-zero-width >*{overflow:hidden;}.ant-layout .ant-layout-sider-zero-width-trigger{position:absolute;top:64px;inset-inline-end:-40px;z-index:1;width:40px;height:40px;color:#fff;font-size:20px;display:flex;align-items:center;justify-content:center;background:#001529;border-start-start-radius:0;border-start-end-radius:6px;border-end-end-radius:6px;border-end-start-radius:0;cursor:pointer;transition:background 0.3s ease;}.ant-layout .ant-layout-sider-zero-width-trigger::after{position:absolute;inset:0;background:transparent;transition:all 0.3s;content:\\"\\";}.ant-layout .ant-layout-sider-zero-width-trigger:hover::after{background:rgba(255, 255, 255, 0.2);}.ant-layout .ant-layout-sider-zero-width-trigger-right{inset-inline-start:-40px;border-start-start-radius:6px;border-start-end-radius:0;border-end-end-radius:0;border-end-start-radius:6px;}.ant-layout .ant-layout-sider-light{background:#141414;}.ant-layout .ant-layout-sider-light .ant-layout-sider-trigger{color:rgba(255, 255, 255, 0.85);background:#141414;}.ant-layout .ant-layout-sider-light .ant-layout-sider-zero-width-trigger{color:rgba(255, 255, 255, 0.85);background:#141414;border:1px solid #000000;border-inline-start:0;}.ant-layout-rtl{direction:rtl;}[class^=\\"ant-list\\"],[class*=\\" ant-list\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-list\\"]::before,[class*=\\" ant-list\\"]::before,[class^=\\"ant-list\\"]::after,[class*=\\" ant-list\\"]::after{box-sizing:border-box;}[class^=\\"ant-list\\"] [class^=\\"ant-list\\"],[class*=\\" ant-list\\"] [class^=\\"ant-list\\"],[class^=\\"ant-list\\"] [class*=\\" ant-list\\"],[class*=\\" ant-list\\"] [class*=\\" ant-list\\"]{box-sizing:border-box;}[class^=\\"ant-list\\"] [class^=\\"ant-list\\"]::before,[class*=\\" ant-list\\"] [class^=\\"ant-list\\"]::before,[class^=\\"ant-list\\"] [class*=\\" ant-list\\"]::before,[class*=\\" ant-list\\"] [class*=\\" ant-list\\"]::before,[class^=\\"ant-list\\"] [class^=\\"ant-list\\"]::after,[class*=\\" ant-list\\"] [class^=\\"ant-list\\"]::after,[class^=\\"ant-list\\"] [class*=\\" ant-list\\"]::after,[class*=\\" ant-list\\"] [class*=\\" ant-list\\"]::after{box-sizing:border-box;}.ant-list{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;}.ant-list *{outline:none;}.ant-list .ant-list-header,.ant-list .ant-list-footer{background:transparent;padding-block:12px;}.ant-list .ant-list-pagination{margin-block-start:24px;text-align:end;}.ant-list .ant-list-pagination .ant-pagination-options{text-align:start;}.ant-list .ant-list-spin{min-height:40px;text-align:center;}.ant-list .ant-list-items{margin:0;padding:0;list-style:none;}.ant-list .ant-list-item{display:flex;align-items:center;justify-content:space-between;padding:12px 24px;color:rgba(255, 255, 255, 0.85);}.ant-list .ant-list-item .ant-list-item-meta{display:flex;flex:1;align-items:flex-start;max-width:100%;}.ant-list .ant-list-item .ant-list-item-meta .ant-list-item-meta-avatar{margin-inline-end:16px;}.ant-list .ant-list-item .ant-list-item-meta .ant-list-item-meta-content{flex:1 0;width:0;color:rgba(255, 255, 255, 0.85);}.ant-list .ant-list-item .ant-list-item-meta .ant-list-item-meta-title{margin-bottom:4px;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;}.ant-list .ant-list-item .ant-list-item-meta .ant-list-item-meta-title >a{color:rgba(255, 255, 255, 0.85);transition:all 0.3s;}.ant-list .ant-list-item .ant-list-item-meta .ant-list-item-meta-title >a:hover{color:#037003;}.ant-list .ant-list-item .ant-list-item-meta .ant-list-item-meta-description{color:rgba(255, 255, 255, 0.45);font-size:14px;line-height:1.5714285714285714;}.ant-list .ant-list-item .ant-list-item-action{flex:0 0 auto;margin-inline-start:48px;padding:0;font-size:0;list-style:none;}.ant-list .ant-list-item .ant-list-item-action>li{position:relative;display:inline-block;padding:0 8px;color:rgba(255, 255, 255, 0.45);font-size:14px;line-height:1.5714285714285714;text-align:center;}.ant-list .ant-list-item .ant-list-item-action>li:first-child{padding-inline-start:0;}.ant-list .ant-list-item .ant-list-item-action .ant-list-item-action-split{position:absolute;inset-block-start:50%;inset-inline-end:0;width:1px;height:14px;transform:translateY(-50%);background-color:rgba(253, 253, 253, 0.12);}.ant-list .ant-list-empty{padding:16px 0;color:rgba(255, 255, 255, 0.45);font-size:12px;text-align:center;}.ant-list .ant-list-empty-text{padding:16px;color:rgba(255, 255, 255, 0.25);font-size:14px;text-align:center;}.ant-list .ant-list-item-no-flex{display:block;}.ant-list-grid .ant-col>.ant-list-item{display:block;max-width:100%;margin-block-end:16px;padding-block:0;border-block-end:none;}.ant-list-vertical .ant-list-item{align-items:initial;}.ant-list-vertical .ant-list-item .ant-list-item-main{display:block;flex:1;}.ant-list-vertical .ant-list-item .ant-list-item-extra{margin-inline-start:24px;}.ant-list-vertical .ant-list-item .ant-list-item-meta{margin-block-end:16px;}.ant-list-vertical .ant-list-item .ant-list-item-meta .ant-list-item-meta-title{margin-block-end:12px;color:rgba(255, 255, 255, 0.85);font-size:16px;line-height:1.5;}.ant-list-vertical .ant-list-item .ant-list-item-action{margin-block-start:16px;margin-inline-start:auto;}.ant-list-vertical .ant-list-item .ant-list-item-action >li{padding:0 16px;}.ant-list-vertical .ant-list-item .ant-list-item-action >li:first-child{padding-inline-start:0;}.ant-list-split .ant-list-item{border-block-end:1px solid rgba(253, 253, 253, 0.12);}.ant-list-split .ant-list-item:last-child{border-block-end:none;}.ant-list-split .ant-list-header{border-block-end:1px solid rgba(253, 253, 253, 0.12);}.ant-list-split.ant-list-empty .ant-list-footer{border-top:1px solid rgba(253, 253, 253, 0.12);}.ant-list-loading .ant-list-spin-nested-loading{min-height:32px;}.ant-list-split.ant-list-something-after-last-item .ant-spin-container>.ant-list-items>.ant-list-item:last-child{border-block-end:1px solid rgba(253, 253, 253, 0.12);}.ant-list-lg .ant-list-item{padding:16px 24px;}.ant-list-sm .ant-list-item{padding:8px 16px;}.ant-list:not(.ant-list-vertical) .ant-list-item-no-flex .ant-list-item-action{float:right;}.ant-list-bordered{border:1px solid #424242;border-radius:8px;}.ant-list-bordered .ant-list-header,.ant-list-bordered .ant-list-footer,.ant-list-bordered .ant-list-item{padding-inline:24px;}.ant-list-bordered .ant-list-pagination{margin:16px 24px;}.ant-list-bordered.ant-list-sm .ant-list-item,.ant-list-bordered.ant-list-sm .ant-list-header,.ant-list-bordered.ant-list-sm .ant-list-footer{padding:8px 16px;}.ant-list-bordered.ant-list-lg .ant-list-item,.ant-list-bordered.ant-list-lg .ant-list-header,.ant-list-bordered.ant-list-lg .ant-list-footer{padding:16px 24px;}@media screen and (max-width:768){.ant-list .ant-list-item .ant-list-item-action{margin-inline-start:24px;}.ant-list-vertical .ant-list-item .ant-list-item-extra{margin-inline-start:24px;}}@media screen and (max-width: 576){.ant-list .ant-list-item{flex-wrap:wrap;}.ant-list .ant-list-item .ant-list-action{margin-inline-start:12px;}.ant-list-vertical .ant-list-item{flex-wrap:wrap-reverse;}.ant-list-vertical .ant-list-item .ant-list-item-main{min-width:220px;}.ant-list-vertical .ant-list-item .ant-list-item-extra{margin:auto auto 16px;}}[class^=\\"ant-spin\\"],[class*=\\" ant-spin\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-spin\\"]::before,[class*=\\" ant-spin\\"]::before,[class^=\\"ant-spin\\"]::after,[class*=\\" ant-spin\\"]::after{box-sizing:border-box;}[class^=\\"ant-spin\\"] [class^=\\"ant-spin\\"],[class*=\\" ant-spin\\"] [class^=\\"ant-spin\\"],[class^=\\"ant-spin\\"] [class*=\\" ant-spin\\"],[class*=\\" ant-spin\\"] [class*=\\" ant-spin\\"]{box-sizing:border-box;}[class^=\\"ant-spin\\"] [class^=\\"ant-spin\\"]::before,[class*=\\" ant-spin\\"] [class^=\\"ant-spin\\"]::before,[class^=\\"ant-spin\\"] [class*=\\" ant-spin\\"]::before,[class*=\\" ant-spin\\"] [class*=\\" ant-spin\\"]::before,[class^=\\"ant-spin\\"] [class^=\\"ant-spin\\"]::after,[class*=\\" ant-spin\\"] [class^=\\"ant-spin\\"]::after,[class^=\\"ant-spin\\"] [class*=\\" ant-spin\\"]::after,[class*=\\" ant-spin\\"] [class*=\\" ant-spin\\"]::after{box-sizing:border-box;}.ant-spin{box-sizing:border-box;margin:0;padding:0;color:#037003;font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:absolute;display:none;text-align:center;vertical-align:middle;opacity:0;transition:transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86);}.ant-spin-spinning{position:static;display:inline-block;opacity:1;}.ant-spin-nested-loading{position:relative;}.ant-spin-nested-loading >div>.ant-spin{position:absolute;top:0;inset-inline-start:0;z-index:4;display:block;width:100%;height:100%;max-height:400px;}.ant-spin-nested-loading >div>.ant-spin .ant-spin-dot{position:absolute;top:50%;inset-inline-start:50%;margin:-10px;}.ant-spin-nested-loading >div>.ant-spin .ant-spin-text{position:absolute;top:50%;width:100%;padding-top:5px;text-shadow:0 1px 2px #141414;}.ant-spin-nested-loading >div>.ant-spin.ant-spin-show-text .ant-spin-dot{margin-top:-20px;}.ant-spin-nested-loading >div>.ant-spin-sm .ant-spin-dot{margin:-7px;}.ant-spin-nested-loading >div>.ant-spin-sm .ant-spin-text{padding-top:2px;}.ant-spin-nested-loading >div>.ant-spin-sm.ant-spin-show-text .ant-spin-dot{margin-top:-17px;}.ant-spin-nested-loading >div>.ant-spin-lg .ant-spin-dot{margin:-16px;}.ant-spin-nested-loading >div>.ant-spin-lg .ant-spin-text{padding-top:11px;}.ant-spin-nested-loading >div>.ant-spin-lg.ant-spin-show-text .ant-spin-dot{margin-top:-26px;}.ant-spin-nested-loading .ant-spin-container{position:relative;transition:opacity 0.3s;}.ant-spin-nested-loading .ant-spin-container::after{position:absolute;top:0;inset-inline-end:0;bottom:0;inset-inline-start:0;z-index:10;width:100%;height:100%;background:#141414;opacity:0;transition:all 0.3s;content:\\"\\";pointer-events:none;}.ant-spin-nested-loading .ant-spin-blur{clear:both;opacity:0.5;user-select:none;pointer-events:none;}.ant-spin-nested-loading .ant-spin-blur::after{opacity:0.4;pointer-events:auto;}.ant-spin-tip{color:rgba(255, 255, 255, 0.45);}.ant-spin .ant-spin-dot{position:relative;display:inline-block;font-size:20px;width:1em;height:1em;}.ant-spin .ant-spin-dot-item{position:absolute;display:block;width:9px;height:9px;background-color:#037003;border-radius:100%;transform:scale(0.75);transform-origin:50% 50%;opacity:0.3;animation-name:antSpinMove;animation-duration:1s;animation-iteration-count:infinite;animation-timing-function:linear;animation-direction:alternate;}.ant-spin .ant-spin-dot-item:nth-child(1){top:0;inset-inline-start:0;}.ant-spin .ant-spin-dot-item:nth-child(2){top:0;inset-inline-end:0;animation-delay:0.4s;}.ant-spin .ant-spin-dot-item:nth-child(3){inset-inline-end:0;bottom:0;animation-delay:0.8s;}.ant-spin .ant-spin-dot-item:nth-child(4){bottom:0;inset-inline-start:0;animation-delay:1.2s;}.ant-spin .ant-spin-dot-spin{transform:rotate(45deg);animation-name:antRotate;animation-duration:1.2s;animation-iteration-count:infinite;animation-timing-function:linear;}.ant-spin-sm .ant-spin-dot{font-size:14px;}.ant-spin-sm .ant-spin-dot i{width:6px;height:6px;}.ant-spin-lg .ant-spin-dot{font-size:32px;}.ant-spin-lg .ant-spin-dot i{width:14px;height:14px;}.ant-spin.ant-spin-show-text .ant-spin-text{display:block;}@keyframes antSpinMove{to{opacity:1;}}@keyframes antRotate{to{transform:rotate(405deg);}}[class^=\\"ant-menu\\"],[class*=\\" ant-menu\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-menu\\"]::before,[class*=\\" ant-menu\\"]::before,[class^=\\"ant-menu\\"]::after,[class*=\\" ant-menu\\"]::after{box-sizing:border-box;}[class^=\\"ant-menu\\"] [class^=\\"ant-menu\\"],[class*=\\" ant-menu\\"] [class^=\\"ant-menu\\"],[class^=\\"ant-menu\\"] [class*=\\" ant-menu\\"],[class*=\\" ant-menu\\"] [class*=\\" ant-menu\\"]{box-sizing:border-box;}[class^=\\"ant-menu\\"] [class^=\\"ant-menu\\"]::before,[class*=\\" ant-menu\\"] [class^=\\"ant-menu\\"]::before,[class^=\\"ant-menu\\"] [class*=\\" ant-menu\\"]::before,[class*=\\" ant-menu\\"] [class*=\\" ant-menu\\"]::before,[class^=\\"ant-menu\\"] [class^=\\"ant-menu\\"]::after,[class*=\\" ant-menu\\"] [class^=\\"ant-menu\\"]::after,[class^=\\"ant-menu\\"] [class*=\\" ant-menu\\"]::after,[class*=\\" ant-menu\\"] [class*=\\" ant-menu\\"]::after{box-sizing:border-box;}.ant-menu::before{display:table;content:\\"\\";}.ant-menu::after{display:table;clear:both;content:\\"\\";}.ant-menu-hidden{display:none;}.ant-menu-submenu-hidden{display:none;}.ant-menu{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:0;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';margin-bottom:0;padding-inline-start:0;outline:none;transition:width 0.3s cubic-bezier(0.2, 0, 0, 1) 0s;}.ant-menu::before{display:table;content:\\"\\";}.ant-menu::after{display:table;clear:both;content:\\"\\";}.ant-menu ul,.ant-menu ol{margin:0;padding:0;list-style:none;}.ant-menu-overflow{display:flex;}.ant-menu-overflow .ant-menu-item{flex:none;}.ant-menu .ant-menu-item,.ant-menu .ant-menu-submenu,.ant-menu .ant-menu-submenu-title{border-radius:8px;}.ant-menu .ant-menu-item-group-title{padding:8px 16px;font-size:14px;line-height:1.5714285714285714;transition:all 0.3s;}.ant-menu-horizontal .ant-menu-submenu{transition:border-color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);}.ant-menu .ant-menu-submenu,.ant-menu .ant-menu-submenu-inline{transition:border-color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),padding 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);}.ant-menu .ant-menu-submenu .ant-menu-sub{cursor:initial;transition:background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),padding 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);}.ant-menu .ant-menu-title-content{transition:color 0.3s;}.ant-menu .ant-menu-item a::before{position:absolute;inset:0;background-color:transparent;content:\\"\\";}.ant-menu .ant-menu-item-divider{overflow:hidden;line-height:0;border-color:rgba(253, 253, 253, 0.12);border-style:solid;border-width:0;border-top-width:1px;margin-block:1px;padding:0;}.ant-menu .ant-menu-item-divider-dashed{border-style:dashed;}.ant-menu .ant-menu-item,.ant-menu .ant-menu-submenu-title{position:relative;display:block;margin:0;white-space:nowrap;cursor:pointer;transition:border-color 0.3s,background 0.3s,padding 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);}.ant-menu .ant-menu-item .ant-menu-item-icon,.ant-menu .ant-menu-submenu-title .ant-menu-item-icon,.ant-menu .ant-menu-item .anticon,.ant-menu .ant-menu-submenu-title .anticon{min-width:14px;font-size:14px;transition:font-size 0.2s cubic-bezier(0.215, 0.61, 0.355, 1),margin 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),color 0.3s;}.ant-menu .ant-menu-item .ant-menu-item-icon +span,.ant-menu .ant-menu-submenu-title .ant-menu-item-icon +span,.ant-menu .ant-menu-item .anticon +span,.ant-menu .ant-menu-submenu-title .anticon +span{margin-inline-start:10px;opacity:1;transition:opacity 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),margin 0.3s,color 0.3s;}.ant-menu .ant-menu-item .ant-menu-item-icon,.ant-menu .ant-menu-submenu-title .ant-menu-item-icon{display:inline-flex;align-items:center;color:inherit;font-style:normal;line-height:0;text-align:center;text-transform:none;vertical-align:-0.125em;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}.ant-menu .ant-menu-item .ant-menu-item-icon >*,.ant-menu .ant-menu-submenu-title .ant-menu-item-icon >*{line-height:1;}.ant-menu .ant-menu-item .ant-menu-item-icon svg,.ant-menu .ant-menu-submenu-title .ant-menu-item-icon svg{display:inline-block;}.ant-menu .ant-menu-item.ant-menu-item-only-child >.anticon,.ant-menu .ant-menu-submenu-title.ant-menu-item-only-child >.anticon,.ant-menu .ant-menu-item.ant-menu-item-only-child >.ant-menu-item-icon,.ant-menu .ant-menu-submenu-title.ant-menu-item-only-child >.ant-menu-item-icon{margin-inline-end:0;}.ant-menu .ant-menu-item-disabled,.ant-menu .ant-menu-submenu-disabled{background:none!important;cursor:not-allowed;}.ant-menu .ant-menu-item-disabled::after,.ant-menu .ant-menu-submenu-disabled::after{border-color:transparent!important;}.ant-menu .ant-menu-item-disabled a,.ant-menu .ant-menu-submenu-disabled a{color:inherit!important;}.ant-menu .ant-menu-item-disabled >.ant-menu-submenu-title,.ant-menu .ant-menu-submenu-disabled >.ant-menu-submenu-title{color:inherit!important;cursor:not-allowed;}.ant-menu .ant-menu-item-group .ant-menu-item-group-list{margin:0;padding:0;}.ant-menu .ant-menu-item-group .ant-menu-item-group-list .ant-menu-item,.ant-menu .ant-menu-item-group .ant-menu-item-group-list .ant-menu-submenu-title{padding-inline:28px 16px;}.ant-menu-submenu-popup{position:absolute;z-index:1050;background:transparent;border-radius:8px;box-shadow:none;transform-origin:0 0;}.ant-menu-submenu-popup::before{position:absolute;inset:-7px 0 0;z-index:-1;width:100%;height:100%;opacity:0;content:\\"\\";}.ant-menu-submenu-placement-rightTop::before{top:0;inset-inline-start:-7px;}.ant-menu-submenu >.ant-menu{border-radius:8px;}.ant-menu-submenu >.ant-menu .ant-menu-item,.ant-menu-submenu >.ant-menu .ant-menu-submenu-title{position:relative;display:block;margin:0;white-space:nowrap;cursor:pointer;transition:border-color 0.3s,background 0.3s,padding 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);}.ant-menu-submenu >.ant-menu .ant-menu-item .ant-menu-item-icon,.ant-menu-submenu >.ant-menu .ant-menu-submenu-title .ant-menu-item-icon,.ant-menu-submenu >.ant-menu .ant-menu-item .anticon,.ant-menu-submenu >.ant-menu .ant-menu-submenu-title .anticon{min-width:14px;font-size:14px;transition:font-size 0.2s cubic-bezier(0.215, 0.61, 0.355, 1),margin 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),color 0.3s;}.ant-menu-submenu >.ant-menu .ant-menu-item .ant-menu-item-icon +span,.ant-menu-submenu >.ant-menu .ant-menu-submenu-title .ant-menu-item-icon +span,.ant-menu-submenu >.ant-menu .ant-menu-item .anticon +span,.ant-menu-submenu >.ant-menu .ant-menu-submenu-title .anticon +span{margin-inline-start:10px;opacity:1;transition:opacity 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),margin 0.3s,color 0.3s;}.ant-menu-submenu >.ant-menu .ant-menu-item .ant-menu-item-icon,.ant-menu-submenu >.ant-menu .ant-menu-submenu-title .ant-menu-item-icon{display:inline-flex;align-items:center;color:inherit;font-style:normal;line-height:0;text-align:center;text-transform:none;vertical-align:-0.125em;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}.ant-menu-submenu >.ant-menu .ant-menu-item .ant-menu-item-icon >*,.ant-menu-submenu >.ant-menu .ant-menu-submenu-title .ant-menu-item-icon >*{line-height:1;}.ant-menu-submenu >.ant-menu .ant-menu-item .ant-menu-item-icon svg,.ant-menu-submenu >.ant-menu .ant-menu-submenu-title .ant-menu-item-icon svg{display:inline-block;}.ant-menu-submenu >.ant-menu .ant-menu-item.ant-menu-item-only-child >.anticon,.ant-menu-submenu >.ant-menu .ant-menu-submenu-title.ant-menu-item-only-child >.anticon,.ant-menu-submenu >.ant-menu .ant-menu-item.ant-menu-item-only-child >.ant-menu-item-icon,.ant-menu-submenu >.ant-menu .ant-menu-submenu-title.ant-menu-item-only-child >.ant-menu-item-icon{margin-inline-end:0;}.ant-menu-submenu >.ant-menu .ant-menu-item-disabled,.ant-menu-submenu >.ant-menu .ant-menu-submenu-disabled{background:none!important;cursor:not-allowed;}.ant-menu-submenu >.ant-menu .ant-menu-item-disabled::after,.ant-menu-submenu >.ant-menu .ant-menu-submenu-disabled::after{border-color:transparent!important;}.ant-menu-submenu >.ant-menu .ant-menu-item-disabled a,.ant-menu-submenu >.ant-menu .ant-menu-submenu-disabled a{color:inherit!important;}.ant-menu-submenu >.ant-menu .ant-menu-item-disabled >.ant-menu-submenu-title,.ant-menu-submenu >.ant-menu .ant-menu-submenu-disabled >.ant-menu-submenu-title{color:inherit!important;cursor:not-allowed;}.ant-menu-submenu >.ant-menu .ant-menu-submenu-expand-icon,.ant-menu-submenu >.ant-menu .ant-menu-submenu-arrow{position:absolute;top:50%;inset-inline-end:16px;width:10px;color:currentcolor;transform:translateY(-50%);transition:transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),opacity 0.3s;}.ant-menu-submenu >.ant-menu .ant-menu-submenu-arrow::before,.ant-menu-submenu >.ant-menu .ant-menu-submenu-arrow::after{position:absolute;width:6px;height:1.5px;background-color:currentcolor;border-radius:6px;transition:background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),top 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);content:\\"\\";}.ant-menu-submenu >.ant-menu .ant-menu-submenu-arrow::before{transform:rotate(45deg) translateY(-2.5px);}.ant-menu-submenu >.ant-menu .ant-menu-submenu-arrow::after{transform:rotate(-45deg) translateY(2.5px);}.ant-menu-submenu >.ant-menu .ant-menu-item,.ant-menu-submenu >.ant-menu .ant-menu-submenu>.ant-menu-submenu-title{border-radius:4px;}.ant-menu-submenu >.ant-menu .ant-menu-submenu-title::after{transition:transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);}.ant-menu .ant-menu-submenu-expand-icon,.ant-menu .ant-menu-submenu-arrow{position:absolute;top:50%;inset-inline-end:16px;width:10px;color:currentcolor;transform:translateY(-50%);transition:transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),opacity 0.3s;}.ant-menu .ant-menu-submenu-arrow::before,.ant-menu .ant-menu-submenu-arrow::after{position:absolute;width:6px;height:1.5px;background-color:currentcolor;border-radius:6px;transition:background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),top 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);content:\\"\\";}.ant-menu .ant-menu-submenu-arrow::before{transform:rotate(45deg) translateY(-2.5px);}.ant-menu .ant-menu-submenu-arrow::after{transform:rotate(-45deg) translateY(2.5px);}.ant-menu-inline-collapsed .ant-menu-submenu-arrow::before,.ant-menu-inline .ant-menu-submenu-arrow::before{transform:rotate(-45deg) translateX(2.5px);}.ant-menu-inline-collapsed .ant-menu-submenu-arrow::after,.ant-menu-inline .ant-menu-submenu-arrow::after{transform:rotate(45deg) translateX(-2.5px);}.ant-menu .ant-menu-submenu-open.ant-menu-submenu-inline>.ant-menu-submenu-title>.ant-menu-submenu-arrow{transform:translateY(-2px);}.ant-menu .ant-menu-submenu-open.ant-menu-submenu-inline>.ant-menu-submenu-title>.ant-menu-submenu-arrow::after{transform:rotate(-45deg) translateX(-2.5px);}.ant-menu .ant-menu-submenu-open.ant-menu-submenu-inline>.ant-menu-submenu-title>.ant-menu-submenu-arrow::before{transform:rotate(45deg) translateX(2.5px);}.ant-layout-header .ant-menu{line-height:inherit;}.ant-menu-horizontal{line-height:46px;border:0;border-bottom:1px solid rgba(253, 253, 253, 0.12);box-shadow:none;}.ant-menu-horizontal::after{display:block;clear:both;height:0;content:\\"\\\\20\\";}.ant-menu-horizontal .ant-menu-item,.ant-menu-horizontal .ant-menu-submenu{position:relative;display:inline-block;vertical-align:bottom;padding-inline:16px;}.ant-menu-horizontal >.ant-menu-item:hover,.ant-menu-horizontal >.ant-menu-item-active,.ant-menu-horizontal >.ant-menu-submenu .ant-menu-submenu-title:hover{background-color:transparent;}.ant-menu-horizontal .ant-menu-item,.ant-menu-horizontal .ant-menu-submenu-title{transition:border-color 0.3s,background 0.3s;}.ant-menu-horizontal .ant-menu-submenu-arrow{display:none;}.ant-menu-inline.ant-menu-root,.ant-menu-vertical.ant-menu-root{box-shadow:none;}.ant-menu-inline .ant-menu-item,.ant-menu-vertical .ant-menu-item{position:relative;}.ant-menu-inline .ant-menu-item,.ant-menu-vertical .ant-menu-item,.ant-menu-inline .ant-menu-submenu-title,.ant-menu-vertical .ant-menu-submenu-title{height:40px;line-height:40px;padding-inline:16px;overflow:hidden;text-overflow:ellipsis;margin-inline:4px;margin-block:4px;width:calc(100% - 8px);}.ant-menu-inline .ant-menu-submenu,.ant-menu-vertical .ant-menu-submenu{padding-bottom:0.02px;}.ant-menu-inline >.ant-menu-item,.ant-menu-vertical >.ant-menu-item,.ant-menu-inline >.ant-menu-submenu>.ant-menu-submenu-title,.ant-menu-vertical >.ant-menu-submenu>.ant-menu-submenu-title{height:40px;line-height:40px;}.ant-menu-inline .ant-menu-item-group-list .ant-menu-submenu-title,.ant-menu-vertical .ant-menu-item-group-list .ant-menu-submenu-title,.ant-menu-inline .ant-menu-submenu-title,.ant-menu-vertical .ant-menu-submenu-title{padding-inline-end:34px;}.ant-menu-submenu-popup .ant-menu-vertical{box-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08),0 3px 6px -4px rgba(0, 0, 0, 0.12),0 9px 28px 8px rgba(0, 0, 0, 0.05);}.ant-menu-submenu-popup .ant-menu-vertical .ant-menu-item{position:relative;}.ant-menu-submenu-popup .ant-menu-vertical .ant-menu-item,.ant-menu-submenu-popup .ant-menu-vertical .ant-menu-submenu-title{height:40px;line-height:40px;padding-inline:16px;overflow:hidden;text-overflow:ellipsis;margin-inline:4px;margin-block:4px;width:calc(100% - 8px);}.ant-menu-submenu-popup .ant-menu-vertical .ant-menu-submenu{padding-bottom:0.02px;}.ant-menu-submenu-popup .ant-menu-vertical >.ant-menu-item,.ant-menu-submenu-popup .ant-menu-vertical >.ant-menu-submenu>.ant-menu-submenu-title{height:40px;line-height:40px;}.ant-menu-submenu-popup .ant-menu-vertical .ant-menu-item-group-list .ant-menu-submenu-title,.ant-menu-submenu-popup .ant-menu-vertical .ant-menu-submenu-title{padding-inline-end:34px;}.ant-menu-submenu-popup .ant-menu-vertical.ant-menu-sub{min-width:160px;max-height:calc(100vh - 100px);padding:0;overflow:hidden;border-inline-end:0;}.ant-menu-submenu-popup .ant-menu-vertical.ant-menu-sub:not([class*='-active']){overflow-x:hidden;overflow-y:auto;}.ant-menu-inline{width:100%;}.ant-menu-inline.ant-menu-root .ant-menu-item,.ant-menu-inline.ant-menu-root .ant-menu-submenu-title{display:flex;align-items:center;transition:border-color 0.3s,background 0.3s,padding 0.2s cubic-bezier(0.215, 0.61, 0.355, 1);}.ant-menu-inline.ant-menu-root .ant-menu-item >.ant-menu-title-content,.ant-menu-inline.ant-menu-root .ant-menu-submenu-title >.ant-menu-title-content{flex:auto;min-width:0;overflow:hidden;text-overflow:ellipsis;}.ant-menu-inline.ant-menu-root .ant-menu-item >*,.ant-menu-inline.ant-menu-root .ant-menu-submenu-title >*{flex:none;}.ant-menu-inline .ant-menu-sub.ant-menu-inline{padding:0;border:0;border-radius:0;box-shadow:none;}.ant-menu-inline .ant-menu-sub.ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title{height:40px;line-height:40px;list-style-position:inside;list-style-type:disc;}.ant-menu-inline .ant-menu-sub.ant-menu-inline .ant-menu-item-group-title{padding-inline-start:32px;}.ant-menu-inline .ant-menu-item{height:40px;line-height:40px;list-style-position:inside;list-style-type:disc;}.ant-menu-inline-collapsed{width:80px;}.ant-menu-inline-collapsed.ant-menu-root .ant-menu-item >.ant-menu-inline-collapsed-noicon,.ant-menu-inline-collapsed.ant-menu-root .ant-menu-submenu .ant-menu-submenu-title >.ant-menu-inline-collapsed-noicon{font-size:16px;text-align:center;}.ant-menu-inline-collapsed >.ant-menu-item,.ant-menu-inline-collapsed >.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-item,.ant-menu-inline-collapsed >.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-submenu>.ant-menu-submenu-title,.ant-menu-inline-collapsed >.ant-menu-submenu>.ant-menu-submenu-title{inset-inline-start:0;padding-inline:calc(50% - 12px);text-overflow:clip;}.ant-menu-inline-collapsed >.ant-menu-item .ant-menu-submenu-arrow,.ant-menu-inline-collapsed >.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-item .ant-menu-submenu-arrow,.ant-menu-inline-collapsed >.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-submenu-arrow,.ant-menu-inline-collapsed >.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-submenu-arrow,.ant-menu-inline-collapsed >.ant-menu-item .ant-menu-submenu-expand-icon,.ant-menu-inline-collapsed >.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-item .ant-menu-submenu-expand-icon,.ant-menu-inline-collapsed >.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-submenu-expand-icon,.ant-menu-inline-collapsed >.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-submenu-expand-icon{opacity:0;}.ant-menu-inline-collapsed >.ant-menu-item .ant-menu-item-icon,.ant-menu-inline-collapsed >.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-item .ant-menu-item-icon,.ant-menu-inline-collapsed >.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-item-icon,.ant-menu-inline-collapsed >.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-item-icon,.ant-menu-inline-collapsed >.ant-menu-item .anticon,.ant-menu-inline-collapsed >.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-item .anticon,.ant-menu-inline-collapsed >.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-submenu>.ant-menu-submenu-title .anticon,.ant-menu-inline-collapsed >.ant-menu-submenu>.ant-menu-submenu-title .anticon{margin:0;font-size:16px;line-height:40px;}.ant-menu-inline-collapsed >.ant-menu-item .ant-menu-item-icon +span,.ant-menu-inline-collapsed >.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-item .ant-menu-item-icon +span,.ant-menu-inline-collapsed >.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-item-icon +span,.ant-menu-inline-collapsed >.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-item-icon +span,.ant-menu-inline-collapsed >.ant-menu-item .anticon +span,.ant-menu-inline-collapsed >.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-item .anticon +span,.ant-menu-inline-collapsed >.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-submenu>.ant-menu-submenu-title .anticon +span,.ant-menu-inline-collapsed >.ant-menu-submenu>.ant-menu-submenu-title .anticon +span{display:inline-block;opacity:0;}.ant-menu-inline-collapsed .ant-menu-item-icon,.ant-menu-inline-collapsed .anticon{display:inline-block;}.ant-menu-inline-collapsed-tooltip{pointer-events:none;}.ant-menu-inline-collapsed-tooltip .ant-menu-item-icon,.ant-menu-inline-collapsed-tooltip .anticon{display:none;}.ant-menu-inline-collapsed-tooltip a,.ant-menu-inline-collapsed-tooltip a:hover{color:#fff;}.ant-menu-inline-collapsed .ant-menu-item-group-title{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding-inline:8px;}.ant-menu-light{color:rgba(255, 255, 255, 0.85);background:#141414;}.ant-menu-light.ant-menu-root:focus-visible{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-menu-light .ant-menu-item-group-title{color:rgba(255, 255, 255, 0.45);}.ant-menu-light .ant-menu-submenu-selected >.ant-menu-submenu-title{color:#037003;}.ant-menu-light .ant-menu-item-disabled,.ant-menu-light .ant-menu-submenu-disabled{color:rgba(255, 255, 255, 0.25)!important;}.ant-menu-light .ant-menu-item:hover:not(.ant-menu-item-selected):not(.ant-menu-submenu-selected),.ant-menu-light .ant-menu-submenu-title:hover:not(.ant-menu-item-selected):not(.ant-menu-submenu-selected){color:rgba(255, 255, 255, 0.85);}.ant-menu-light:not(.ant-menu-horizontal) .ant-menu-item:not(.ant-menu-item-selected):hover{background-color:rgba(255, 255, 255, 0.12);}.ant-menu-light:not(.ant-menu-horizontal) .ant-menu-item:not(.ant-menu-item-selected):active{background-color:#111911;}.ant-menu-light:not(.ant-menu-horizontal) .ant-menu-submenu-title:hover{background-color:rgba(255, 255, 255, 0.12);}.ant-menu-light:not(.ant-menu-horizontal) .ant-menu-submenu-title:active{background-color:#111911;}.ant-menu-light .ant-menu-item-danger{color:#dc4446;}.ant-menu-light .ant-menu-item-danger.ant-menu-item:hover:not(.ant-menu-item-selected):not(.ant-menu-submenu-selected){color:#dc4446;}.ant-menu-light .ant-menu-item-danger.ant-menu-item:active{background:#2c1618;}.ant-menu-light .ant-menu-item a,.ant-menu-light .ant-menu-item a:hover{color:inherit;}.ant-menu-light .ant-menu-item-selected{color:#037003;}.ant-menu-light .ant-menu-item-selected.ant-menu-item-danger{color:#dc4446;}.ant-menu-light .ant-menu-item-selected a,.ant-menu-light .ant-menu-item-selected a:hover{color:inherit;}.ant-menu-light .ant-menu-item-selected{background-color:#111911;}.ant-menu-light .ant-menu-item-selected.ant-menu-item-danger{background-color:#2c1618;}.ant-menu-light .ant-menu-item:not(.ant-menu-item-disabled):focus-visible,.ant-menu-light .ant-menu-submenu-title:not(.ant-menu-item-disabled):focus-visible{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-menu-light.ant-menu-submenu>.ant-menu{background-color:#1f1f1f;}.ant-menu-light.ant-menu-popup>.ant-menu{background-color:#141414;}.ant-menu-light.ant-menu-horizontal >.ant-menu-item,.ant-menu-light.ant-menu-horizontal >.ant-menu-submenu{top:1px;margin-top:-1px;margin-bottom:0;border-radius:0;}.ant-menu-light.ant-menu-horizontal >.ant-menu-item::after,.ant-menu-light.ant-menu-horizontal >.ant-menu-submenu::after{position:absolute;inset-inline:16px;bottom:0;border-bottom:2px solid transparent;transition:border-color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);content:\\"\\";}.ant-menu-light.ant-menu-horizontal >.ant-menu-item:hover::after,.ant-menu-light.ant-menu-horizontal >.ant-menu-submenu:hover::after,.ant-menu-light.ant-menu-horizontal >.ant-menu-item-active::after,.ant-menu-light.ant-menu-horizontal >.ant-menu-submenu-active::after,.ant-menu-light.ant-menu-horizontal >.ant-menu-item-open::after,.ant-menu-light.ant-menu-horizontal >.ant-menu-submenu-open::after{border-bottom-width:2px;border-bottom-color:#037003;}.ant-menu-light.ant-menu-horizontal >.ant-menu-item-selected,.ant-menu-light.ant-menu-horizontal >.ant-menu-submenu-selected{color:#037003;background-color:transparent;}.ant-menu-light.ant-menu-horizontal >.ant-menu-item-selected::after,.ant-menu-light.ant-menu-horizontal >.ant-menu-submenu-selected::after{border-bottom-width:2px;border-bottom-color:#037003;}.ant-menu-light.ant-menu-root.ant-menu-inline,.ant-menu-light.ant-menu-root.ant-menu-vertical{border-inline-end:1px solid rgba(253, 253, 253, 0.12);}.ant-menu-light.ant-menu-inline .ant-menu-sub.ant-menu-inline{background:rgba(255, 255, 255, 0.04);}.ant-menu-light.ant-menu-inline .ant-menu-item{position:relative;}.ant-menu-light.ant-menu-inline .ant-menu-item::after{position:absolute;inset-block:0;inset-inline-end:0;border-inline-end:0px solid #037003;transform:scaleY(0.0001);opacity:0;transition:transform 0.2s cubic-bezier(0.215, 0.61, 0.355, 1),opacity 0.2s cubic-bezier(0.215, 0.61, 0.355, 1);content:\\"\\";}.ant-menu-light.ant-menu-inline .ant-menu-item.ant-menu-item-danger::after{border-inline-end-color:#dc4446;}.ant-menu-light.ant-menu-inline .ant-menu-selected::after,.ant-menu-light.ant-menu-inline .ant-menu-item-selected::after{transform:scaleY(1);opacity:1;transition:transform 0.2s cubic-bezier(0.645, 0.045, 0.355, 1),opacity 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);}.ant-menu-dark{color:rgba(255, 255, 255, 0.65);background:#001529;}.ant-menu-dark.ant-menu-root:focus-visible{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-menu-dark .ant-menu-item-group-title{color:rgba(255, 255, 255, 0.65);}.ant-menu-dark .ant-menu-submenu-selected >.ant-menu-submenu-title{color:#fff;}.ant-menu-dark .ant-menu-item-disabled,.ant-menu-dark .ant-menu-submenu-disabled{color:rgba(255, 255, 255, 0.25)!important;}.ant-menu-dark .ant-menu-item:hover:not(.ant-menu-item-selected):not(.ant-menu-submenu-selected),.ant-menu-dark .ant-menu-submenu-title:hover:not(.ant-menu-item-selected):not(.ant-menu-submenu-selected){color:#fff;}.ant-menu-dark:not(.ant-menu-horizontal) .ant-menu-item:not(.ant-menu-item-selected):hover{background-color:rgba(255, 255, 255, 0.12);}.ant-menu-dark:not(.ant-menu-horizontal) .ant-menu-item:not(.ant-menu-item-selected):active{background-color:#037003;}.ant-menu-dark:not(.ant-menu-horizontal) .ant-menu-submenu-title:hover{background-color:rgba(255, 255, 255, 0.12);}.ant-menu-dark:not(.ant-menu-horizontal) .ant-menu-submenu-title:active{background-color:#037003;}.ant-menu-dark .ant-menu-item-danger{color:#dc4446;}.ant-menu-dark .ant-menu-item-danger.ant-menu-item:hover:not(.ant-menu-item-selected):not(.ant-menu-submenu-selected){color:#e86e6b;}.ant-menu-dark .ant-menu-item-danger.ant-menu-item:active{background:#dc4446;}.ant-menu-dark .ant-menu-item a,.ant-menu-dark .ant-menu-item a:hover{color:inherit;}.ant-menu-dark .ant-menu-item-selected{color:#fff;}.ant-menu-dark .ant-menu-item-selected.ant-menu-item-danger{color:#fff;}.ant-menu-dark .ant-menu-item-selected a,.ant-menu-dark .ant-menu-item-selected a:hover{color:inherit;}.ant-menu-dark .ant-menu-item-selected{background-color:#037003;}.ant-menu-dark .ant-menu-item-selected.ant-menu-item-danger{background-color:#dc4446;}.ant-menu-dark .ant-menu-item:not(.ant-menu-item-disabled):focus-visible,.ant-menu-dark .ant-menu-submenu-title:not(.ant-menu-item-disabled):focus-visible{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-menu-dark.ant-menu-submenu>.ant-menu{background-color:#001529;}.ant-menu-dark.ant-menu-popup>.ant-menu{background-color:#001529;}.ant-menu-dark.ant-menu-horizontal{border-bottom:0;}.ant-menu-dark.ant-menu-horizontal >.ant-menu-item,.ant-menu-dark.ant-menu-horizontal >.ant-menu-submenu{top:0;margin-top:0;margin-bottom:0;border-radius:0;}.ant-menu-dark.ant-menu-horizontal >.ant-menu-item::after,.ant-menu-dark.ant-menu-horizontal >.ant-menu-submenu::after{position:absolute;inset-inline:16px;bottom:0;border-bottom:0px solid transparent;transition:border-color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);content:\\"\\";}.ant-menu-dark.ant-menu-horizontal >.ant-menu-item:hover::after,.ant-menu-dark.ant-menu-horizontal >.ant-menu-submenu:hover::after,.ant-menu-dark.ant-menu-horizontal >.ant-menu-item-active::after,.ant-menu-dark.ant-menu-horizontal >.ant-menu-submenu-active::after,.ant-menu-dark.ant-menu-horizontal >.ant-menu-item-open::after,.ant-menu-dark.ant-menu-horizontal >.ant-menu-submenu-open::after{border-bottom-width:0;border-bottom-color:#fff;}.ant-menu-dark.ant-menu-horizontal >.ant-menu-item-selected,.ant-menu-dark.ant-menu-horizontal >.ant-menu-submenu-selected{color:#fff;background-color:#037003;}.ant-menu-dark.ant-menu-horizontal >.ant-menu-item-selected::after,.ant-menu-dark.ant-menu-horizontal >.ant-menu-submenu-selected::after{border-bottom-width:0;border-bottom-color:#fff;}.ant-menu-dark.ant-menu-root.ant-menu-inline,.ant-menu-dark.ant-menu-root.ant-menu-vertical{border-inline-end:0px solid rgba(253, 253, 253, 0.12);}.ant-menu-dark.ant-menu-inline .ant-menu-sub.ant-menu-inline{background:#000c17;}.ant-menu-dark.ant-menu-inline .ant-menu-item{position:relative;}.ant-menu-dark.ant-menu-inline .ant-menu-item::after{position:absolute;inset-block:0;inset-inline-end:0;border-inline-end:0px solid #fff;transform:scaleY(0.0001);opacity:0;transition:transform 0.2s cubic-bezier(0.215, 0.61, 0.355, 1),opacity 0.2s cubic-bezier(0.215, 0.61, 0.355, 1);content:\\"\\";}.ant-menu-dark.ant-menu-inline .ant-menu-item.ant-menu-item-danger::after{border-inline-end-color:#fff;}.ant-menu-dark.ant-menu-inline .ant-menu-selected::after,.ant-menu-dark.ant-menu-inline .ant-menu-item-selected::after{transform:scaleY(1);opacity:1;transition:transform 0.2s cubic-bezier(0.645, 0.045, 0.355, 1),opacity 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);}.ant-menu-rtl{direction:rtl;}.ant-menu-submenu-rtl{transform-origin:100% 0;}.ant-menu-rtl.ant-menu-vertical .ant-menu-submenu-arrow::before,.ant-menu-submenu-rtl .ant-menu-vertical .ant-menu-submenu-arrow::before{transform:rotate(-45deg) translateY(-2.5px);}.ant-menu-rtl.ant-menu-vertical .ant-menu-submenu-arrow::after,.ant-menu-submenu-rtl .ant-menu-vertical .ant-menu-submenu-arrow::after{transform:rotate(45deg) translateY(2.5px);}.ant-menu .ant-motion-collapse-legacy{overflow:hidden;}.ant-menu .ant-motion-collapse-legacy-active{transition:height 0.2s cubic-bezier(0.645, 0.045, 0.355, 1),opacity 0.2s cubic-bezier(0.645, 0.045, 0.355, 1)!important;}.ant-menu .ant-motion-collapse{overflow:hidden;transition:height 0.2s cubic-bezier(0.645, 0.045, 0.355, 1),opacity 0.2s cubic-bezier(0.645, 0.045, 0.355, 1)!important;}.ant-slide-up-enter,.ant-slide-up-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-slide-up-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-slide-up-enter.ant-slide-up-enter-active,.ant-slide-up-appear.ant-slide-up-appear-active{animation-name:antSlideUpIn;animation-play-state:running;}.ant-slide-up-leave.ant-slide-up-leave-active{animation-name:antSlideUpOut;animation-play-state:running;pointer-events:none;}.ant-slide-up-enter,.ant-slide-up-appear{transform:scale(0);transform-origin:0% 0%;opacity:0;animation-timing-function:cubic-bezier(0.23, 1, 0.32, 1);}.ant-slide-up-leave{animation-timing-function:cubic-bezier(0.755, 0.05, 0.855, 0.06);}.ant-slide-down-enter,.ant-slide-down-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-slide-down-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-slide-down-enter.ant-slide-down-enter-active,.ant-slide-down-appear.ant-slide-down-appear-active{animation-name:antSlideDownIn;animation-play-state:running;}.ant-slide-down-leave.ant-slide-down-leave-active{animation-name:antSlideDownOut;animation-play-state:running;pointer-events:none;}.ant-slide-down-enter,.ant-slide-down-appear{transform:scale(0);transform-origin:0% 0%;opacity:0;animation-timing-function:cubic-bezier(0.23, 1, 0.32, 1);}.ant-slide-down-leave{animation-timing-function:cubic-bezier(0.755, 0.05, 0.855, 0.06);}.ant-zoom-big-enter,.ant-zoom-big-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-zoom-big-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-zoom-big-enter.ant-zoom-big-enter-active,.ant-zoom-big-appear.ant-zoom-big-appear-active{animation-name:antZoomBigIn;animation-play-state:running;}.ant-zoom-big-leave.ant-zoom-big-leave-active{animation-name:antZoomBigOut;animation-play-state:running;pointer-events:none;}.ant-zoom-big-enter,.ant-zoom-big-appear{transform:scale(0);opacity:0;animation-timing-function:cubic-bezier(0.08, 0.82, 0.17, 1);}.ant-zoom-big-enter-prepare,.ant-zoom-big-appear-prepare{transform:none;}.ant-zoom-big-leave{animation-timing-function:cubic-bezier(0.78, 0.14, 0.15, 0.86);}[class^=\\"ant-mentions\\"],[class*=\\" ant-mentions\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-mentions\\"]::before,[class*=\\" ant-mentions\\"]::before,[class^=\\"ant-mentions\\"]::after,[class*=\\" ant-mentions\\"]::after{box-sizing:border-box;}[class^=\\"ant-mentions\\"] [class^=\\"ant-mentions\\"],[class*=\\" ant-mentions\\"] [class^=\\"ant-mentions\\"],[class^=\\"ant-mentions\\"] [class*=\\" ant-mentions\\"],[class*=\\" ant-mentions\\"] [class*=\\" ant-mentions\\"]{box-sizing:border-box;}[class^=\\"ant-mentions\\"] [class^=\\"ant-mentions\\"]::before,[class*=\\" ant-mentions\\"] [class^=\\"ant-mentions\\"]::before,[class^=\\"ant-mentions\\"] [class*=\\" ant-mentions\\"]::before,[class*=\\" ant-mentions\\"] [class*=\\" ant-mentions\\"]::before,[class^=\\"ant-mentions\\"] [class^=\\"ant-mentions\\"]::after,[class*=\\" ant-mentions\\"] [class^=\\"ant-mentions\\"]::after,[class^=\\"ant-mentions\\"] [class*=\\" ant-mentions\\"]::after,[class*=\\" ant-mentions\\"] [class*=\\" ant-mentions\\"]::after{box-sizing:border-box;}.ant-mentions{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;display:inline-block;width:100%;min-width:0;background-color:#141414;background-image:none;border-width:1px;border-style:solid;border-color:#424242;border-radius:6px;transition:all 0.2s;height:auto;overflow:hidden;white-space:pre-wrap;vertical-align:bottom;}.ant-mentions::-moz-placeholder{opacity:1;}.ant-mentions::placeholder{color:rgba(255, 255, 255, 0.25);user-select:none;}.ant-mentions:placeholder-shown{text-overflow:ellipsis;}.ant-mentions:hover{border-color:#198016;border-inline-end-width:1px;}.ant-mentions:focus,.ant-mentions-focused{border-color:#198016;box-shadow:0 0 0 2px rgba(0, 53, 0, 0.15);border-inline-end-width:1px;outline:0;}.ant-mentions-disabled,.ant-mentions[disabled]{color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);border-color:#424242;box-shadow:none;cursor:not-allowed;opacity:1;}.ant-mentions-disabled:hover,.ant-mentions[disabled]:hover{border-color:#424242;border-inline-end-width:1px;}.ant-mentions-borderless,.ant-mentions-borderless:hover,.ant-mentions-borderless:focus,.ant-mentions-borderless-focused,.ant-mentions-borderless-disabled,.ant-mentions-borderless[disabled]{background-color:transparent;border:none;box-shadow:none;}textarea.ant-mentions{max-width:100%;height:auto;min-height:32px;line-height:1.5714285714285714;vertical-align:bottom;transition:all 0.3s,height 0s;resize:vertical;}.ant-mentions-lg{padding:7px 11px;font-size:16px;line-height:1.5;border-radius:8px;}.ant-mentions-sm{padding:0px 7px;border-radius:4px;}.ant-mentions-rtl{direction:rtl;}.ant-mentions-textarea-rtl{direction:rtl;}.ant-mentions-status-error:not(.ant-mentions-disabled):not(.ant-mentions-borderless).ant-mentions{border-color:#dc4446;}.ant-mentions-status-error:not(.ant-mentions-disabled):not(.ant-mentions-borderless).ant-mentions:hover{border-color:#7e2e2f;}.ant-mentions-status-error:not(.ant-mentions-disabled):not(.ant-mentions-borderless).ant-mentions:focus,.ant-mentions-status-error:not(.ant-mentions-disabled):not(.ant-mentions-borderless).ant-mentions-focused{border-color:#dc4446;box-shadow:0 0 0 2px rgba(238, 38, 56, 0.11);border-inline-end-width:1px;outline:0;}.ant-mentions-status-error:not(.ant-mentions-disabled):not(.ant-mentions-borderless).ant-mentions .ant-mentions-prefix{color:#dc4446;}.ant-mentions-status-warning:not(.ant-mentions-disabled):not(.ant-mentions-borderless).ant-mentions{border-color:#d89614;}.ant-mentions-status-warning:not(.ant-mentions-disabled):not(.ant-mentions-borderless).ant-mentions:hover{border-color:#7c5914;}.ant-mentions-status-warning:not(.ant-mentions-disabled):not(.ant-mentions-borderless).ant-mentions:focus,.ant-mentions-status-warning:not(.ant-mentions-disabled):not(.ant-mentions-borderless).ant-mentions-focused{border-color:#d89614;box-shadow:0 0 0 2px rgba(173, 107, 0, 0.15);border-inline-end-width:1px;outline:0;}.ant-mentions-status-warning:not(.ant-mentions-disabled):not(.ant-mentions-borderless).ant-mentions .ant-mentions-prefix{color:#d89614;}.ant-mentions-disabled >textarea{color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);border-color:#424242;box-shadow:none;cursor:not-allowed;opacity:1;}.ant-mentions-disabled >textarea:hover{border-color:#424242;border-inline-end-width:1px;}.ant-mentions-focused{border-color:#198016;box-shadow:0 0 0 2px rgba(0, 53, 0, 0.15);border-inline-end-width:1px;outline:0;}.ant-mentions-affix-wrapper .ant-mentions-suffix{position:absolute;top:0;inset-inline-end:11px;bottom:0;z-index:1;display:inline-flex;align-items:center;margin:auto;}.ant-mentions >textarea,.ant-mentions .ant-mentions-measure{color:rgba(255, 255, 255, 0.85);box-sizing:border-box;min-height:30px;margin:0;padding:4px 11px;overflow:inherit;overflow-x:hidden;overflow-y:auto;font-weight:inherit;font-size:inherit;font-family:inherit;font-style:inherit;font-variant:inherit;font-size-adjust:inherit;font-stretch:inherit;line-height:inherit;direction:inherit;letter-spacing:inherit;white-space:inherit;text-align:inherit;vertical-align:top;word-wrap:break-word;word-break:inherit;tab-size:inherit;}.ant-mentions >textarea{width:100%;border:none;outline:none;resize:none;background-color:inherit;}.ant-mentions >textarea::-moz-placeholder{opacity:1;}.ant-mentions >textarea::placeholder{color:rgba(255, 255, 255, 0.25);user-select:none;}.ant-mentions >textarea:placeholder-shown{text-overflow:ellipsis;}.ant-mentions .ant-mentions-measure{position:absolute;top:0;inset-inline-end:0;bottom:0;inset-inline-start:0;z-index:-1;color:transparent;pointer-events:none;}.ant-mentions .ant-mentions-measure >span{display:inline-block;min-height:1em;}.ant-mentions-dropdown{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:absolute;top:-9999px;inset-inline-start:-9999px;z-index:1050;font-variant:initial;background-color:#1f1f1f;border-radius:8px;outline:none;box-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08),0 3px 6px -4px rgba(0, 0, 0, 0.12),0 9px 28px 8px rgba(0, 0, 0, 0.05);}.ant-mentions-dropdown-hidden{display:none;}.ant-mentions-dropdown .ant-mentions-dropdown-menu{max-height:250px;margin-bottom:0;padding-inline-start:0;overflow:auto;list-style:none;outline:none;}.ant-mentions-dropdown .ant-mentions-dropdown-menu-item{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;position:relative;display:block;min-width:100px;padding:5px 12px;color:rgba(255, 255, 255, 0.85);font-weight:normal;line-height:1.5714285714285714;cursor:pointer;transition:background 0.3s ease;}.ant-mentions-dropdown .ant-mentions-dropdown-menu-item:hover{background-color:rgba(255, 255, 255, 0.08);}.ant-mentions-dropdown .ant-mentions-dropdown-menu-item:first-child{border-start-start-radius:8px;border-start-end-radius:8px;border-end-start-radius:0;border-end-end-radius:0;}.ant-mentions-dropdown .ant-mentions-dropdown-menu-item:last-child{border-start-start-radius:0;border-start-end-radius:0;border-end-start-radius:8px;border-end-end-radius:8px;}.ant-mentions-dropdown .ant-mentions-dropdown-menu-item-disabled{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;}.ant-mentions-dropdown .ant-mentions-dropdown-menu-item-disabled:hover{color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);cursor:not-allowed;}.ant-mentions-dropdown .ant-mentions-dropdown-menu-item-selected{color:rgba(255, 255, 255, 0.85);font-weight:600;background-color:rgba(255, 255, 255, 0.08);}.ant-mentions-dropdown .ant-mentions-dropdown-menu-item-active{background-color:rgba(255, 255, 255, 0.08);}[class^=\\"ant-modal\\"],[class*=\\" ant-modal\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-modal\\"]::before,[class*=\\" ant-modal\\"]::before,[class^=\\"ant-modal\\"]::after,[class*=\\" ant-modal\\"]::after{box-sizing:border-box;}[class^=\\"ant-modal\\"] [class^=\\"ant-modal\\"],[class*=\\" ant-modal\\"] [class^=\\"ant-modal\\"],[class^=\\"ant-modal\\"] [class*=\\" ant-modal\\"],[class*=\\" ant-modal\\"] [class*=\\" ant-modal\\"]{box-sizing:border-box;}[class^=\\"ant-modal\\"] [class^=\\"ant-modal\\"]::before,[class*=\\" ant-modal\\"] [class^=\\"ant-modal\\"]::before,[class^=\\"ant-modal\\"] [class*=\\" ant-modal\\"]::before,[class*=\\" ant-modal\\"] [class*=\\" ant-modal\\"]::before,[class^=\\"ant-modal\\"] [class^=\\"ant-modal\\"]::after,[class*=\\" ant-modal\\"] [class^=\\"ant-modal\\"]::after,[class^=\\"ant-modal\\"] [class*=\\" ant-modal\\"]::after,[class*=\\" ant-modal\\"] [class*=\\" ant-modal\\"]::after{box-sizing:border-box;}.ant-modal-root .ant-modal-wrap{z-index:1000;position:fixed;inset:0;overflow:auto;outline:0;-webkit-overflow-scrolling:touch;}.ant-modal-root .ant-modal-wrap-rtl{direction:rtl;}.ant-modal-root .ant-modal-centered{text-align:center;}.ant-modal-root .ant-modal-centered::before{display:inline-block;width:0;height:100%;vertical-align:middle;content:\\"\\";}.ant-modal-root .ant-modal-centered .ant-modal{top:0;display:inline-block;padding-bottom:0;text-align:start;vertical-align:middle;}@media (max-width: 767){.ant-modal-root .ant-modal{max-width:calc(100vw - 16px);margin:8 auto;}.ant-modal-root .ant-modal-centered .ant-modal{flex:1;}}.ant-modal{box-sizing:border-box;margin:0 auto;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';pointer-events:none;position:relative;top:100px;width:auto;max-width:calc(100vw - 32px);padding-bottom:24px;}.ant-modal .ant-modal-title{margin:0;color:rgba(255, 255, 255, 0.85);font-weight:600;font-size:16px;line-height:1.5;word-wrap:break-word;}.ant-modal .ant-modal-content{position:relative;background-color:#1f1f1f;background-clip:padding-box;border:0;border-radius:8px;box-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08),0 3px 6px -4px rgba(0, 0, 0, 0.12),0 9px 28px 8px rgba(0, 0, 0, 0.05);pointer-events:auto;padding:20px 24px;}.ant-modal .ant-modal-close{position:absolute;top:17px;inset-inline-end:17px;z-index:1010;padding:0;color:rgba(255, 255, 255, 0.45);font-weight:600;line-height:1;text-decoration:none;background:transparent;border-radius:4px;width:22px;height:22px;border:0;outline:0;cursor:pointer;transition:color 0.2s,background-color 0.2s;}.ant-modal .ant-modal-close-x{display:block;font-size:16px;font-style:normal;line-height:22px;text-align:center;text-transform:none;text-rendering:auto;}.ant-modal .ant-modal-close:hover{color:rgba(255, 255, 255, 0.85);background-color:rgba(255, 255, 255, 0.12);text-decoration:none;}.ant-modal .ant-modal-close:active{background-color:rgba(255, 255, 255, 0.18);}.ant-modal .ant-modal-close:focus-visible{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-modal .ant-modal-header{color:rgba(255, 255, 255, 0.85);background:#1f1f1f;border-radius:8px 8px 0 0;margin-bottom:8px;}.ant-modal .ant-modal-body{font-size:14px;line-height:1.5714285714285714;word-wrap:break-word;}.ant-modal .ant-modal-footer{text-align:end;background:transparent;margin-top:12px;}.ant-modal .ant-modal-footer .ant-btn+.ant-btn:not(.ant-dropdown-trigger){margin-bottom:0;margin-inline-start:8px;}.ant-modal .ant-modal-open{overflow:hidden;}.ant-modal-pure-panel{top:auto;padding:0;display:flex;flex-direction:column;}.ant-modal-pure-panel .ant-modal-content,.ant-modal-pure-panel .ant-modal-body,.ant-modal-pure-panel .ant-modal-confirm-body-wrapper{display:flex;flex-direction:column;flex:auto;}.ant-modal-pure-panel .ant-modal-confirm-body{margin-bottom:auto;}.ant-modal-confirm-rtl{direction:rtl;}.ant-modal-confirm .ant-modal-header{display:none;}.ant-modal-confirm .ant-modal-confirm-body-wrapper::before{display:table;content:\\"\\";}.ant-modal-confirm .ant-modal-confirm-body-wrapper::after{display:table;clear:both;content:\\"\\";}.ant-modal-confirm .ant-modal-confirm-body{display:flex;flex-wrap:wrap;align-items:center;}.ant-modal-confirm .ant-modal-confirm-body .ant-modal-confirm-title{flex:0 0 100%;display:block;overflow:hidden;color:rgba(255, 255, 255, 0.85);font-weight:600;font-size:16px;line-height:1.5;}.ant-modal-confirm .ant-modal-confirm-body .ant-modal-confirm-title +.ant-modal-confirm-content{margin-block-start:8px;flex-basis:100%;max-width:calc(100% - 34px);}.ant-modal-confirm .ant-modal-confirm-body .ant-modal-confirm-content{color:rgba(255, 255, 255, 0.85);font-size:14px;}.ant-modal-confirm .ant-modal-confirm-body >.anticon{flex:none;margin-inline-end:12px;font-size:22px;}.ant-modal-confirm .ant-modal-confirm-body >.anticon +.ant-modal-confirm-title{flex:1;}.ant-modal-confirm .ant-modal-confirm-body >.anticon +.ant-modal-confirm-title+.ant-modal-confirm-content{margin-inline-start:34px;}.ant-modal-confirm .ant-modal-confirm-btns{text-align:end;margin-top:12px;}.ant-modal-confirm .ant-modal-confirm-btns .ant-btn+.ant-btn{margin-bottom:0;margin-inline-start:8px;}.ant-modal-confirm-error .ant-modal-confirm-body>.anticon{color:#dc4446;}.ant-modal-confirm-warning .ant-modal-confirm-body>.anticon,.ant-modal-confirm-confirm .ant-modal-confirm-body>.anticon{color:#d89614;}.ant-modal-confirm-info .ant-modal-confirm-body>.anticon{color:#1668dc;}.ant-modal-confirm-success .ant-modal-confirm-body>.anticon{color:#49aa19;}.ant-modal-zoom-leave .ant-modal-btns{pointer-events:none;}.ant-modal-root .ant-modal-wrap-rtl{direction:rtl;}.ant-modal-root .ant-modal-wrap-rtl .ant-modal-confirm-body{direction:rtl;}.ant-modal-root .ant-modal.ant-zoom-enter,.ant-modal-root .ant-modal.ant-zoom-appear{transform:none;opacity:0;animation-duration:0.3s;user-select:none;}.ant-modal-root .ant-modal.ant-zoom-leave .ant-modal-content{pointer-events:none;}.ant-modal-root .ant-modal-mask{position:fixed;top:0;inset-inline-end:0;bottom:0;inset-inline-start:0;z-index:1000;height:100%;background-color:rgba(0, 0, 0, 0.45);}.ant-modal-root .ant-modal-mask .ant-modal-hidden{display:none;}.ant-modal-root .ant-modal-wrap{position:fixed;top:0;inset-inline-end:0;bottom:0;inset-inline-start:0;overflow:auto;outline:0;-webkit-overflow-scrolling:touch;}.ant-modal-root .ant-fade-enter,.ant-modal-root .ant-fade-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-modal-root .ant-fade-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-modal-root .ant-fade-enter.ant-fade-enter-active,.ant-modal-root .ant-fade-appear.ant-fade-appear-active{animation-name:antFadeIn;animation-play-state:running;}.ant-modal-root .ant-fade-leave.ant-fade-leave-active{animation-name:antFadeOut;animation-play-state:running;pointer-events:none;}.ant-modal-root .ant-fade-enter,.ant-modal-root .ant-fade-appear{opacity:0;animation-timing-function:linear;}.ant-modal-root .ant-fade-leave{animation-timing-function:linear;}.ant-zoom-enter,.ant-zoom-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-zoom-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-zoom-enter.ant-zoom-enter-active,.ant-zoom-appear.ant-zoom-appear-active{animation-name:antZoomIn;animation-play-state:running;}.ant-zoom-leave.ant-zoom-leave-active{animation-name:antZoomOut;animation-play-state:running;pointer-events:none;}.ant-zoom-enter,.ant-zoom-appear{transform:scale(0);opacity:0;animation-timing-function:cubic-bezier(0.08, 0.82, 0.17, 1);}.ant-zoom-enter-prepare,.ant-zoom-appear-prepare{transform:none;}.ant-zoom-leave{animation-timing-function:cubic-bezier(0.78, 0.14, 0.15, 0.86);}[class^=\\"ant-statistic\\"],[class*=\\" ant-statistic\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-statistic\\"]::before,[class*=\\" ant-statistic\\"]::before,[class^=\\"ant-statistic\\"]::after,[class*=\\" ant-statistic\\"]::after{box-sizing:border-box;}[class^=\\"ant-statistic\\"] [class^=\\"ant-statistic\\"],[class*=\\" ant-statistic\\"] [class^=\\"ant-statistic\\"],[class^=\\"ant-statistic\\"] [class*=\\" ant-statistic\\"],[class*=\\" ant-statistic\\"] [class*=\\" ant-statistic\\"]{box-sizing:border-box;}[class^=\\"ant-statistic\\"] [class^=\\"ant-statistic\\"]::before,[class*=\\" ant-statistic\\"] [class^=\\"ant-statistic\\"]::before,[class^=\\"ant-statistic\\"] [class*=\\" ant-statistic\\"]::before,[class*=\\" ant-statistic\\"] [class*=\\" ant-statistic\\"]::before,[class^=\\"ant-statistic\\"] [class^=\\"ant-statistic\\"]::after,[class*=\\" ant-statistic\\"] [class^=\\"ant-statistic\\"]::after,[class^=\\"ant-statistic\\"] [class*=\\" ant-statistic\\"]::after,[class*=\\" ant-statistic\\"] [class*=\\" ant-statistic\\"]::after{box-sizing:border-box;}.ant-statistic{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';}.ant-statistic .ant-statistic-title{margin-bottom:4px;color:rgba(255, 255, 255, 0.45);font-size:14px;}.ant-statistic .ant-statistic-skeleton{padding-top:16px;}.ant-statistic .ant-statistic-content{color:rgba(255, 255, 255, 0.85);font-size:24px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';}.ant-statistic .ant-statistic-content .ant-statistic-content-value{display:inline-block;direction:ltr;}.ant-statistic .ant-statistic-content .ant-statistic-content-prefix,.ant-statistic .ant-statistic-content .ant-statistic-content-suffix{display:inline-block;}.ant-statistic .ant-statistic-content .ant-statistic-content-prefix{margin-inline-end:4px;}.ant-statistic .ant-statistic-content .ant-statistic-content-suffix{margin-inline-start:4px;}[class^=\\"ant-skeleton\\"],[class*=\\" ant-skeleton\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-skeleton\\"]::before,[class*=\\" ant-skeleton\\"]::before,[class^=\\"ant-skeleton\\"]::after,[class*=\\" ant-skeleton\\"]::after{box-sizing:border-box;}[class^=\\"ant-skeleton\\"] [class^=\\"ant-skeleton\\"],[class*=\\" ant-skeleton\\"] [class^=\\"ant-skeleton\\"],[class^=\\"ant-skeleton\\"] [class*=\\" ant-skeleton\\"],[class*=\\" ant-skeleton\\"] [class*=\\" ant-skeleton\\"]{box-sizing:border-box;}[class^=\\"ant-skeleton\\"] [class^=\\"ant-skeleton\\"]::before,[class*=\\" ant-skeleton\\"] [class^=\\"ant-skeleton\\"]::before,[class^=\\"ant-skeleton\\"] [class*=\\" ant-skeleton\\"]::before,[class*=\\" ant-skeleton\\"] [class*=\\" ant-skeleton\\"]::before,[class^=\\"ant-skeleton\\"] [class^=\\"ant-skeleton\\"]::after,[class*=\\" ant-skeleton\\"] [class^=\\"ant-skeleton\\"]::after,[class^=\\"ant-skeleton\\"] [class*=\\" ant-skeleton\\"]::after,[class*=\\" ant-skeleton\\"] [class*=\\" ant-skeleton\\"]::after{box-sizing:border-box;}.ant-skeleton{display:table;width:100%;}.ant-skeleton .ant-skeleton-header{display:table-cell;padding-inline-end:16px;vertical-align:top;}.ant-skeleton .ant-skeleton-header .ant-skeleton-avatar{display:inline-block;vertical-align:top;background:rgba(255, 255, 255, 0.12);width:32px;height:32px;line-height:32px;}.ant-skeleton .ant-skeleton-header .ant-skeleton-avatar-circle{border-radius:50%;}.ant-skeleton .ant-skeleton-header .ant-skeleton-avatar-lg{width:40px;height:40px;line-height:40px;}.ant-skeleton .ant-skeleton-header .ant-skeleton-avatar-sm{width:24px;height:24px;line-height:24px;}.ant-skeleton .ant-skeleton-content{display:table-cell;width:100%;vertical-align:top;}.ant-skeleton .ant-skeleton-content .ant-skeleton-title{width:100%;height:16px;background:rgba(255, 255, 255, 0.12);border-radius:4px;}.ant-skeleton .ant-skeleton-content .ant-skeleton-title +.ant-skeleton-paragraph{margin-block-start:24px;}.ant-skeleton .ant-skeleton-content .ant-skeleton-paragraph{padding:0;}.ant-skeleton .ant-skeleton-content .ant-skeleton-paragraph >li{width:100%;height:16px;list-style:none;background:rgba(255, 255, 255, 0.12);border-radius:4px;}.ant-skeleton .ant-skeleton-content .ant-skeleton-paragraph >li +li{margin-block-start:16px;}.ant-skeleton .ant-skeleton-content .ant-skeleton-paragraph>li:last-child:not(:first-child):not(:nth-child(2)){width:61%;}.ant-skeleton-round .ant-skeleton-content .ant-skeleton-title,.ant-skeleton-round .ant-skeleton-content .ant-skeleton-paragraph>li{border-radius:100px;}.ant-skeleton-with-avatar .ant-skeleton-content .ant-skeleton-title{margin-block-start:12px;}.ant-skeleton-with-avatar .ant-skeleton-content .ant-skeleton-title +.ant-skeleton-paragraph{margin-block-start:28px;}.ant-skeleton.ant-skeleton-element{display:inline-block;width:auto;}.ant-skeleton.ant-skeleton-element .ant-skeleton-button{display:inline-block;vertical-align:top;background:rgba(255, 255, 255, 0.12);border-radius:4px;width:64px;min-width:64px;height:32px;line-height:32px;}.ant-skeleton.ant-skeleton-element .ant-skeleton-button.ant-skeleton-button-circle{width:32px;min-width:32px;border-radius:50%;}.ant-skeleton.ant-skeleton-element .ant-skeleton-button.ant-skeleton-button-round{border-radius:32px;}.ant-skeleton.ant-skeleton-element .ant-skeleton-button-lg{width:80px;min-width:80px;height:40px;line-height:40px;}.ant-skeleton.ant-skeleton-element .ant-skeleton-button-lg.ant-skeleton-button-circle{width:40px;min-width:40px;border-radius:50%;}.ant-skeleton.ant-skeleton-element .ant-skeleton-button-lg.ant-skeleton-button-round{border-radius:40px;}.ant-skeleton.ant-skeleton-element .ant-skeleton-button-sm{width:48px;min-width:48px;height:24px;line-height:24px;}.ant-skeleton.ant-skeleton-element .ant-skeleton-button-sm.ant-skeleton-button-circle{width:24px;min-width:24px;border-radius:50%;}.ant-skeleton.ant-skeleton-element .ant-skeleton-button-sm.ant-skeleton-button-round{border-radius:24px;}.ant-skeleton.ant-skeleton-element .ant-skeleton-avatar{display:inline-block;vertical-align:top;background:rgba(255, 255, 255, 0.12);width:32px;height:32px;line-height:32px;}.ant-skeleton.ant-skeleton-element .ant-skeleton-avatar.ant-skeleton-avatar-circle{border-radius:50%;}.ant-skeleton.ant-skeleton-element .ant-skeleton-avatar.ant-skeleton-avatar-lg{width:40px;height:40px;line-height:40px;}.ant-skeleton.ant-skeleton-element .ant-skeleton-avatar.ant-skeleton-avatar-sm{width:24px;height:24px;line-height:24px;}.ant-skeleton.ant-skeleton-element .ant-skeleton-input{display:inline-block;vertical-align:top;background:rgba(255, 255, 255, 0.12);border-radius:4px;width:160px;min-width:160px;height:32px;line-height:32px;}.ant-skeleton.ant-skeleton-element .ant-skeleton-input-lg{width:200px;min-width:200px;height:40px;line-height:40px;}.ant-skeleton.ant-skeleton-element .ant-skeleton-input-sm{width:120px;min-width:120px;height:24px;line-height:24px;}.ant-skeleton.ant-skeleton-element .ant-skeleton-image{display:flex;align-items:center;justify-content:center;vertical-align:top;background:rgba(255, 255, 255, 0.12);border-radius:4px;width:96px;height:96px;line-height:96px;}.ant-skeleton.ant-skeleton-element .ant-skeleton-image .ant-skeleton-image-path{fill:#bfbfbf;}.ant-skeleton.ant-skeleton-element .ant-skeleton-image .ant-skeleton-image-svg{width:48px;height:48px;line-height:48px;max-width:192px;max-height:192px;}.ant-skeleton.ant-skeleton-element .ant-skeleton-image .ant-skeleton-image-svg.ant-skeleton-image-svg-circle{border-radius:50%;}.ant-skeleton.ant-skeleton-element .ant-skeleton-image.ant-skeleton-image-circle{border-radius:50%;}.ant-skeleton.ant-skeleton-block{width:100%;}.ant-skeleton.ant-skeleton-block .ant-skeleton-button{width:100%;}.ant-skeleton.ant-skeleton-block .ant-skeleton-input{width:100%;}.ant-skeleton.ant-skeleton-active .ant-skeleton-title,.ant-skeleton.ant-skeleton-active .ant-skeleton-paragraph>li,.ant-skeleton.ant-skeleton-active .ant-skeleton-avatar,.ant-skeleton.ant-skeleton-active .ant-skeleton-button,.ant-skeleton.ant-skeleton-active .ant-skeleton-input,.ant-skeleton.ant-skeleton-active .ant-skeleton-image{position:relative;z-index:0;overflow:hidden;background:transparent;}.ant-skeleton.ant-skeleton-active .ant-skeleton-title::after,.ant-skeleton.ant-skeleton-active .ant-skeleton-paragraph>li::after,.ant-skeleton.ant-skeleton-active .ant-skeleton-avatar::after,.ant-skeleton.ant-skeleton-active .ant-skeleton-button::after,.ant-skeleton.ant-skeleton-active .ant-skeleton-input::after,.ant-skeleton.ant-skeleton-active .ant-skeleton-image::after{position:absolute;top:0;inset-inline-end:-150%;bottom:0;inset-inline-start:-150%;background:linear-gradient(90deg, rgba(255, 255, 255, 0.12) 25%, rgba(255, 255, 255, 0.18) 37%, rgba(255, 255, 255, 0.12) 63%);animation-name:ant-skeleton-loading;animation-duration:1.4s;animation-timing-function:ease;animation-iteration-count:infinite;content:\\"\\";}@keyframes ant-skeleton-loading{0%{transform:translateX(-37.5%);}100%{transform:translateX(37.5%);}}[class^=\\"ant-page-header\\"],[class*=\\" ant-page-header\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-page-header\\"]::before,[class*=\\" ant-page-header\\"]::before,[class^=\\"ant-page-header\\"]::after,[class*=\\" ant-page-header\\"]::after{box-sizing:border-box;}[class^=\\"ant-page-header\\"] [class^=\\"ant-page-header\\"],[class*=\\" ant-page-header\\"] [class^=\\"ant-page-header\\"],[class^=\\"ant-page-header\\"] [class*=\\" ant-page-header\\"],[class*=\\" ant-page-header\\"] [class*=\\" ant-page-header\\"]{box-sizing:border-box;}[class^=\\"ant-page-header\\"] [class^=\\"ant-page-header\\"]::before,[class*=\\" ant-page-header\\"] [class^=\\"ant-page-header\\"]::before,[class^=\\"ant-page-header\\"] [class*=\\" ant-page-header\\"]::before,[class*=\\" ant-page-header\\"] [class*=\\" ant-page-header\\"]::before,[class^=\\"ant-page-header\\"] [class^=\\"ant-page-header\\"]::after,[class*=\\" ant-page-header\\"] [class^=\\"ant-page-header\\"]::after,[class^=\\"ant-page-header\\"] [class*=\\" ant-page-header\\"]::after,[class*=\\" ant-page-header\\"] [class*=\\" ant-page-header\\"]::after{box-sizing:border-box;}.ant-page-header{box-sizing:border-box;margin:0;padding:20px 24px;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;background-color:#141414;}.ant-page-header.ant-page-header-ghost{background-color:transparent;}.ant-page-header.has-footer{padding-bottom:0;}.ant-page-header .ant-page-header-back{margin-right:20px;font-size:16px;line-height:1;}.ant-page-header .ant-page-header-back-button{color:#fff;text-decoration:none;outline:none;cursor:pointer;transition:color 0.3s;}.ant-page-header .ant-page-header-back-button:focus,.ant-page-header .ant-page-header-back-button:hover{color:#15417e;}.ant-page-header .ant-page-header-back-button:active{color:#1554ad;}.ant-page-header .ant-divider-vertical{height:14px;margin:0 12;vertical-align:middle;}.ant-breadcrumb+.ant-page-header-heading{margin-top:8px;}.ant-page-header .ant-page-header-heading{display:flex;justify-content:space-between;}.ant-page-header .ant-page-header-heading-left{display:flex;align-items:center;margin:4px 0;overflow:hidden;}.ant-page-header .ant-page-header-heading-title{margin-right:12px;margin-bottom:0;color:rgba(255, 255, 255, 0.85);font-weight:600;font-size:20px;line-height:32px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.ant-page-header .ant-page-header-heading .ant-avatar{margin-right:12px;}.ant-page-header .ant-page-header-heading-sub-title{margin-right:12px;color:rgba(255, 255, 255, 0.45);font-size:14px;line-height:1.5714285714285714;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.ant-page-header .ant-page-header-heading-extra{margin:4px 0;white-space:nowrap;}.ant-page-header .ant-page-header-heading-extra >*{margin-left:12px;white-space:unset;}.ant-page-header .ant-page-header-heading-extra >*:first-child{margin-left:0;}.ant-page-header .ant-page-header-content{padding-top:12px;}.ant-page-header .ant-page-header-footer{margin-top:20px;}.ant-page-header .ant-page-header-footer .ant-tabs >.ant-tabs-nav{margin:0;}.ant-page-header .ant-page-header-footer .ant-tabs >.ant-tabs-nav::before{border:none;}.ant-page-header .ant-page-header-footer .ant-tabs .ant-tabs-tab{padding-top:8px;padding-bottom:8px;font-size:16px;}.ant-page-header .ant-page-header-compact .ant-page-header-heading{flex-wrap:wrap;}.ant-page-header.ant-page-header-rtl{direction:rtl;}[class^=\\"ant-pagination\\"],[class*=\\" ant-pagination\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-pagination\\"]::before,[class*=\\" ant-pagination\\"]::before,[class^=\\"ant-pagination\\"]::after,[class*=\\" ant-pagination\\"]::after{box-sizing:border-box;}[class^=\\"ant-pagination\\"] [class^=\\"ant-pagination\\"],[class*=\\" ant-pagination\\"] [class^=\\"ant-pagination\\"],[class^=\\"ant-pagination\\"] [class*=\\" ant-pagination\\"],[class*=\\" ant-pagination\\"] [class*=\\" ant-pagination\\"]{box-sizing:border-box;}[class^=\\"ant-pagination\\"] [class^=\\"ant-pagination\\"]::before,[class*=\\" ant-pagination\\"] [class^=\\"ant-pagination\\"]::before,[class^=\\"ant-pagination\\"] [class*=\\" ant-pagination\\"]::before,[class*=\\" ant-pagination\\"] [class*=\\" ant-pagination\\"]::before,[class^=\\"ant-pagination\\"] [class^=\\"ant-pagination\\"]::after,[class*=\\" ant-pagination\\"] [class^=\\"ant-pagination\\"]::after,[class^=\\"ant-pagination\\"] [class*=\\" ant-pagination\\"]::after,[class*=\\" ant-pagination\\"] [class*=\\" ant-pagination\\"]::after{box-sizing:border-box;}.ant-pagination{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';}.ant-pagination ul,.ant-pagination ol{margin:0;padding:0;list-style:none;}.ant-pagination::after{display:block;clear:both;height:0;overflow:hidden;visibility:hidden;content:\\"\\";}.ant-pagination .ant-pagination-total-text{display:inline-block;height:32px;margin-inline-end:8px;line-height:30px;vertical-align:middle;}.ant-pagination .ant-pagination-item{display:inline-block;min-width:32px;height:32px;margin-inline-end:8px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';line-height:30px;text-align:center;vertical-align:middle;list-style:none;background-color:transparent;border:1px solid transparent;border-radius:6px;outline:0;cursor:pointer;user-select:none;}.ant-pagination .ant-pagination-item a{display:block;padding:0 6px;color:rgba(255, 255, 255, 0.85);transition:none;}.ant-pagination .ant-pagination-item a:hover{text-decoration:none;}.ant-pagination .ant-pagination-item:not(.ant-pagination-item-active):hover{transition:all 0.2s;background-color:rgba(255, 255, 255, 0.12);}.ant-pagination .ant-pagination-item:not(.ant-pagination-item-active):active{background-color:rgba(255, 255, 255, 0.18);}.ant-pagination .ant-pagination-item:focus-visible{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-pagination .ant-pagination-item-active{font-weight:600;background-color:#141414;border-color:#037003;}.ant-pagination .ant-pagination-item-active a{color:#037003;}.ant-pagination .ant-pagination-item-active:hover{border-color:#198016;}.ant-pagination .ant-pagination-item-active:hover a{color:#198016;}.ant-pagination .ant-pagination-jump-prev,.ant-pagination .ant-pagination-jump-next{outline:0;}.ant-pagination .ant-pagination-jump-prev .ant-pagination-item-container,.ant-pagination .ant-pagination-jump-next .ant-pagination-item-container{position:relative;}.ant-pagination .ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon,.ant-pagination .ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon{color:#037003;font-size:12px;opacity:0;transition:all 0.2s;}.ant-pagination .ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon-svg,.ant-pagination .ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon-svg{top:0;inset-inline-end:0;bottom:0;inset-inline-start:0;margin:auto;}.ant-pagination .ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-ellipsis,.ant-pagination .ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-ellipsis{position:absolute;top:0;inset-inline-end:0;bottom:0;inset-inline-start:0;display:block;margin:auto;color:rgba(255, 255, 255, 0.25);font-family:Arial,Helvetica,sans-serif;letter-spacing:2px;text-align:center;text-indent:0.13em;opacity:1;transition:all 0.2s;}.ant-pagination .ant-pagination-jump-prev:hover .ant-pagination-item-link-icon,.ant-pagination .ant-pagination-jump-next:hover .ant-pagination-item-link-icon{opacity:1;}.ant-pagination .ant-pagination-jump-prev:hover .ant-pagination-item-ellipsis,.ant-pagination .ant-pagination-jump-next:hover .ant-pagination-item-ellipsis{opacity:0;}.ant-pagination .ant-pagination-jump-prev:focus-visible,.ant-pagination .ant-pagination-jump-next:focus-visible{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-pagination .ant-pagination-jump-prev:focus-visible .ant-pagination-item-link-icon,.ant-pagination .ant-pagination-jump-next:focus-visible .ant-pagination-item-link-icon{opacity:1;}.ant-pagination .ant-pagination-jump-prev:focus-visible .ant-pagination-item-ellipsis,.ant-pagination .ant-pagination-jump-next:focus-visible .ant-pagination-item-ellipsis{opacity:0;}.ant-pagination .ant-pagination-prev,.ant-pagination .ant-pagination-jump-prev,.ant-pagination .ant-pagination-jump-next{margin-inline-end:8px;}.ant-pagination .ant-pagination-prev,.ant-pagination .ant-pagination-next,.ant-pagination .ant-pagination-jump-prev,.ant-pagination .ant-pagination-jump-next{display:inline-block;min-width:32px;height:32px;color:rgba(255, 255, 255, 0.85);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';line-height:32px;text-align:center;vertical-align:middle;list-style:none;border-radius:6px;cursor:pointer;transition:all 0.2s;}.ant-pagination .ant-pagination-prev,.ant-pagination .ant-pagination-next{font-family:Arial,Helvetica,sans-serif;outline:0;}.ant-pagination .ant-pagination-prev button,.ant-pagination .ant-pagination-next button{color:rgba(255, 255, 255, 0.85);cursor:pointer;user-select:none;}.ant-pagination .ant-pagination-prev .ant-pagination-item-link,.ant-pagination .ant-pagination-next .ant-pagination-item-link{display:block;width:100%;height:100%;padding:0;font-size:12px;text-align:center;background-color:transparent;border:1px solid transparent;border-radius:6px;outline:none;transition:all 0.2s;}.ant-pagination .ant-pagination-prev:focus-visible .ant-pagination-item-link,.ant-pagination .ant-pagination-next:focus-visible .ant-pagination-item-link{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,.ant-pagination .ant-pagination-next:hover .ant-pagination-item-link{background-color:rgba(255, 255, 255, 0.12);}.ant-pagination .ant-pagination-prev:active .ant-pagination-item-link,.ant-pagination .ant-pagination-next:active .ant-pagination-item-link{background-color:rgba(255, 255, 255, 0.18);}.ant-pagination .ant-pagination-prev.ant-pagination-disabled:hover .ant-pagination-item-link,.ant-pagination .ant-pagination-next.ant-pagination-disabled:hover .ant-pagination-item-link{background-color:transparent;}.ant-pagination .ant-pagination-slash{margin-inline-end:12px;margin-inline-start:4px;}.ant-pagination .ant-pagination-options{display:inline-block;margin-inline-start:16px;vertical-align:middle;}.ant-pagination .ant-pagination-options-size-changer.-select{display:inline-block;width:auto;}.ant-pagination .ant-pagination-options-quick-jumper{display:inline-block;height:32px;margin-inline-start:8px;line-height:32px;vertical-align:top;}.ant-pagination .ant-pagination-options-quick-jumper input{position:relative;display:inline-block;width:50px;min-width:0;padding:4px 11px;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;background-color:#141414;background-image:none;border-width:1px;border-style:solid;border-color:#424242;border-radius:6px;transition:all 0.2s;height:32px;box-sizing:border-box;margin:0;margin-inline-start:8px;margin-inline-end:8px;}.ant-pagination .ant-pagination-options-quick-jumper input::-moz-placeholder{opacity:1;}.ant-pagination .ant-pagination-options-quick-jumper input::placeholder{color:rgba(255, 255, 255, 0.25);user-select:none;}.ant-pagination .ant-pagination-options-quick-jumper input:placeholder-shown{text-overflow:ellipsis;}.ant-pagination .ant-pagination-options-quick-jumper input:hover{border-color:#198016;border-inline-end-width:1px;}.ant-pagination .ant-pagination-options-quick-jumper input:focus,.ant-pagination .ant-pagination-options-quick-jumper input-focused{border-color:#198016;box-shadow:0 0 0 2px rgba(0, 53, 0, 0.15);border-inline-end-width:1px;outline:0;}.ant-pagination .ant-pagination-options-quick-jumper input-disabled,.ant-pagination .ant-pagination-options-quick-jumper input[disabled]{color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);border-color:#424242;box-shadow:none;cursor:not-allowed;opacity:1;}.ant-pagination .ant-pagination-options-quick-jumper input-disabled:hover,.ant-pagination .ant-pagination-options-quick-jumper input[disabled]:hover{border-color:#424242;border-inline-end-width:1px;}.ant-pagination .ant-pagination-options-quick-jumper input-borderless,.ant-pagination .ant-pagination-options-quick-jumper input-borderless:hover,.ant-pagination .ant-pagination-options-quick-jumper input-borderless:focus,.ant-pagination .ant-pagination-options-quick-jumper input-borderless-focused,.ant-pagination .ant-pagination-options-quick-jumper input-borderless-disabled,.ant-pagination .ant-pagination-options-quick-jumper input-borderless[disabled]{background-color:transparent;border:none;box-shadow:none;}textarea.ant-pagination .ant-pagination-options-quick-jumper input{max-width:100%;height:auto;min-height:32px;line-height:1.5714285714285714;vertical-align:bottom;transition:all 0.3s,height 0s;resize:vertical;}.ant-pagination .ant-pagination-options-quick-jumper input-lg{padding:7px 11px;font-size:16px;line-height:1.5;border-radius:8px;}.ant-pagination .ant-pagination-options-quick-jumper input-sm{padding:0px 7px;border-radius:4px;}.ant-pagination .ant-pagination-options-quick-jumper input-rtl{direction:rtl;}.ant-pagination .ant-pagination-options-quick-jumper input-textarea-rtl{direction:rtl;}.ant-pagination.ant-pagination-simple .ant-pagination-prev,.ant-pagination.ant-pagination-simple .ant-pagination-next{height:24px;line-height:24px;vertical-align:top;}.ant-pagination.ant-pagination-simple .ant-pagination-prev .ant-pagination-item-link,.ant-pagination.ant-pagination-simple .ant-pagination-next .ant-pagination-item-link{height:24px;background-color:transparent;border:0;}.ant-pagination.ant-pagination-simple .ant-pagination-prev .ant-pagination-item-link:hover,.ant-pagination.ant-pagination-simple .ant-pagination-next .ant-pagination-item-link:hover{background-color:rgba(255, 255, 255, 0.12);}.ant-pagination.ant-pagination-simple .ant-pagination-prev .ant-pagination-item-link:active,.ant-pagination.ant-pagination-simple .ant-pagination-next .ant-pagination-item-link:active{background-color:rgba(255, 255, 255, 0.18);}.ant-pagination.ant-pagination-simple .ant-pagination-prev .ant-pagination-item-link::after,.ant-pagination.ant-pagination-simple .ant-pagination-next .ant-pagination-item-link::after{height:24px;line-height:24px;}.ant-pagination.ant-pagination-simple .ant-pagination-simple-pager{display:inline-block;height:24px;margin-inline-end:8px;}.ant-pagination.ant-pagination-simple .ant-pagination-simple-pager input{box-sizing:border-box;height:100%;margin-inline-end:8px;padding:0 6px;text-align:center;background-color:#141414;border:1px solid #424242;border-radius:6px;outline:none;transition:border-color 0.2s;color:inherit;}.ant-pagination.ant-pagination-simple .ant-pagination-simple-pager input:hover{border-color:#037003;}.ant-pagination.ant-pagination-simple .ant-pagination-simple-pager input:focus{border-color:#198016;box-shadow:0 0px 0 2px rgba(0, 53, 0, 0.15);}.ant-pagination.ant-pagination-simple .ant-pagination-simple-pager input[disabled]{color:rgba(255, 255, 255, 0.25);background-color:rgba(255, 255, 255, 0.08);border-color:#424242;cursor:not-allowed;}.ant-pagination.ant-pagination-mini .ant-pagination-total-text,.ant-pagination.ant-pagination-mini .ant-pagination-simple-pager{height:24px;line-height:24px;}.ant-pagination.ant-pagination-mini .ant-pagination-item{min-width:24px;height:24px;margin:0;line-height:22px;}.ant-pagination.ant-pagination-mini .ant-pagination-item:not(.ant-pagination-item-active){background-color:transparent;border-color:transparent;}.ant-pagination.ant-pagination-mini .ant-pagination-item:not(.ant-pagination-item-active):hover{background-color:rgba(255, 255, 255, 0.12);}.ant-pagination.ant-pagination-mini .ant-pagination-item:not(.ant-pagination-item-active):active{background-color:rgba(255, 255, 255, 0.18);}.ant-pagination.ant-pagination-mini .ant-pagination-prev,.ant-pagination.ant-pagination-mini .ant-pagination-next{min-width:24px;height:24px;margin:0;line-height:24px;}.ant-pagination.ant-pagination-mini .ant-pagination-prev:hover .ant-pagination-item-link,.ant-pagination.ant-pagination-mini .ant-pagination-next:hover .ant-pagination-item-link{background-color:rgba(255, 255, 255, 0.12);}.ant-pagination.ant-pagination-mini .ant-pagination-prev:active .ant-pagination-item-link,.ant-pagination.ant-pagination-mini .ant-pagination-next:active .ant-pagination-item-link{background-color:rgba(255, 255, 255, 0.18);}.ant-pagination.ant-pagination-mini .ant-pagination-prev.ant-pagination-disabled:hover .ant-pagination-item-link,.ant-pagination.ant-pagination-mini .ant-pagination-next.ant-pagination-disabled:hover .ant-pagination-item-link{background-color:transparent;}.ant-pagination.ant-pagination-mini .ant-pagination-prev .ant-pagination-item-link,.ant-pagination.ant-pagination-mini .ant-pagination-next .ant-pagination-item-link{background-color:transparent;border-color:transparent;}.ant-pagination.ant-pagination-mini .ant-pagination-prev .ant-pagination-item-link::after,.ant-pagination.ant-pagination-mini .ant-pagination-next .ant-pagination-item-link::after{height:24px;line-height:24px;}.ant-pagination.ant-pagination-mini .ant-pagination-jump-prev,.ant-pagination.ant-pagination-mini .ant-pagination-jump-next{height:24px;margin-inline-end:0;line-height:24px;}.ant-pagination.ant-pagination-mini .ant-pagination-options{margin-inline-start:2px;}.ant-pagination.ant-pagination-mini .ant-pagination-options-size-changer{top:0;}.ant-pagination.ant-pagination-mini .ant-pagination-options-quick-jumper{height:24px;line-height:24px;}.ant-pagination.ant-pagination-mini .ant-pagination-options-quick-jumper input{padding:0px 7px;border-radius:4px;width:44px;height:24px;}.ant-pagination .ant-pagination-disabled,.ant-pagination .ant-pagination-disabled:hover{cursor:not-allowed;}.ant-pagination .ant-pagination-disabled .ant-pagination-item-link,.ant-pagination .ant-pagination-disabled:hover .ant-pagination-item-link{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;}.ant-pagination .ant-pagination-disabled:focus-visible{cursor:not-allowed;}.ant-pagination .ant-pagination-disabled:focus-visible .ant-pagination-item-link{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;}.ant-pagination.ant-pagination-disabled{cursor:not-allowed;}.ant-pagination.ant-pagination-disabled.ant-pagination-mini:hover .ant-pagination-item:not(.ant-pagination-item-active),.ant-pagination.ant-pagination-disabled.ant-pagination-mini:active .ant-pagination-item:not(.ant-pagination-item-active),.ant-pagination.ant-pagination-disabled.ant-pagination-mini:hover .ant-pagination-item-link,.ant-pagination.ant-pagination-disabled.ant-pagination-mini:active .ant-pagination-item-link{background-color:transparent;}.ant-pagination.ant-pagination-disabled .ant-pagination-item{cursor:not-allowed;}.ant-pagination.ant-pagination-disabled .ant-pagination-item:hover,.ant-pagination.ant-pagination-disabled .ant-pagination-item:active{background-color:transparent;}.ant-pagination.ant-pagination-disabled .ant-pagination-item a{color:rgba(255, 255, 255, 0.25);background-color:transparent;border:none;cursor:not-allowed;}.ant-pagination.ant-pagination-disabled .ant-pagination-item-active{border-color:#424242;background-color:rgba(255, 255, 255, 0.18);}.ant-pagination.ant-pagination-disabled .ant-pagination-item-active:hover,.ant-pagination.ant-pagination-disabled .ant-pagination-item-active:active{background-color:rgba(255, 255, 255, 0.18);}.ant-pagination.ant-pagination-disabled .ant-pagination-item-active a{color:rgba(255, 255, 255, 0.25);}.ant-pagination.ant-pagination-disabled .ant-pagination-item-link{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;}.ant-pagination.ant-pagination-disabled .ant-pagination-item-link:hover,.ant-pagination.ant-pagination-disabled .ant-pagination-item-link:active{background-color:transparent;}.ant-pagination-simple.ant-pagination.ant-pagination-disabled .ant-pagination-item-link{background-color:transparent;}.ant-pagination-simple.ant-pagination.ant-pagination-disabled .ant-pagination-item-link:hover,.ant-pagination-simple.ant-pagination.ant-pagination-disabled .ant-pagination-item-link:active{background-color:transparent;}.ant-pagination.ant-pagination-disabled .ant-pagination-simple-pager{color:rgba(255, 255, 255, 0.25);}.ant-pagination.ant-pagination-disabled .ant-pagination-jump-prev .ant-pagination-item-link-icon,.ant-pagination.ant-pagination-disabled .ant-pagination-jump-next .ant-pagination-item-link-icon{opacity:0;}.ant-pagination.ant-pagination-disabled .ant-pagination-jump-prev .ant-pagination-item-ellipsis,.ant-pagination.ant-pagination-disabled .ant-pagination-jump-next .ant-pagination-item-ellipsis{opacity:1;}.ant-pagination.ant-pagination-simple .ant-pagination-prev.ant-pagination-disabled .ant-pagination-item-link:hover,.ant-pagination.ant-pagination-simple .ant-pagination-next.ant-pagination-disabled .ant-pagination-item-link:hover,.ant-pagination.ant-pagination-simple .ant-pagination-prev.ant-pagination-disabled .ant-pagination-item-link:active,.ant-pagination.ant-pagination-simple .ant-pagination-next.ant-pagination-disabled .ant-pagination-item-link:active{background-color:transparent;}@media only screen and (max-width: 992px){.ant-pagination .ant-pagination-item-after-jump-prev,.ant-pagination .ant-pagination-item-before-jump-next{display:none;}}@media only screen and (max-width: 576px){.ant-pagination .ant-pagination-options{display:none;}}.ant-pagination-rtl{direction:rtl;}[class^=\\"ant-popconfirm\\"],[class*=\\" ant-popconfirm\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-popconfirm\\"]::before,[class*=\\" ant-popconfirm\\"]::before,[class^=\\"ant-popconfirm\\"]::after,[class*=\\" ant-popconfirm\\"]::after{box-sizing:border-box;}[class^=\\"ant-popconfirm\\"] [class^=\\"ant-popconfirm\\"],[class*=\\" ant-popconfirm\\"] [class^=\\"ant-popconfirm\\"],[class^=\\"ant-popconfirm\\"] [class*=\\" ant-popconfirm\\"],[class*=\\" ant-popconfirm\\"] [class*=\\" ant-popconfirm\\"]{box-sizing:border-box;}[class^=\\"ant-popconfirm\\"] [class^=\\"ant-popconfirm\\"]::before,[class*=\\" ant-popconfirm\\"] [class^=\\"ant-popconfirm\\"]::before,[class^=\\"ant-popconfirm\\"] [class*=\\" ant-popconfirm\\"]::before,[class*=\\" ant-popconfirm\\"] [class*=\\" ant-popconfirm\\"]::before,[class^=\\"ant-popconfirm\\"] [class^=\\"ant-popconfirm\\"]::after,[class*=\\" ant-popconfirm\\"] [class^=\\"ant-popconfirm\\"]::after,[class^=\\"ant-popconfirm\\"] [class*=\\" ant-popconfirm\\"]::after,[class*=\\" ant-popconfirm\\"] [class*=\\" ant-popconfirm\\"]::after{box-sizing:border-box;}.ant-popconfirm{z-index:1060;}.ant-popconfirm .ant-popconfirm-inner-content{color:rgba(255, 255, 255, 0.85);}.ant-popconfirm .ant-popconfirm-message{position:relative;margin-bottom:8px;color:rgba(255, 255, 255, 0.85);font-size:14px;display:flex;flex-wrap:nowrap;align-items:start;}.ant-popconfirm .ant-popconfirm-message >.ant-popconfirm-message-icon .anticon{color:#d89614;font-size:14px;flex:none;line-height:1;padding-top:4px;}.ant-popconfirm .ant-popconfirm-message-title{flex:auto;margin-inline-start:8px;}.ant-popconfirm .ant-popconfirm-message-title-only{font-weight:600;}.ant-popconfirm .ant-popconfirm-description{position:relative;margin-inline-start:22px;margin-bottom:8px;color:rgba(255, 255, 255, 0.85);font-size:14px;}.ant-popconfirm .ant-popconfirm-buttons{text-align:end;}.ant-popconfirm .ant-popconfirm-buttons button{margin-inline-start:8px;}[class^=\\"ant-popover\\"],[class*=\\" ant-popover\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-popover\\"]::before,[class*=\\" ant-popover\\"]::before,[class^=\\"ant-popover\\"]::after,[class*=\\" ant-popover\\"]::after{box-sizing:border-box;}[class^=\\"ant-popover\\"] [class^=\\"ant-popover\\"],[class*=\\" ant-popover\\"] [class^=\\"ant-popover\\"],[class^=\\"ant-popover\\"] [class*=\\" ant-popover\\"],[class*=\\" ant-popover\\"] [class*=\\" ant-popover\\"]{box-sizing:border-box;}[class^=\\"ant-popover\\"] [class^=\\"ant-popover\\"]::before,[class*=\\" ant-popover\\"] [class^=\\"ant-popover\\"]::before,[class^=\\"ant-popover\\"] [class*=\\" ant-popover\\"]::before,[class*=\\" ant-popover\\"] [class*=\\" ant-popover\\"]::before,[class^=\\"ant-popover\\"] [class^=\\"ant-popover\\"]::after,[class*=\\" ant-popover\\"] [class^=\\"ant-popover\\"]::after,[class^=\\"ant-popover\\"] [class*=\\" ant-popover\\"]::after,[class*=\\" ant-popover\\"] [class*=\\" ant-popover\\"]::after{box-sizing:border-box;}.ant-popover{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:absolute;top:0;left:0;z-index:1030;font-weight:normal;white-space:normal;text-align:start;cursor:auto;user-select:text;--antd-arrow-background-color:#1f1f1f;}.ant-popover-rtl{direction:rtl;}.ant-popover-hidden{display:none;}.ant-popover .ant-popover-content{position:relative;}.ant-popover .ant-popover-inner{background-color:#1f1f1f;background-clip:padding-box;border-radius:8px;box-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08),0 3px 6px -4px rgba(0, 0, 0, 0.12),0 9px 28px 8px rgba(0, 0, 0, 0.05);padding:12px;}.ant-popover .ant-popover-title{min-width:177px;margin-bottom:8px;color:rgba(255, 255, 255, 0.85);font-weight:600;}.ant-popover .ant-popover-inner-content{color:rgba(255, 255, 255, 0.85);}.ant-popover .ant-popover-arrow{position:absolute;z-index:1;display:block;pointer-events:none;width:16px;height:16px;overflow:hidden;}.ant-popover .ant-popover-arrow::after{content:\\"\\";position:absolute;width:8.970562748477143px;height:8.970562748477143px;bottom:0;inset-inline:0;margin:auto;border-radius:0 0 2px 0;transform:translateY(50%) rotate(-135deg);box-shadow:3px 3px 7px rgba(0, 0, 0, 0.1);z-index:0;background:transparent;}.ant-popover .ant-popover-arrow::before{position:absolute;bottom:0;inset-inline-start:0;width:16px;height:8px;background:var(--antd-arrow-background-color);clip-path:polygon(1.6568542494923806px 100%, 50% 1.6568542494923806px, 14.34314575050762px 100%, 1.6568542494923806px 100%);clip-path:path('M 0 8 A 4 4 0 0 0 2.82842712474619 6.82842712474619 L 6.585786437626905 3.0710678118654755 A 2 2 0 0 1 9.414213562373096 3.0710678118654755 L 13.17157287525381 6.82842712474619 A 4 4 0 0 0 16 8 Z');content:\\"\\";}.ant-popover .ant-popover-arrow:before{background:var(--antd-arrow-background-color);}.ant-popover-placement-top .ant-popover-arrow,.ant-popover-placement-topLeft .ant-popover-arrow,.ant-popover-placement-topRight .ant-popover-arrow{bottom:0;transform:translateY(100%) rotate(180deg);}.ant-popover-placement-top .ant-popover-arrow{left:50%;transform:translateX(-50%) translateY(100%) rotate(180deg);}.ant-popover-placement-topLeft .ant-popover-arrow{left:6px;}.ant-popover-placement-topRight .ant-popover-arrow{right:6px;}.ant-popover-placement-bottom .ant-popover-arrow,.ant-popover-placement-bottomLeft .ant-popover-arrow,.ant-popover-placement-bottomRight .ant-popover-arrow{top:0;transform:translateY(-100%);}.ant-popover-placement-bottom .ant-popover-arrow{left:50%;transform:translateX(-50%) translateY(-100%);}.ant-popover-placement-bottomLeft .ant-popover-arrow{left:6px;}.ant-popover-placement-bottomRight .ant-popover-arrow{right:6px;}.ant-popover-placement-left .ant-popover-arrow,.ant-popover-placement-leftTop .ant-popover-arrow,.ant-popover-placement-leftBottom .ant-popover-arrow{right:0;transform:translateX(100%) rotate(90deg);}.ant-popover-placement-left .ant-popover-arrow{top:50%;transform:translateY(-50%) translateX(100%) rotate(90deg);}.ant-popover-placement-leftTop .ant-popover-arrow{top:6px;}.ant-popover-placement-leftBottom .ant-popover-arrow{bottom:6px;}.ant-popover-placement-right .ant-popover-arrow,.ant-popover-placement-rightTop .ant-popover-arrow,.ant-popover-placement-rightBottom .ant-popover-arrow{left:0;transform:translateX(-100%) rotate(-90deg);}.ant-popover-placement-right .ant-popover-arrow{top:50%;transform:translateY(-50%) translateX(-100%) rotate(-90deg);}.ant-popover-placement-rightTop .ant-popover-arrow{top:6px;}.ant-popover-placement-rightBottom .ant-popover-arrow{bottom:6px;}.ant-popover-placement-topLeft,.ant-popover-placement-top,.ant-popover-placement-topRight{padding-bottom:12px;}.ant-popover-placement-bottomLeft,.ant-popover-placement-bottom,.ant-popover-placement-bottomRight{padding-top:12px;}.ant-popover-placement-leftTop,.ant-popover-placement-left,.ant-popover-placement-leftBottom{padding-right:12px;}.ant-popover-placement-rightTop,.ant-popover-placement-right,.ant-popover-placement-rightBottom{padding-left:12px;}.ant-popover-pure{position:relative;max-width:none;}.ant-popover-pure .ant-popover-content{display:inline-block;}.ant-popover.ant-popover-blue{--antd-arrow-background-color:#1668dc;}.ant-popover.ant-popover-blue .ant-popover-inner{background-color:#1668dc;}.ant-popover.ant-popover-blue .ant-popover-arrow{background:transparent;}.ant-popover.ant-popover-purple{--antd-arrow-background-color:#642ab5;}.ant-popover.ant-popover-purple .ant-popover-inner{background-color:#642ab5;}.ant-popover.ant-popover-purple .ant-popover-arrow{background:transparent;}.ant-popover.ant-popover-cyan{--antd-arrow-background-color:#13a8a8;}.ant-popover.ant-popover-cyan .ant-popover-inner{background-color:#13a8a8;}.ant-popover.ant-popover-cyan .ant-popover-arrow{background:transparent;}.ant-popover.ant-popover-green{--antd-arrow-background-color:#49aa19;}.ant-popover.ant-popover-green .ant-popover-inner{background-color:#49aa19;}.ant-popover.ant-popover-green .ant-popover-arrow{background:transparent;}.ant-popover.ant-popover-magenta{--antd-arrow-background-color:#cb2b83;}.ant-popover.ant-popover-magenta .ant-popover-inner{background-color:#cb2b83;}.ant-popover.ant-popover-magenta .ant-popover-arrow{background:transparent;}.ant-popover.ant-popover-pink{--antd-arrow-background-color:#cb2b83;}.ant-popover.ant-popover-pink .ant-popover-inner{background-color:#cb2b83;}.ant-popover.ant-popover-pink .ant-popover-arrow{background:transparent;}.ant-popover.ant-popover-red{--antd-arrow-background-color:#d32029;}.ant-popover.ant-popover-red .ant-popover-inner{background-color:#d32029;}.ant-popover.ant-popover-red .ant-popover-arrow{background:transparent;}.ant-popover.ant-popover-orange{--antd-arrow-background-color:#d87a16;}.ant-popover.ant-popover-orange .ant-popover-inner{background-color:#d87a16;}.ant-popover.ant-popover-orange .ant-popover-arrow{background:transparent;}.ant-popover.ant-popover-yellow{--antd-arrow-background-color:#d8bd14;}.ant-popover.ant-popover-yellow .ant-popover-inner{background-color:#d8bd14;}.ant-popover.ant-popover-yellow .ant-popover-arrow{background:transparent;}.ant-popover.ant-popover-volcano{--antd-arrow-background-color:#d84a1b;}.ant-popover.ant-popover-volcano .ant-popover-inner{background-color:#d84a1b;}.ant-popover.ant-popover-volcano .ant-popover-arrow{background:transparent;}.ant-popover.ant-popover-geekblue{--antd-arrow-background-color:#2b4acb;}.ant-popover.ant-popover-geekblue .ant-popover-inner{background-color:#2b4acb;}.ant-popover.ant-popover-geekblue .ant-popover-arrow{background:transparent;}.ant-popover.ant-popover-lime{--antd-arrow-background-color:#8bbb11;}.ant-popover.ant-popover-lime .ant-popover-inner{background-color:#8bbb11;}.ant-popover.ant-popover-lime .ant-popover-arrow{background:transparent;}.ant-popover.ant-popover-gold{--antd-arrow-background-color:#d89614;}.ant-popover.ant-popover-gold .ant-popover-inner{background-color:#d89614;}.ant-popover.ant-popover-gold .ant-popover-arrow{background:transparent;}.ant-zoom-big-enter,.ant-zoom-big-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-zoom-big-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-zoom-big-enter.ant-zoom-big-enter-active,.ant-zoom-big-appear.ant-zoom-big-appear-active{animation-name:antZoomBigIn;animation-play-state:running;}.ant-zoom-big-leave.ant-zoom-big-leave-active{animation-name:antZoomBigOut;animation-play-state:running;pointer-events:none;}.ant-zoom-big-enter,.ant-zoom-big-appear{transform:scale(0);opacity:0;animation-timing-function:cubic-bezier(0.08, 0.82, 0.17, 1);}.ant-zoom-big-enter-prepare,.ant-zoom-big-appear-prepare{transform:none;}.ant-zoom-big-leave{animation-timing-function:cubic-bezier(0.78, 0.14, 0.15, 0.86);}[class^=\\"ant-popover\\"],[class*=\\" ant-popover\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-popover\\"]::before,[class*=\\" ant-popover\\"]::before,[class^=\\"ant-popover\\"]::after,[class*=\\" ant-popover\\"]::after{box-sizing:border-box;}[class^=\\"ant-popover\\"] [class^=\\"ant-popover\\"],[class*=\\" ant-popover\\"] [class^=\\"ant-popover\\"],[class^=\\"ant-popover\\"] [class*=\\" ant-popover\\"],[class*=\\" ant-popover\\"] [class*=\\" ant-popover\\"]{box-sizing:border-box;}[class^=\\"ant-popover\\"] [class^=\\"ant-popover\\"]::before,[class*=\\" ant-popover\\"] [class^=\\"ant-popover\\"]::before,[class^=\\"ant-popover\\"] [class*=\\" ant-popover\\"]::before,[class*=\\" ant-popover\\"] [class*=\\" ant-popover\\"]::before,[class^=\\"ant-popover\\"] [class^=\\"ant-popover\\"]::after,[class*=\\" ant-popover\\"] [class^=\\"ant-popover\\"]::after,[class^=\\"ant-popover\\"] [class*=\\" ant-popover\\"]::after,[class*=\\" ant-popover\\"] [class*=\\" ant-popover\\"]::after{box-sizing:border-box;}[class^=\\"ant-progress\\"],[class*=\\" ant-progress\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-progress\\"]::before,[class*=\\" ant-progress\\"]::before,[class^=\\"ant-progress\\"]::after,[class*=\\" ant-progress\\"]::after{box-sizing:border-box;}[class^=\\"ant-progress\\"] [class^=\\"ant-progress\\"],[class*=\\" ant-progress\\"] [class^=\\"ant-progress\\"],[class^=\\"ant-progress\\"] [class*=\\" ant-progress\\"],[class*=\\" ant-progress\\"] [class*=\\" ant-progress\\"]{box-sizing:border-box;}[class^=\\"ant-progress\\"] [class^=\\"ant-progress\\"]::before,[class*=\\" ant-progress\\"] [class^=\\"ant-progress\\"]::before,[class^=\\"ant-progress\\"] [class*=\\" ant-progress\\"]::before,[class*=\\" ant-progress\\"] [class*=\\" ant-progress\\"]::before,[class^=\\"ant-progress\\"] [class^=\\"ant-progress\\"]::after,[class*=\\" ant-progress\\"] [class^=\\"ant-progress\\"]::after,[class^=\\"ant-progress\\"] [class*=\\" ant-progress\\"]::after,[class*=\\" ant-progress\\"] [class*=\\" ant-progress\\"]::after{box-sizing:border-box;}.ant-progress{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:inline-block;}.ant-progress-rtl{direction:rtl;}.ant-progress-line{position:relative;width:100%;font-size:14px;margin-inline-end:8px;margin-bottom:8px;}.ant-progress .ant-progress-outer{display:inline-block;width:100%;}.ant-progress.ant-progress-show-info .ant-progress-outer{margin-inline-end:calc(-2em - 8px);padding-inline-end:calc(2em + 8px);}.ant-progress .ant-progress-inner{position:relative;display:inline-block;width:100%;overflow:hidden;vertical-align:middle;background-color:rgba(255, 255, 255, 0.12);border-radius:100px;}.ant-progress .ant-progress-inner:not(.ant-progress-circle-gradient) .ant-progress-circle-path{stroke:#1668dc;}.ant-progress .ant-progress-success-bg,.ant-progress .ant-progress-bg{position:relative;background-color:#1668dc;border-radius:100px;transition:all 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86);}.ant-progress .ant-progress-success-bg{position:absolute;inset-block-start:0;inset-inline-start:0;background-color:#49aa19;}.ant-progress .ant-progress-text{display:inline-block;width:2em;margin-inline-start:8px;color:rgba(255, 255, 255, 0.85);line-height:1;white-space:nowrap;text-align:start;vertical-align:middle;word-break:normal;}.ant-progress .ant-progress-text .anticon{font-size:14px;}.ant-progress.ant-progress-status-active .ant-progress-bg::before{position:absolute;inset:0;background-color:#141414;border-radius:100px;opacity:0;animation-name:antProgressActive;animation-duration:2.4s;animation-timing-function:cubic-bezier(0.23, 1, 0.32, 1);animation-iteration-count:infinite;content:\\"\\";}.ant-progress.ant-progress-status-exception .ant-progress-bg{background-color:#dc4446;}.ant-progress.ant-progress-status-exception .ant-progress-text{color:#dc4446;}.ant-progress.ant-progress-status-exception .ant-progress-inner:not(.ant-progress-circle-gradient) .ant-progress-circle-path{stroke:#dc4446;}.ant-progress.ant-progress-status-success .ant-progress-bg{background-color:#49aa19;}.ant-progress.ant-progress-status-success .ant-progress-text{color:#49aa19;}.ant-progress.ant-progress-status-success .ant-progress-inner:not(.ant-progress-circle-gradient) .ant-progress-circle-path{stroke:#49aa19;}.ant-progress .ant-progress-circle-trail{stroke:rgba(255, 255, 255, 0.12);}.ant-progress.ant-progress-circle .ant-progress-inner{position:relative;line-height:1;background-color:transparent;}.ant-progress.ant-progress-circle .ant-progress-text{position:absolute;inset-block-start:50%;inset-inline-start:0;width:100%;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);line-height:1;white-space:normal;text-align:center;transform:translateY(-50%);}.ant-progress.ant-progress-circle .ant-progress-text .anticon{font-size:1.1666666666666667em;}.ant-progress-circle.ant-progress-status-exception .ant-progress-text{color:#dc4446;}.ant-progress-circle.ant-progress-status-success .ant-progress-text{color:#49aa19;}.ant-progress-inline-circle{line-height:1;}.ant-progress-inline-circle .ant-progress-inner{vertical-align:bottom;}.ant-progress .ant-progress-steps{display:inline-block;}.ant-progress .ant-progress-steps-outer{display:flex;flex-direction:row;align-items:center;}.ant-progress .ant-progress-steps-item{flex-shrink:0;min-width:2px;margin-inline-end:2px;background-color:rgba(255, 255, 255, 0.12);transition:all 0.3s;}.ant-progress .ant-progress-steps-item-active{background-color:#1668dc;}.ant-progress-small.ant-progress-line,.ant-progress-small.ant-progress-line .ant-progress-text .anticon{font-size:12px;}@keyframes antProgressActive{0%{transform:translateX(-100%) scaleX(0);opacity:0.1;}20%{transform:translateX(-100%) scaleX(0);opacity:0.5;}to{transform:translateX(0) scaleX(1);opacity:0;}}[class^=\\"ant-rate\\"],[class*=\\" ant-rate\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-rate\\"]::before,[class*=\\" ant-rate\\"]::before,[class^=\\"ant-rate\\"]::after,[class*=\\" ant-rate\\"]::after{box-sizing:border-box;}[class^=\\"ant-rate\\"] [class^=\\"ant-rate\\"],[class*=\\" ant-rate\\"] [class^=\\"ant-rate\\"],[class^=\\"ant-rate\\"] [class*=\\" ant-rate\\"],[class*=\\" ant-rate\\"] [class*=\\" ant-rate\\"]{box-sizing:border-box;}[class^=\\"ant-rate\\"] [class^=\\"ant-rate\\"]::before,[class*=\\" ant-rate\\"] [class^=\\"ant-rate\\"]::before,[class^=\\"ant-rate\\"] [class*=\\" ant-rate\\"]::before,[class*=\\" ant-rate\\"] [class*=\\" ant-rate\\"]::before,[class^=\\"ant-rate\\"] [class^=\\"ant-rate\\"]::after,[class*=\\" ant-rate\\"] [class^=\\"ant-rate\\"]::after,[class^=\\"ant-rate\\"] [class*=\\" ant-rate\\"]::after,[class*=\\" ant-rate\\"] [class*=\\" ant-rate\\"]::after{box-sizing:border-box;}.ant-rate{box-sizing:border-box;margin:0;padding:0;color:#d8bd14;font-size:20px;line-height:unset;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:inline-block;outline:none;}.ant-rate-disabled.ant-rate .ant-rate-star{cursor:default;}.ant-rate-disabled.ant-rate .ant-rate-star:hover{transform:scale(1);}.ant-rate .ant-rate-star{position:relative;display:inline-block;color:inherit;cursor:pointer;}.ant-rate .ant-rate-star:not(:last-child){margin-inline-end:8px;}.ant-rate .ant-rate-star >div{transition:all 0.2s,outline 0s;}.ant-rate .ant-rate-star >div:hover{transform:scale(1.1);}.ant-rate .ant-rate-star >div:focus{outline:0;}.ant-rate .ant-rate-star >div:focus-visible{outline:1px dashed #d8bd14;transform:scale(1.1);}.ant-rate .ant-rate-star-first,.ant-rate .ant-rate-star-second{color:rgba(255, 255, 255, 0.12);transition:all 0.2s;user-select:none;}.ant-rate .ant-rate-star-first .anticon,.ant-rate .ant-rate-star-second .anticon{vertical-align:middle;}.ant-rate .ant-rate-star-first{position:absolute;top:0;inset-inline-start:0;width:50%;height:100%;overflow:hidden;opacity:0;}.ant-rate .ant-rate-star-half .ant-rate-star-first,.ant-rate .ant-rate-star-half .ant-rate-star-second{opacity:1;}.ant-rate .ant-rate-star-half .ant-rate-star-first,.ant-rate .ant-rate-star-full .ant-rate-star-second{color:inherit;}.ant-rate +.ant-rate-text{display:inline-block;margin-inline-start:8px;font-size:14px;}.ant-rate-rtl.ant-rate{direction:rtl;}[class^=\\"ant-result\\"],[class*=\\" ant-result\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-result\\"]::before,[class*=\\" ant-result\\"]::before,[class^=\\"ant-result\\"]::after,[class*=\\" ant-result\\"]::after{box-sizing:border-box;}[class^=\\"ant-result\\"] [class^=\\"ant-result\\"],[class*=\\" ant-result\\"] [class^=\\"ant-result\\"],[class^=\\"ant-result\\"] [class*=\\" ant-result\\"],[class*=\\" ant-result\\"] [class*=\\" ant-result\\"]{box-sizing:border-box;}[class^=\\"ant-result\\"] [class^=\\"ant-result\\"]::before,[class*=\\" ant-result\\"] [class^=\\"ant-result\\"]::before,[class^=\\"ant-result\\"] [class*=\\" ant-result\\"]::before,[class*=\\" ant-result\\"] [class*=\\" ant-result\\"]::before,[class^=\\"ant-result\\"] [class^=\\"ant-result\\"]::after,[class*=\\" ant-result\\"] [class^=\\"ant-result\\"]::after,[class^=\\"ant-result\\"] [class*=\\" ant-result\\"]::after,[class*=\\" ant-result\\"] [class*=\\" ant-result\\"]::after{box-sizing:border-box;}.ant-result{padding:48px 32px;}.ant-result-rtl{direction:rtl;}.ant-result .ant-result-image{width:250px;height:295px;margin:auto;}.ant-result .ant-result-icon{margin-bottom:24px;text-align:center;}.ant-result .ant-result-icon>.anticon{font-size:72px;}.ant-result .ant-result-title{color:rgba(255, 255, 255, 0.85);font-size:24px;line-height:1.3333333333333333;margin-block:8px;text-align:center;}.ant-result .ant-result-subtitle{color:rgba(255, 255, 255, 0.45);font-size:14px;line-height:1.5714285714285714;text-align:center;}.ant-result .ant-result-content{margin-top:24px;padding:24px 40px;background-color:rgba(255, 255, 255, 0.04);}.ant-result .ant-result-extra{margin:24px 0 0 0;text-align:center;}.ant-result .ant-result-extra>*{margin-inline-end:8px;}.ant-result .ant-result-extra>*:last-child{margin-inline-end:0;}.ant-result-success .ant-result-icon>.anticon{color:#49aa19;}.ant-result-error .ant-result-icon>.anticon{color:#dc4446;}.ant-result-info .ant-result-icon>.anticon{color:#1668dc;}.ant-result-warning .ant-result-icon>.anticon{color:#d89614;}[class^=\\"ant-slider\\"],[class*=\\" ant-slider\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-slider\\"]::before,[class*=\\" ant-slider\\"]::before,[class^=\\"ant-slider\\"]::after,[class*=\\" ant-slider\\"]::after{box-sizing:border-box;}[class^=\\"ant-slider\\"] [class^=\\"ant-slider\\"],[class*=\\" ant-slider\\"] [class^=\\"ant-slider\\"],[class^=\\"ant-slider\\"] [class*=\\" ant-slider\\"],[class*=\\" ant-slider\\"] [class*=\\" ant-slider\\"]{box-sizing:border-box;}[class^=\\"ant-slider\\"] [class^=\\"ant-slider\\"]::before,[class*=\\" ant-slider\\"] [class^=\\"ant-slider\\"]::before,[class^=\\"ant-slider\\"] [class*=\\" ant-slider\\"]::before,[class*=\\" ant-slider\\"] [class*=\\" ant-slider\\"]::before,[class^=\\"ant-slider\\"] [class^=\\"ant-slider\\"]::after,[class*=\\" ant-slider\\"] [class^=\\"ant-slider\\"]::after,[class^=\\"ant-slider\\"] [class*=\\" ant-slider\\"]::after,[class*=\\" ant-slider\\"] [class*=\\" ant-slider\\"]::after{box-sizing:border-box;}.ant-slider{box-sizing:border-box;margin:11px 5px;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;height:10px;cursor:pointer;touch-action:none;}.ant-slider-vertical{margin:5px 11px;}.ant-slider .ant-slider-rail{position:absolute;background-color:rgba(255, 255, 255, 0.08);border-radius:2px;transition:background-color 0.2s;}.ant-slider .ant-slider-track{position:absolute;background-color:#0e340e;border-radius:2px;transition:background-color 0.2s;}.ant-slider:hover .ant-slider-rail{background-color:rgba(255, 255, 255, 0.12);}.ant-slider:hover .ant-slider-track{background-color:#0b450b;}.ant-slider:hover .ant-slider-dot{border-color:rgba(255, 255, 255, 0.18);}.ant-slider:hover .ant-slider-handle::after{box-shadow:0 0 0 2px #0b450b;}.ant-slider:hover .ant-slider-dot-active{border-color:#037003;}.ant-slider .ant-slider-handle{position:absolute;width:10px;height:10px;outline:none;}.ant-slider .ant-slider-handle .ant-slider-dragging{z-index:1;}.ant-slider .ant-slider-handle::before{content:\\"\\";position:absolute;inset-inline-start:-2px;inset-block-start:-2px;width:14px;height:14px;background-color:transparent;}.ant-slider .ant-slider-handle::after{content:\\"\\";position:absolute;inset-block-start:0;inset-inline-start:0;width:10px;height:10px;background-color:#1f1f1f;box-shadow:0 0 0 2px #0e340e;border-radius:50%;cursor:pointer;transition:inset-inline-start 0.2s,inset-block-start 0.2s,width 0.2s,height 0.2s,box-shadow 0.2s;}.ant-slider .ant-slider-handle:hover::before,.ant-slider .ant-slider-handle:active::before,.ant-slider .ant-slider-handle:focus::before{inset-inline-start:-5px;inset-block-start:-5px;width:20px;height:20px;}.ant-slider .ant-slider-handle:hover::after,.ant-slider .ant-slider-handle:active::after,.ant-slider .ant-slider-handle:focus::after{box-shadow:0 0 0 4px #037003;width:12px;height:12px;inset-inline-start:-1px;inset-block-start:-1px;}.ant-slider .ant-slider-mark{position:absolute;font-size:14px;}.ant-slider .ant-slider-mark-text{position:absolute;display:inline-block;color:rgba(255, 255, 255, 0.45);text-align:center;word-break:keep-all;cursor:pointer;user-select:none;}.ant-slider .ant-slider-mark-text-active{color:rgba(255, 255, 255, 0.85);}.ant-slider .ant-slider-step{position:absolute;background:transparent;pointer-events:none;}.ant-slider .ant-slider-dot{position:absolute;width:8px;height:8px;background-color:#1f1f1f;border:2px solid #303030;border-radius:50%;cursor:pointer;transition:border-color 0.3s;}.ant-slider .ant-slider-dot-active{border-color:#0e340e;}.ant-slider.ant-slider-disabled{cursor:not-allowed;}.ant-slider.ant-slider-disabled .ant-slider-rail{background-color:rgba(255, 255, 255, 0.12)!important;}.ant-slider.ant-slider-disabled .ant-slider-track{background-color:rgba(255, 255, 255, 0.25)!important;}.ant-slider.ant-slider-disabled .ant-slider-dot{background-color:#1f1f1f;border-color:rgba(255, 255, 255, 0.25);box-shadow:none;cursor:not-allowed;}.ant-slider.ant-slider-disabled .ant-slider-handle::after{background-color:#1f1f1f;cursor:not-allowed;width:10px;height:10px;box-shadow:0 0 0 2px #4f4f4f;inset-inline-start:0;inset-block-start:0;}.ant-slider.ant-slider-disabled .ant-slider-mark-text,.ant-slider.ant-slider-disabled .ant-slider-dot{cursor:not-allowed!important;}.ant-slider-horizontal{padding-block:4px;height:12px;}.ant-slider-horizontal .ant-slider-rail{width:100%;height:4px;}.ant-slider-horizontal .ant-slider-track{height:4px;}.ant-slider-horizontal .ant-slider-handle{inset-block-start:1px;}.ant-slider-horizontal .ant-slider-mark{inset-inline-start:0;top:10px;width:100%;}.ant-slider-horizontal .ant-slider-step{inset-inline-start:0;top:4px;width:100%;height:4px;}.ant-slider-horizontal .ant-slider-dot{position:absolute;inset-block-start:-2px;}.ant-slider-horizontal.ant-slider-with-marks{margin-bottom:30px;}.ant-slider-vertical{padding-inline:4px;width:12px;height:100%;}.ant-slider-vertical .ant-slider-rail{height:100%;width:4px;}.ant-slider-vertical .ant-slider-track{width:4px;}.ant-slider-vertical .ant-slider-handle{inset-inline-start:1px;}.ant-slider-vertical .ant-slider-mark{inset-inline-start:10px;top:0;height:100%;}.ant-slider-vertical .ant-slider-step{inset-inline-start:4px;top:0;height:100%;width:4px;}.ant-slider-vertical .ant-slider-dot{position:absolute;inset-inline-start:-2px;}[class^=\\"ant-space\\"],[class*=\\" ant-space\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-space\\"]::before,[class*=\\" ant-space\\"]::before,[class^=\\"ant-space\\"]::after,[class*=\\" ant-space\\"]::after{box-sizing:border-box;}[class^=\\"ant-space\\"] [class^=\\"ant-space\\"],[class*=\\" ant-space\\"] [class^=\\"ant-space\\"],[class^=\\"ant-space\\"] [class*=\\" ant-space\\"],[class*=\\" ant-space\\"] [class*=\\" ant-space\\"]{box-sizing:border-box;}[class^=\\"ant-space\\"] [class^=\\"ant-space\\"]::before,[class*=\\" ant-space\\"] [class^=\\"ant-space\\"]::before,[class^=\\"ant-space\\"] [class*=\\" ant-space\\"]::before,[class*=\\" ant-space\\"] [class*=\\" ant-space\\"]::before,[class^=\\"ant-space\\"] [class^=\\"ant-space\\"]::after,[class*=\\" ant-space\\"] [class^=\\"ant-space\\"]::after,[class^=\\"ant-space\\"] [class*=\\" ant-space\\"]::after,[class*=\\" ant-space\\"] [class*=\\" ant-space\\"]::after{box-sizing:border-box;}.ant-space{display:inline-flex;}.ant-space-rtl{direction:rtl;}.ant-space-vertical{flex-direction:column;}.ant-space-align{flex-direction:column;}.ant-space-align-center{align-items:center;}.ant-space-align-start{align-items:flex-start;}.ant-space-align-end{align-items:flex-end;}.ant-space-align-baseline{align-items:baseline;}.ant-space .ant-space-space-item:empty{display:none;}.ant-space{display:inline-flex;}.ant-space-block{display:flex;width:100%;}.ant-space-vertical{flex-direction:column;}[class^=\\"ant-space-compact\\"],[class*=\\" ant-space-compact\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-space-compact\\"]::before,[class*=\\" ant-space-compact\\"]::before,[class^=\\"ant-space-compact\\"]::after,[class*=\\" ant-space-compact\\"]::after{box-sizing:border-box;}[class^=\\"ant-space-compact\\"] [class^=\\"ant-space-compact\\"],[class*=\\" ant-space-compact\\"] [class^=\\"ant-space-compact\\"],[class^=\\"ant-space-compact\\"] [class*=\\" ant-space-compact\\"],[class*=\\" ant-space-compact\\"] [class*=\\" ant-space-compact\\"]{box-sizing:border-box;}[class^=\\"ant-space-compact\\"] [class^=\\"ant-space-compact\\"]::before,[class*=\\" ant-space-compact\\"] [class^=\\"ant-space-compact\\"]::before,[class^=\\"ant-space-compact\\"] [class*=\\" ant-space-compact\\"]::before,[class*=\\" ant-space-compact\\"] [class*=\\" ant-space-compact\\"]::before,[class^=\\"ant-space-compact\\"] [class^=\\"ant-space-compact\\"]::after,[class*=\\" ant-space-compact\\"] [class^=\\"ant-space-compact\\"]::after,[class^=\\"ant-space-compact\\"] [class*=\\" ant-space-compact\\"]::after,[class*=\\" ant-space-compact\\"] [class*=\\" ant-space-compact\\"]::after{box-sizing:border-box;}.ant-space-compact{display:inline-flex;}.ant-space-compact-rtl{direction:rtl;}.ant-space-compact-vertical{flex-direction:column;}.ant-space-compact-align{flex-direction:column;}.ant-space-compact-align-center{align-items:center;}.ant-space-compact-align-start{align-items:flex-start;}.ant-space-compact-align-end{align-items:flex-end;}.ant-space-compact-align-baseline{align-items:baseline;}.ant-space-compact .ant-space-compact-space-item:empty{display:none;}.ant-space-compact{display:inline-flex;}.ant-space-compact-block{display:flex;width:100%;}.ant-space-compact-vertical{flex-direction:column;}[class^=\\"ant-steps\\"],[class*=\\" ant-steps\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-steps\\"]::before,[class*=\\" ant-steps\\"]::before,[class^=\\"ant-steps\\"]::after,[class*=\\" ant-steps\\"]::after{box-sizing:border-box;}[class^=\\"ant-steps\\"] [class^=\\"ant-steps\\"],[class*=\\" ant-steps\\"] [class^=\\"ant-steps\\"],[class^=\\"ant-steps\\"] [class*=\\" ant-steps\\"],[class*=\\" ant-steps\\"] [class*=\\" ant-steps\\"]{box-sizing:border-box;}[class^=\\"ant-steps\\"] [class^=\\"ant-steps\\"]::before,[class*=\\" ant-steps\\"] [class^=\\"ant-steps\\"]::before,[class^=\\"ant-steps\\"] [class*=\\" ant-steps\\"]::before,[class*=\\" ant-steps\\"] [class*=\\" ant-steps\\"]::before,[class^=\\"ant-steps\\"] [class^=\\"ant-steps\\"]::after,[class*=\\" ant-steps\\"] [class^=\\"ant-steps\\"]::after,[class^=\\"ant-steps\\"] [class*=\\" ant-steps\\"]::after,[class*=\\" ant-steps\\"] [class*=\\" ant-steps\\"]::after{box-sizing:border-box;}.ant-steps{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:0;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:flex;width:100%;text-align:initial;}.ant-steps .ant-steps-item{position:relative;display:inline-block;flex:1;overflow:hidden;vertical-align:top;}.ant-steps .ant-steps-item:last-child{flex:none;}.ant-steps .ant-steps-item:last-child >.ant-steps-item-container>.ant-steps-item-tail,.ant-steps .ant-steps-item:last-child >.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title::after{display:none;}.ant-steps .ant-steps-item-container{outline:none;}.ant-steps .ant-steps-item-icon,.ant-steps .ant-steps-item-content{display:inline-block;vertical-align:top;}.ant-steps .ant-steps-item-icon{width:32px;height:32px;margin-top:0;margin-bottom:0;margin-inline-start:0;margin-inline-end:8px;font-size:14px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';line-height:32px;text-align:center;border-radius:32px;border:1px solid transparent;transition:background-color 0.3s,border-color 0.3s;}.ant-steps .ant-steps-item-icon .ant-steps-icon{position:relative;top:-0.5px;color:#037003;line-height:1;}.ant-steps .ant-steps-item-tail{position:absolute;top:12px;inset-inline-start:0;width:100%;}.ant-steps .ant-steps-item-tail::after{display:inline-block;width:100%;height:1px;background:rgba(253, 253, 253, 0.12);border-radius:1px;transition:background 0.3s;content:\\"\\";}.ant-steps .ant-steps-item-title{position:relative;display:inline-block;padding-inline-end:16px;color:rgba(255, 255, 255, 0.85);font-size:16px;line-height:32px;}.ant-steps .ant-steps-item-title::after{position:absolute;top:16px;inset-inline-start:100%;display:block;width:9999px;height:1px;background:rgba(253, 253, 253, 0.12);content:\\"\\";}.ant-steps .ant-steps-item-subtitle{display:inline;margin-inline-start:8px;color:rgba(255, 255, 255, 0.45);font-weight:normal;font-size:14px;}.ant-steps .ant-steps-item-description{color:rgba(255, 255, 255, 0.45);font-size:14px;}.ant-steps .ant-steps-item-wait .ant-steps-item-icon{background-color:rgba(255, 255, 255, 0.12);border-color:transparent;}.ant-steps .ant-steps-item-wait .ant-steps-item-icon >.ant-steps-icon{color:rgba(255, 255, 255, 0.65);}.ant-steps .ant-steps-item-wait .ant-steps-item-icon >.ant-steps-icon .ant-steps-icon-dot{background:rgba(255, 255, 255, 0.25);}.ant-steps .ant-steps-item-wait.ant-steps-item-custom .ant-steps-item-icon >.ant-steps-icon{color:rgba(255, 255, 255, 0.25);}.ant-steps .ant-steps-item-wait>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title{color:rgba(255, 255, 255, 0.45);}.ant-steps .ant-steps-item-wait>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title::after{background-color:rgba(253, 253, 253, 0.12);}.ant-steps .ant-steps-item-wait>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-description{color:rgba(255, 255, 255, 0.45);}.ant-steps .ant-steps-item-wait>.ant-steps-item-container>.ant-steps-item-tail::after{background-color:rgba(253, 253, 253, 0.12);}.ant-steps .ant-steps-item-process .ant-steps-item-icon{background-color:#037003;border-color:#037003;}.ant-steps .ant-steps-item-process .ant-steps-item-icon >.ant-steps-icon{color:#fff;}.ant-steps .ant-steps-item-process .ant-steps-item-icon >.ant-steps-icon .ant-steps-icon-dot{background:#037003;}.ant-steps .ant-steps-item-process.ant-steps-item-custom .ant-steps-item-icon >.ant-steps-icon{color:#037003;}.ant-steps .ant-steps-item-process>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title{color:rgba(255, 255, 255, 0.85);}.ant-steps .ant-steps-item-process>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title::after{background-color:rgba(253, 253, 253, 0.12);}.ant-steps .ant-steps-item-process>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-description{color:rgba(255, 255, 255, 0.85);}.ant-steps .ant-steps-item-process>.ant-steps-item-container>.ant-steps-item-tail::after{background-color:rgba(253, 253, 253, 0.12);}.ant-steps .ant-steps-item-process>.ant-steps-item-container>.ant-steps-item-title{font-weight:600;}.ant-steps .ant-steps-item-finish .ant-steps-item-icon{background-color:#111911;border-color:#111911;}.ant-steps .ant-steps-item-finish .ant-steps-item-icon >.ant-steps-icon{color:#037003;}.ant-steps .ant-steps-item-finish .ant-steps-item-icon >.ant-steps-icon .ant-steps-icon-dot{background:#037003;}.ant-steps .ant-steps-item-finish.ant-steps-item-custom .ant-steps-item-icon >.ant-steps-icon{color:#037003;}.ant-steps .ant-steps-item-finish>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title{color:rgba(255, 255, 255, 0.85);}.ant-steps .ant-steps-item-finish>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title::after{background-color:#037003;}.ant-steps .ant-steps-item-finish>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-description{color:rgba(255, 255, 255, 0.45);}.ant-steps .ant-steps-item-finish>.ant-steps-item-container>.ant-steps-item-tail::after{background-color:#037003;}.ant-steps .ant-steps-item-error .ant-steps-item-icon{background-color:#dc4446;border-color:#dc4446;}.ant-steps .ant-steps-item-error .ant-steps-item-icon >.ant-steps-icon{color:#fff;}.ant-steps .ant-steps-item-error .ant-steps-item-icon >.ant-steps-icon .ant-steps-icon-dot{background:#dc4446;}.ant-steps .ant-steps-item-error.ant-steps-item-custom .ant-steps-item-icon >.ant-steps-icon{color:#dc4446;}.ant-steps .ant-steps-item-error>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title{color:#dc4446;}.ant-steps .ant-steps-item-error>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title::after{background-color:rgba(253, 253, 253, 0.12);}.ant-steps .ant-steps-item-error>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-description{color:#dc4446;}.ant-steps .ant-steps-item-error>.ant-steps-item-container>.ant-steps-item-tail::after{background-color:rgba(253, 253, 253, 0.12);}.ant-steps .ant-steps-item.ant-steps-next-error>.ant-steps-item-title::after{background:#dc4446;}.ant-steps .ant-steps-item-disabled{cursor:not-allowed;}.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role='button']{cursor:pointer;}.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role='button'] .ant-steps-item-title,.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role='button'] .ant-steps-item-subtitle,.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role='button'] .ant-steps-item-description,.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role='button'] .ant-steps-item-icon .ant-steps-icon{transition:color 0.3s;}.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role='button']:hover .ant-steps-item-title,.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role='button']:hover .ant-steps-item-subtitle,.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role='button']:hover .ant-steps-item-description{color:#037003;}.ant-steps .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process)>.ant-steps-item-container[role='button']:hover .ant-steps-item-icon{border-color:#037003;}.ant-steps .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process)>.ant-steps-item-container[role='button']:hover .ant-steps-item-icon .ant-steps-icon{color:#037003;}.ant-steps.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item{padding-inline-start:16px;white-space:nowrap;}.ant-steps.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:first-child{padding-inline-start:0;}.ant-steps.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:last-child .ant-steps-item-title{padding-inline-end:0;}.ant-steps.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item-tail{display:none;}.ant-steps.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item-description{max-width:140px;white-space:normal;}.ant-steps .ant-steps-item-custom >.ant-steps-item-container>.ant-steps-item-icon{height:auto;background:none;border:0;}.ant-steps .ant-steps-item-custom >.ant-steps-item-container>.ant-steps-item-icon >.ant-steps-icon{top:0;width:32px;height:32px;font-size:20px;line-height:32px;}.ant-steps:not(.ant-steps-vertical) .ant-steps-item-custom .ant-steps-item-icon{width:auto;background:none;}.ant-steps.ant-steps-small.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item{padding-inline-start:12px;}.ant-steps.ant-steps-small.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:first-child{padding-inline-start:0;}.ant-steps.ant-steps-small .ant-steps-item-icon{width:24px;height:24px;margin-top:0;margin-bottom:0;margin-inline:0 8px;font-size:12px;line-height:24px;text-align:center;border-radius:24px;}.ant-steps.ant-steps-small .ant-steps-item-title{padding-inline-end:12px;font-size:14px;line-height:24px;}.ant-steps.ant-steps-small .ant-steps-item-title::after{top:12px;}.ant-steps.ant-steps-small .ant-steps-item-description{color:rgba(255, 255, 255, 0.45);font-size:14px;}.ant-steps.ant-steps-small .ant-steps-item-tail{top:8px;}.ant-steps.ant-steps-small .ant-steps-item-custom .ant-steps-item-icon{width:inherit;height:inherit;line-height:inherit;background:none;border:0;border-radius:0;}.ant-steps.ant-steps-small .ant-steps-item-custom .ant-steps-item-icon >.ant-steps-icon{font-size:24px;line-height:24px;transform:none;}.ant-steps.ant-steps-vertical{display:flex;flex-direction:column;}.ant-steps.ant-steps-vertical >.ant-steps-item{display:block;flex:1 0 auto;padding-inline-start:0;overflow:visible;}.ant-steps.ant-steps-vertical >.ant-steps-item .ant-steps-item-icon{float:left;margin-inline-end:16px;}.ant-steps.ant-steps-vertical >.ant-steps-item .ant-steps-item-content{display:block;min-height:48px;overflow:hidden;}.ant-steps.ant-steps-vertical >.ant-steps-item .ant-steps-item-title{line-height:32px;}.ant-steps.ant-steps-vertical >.ant-steps-item .ant-steps-item-description{padding-bottom:12px;}.ant-steps.ant-steps-vertical >.ant-steps-item>.ant-steps-item-container>.ant-steps-item-tail{position:absolute;top:0;inset-inline-start:15px;width:1px;height:100%;padding:38px 0 6px;}.ant-steps.ant-steps-vertical >.ant-steps-item>.ant-steps-item-container>.ant-steps-item-tail::after{width:1px;height:100%;}.ant-steps.ant-steps-vertical >.ant-steps-item:not(:last-child)>.ant-steps-item-container>.ant-steps-item-tail{display:block;}.ant-steps.ant-steps-vertical >.ant-steps-item>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title::after{display:none;}.ant-steps.ant-steps-vertical.ant-steps-small .ant-steps-item-container .ant-steps-item-tail{position:absolute;top:0;inset-inline-start:11px;padding:30px 0 6px;}.ant-steps.ant-steps-vertical.ant-steps-small .ant-steps-item-container .ant-steps-item-title{line-height:24px;}.ant-steps.ant-steps-label-vertical .ant-steps-item{overflow:visible;}.ant-steps.ant-steps-label-vertical .ant-steps-item-tail{margin-inline-start:56px;padding:4px 24px;}.ant-steps.ant-steps-label-vertical .ant-steps-item-content{display:block;width:112px;margin-top:12px;text-align:center;}.ant-steps.ant-steps-label-vertical .ant-steps-item-icon{display:inline-block;margin-inline-start:40px;}.ant-steps.ant-steps-label-vertical .ant-steps-item-title{padding-inline-end:0;padding-inline-start:0;}.ant-steps.ant-steps-label-vertical .ant-steps-item-title::after{display:none;}.ant-steps.ant-steps-label-vertical .ant-steps-item-subtitle{display:block;margin-bottom:4px;margin-inline-start:0;line-height:1.5714285714285714;}.ant-steps.ant-steps-label-vertical.ant-steps-small:not(.ant-steps-dot) .ant-steps-item-icon{margin-inline-start:44px;}.ant-steps.ant-steps-dot .ant-steps-item-title,.ant-steps.ant-steps-dot.ant-steps-small .ant-steps-item-title{line-height:1.5714285714285714;}.ant-steps.ant-steps-dot .ant-steps-item-tail,.ant-steps.ant-steps-dot.ant-steps-small .ant-steps-item-tail{top:2px;width:100%;margin-top:0;margin-bottom:0;margin-inline:70px 0;padding:0;}.ant-steps.ant-steps-dot .ant-steps-item-tail::after,.ant-steps.ant-steps-dot.ant-steps-small .ant-steps-item-tail::after{width:calc(100% - 24px);height:3px;margin-inline-start:12px;}.ant-steps.ant-steps-dot .ant-steps-item-icon,.ant-steps.ant-steps-dot.ant-steps-small .ant-steps-item-icon{width:8px;height:8px;margin-inline-start:66px;padding-inline-end:0;line-height:8px;background:transparent;border:0;}.ant-steps.ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot,.ant-steps.ant-steps-dot.ant-steps-small .ant-steps-item-icon .ant-steps-icon-dot{position:relative;float:left;width:100%;height:100%;border-radius:100px;transition:all 0.3s;}.ant-steps.ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot::after,.ant-steps.ant-steps-dot.ant-steps-small .ant-steps-item-icon .ant-steps-icon-dot::after{position:absolute;top:-12px;inset-inline-start:-26px;width:60px;height:32px;background:transparent;content:\\"\\";}.ant-steps.ant-steps-dot .ant-steps-item-content,.ant-steps.ant-steps-dot.ant-steps-small .ant-steps-item-content{width:140px;}.ant-steps.ant-steps-dot .ant-steps-item-process .ant-steps-item-icon,.ant-steps.ant-steps-dot.ant-steps-small .ant-steps-item-process .ant-steps-item-icon{position:relative;top:-1px;width:10px;height:10px;line-height:10px;background:none;margin-inline-start:65px;}.ant-steps.ant-steps-dot .ant-steps-item-process .ant-steps-icon:first-child .ant-steps-icon-dot,.ant-steps.ant-steps-dot.ant-steps-small .ant-steps-item-process .ant-steps-icon:first-child .ant-steps-icon-dot{inset-inline-start:0;}.ant-steps.ant-steps-vertical.ant-steps-dot .ant-steps-item-icon{margin-top:12px;margin-inline-start:0;background:none;}.ant-steps.ant-steps-vertical.ant-steps-dot .ant-steps-item-process .ant-steps-item-icon{margin-top:11px;top:0;inset-inline-start:-1px;margin-inline-start:0;}.ant-steps.ant-steps-vertical.ant-steps-dot .ant-steps-item>.ant-steps-item-container>.ant-steps-item-tail{top:12px;inset-inline-start:0;margin:0;padding:16px 0 8px;}.ant-steps.ant-steps-vertical.ant-steps-dot .ant-steps-item>.ant-steps-item-container>.ant-steps-item-tail::after{margin-inline-start:3.5px;}.ant-steps.ant-steps-vertical.ant-steps-dot.ant-steps-small .ant-steps-item-icon{margin-top:8px;}.ant-steps.ant-steps-vertical.ant-steps-dot.ant-steps-small .ant-steps-item-process .ant-steps-item-icon{margin-top:7px;}.ant-steps.ant-steps-vertical.ant-steps-dot.ant-steps-small .ant-steps-item>.ant-steps-item-container>.ant-steps-item-tail{top:8px;}.ant-steps.ant-steps-vertical.ant-steps-dot .ant-steps-item:first-child .ant-steps-icon-dot{inset-inline-start:0;}.ant-steps.ant-steps-vertical.ant-steps-dot .ant-steps-item-content{width:inherit;}.ant-steps.ant-steps-navigation{padding-top:12px;}.ant-steps.ant-steps-navigation.ant-steps-small .ant-steps-item-container{margin-inline-start:-12px;}.ant-steps.ant-steps-navigation .ant-steps-item{overflow:visible;text-align:center;}.ant-steps.ant-steps-navigation .ant-steps-item-container{display:inline-block;height:100%;margin-inline-start:-16px;padding-bottom:12px;text-align:start;transition:opacity 0.3s;}.ant-steps.ant-steps-navigation .ant-steps-item-container .ant-steps-item-content{max-width:auto;}.ant-steps.ant-steps-navigation .ant-steps-item-container .ant-steps-item-title{max-width:100%;padding-inline-end:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.ant-steps.ant-steps-navigation .ant-steps-item-container .ant-steps-item-title::after{display:none;}.ant-steps.ant-steps-navigation .ant-steps-item:not(.ant-steps-item-active) .ant-steps-item-container[role='button']{cursor:pointer;}.ant-steps.ant-steps-navigation .ant-steps-item:not(.ant-steps-item-active) .ant-steps-item-container[role='button']:hover{opacity:0.85;}.ant-steps.ant-steps-navigation .ant-steps-item:last-child{flex:1;}.ant-steps.ant-steps-navigation .ant-steps-item:last-child::after{display:none;}.ant-steps.ant-steps-navigation .ant-steps-item::after{position:absolute;top:calc(50% - 6px);inset-inline-start:100%;display:inline-block;width:12px;height:12px;border-top:1px solid rgba(255, 255, 255, 0.25);border-bottom:none;border-inline-start:none;border-inline-end:1px solid rgba(255, 255, 255, 0.25);transform:translateY(-50%) translateX(-50%) rotate(45deg);content:\\"\\";}.ant-steps.ant-steps-navigation .ant-steps-item::before{position:absolute;bottom:0;inset-inline-start:50%;display:inline-block;width:0;height:2px;background-color:#037003;transition:width 0.3s,inset-inline-start 0.3s;transition-timing-function:ease-out;content:\\"\\";}.ant-steps.ant-steps-navigation .ant-steps-item.ant-steps-item-active::before{inset-inline-start:0;width:100%;}.ant-steps.ant-steps-navigation.ant-steps-vertical >.ant-steps-item{margin-inline-end:0;}.ant-steps.ant-steps-navigation.ant-steps-vertical >.ant-steps-item::before{display:none;}.ant-steps.ant-steps-navigation.ant-steps-vertical >.ant-steps-item.ant-steps-item-active::before{top:0;inset-inline-end:0;inset-inline-start:unset;display:block;width:3px;height:calc(100% - 24px);}.ant-steps.ant-steps-navigation.ant-steps-vertical >.ant-steps-item::after{position:relative;inset-inline-start:50%;display:block;width:8px;height:8px;margin-bottom:8px;text-align:center;transform:translateY(-50%) translateX(-50%) rotate(135deg);}.ant-steps.ant-steps-navigation.ant-steps-vertical >.ant-steps-item >.ant-steps-item-container>.ant-steps-item-tail{visibility:hidden;}.ant-steps.ant-steps-navigation.ant-steps-horizontal >.ant-steps-item>.ant-steps-item-container>.ant-steps-item-tail{visibility:hidden;}.ant-steps.ant-steps-rtl{direction:rtl;}.ant-steps.ant-steps-rtl .ant-steps-item-subtitle{float:left;}.ant-steps.ant-steps-rtl.ant-steps-navigation .ant-steps-item::after{transform:rotate(-45deg);}.ant-steps.ant-steps-rtl.ant-steps-vertical >.ant-steps-item::after{transform:rotate(225deg);}.ant-steps.ant-steps-rtl.ant-steps-vertical >.ant-steps-item .ant-steps-item-icon{float:right;}.ant-steps.ant-steps-rtl.ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot,.ant-steps.ant-steps-rtl.ant-steps-dot.ant-steps-small .ant-steps-item-icon .ant-steps-icon-dot{float:right;}.ant-steps.ant-steps-with-progress .ant-steps-item{padding-top:4px;}.ant-steps.ant-steps-with-progress .ant-steps-item-process .ant-steps-item-container .ant-steps-item-icon .ant-steps-icon{color:#fff;}.ant-steps.ant-steps-with-progress.ant-steps-vertical>.ant-steps-item{padding-inline-start:4px;}.ant-steps.ant-steps-with-progress.ant-steps-vertical>.ant-steps-item >.ant-steps-item-container>.ant-steps-item-tail{top:4px;inset-inline-start:19px;}.ant-steps.ant-steps-with-progress.ant-steps-horizontal .ant-steps-item:first-child,.ant-steps.ant-steps-with-progress.ant-steps-small.ant-steps-horizontal .ant-steps-item:first-child{padding-bottom:4px;padding-inline-start:4px;}.ant-steps.ant-steps-with-progress.ant-steps-small.ant-steps-vertical>.ant-steps-item>.ant-steps-item-container>.ant-steps-item-tail{inset-inline-start:15px;}.ant-steps.ant-steps-with-progress.ant-steps-label-vertical .ant-steps-item .ant-steps-item-tail{top:14px;}.ant-steps.ant-steps-with-progress .ant-steps-item-icon{position:relative;}.ant-steps.ant-steps-with-progress .ant-steps-item-icon .ant-progress{position:absolute;inset-block-start:-5px;inset-inline-start:-5px;}.ant-steps.ant-steps-inline{width:auto;display:inline-flex;}.ant-steps.ant-steps-inline .ant-steps-item{flex:none;}.ant-steps.ant-steps-inline .ant-steps-item-container{padding:9px 4px 0;margin:0 2px;border-radius:4px;cursor:pointer;transition:background-color 0.2s;}.ant-steps.ant-steps-inline .ant-steps-item-container:hover{background:rgba(255, 255, 255, 0.08);}.ant-steps.ant-steps-inline .ant-steps-item-container[role='button']:hover{opacity:1;}.ant-steps.ant-steps-inline .ant-steps-item-icon{width:6px;height:6px;margin-inline-start:calc(50% - 3px);}.ant-steps.ant-steps-inline .ant-steps-item-icon >.ant-steps-icon{top:0;}.ant-steps.ant-steps-inline .ant-steps-item-icon .ant-steps-icon-dot{border-radius:3px;}.ant-steps.ant-steps-inline .ant-steps-item-content{width:auto;margin-top:7px;}.ant-steps.ant-steps-inline .ant-steps-item-title{color:rgba(255, 255, 255, 0.25);font-size:12px;line-height:1.6666666666666667;font-weight:normal;margin-bottom:2px;}.ant-steps.ant-steps-inline .ant-steps-item-description{display:none;}.ant-steps.ant-steps-inline .ant-steps-item-tail{margin-inline-start:0;top:12px;transform:translateY(-50%);}.ant-steps.ant-steps-inline .ant-steps-item-tail:after{width:100%;height:1px;border-radius:0;margin-inline-start:0;background:#303030;}.ant-steps.ant-steps-inline .ant-steps-item:first-child .ant-steps-item-tail{width:50%;margin-inline-start:50%;}.ant-steps.ant-steps-inline .ant-steps-item:last-child .ant-steps-item-tail{display:block;width:50%;}.ant-steps.ant-steps-inline .ant-steps-item-wait .ant-steps-item-icon .ant-steps-icon .ant-steps-icon-dot{background-color:#141414;border:1px solid #303030;}.ant-steps.ant-steps-inline .ant-steps-item-wait .ant-steps-item-container .ant-steps-item-content .ant-steps-item-title{color:rgba(255, 255, 255, 0.25);}.ant-steps.ant-steps-inline .ant-steps-item-finish .ant-steps-item-tail::after{background-color:#303030;}.ant-steps.ant-steps-inline .ant-steps-item-finish .ant-steps-item-icon .ant-steps-icon .ant-steps-icon-dot{background-color:#303030;border:1px solid #303030;}.ant-steps.ant-steps-inline .ant-steps-item-finish .ant-steps-item-container .ant-steps-item-content .ant-steps-item-title{color:rgba(255, 255, 255, 0.25);}.ant-steps.ant-steps-inline .ant-steps-item-error .ant-steps-item-container .ant-steps-item-content .ant-steps-item-title{color:rgba(255, 255, 255, 0.25);}.ant-steps.ant-steps-inline .ant-steps-item-active .ant-steps-item-icon,.ant-steps.ant-steps-inline .ant-steps-item-process .ant-steps-item-icon{width:6px;height:6px;margin-inline-start:calc(50% - 3px);top:0;}.ant-steps.ant-steps-inline .ant-steps-item-active .ant-steps-item-container .ant-steps-item-content .ant-steps-item-title,.ant-steps.ant-steps-inline .ant-steps-item-process .ant-steps-item-container .ant-steps-item-content .ant-steps-item-title{color:rgba(255, 255, 255, 0.25);}.ant-steps.ant-steps-inline .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role='button']:hover .ant-steps-item-title{color:rgba(255, 255, 255, 0.25);}[class^=\\"ant-switch\\"],[class*=\\" ant-switch\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-switch\\"]::before,[class*=\\" ant-switch\\"]::before,[class^=\\"ant-switch\\"]::after,[class*=\\" ant-switch\\"]::after{box-sizing:border-box;}[class^=\\"ant-switch\\"] [class^=\\"ant-switch\\"],[class*=\\" ant-switch\\"] [class^=\\"ant-switch\\"],[class^=\\"ant-switch\\"] [class*=\\" ant-switch\\"],[class*=\\" ant-switch\\"] [class*=\\" ant-switch\\"]{box-sizing:border-box;}[class^=\\"ant-switch\\"] [class^=\\"ant-switch\\"]::before,[class*=\\" ant-switch\\"] [class^=\\"ant-switch\\"]::before,[class^=\\"ant-switch\\"] [class*=\\" ant-switch\\"]::before,[class*=\\" ant-switch\\"] [class*=\\" ant-switch\\"]::before,[class^=\\"ant-switch\\"] [class^=\\"ant-switch\\"]::after,[class*=\\" ant-switch\\"] [class^=\\"ant-switch\\"]::after,[class^=\\"ant-switch\\"] [class*=\\" ant-switch\\"]::after,[class*=\\" ant-switch\\"] [class*=\\" ant-switch\\"]::after{box-sizing:border-box;}.ant-switch{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:22px;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;display:inline-block;min-width:44px;height:22px;vertical-align:middle;background:rgba(255, 255, 255, 0.25);border:0;border-radius:100px;cursor:pointer;transition:all 0.2s;user-select:none;}.ant-switch:hover:not(.ant-switch-disabled){background:rgba(255, 255, 255, 0.45);}.ant-switch:focus-visible{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-switch.ant-switch-checked{background:#037003;}.ant-switch.ant-switch-checked:hover:not(.ant-switch-disabled){background:#198016;}.ant-switch.ant-switch-loading,.ant-switch.ant-switch-disabled{cursor:not-allowed;opacity:0.65;}.ant-switch.ant-switch-loading *,.ant-switch.ant-switch-disabled *{box-shadow:none;cursor:not-allowed;}.ant-switch.ant-switch-rtl{direction:rtl;}.ant-switch .ant-switch-inner{display:block;overflow:hidden;border-radius:100px;height:100%;padding-inline-start:24px;padding-inline-end:9px;transition:padding-inline-start 0.2s ease-in-out,padding-inline-end 0.2s ease-in-out;}.ant-switch .ant-switch-inner .ant-switch-inner-checked,.ant-switch .ant-switch-inner .ant-switch-inner-unchecked{display:block;color:#fff;font-size:12px;transition:margin-inline-start 0.2s ease-in-out,margin-inline-end 0.2s ease-in-out;pointer-events:none;}.ant-switch .ant-switch-inner .ant-switch-inner-checked{margin-inline-start:calc(-100% + 22px - 48px);margin-inline-end:calc(100% - 22px + 48px);}.ant-switch .ant-switch-inner .ant-switch-inner-unchecked{margin-top:-22px;margin-inline-start:0;margin-inline-end:0;}.ant-switch.ant-switch-checked .ant-switch-inner{padding-inline-start:9px;padding-inline-end:24px;}.ant-switch.ant-switch-checked .ant-switch-inner .ant-switch-inner-checked{margin-inline-start:0;margin-inline-end:0;}.ant-switch.ant-switch-checked .ant-switch-inner .ant-switch-inner-unchecked{margin-inline-start:calc(100% - 22px + 48px);margin-inline-end:calc(-100% + 22px - 48px);}.ant-switch:not(.ant-switch-disabled):active:not(.ant-switch-checked) .ant-switch-inner .ant-switch-inner-unchecked{margin-inline-start:4px;margin-inline-end:-4px;}.ant-switch:not(.ant-switch-disabled):active.ant-switch-checked .ant-switch-inner .ant-switch-inner-checked{margin-inline-start:-4px;margin-inline-end:4px;}.ant-switch .ant-switch-handle{position:absolute;top:2px;inset-inline-start:2px;width:18px;height:18px;transition:all 0.2s ease-in-out;}.ant-switch .ant-switch-handle::before{position:absolute;top:0;inset-inline-end:0;bottom:0;inset-inline-start:0;background-color:#fff;border-radius:9px;box-shadow:0 2px 4px 0 rgba(0, 35, 11, 0.2);transition:all 0.2s ease-in-out;content:\\"\\";}.ant-switch.ant-switch-checked .ant-switch-handle{inset-inline-start:calc(100% - 20px);}.ant-switch:not(.ant-switch-disabled):active .ant-switch-handle::before{inset-inline-end:-30%;inset-inline-start:0;}.ant-switch:not(.ant-switch-disabled):active.ant-switch-checked .ant-switch-handle::before{inset-inline-end:0;inset-inline-start:-30%;}.ant-switch .ant-switch-loading-icon.anticon{position:relative;top:2px;color:rgba(0, 0, 0, 0.65);vertical-align:top;}.ant-switch.ant-switch-checked .ant-switch-loading-icon{color:#037003;}.ant-switch.ant-switch-small{min-width:28px;height:16px;line-height:16px;}.ant-switch.ant-switch-small .ant-switch-inner{padding-inline-start:18px;padding-inline-end:6px;}.ant-switch.ant-switch-small .ant-switch-inner .ant-switch-inner-checked{margin-inline-start:calc(-100% + 16px - 36px);margin-inline-end:calc(100% - 16px + 36px);}.ant-switch.ant-switch-small .ant-switch-inner .ant-switch-inner-unchecked{margin-top:-16px;margin-inline-start:0;margin-inline-end:0;}.ant-switch.ant-switch-small .ant-switch-handle{width:12px;height:12px;}.ant-switch.ant-switch-small .ant-switch-loading-icon{top:1.5px;font-size:9px;}.ant-switch.ant-switch-small.ant-switch-checked .ant-switch-inner{padding-inline-start:6px;padding-inline-end:18px;}.ant-switch.ant-switch-small.ant-switch-checked .ant-switch-inner .ant-switch-inner-checked{margin-inline-start:0;margin-inline-end:0;}.ant-switch.ant-switch-small.ant-switch-checked .ant-switch-inner .ant-switch-inner-unchecked{margin-inline-start:calc(100% - 16px + 36px);margin-inline-end:calc(-100% + 16px - 36px);}.ant-switch.ant-switch-small.ant-switch-checked .ant-switch-handle{inset-inline-start:calc(100% - 14px);}.ant-switch.ant-switch-small:not(.ant-switch-disabled):active:not(.ant-switch-checked) .ant-switch-inner .ant-switch-inner-unchecked{margin-inline-start:2px;margin-inline-end:-2px;}.ant-switch.ant-switch-small:not(.ant-switch-disabled):active.ant-switch-checked .ant-switch-inner .ant-switch-inner-checked{margin-inline-start:-2px;margin-inline-end:2px;}[class^=\\"ant-table\\"],[class*=\\" ant-table\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-table\\"]::before,[class*=\\" ant-table\\"]::before,[class^=\\"ant-table\\"]::after,[class*=\\" ant-table\\"]::after{box-sizing:border-box;}[class^=\\"ant-table\\"] [class^=\\"ant-table\\"],[class*=\\" ant-table\\"] [class^=\\"ant-table\\"],[class^=\\"ant-table\\"] [class*=\\" ant-table\\"],[class*=\\" ant-table\\"] [class*=\\" ant-table\\"]{box-sizing:border-box;}[class^=\\"ant-table\\"] [class^=\\"ant-table\\"]::before,[class*=\\" ant-table\\"] [class^=\\"ant-table\\"]::before,[class^=\\"ant-table\\"] [class*=\\" ant-table\\"]::before,[class*=\\" ant-table\\"] [class*=\\" ant-table\\"]::before,[class^=\\"ant-table\\"] [class^=\\"ant-table\\"]::after,[class*=\\" ant-table\\"] [class^=\\"ant-table\\"]::after,[class^=\\"ant-table\\"] [class*=\\" ant-table\\"]::after,[class*=\\" ant-table\\"] [class*=\\" ant-table\\"]::after{box-sizing:border-box;}.ant-table-wrapper{clear:both;max-width:100%;}.ant-table-wrapper::before{display:table;content:\\"\\";}.ant-table-wrapper::after{display:table;clear:both;content:\\"\\";}.ant-table-wrapper .ant-table{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';background:#141414;border-radius:8px 8px 0 0;}.ant-table-wrapper table{width:100%;text-align:start;border-radius:8px 8px 0 0;border-collapse:separate;border-spacing:0;}.ant-table-wrapper .ant-table-thead>tr>th,.ant-table-wrapper .ant-table-tbody>tr>td,.ant-table-wrapper tfoot>tr>th,.ant-table-wrapper tfoot>tr>td{position:relative;padding:16px 16px;overflow-wrap:break-word;}.ant-table-wrapper .ant-table-title{padding:16px 16px;}.ant-table-wrapper .ant-table-thead >tr>th,.ant-table-wrapper .ant-table-thead >tr>td{position:relative;color:rgba(255, 255, 255, 0.85);font-weight:600;text-align:start;background:#1d1d1d;border-bottom:1px solid #303030;transition:background 0.2s ease;}.ant-table-wrapper .ant-table-thead >tr>th[colspan]:not([colspan='1']),.ant-table-wrapper .ant-table-thead >tr>td[colspan]:not([colspan='1']){text-align:center;}.ant-table-wrapper .ant-table-thead >tr>th:not(:last-child):not(.ant-table-selection-column):not(.ant-table-row-expand-icon-cell):not([colspan])::before,.ant-table-wrapper .ant-table-thead >tr>td:not(:last-child):not(.ant-table-selection-column):not(.ant-table-row-expand-icon-cell):not([colspan])::before{position:absolute;top:50%;inset-inline-end:0;width:1px;height:1.6em;background-color:#303030;transform:translateY(-50%);transition:background-color 0.2s;content:\\"\\";}.ant-table-wrapper .ant-table-thead >tr:not(:last-child)>th[colspan]{border-bottom:0;}.ant-table-wrapper .ant-table:not(.ant-table-bordered) .ant-table-tbody >tr >td{border-top:1px solid #303030;border-bottom:transparent;}.ant-table-wrapper .ant-table:not(.ant-table-bordered) .ant-table-tbody >tr:last-child>td{border-bottom:1px solid #303030;}.ant-table-wrapper .ant-table:not(.ant-table-bordered) .ant-table-tbody >tr:first-child>td,.ant-table-wrapper .ant-table:not(.ant-table-bordered) .ant-table-tbody >tr.ant-table-measure-row+tr>td{border-top:none;border-top-color:transparent;}.ant-table-wrapper .ant-table.ant-table-bordered .ant-table-tbody >tr >td{border-bottom:1px solid #303030;}.ant-table-wrapper .ant-table-tbody >tr >td{transition:background 0.2s,border-color 0.2s;}.ant-table-wrapper .ant-table-tbody >tr >td >.ant-table-wrapper:only-child .ant-table,.ant-table-wrapper .ant-table-tbody >tr >td >.ant-table-expanded-row-fixed>.ant-table-wrapper:only-child .ant-table{margin-block:-16px;margin-inline:32px -16px;}.ant-table-wrapper .ant-table-tbody >tr >td >.ant-table-wrapper:only-child .ant-table .ant-table-tbody>tr:last-child>td,.ant-table-wrapper .ant-table-tbody >tr >td >.ant-table-expanded-row-fixed>.ant-table-wrapper:only-child .ant-table .ant-table-tbody>tr:last-child>td{border-bottom:0;}.ant-table-wrapper .ant-table-tbody >tr >td >.ant-table-wrapper:only-child .ant-table .ant-table-tbody>tr:last-child>td:first-child,.ant-table-wrapper .ant-table-tbody >tr >td >.ant-table-expanded-row-fixed>.ant-table-wrapper:only-child .ant-table .ant-table-tbody>tr:last-child>td:first-child,.ant-table-wrapper .ant-table-tbody >tr >td >.ant-table-wrapper:only-child .ant-table .ant-table-tbody>tr:last-child>td:last-child,.ant-table-wrapper .ant-table-tbody >tr >td >.ant-table-expanded-row-fixed>.ant-table-wrapper:only-child .ant-table .ant-table-tbody>tr:last-child>td:last-child{border-radius:0;}.ant-table-wrapper .ant-table-tbody >tr.ant-table-row:hover>td,.ant-table-wrapper .ant-table-tbody >tr >td.ant-table-cell-row-hover{background:#1d1d1d;}.ant-table-wrapper .ant-table-tbody >tr.ant-table-row-selected >td{background:#111911;}.ant-table-wrapper .ant-table-tbody >tr.ant-table-row-selected:hover>td{background:#0f2510;}.ant-table-wrapper .ant-table-footer{padding:16px 16px;color:rgba(255, 255, 255, 0.85);background:#1d1d1d;}.ant-table-wrapper .ant-table-pagination.ant-pagination{margin:16px 0;}.ant-table-wrapper .ant-table-pagination{display:flex;flex-wrap:wrap;row-gap:8px;}.ant-table-wrapper .ant-table-pagination >*{flex:none;}.ant-table-wrapper .ant-table-pagination-left{justify-content:flex-start;}.ant-table-wrapper .ant-table-pagination-center{justify-content:center;}.ant-table-wrapper .ant-table-pagination-right{justify-content:flex-end;}.ant-table-wrapper .ant-table-summary{position:relative;z-index:2;background:#141414;}.ant-table-wrapper .ant-table-summary >tr >th,.ant-table-wrapper .ant-table-summary >tr >td{border-bottom:1px solid #303030;}.ant-table-wrapper div.ant-table-summary{box-shadow:0 -1px 0 #303030;}.ant-table-wrapper .ant-table-thead th.ant-table-column-has-sorters{outline:none;cursor:pointer;transition:all 0.3s;}.ant-table-wrapper .ant-table-thead th.ant-table-column-has-sorters:hover{background:#303030;}.ant-table-wrapper .ant-table-thead th.ant-table-column-has-sorters:hover::before{background-color:transparent!important;}.ant-table-wrapper .ant-table-thead th.ant-table-column-has-sorters:focus-visible{color:#037003;}.ant-table-wrapper .ant-table-thead th.ant-table-column-has-sorters.ant-table-cell-fix-left:hover,.ant-table-wrapper .ant-table-thead th.ant-table-column-has-sorters.ant-table-cell-fix-right:hover{background:#303030;}.ant-table-wrapper .ant-table-thead th.ant-table-column-sort{background:#303030;}.ant-table-wrapper .ant-table-thead th.ant-table-column-sort::before{background-color:transparent!important;}.ant-table-wrapper td.ant-table-column-sort{background:#1d1d1d;}.ant-table-wrapper .ant-table-column-title{position:relative;z-index:1;flex:1;}.ant-table-wrapper .ant-table-column-sorters{display:flex;flex:auto;align-items:center;justify-content:space-between;}.ant-table-wrapper .ant-table-column-sorters::after{position:absolute;inset:0;width:100%;height:100%;content:\\"\\";}.ant-table-wrapper .ant-table-column-sorter{margin-inline-start:4px;color:rgba(255, 255, 255, 0.29);font-size:0;transition:color 0.3s;}.ant-table-wrapper .ant-table-column-sorter-inner{display:inline-flex;flex-direction:column;align-items:center;}.ant-table-wrapper .ant-table-column-sorter-up,.ant-table-wrapper .ant-table-column-sorter-down{font-size:12px;}.ant-table-wrapper .ant-table-column-sorter-up.active,.ant-table-wrapper .ant-table-column-sorter-down.active{color:#037003;}.ant-table-wrapper .ant-table-column-sorter .ant-table-column-sorter-up+.ant-table-column-sorter-down{margin-top:-0.3em;}.ant-table-wrapper .ant-table-column-sorters:hover .ant-table-column-sorter{color:rgba(255, 255, 255, 0.55);}.ant-table-wrapper .ant-table-filter-column{display:flex;justify-content:space-between;}.ant-table-wrapper .ant-table-filter-trigger{position:relative;display:flex;align-items:center;margin-block:-4px;margin-inline:4px -8px;padding:0 4px;color:rgba(255, 255, 255, 0.29);font-size:12px;border-radius:6px;cursor:pointer;transition:all 0.3s;}.ant-table-wrapper .ant-table-filter-trigger:hover{color:rgba(255, 255, 255, 0.45);background:rgba(255, 255, 255, 0.12);}.ant-table-wrapper .ant-table-filter-trigger.active{color:#037003;}.ant-dropdown .ant-table-filter-dropdown{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';min-width:120px;background-color:#141414;border-radius:6px;box-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08),0 3px 6px -4px rgba(0, 0, 0, 0.12),0 9px 28px 8px rgba(0, 0, 0, 0.05);}.ant-dropdown .ant-table-filter-dropdown .ant-dropdown-menu{max-height:264px;overflow-x:hidden;border:0;box-shadow:none;}.ant-dropdown .ant-table-filter-dropdown .ant-dropdown-menu:empty::after{display:block;padding:8px 0;color:rgba(255, 255, 255, 0.25);font-size:12px;text-align:center;content:\\"Not Found\\";}.ant-dropdown .ant-table-filter-dropdown .ant-table-filter-dropdown-tree{padding-block:8px 0;padding-inline:8px;}.ant-dropdown .ant-table-filter-dropdown .ant-table-filter-dropdown-tree .ant-tree{padding:0;}.ant-dropdown .ant-table-filter-dropdown .ant-table-filter-dropdown-tree .ant-tree-treenode .ant-tree-node-content-wrapper:hover{background-color:rgba(255, 255, 255, 0.08);}.ant-dropdown .ant-table-filter-dropdown .ant-table-filter-dropdown-tree .ant-tree-treenode-checkbox-checked .ant-tree-node-content-wrapper,.ant-dropdown .ant-table-filter-dropdown .ant-table-filter-dropdown-tree .ant-tree-treenode-checkbox-checked .ant-tree-node-content-wrapper:hover{background-color:#111911;}.ant-dropdown .ant-table-filter-dropdown .ant-table-filter-dropdown-search{padding:8px;border-bottom:1px solid #303030;}.ant-dropdown .ant-table-filter-dropdown .ant-table-filter-dropdown-search-input input{min-width:140px;}.ant-dropdown .ant-table-filter-dropdown .ant-table-filter-dropdown-search-input .anticon{color:rgba(255, 255, 255, 0.25);}.ant-dropdown .ant-table-filter-dropdown .ant-table-filter-dropdown-checkall{width:100%;margin-bottom:4px;margin-inline-start:4px;}.ant-dropdown .ant-table-filter-dropdown .ant-table-filter-dropdown-btns{display:flex;justify-content:space-between;padding:7px 8px;overflow:hidden;background-color:inherit;border-top:1px solid #303030;}.ant-dropdown .ant-table-filter-dropdown .ant-checkbox-wrapper+span,.ant-table-filter-dropdown-submenu .ant-checkbox-wrapper+span{padding-inline-start:8px;color:rgba(255, 255, 255, 0.85);}.ant-dropdown .ant-table-filter-dropdown >ul,.ant-table-filter-dropdown-submenu >ul{max-height:calc(100vh - 130px);overflow-x:hidden;overflow-y:auto;}.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-title{border:1px solid #303030;border-bottom:0;}.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container{border-inline-start:1px solid #303030;}.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-content >table >thead>tr>th,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-header >table >thead>tr>th,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-body >table >thead>tr>th,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-summary >table >thead>tr>th,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-content >table >tbody>tr>td,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-header >table >tbody>tr>td,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-body >table >tbody>tr>td,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-summary >table >tbody>tr>td,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-content >table >tfoot>tr>th,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-header >table >tfoot>tr>th,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-body >table >tfoot>tr>th,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-summary >table >tfoot>tr>th,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-content >table >tfoot>tr>td,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-header >table >tfoot>tr>td,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-body >table >tfoot>tr>td,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-summary >table >tfoot>tr>td{border-inline-end:1px solid #303030;}.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-content >table >thead >tr:not(:last-child)>th,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-header >table >thead >tr:not(:last-child)>th,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-body >table >thead >tr:not(:last-child)>th,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-summary >table >thead >tr:not(:last-child)>th{border-bottom:1px solid #303030;}.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-content >table >thead >tr>th::before,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-header >table >thead >tr>th::before,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-body >table >thead >tr>th::before,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-summary >table >thead >tr>th::before{background-color:transparent!important;}.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-content >table >thead>tr >.ant-table-cell-fix-right-first::after,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-header >table >thead>tr >.ant-table-cell-fix-right-first::after,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-body >table >thead>tr >.ant-table-cell-fix-right-first::after,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-summary >table >thead>tr >.ant-table-cell-fix-right-first::after,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-content >table >tbody>tr >.ant-table-cell-fix-right-first::after,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-header >table >tbody>tr >.ant-table-cell-fix-right-first::after,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-body >table >tbody>tr >.ant-table-cell-fix-right-first::after,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-summary >table >tbody>tr >.ant-table-cell-fix-right-first::after,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-content >table >tfoot>tr >.ant-table-cell-fix-right-first::after,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-header >table >tfoot>tr >.ant-table-cell-fix-right-first::after,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-body >table >tfoot>tr >.ant-table-cell-fix-right-first::after,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-summary >table >tfoot>tr >.ant-table-cell-fix-right-first::after{border-inline-end:1px solid #303030;}.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-content >table >tbody>tr>td >.ant-table-expanded-row-fixed,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-header >table >tbody>tr>td >.ant-table-expanded-row-fixed,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-body >table >tbody>tr>td >.ant-table-expanded-row-fixed,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-summary >table >tbody>tr>td >.ant-table-expanded-row-fixed{margin:-16px -17px;}.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-content >table >tbody>tr>td >.ant-table-expanded-row-fixed::after,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-header >table >tbody>tr>td >.ant-table-expanded-row-fixed::after,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-body >table >tbody>tr>td >.ant-table-expanded-row-fixed::after,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-summary >table >tbody>tr>td >.ant-table-expanded-row-fixed::after{position:absolute;top:0;inset-inline-end:1px;bottom:0;border-inline-end:1px solid #303030;content:\\"\\";}.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-content >table,.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-container >.ant-table-header >table{border-top:1px solid #303030;}.ant-table-wrapper .ant-table.ant-table-bordered.ant-table-scroll-horizontal >.ant-table-container>.ant-table-body >table>tbody >tr.ant-table-expanded-row >td,.ant-table-wrapper .ant-table.ant-table-bordered.ant-table-scroll-horizontal >.ant-table-container>.ant-table-body >table>tbody >tr.ant-table-placeholder >td{border-inline-end:0;}.ant-table-wrapper .ant-table.ant-table-bordered.ant-table-middle >.ant-table-container >.ant-table-content >table>tbody>tr>td >.ant-table-expanded-row-fixed,.ant-table-wrapper .ant-table.ant-table-bordered.ant-table-middle >.ant-table-container >.ant-table-body >table>tbody>tr>td >.ant-table-expanded-row-fixed{margin:-12px -9px;}.ant-table-wrapper .ant-table.ant-table-bordered.ant-table-small >.ant-table-container >.ant-table-content >table>tbody>tr>td >.ant-table-expanded-row-fixed,.ant-table-wrapper .ant-table.ant-table-bordered.ant-table-small >.ant-table-container >.ant-table-body >table>tbody>tr>td >.ant-table-expanded-row-fixed{margin:-8px -9px;}.ant-table-wrapper .ant-table.ant-table-bordered >.ant-table-footer{border:1px solid #303030;border-top:0;}.ant-table-wrapper .ant-table-cell .ant-table-container:first-child{border-top:0;}.ant-table-wrapper .ant-table-cell-scrollbar:not([rowspan]){box-shadow:0 1px 0 1px #1d1d1d;}.ant-table-wrapper .ant-table .ant-table-title,.ant-table-wrapper .ant-table .ant-table-header{border-radius:8px 8px 0 0;}.ant-table-wrapper .ant-table .ant-table-title+.ant-table-container{border-start-start-radius:0;border-start-end-radius:0;}.ant-table-wrapper .ant-table .ant-table-title+.ant-table-container table{border-radius:0;}.ant-table-wrapper .ant-table .ant-table-title+.ant-table-container table >thead>tr:first-child th:first-child{border-radius:0;}.ant-table-wrapper .ant-table .ant-table-title+.ant-table-container table >thead>tr:first-child th:last-child{border-radius:0;}.ant-table-wrapper .ant-table-container{border-start-start-radius:8px;border-start-end-radius:8px;}.ant-table-wrapper .ant-table-container table>thead>tr:first-child >*:first-child{border-start-start-radius:8px;}.ant-table-wrapper .ant-table-container table>thead>tr:first-child >*:last-child{border-start-end-radius:8px;}.ant-table-wrapper .ant-table-footer{border-radius:0 0 8px 8px;}.ant-table-wrapper .ant-table-expand-icon-col{width:48px;}.ant-table-wrapper .ant-table-row-expand-icon-cell{text-align:center;}.ant-table-wrapper .ant-table-row-expand-icon-cell .ant-table-row-expand-icon{display:inline-flex;float:none;vertical-align:sub;}.ant-table-wrapper .ant-table-row-indent{height:1px;float:left;}.ant-table-wrapper .ant-table-row-expand-icon{color:inherit;text-decoration:none;outline:none;cursor:pointer;transition:all 0.3s;position:relative;float:left;box-sizing:border-box;width:17px;height:17px;padding:0;line-height:17px;background:#141414;border:1px solid #303030;border-radius:6px;transform:scale(0.9411764705882353);user-select:none;}.ant-table-wrapper .ant-table-row-expand-icon:focus,.ant-table-wrapper .ant-table-row-expand-icon:hover{color:#15417e;}.ant-table-wrapper .ant-table-row-expand-icon:active{color:#1554ad;}.ant-table-wrapper .ant-table-row-expand-icon:focus,.ant-table-wrapper .ant-table-row-expand-icon:hover,.ant-table-wrapper .ant-table-row-expand-icon:active{border-color:currentcolor;}.ant-table-wrapper .ant-table-row-expand-icon::before,.ant-table-wrapper .ant-table-row-expand-icon::after{position:absolute;background:currentcolor;transition:transform 0.3s ease-out;content:\\"\\";}.ant-table-wrapper .ant-table-row-expand-icon::before{top:7px;inset-inline-end:3px;inset-inline-start:3px;height:1px;}.ant-table-wrapper .ant-table-row-expand-icon::after{top:3px;bottom:3px;inset-inline-start:7px;width:1px;transform:rotate(90deg);}.ant-table-wrapper .ant-table-row-expand-icon-collapsed::before{transform:rotate(-180deg);}.ant-table-wrapper .ant-table-row-expand-icon-collapsed::after{transform:rotate(0deg);}.ant-table-wrapper .ant-table-row-expand-icon-spaced{background:transparent;border:0;visibility:hidden;}.ant-table-wrapper .ant-table-row-expand-icon-spaced::before,.ant-table-wrapper .ant-table-row-expand-icon-spaced::after{display:none;content:none;}.ant-table-wrapper .ant-table-row-indent+.ant-table-row-expand-icon{margin-top:2.5px;margin-inline-end:8px;}.ant-table-wrapper tr.ant-table-expanded-row >td,.ant-table-wrapper tr.ant-table-expanded-row:hover >td{background:rgba(255, 255, 255, 0.04);}.ant-table-wrapper tr.ant-table-expanded-row .ant-descriptions-view{display:flex;}.ant-table-wrapper tr.ant-table-expanded-row .ant-descriptions-view table{flex:auto;width:auto;}.ant-table-wrapper .ant-table-expanded-row-fixed{position:relative;margin:-16px -16px;padding:16px 16px;}.ant-table-wrapper .ant-table-summary{position:relative;z-index:2;background:#141414;}.ant-table-wrapper .ant-table-summary >tr >th,.ant-table-wrapper .ant-table-summary >tr >td{border-bottom:1px solid #303030;}.ant-table-wrapper div.ant-table-summary{box-shadow:0 -1px 0 #303030;}.ant-table-wrapper .ant-table-tbody>tr.ant-table-placeholder{text-align:center;color:rgba(255, 255, 255, 0.25);}.ant-table-wrapper .ant-table-tbody>tr.ant-table-placeholder:hover>td{background:#141414;}.ant-table-wrapper .ant-table-selection-col{width:32px;}.ant-table-wrapper .ant-table-bordered .ant-table-selection-col{width:48px;}.ant-table-wrapper table tr th.ant-table-selection-column,.ant-table-wrapper table tr td.ant-table-selection-column{padding-inline-end:8px;padding-inline-start:8px;text-align:center;}.ant-table-wrapper table tr th.ant-table-selection-column .ant-radio-wrapper,.ant-table-wrapper table tr td.ant-table-selection-column .ant-radio-wrapper{margin-inline-end:0;}.ant-table-wrapper table tr th.ant-table-selection-column.ant-table-cell-fix-left{z-index:3;}.ant-table-wrapper table tr th.ant-table-selection-column::after{background-color:transparent!important;}.ant-table-wrapper .ant-table-selection{position:relative;display:inline-flex;flex-direction:column;}.ant-table-wrapper .ant-table-selection-extra{position:absolute;top:0;z-index:1;cursor:pointer;transition:all 0.3s;margin-inline-start:100%;padding-inline-start:4px;}.ant-table-wrapper .ant-table-selection-extra .anticon{color:rgba(255, 255, 255, 0.29);font-size:12px;vertical-align:baseline;}.ant-table-wrapper .ant-table-selection-extra .anticon:hover{color:rgba(255, 255, 255, 0.55);}.ant-table-wrapper .ant-table-cell-fix-left,.ant-table-wrapper .ant-table-cell-fix-right{position:sticky!important;z-index:2;background:#141414;}.ant-table-wrapper .ant-table-cell-fix-left-first::after,.ant-table-wrapper .ant-table-cell-fix-left-last::after{position:absolute;top:0;right:0;bottom:-1px;width:30px;transform:translateX(100%);transition:box-shadow 0.3s;content:\\"\\";pointer-events:none;}.ant-table-wrapper .ant-table-cell-fix-left-all::after{display:none;}.ant-table-wrapper .ant-table-cell-fix-right-first::after,.ant-table-wrapper .ant-table-cell-fix-right-last::after{position:absolute;top:0;bottom:-1px;left:0;width:30px;transform:translateX(-100%);transition:box-shadow 0.3s;content:\\"\\";pointer-events:none;}.ant-table-wrapper .ant-table-container::before,.ant-table-wrapper .ant-table-container::after{position:absolute;top:0;bottom:0;z-index:4;width:30px;transition:box-shadow 0.3s;content:\\"\\";pointer-events:none;}.ant-table-wrapper .ant-table-container::before{inset-inline-start:0;}.ant-table-wrapper .ant-table-container::after{inset-inline-end:0;}.ant-table-wrapper .ant-table-ping-left:not(.ant-table-has-fix-left) .ant-table-container{position:relative;}.ant-table-wrapper .ant-table-ping-left:not(.ant-table-has-fix-left) .ant-table-container::before{box-shadow:inset 10px 0 8px -8px rgba(253, 253, 253, 0.12);}.ant-table-wrapper .ant-table-ping-left .ant-table-cell-fix-left-first::after,.ant-table-wrapper .ant-table-ping-left .ant-table-cell-fix-left-last::after{box-shadow:inset 10px 0 8px -8px rgba(253, 253, 253, 0.12);}.ant-table-wrapper .ant-table-ping-left .ant-table-cell-fix-left-last::before{background-color:transparent!important;}.ant-table-wrapper .ant-table-ping-right:not(.ant-table-has-fix-right) .ant-table-container{position:relative;}.ant-table-wrapper .ant-table-ping-right:not(.ant-table-has-fix-right) .ant-table-container::after{box-shadow:inset -10px 0 8px -8px rgba(253, 253, 253, 0.12);}.ant-table-wrapper .ant-table-ping-right .ant-table-cell-fix-right-first::after,.ant-table-wrapper .ant-table-ping-right .ant-table-cell-fix-right-last::after{box-shadow:inset -10px 0 8px -8px rgba(253, 253, 253, 0.12);}.ant-table-wrapper .ant-table-sticky-holder{position:sticky;z-index:3;background:#141414;}.ant-table-wrapper .ant-table-sticky-scroll{position:sticky;bottom:0;height:8px!important;z-index:3;display:flex;align-items:center;background:rgba(253, 253, 253, 0.12);border-top:1px solid #303030;opacity:0.65;}.ant-table-wrapper .ant-table-sticky-scroll:hover{transform-origin:center bottom;}.ant-table-wrapper .ant-table-sticky-scroll-bar{height:8px;background-color:rgba(255, 255, 255, 0.25);border-radius:100px;transition:all 0.3s,transform none;position:absolute;bottom:0;}.ant-table-wrapper .ant-table-sticky-scroll-bar:hover,.ant-table-wrapper .ant-table-sticky-scroll-bar-active{background-color:rgba(255, 255, 255, 0.85);}.ant-table-wrapper .ant-table-cell-ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-break:keep-all;}.ant-table-wrapper .ant-table-cell-ellipsis.ant-table-cell-fix-left-last,.ant-table-wrapper .ant-table-cell-ellipsis.ant-table-cell-fix-right-first{overflow:visible;}.ant-table-wrapper .ant-table-cell-ellipsis.ant-table-cell-fix-left-last .ant-table-cell-content,.ant-table-wrapper .ant-table-cell-ellipsis.ant-table-cell-fix-right-first .ant-table-cell-content{display:block;overflow:hidden;text-overflow:ellipsis;}.ant-table-wrapper .ant-table-cell-ellipsis .ant-table-column-title{overflow:hidden;text-overflow:ellipsis;word-break:keep-all;}.ant-table-wrapper .ant-table.ant-table-middle{font-size:14px;}.ant-table-wrapper .ant-table.ant-table-middle .ant-table-title,.ant-table-wrapper .ant-table.ant-table-middle .ant-table-footer,.ant-table-wrapper .ant-table.ant-table-middle .ant-table-thead>tr>th,.ant-table-wrapper .ant-table.ant-table-middle .ant-table-tbody>tr>td,.ant-table-wrapper .ant-table.ant-table-middle tfoot>tr>th,.ant-table-wrapper .ant-table.ant-table-middle tfoot>tr>td{padding:12px 8px;}.ant-table-wrapper .ant-table.ant-table-middle .ant-table-filter-trigger{margin-inline-end:-4px;}.ant-table-wrapper .ant-table.ant-table-middle .ant-table-expanded-row-fixed{margin:-12px -8px;}.ant-table-wrapper .ant-table.ant-table-middle .ant-table-tbody .ant-table-wrapper:only-child .ant-table{margin-block:-12px;margin-inline:40px -8px;}.ant-table-wrapper .ant-table.ant-table-middle .ant-table-selection-column{padding-inline-start:2px;}.ant-table-wrapper .ant-table.ant-table-small{font-size:14px;}.ant-table-wrapper .ant-table.ant-table-small .ant-table-title,.ant-table-wrapper .ant-table.ant-table-small .ant-table-footer,.ant-table-wrapper .ant-table.ant-table-small .ant-table-thead>tr>th,.ant-table-wrapper .ant-table.ant-table-small .ant-table-tbody>tr>td,.ant-table-wrapper .ant-table.ant-table-small tfoot>tr>th,.ant-table-wrapper .ant-table.ant-table-small tfoot>tr>td{padding:8px 8px;}.ant-table-wrapper .ant-table.ant-table-small .ant-table-filter-trigger{margin-inline-end:-4px;}.ant-table-wrapper .ant-table.ant-table-small .ant-table-expanded-row-fixed{margin:-8px -8px;}.ant-table-wrapper .ant-table.ant-table-small .ant-table-tbody .ant-table-wrapper:only-child .ant-table{margin-block:-8px;margin-inline:40px -8px;}.ant-table-wrapper .ant-table.ant-table-small .ant-table-selection-column{padding-inline-start:2px;}.ant-table-wrapper .ant-table-resize-handle{position:absolute;top:0;height:100%!important;bottom:0;left:auto!important;right:-8px;cursor:col-resize;touch-action:none;user-select:auto;width:16px;z-index:1;}.ant-table-wrapper .ant-table-resize-handle-line{display:block;width:1px;margin-left:7px;height:100%!important;background-color:#037003;opacity:0;}.ant-table-wrapper .ant-table-resize-handle:hover .ant-table-wrapper .ant-table-resize-handle-line{opacity:1;}.ant-table-wrapper .ant-table-resize-handle.dragging{overflow:hidden;}.ant-table-wrapper .ant-table-resize-handle.dragging .ant-table-resize-handle-line{opacity:1;}.ant-table-wrapper .ant-table-resize-handle.dragging:before{position:absolute;top:0;bottom:0;content:\\" \\";width:200vw;transform:translateX(-50%);opacity:0;}.ant-table-wrapper-rtl{direction:rtl;}.ant-table-wrapper-rtl table{direction:rtl;}.ant-table-wrapper-rtl .ant-table-pagination-left{justify-content:flex-end;}.ant-table-wrapper-rtl .ant-table-pagination-right{justify-content:flex-start;}.ant-table-wrapper-rtl .ant-table-row-expand-icon::after{transform:rotate(-90deg);}.ant-table-wrapper-rtl .ant-table-row-expand-icon-collapsed::before{transform:rotate(180deg);}.ant-table-wrapper-rtl .ant-table-row-expand-icon-collapsed::after{transform:rotate(0deg);}[class^=\\"ant-transfer\\"],[class*=\\" ant-transfer\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-transfer\\"]::before,[class*=\\" ant-transfer\\"]::before,[class^=\\"ant-transfer\\"]::after,[class*=\\" ant-transfer\\"]::after{box-sizing:border-box;}[class^=\\"ant-transfer\\"] [class^=\\"ant-transfer\\"],[class*=\\" ant-transfer\\"] [class^=\\"ant-transfer\\"],[class^=\\"ant-transfer\\"] [class*=\\" ant-transfer\\"],[class*=\\" ant-transfer\\"] [class*=\\" ant-transfer\\"]{box-sizing:border-box;}[class^=\\"ant-transfer\\"] [class^=\\"ant-transfer\\"]::before,[class*=\\" ant-transfer\\"] [class^=\\"ant-transfer\\"]::before,[class^=\\"ant-transfer\\"] [class*=\\" ant-transfer\\"]::before,[class*=\\" ant-transfer\\"] [class*=\\" ant-transfer\\"]::before,[class^=\\"ant-transfer\\"] [class^=\\"ant-transfer\\"]::after,[class*=\\" ant-transfer\\"] [class^=\\"ant-transfer\\"]::after,[class^=\\"ant-transfer\\"] [class*=\\" ant-transfer\\"]::after,[class*=\\" ant-transfer\\"] [class*=\\" ant-transfer\\"]::after{box-sizing:border-box;}.ant-transfer{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;display:flex;align-items:stretch;}.ant-transfer .ant-transfer-disabled .ant-transfer-list{background:rgba(255, 255, 255, 0.08);}.ant-transfer .ant-transfer-list{display:flex;flex-direction:column;width:180px;height:200px;border:1px solid #424242;border-radius:8px;}.ant-transfer .ant-transfer-list-with-pagination{width:250px;height:auto;}.ant-transfer .ant-transfer-list-search .anticon-search{color:rgba(255, 255, 255, 0.25);}.ant-transfer .ant-transfer-list-header{display:flex;flex:none;align-items:center;height:40px;padding:8px 12px 9px;color:rgba(255, 255, 255, 0.85);background:#141414;border-bottom:1px solid rgba(253, 253, 253, 0.12);border-radius:8px 8px 0 0;}.ant-transfer .ant-transfer-list-header >*:not(:last-child){margin-inline-end:4px;}.ant-transfer .ant-transfer-list-header >*{flex:none;}.ant-transfer .ant-transfer-list-header-title{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;flex:auto;text-align:end;}.ant-transfer .ant-transfer-list-header-dropdown{display:inline-flex;align-items:center;color:inherit;font-style:normal;line-height:0;text-align:center;text-transform:none;vertical-align:-0.125em;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:12px;transform:translateY(10%);cursor:pointer;}.ant-transfer .ant-transfer-list-header-dropdown >*{line-height:1;}.ant-transfer .ant-transfer-list-header-dropdown svg{display:inline-block;}.ant-transfer .ant-transfer-list-header-dropdown[disabled]{cursor:not-allowed;}.ant-transfer .ant-transfer-list-body{display:flex;flex:auto;flex-direction:column;overflow:hidden;font-size:14px;}.ant-transfer .ant-transfer-list-body-search-wrapper{position:relative;flex:none;padding:12px;}.ant-transfer .ant-transfer-list-content{flex:auto;margin:0;padding:0;overflow:auto;list-style:none;}.ant-transfer .ant-transfer-list-content-item{display:flex;align-items:center;min-height:32px;padding:5px 12px;transition:all 0.3s;}.ant-transfer .ant-transfer-list-content-item >*:not(:last-child){margin-inline-end:8px;}.ant-transfer .ant-transfer-list-content-item >*{flex:none;}.ant-transfer .ant-transfer-list-content-item-text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;flex:auto;}.ant-transfer .ant-transfer-list-content-item-remove{position:relative;color:#424242;cursor:pointer;transition:all 0.3s;}.ant-transfer .ant-transfer-list-content-item-remove:hover{color:#15417e;}.ant-transfer .ant-transfer-list-content-item-remove::after{position:absolute;insert:-5px -50%;content:\\"\\";}.ant-transfer .ant-transfer-list-content-item:not(.ant-transfer-list-content-item-disabled):hover{background-color:rgba(255, 255, 255, 0.08);cursor:pointer;}.ant-transfer .ant-transfer-list-content-item:not(.ant-transfer-list-content-item-disabled).ant-transfer-list-content-item-checked:hover{background-color:#0f2510;}.ant-transfer .ant-transfer-list-content-item-checked{background-color:#111911;}.ant-transfer .ant-transfer-list-content-item-disabled{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;}.ant-transfer .ant-transfer-list-content-show-remove .ant-transfer-list-content-item:not(.ant-transfer-list-content-item-disabled):hover{background:transparent;cursor:default;}.ant-transfer .ant-transfer-list-pagination{padding:8px 0;text-align:end;border-top:1px solid rgba(253, 253, 253, 0.12);}.ant-transfer .ant-transfer-list-body-not-found{flex:none;width:100%;margin:auto 0;color:rgba(255, 255, 255, 0.25);text-align:center;}.ant-transfer .ant-transfer-list-footer{border-top:1px solid rgba(253, 253, 253, 0.12);}.ant-transfer .ant-transfer-list-checkbox{line-height:1;}.ant-transfer .ant-transfer-operation{display:flex;flex:none;flex-direction:column;align-self:center;margin:0 8px;vertical-align:middle;}.ant-transfer .ant-transfer-operation .ant-btn{display:block;}.ant-transfer .ant-transfer-operation .ant-btn:first-child{margin-bottom:4px;}.ant-transfer .ant-transfer-operation .ant-btn .anticon{font-size:12px;}.ant-transfer .ant-empty-image{max-height:-2px;}.ant-transfer-customize-list .ant-transfer-list{flex:1 1 50%;width:auto;height:auto;min-height:200px;}.ant-transfer-customize-list .ant-table-wrapper .ant-table-small{border:0;border-radius:0;}.ant-transfer-customize-list .ant-table-wrapper .ant-table-small .ant-table-selection-column{width:40px;min-width:40px;}.ant-transfer-customize-list .ant-table-wrapper .ant-table-pagination.ant-table-pagination{margin:16px 0 4px;}.ant-transfer-customize-list .ant-input[disabled]{background-color:transparent;}.ant-transfer-status-error .ant-transfer-list{border-color:#dc4446;}.ant-transfer-status-error .ant-transfer-list-search:not([disabled]){border-color:#424242;}.ant-transfer-status-warning .ant-transfer-list{border-color:#d89614;}.ant-transfer-status-warning .ant-transfer-list-search:not([disabled]){border-color:#424242;}.ant-transfer-rtl{direction:rtl;}[class^=\\"ant-tree\\"],[class*=\\" ant-tree\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-tree\\"]::before,[class*=\\" ant-tree\\"]::before,[class^=\\"ant-tree\\"]::after,[class*=\\" ant-tree\\"]::after{box-sizing:border-box;}[class^=\\"ant-tree\\"] [class^=\\"ant-tree\\"],[class*=\\" ant-tree\\"] [class^=\\"ant-tree\\"],[class^=\\"ant-tree\\"] [class*=\\" ant-tree\\"],[class*=\\" ant-tree\\"] [class*=\\" ant-tree\\"]{box-sizing:border-box;}[class^=\\"ant-tree\\"] [class^=\\"ant-tree\\"]::before,[class*=\\" ant-tree\\"] [class^=\\"ant-tree\\"]::before,[class^=\\"ant-tree\\"] [class*=\\" ant-tree\\"]::before,[class*=\\" ant-tree\\"] [class*=\\" ant-tree\\"]::before,[class^=\\"ant-tree\\"] [class^=\\"ant-tree\\"]::after,[class*=\\" ant-tree\\"] [class^=\\"ant-tree\\"]::after,[class^=\\"ant-tree\\"] [class*=\\" ant-tree\\"]::after,[class*=\\" ant-tree\\"] [class*=\\" ant-tree\\"]::after{box-sizing:border-box;}.ant-tree .ant-tree-checkbox-group{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:inline-flex;flex-wrap:wrap;column-gap:8px;}.ant-tree .ant-tree-checkbox-group >.ant-row{flex:1;}.ant-tree .ant-tree-checkbox-wrapper{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:inline-flex;align-items:baseline;cursor:pointer;}.ant-tree .ant-tree-checkbox-wrapper:after{display:inline-block;width:0;overflow:hidden;content:'\\\\a0';}.ant-tree .ant-tree-checkbox-wrapper+.ant-tree-checkbox-wrapper{margin-inline-start:0;}.ant-tree .ant-tree-checkbox-wrapper.ant-tree-checkbox-wrapper-in-form-item input[type=\\"checkbox\\"]{width:14px;height:14px;}.ant-tree .ant-tree-checkbox{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;white-space:nowrap;cursor:pointer;align-self:center;}.ant-tree .ant-tree-checkbox .ant-tree-checkbox-input{position:absolute;inset:0;z-index:1;cursor:pointer;opacity:0;margin:0;}.ant-tree .ant-tree-checkbox .ant-tree-checkbox-input:focus-visible+.ant-tree-checkbox-inner{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-tree .ant-tree-checkbox .ant-tree-checkbox-inner{box-sizing:border-box;position:relative;top:0;inset-inline-start:0;display:block;width:16px;height:16px;direction:ltr;background-color:#141414;border:1px solid #424242;border-radius:4px;border-collapse:separate;transition:all 0.3s;}.ant-tree .ant-tree-checkbox .ant-tree-checkbox-inner:after{box-sizing:border-box;position:absolute;top:50%;inset-inline-start:21.5%;display:table;width:5.7142857142857135px;height:9.142857142857142px;border:2px solid #fff;border-top:0;border-inline-start:0;transform:rotate(45deg) scale(0) translate(-50%,-50%);opacity:0;content:\\"\\";transition:all 0.1s cubic-bezier(0.71, -0.46, 0.88, 0.6),opacity 0.1s;}.ant-tree .ant-tree-checkbox+span{padding-inline-start:8px;padding-inline-end:8px;}.ant-tree .ant-tree-checkbox-indeterminate .ant-tree-checkbox-inner:after{top:50%;inset-inline-start:50%;width:8px;height:8px;background-color:#037003;border:0;transform:translate(-50%, -50%) scale(1);opacity:1;content:\\"\\";}.ant-tree .ant-tree-checkbox-wrapper:hover .ant-tree-checkbox:after{visibility:visible;}.ant-tree .ant-tree-checkbox-wrapper:not(.ant-tree-checkbox-wrapper-disabled):hover .ant-tree-checkbox-inner,.ant-tree .ant-tree-checkbox:not(.ant-tree-checkbox-disabled):hover .ant-tree-checkbox-inner{border-color:#037003;}.ant-tree .ant-tree-checkbox-wrapper:not(.ant-tree-checkbox-wrapper-disabled):hover .ant-tree-checkbox-checked:not(.ant-tree-checkbox-disabled) .ant-tree-checkbox-inner{background-color:#198016;border-color:transparent;}.ant-tree .ant-tree-checkbox-wrapper:not(.ant-tree-checkbox-wrapper-disabled):hover .ant-tree-checkbox-checked:not(.ant-tree-checkbox-disabled):after{border-color:#198016;}.ant-tree .ant-tree-checkbox-checked .ant-tree-checkbox-inner{background-color:#037003;border-color:#037003;}.ant-tree .ant-tree-checkbox-checked .ant-tree-checkbox-inner:after{opacity:1;transform:rotate(45deg) scale(1) translate(-50%,-50%);transition:all 0.2s cubic-bezier(0.12, 0.4, 0.29, 1.46) 0.1s;}.ant-tree .ant-tree-checkbox-checked:after{position:absolute;top:0;inset-inline-start:0;width:100%;height:100%;border-radius:4px;visibility:hidden;border:2px solid #037003;animation-name:antCheckboxEffect;animation-duration:0.3s;animation-timing-function:ease-in-out;animation-fill-mode:backwards;content:\\"\\";transition:all 0.3s;}.ant-tree .ant-tree-checkbox-wrapper-checked:not(.ant-tree-checkbox-wrapper-disabled):hover .ant-tree-checkbox-inner,.ant-tree .ant-tree-checkbox-checked:not(.ant-tree-checkbox-disabled):hover .ant-tree-checkbox-inner{background-color:#198016;border-color:transparent;}.ant-tree .ant-tree-checkbox-wrapper-checked:not(.ant-tree-checkbox-wrapper-disabled):hover .ant-tree-checkbox:after,.ant-tree .ant-tree-checkbox-checked:not(.ant-tree-checkbox-disabled):hover .ant-tree-checkbox:after{border-color:#198016;}.ant-tree .ant-tree-checkbox-wrapper-disabled{cursor:not-allowed;}.ant-tree .ant-tree-checkbox-disabled,.ant-tree .ant-tree-checkbox-disabled .ant-tree-checkbox-input{cursor:not-allowed;pointer-events:none;}.ant-tree .ant-tree-checkbox-disabled .ant-tree-checkbox-inner{background:rgba(255, 255, 255, 0.08);border-color:#424242;}.ant-tree .ant-tree-checkbox-disabled .ant-tree-checkbox-inner:after{border-color:rgba(255, 255, 255, 0.25);}.ant-tree .ant-tree-checkbox-disabled:after{display:none;}.ant-tree .ant-tree-checkbox-disabled+span{color:rgba(255, 255, 255, 0.25);}.ant-tree .ant-tree-checkbox-disabled.ant-tree-checkbox-indeterminate .ant-tree-checkbox-inner::after{background:rgba(255, 255, 255, 0.25);}.ant-tree{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';background:#141414;border-radius:6px;transition:background-color 0.3s;}.ant-tree.ant-tree-rtl .ant-tree-switcher_close .ant-tree-switcher-icon svg{transform:rotate(90deg);}.ant-tree-focused:not(:hover):not(.ant-tree-active-focused){outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-tree .ant-tree-list-holder-inner{align-items:flex-start;}.ant-tree.ant-tree-block-node .ant-tree-list-holder-inner{align-items:stretch;}.ant-tree.ant-tree-block-node .ant-tree-list-holder-inner .ant-tree-node-content-wrapper{flex:auto;}.ant-tree.ant-tree-block-node .ant-tree-list-holder-inner .ant-tree-treenode.dragging{position:relative;}.ant-tree.ant-tree-block-node .ant-tree-list-holder-inner .ant-tree-treenode.dragging:after{position:absolute;top:0;inset-inline-end:0;bottom:4px;inset-inline-start:0;border:1px solid #037003;opacity:0;animation-name:ant-tree-node-fx-do-not-use;animation-duration:0.3s;animation-play-state:running;animation-fill-mode:forwards;content:\\"\\";pointer-events:none;}.ant-tree .ant-tree-treenode{display:flex;align-items:flex-start;padding:0 0 4px 0;outline:none;}.ant-tree .ant-tree-treenode-rtl{direction:rtl;}.ant-tree .ant-tree-treenode-disabled .ant-tree-node-content-wrapper{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;}.ant-tree .ant-tree-treenode-disabled .ant-tree-node-content-wrapper:hover{background:transparent;}.ant-tree .ant-tree-treenode-active .ant-tree-node-content-wrapper{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-tree .ant-tree-treenode:not(.ant-tree-treenode-disabled).filter-node .ant-tree-title{color:inherit;font-weight:500;}.ant-tree .ant-tree-treenode-draggable .ant-tree-draggable-icon{width:24px;line-height:24px;text-align:center;visibility:visible;opacity:0.2;transition:opacity 0.3s;}.ant-tree-treenode:hover .ant-tree .ant-tree-treenode-draggable .ant-tree-draggable-icon{opacity:0.45;}.ant-tree .ant-tree-treenode-draggable.ant-tree-treenode-disabled .ant-tree-draggable-icon{visibility:hidden;}.ant-tree .ant-tree-indent{align-self:stretch;white-space:nowrap;user-select:none;}.ant-tree .ant-tree-indent-unit{display:inline-block;width:24px;}.ant-tree .ant-tree-draggable-icon{visibility:hidden;}.ant-tree .ant-tree-switcher{position:relative;flex:none;align-self:stretch;width:24px;margin:0;line-height:24px;text-align:center;cursor:pointer;user-select:none;}.ant-tree .ant-tree-switcher .ant-tree-switcher-icon{display:inline-block;font-size:10px;vertical-align:baseline;}.ant-tree .ant-tree-switcher .ant-tree-switcher-icon svg{transition:transform 0.3s;}.ant-tree .ant-tree-switcher-noop{cursor:default;}.ant-tree .ant-tree-switcher_close .ant-tree-switcher-icon svg{transform:rotate(-90deg);}.ant-tree .ant-tree-switcher-loading-icon{color:#037003;}.ant-tree .ant-tree-switcher-leaf-line{position:relative;z-index:1;display:inline-block;width:100%;height:100%;}.ant-tree .ant-tree-switcher-leaf-line:before{position:absolute;top:0;inset-inline-end:12px;bottom:-4px;margin-inline-start:-1px;border-inline-end:1px solid #424242;content:\\"\\";}.ant-tree .ant-tree-switcher-leaf-line:after{position:absolute;width:9.600000000000001px;height:12px;border-bottom:1px solid #424242;content:\\"\\";}.ant-tree .ant-tree-checkbox{top:initial;margin-inline-end:8px;margin-block-start:4px;}.ant-tree .ant-tree-node-content-wrapper,.ant-tree .ant-tree-checkbox+span{position:relative;z-index:auto;min-height:24px;margin:0;padding:0 4px;color:inherit;line-height:24px;background:transparent;border-radius:6px;cursor:pointer;transition:all 0.2s,border 0s,line-height 0s,box-shadow 0s;}.ant-tree .ant-tree-node-content-wrapper:hover,.ant-tree .ant-tree-checkbox+span:hover{background-color:rgba(255, 255, 255, 0.08);}.ant-tree .ant-tree-node-content-wrapper.ant-tree-node-selected,.ant-tree .ant-tree-checkbox+span.ant-tree-node-selected{background-color:#111911;}.ant-tree .ant-tree-node-content-wrapper .ant-tree-iconEle,.ant-tree .ant-tree-checkbox+span .ant-tree-iconEle{display:inline-block;width:24px;height:24px;line-height:24px;text-align:center;vertical-align:top;}.ant-tree .ant-tree-node-content-wrapper .ant-tree-iconEle:empty,.ant-tree .ant-tree-checkbox+span .ant-tree-iconEle:empty{display:none;}.ant-tree .ant-tree-unselectable .ant-tree-node-content-wrapper:hover{background-color:transparent;}.ant-tree .ant-tree-node-content-wrapper{line-height:24px;user-select:none;}.ant-tree .ant-tree-node-content-wrapper .ant-tree-drop-indicator{position:absolute;z-index:1;height:2px;background-color:#037003;border-radius:1px;pointer-events:none;}.ant-tree .ant-tree-node-content-wrapper .ant-tree-drop-indicator:after{position:absolute;top:-3px;inset-inline-start:-6px;width:8px;height:8px;background-color:transparent;border:2px solid #037003;border-radius:50%;content:\\"\\";}.ant-tree .ant-tree-treenode.drop-container >[draggable]{box-shadow:0 0 0 2px #037003;}.ant-tree-show-line .ant-tree-indent-unit{position:relative;height:100%;}.ant-tree-show-line .ant-tree-indent-unit:before{position:absolute;top:0;inset-inline-end:12px;bottom:-4px;border-inline-end:1px solid #424242;content:\\"\\";}.ant-tree-show-line .ant-tree-indent-unit-end:before{display:none;}.ant-tree-show-line .ant-tree-switcher{background:transparent;}.ant-tree-show-line .ant-tree-switcher-line-icon{vertical-align:-0.15em;}.ant-tree .ant-tree-treenode-leaf-last .ant-tree-switcher-leaf-line:before{top:auto!important;bottom:auto!important;height:12px!important;}.ant-tree.ant-tree-directory .ant-tree-treenode{position:relative;}.ant-tree.ant-tree-directory .ant-tree-treenode:before{position:absolute;top:0;inset-inline-end:0;bottom:4px;inset-inline-start:0;transition:background-color 0.2s;content:\\"\\";pointer-events:none;}.ant-tree.ant-tree-directory .ant-tree-treenode:hover:before{background:rgba(255, 255, 255, 0.08);}.ant-tree.ant-tree-directory .ant-tree-treenode >*{z-index:1;}.ant-tree.ant-tree-directory .ant-tree-treenode .ant-tree-switcher{transition:color 0.2s;}.ant-tree.ant-tree-directory .ant-tree-treenode .ant-tree-node-content-wrapper{border-radius:0;user-select:none;}.ant-tree.ant-tree-directory .ant-tree-treenode .ant-tree-node-content-wrapper:hover{background:transparent;}.ant-tree.ant-tree-directory .ant-tree-treenode .ant-tree-node-content-wrapper.ant-tree-node-selected{color:#fff;background:transparent;}.ant-tree.ant-tree-directory .ant-tree-treenode-selected:hover::before,.ant-tree.ant-tree-directory .ant-tree-treenode-selected::before{background:#037003;}.ant-tree.ant-tree-directory .ant-tree-treenode-selected .ant-tree-switcher{color:#fff;}.ant-tree.ant-tree-directory .ant-tree-treenode-selected .ant-tree-node-content-wrapper{color:#fff;background:transparent;}.ant-tree .ant-motion-collapse-legacy{overflow:hidden;}.ant-tree .ant-motion-collapse-legacy-active{transition:height 0.2s cubic-bezier(0.645, 0.045, 0.355, 1),opacity 0.2s cubic-bezier(0.645, 0.045, 0.355, 1)!important;}.ant-tree .ant-motion-collapse{overflow:hidden;transition:height 0.2s cubic-bezier(0.645, 0.045, 0.355, 1),opacity 0.2s cubic-bezier(0.645, 0.045, 0.355, 1)!important;}@keyframes ant-tree-node-fx-do-not-use{0%{opacity:0;}100%{opacity:1;}}[class^=\\"ant-tree-select\\"],[class*=\\" ant-tree-select\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-tree-select\\"]::before,[class*=\\" ant-tree-select\\"]::before,[class^=\\"ant-tree-select\\"]::after,[class*=\\" ant-tree-select\\"]::after{box-sizing:border-box;}[class^=\\"ant-tree-select\\"] [class^=\\"ant-tree-select\\"],[class*=\\" ant-tree-select\\"] [class^=\\"ant-tree-select\\"],[class^=\\"ant-tree-select\\"] [class*=\\" ant-tree-select\\"],[class*=\\" ant-tree-select\\"] [class*=\\" ant-tree-select\\"]{box-sizing:border-box;}[class^=\\"ant-tree-select\\"] [class^=\\"ant-tree-select\\"]::before,[class*=\\" ant-tree-select\\"] [class^=\\"ant-tree-select\\"]::before,[class^=\\"ant-tree-select\\"] [class*=\\" ant-tree-select\\"]::before,[class*=\\" ant-tree-select\\"] [class*=\\" ant-tree-select\\"]::before,[class^=\\"ant-tree-select\\"] [class^=\\"ant-tree-select\\"]::after,[class*=\\" ant-tree-select\\"] [class^=\\"ant-tree-select\\"]::after,[class^=\\"ant-tree-select\\"] [class*=\\" ant-tree-select\\"]::after,[class*=\\" ant-tree-select\\"] [class*=\\" ant-tree-select\\"]::after{box-sizing:border-box;}.ant-tree-select-dropdown{padding:8px 4px;}.ant-tree-select-dropdown .ant-select-tree{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';background:#1f1f1f;border-radius:6px;transition:background-color 0.3s;}.ant-tree-select-dropdown .ant-select-tree.ant-select-tree-rtl .ant-select-tree-switcher_close .ant-select-tree-switcher-icon svg{transform:rotate(90deg);}.ant-tree-select-dropdown .ant-select-tree-focused:not(:hover):not(.ant-select-tree-active-focused){outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-list-holder-inner{align-items:flex-start;}.ant-tree-select-dropdown .ant-select-tree.ant-select-tree-block-node .ant-select-tree-list-holder-inner{align-items:stretch;}.ant-tree-select-dropdown .ant-select-tree.ant-select-tree-block-node .ant-select-tree-list-holder-inner .ant-select-tree-node-content-wrapper{flex:auto;}.ant-tree-select-dropdown .ant-select-tree.ant-select-tree-block-node .ant-select-tree-list-holder-inner .ant-select-tree-treenode.dragging{position:relative;}.ant-tree-select-dropdown .ant-select-tree.ant-select-tree-block-node .ant-select-tree-list-holder-inner .ant-select-tree-treenode.dragging:after{position:absolute;top:0;inset-inline-end:0;bottom:4px;inset-inline-start:0;border:1px solid #037003;opacity:0;animation-name:ant-tree-node-fx-do-not-use;animation-duration:0.3s;animation-play-state:running;animation-fill-mode:forwards;content:\\"\\";pointer-events:none;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-treenode{display:flex;align-items:flex-start;padding:0 0 4px 0;outline:none;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-treenode-rtl{direction:rtl;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-treenode-disabled .ant-select-tree-node-content-wrapper{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-treenode-disabled .ant-select-tree-node-content-wrapper:hover{background:transparent;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-treenode-active .ant-select-tree-node-content-wrapper{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-treenode:not(.ant-select-tree-treenode-disabled).filter-node .ant-select-tree-title{color:inherit;font-weight:500;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-treenode-draggable .ant-select-tree-draggable-icon{width:24px;line-height:24px;text-align:center;visibility:visible;opacity:0.2;transition:opacity 0.3s;}.ant-select-tree-treenode:hover .ant-tree-select-dropdown .ant-select-tree .ant-select-tree-treenode-draggable .ant-select-tree-draggable-icon{opacity:0.45;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-treenode-draggable.ant-select-tree-treenode-disabled .ant-select-tree-draggable-icon{visibility:hidden;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-indent{align-self:stretch;white-space:nowrap;user-select:none;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-indent-unit{display:inline-block;width:24px;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-draggable-icon{visibility:hidden;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-switcher{position:relative;flex:none;align-self:stretch;width:24px;margin:0;line-height:24px;text-align:center;cursor:pointer;user-select:none;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-switcher .ant-select-tree-switcher-icon{display:inline-block;font-size:10px;vertical-align:baseline;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-switcher .ant-select-tree-switcher-icon svg{transition:transform 0.3s;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-switcher-noop{cursor:default;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-switcher_close .ant-select-tree-switcher-icon svg{transform:rotate(-90deg);}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-switcher-loading-icon{color:#037003;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-switcher-leaf-line{position:relative;z-index:1;display:inline-block;width:100%;height:100%;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-switcher-leaf-line:before{position:absolute;top:0;inset-inline-end:12px;bottom:-4px;margin-inline-start:-1px;border-inline-end:1px solid #424242;content:\\"\\";}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-switcher-leaf-line:after{position:absolute;width:9.600000000000001px;height:12px;border-bottom:1px solid #424242;content:\\"\\";}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-checkbox{top:initial;margin-inline-end:8px;margin-block-start:4px;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-node-content-wrapper,.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-checkbox+span{position:relative;z-index:auto;min-height:24px;margin:0;padding:0 4px;color:inherit;line-height:24px;background:transparent;border-radius:6px;cursor:pointer;transition:all 0.2s,border 0s,line-height 0s,box-shadow 0s;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-node-content-wrapper:hover,.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-checkbox+span:hover{background-color:rgba(255, 255, 255, 0.08);}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-node-content-wrapper.ant-select-tree-node-selected,.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-checkbox+span.ant-select-tree-node-selected{background-color:#111911;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-node-content-wrapper .ant-select-tree-iconEle,.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-checkbox+span .ant-select-tree-iconEle{display:inline-block;width:24px;height:24px;line-height:24px;text-align:center;vertical-align:top;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-node-content-wrapper .ant-select-tree-iconEle:empty,.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-checkbox+span .ant-select-tree-iconEle:empty{display:none;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-unselectable .ant-select-tree-node-content-wrapper:hover{background-color:transparent;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-node-content-wrapper{line-height:24px;user-select:none;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-node-content-wrapper .ant-select-tree-drop-indicator{position:absolute;z-index:1;height:2px;background-color:#037003;border-radius:1px;pointer-events:none;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-node-content-wrapper .ant-select-tree-drop-indicator:after{position:absolute;top:-3px;inset-inline-start:-6px;width:8px;height:8px;background-color:transparent;border:2px solid #037003;border-radius:50%;content:\\"\\";}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-treenode.drop-container >[draggable]{box-shadow:0 0 0 2px #037003;}.ant-tree-select-dropdown .ant-select-tree-show-line .ant-select-tree-indent-unit{position:relative;height:100%;}.ant-tree-select-dropdown .ant-select-tree-show-line .ant-select-tree-indent-unit:before{position:absolute;top:0;inset-inline-end:12px;bottom:-4px;border-inline-end:1px solid #424242;content:\\"\\";}.ant-tree-select-dropdown .ant-select-tree-show-line .ant-select-tree-indent-unit-end:before{display:none;}.ant-tree-select-dropdown .ant-select-tree-show-line .ant-select-tree-switcher{background:transparent;}.ant-tree-select-dropdown .ant-select-tree-show-line .ant-select-tree-switcher-line-icon{vertical-align:-0.15em;}.ant-tree-select-dropdown .ant-select-tree .ant-select-tree-treenode-leaf-last .ant-select-tree-switcher-leaf-line:before{top:auto!important;bottom:auto!important;height:12px!important;}.ant-tree-select-dropdown .ant-select-tree.ant-select-tree-directory .ant-select-tree-treenode{position:relative;}.ant-tree-select-dropdown .ant-select-tree.ant-select-tree-directory .ant-select-tree-treenode:before{position:absolute;top:0;inset-inline-end:0;bottom:4px;inset-inline-start:0;transition:background-color 0.2s;content:\\"\\";pointer-events:none;}.ant-tree-select-dropdown .ant-select-tree.ant-select-tree-directory .ant-select-tree-treenode:hover:before{background:rgba(255, 255, 255, 0.08);}.ant-tree-select-dropdown .ant-select-tree.ant-select-tree-directory .ant-select-tree-treenode >*{z-index:1;}.ant-tree-select-dropdown .ant-select-tree.ant-select-tree-directory .ant-select-tree-treenode .ant-select-tree-switcher{transition:color 0.2s;}.ant-tree-select-dropdown .ant-select-tree.ant-select-tree-directory .ant-select-tree-treenode .ant-select-tree-node-content-wrapper{border-radius:0;user-select:none;}.ant-tree-select-dropdown .ant-select-tree.ant-select-tree-directory .ant-select-tree-treenode .ant-select-tree-node-content-wrapper:hover{background:transparent;}.ant-tree-select-dropdown .ant-select-tree.ant-select-tree-directory .ant-select-tree-treenode .ant-select-tree-node-content-wrapper.ant-select-tree-node-selected{color:#fff;background:transparent;}.ant-tree-select-dropdown .ant-select-tree.ant-select-tree-directory .ant-select-tree-treenode-selected:hover::before,.ant-tree-select-dropdown .ant-select-tree.ant-select-tree-directory .ant-select-tree-treenode-selected::before{background:#037003;}.ant-tree-select-dropdown .ant-select-tree.ant-select-tree-directory .ant-select-tree-treenode-selected .ant-select-tree-switcher{color:#fff;}.ant-tree-select-dropdown .ant-select-tree.ant-select-tree-directory .ant-select-tree-treenode-selected .ant-select-tree-node-content-wrapper{color:#fff;background:transparent;}.ant-tree-select-dropdown .ant-select-tree{border-radius:0;}.ant-tree-select-dropdown .ant-select-tree-list-holder-inner{align-items:stretch;}.ant-tree-select-dropdown .ant-select-tree-list-holder-inner .ant-select-tree-treenode .ant-select-tree-node-content-wrapper{flex:auto;}.ant-tree-select-dropdown .ant-select-tree-checkbox-group{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:inline-flex;flex-wrap:wrap;column-gap:8px;}.ant-tree-select-dropdown .ant-select-tree-checkbox-group >.ant-row{flex:1;}.ant-tree-select-dropdown .ant-select-tree-checkbox-wrapper{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:inline-flex;align-items:baseline;cursor:pointer;}.ant-tree-select-dropdown .ant-select-tree-checkbox-wrapper:after{display:inline-block;width:0;overflow:hidden;content:'\\\\a0';}.ant-tree-select-dropdown .ant-select-tree-checkbox-wrapper+.ant-select-tree-checkbox-wrapper{margin-inline-start:0;}.ant-tree-select-dropdown .ant-select-tree-checkbox-wrapper.ant-select-tree-checkbox-wrapper-in-form-item input[type=\\"checkbox\\"]{width:14px;height:14px;}.ant-tree-select-dropdown .ant-select-tree-checkbox{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:relative;white-space:nowrap;cursor:pointer;align-self:center;}.ant-tree-select-dropdown .ant-select-tree-checkbox .ant-select-tree-checkbox-input{position:absolute;inset:0;z-index:1;cursor:pointer;opacity:0;margin:0;}.ant-tree-select-dropdown .ant-select-tree-checkbox .ant-select-tree-checkbox-input:focus-visible+.ant-select-tree-checkbox-inner{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-tree-select-dropdown .ant-select-tree-checkbox .ant-select-tree-checkbox-inner{box-sizing:border-box;position:relative;top:0;inset-inline-start:0;display:block;width:16px;height:16px;direction:ltr;background-color:#141414;border:1px solid #424242;border-radius:4px;border-collapse:separate;transition:all 0.3s;}.ant-tree-select-dropdown .ant-select-tree-checkbox .ant-select-tree-checkbox-inner:after{box-sizing:border-box;position:absolute;top:50%;inset-inline-start:21.5%;display:table;width:5.7142857142857135px;height:9.142857142857142px;border:2px solid #fff;border-top:0;border-inline-start:0;transform:rotate(45deg) scale(0) translate(-50%,-50%);opacity:0;content:\\"\\";transition:all 0.1s cubic-bezier(0.71, -0.46, 0.88, 0.6),opacity 0.1s;}.ant-tree-select-dropdown .ant-select-tree-checkbox+span{padding-inline-start:8px;padding-inline-end:8px;}.ant-tree-select-dropdown .ant-select-tree-checkbox-indeterminate .ant-select-tree-checkbox-inner:after{top:50%;inset-inline-start:50%;width:8px;height:8px;background-color:#037003;border:0;transform:translate(-50%, -50%) scale(1);opacity:1;content:\\"\\";}.ant-tree-select-dropdown .ant-select-tree-checkbox-wrapper:hover .ant-select-tree-checkbox:after{visibility:visible;}.ant-tree-select-dropdown .ant-select-tree-checkbox-wrapper:not(.ant-select-tree-checkbox-wrapper-disabled):hover .ant-select-tree-checkbox-inner,.ant-tree-select-dropdown .ant-select-tree-checkbox:not(.ant-select-tree-checkbox-disabled):hover .ant-select-tree-checkbox-inner{border-color:#037003;}.ant-tree-select-dropdown .ant-select-tree-checkbox-wrapper:not(.ant-select-tree-checkbox-wrapper-disabled):hover .ant-select-tree-checkbox-checked:not(.ant-select-tree-checkbox-disabled) .ant-select-tree-checkbox-inner{background-color:#198016;border-color:transparent;}.ant-tree-select-dropdown .ant-select-tree-checkbox-wrapper:not(.ant-select-tree-checkbox-wrapper-disabled):hover .ant-select-tree-checkbox-checked:not(.ant-select-tree-checkbox-disabled):after{border-color:#198016;}.ant-tree-select-dropdown .ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner{background-color:#037003;border-color:#037003;}.ant-tree-select-dropdown .ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner:after{opacity:1;transform:rotate(45deg) scale(1) translate(-50%,-50%);transition:all 0.2s cubic-bezier(0.12, 0.4, 0.29, 1.46) 0.1s;}.ant-tree-select-dropdown .ant-select-tree-checkbox-checked:after{position:absolute;top:0;inset-inline-start:0;width:100%;height:100%;border-radius:4px;visibility:hidden;border:2px solid #037003;animation-name:antCheckboxEffect;animation-duration:0.3s;animation-timing-function:ease-in-out;animation-fill-mode:backwards;content:\\"\\";transition:all 0.3s;}.ant-tree-select-dropdown .ant-select-tree-checkbox-wrapper-checked:not(.ant-select-tree-checkbox-wrapper-disabled):hover .ant-select-tree-checkbox-inner,.ant-tree-select-dropdown .ant-select-tree-checkbox-checked:not(.ant-select-tree-checkbox-disabled):hover .ant-select-tree-checkbox-inner{background-color:#198016;border-color:transparent;}.ant-tree-select-dropdown .ant-select-tree-checkbox-wrapper-checked:not(.ant-select-tree-checkbox-wrapper-disabled):hover .ant-select-tree-checkbox:after,.ant-tree-select-dropdown .ant-select-tree-checkbox-checked:not(.ant-select-tree-checkbox-disabled):hover .ant-select-tree-checkbox:after{border-color:#198016;}.ant-tree-select-dropdown .ant-select-tree-checkbox-wrapper-disabled{cursor:not-allowed;}.ant-tree-select-dropdown .ant-select-tree-checkbox-disabled,.ant-tree-select-dropdown .ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-input{cursor:not-allowed;pointer-events:none;}.ant-tree-select-dropdown .ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-inner{background:rgba(255, 255, 255, 0.08);border-color:#424242;}.ant-tree-select-dropdown .ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-inner:after{border-color:rgba(255, 255, 255, 0.25);}.ant-tree-select-dropdown .ant-select-tree-checkbox-disabled:after{display:none;}.ant-tree-select-dropdown .ant-select-tree-checkbox-disabled+span{color:rgba(255, 255, 255, 0.25);}.ant-tree-select-dropdown .ant-select-tree-checkbox-disabled.ant-select-tree-checkbox-indeterminate .ant-select-tree-checkbox-inner::after{background:rgba(255, 255, 255, 0.25);}.ant-tree-select-dropdown-rtl{direction:rtl;}.ant-tree-select-dropdown-rtl .ant-select-tree-switcher.ant-select-tree-switcher_close .ant-select-tree-switcher-icon svg{transform:rotate(90deg);}[class^=\\"ant-tabs\\"],[class*=\\" ant-tabs\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-tabs\\"]::before,[class*=\\" ant-tabs\\"]::before,[class^=\\"ant-tabs\\"]::after,[class*=\\" ant-tabs\\"]::after{box-sizing:border-box;}[class^=\\"ant-tabs\\"] [class^=\\"ant-tabs\\"],[class*=\\" ant-tabs\\"] [class^=\\"ant-tabs\\"],[class^=\\"ant-tabs\\"] [class*=\\" ant-tabs\\"],[class*=\\" ant-tabs\\"] [class*=\\" ant-tabs\\"]{box-sizing:border-box;}[class^=\\"ant-tabs\\"] [class^=\\"ant-tabs\\"]::before,[class*=\\" ant-tabs\\"] [class^=\\"ant-tabs\\"]::before,[class^=\\"ant-tabs\\"] [class*=\\" ant-tabs\\"]::before,[class*=\\" ant-tabs\\"] [class*=\\" ant-tabs\\"]::before,[class^=\\"ant-tabs\\"] [class^=\\"ant-tabs\\"]::after,[class*=\\" ant-tabs\\"] [class^=\\"ant-tabs\\"]::after,[class^=\\"ant-tabs\\"] [class*=\\" ant-tabs\\"]::after,[class*=\\" ant-tabs\\"] [class*=\\" ant-tabs\\"]::after{box-sizing:border-box;}.ant-tabs-small >.ant-tabs-nav .ant-tabs-tab{padding:8px 0;font-size:14px;}.ant-tabs-large >.ant-tabs-nav .ant-tabs-tab{padding:16px 0;font-size:16px;}.ant-tabs-card.ant-tabs-small >.ant-tabs-nav .ant-tabs-tab{padding:6px 16px;}.ant-tabs-card.ant-tabs-small.ant-tabs-bottom >.ant-tabs-nav .ant-tabs-tab{border-radius:0 0 6px 6px;}.ant-tabs-card.ant-tabs-small.ant-tabs-top >.ant-tabs-nav .ant-tabs-tab{border-radius:6px 6px 0 0;}.ant-tabs-card.ant-tabs-small.ant-tabs-right >.ant-tabs-nav .ant-tabs-tab{border-radius:0 6px 6px 0;}.ant-tabs-card.ant-tabs-small.ant-tabs-left >.ant-tabs-nav .ant-tabs-tab{border-radius:6px 0 0 6px;}.ant-tabs-card.ant-tabs-large >.ant-tabs-nav .ant-tabs-tab{padding:8px 16px 6px;}.ant-tabs-rtl{direction:rtl;}.ant-tabs-rtl .ant-tabs-nav .ant-tabs-tab{margin:0 0 0 32px;}.ant-tabs-rtl .ant-tabs-nav .ant-tabs-tab .ant-tabs-tab:last-of-type{margin-left:0;}.ant-tabs-rtl .ant-tabs-nav .ant-tabs-tab .anticon{margin-right:0;margin-left:12px;}.ant-tabs-rtl .ant-tabs-nav .ant-tabs-tab .ant-tabs-tab-remove{margin-right:8px;margin-left:-4px;}.ant-tabs-rtl .ant-tabs-nav .ant-tabs-tab .ant-tabs-tab-remove .anticon{margin:0;}.ant-tabs-rtl.ant-tabs-left >.ant-tabs-nav{order:1;}.ant-tabs-rtl.ant-tabs-left >.ant-tabs-content-holder{order:0;}.ant-tabs-rtl.ant-tabs-right >.ant-tabs-nav{order:0;}.ant-tabs-rtl.ant-tabs-right >.ant-tabs-content-holder{order:1;}.ant-tabs-rtl.ant-tabs-card.ant-tabs-top >.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-rtl.ant-tabs-card.ant-tabs-bottom >.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-rtl.ant-tabs-card.ant-tabs-top >div>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-rtl.ant-tabs-card.ant-tabs-bottom >div>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab{margin-right:2px;margin-left:0;}.ant-tabs-dropdown-rtl{direction:rtl;}.ant-tabs-menu-item .ant-tabs-dropdown-rtl{text-align:right;}.ant-tabs-top,.ant-tabs-bottom{flex-direction:column;}.ant-tabs-top >.ant-tabs-nav,.ant-tabs-bottom >.ant-tabs-nav,.ant-tabs-top >div>.ant-tabs-nav,.ant-tabs-bottom >div>.ant-tabs-nav{margin:0 0 16px 0;}.ant-tabs-top >.ant-tabs-nav::before,.ant-tabs-bottom >.ant-tabs-nav::before,.ant-tabs-top >div>.ant-tabs-nav::before,.ant-tabs-bottom >div>.ant-tabs-nav::before{position:absolute;right:0;left:0;border-bottom:1px solid rgba(253, 253, 253, 0.12);content:'';}.ant-tabs-top >.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-bottom >.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-top >div>.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-bottom >div>.ant-tabs-nav .ant-tabs-ink-bar{height:2px;}.ant-tabs-top >.ant-tabs-nav .ant-tabs-ink-bar-animated,.ant-tabs-bottom >.ant-tabs-nav .ant-tabs-ink-bar-animated,.ant-tabs-top >div>.ant-tabs-nav .ant-tabs-ink-bar-animated,.ant-tabs-bottom >div>.ant-tabs-nav .ant-tabs-ink-bar-animated{transition:width 0.3s,left 0.3s,right 0.3s;}.ant-tabs-top >.ant-tabs-nav .ant-tabs-nav-wrap::before,.ant-tabs-bottom >.ant-tabs-nav .ant-tabs-nav-wrap::before,.ant-tabs-top >div>.ant-tabs-nav .ant-tabs-nav-wrap::before,.ant-tabs-bottom >div>.ant-tabs-nav .ant-tabs-nav-wrap::before,.ant-tabs-top >.ant-tabs-nav .ant-tabs-nav-wrap::after,.ant-tabs-bottom >.ant-tabs-nav .ant-tabs-nav-wrap::after,.ant-tabs-top >div>.ant-tabs-nav .ant-tabs-nav-wrap::after,.ant-tabs-bottom >div>.ant-tabs-nav .ant-tabs-nav-wrap::after{top:0;bottom:0;width:32px;}.ant-tabs-top >.ant-tabs-nav .ant-tabs-nav-wrap::before,.ant-tabs-bottom >.ant-tabs-nav .ant-tabs-nav-wrap::before,.ant-tabs-top >div>.ant-tabs-nav .ant-tabs-nav-wrap::before,.ant-tabs-bottom >div>.ant-tabs-nav .ant-tabs-nav-wrap::before{left:0;box-shadow:inset 10px 0 8px -8px rgba(0, 0, 0, 0.08);}.ant-tabs-top >.ant-tabs-nav .ant-tabs-nav-wrap::after,.ant-tabs-bottom >.ant-tabs-nav .ant-tabs-nav-wrap::after,.ant-tabs-top >div>.ant-tabs-nav .ant-tabs-nav-wrap::after,.ant-tabs-bottom >div>.ant-tabs-nav .ant-tabs-nav-wrap::after{right:0;box-shadow:inset -10px 0 8px -8px rgba(0, 0, 0, 0.08);}.ant-tabs-top >.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-left::before,.ant-tabs-bottom >.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-left::before,.ant-tabs-top >div>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-left::before,.ant-tabs-bottom >div>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-left::before{opacity:1;}.ant-tabs-top >.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-right::after,.ant-tabs-bottom >.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-right::after,.ant-tabs-top >div>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-right::after,.ant-tabs-bottom >div>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-right::after{opacity:1;}.ant-tabs-top >.ant-tabs-nav::before,.ant-tabs-top >div>.ant-tabs-nav::before{bottom:0;}.ant-tabs-top >.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-top >div>.ant-tabs-nav .ant-tabs-ink-bar{bottom:0;}.ant-tabs-bottom >.ant-tabs-nav,.ant-tabs-bottom >div>.ant-tabs-nav{order:1;margin-top:16px;margin-bottom:0;}.ant-tabs-bottom >.ant-tabs-nav::before,.ant-tabs-bottom >div>.ant-tabs-nav::before{top:0;}.ant-tabs-bottom >.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-bottom >div>.ant-tabs-nav .ant-tabs-ink-bar{top:0;}.ant-tabs-bottom >.ant-tabs-content-holder,.ant-tabs-bottom >div>.ant-tabs-content-holder{order:0;}.ant-tabs-left >.ant-tabs-nav,.ant-tabs-right >.ant-tabs-nav,.ant-tabs-left >div>.ant-tabs-nav,.ant-tabs-right >div>.ant-tabs-nav{flex-direction:column;min-width:40px;}.ant-tabs-left >.ant-tabs-nav .ant-tabs-tab,.ant-tabs-right >.ant-tabs-nav .ant-tabs-tab,.ant-tabs-left >div>.ant-tabs-nav .ant-tabs-tab,.ant-tabs-right >div>.ant-tabs-nav .ant-tabs-tab{padding:8px 24px;text-align:center;}.ant-tabs-left >.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-right >.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-left >div>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-right >div>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab{margin:16px 0 0 0;}.ant-tabs-left >.ant-tabs-nav .ant-tabs-nav-wrap,.ant-tabs-right >.ant-tabs-nav .ant-tabs-nav-wrap,.ant-tabs-left >div>.ant-tabs-nav .ant-tabs-nav-wrap,.ant-tabs-right >div>.ant-tabs-nav .ant-tabs-nav-wrap{flex-direction:column;}.ant-tabs-left >.ant-tabs-nav .ant-tabs-nav-wrap::before,.ant-tabs-right >.ant-tabs-nav .ant-tabs-nav-wrap::before,.ant-tabs-left >div>.ant-tabs-nav .ant-tabs-nav-wrap::before,.ant-tabs-right >div>.ant-tabs-nav .ant-tabs-nav-wrap::before,.ant-tabs-left >.ant-tabs-nav .ant-tabs-nav-wrap::after,.ant-tabs-right >.ant-tabs-nav .ant-tabs-nav-wrap::after,.ant-tabs-left >div>.ant-tabs-nav .ant-tabs-nav-wrap::after,.ant-tabs-right >div>.ant-tabs-nav .ant-tabs-nav-wrap::after{right:0;left:0;height:32px;}.ant-tabs-left >.ant-tabs-nav .ant-tabs-nav-wrap::before,.ant-tabs-right >.ant-tabs-nav .ant-tabs-nav-wrap::before,.ant-tabs-left >div>.ant-tabs-nav .ant-tabs-nav-wrap::before,.ant-tabs-right >div>.ant-tabs-nav .ant-tabs-nav-wrap::before{top:0;box-shadow:inset 0 10px 8px -8px rgba(0, 0, 0, 0.08);}.ant-tabs-left >.ant-tabs-nav .ant-tabs-nav-wrap::after,.ant-tabs-right >.ant-tabs-nav .ant-tabs-nav-wrap::after,.ant-tabs-left >div>.ant-tabs-nav .ant-tabs-nav-wrap::after,.ant-tabs-right >div>.ant-tabs-nav .ant-tabs-nav-wrap::after{bottom:0;box-shadow:inset 0 -10px 8px -8px rgba(0, 0, 0, 0.08);}.ant-tabs-left >.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-top::before,.ant-tabs-right >.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-top::before,.ant-tabs-left >div>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-top::before,.ant-tabs-right >div>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-top::before{opacity:1;}.ant-tabs-left >.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-bottom::after,.ant-tabs-right >.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-bottom::after,.ant-tabs-left >div>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-bottom::after,.ant-tabs-right >div>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-bottom::after{opacity:1;}.ant-tabs-left >.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-right >.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-left >div>.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-right >div>.ant-tabs-nav .ant-tabs-ink-bar{width:2px;}.ant-tabs-left >.ant-tabs-nav .ant-tabs-ink-bar-animated,.ant-tabs-right >.ant-tabs-nav .ant-tabs-ink-bar-animated,.ant-tabs-left >div>.ant-tabs-nav .ant-tabs-ink-bar-animated,.ant-tabs-right >div>.ant-tabs-nav .ant-tabs-ink-bar-animated{transition:height 0.3s,top 0.3s;}.ant-tabs-left >.ant-tabs-nav .ant-tabs-nav-list,.ant-tabs-right >.ant-tabs-nav .ant-tabs-nav-list,.ant-tabs-left >div>.ant-tabs-nav .ant-tabs-nav-list,.ant-tabs-right >div>.ant-tabs-nav .ant-tabs-nav-list,.ant-tabs-left >.ant-tabs-nav .ant-tabs-nav-operations,.ant-tabs-right >.ant-tabs-nav .ant-tabs-nav-operations,.ant-tabs-left >div>.ant-tabs-nav .ant-tabs-nav-operations,.ant-tabs-right >div>.ant-tabs-nav .ant-tabs-nav-operations{flex:1 0 auto;flex-direction:column;}.ant-tabs-left >.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-left >div>.ant-tabs-nav .ant-tabs-ink-bar{right:0;}.ant-tabs-left >.ant-tabs-content-holder,.ant-tabs-left >div>.ant-tabs-content-holder{margin-left:-1px;border-left:1px solid #424242;}.ant-tabs-left >.ant-tabs-content-holder >.ant-tabs-content>.ant-tabs-tabpane,.ant-tabs-left >div>.ant-tabs-content-holder >.ant-tabs-content>.ant-tabs-tabpane{padding-left:24px;}.ant-tabs-right >.ant-tabs-nav,.ant-tabs-right >div>.ant-tabs-nav{order:1;}.ant-tabs-right >.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-right >div>.ant-tabs-nav .ant-tabs-ink-bar{left:0;}.ant-tabs-right >.ant-tabs-content-holder,.ant-tabs-right >div>.ant-tabs-content-holder{order:0;margin-right:-1px;border-right:1px solid #424242;}.ant-tabs-right >.ant-tabs-content-holder >.ant-tabs-content>.ant-tabs-tabpane,.ant-tabs-right >div>.ant-tabs-content-holder >.ant-tabs-content>.ant-tabs-tabpane{padding-right:24px;}.ant-tabs-dropdown{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:absolute;top:-9999px;left:-9999px;z-index:1050;display:block;}.ant-tabs-dropdown-hidden{display:none;}.ant-tabs-dropdown .ant-tabs-dropdown-menu{max-height:200px;margin:0;padding:4px 0;overflow-x:hidden;overflow-y:auto;text-align:left;list-style-type:none;background-color:#141414;background-clip:padding-box;border-radius:8px;outline:none;box-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08),0 3px 6px -4px rgba(0, 0, 0, 0.12),0 9px 28px 8px rgba(0, 0, 0, 0.05);}.ant-tabs-dropdown .ant-tabs-dropdown-menu-item{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:flex;align-items:center;min-width:120px;margin:0;padding:4px 12px;color:rgba(255, 255, 255, 0.85);font-weight:normal;font-size:14px;line-height:1.5714285714285714;cursor:pointer;transition:all 0.3s;}.ant-tabs-dropdown .ant-tabs-dropdown-menu-item >span{flex:1;white-space:nowrap;}.ant-tabs-dropdown .ant-tabs-dropdown-menu-item-remove{flex:none;margin-left:12px;color:rgba(255, 255, 255, 0.45);font-size:12px;background:transparent;border:0;cursor:pointer;}.ant-tabs-dropdown .ant-tabs-dropdown-menu-item-remove:hover{color:#198016;}.ant-tabs-dropdown .ant-tabs-dropdown-menu-item:hover{background:rgba(255, 255, 255, 0.08);}.ant-tabs-dropdown .ant-tabs-dropdown-menu-item-disabled,.ant-tabs-dropdown .ant-tabs-dropdown-menu-item-disabled:hover{color:rgba(255, 255, 255, 0.25);background:transparent;cursor:not-allowed;}.ant-tabs-card >.ant-tabs-nav .ant-tabs-tab,.ant-tabs-card >div>.ant-tabs-nav .ant-tabs-tab{margin:0;padding:8px 16px;background:rgba(255, 255, 255, 0.04);border:1px solid rgba(253, 253, 253, 0.12);transition:all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);}.ant-tabs-card >.ant-tabs-nav .ant-tabs-tab-active,.ant-tabs-card >div>.ant-tabs-nav .ant-tabs-tab-active{color:#037003;background:#141414;}.ant-tabs-card >.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-card >div>.ant-tabs-nav .ant-tabs-ink-bar{visibility:hidden;}.ant-tabs-card.ant-tabs-top >.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-card.ant-tabs-bottom >.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-card.ant-tabs-top >div>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-card.ant-tabs-bottom >div>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab{margin-left:2px;}.ant-tabs-card.ant-tabs-top >.ant-tabs-nav .ant-tabs-tab,.ant-tabs-card.ant-tabs-top >div>.ant-tabs-nav .ant-tabs-tab{border-radius:8px 8px 0 0;}.ant-tabs-card.ant-tabs-top >.ant-tabs-nav .ant-tabs-tab-active,.ant-tabs-card.ant-tabs-top >div>.ant-tabs-nav .ant-tabs-tab-active{border-bottom-color:#141414;}.ant-tabs-card.ant-tabs-bottom >.ant-tabs-nav .ant-tabs-tab,.ant-tabs-card.ant-tabs-bottom >div>.ant-tabs-nav .ant-tabs-tab{border-radius:0 0 8px 8px;}.ant-tabs-card.ant-tabs-bottom >.ant-tabs-nav .ant-tabs-tab-active,.ant-tabs-card.ant-tabs-bottom >div>.ant-tabs-nav .ant-tabs-tab-active{border-top-color:#141414;}.ant-tabs-card.ant-tabs-left >.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-card.ant-tabs-right >.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-card.ant-tabs-left >div>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-card.ant-tabs-right >div>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab{margin-top:2px;}.ant-tabs-card.ant-tabs-left >.ant-tabs-nav .ant-tabs-tab,.ant-tabs-card.ant-tabs-left >div>.ant-tabs-nav .ant-tabs-tab{border-radius:8px 0 0 8px;}.ant-tabs-card.ant-tabs-left >.ant-tabs-nav .ant-tabs-tab-active,.ant-tabs-card.ant-tabs-left >div>.ant-tabs-nav .ant-tabs-tab-active{border-right-color:#141414;}.ant-tabs-card.ant-tabs-right >.ant-tabs-nav .ant-tabs-tab,.ant-tabs-card.ant-tabs-right >div>.ant-tabs-nav .ant-tabs-tab{border-radius:0 8px 8px 0;}.ant-tabs-card.ant-tabs-right >.ant-tabs-nav .ant-tabs-tab-active,.ant-tabs-card.ant-tabs-right >div>.ant-tabs-nav .ant-tabs-tab-active{border-left-color:#141414;}.ant-tabs{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:flex;}.ant-tabs >.ant-tabs-nav,.ant-tabs >div>.ant-tabs-nav{position:relative;display:flex;flex:none;align-items:center;}.ant-tabs >.ant-tabs-nav .ant-tabs-nav-wrap,.ant-tabs >div>.ant-tabs-nav .ant-tabs-nav-wrap{position:relative;display:flex;flex:auto;align-self:stretch;overflow:hidden;white-space:nowrap;transform:translate(0);}.ant-tabs >.ant-tabs-nav .ant-tabs-nav-wrap::before,.ant-tabs >div>.ant-tabs-nav .ant-tabs-nav-wrap::before,.ant-tabs >.ant-tabs-nav .ant-tabs-nav-wrap::after,.ant-tabs >div>.ant-tabs-nav .ant-tabs-nav-wrap::after{position:absolute;z-index:1;opacity:0;transition:opacity 0.3s;content:'';pointer-events:none;}.ant-tabs >.ant-tabs-nav .ant-tabs-nav-list,.ant-tabs >div>.ant-tabs-nav .ant-tabs-nav-list{position:relative;display:flex;transition:opacity 0.3s;}.ant-tabs >.ant-tabs-nav .ant-tabs-nav-operations,.ant-tabs >div>.ant-tabs-nav .ant-tabs-nav-operations{display:flex;align-self:stretch;}.ant-tabs >.ant-tabs-nav .ant-tabs-nav-operations-hidden,.ant-tabs >div>.ant-tabs-nav .ant-tabs-nav-operations-hidden{position:absolute;visibility:hidden;pointer-events:none;}.ant-tabs >.ant-tabs-nav .ant-tabs-nav-more,.ant-tabs >div>.ant-tabs-nav .ant-tabs-nav-more{position:relative;padding:8px 16px;background:transparent;border:0;}.ant-tabs >.ant-tabs-nav .ant-tabs-nav-more::after,.ant-tabs >div>.ant-tabs-nav .ant-tabs-nav-more::after{position:absolute;right:0;bottom:0;left:0;height:5px;transform:translateY(100%);content:'';}.ant-tabs >.ant-tabs-nav .ant-tabs-nav-add,.ant-tabs >div>.ant-tabs-nav .ant-tabs-nav-add{min-width:40px;margin-left:2px;padding:0 8px;background:transparent;border:1px solid rgba(253, 253, 253, 0.12);border-radius:8px 8px 0 0;outline:none;cursor:pointer;color:rgba(255, 255, 255, 0.85);transition:all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);}.ant-tabs >.ant-tabs-nav .ant-tabs-nav-add:hover,.ant-tabs >div>.ant-tabs-nav .ant-tabs-nav-add:hover{color:#198016;}.ant-tabs >.ant-tabs-nav .ant-tabs-nav-add:active,.ant-tabs >div>.ant-tabs-nav .ant-tabs-nav-add:active,.ant-tabs >.ant-tabs-nav .ant-tabs-nav-add:focus:not(:focus-visible),.ant-tabs >div>.ant-tabs-nav .ant-tabs-nav-add:focus:not(:focus-visible){color:#075a07;}.ant-tabs >.ant-tabs-nav .ant-tabs-nav-add:focus-visible,.ant-tabs >div>.ant-tabs-nav .ant-tabs-nav-add:focus-visible{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-tabs .ant-tabs-extra-content{flex:none;}.ant-tabs .ant-tabs-ink-bar{position:absolute;background:#037003;pointer-events:none;}.ant-tabs .ant-tabs-tab{position:relative;display:inline-flex;align-items:center;padding:12px 0;font-size:14px;background:transparent;border:0;outline:none;cursor:pointer;}.ant-tabs .ant-tabs-tab-btn:focus:not(:focus-visible),.ant-tabs .ant-tabs-tab-remove:focus:not(:focus-visible),.ant-tabs .ant-tabs-tab-btn:active,.ant-tabs .ant-tabs-tab-remove:active{color:#075a07;}.ant-tabs .ant-tabs-tab-btn:focus-visible,.ant-tabs .ant-tabs-tab-remove:focus-visible{outline:2px solid #0e340e;outline-offset:1px;transition:outline-offset 0s,outline 0s;}.ant-tabs .ant-tabs-tab-btn{outline:none;transition:all 0.3s;}.ant-tabs .ant-tabs-tab-remove{flex:none;margin-right:-4px;margin-left:8px;color:rgba(255, 255, 255, 0.45);font-size:12px;background:transparent;border:none;outline:none;cursor:pointer;transition:all 0.3s;}.ant-tabs .ant-tabs-tab-remove:hover{color:rgba(255, 255, 255, 0.85);}.ant-tabs .ant-tabs-tab:hover{color:#198016;}.ant-tabs .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn{color:#037003;text-shadow:0 0 0.25px currentcolor;}.ant-tabs .ant-tabs-tab.ant-tabs-tab-disabled{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;}.ant-tabs .ant-tabs-tab.ant-tabs-tab-disabled .ant-tabs-tab-btn:focus,.ant-tabs .ant-tabs-tab.ant-tabs-tab-disabled .ant-tabs-remove:focus,.ant-tabs .ant-tabs-tab.ant-tabs-tab-disabled .ant-tabs-tab-btn:active,.ant-tabs .ant-tabs-tab.ant-tabs-tab-disabled .ant-tabs-remove:active{color:rgba(255, 255, 255, 0.25);}.ant-tabs .ant-tabs-tab .ant-tabs-tab-remove .anticon{margin:0;}.ant-tabs .ant-tabs-tab .anticon{margin-right:12px;}.ant-tabs .ant-tabs-tab+.ant-tabs-tab{margin:0 0 0 32px;}.ant-tabs .ant-tabs-content{position:relative;display:flex;width:100%;}.ant-tabs .ant-tabs-content-animated{transition:margin 0.3s;}.ant-tabs .ant-tabs-content-holder{flex:auto;min-width:0;min-height:0;}.ant-tabs .ant-tabs-tabpane{outline:none;flex:none;width:100%;}.ant-tabs-centered >.ant-tabs-nav .ant-tabs-nav-wrap:not([class*='.ant-tabs-nav-wrap-ping']),.ant-tabs-centered >div>.ant-tabs-nav .ant-tabs-nav-wrap:not([class*='.ant-tabs-nav-wrap-ping']){justify-content:center;}.ant-tabs .ant-tabs-switch-appear,.ant-tabs .ant-tabs-switch-enter{transition:none;}.ant-tabs .ant-tabs-switch-appear-start,.ant-tabs .ant-tabs-switch-enter-start{opacity:0;}.ant-tabs .ant-tabs-switch-appear-active,.ant-tabs .ant-tabs-switch-enter-active{opacity:1;transition:opacity 0.3s;}.ant-tabs .ant-tabs-switch-leave{position:absolute;transition:none;inset:0;}.ant-tabs .ant-tabs-switch-leave-start{opacity:1;}.ant-tabs .ant-tabs-switch-leave-active{opacity:0;transition:opacity 0.3s;}.ant-slide-up-enter,.ant-slide-up-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-slide-up-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-slide-up-enter.ant-slide-up-enter-active,.ant-slide-up-appear.ant-slide-up-appear-active{animation-name:antSlideUpIn;animation-play-state:running;}.ant-slide-up-leave.ant-slide-up-leave-active{animation-name:antSlideUpOut;animation-play-state:running;pointer-events:none;}.ant-slide-up-enter,.ant-slide-up-appear{transform:scale(0);transform-origin:0% 0%;opacity:0;animation-timing-function:cubic-bezier(0.23, 1, 0.32, 1);}.ant-slide-up-leave{animation-timing-function:cubic-bezier(0.755, 0.05, 0.855, 0.06);}.ant-slide-down-enter,.ant-slide-down-appear{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-slide-down-leave{animation-duration:0.2s;animation-fill-mode:both;animation-play-state:paused;}.ant-slide-down-enter.ant-slide-down-enter-active,.ant-slide-down-appear.ant-slide-down-appear-active{animation-name:antSlideDownIn;animation-play-state:running;}.ant-slide-down-leave.ant-slide-down-leave-active{animation-name:antSlideDownOut;animation-play-state:running;pointer-events:none;}.ant-slide-down-enter,.ant-slide-down-appear{transform:scale(0);transform-origin:0% 0%;opacity:0;animation-timing-function:cubic-bezier(0.23, 1, 0.32, 1);}.ant-slide-down-leave{animation-timing-function:cubic-bezier(0.755, 0.05, 0.855, 0.06);}[class^=\\"ant-tag\\"],[class*=\\" ant-tag\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-tag\\"]::before,[class*=\\" ant-tag\\"]::before,[class^=\\"ant-tag\\"]::after,[class*=\\" ant-tag\\"]::after{box-sizing:border-box;}[class^=\\"ant-tag\\"] [class^=\\"ant-tag\\"],[class*=\\" ant-tag\\"] [class^=\\"ant-tag\\"],[class^=\\"ant-tag\\"] [class*=\\" ant-tag\\"],[class*=\\" ant-tag\\"] [class*=\\" ant-tag\\"]{box-sizing:border-box;}[class^=\\"ant-tag\\"] [class^=\\"ant-tag\\"]::before,[class*=\\" ant-tag\\"] [class^=\\"ant-tag\\"]::before,[class^=\\"ant-tag\\"] [class*=\\" ant-tag\\"]::before,[class*=\\" ant-tag\\"] [class*=\\" ant-tag\\"]::before,[class^=\\"ant-tag\\"] [class^=\\"ant-tag\\"]::after,[class*=\\" ant-tag\\"] [class^=\\"ant-tag\\"]::after,[class^=\\"ant-tag\\"] [class*=\\" ant-tag\\"]::after,[class*=\\" ant-tag\\"] [class*=\\" ant-tag\\"]::after{box-sizing:border-box;}.ant-tag{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:12px;line-height:20px;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:inline-block;height:auto;margin-inline-end:8px;padding-inline:7px;white-space:nowrap;background:rgba(255, 255, 255, 0.04);border:1px solid #424242;border-radius:4px;opacity:1;transition:all 0.2s;text-align:start;}.ant-tag.ant-tag-rtl{direction:rtl;}.ant-tag,.ant-tag a,.ant-tag a:hover{color:rgba(255, 255, 255, 0.85);}.ant-tag .ant-tag-close-icon{margin-inline-start:3px;color:rgba(255, 255, 255, 0.45);font-size:10px;cursor:pointer;transition:all 0.2s;}.ant-tag .ant-tag-close-icon:hover{color:rgba(255, 255, 255, 0.85);}.ant-tag.ant-tag-has-color{border-color:transparent;}.ant-tag.ant-tag-has-color,.ant-tag.ant-tag-has-color a,.ant-tag.ant-tag-has-color a:hover,.ant-tag.ant-tag-has-color .anticon-close,.ant-tag.ant-tag-has-color .anticon-close:hover{color:#fff;}.ant-tag-checkable{background-color:transparent;border-color:transparent;cursor:pointer;}.ant-tag-checkable:not(.ant-tag-checkable-checked):hover{color:#037003;background-color:rgba(255, 255, 255, 0.12);}.ant-tag-checkable:active,.ant-tag-checkable-checked{color:#fff;}.ant-tag-checkable-checked{background-color:#037003;}.ant-tag-checkable-checked:hover{background-color:#198016;}.ant-tag-checkable:active{background-color:#075a07;}.ant-tag-hidden{display:none;}.ant-tag >.anticon+span,.ant-tag >span+.anticon{margin-inline-start:7px;}.ant-tag-borderless{border-color:transparent;background:rgba(255, 255, 255, 0.08);}.ant-tag-blue{color:#3c89e8;background:#111a2c;border-color:#15325b;}.ant-tag-blue-inverse{color:#fff;background:#1668dc;border-color:#1668dc;}.ant-tag-blue.ant-tag-borderless{border-color:transparent;}.ant-tag-purple{color:#854eca;background:#1a1325;border-color:#301c4d;}.ant-tag-purple-inverse{color:#fff;background:#642ab5;border-color:#642ab5;}.ant-tag-purple.ant-tag-borderless{border-color:transparent;}.ant-tag-cyan{color:#33bcb7;background:#112123;border-color:#144848;}.ant-tag-cyan-inverse{color:#fff;background:#13a8a8;border-color:#13a8a8;}.ant-tag-cyan.ant-tag-borderless{border-color:transparent;}.ant-tag-green{color:#6abe39;background:#162312;border-color:#274916;}.ant-tag-green-inverse{color:#fff;background:#49aa19;border-color:#49aa19;}.ant-tag-green.ant-tag-borderless{border-color:transparent;}.ant-tag-magenta{color:#e0529c;background:#291321;border-color:#551c3b;}.ant-tag-magenta-inverse{color:#fff;background:#cb2b83;border-color:#cb2b83;}.ant-tag-magenta.ant-tag-borderless{border-color:transparent;}.ant-tag-pink{color:#e0529c;background:#291321;border-color:#551c3b;}.ant-tag-pink-inverse{color:#fff;background:#cb2b83;border-color:#cb2b83;}.ant-tag-pink.ant-tag-borderless{border-color:transparent;}.ant-tag-red{color:#e84749;background:#2a1215;border-color:#58181c;}.ant-tag-red-inverse{color:#fff;background:#d32029;border-color:#d32029;}.ant-tag-red.ant-tag-borderless{border-color:transparent;}.ant-tag-orange{color:#e89a3c;background:#2b1d11;border-color:#593815;}.ant-tag-orange-inverse{color:#fff;background:#d87a16;border-color:#d87a16;}.ant-tag-orange.ant-tag-borderless{border-color:transparent;}.ant-tag-yellow{color:#e8d639;background:#2b2611;border-color:#595014;}.ant-tag-yellow-inverse{color:#fff;background:#d8bd14;border-color:#d8bd14;}.ant-tag-yellow.ant-tag-borderless{border-color:transparent;}.ant-tag-volcano{color:#e87040;background:#2b1611;border-color:#592716;}.ant-tag-volcano-inverse{color:#fff;background:#d84a1b;border-color:#d84a1b;}.ant-tag-volcano.ant-tag-borderless{border-color:transparent;}.ant-tag-geekblue{color:#5273e0;background:#131629;border-color:#1c2755;}.ant-tag-geekblue-inverse{color:#fff;background:#2b4acb;border-color:#2b4acb;}.ant-tag-geekblue.ant-tag-borderless{border-color:transparent;}.ant-tag-lime{color:#a9d134;background:#1f2611;border-color:#3e4f13;}.ant-tag-lime-inverse{color:#fff;background:#8bbb11;border-color:#8bbb11;}.ant-tag-lime.ant-tag-borderless{border-color:transparent;}.ant-tag-gold{color:#e8b339;background:#2b2111;border-color:#594214;}.ant-tag-gold-inverse{color:#fff;background:#d89614;border-color:#d89614;}.ant-tag-gold.ant-tag-borderless{border-color:transparent;}.ant-tag-success{color:#49aa19;background:#162312;border-color:#274916;}.ant-tag-success.ant-tag-borderless{border-color:transparent;}.ant-tag-processing{color:#1668dc;background:#111a2c;border-color:#15325b;}.ant-tag-processing.ant-tag-borderless{border-color:transparent;}.ant-tag-error{color:#dc4446;background:#2c1618;border-color:#5b2526;}.ant-tag-error.ant-tag-borderless{border-color:transparent;}.ant-tag-warning{color:#d89614;background:#2b2111;border-color:#594214;}.ant-tag-warning.ant-tag-borderless{border-color:transparent;}[class^=\\"ant-timeline\\"],[class*=\\" ant-timeline\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-timeline\\"]::before,[class*=\\" ant-timeline\\"]::before,[class^=\\"ant-timeline\\"]::after,[class*=\\" ant-timeline\\"]::after{box-sizing:border-box;}[class^=\\"ant-timeline\\"] [class^=\\"ant-timeline\\"],[class*=\\" ant-timeline\\"] [class^=\\"ant-timeline\\"],[class^=\\"ant-timeline\\"] [class*=\\" ant-timeline\\"],[class*=\\" ant-timeline\\"] [class*=\\" ant-timeline\\"]{box-sizing:border-box;}[class^=\\"ant-timeline\\"] [class^=\\"ant-timeline\\"]::before,[class*=\\" ant-timeline\\"] [class^=\\"ant-timeline\\"]::before,[class^=\\"ant-timeline\\"] [class*=\\" ant-timeline\\"]::before,[class*=\\" ant-timeline\\"] [class*=\\" ant-timeline\\"]::before,[class^=\\"ant-timeline\\"] [class^=\\"ant-timeline\\"]::after,[class*=\\" ant-timeline\\"] [class^=\\"ant-timeline\\"]::after,[class^=\\"ant-timeline\\"] [class*=\\" ant-timeline\\"]::after,[class*=\\" ant-timeline\\"] [class*=\\" ant-timeline\\"]::after{box-sizing:border-box;}.ant-timeline{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';}.ant-timeline .ant-timeline-item{position:relative;margin:0;padding-bottom:20px;font-size:14px;list-style:none;}.ant-timeline .ant-timeline-item-tail{position:absolute;inset-block-start:10px;inset-inline-start:4px;height:calc(100% - 10px);border-inline-start:2px solid rgba(253, 253, 253, 0.12);}.ant-timeline .ant-timeline-item-pending .ant-timeline-item-head{font-size:12px;background-color:transparent;}.ant-timeline .ant-timeline-item-pending .ant-timeline-item-tail{display:none;}.ant-timeline .ant-timeline-item-head{position:absolute;width:10px;height:10px;background-color:#141414;border:3px solid transparent;border-radius:50%;}.ant-timeline .ant-timeline-item-head-blue{color:#037003;border-color:#037003;}.ant-timeline .ant-timeline-item-head-red{color:#dc4446;border-color:#dc4446;}.ant-timeline .ant-timeline-item-head-green{color:#49aa19;border-color:#49aa19;}.ant-timeline .ant-timeline-item-head-gray{color:rgba(255, 255, 255, 0.25);border-color:rgba(255, 255, 255, 0.25);}.ant-timeline .ant-timeline-item-head-custom{position:absolute;inset-block-start:5px;inset-inline-start:5px;width:auto;height:auto;margin-block-start:0;padding-block:4px;line-height:1;text-align:center;border:0;border-radius:0;transform:translate(-50%, -50%);}.ant-timeline .ant-timeline-item-content{position:relative;inset-block-start:-7px;margin-inline-start:26px;margin-inline-end:0;margin-block-start:0;margin-block-end:0;word-break:break-word;}.ant-timeline .ant-timeline-item-last >.ant-timeline-item-tail{display:none;}.ant-timeline .ant-timeline-item-last >.ant-timeline-item-content{min-height:48px;}.ant-timeline.ant-timeline-alternate .ant-timeline-item-tail,.ant-timeline.ant-timeline-right .ant-timeline-item-tail,.ant-timeline.ant-timeline-label .ant-timeline-item-tail,.ant-timeline.ant-timeline-alternate .ant-timeline-item-head,.ant-timeline.ant-timeline-right .ant-timeline-item-head,.ant-timeline.ant-timeline-label .ant-timeline-item-head,.ant-timeline.ant-timeline-alternate .ant-timeline-item-head-custom,.ant-timeline.ant-timeline-right .ant-timeline-item-head-custom,.ant-timeline.ant-timeline-label .ant-timeline-item-head-custom{inset-inline-start:50%;}.ant-timeline.ant-timeline-alternate .ant-timeline-item-head,.ant-timeline.ant-timeline-right .ant-timeline-item-head,.ant-timeline.ant-timeline-label .ant-timeline-item-head{margin-inline-start:-4px;}.ant-timeline.ant-timeline-alternate .ant-timeline-item-head-custom,.ant-timeline.ant-timeline-right .ant-timeline-item-head-custom,.ant-timeline.ant-timeline-label .ant-timeline-item-head-custom{margin-inline-start:1px;}.ant-timeline.ant-timeline-alternate .ant-timeline-item-left .ant-timeline-item-content,.ant-timeline.ant-timeline-right .ant-timeline-item-left .ant-timeline-item-content,.ant-timeline.ant-timeline-label .ant-timeline-item-left .ant-timeline-item-content{inset-inline-start:calc(50% - 4px);width:calc(50% - 12px);text-align:start;}.ant-timeline.ant-timeline-alternate .ant-timeline-item-right .ant-timeline-item-content,.ant-timeline.ant-timeline-right .ant-timeline-item-right .ant-timeline-item-content,.ant-timeline.ant-timeline-label .ant-timeline-item-right .ant-timeline-item-content{width:calc(50% - 12px);margin:0;text-align:end;}.ant-timeline.ant-timeline-right .ant-timeline-item-right .ant-timeline-item-tail,.ant-timeline.ant-timeline-right .ant-timeline-item-right .ant-timeline-item-head,.ant-timeline.ant-timeline-right .ant-timeline-item-right .ant-timeline-item-head-custom{inset-inline-start:calc(100% - 6px);}.ant-timeline.ant-timeline-right .ant-timeline-item-right .ant-timeline-item-content{width:calc(100% - 18px);}.ant-timeline.ant-timeline-pending .ant-timeline-item-last .ant-timeline-item-tail{display:block;height:calc(100% - 16px);border-inline-start:2px dotted rgba(253, 253, 253, 0.12);}.ant-timeline.ant-timeline-reverse .ant-timeline-item-last .ant-timeline-item-tail{display:none;}.ant-timeline.ant-timeline-reverse .ant-timeline-item-pending .ant-timeline-item-tail{inset-block-start:16px;display:block;height:calc(100% - 16px);border-inline-start:2px dotted rgba(253, 253, 253, 0.12);}.ant-timeline.ant-timeline-reverse .ant-timeline-item-pending .ant-timeline-item-content{min-height:48px;}.ant-timeline.ant-timeline-label .ant-timeline-item-label{position:absolute;inset-block-start:-6px;width:calc(50% - 12px);text-align:end;}.ant-timeline.ant-timeline-label .ant-timeline-item-right .ant-timeline-item-label{inset-inline-start:calc(50% + 12px);width:calc(50% - 12px);text-align:start;}.ant-timeline-rtl{direction:rtl;}.ant-timeline-rtl .ant-timeline-item-head-custom{transform:translate(50%, -50%);}[class^=\\"ant-typography\\"],[class*=\\" ant-typography\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-typography\\"]::before,[class*=\\" ant-typography\\"]::before,[class^=\\"ant-typography\\"]::after,[class*=\\" ant-typography\\"]::after{box-sizing:border-box;}[class^=\\"ant-typography\\"] [class^=\\"ant-typography\\"],[class*=\\" ant-typography\\"] [class^=\\"ant-typography\\"],[class^=\\"ant-typography\\"] [class*=\\" ant-typography\\"],[class*=\\" ant-typography\\"] [class*=\\" ant-typography\\"]{box-sizing:border-box;}[class^=\\"ant-typography\\"] [class^=\\"ant-typography\\"]::before,[class*=\\" ant-typography\\"] [class^=\\"ant-typography\\"]::before,[class^=\\"ant-typography\\"] [class*=\\" ant-typography\\"]::before,[class*=\\" ant-typography\\"] [class*=\\" ant-typography\\"]::before,[class^=\\"ant-typography\\"] [class^=\\"ant-typography\\"]::after,[class*=\\" ant-typography\\"] [class^=\\"ant-typography\\"]::after,[class^=\\"ant-typography\\"] [class*=\\" ant-typography\\"]::after,[class*=\\" ant-typography\\"] [class*=\\" ant-typography\\"]::after{box-sizing:border-box;}.ant-typography{color:rgba(255, 255, 255, 0.85);word-break:break-word;line-height:1.5714285714285714;}.ant-typography.ant-typography-secondary{color:rgba(255, 255, 255, 0.45);}.ant-typography.ant-typography-success{color:#49aa19;}.ant-typography.ant-typography-warning{color:#d89614;}.ant-typography.ant-typography-danger{color:#dc4446;}a.ant-typography.ant-typography-danger:active,a.ant-typography.ant-typography-danger:focus{color:#ad393a;}a.ant-typography.ant-typography-danger:hover{color:#e86e6b;}.ant-typography.ant-typography-disabled{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;user-select:none;}div.ant-typography,.ant-typography p{margin-bottom:1em;}h1.ant-typography,div.ant-typography-h1,div.ant-typography-h1>textarea,.ant-typography h1{margin-bottom:0.5em;color:rgba(255, 255, 255, 0.85);font-weight:600;font-size:38px;line-height:1.2105263157894737;}h2.ant-typography,div.ant-typography-h2,div.ant-typography-h2>textarea,.ant-typography h2{margin-bottom:0.5em;color:rgba(255, 255, 255, 0.85);font-weight:600;font-size:30px;line-height:1.2666666666666666;}h3.ant-typography,div.ant-typography-h3,div.ant-typography-h3>textarea,.ant-typography h3{margin-bottom:0.5em;color:rgba(255, 255, 255, 0.85);font-weight:600;font-size:24px;line-height:1.3333333333333333;}h4.ant-typography,div.ant-typography-h4,div.ant-typography-h4>textarea,.ant-typography h4{margin-bottom:0.5em;color:rgba(255, 255, 255, 0.85);font-weight:600;font-size:20px;line-height:1.4;}h5.ant-typography,div.ant-typography-h5,div.ant-typography-h5>textarea,.ant-typography h5{margin-bottom:0.5em;color:rgba(255, 255, 255, 0.85);font-weight:600;font-size:16px;line-height:1.5;}.ant-typography+h1.ant-typography,.ant-typography+h2.ant-typography,.ant-typography+h3.ant-typography,.ant-typography+h4.ant-typography,.ant-typography+h5.ant-typography{margin-top:1.2em;}.ant-typography div +h1,.ant-typography ul +h1,.ant-typography li +h1,.ant-typography p +h1,.ant-typography h1 +h1,.ant-typography h2 +h1,.ant-typography h3 +h1,.ant-typography h4 +h1,.ant-typography h5 +h1,.ant-typography div +h2,.ant-typography ul +h2,.ant-typography li +h2,.ant-typography p +h2,.ant-typography h1 +h2,.ant-typography h2 +h2,.ant-typography h3 +h2,.ant-typography h4 +h2,.ant-typography h5 +h2,.ant-typography div +h3,.ant-typography ul +h3,.ant-typography li +h3,.ant-typography p +h3,.ant-typography h1 +h3,.ant-typography h2 +h3,.ant-typography h3 +h3,.ant-typography h4 +h3,.ant-typography h5 +h3,.ant-typography div +h4,.ant-typography ul +h4,.ant-typography li +h4,.ant-typography p +h4,.ant-typography h1 +h4,.ant-typography h2 +h4,.ant-typography h3 +h4,.ant-typography h4 +h4,.ant-typography h5 +h4,.ant-typography div +h5,.ant-typography ul +h5,.ant-typography li +h5,.ant-typography p +h5,.ant-typography h1 +h5,.ant-typography h2 +h5,.ant-typography h3 +h5,.ant-typography h4 +h5,.ant-typography h5 +h5{margin-top:1.2em;}.ant-typography code{margin:0 0.2em;padding-inline:0.4em;padding-block:0.2em 0.1em;font-size:85%;background:rgba(150, 150, 150, 0.1);border:1px solid rgba(100, 100, 100, 0.2);border-radius:3px;}.ant-typography kbd{margin:0 0.2em;padding-inline:0.4em;padding-block:0.15em 0.1em;font-size:90%;background:rgba(150, 150, 150, 0.06);border:1px solid rgba(100, 100, 100, 0.2);border-bottom-width:2px;border-radius:3px;}.ant-typography mark{padding:0;background-color:#ffe58f;}.ant-typography u,.ant-typography ins{text-decoration:underline;text-decoration-skip-ink:auto;}.ant-typography s,.ant-typography del{text-decoration:line-through;}.ant-typography strong{font-weight:600;}.ant-typography ul,.ant-typography ol{margin-inline:0;margin-block:0 1em;padding:0;}.ant-typography ul li,.ant-typography ol li{margin-inline:20px 0;margin-block:0;padding-inline:4px 0;padding-block:0;}.ant-typography ul{list-style-type:circle;}.ant-typography ul ul{list-style-type:disc;}.ant-typography ol{list-style-type:decimal;}.ant-typography pre,.ant-typography blockquote{margin:1em 0;}.ant-typography pre{padding:0.4em 0.6em;white-space:pre-wrap;word-wrap:break-word;background:rgba(150, 150, 150, 0.1);border:1px solid rgba(100, 100, 100, 0.2);border-radius:3px;}.ant-typography pre code{display:inline;margin:0;padding:0;font-size:inherit;font-family:inherit;background:transparent;border:0;}.ant-typography blockquote{padding-inline:0.6em 0;padding-block:0;border-inline-start:4px solid rgba(100, 100, 100, 0.2);opacity:0.85;}a.ant-typography,.ant-typography a{color:#1668dc;text-decoration:none;outline:none;cursor:pointer;transition:color 0.3s;}a.ant-typography:focus,.ant-typography a:focus,a.ant-typography:hover,.ant-typography a:hover{color:#15417e;}a.ant-typography:active,.ant-typography a:active{color:#1554ad;}a.ant-typography:active,.ant-typography a:active,a.ant-typography:hover,.ant-typography a:hover{text-decoration:none;}a.ant-typography[disabled],.ant-typography a[disabled],a.ant-typography.ant-typography-disabled,.ant-typography a.ant-typography-disabled{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;}a.ant-typography[disabled]:active,.ant-typography a[disabled]:active,a.ant-typography.ant-typography-disabled:active,.ant-typography a.ant-typography-disabled:active,a.ant-typography[disabled]:hover,.ant-typography a[disabled]:hover,a.ant-typography.ant-typography-disabled:hover,.ant-typography a.ant-typography-disabled:hover{color:rgba(255, 255, 255, 0.25);}a.ant-typography[disabled]:active,.ant-typography a[disabled]:active,a.ant-typography.ant-typography-disabled:active,.ant-typography a.ant-typography-disabled:active{pointer-events:none;}.ant-typography .ant-typography-expand,.ant-typography .ant-typography-edit,.ant-typography .ant-typography-copy{color:#1668dc;text-decoration:none;outline:none;cursor:pointer;transition:color 0.3s;margin-inline-start:4px;}.ant-typography .ant-typography-expand:focus,.ant-typography .ant-typography-edit:focus,.ant-typography .ant-typography-copy:focus,.ant-typography .ant-typography-expand:hover,.ant-typography .ant-typography-edit:hover,.ant-typography .ant-typography-copy:hover{color:#15417e;}.ant-typography .ant-typography-expand:active,.ant-typography .ant-typography-edit:active,.ant-typography .ant-typography-copy:active{color:#1554ad;}.ant-typography-edit-content{position:relative;}div.ant-typography-edit-content{inset-inline-start:-12px;margin-top:-5px;margin-bottom:calc(1em - 5px);}.ant-typography-edit-content .ant-typography-edit-content-confirm{position:absolute;inset-inline-end:10px;inset-block-end:8px;color:rgba(255, 255, 255, 0.45);font-weight:normal;font-size:14px;font-style:normal;pointer-events:none;}.ant-typography-edit-content textarea{margin:0!important;-moz-transition:none;height:1em;}.ant-typography-copy-success,.ant-typography-copy-success:hover,.ant-typography-copy-success:focus{color:#49aa19;}a.ant-typography-ellipsis,span.ant-typography-ellipsis{display:inline-block;max-width:100%;}.ant-typography-single-line{white-space:nowrap;}.ant-typography-ellipsis-single-line{overflow:hidden;text-overflow:ellipsis;}a.ant-typography-ellipsis-single-line,span.ant-typography-ellipsis-single-line{vertical-align:bottom;}.ant-typography-ellipsis-multiple-line{display:-webkit-box;overflow:hidden;-webkit-line-clamp:3;-webkit-box-orient:vertical;}.ant-typography-rtl{direction:rtl;}[class^=\\"ant-upload\\"],[class*=\\" ant-upload\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-upload\\"]::before,[class*=\\" ant-upload\\"]::before,[class^=\\"ant-upload\\"]::after,[class*=\\" ant-upload\\"]::after{box-sizing:border-box;}[class^=\\"ant-upload\\"] [class^=\\"ant-upload\\"],[class*=\\" ant-upload\\"] [class^=\\"ant-upload\\"],[class^=\\"ant-upload\\"] [class*=\\" ant-upload\\"],[class*=\\" ant-upload\\"] [class*=\\" ant-upload\\"]{box-sizing:border-box;}[class^=\\"ant-upload\\"] [class^=\\"ant-upload\\"]::before,[class*=\\" ant-upload\\"] [class^=\\"ant-upload\\"]::before,[class^=\\"ant-upload\\"] [class*=\\" ant-upload\\"]::before,[class*=\\" ant-upload\\"] [class*=\\" ant-upload\\"]::before,[class^=\\"ant-upload\\"] [class^=\\"ant-upload\\"]::after,[class*=\\" ant-upload\\"] [class^=\\"ant-upload\\"]::after,[class^=\\"ant-upload\\"] [class*=\\" ant-upload\\"]::after,[class*=\\" ant-upload\\"] [class*=\\" ant-upload\\"]::after{box-sizing:border-box;}.ant-upload-wrapper{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';}.ant-upload-wrapper .ant-upload{outline:0;}.ant-upload-wrapper .ant-upload input[type='file']{cursor:pointer;}.ant-upload-wrapper .ant-upload-select{display:inline-block;}.ant-upload-wrapper .ant-upload-disabled{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;}.ant-upload-wrapper .ant-upload-drag{position:relative;width:100%;height:100%;text-align:center;background:rgba(255, 255, 255, 0.04);border:1px dashed #424242;border-radius:8px;cursor:pointer;transition:border-color 0.3s;}.ant-upload-wrapper .ant-upload-drag .ant-upload{padding:16px 0;}.ant-upload-wrapper .ant-upload-drag .ant-upload-btn{display:table;width:100%;height:100%;outline:none;}.ant-upload-wrapper .ant-upload-drag .ant-upload-drag-container{display:table-cell;vertical-align:middle;}.ant-upload-wrapper .ant-upload-drag:not(.ant-upload-disabled):hover{border-color:#198016;}.ant-upload-wrapper .ant-upload-drag p.ant-upload-drag-icon{margin-bottom:16px;}.ant-upload-wrapper .ant-upload-drag p.ant-upload-drag-icon .anticon{color:#037003;font-size:48px;}.ant-upload-wrapper .ant-upload-drag p.ant-upload-text{margin:0 0 4px;color:rgba(255, 255, 255, 0.85);font-size:16px;}.ant-upload-wrapper .ant-upload-drag p.ant-upload-hint{color:rgba(255, 255, 255, 0.45);font-size:14px;}.ant-upload-wrapper .ant-upload-drag.ant-upload-disabled{cursor:not-allowed;}.ant-upload-wrapper .ant-upload-drag.ant-upload-disabled p.ant-upload-drag-icon .anticon,.ant-upload-wrapper .ant-upload-drag.ant-upload-disabled p.ant-upload-text,.ant-upload-wrapper .ant-upload-drag.ant-upload-disabled p.ant-upload-hint{color:rgba(255, 255, 255, 0.25);}.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture .ant-upload-list-item,.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item{position:relative;height:66px;padding:8px;border:1px solid #424242;border-radius:8px;}.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture .ant-upload-list-item:hover,.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item:hover{background:transparent;}.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture .ant-upload-list-item .ant-upload-list-item-thumbnail,.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item .ant-upload-list-item-thumbnail{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:48px;height:48px;line-height:60px;text-align:center;flex:none;}.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture .ant-upload-list-item .ant-upload-list-item-thumbnail .anticon,.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item .ant-upload-list-item-thumbnail .anticon{font-size:30px;color:#037003;}.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture .ant-upload-list-item .ant-upload-list-item-thumbnail img,.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item .ant-upload-list-item-thumbnail img{display:block;width:100%;height:100%;overflow:hidden;}.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture .ant-upload-list-item .ant-upload-list-item-progress,.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item .ant-upload-list-item-progress{bottom:12px;width:calc(100% - 24px);margin-top:0;padding-inline-start:56px;}.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture .ant-upload-list-item-error,.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-error{border-color:#dc4446;}.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#e6f7ff'],.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#e6f7ff']{fill:#2c1618;}.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#1890ff'],.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#1890ff']{fill:#dc4446;}.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture .ant-upload-list-item-uploading,.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-uploading{border-style:dashed;}.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture .ant-upload-list-item-uploading .ant-upload-list-item-name,.ant-upload-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-uploading .ant-upload-list-item-name{margin-bottom:12px;}.ant-upload-wrapper.ant-upload-picture-card-wrapper{display:inline-block;width:100%;}.ant-upload-wrapper.ant-upload-picture-card-wrapper::before{display:table;content:\\"\\";}.ant-upload-wrapper.ant-upload-picture-card-wrapper::after{display:table;clear:both;content:\\"\\";}.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload.ant-upload-select{width:102px;height:102px;margin-inline-end:8px;margin-bottom:8px;text-align:center;vertical-align:top;background-color:rgba(255, 255, 255, 0.04);border:1px dashed #424242;border-radius:8px;cursor:pointer;transition:border-color 0.3s;}.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload.ant-upload-select >.ant-upload{display:flex;align-items:center;justify-content:center;height:100%;text-align:center;}.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload.ant-upload-select:not(.ant-upload-disabled):hover{border-color:#037003;}.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-container{display:inline-block;width:102px;height:102px;margin-block:0 8px;margin-inline:0 8px;vertical-align:top;}.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card::after{display:none;}.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item{height:100%;margin:0;}.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item::before{position:absolute;z-index:1;width:calc(100% - 16px);height:calc(100% - 16px);background-color:rgba(0, 0, 0, 0.45);opacity:0;transition:all 0.3s;content:\\" \\";}.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item:hover::before,.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item:hover .ant-upload-list-item-actions{opacity:1;}.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-actions{position:absolute;inset-inline-start:0;z-index:10;width:100%;white-space:nowrap;text-align:center;opacity:0;transition:all 0.3s;}.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-eye,.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-download,.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-delete{z-index:10;width:16px;margin:0 4px;font-size:16px;cursor:pointer;transition:all 0.3s;}.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-eye,.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-actions:hover .anticon-eye,.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-download,.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-actions:hover .anticon-download,.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-delete,.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-actions:hover .anticon-delete{color:rgba(255, 255, 255, 0.65);}.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-eye:hover,.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-actions:hover .anticon-eye:hover,.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-download:hover,.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-actions:hover .anticon-download:hover,.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-delete:hover,.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-actions:hover .anticon-delete:hover{color:#fff;}.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-thumbnail,.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-thumbnail img{position:static;display:block;width:100%;height:100%;object-fit:contain;}.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-name{display:none;text-align:center;}.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-file+.ant-upload-list-item-name{position:absolute;bottom:16px;display:block;width:calc(100% - 16px);}.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-uploading.ant-upload-list-item{background-color:rgba(255, 255, 255, 0.04);}.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-uploading::before,.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-uploading .anticon-eye,.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-uploading .anticon-download,.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-uploading .anticon-delete{display:none;}.ant-upload-wrapper.ant-upload-picture-card-wrapper .ant-upload-list.ant-upload-list-picture-card .ant-upload-list-item-progress{bottom:32px;width:calc(100% - 16px);padding-inline-start:0;}.ant-upload-wrapper .ant-upload-list{line-height:1.5714285714285714;}.ant-upload-wrapper .ant-upload-list::before{display:table;content:\\"\\";}.ant-upload-wrapper .ant-upload-list::after{display:table;clear:both;content:\\"\\";}.ant-upload-wrapper .ant-upload-list .ant-upload-list-item{position:relative;height:22px;margin-top:8px;font-size:14px;display:flex;align-items:center;transition:background-color 0.3s;}.ant-upload-wrapper .ant-upload-list .ant-upload-list-item:hover{background-color:rgba(255, 255, 255, 0.08);}.ant-upload-wrapper .ant-upload-list .ant-upload-list-item .ant-upload-list-item-name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding:0 8px;line-height:1.5714285714285714;flex:auto;transition:all 0.3s;}.ant-upload-wrapper .ant-upload-list .ant-upload-list-item .ant-upload-list-item-actions .ant-upload-list-item-action{opacity:0;}.ant-upload-wrapper .ant-upload-list .ant-upload-list-item .ant-upload-list-item-actions .ant-upload-list-item-action.ant-btn-sm{height:22px;border:0;line-height:1;}.ant-upload-wrapper .ant-upload-list .ant-upload-list-item .ant-upload-list-item-actions .ant-upload-list-item-action.ant-btn-sm >span{transform:scale(1);}.ant-upload-wrapper .ant-upload-list .ant-upload-list-item .ant-upload-list-item-actions .ant-upload-list-item-action:focus,.ant-upload-wrapper .ant-upload-list .ant-upload-list-item .ant-upload-list-item-actions.picture .ant-upload-list-item-action{opacity:1;}.ant-upload-wrapper .ant-upload-list .ant-upload-list-item .ant-upload-list-item-actions .anticon{color:rgba(255, 255, 255, 0.45);transition:all 0.3s;}.ant-upload-wrapper .ant-upload-list .ant-upload-list-item .ant-upload-list-item-actions:hover .anticon{color:rgba(255, 255, 255, 0.85);}.ant-upload-wrapper .ant-upload-list .ant-upload-list-item .ant-upload-icon .anticon{color:rgba(255, 255, 255, 0.45);font-size:14px;}.ant-upload-wrapper .ant-upload-list .ant-upload-list-item .ant-upload-list-item-progress{position:absolute;bottom:-12px;width:100%;padding-inline-start:22px;font-size:14px;line-height:0;pointer-events:none;}.ant-upload-wrapper .ant-upload-list .ant-upload-list-item .ant-upload-list-item-progress >div{margin:0;}.ant-upload-wrapper .ant-upload-list .ant-upload-list-item:hover .ant-upload-list-item-action{opacity:1;color:rgba(255, 255, 255, 0.85);}.ant-upload-wrapper .ant-upload-list .ant-upload-list-item-error{color:#dc4446;}.ant-upload-wrapper .ant-upload-list .ant-upload-list-item-error .ant-upload-list-item-name,.ant-upload-wrapper .ant-upload-list .ant-upload-list-item-error .ant-upload-icon .anticon{color:#dc4446;}.ant-upload-wrapper .ant-upload-list .ant-upload-list-item-error .ant-upload-list-item-actions .anticon,.ant-upload-wrapper .ant-upload-list .ant-upload-list-item-error .ant-upload-list-item-actions .anticon:hover{color:#dc4446;}.ant-upload-wrapper .ant-upload-list .ant-upload-list-item-error .ant-upload-list-item-actions .ant-upload-list-item-action{opacity:1;}.ant-upload-wrapper .ant-upload-list .ant-upload-list-item-container{transition:opacity 0.3s,height 0.3s;}.ant-upload-wrapper .ant-upload-list .ant-upload-list-item-container::before{display:table;width:0;height:0;content:\\"\\";}.ant-upload-wrapper .ant-upload-animate-inline-appear,.ant-upload-wrapper .ant-upload-animate-inline-enter,.ant-upload-wrapper .ant-upload-animate-inline-leave{animation-duration:0.3s;animation-timing-function:cubic-bezier(0.78, 0.14, 0.15, 0.86);animation-fill-mode:forwards;}.ant-upload-wrapper .ant-upload-animate-inline-appear,.ant-upload-wrapper .ant-upload-animate-inline-enter{animation-name:uploadAnimateInlineIn;}.ant-upload-wrapper .ant-upload-animate-inline-leave{animation-name:uploadAnimateInlineOut;}.ant-upload-rtl{direction:rtl;}.ant-upload .ant-motion-collapse-legacy{overflow:hidden;}.ant-upload .ant-motion-collapse-legacy-active{transition:height 0.2s cubic-bezier(0.645, 0.045, 0.355, 1),opacity 0.2s cubic-bezier(0.645, 0.045, 0.355, 1)!important;}.ant-upload .ant-motion-collapse{overflow:hidden;transition:height 0.2s cubic-bezier(0.645, 0.045, 0.355, 1),opacity 0.2s cubic-bezier(0.645, 0.045, 0.355, 1)!important;}@keyframes uploadAnimateInlineIn{from{width:0;height:0;margin:0;padding:0;opacity:0;}}@keyframes uploadAnimateInlineOut{to{width:0;height:0;margin:0;padding:0;opacity:0;}}[class^=\\"ant-segmented\\"],[class*=\\" ant-segmented\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-segmented\\"]::before,[class*=\\" ant-segmented\\"]::before,[class^=\\"ant-segmented\\"]::after,[class*=\\" ant-segmented\\"]::after{box-sizing:border-box;}[class^=\\"ant-segmented\\"] [class^=\\"ant-segmented\\"],[class*=\\" ant-segmented\\"] [class^=\\"ant-segmented\\"],[class^=\\"ant-segmented\\"] [class*=\\" ant-segmented\\"],[class*=\\" ant-segmented\\"] [class*=\\" ant-segmented\\"]{box-sizing:border-box;}[class^=\\"ant-segmented\\"] [class^=\\"ant-segmented\\"]::before,[class*=\\" ant-segmented\\"] [class^=\\"ant-segmented\\"]::before,[class^=\\"ant-segmented\\"] [class*=\\" ant-segmented\\"]::before,[class*=\\" ant-segmented\\"] [class*=\\" ant-segmented\\"]::before,[class^=\\"ant-segmented\\"] [class^=\\"ant-segmented\\"]::after,[class*=\\" ant-segmented\\"] [class^=\\"ant-segmented\\"]::after,[class^=\\"ant-segmented\\"] [class*=\\" ant-segmented\\"]::after,[class*=\\" ant-segmented\\"] [class*=\\" ant-segmented\\"]::after{box-sizing:border-box;}.ant-segmented{box-sizing:border-box;margin:0;padding:2px;color:rgba(255, 255, 255, 0.65);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:inline-block;background-color:#000000;border-radius:6px;transition:all 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);}.ant-segmented .ant-segmented-group{position:relative;display:flex;align-items:stretch;justify-items:flex-start;width:100%;}.ant-segmented.ant-segmented-rtl{direction:rtl;}.ant-segmented.ant-segmented-block{display:flex;}.ant-segmented.ant-segmented-block .ant-segmented-item{flex:1;min-width:0;}.ant-segmented .ant-segmented-item{position:relative;text-align:center;cursor:pointer;transition:color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);border-radius:4px;}.ant-segmented .ant-segmented-item-selected{background-color:#1f1f1f;box-shadow:0 1px 2px 0 rgba(0, 0, 0, 0.03),0 1px 6px -1px rgba(0, 0, 0, 0.02),0 2px 4px 0 rgba(0, 0, 0, 0.02);color:rgba(255, 255, 255, 0.85);}.ant-segmented .ant-segmented-item::after{content:\\"\\";position:absolute;width:100%;height:100%;top:0;inset-inline-start:0;border-radius:inherit;transition:background-color 0.2s;}.ant-segmented .ant-segmented-item:hover:not(.ant-segmented-item-selected):not(.ant-segmented-item-disabled){color:rgba(255, 255, 255, 0.85);}.ant-segmented .ant-segmented-item:hover:not(.ant-segmented-item-selected):not(.ant-segmented-item-disabled)::after{background-color:rgba(255, 255, 255, 0.12);}.ant-segmented .ant-segmented-item-label{min-height:28px;line-height:28px;padding:0 11px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.ant-segmented .ant-segmented-item-icon+*{margin-inline-start:6px;}.ant-segmented .ant-segmented-item-input{position:absolute;inset-block-start:0;inset-inline-start:0;width:0;height:0;opacity:0;pointer-events:none;}.ant-segmented .ant-segmented-thumb{background-color:#1f1f1f;box-shadow:0 1px 2px 0 rgba(0, 0, 0, 0.03),0 1px 6px -1px rgba(0, 0, 0, 0.02),0 2px 4px 0 rgba(0, 0, 0, 0.02);position:absolute;inset-block-start:0;inset-inline-start:0;width:0;height:100%;padding:4px 0;border-radius:4px;}.ant-segmented .ant-segmented-thumb~.ant-segmented-item:not(.ant-segmented-item-selected):not(.ant-segmented-item-disabled)::after{background-color:transparent;}.ant-segmented.ant-segmented-lg{border-radius:8px;}.ant-segmented.ant-segmented-lg .ant-segmented-item-label{min-height:36px;line-height:36px;padding:0 11px;font-size:16px;}.ant-segmented.ant-segmented-lg .ant-segmented-item,.ant-segmented.ant-segmented-lg .ant-segmented-thumb{border-radius:6px;}.ant-segmented.ant-segmented-sm{border-radius:4px;}.ant-segmented.ant-segmented-sm .ant-segmented-item-label{min-height:20px;line-height:20px;padding:0 7px;}.ant-segmented.ant-segmented-sm .ant-segmented-item,.ant-segmented.ant-segmented-sm .ant-segmented-thumb{border-radius:2px;}.ant-segmented-disabled .ant-segmented-item,.ant-segmented-disabled .ant-segmented-item:hover,.ant-segmented-disabled .ant-segmented-item:focus{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;}.ant-segmented .ant-segmented-item-disabled,.ant-segmented .ant-segmented-item-disabled:hover,.ant-segmented .ant-segmented-item-disabled:focus{color:rgba(255, 255, 255, 0.25);cursor:not-allowed;}.ant-segmented .ant-segmented-thumb-motion-appear-active{transition:transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),width 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);will-change:transform,width;}[class^=\\"ant-qrcode\\"],[class*=\\" ant-qrcode\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-qrcode\\"]::before,[class*=\\" ant-qrcode\\"]::before,[class^=\\"ant-qrcode\\"]::after,[class*=\\" ant-qrcode\\"]::after{box-sizing:border-box;}[class^=\\"ant-qrcode\\"] [class^=\\"ant-qrcode\\"],[class*=\\" ant-qrcode\\"] [class^=\\"ant-qrcode\\"],[class^=\\"ant-qrcode\\"] [class*=\\" ant-qrcode\\"],[class*=\\" ant-qrcode\\"] [class*=\\" ant-qrcode\\"]{box-sizing:border-box;}[class^=\\"ant-qrcode\\"] [class^=\\"ant-qrcode\\"]::before,[class*=\\" ant-qrcode\\"] [class^=\\"ant-qrcode\\"]::before,[class^=\\"ant-qrcode\\"] [class*=\\" ant-qrcode\\"]::before,[class*=\\" ant-qrcode\\"] [class*=\\" ant-qrcode\\"]::before,[class^=\\"ant-qrcode\\"] [class^=\\"ant-qrcode\\"]::after,[class*=\\" ant-qrcode\\"] [class^=\\"ant-qrcode\\"]::after,[class^=\\"ant-qrcode\\"] [class*=\\" ant-qrcode\\"]::after,[class*=\\" ant-qrcode\\"] [class*=\\" ant-qrcode\\"]::after{box-sizing:border-box;}.ant-qrcode{box-sizing:border-box;margin:0;padding:12px;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';display:flex;justify-content:center;align-items:center;background-color:#fff;border-radius:8px;border:1px solid rgba(253, 253, 253, 0.12);position:relative;width:100%;height:100%;overflow:hidden;}.ant-qrcode>.ant-qrcode-mask{position:absolute;inset-block-start:0;inset-inline-start:0;z-index:10;display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%;color:rgba(255, 255, 255, 0.85);line-height:1.5714285714285714;background:rgba(255, 255, 255, 0.96);text-align:center;}.ant-qrcode>.ant-qrcode-mask>.ant-qrcode-expired{color:rgba(0, 0, 0, 0.88);}.ant-qrcode-icon{margin-block-end:8px;font-size:32px;}.ant-qrcode-borderless{border-color:transparent;}[class^=\\"ant-app\\"],[class*=\\" ant-app\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-app\\"]::before,[class*=\\" ant-app\\"]::before,[class^=\\"ant-app\\"]::after,[class*=\\" ant-app\\"]::after{box-sizing:border-box;}[class^=\\"ant-app\\"] [class^=\\"ant-app\\"],[class*=\\" ant-app\\"] [class^=\\"ant-app\\"],[class^=\\"ant-app\\"] [class*=\\" ant-app\\"],[class*=\\" ant-app\\"] [class*=\\" ant-app\\"]{box-sizing:border-box;}[class^=\\"ant-app\\"] [class^=\\"ant-app\\"]::before,[class*=\\" ant-app\\"] [class^=\\"ant-app\\"]::before,[class^=\\"ant-app\\"] [class*=\\" ant-app\\"]::before,[class*=\\" ant-app\\"] [class*=\\" ant-app\\"]::before,[class^=\\"ant-app\\"] [class^=\\"ant-app\\"]::after,[class*=\\" ant-app\\"] [class^=\\"ant-app\\"]::after,[class^=\\"ant-app\\"] [class*=\\" ant-app\\"]::after,[class*=\\" ant-app\\"] [class*=\\" ant-app\\"]::after{box-sizing:border-box;}.ant-app{color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';}[class^=\\"ant-message\\"],[class*=\\" ant-message\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-message\\"]::before,[class*=\\" ant-message\\"]::before,[class^=\\"ant-message\\"]::after,[class*=\\" ant-message\\"]::after{box-sizing:border-box;}[class^=\\"ant-message\\"] [class^=\\"ant-message\\"],[class*=\\" ant-message\\"] [class^=\\"ant-message\\"],[class^=\\"ant-message\\"] [class*=\\" ant-message\\"],[class*=\\" ant-message\\"] [class*=\\" ant-message\\"]{box-sizing:border-box;}[class^=\\"ant-message\\"] [class^=\\"ant-message\\"]::before,[class*=\\" ant-message\\"] [class^=\\"ant-message\\"]::before,[class^=\\"ant-message\\"] [class*=\\" ant-message\\"]::before,[class*=\\" ant-message\\"] [class*=\\" ant-message\\"]::before,[class^=\\"ant-message\\"] [class^=\\"ant-message\\"]::after,[class*=\\" ant-message\\"] [class^=\\"ant-message\\"]::after,[class^=\\"ant-message\\"] [class*=\\" ant-message\\"]::after,[class*=\\" ant-message\\"] [class*=\\" ant-message\\"]::after{box-sizing:border-box;}.ant-message{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:fixed;top:8px;width:100%;pointer-events:none;z-index:1010;}.ant-message .ant-message-move-up{animation-fill-mode:forwards;}.ant-message .ant-message-move-up-appear,.ant-message .ant-message-move-up-enter{animation-name:MessageMoveIn;animation-duration:0.3s;animation-play-state:paused;animation-timing-function:cubic-bezier(0.78, 0.14, 0.15, 0.86);}.ant-message .ant-message-move-up-appear.ant-message-move-up-appear-active,.ant-message .ant-message-move-up-enter.ant-message-move-up-enter-active{animation-play-state:running;}.ant-message .ant-message-move-up-leave{animation-name:MessageMoveOut;animation-duration:0.3s;animation-play-state:paused;animation-timing-function:cubic-bezier(0.78, 0.14, 0.15, 0.86);}.ant-message .ant-message-move-up-leave.ant-message-move-up-leave-active{animation-play-state:running;}.ant-message-rtl{direction:rtl;}.ant-message-rtl span{direction:rtl;}.ant-message-notice{padding:8px;text-align:center;}.ant-message-notice .anticon{vertical-align:text-bottom;margin-inline-end:8px;font-size:16px;}.ant-message-notice .ant-message-notice-content{display:inline-block;padding:9px 12px;background:#1f1f1f;border-radius:8px;box-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08),0 3px 6px -4px rgba(0, 0, 0, 0.12),0 9px 28px 8px rgba(0, 0, 0, 0.05);pointer-events:all;}.ant-message-notice .ant-message-success .anticon{color:#49aa19;}.ant-message-notice .ant-message-error .anticon{color:#dc4446;}.ant-message-notice .ant-message-warning .anticon{color:#d89614;}.ant-message-notice .ant-message-info .anticon,.ant-message-notice .ant-message-loading .anticon{color:#1668dc;}.ant-message-notice-pure-panel{padding:0;text-align:start;}@keyframes MessageMoveIn{0%{padding:0;transform:translateY(-100%);opacity:0;}100%{padding:8px;transform:translateY(0);opacity:1;}}@keyframes MessageMoveOut{0%{max-height:150px;padding:8px;opacity:1;}100%{max-height:0;padding:0;opacity:0;}}[class^=\\"ant-notification\\"],[class*=\\" ant-notification\\"]{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:14px;box-sizing:border-box;}[class^=\\"ant-notification\\"]::before,[class*=\\" ant-notification\\"]::before,[class^=\\"ant-notification\\"]::after,[class*=\\" ant-notification\\"]::after{box-sizing:border-box;}[class^=\\"ant-notification\\"] [class^=\\"ant-notification\\"],[class*=\\" ant-notification\\"] [class^=\\"ant-notification\\"],[class^=\\"ant-notification\\"] [class*=\\" ant-notification\\"],[class*=\\" ant-notification\\"] [class*=\\" ant-notification\\"]{box-sizing:border-box;}[class^=\\"ant-notification\\"] [class^=\\"ant-notification\\"]::before,[class*=\\" ant-notification\\"] [class^=\\"ant-notification\\"]::before,[class^=\\"ant-notification\\"] [class*=\\" ant-notification\\"]::before,[class*=\\" ant-notification\\"] [class*=\\" ant-notification\\"]::before,[class^=\\"ant-notification\\"] [class^=\\"ant-notification\\"]::after,[class*=\\" ant-notification\\"] [class^=\\"ant-notification\\"]::after,[class^=\\"ant-notification\\"] [class*=\\" ant-notification\\"]::after,[class*=\\" ant-notification\\"] [class*=\\" ant-notification\\"]::after{box-sizing:border-box;}.ant-notification{box-sizing:border-box;margin:0;padding:0;color:rgba(255, 255, 255, 0.85);font-size:14px;line-height:1.5714285714285714;list-style:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';position:fixed;z-index:1050;margin-inline-end:24px;}.ant-notification .ant-notification-hook-holder{position:relative;}.ant-notification.ant-notification-top,.ant-notification.ant-notification-bottom{margin-inline:0;}.ant-notification.ant-notification-topLeft,.ant-notification.ant-notification-bottomLeft{margin-inline-end:0;margin-inline-start:24px;}.ant-notification.ant-notification-topLeft .ant-notification-fade-enter.ant-notification-fade-enter-active,.ant-notification.ant-notification-bottomLeft .ant-notification-fade-enter.ant-notification-fade-enter-active,.ant-notification.ant-notification-topLeft .ant-notification-fade-appear.ant-notification-fade-appear-active,.ant-notification.ant-notification-bottomLeft .ant-notification-fade-appear.ant-notification-fade-appear-active{animation-name:antNotificationLeftFadeIn;}.ant-notification .ant-notification-fade-enter,.ant-notification .ant-notification-fade-appear{animation-duration:0.2s;animation-timing-function:cubic-bezier(0.645, 0.045, 0.355, 1);animation-fill-mode:both;opacity:0;animation-play-state:paused;}.ant-notification .ant-notification-fade-leave{animation-timing-function:cubic-bezier(0.645, 0.045, 0.355, 1);animation-fill-mode:both;animation-duration:0.2s;animation-play-state:paused;}.ant-notification .ant-notification-fade-enter.ant-notification-fade-enter-active,.ant-notification .ant-notification-fade-appear.ant-notification-fade-appear-active{animation-name:antNotificationFadeIn;animation-play-state:running;}.ant-notification .ant-notification-fade-leave.ant-notification-fade-leave-active{animation-name:antNotificationFadeOut;animation-play-state:running;}.ant-notification.ant-notification-top .ant-notification-fade-enter.ant-notification-fade-enter-active,.ant-notification.ant-notification-top .ant-notification-fade-appear.ant-notification-fade-appear-active{animation-name:antNotificationTopFadeIn;}.ant-notification.ant-notification-bottom .ant-notification-fade-enter.ant-notification-fade-enter-active,.ant-notification.ant-notification-bottom .ant-notification-fade-appear.ant-notification-fade-appear-active{animation-name:antNotificationBottomFadeIn;}.ant-notification-rtl{direction:rtl;}.ant-notification-rtl .ant-notification-notice-btn{float:left;}.ant-notification-notice{position:relative;width:384px;max-width:calc(100vw - 48px);margin-bottom:16px;margin-inline-start:auto;padding:20px 24px;overflow:hidden;line-height:1.5714285714285714;word-wrap:break-word;background:#1f1f1f;border-radius:8px;box-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08),0 3px 6px -4px rgba(0, 0, 0, 0.12),0 9px 28px 8px rgba(0, 0, 0, 0.05);}.ant-notification-notice .ant-notification-close-icon{font-size:14px;cursor:pointer;}.ant-notification-notice .ant-notification-notice-message{margin-bottom:8px;color:rgba(255, 255, 255, 0.85);font-size:16px;line-height:1.5;}.ant-notification-notice .ant-notification-notice-description{font-size:14px;}.ant-notification-notice.ant-notification-notice-closable .ant-notification-notice-message{padding-inline-end:24px;}.ant-notification-notice .ant-notification-notice-with-icon .ant-notification-notice-message{margin-bottom:8px;margin-inline-start:36px;font-size:16px;}.ant-notification-notice .ant-notification-notice-with-icon .ant-notification-notice-description{margin-inline-start:36px;font-size:14px;}.ant-notification-notice .ant-notification-notice-icon{position:absolute;font-size:24px;line-height:0;}.ant-notification-notice .ant-notification-notice-icon-success.anticon{color:#49aa19;}.ant-notification-notice .ant-notification-notice-icon-info.anticon{color:#1668dc;}.ant-notification-notice .ant-notification-notice-icon-warning.anticon{color:#d89614;}.ant-notification-notice .ant-notification-notice-icon-error.anticon{color:#dc4446;}.ant-notification-notice .ant-notification-notice-close{position:absolute;top:20px;inset-inline-end:24px;color:rgba(255, 255, 255, 0.45);outline:none;width:22px;height:22px;border-radius:4px;transition:background-color 0.2s,color 0.2s;display:flex;align-items:center;justify-content:center;}.ant-notification-notice .ant-notification-notice-close:hover{color:rgba(255, 255, 255, 0.85);background-color:rgba(255, 255, 255, 0.12);}.ant-notification-notice .ant-notification-notice-btn{float:right;margin-top:12px;}.ant-notification-notice-pure-panel{margin:0;}@keyframes antNotificationLeftFadeIn{0%{right:384px;opacity:0;}100%{right:0;opacity:1;}}@keyframes antNotificationFadeIn{0%{left:384px;opacity:0;}100%{left:0;opacity:1;}}@keyframes antNotificationFadeOut{0%{max-height:150px;margin-bottom:16px;opacity:1;}100%{max-height:0;margin-bottom:0;padding-top:0;padding-bottom:0;opacity:0;}}@keyframes antNotificationTopFadeIn{0%{margin-top:-100%;opacity:0;}100%{margin-top:0;opacity:1;}}@keyframes antNotificationBottomFadeIn{0%{margin-bottom:-100%;opacity:0;}100%{margin-bottom:0;opacity:1;}}.data-ant-cssinjs-cache-path{content:\\"m3f0rh|ant-design-icons|anticon:ijrcqw;z6uaad|Shared|ant:c6s4t9;z6uaad|Affix|ant-affix|anticon:2zzvr5;z6uaad|Anchor|ant-anchor|anticon:13hrez8;z6uaad|Select|ant-select|anticon:f698cf;z6uaad|Alert|ant-alert|anticon:1es04j3;z6uaad|Avatar|ant-avatar|anticon:19qdqs6;z6uaad|Badge|ant-badge|anticon:11brd8k;z6uaad|Badge|ant-ribbon|anticon:42dxfk;z6uaad|Breadcrumb|ant-breadcrumb|anticon:1j0g5z6;z6uaad|Button|ant-btn|anticon:1rl4the;z6uaad|Wave|ant-wave|anticon:pkgtju;z6uaad|Calendar|ant-picker|anticon:mesz65;z6uaad|Radio|ant-radio|anticon:1rexxqj;z6uaad|Card|ant-card|anticon:pisf11;z6uaad|Collapse|ant-collapse|anticon:1mx93m;z6uaad|Carousel|ant-carousel|anticon:1rz7wcs;z6uaad|Cascader|ant-cascader|anticon:e8gwep;z6uaad|Checkbox|ant-checkbox|anticon:16cn1kz;z6uaad|Checkbox|ant-checkbox-group|anticon:dmylcw;z6uaad|Grid|ant-col|anticon:1b4gqad;z6uaad|Comment|ant-comment|anticon:1bgsssj;z6uaad|DatePicker|ant-picker|anticon:m4frye;z6uaad|Descriptions|ant-descriptions|anticon:6r2ueu;z6uaad|Divider|ant-divider|anticon:p1u0jv;z6uaad|Dropdown|ant-dropdown|anticon:t4fvdt;z6uaad|Drawer|ant-drawer|anticon:yej9xm;z6uaad|Empty|ant-empty|anticon:xi52lg;z6uaad|FloatButton|ant-float-btn|anticon:ri8ruk;z6uaad|Tooltip|ant-tooltip|anticon:1d6z8n1;z6uaad|Form|ant-form|anticon:1tct32d;z6uaad|Grid|ant-row|anticon:xfnjxw;z6uaad|Input|ant-input|anticon:bybrgq;z6uaad|Image|ant-image|anticon:1bvp3xn;z6uaad|InputNumber|ant-input-number|anticon:jtkpcs;z6uaad|Layout|ant-layout|anticon:1idg3qk;z6uaad|List|ant-list|anticon:5p7k62;z6uaad|Spin|ant-spin|anticon:1g1ryjx;z6uaad|Menu|ant-menu|anticon:wo2qbe;z6uaad|Mentions|ant-mentions|anticon:cwasus;z6uaad|Modal|ant-modal|anticon:1pabgrn;z6uaad|Statistic|ant-statistic|anticon:q73svq;z6uaad|Skeleton|ant-skeleton|anticon:10w76qa;z6uaad|PageHeader|ant-page-header|anticon:1a4nm7u;z6uaad|Pagination|ant-pagination|anticon:13nh3ua;z6uaad|Popconfirm|ant-popconfirm|anticon:nmwlv6;z6uaad|Popover|ant-popover|anticon:hwmhax;z6uaad|Tooltip|ant-popover|anticon:17hb4y9;z6uaad|Progress|ant-progress|anticon:1svsnks;z6uaad|Rate|ant-rate|anticon:x3tu0l;z6uaad|Result|ant-result|anticon:9bvn6n;z6uaad|Slider|ant-slider|anticon:haw8s9;z6uaad|Space|ant-space|anticon:10yzkeb;z6uaad|Space|ant-space-compact|anticon:ac2k07;z6uaad|Steps|ant-steps|anticon:h0jjl7;z6uaad|Switch|ant-switch|anticon:18cao7h;z6uaad|Table|ant-table|anticon:pfy5id;z6uaad|Transfer|ant-transfer|anticon:1y4rk2;z6uaad|Tree|ant-tree|anticon:1hk4izj;z6uaad|TreeSelect|ant-tree-select|anticon:dk50w9;z6uaad|Tabs|ant-tabs|anticon:1m3gz2f;z6uaad|Tag|ant-tag|anticon:mtm9nh;z6uaad|Timeline|ant-timeline|anticon:171edtc;z6uaad|Typography|ant-typography|anticon:1gsekci;z6uaad|Upload|ant-upload|anticon:9gg6kc;z6uaad|Segmented|ant-segmented|anticon:zywlxk;z6uaad|QRCode|ant-qrcode|anticon:1aglmhf;z6uaad|App|ant-app|anticon:vhxvxu;z6uaad|Message|ant-message|anticon:175ruci;z6uaad|Notification|ant-notification|anticon:czzwwj\\";}"`; diff --git a/components/_util/static-style-extract/__tests__/index.test.js b/components/_util/static-style-extract/__tests__/index.test.js deleted file mode 100644 index 4c007119d..000000000 --- a/components/_util/static-style-extract/__tests__/index.test.js +++ /dev/null @@ -1,82 +0,0 @@ -// import { StyleProvider } from '../../cssinjs'; -import { extractStyle } from '../index'; -import { ConfigProvider } from '../../../components'; -import { theme } from '../../../index'; - -const testGreenColor = '#008000'; -describe('Static-Style-Extract', () => { - it('should extract static styles', () => { - const cssText = extractStyle(); - expect(cssText).not.toContain(testGreenColor); - expect(cssText).toMatchSnapshot(); - }); - it('should extract static styles with customTheme', () => { - const cssText = extractStyle(node => { - return ( - - {node} - - ); - }); - expect(cssText).toContain(testGreenColor); - expect(cssText).toMatchSnapshot(); - }); - - it('should extract static styles with customTheme and customStyle', () => { - const cssText = extractStyle(node => { - return ( - - {node} - - ); - }); - expect(cssText).toContain('#037003'); - expect(cssText).toMatchSnapshot(); - }); - // it('with custom hashPriority', () => { - // const cssText = extractStyle( - // (node) => ( - // - // - // {node} - // - // - // ), - // ); - // expect(cssText).toContain(testGreenColor); - // expect(cssText).not.toContain(':where'); - // expect(cssText).toMatchSnapshot(); - // - // const cssText2 = extractStyle((node) => ( - // - // {node} - // - // )); - // expect(cssText2).toContain(':where'); - // }); -}); diff --git a/components/_util/static-style-extract/index.tsx b/components/_util/static-style-extract/index.tsx deleted file mode 100644 index 6b7e2a114..000000000 --- a/components/_util/static-style-extract/index.tsx +++ /dev/null @@ -1,90 +0,0 @@ -import { createCache, extractStyle as extStyle, StyleProvider } from '../cssinjs'; -import * as antd from '../../components'; -import { renderToString } from 'vue/server-renderer'; -import type { CustomRender } from './interface'; -const blackList: string[] = [ - 'ConfigProvider', - 'Grid', - 'Tour', - 'SelectOptGroup', - 'SelectOption', - 'MentionsOption', - 'TreeNode', - 'TreeSelectNode', - 'LocaleProvider', -]; - -const pickerMap = { - MonthPicker: 'month', - WeekPicker: 'week', - QuarterPicker: 'quarter', -}; - -const compChildNameMap = { - MenuDivider: 'Menu', - MenuItem: 'Menu', - MenuItemGroup: 'Menu', - SubMenu: 'Menu', - TableColumn: 'Table', - TableColumnGroup: 'Table', - TableSummary: 'Table', - TableSummaryRow: 'Table', - TableSummaryCell: 'Table', - TabPane: 'Tabs', - TimelineItem: 'Timeline', -}; - -const defaultNode = () => ( - <> - {Object.keys(antd) - .filter(name => !blackList.includes(name) && name[0] === name[0].toUpperCase()) - .map(compName => { - const Comp = antd[compName]; - if (compName === 'Dropdown') { - return ( - -
- - ); - } - if (compName === 'Anchor') { - return ; - } - if (compName in pickerMap) { - const Comp = antd['DatePicker']; - const type = pickerMap[compName]; - return ; - } - if (compName in compChildNameMap) { - const ParentComp = antd[compChildNameMap[compName]]; - return ( - - - - ); - } - if (compName === 'QRCode' || compName === 'Segmented') { - return ( - -
- - ); - } - return ; - })} - -); - -export function extractStyle(customTheme?: CustomRender): string { - const cache = createCache(); - renderToString( - - {customTheme ? customTheme(defaultNode()) : defaultNode()} - , - ); - - // Grab style from cache - const styleText = extStyle(cache, true); - - return styleText; -} diff --git a/components/_util/static-style-extract/interface.ts b/components/_util/static-style-extract/interface.ts deleted file mode 100644 index 79df8c632..000000000 --- a/components/_util/static-style-extract/interface.ts +++ /dev/null @@ -1,3 +0,0 @@ -import type { VueNode } from '../type'; - -export type CustomRender = (node: VueNode) => VueNode; diff --git a/components/_util/statusUtils.tsx b/components/_util/statusUtils.tsx deleted file mode 100644 index a9cb68aaa..000000000 --- a/components/_util/statusUtils.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import type { ValidateStatus } from '../form/FormItem'; -import classNames from './classNames'; - -const InputStatuses = ['warning', 'error', ''] as const; - -export type InputStatus = (typeof InputStatuses)[number]; - -export function getStatusClassNames( - prefixCls: string, - status?: ValidateStatus, - hasFeedback?: boolean, -) { - return classNames({ - [`${prefixCls}-status-success`]: status === 'success', - [`${prefixCls}-status-warning`]: status === 'warning', - [`${prefixCls}-status-error`]: status === 'error', - [`${prefixCls}-status-validating`]: status === 'validating', - [`${prefixCls}-has-feedback`]: hasFeedback, - }); -} - -export const getMergedStatus = (contextStatus?: ValidateStatus, customStatus?: InputStatus) => - customStatus || contextStatus; diff --git a/components/_util/styleChecker.ts b/components/_util/styleChecker.ts deleted file mode 100644 index 59244441a..000000000 --- a/components/_util/styleChecker.ts +++ /dev/null @@ -1,62 +0,0 @@ -import canUseDom from './canUseDom'; - -export const canUseDocElement = () => canUseDom() && window.document.documentElement; - -const isStyleNameSupport = (styleName: string | string[]): boolean => { - if (canUseDom() && window.document.documentElement) { - const styleNameList = Array.isArray(styleName) ? styleName : [styleName]; - const { documentElement } = window.document; - - return styleNameList.some(name => name in documentElement.style); - } - return false; -}; - -const isStyleValueSupport = (styleName: string, value: any) => { - if (!isStyleNameSupport(styleName)) { - return false; - } - - const ele = document.createElement('div'); - const origin = ele.style[styleName]; - ele.style[styleName] = value; - return ele.style[styleName] !== origin; -}; - -export function isStyleSupport(styleName: string | string[], styleValue?: any) { - if (!Array.isArray(styleName) && styleValue !== undefined) { - return isStyleValueSupport(styleName, styleValue); - } - - return isStyleNameSupport(styleName); -} - -let flexGapSupported: boolean | undefined; -export const detectFlexGapSupported = () => { - if (!canUseDocElement()) { - return false; - } - - if (flexGapSupported !== undefined) { - return flexGapSupported; - } - - // create flex container with row-gap set - const flex = document.createElement('div'); - flex.style.display = 'flex'; - flex.style.flexDirection = 'column'; - flex.style.rowGap = '1px'; - - // create two, elements inside it - flex.appendChild(document.createElement('div')); - flex.appendChild(document.createElement('div')); - - // append to the DOM (needed to obtain scrollHeight) - document.body.appendChild(flex); - flexGapSupported = flex.scrollHeight === 1; // flex container should be 1px high from the row-gap - document.body.removeChild(flex); - - return flexGapSupported; -}; - -export default isStyleSupport; diff --git a/components/_util/supportsPassive.js b/components/_util/supportsPassive.js deleted file mode 100644 index c020b7fca..000000000 --- a/components/_util/supportsPassive.js +++ /dev/null @@ -1,13 +0,0 @@ -// Test via a getter in the options object to see if the passive property is accessed -let supportsPassive = false; -try { - const opts = Object.defineProperty({}, 'passive', { - get() { - supportsPassive = true; - }, - }); - window.addEventListener('testPassive', null, opts); - window.removeEventListener('testPassive', null, opts); -} catch (e) {} - -export default supportsPassive; diff --git a/components/_util/throttleByAnimationFrame.ts b/components/_util/throttleByAnimationFrame.ts deleted file mode 100644 index ce469a3f0..000000000 --- a/components/_util/throttleByAnimationFrame.ts +++ /dev/null @@ -1,29 +0,0 @@ -import raf from './raf'; - -type throttledFn = (...args: any[]) => void; - -type throttledCancelFn = { cancel: () => void }; - -function throttleByAnimationFrame(fn: (...args: T) => void) { - let requestId: number | null; - - const later = (args: T) => () => { - requestId = null; - fn(...args); - }; - - const throttled: throttledFn & throttledCancelFn = (...args: T) => { - if (requestId == null) { - requestId = raf(later(args)); - } - }; - - throttled.cancel = () => { - raf.cancel(requestId!); - requestId = null; - }; - - return throttled; -} - -export default throttleByAnimationFrame; diff --git a/components/_util/toReactive.ts b/components/_util/toReactive.ts deleted file mode 100644 index 0fa7f3277..000000000 --- a/components/_util/toReactive.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { isRef, reactive } from 'vue'; -import type { Ref } from 'vue'; -type MaybeRef = T | Ref; -/** - * Converts ref to reactive. - * - * @see https://vueuse.org/toReactive - * @param objectRef A ref of object - */ -export function toReactive(objectRef: MaybeRef): T { - if (!isRef(objectRef)) return reactive(objectRef) as T; - - const proxy = new Proxy( - {}, - { - get(_, p, receiver) { - return Reflect.get(objectRef.value, p, receiver); - }, - set(_, p, value) { - (objectRef.value as any)[p] = value; - return true; - }, - deleteProperty(_, p) { - return Reflect.deleteProperty(objectRef.value, p); - }, - has(_, p) { - return Reflect.has(objectRef.value, p); - }, - ownKeys() { - return Object.keys(objectRef.value); - }, - getOwnPropertyDescriptor() { - return { - enumerable: true, - configurable: true, - }; - }, - }, - ); - - return reactive(proxy) as T; -} diff --git a/components/_util/transButton.tsx b/components/_util/transButton.tsx deleted file mode 100644 index 548948d55..000000000 --- a/components/_util/transButton.tsx +++ /dev/null @@ -1,102 +0,0 @@ -import type { CSSProperties } from 'vue'; -import { defineComponent, shallowRef, onMounted } from 'vue'; -/** - * Wrap of sub component which need use as Button capacity (like Icon component). - * This helps accessibility reader to tread as a interactive button to operation. - */ -import KeyCode from './KeyCode'; - -const inlineStyle = { - border: 0, - background: 'transparent', - padding: 0, - lineHeight: 'inherit', - display: 'inline-block', -}; - -const TransButton = defineComponent({ - compatConfig: { MODE: 3 }, - name: 'TransButton', - inheritAttrs: false, - props: { - noStyle: { type: Boolean, default: undefined }, - onClick: Function, - disabled: { type: Boolean, default: undefined }, - autofocus: { type: Boolean, default: undefined }, - }, - setup(props, { slots, emit, attrs, expose }) { - const domRef = shallowRef(); - const onKeyDown = (event: KeyboardEvent) => { - const { keyCode } = event; - if (keyCode === KeyCode.ENTER) { - event.preventDefault(); - } - }; - - const onKeyUp = (event: KeyboardEvent) => { - const { keyCode } = event; - if (keyCode === KeyCode.ENTER) { - emit('click', event); - } - }; - const onClick = (e: Event) => { - emit('click', e); - }; - const focus = () => { - if (domRef.value) { - domRef.value.focus(); - } - }; - - const blur = () => { - if (domRef.value) { - domRef.value.blur(); - } - }; - onMounted(() => { - if (props.autofocus) { - focus(); - } - }); - - expose({ - focus, - blur, - }); - return () => { - const { noStyle, disabled, ...restProps } = props; - - let mergedStyle: CSSProperties = {}; - - if (!noStyle) { - mergedStyle = { - ...inlineStyle, - }; - } - - if (disabled) { - mergedStyle.pointerEvents = 'none'; - } - return ( -
- {slots.default?.()} -
- ); - }; - }, -}); - -export default TransButton; diff --git a/components/_util/transKeys.ts b/components/_util/transKeys.ts deleted file mode 100644 index d196b1137..000000000 --- a/components/_util/transKeys.ts +++ /dev/null @@ -1,17 +0,0 @@ -export const groupKeysMap = (keys: string[]) => { - const map = new Map(); - keys.forEach((key, index) => { - map.set(key, index); - }); - return map; -}; - -export const groupDisabledKeysMap = (dataSource: RecordType) => { - const map = new Map(); - dataSource.forEach(({ disabled, key }, index) => { - if (disabled) { - map.set(key, index); - } - }); - return map; -}; diff --git a/components/_util/transition.tsx b/components/_util/transition.tsx deleted file mode 100644 index f4b69f31e..000000000 --- a/components/_util/transition.tsx +++ /dev/null @@ -1,129 +0,0 @@ -import type { - BaseTransitionProps, - CSSProperties, - Ref, - TransitionGroupProps, - TransitionProps, -} from 'vue'; -import { nextTick } from 'vue'; -import { tuple } from './type'; - -const SelectPlacements = tuple('bottomLeft', 'bottomRight', 'topLeft', 'topRight'); -export type SelectCommonPlacement = (typeof SelectPlacements)[number]; - -const getTransitionDirection = (placement: SelectCommonPlacement | undefined) => { - if (placement !== undefined && (placement === 'topLeft' || placement === 'topRight')) { - return `slide-down`; - } - return `slide-up`; -}; - -export const getTransitionProps = (transitionName: string, opt: TransitionProps = {}) => { - const transitionProps: TransitionProps = transitionName - ? { - name: transitionName, - appear: true, - // type: 'animation', - // appearFromClass: `${transitionName}-appear ${transitionName}-appear-prepare`, - // appearActiveClass: `antdv-base-transtion`, - // appearToClass: `${transitionName}-appear ${transitionName}-appear-active`, - enterFromClass: `${transitionName}-enter ${transitionName}-enter-prepare ${transitionName}-enter-start`, - enterActiveClass: `${transitionName}-enter ${transitionName}-enter-prepare`, - enterToClass: `${transitionName}-enter ${transitionName}-enter-active`, - leaveFromClass: ` ${transitionName}-leave`, - leaveActiveClass: `${transitionName}-leave ${transitionName}-leave-active`, - leaveToClass: `${transitionName}-leave ${transitionName}-leave-active`, - ...opt, - } - : { css: false, ...opt }; - return transitionProps; -}; - -export const getTransitionGroupProps = (transitionName: string, opt: TransitionProps = {}) => { - const transitionProps: TransitionGroupProps = transitionName - ? { - name: transitionName, - appear: true, - // appearFromClass: `${transitionName}-appear ${transitionName}-appear-prepare`, - appearActiveClass: `${transitionName}`, - appearToClass: `${transitionName}-appear ${transitionName}-appear-active`, - enterFromClass: `${transitionName}-appear ${transitionName}-enter ${transitionName}-appear-prepare ${transitionName}-enter-prepare`, - enterActiveClass: `${transitionName}`, - enterToClass: `${transitionName}-enter ${transitionName}-appear ${transitionName}-appear-active ${transitionName}-enter-active`, - leaveActiveClass: `${transitionName} ${transitionName}-leave`, - leaveToClass: `${transitionName}-leave-active`, - ...opt, - } - : { css: false, ...opt }; - return transitionProps; -}; - -export declare type MotionEvent = (TransitionEvent | AnimationEvent) & { - deadline?: boolean; -}; - -export declare type MotionEventHandler = (element: Element, done?: () => void) => CSSProperties; - -export declare type MotionEndEventHandler = (element: Element, done?: () => void) => boolean | void; - -// ================== Collapse Motion ================== -const getCollapsedHeight: MotionEventHandler = () => ({ height: 0, opacity: 0 }); -const getRealHeight: MotionEventHandler = node => ({ - height: `${node.scrollHeight}px`, - opacity: 1, -}); -const getCurrentHeight: MotionEventHandler = (node: any) => ({ height: `${node.offsetHeight}px` }); -// const skipOpacityTransition: MotionEndEventHandler = (_, event) => -// (event as TransitionEvent).propertyName === 'height'; - -export interface CSSMotionProps extends Partial> { - name?: string; - css?: boolean; -} - -const collapseMotion = ( - name = 'ant-motion-collapse', - style: Ref, - className: Ref, -): CSSMotionProps => { - return { - name, - appear: true, - css: true, - onBeforeEnter: node => { - className.value = name; - style.value = getCollapsedHeight(node); - }, - onEnter: node => { - nextTick(() => { - style.value = getRealHeight(node); - }); - }, - onAfterEnter: () => { - className.value = ''; - style.value = {}; - }, - onBeforeLeave: node => { - className.value = name; - style.value = getCurrentHeight(node); - }, - onLeave: node => { - setTimeout(() => { - style.value = getCollapsedHeight(node); - }); - }, - onAfterLeave: () => { - className.value = ''; - style.value = {}; - }, - }; -}; - -const getTransitionName = (rootPrefixCls: string, motion: string, transitionName?: string) => { - if (transitionName !== undefined) { - return transitionName; - } - return `${rootPrefixCls}-${motion}`; -}; - -export { collapseMotion, getTransitionName, getTransitionDirection }; diff --git a/components/_util/type.ts b/components/_util/type.ts deleted file mode 100644 index ed5541d4e..000000000 --- a/components/_util/type.ts +++ /dev/null @@ -1,96 +0,0 @@ -// @ts-ignore -import type { App, PropType, Plugin, Ref, VNode, SlotsType } from 'vue'; - -// https://stackoverflow.com/questions/46176165/ways-to-get-string-literal-type-of-array-values-without-enum-overhead -export const tuple = (...args: T) => args; - -export const tupleNum = (...args: T) => args; - -/** - * https://stackoverflow.com/a/59187769 - * Extract the type of an element of an array/tuple without performing indexing - */ -export type ElementOf = T extends (infer E)[] ? E : T extends readonly (infer F)[] ? F : never; - -/** - * https://github.com/Microsoft/TypeScript/issues/29729 - */ -export type LiteralUnion = T | (string & {}); - -export type Data = Record; - -export type Key = string | number; - -type DefaultFactory = (props: Data) => T | null | undefined; - -export interface PropOptions { - type?: PropType | true | null; - required?: boolean; - default?: D | DefaultFactory | null | undefined | object; - validator?(value: unknown): boolean; -} - -declare type VNodeChildAtom = VNode | string | number | boolean | null | undefined | void; - -// eslint-disable-next-line no-undef -export type VueNode = VNodeChildAtom | VNodeChildAtom[] | VNode; - -export const withInstall = (comp: T) => { - const c = comp as any; - c.install = function (app: App) { - app.component(c.displayName || c.name, comp); - }; - - return comp as T & Plugin; -}; - -export type MaybeRef = T | Ref; - -export function eventType() { - return { type: [Function, Array] as PropType }; -} - -export function objectType(defaultVal?: T) { - return { type: Object as PropType, default: defaultVal as T }; -} - -export function booleanType(defaultVal?: boolean) { - return { type: Boolean, default: defaultVal as boolean }; -} - -export function functionType {}>(defaultVal?: T) { - return { type: Function as PropType, default: defaultVal as T }; -} - -export function anyType(defaultVal?: T, required?: boolean) { - const type = { validator: () => true, default: defaultVal as T } as unknown; - return required - ? (type as { - type: PropType; - default: T; - required: true; - }) - : (type as { - default: T; - type: PropType; - }); -} -export function vNodeType() { - return { validator: () => true } as unknown as { type: PropType }; -} - -export function arrayType(defaultVal?: T) { - return { type: Array as unknown as PropType, default: defaultVal as T }; -} - -export function stringType(defaultVal?: T) { - return { type: String as unknown as PropType, default: defaultVal as T }; -} - -export function someType(types?: any[], defaultVal?: T) { - return types ? { type: types as PropType, default: defaultVal as T } : anyType(defaultVal); -} - -export type CustomSlotsType = SlotsType; - -export type AnyObject = Record; diff --git a/components/_util/unreachableException.ts b/components/_util/unreachableException.ts deleted file mode 100644 index 9218b14dc..000000000 --- a/components/_util/unreachableException.ts +++ /dev/null @@ -1,7 +0,0 @@ -export default class UnreachableException { - error: Error; - - constructor(value: any) { - this.error = new Error(`unreachable case: ${JSON.stringify(value)}`); - } -} diff --git a/components/_util/util.ts b/components/_util/util.ts deleted file mode 100644 index aff378832..000000000 --- a/components/_util/util.ts +++ /dev/null @@ -1,101 +0,0 @@ -import type { VueNode } from './type'; -export const isFunction = val => typeof val === 'function'; -export const controlDefaultValue = Symbol('controlDefaultValue') as any; -export const isArray = Array.isArray; -export const isString = val => typeof val === 'string'; -export const isSymbol = val => typeof val === 'symbol'; -export const isObject = val => val !== null && typeof val === 'object'; -const onRE = /^on[^a-z]/; -const isOn = key => onRE.test(key); - -const cacheStringFunction = fn => { - const cache = Object.create(null); - return str => { - const hit = cache[str]; - return hit || (cache[str] = fn(str)); - }; -}; -const camelizeRE = /-(\w)/g; -const camelize = cacheStringFunction(str => { - return str.replace(camelizeRE, (_, c) => (c ? c.toUpperCase() : '')); -}); - -const hyphenateRE = /\B([A-Z])/g; -const hyphenate = cacheStringFunction(str => { - return str.replace(hyphenateRE, '-$1').toLowerCase(); -}); - -const capitalize = cacheStringFunction(str => { - return str.charAt(0).toUpperCase() + str.slice(1); -}); - -const hasOwnProperty = Object.prototype.hasOwnProperty; -const hasOwn = (val, key) => hasOwnProperty.call(val, key); - -// change from vue sourcecode -function resolvePropValue(options, props, key, value) { - const opt = options[key]; - if (opt != null) { - const hasDefault = hasOwn(opt, 'default'); - // default values - if (hasDefault && value === undefined) { - const defaultValue = opt.default; - value = opt.type !== Function && isFunction(defaultValue) ? defaultValue() : defaultValue; - } - // boolean casting - if (opt.type === Boolean) { - if (!hasOwn(props, key) && !hasDefault) { - value = false; - } else if (value === '') { - value = true; - } - } - } - return value; -} - -export function getDataAndAriaProps(props) { - return Object.keys(props).reduce((memo, key) => { - if (key.startsWith('data-') || key.startsWith('aria-')) { - memo[key] = props[key]; - } - return memo; - }, {}); -} - -export function toPx(val) { - if (typeof val === 'number') return `${val}px`; - return val; -} - -export function renderHelper>( - v: VueNode | ((arg0: T) => VueNode), - props: T = {} as T, - defaultV?: any, -) { - if (typeof v === 'function') { - return v(props); - } - return v ?? defaultV; -} -export function wrapPromiseFn(openFn: (resolve: VoidFunction) => VoidFunction) { - let closeFn: VoidFunction; - - const closePromise = new Promise(resolve => { - closeFn = openFn(() => { - resolve(true); - }); - }); - - const result: any = () => { - closeFn?.(); - }; - - result.then = (filled: VoidFunction, rejected: VoidFunction) => - closePromise.then(filled, rejected); - result.promise = closePromise; - - return result; -} - -export { isOn, cacheStringFunction, camelize, hyphenate, capitalize, resolvePropValue }; diff --git a/components/_util/vnode.ts b/components/_util/vnode.ts deleted file mode 100644 index 8565cbe5b..000000000 --- a/components/_util/vnode.ts +++ /dev/null @@ -1,82 +0,0 @@ -import { filterEmpty } from './props-util'; -import type { Slots, VNode, VNodeArrayChildren, VNodeProps } from 'vue'; -import { cloneVNode, isVNode, Comment, Fragment, render as VueRender } from 'vue'; -import warning from './warning'; -import type { RefObject } from './createRef'; -type NodeProps = Record & - Omit & { ref?: VNodeProps['ref'] | RefObject }; - -export function cloneElement( - vnode: VNode | VNode[], - nodeProps: NodeProps = {}, - override = true, - mergeRef = false, -): VNode { - let ele = vnode; - if (Array.isArray(vnode)) { - ele = filterEmpty(vnode)[0]; - } - if (!ele) { - return null; - } - const node = cloneVNode(ele as VNode, nodeProps as any, mergeRef); - - // cloneVNode内部是合并属性,这里改成覆盖属性 - node.props = (override ? { ...node.props, ...nodeProps } : node.props) as any; - warning(typeof node.props.class !== 'object', 'class must be string'); - return node; -} - -export function cloneVNodes(vnodes, nodeProps = {}, override = true) { - return vnodes.map(vnode => cloneElement(vnode, nodeProps, override)); -} - -export function deepCloneElement( - vnode: VNode | VNode[], - nodeProps: NodeProps = {}, - override = true, - mergeRef = false, -) { - if (Array.isArray(vnode)) { - return vnode.map(item => deepCloneElement(item, nodeProps, override, mergeRef)); - } else { - // 需要判断是否为vnode方可进行clone操作 - if (!isVNode(vnode)) { - return vnode; - } - const cloned = cloneElement(vnode, nodeProps, override, mergeRef); - if (Array.isArray(cloned.children)) { - cloned.children = deepCloneElement(cloned.children as VNode[]); - } - return cloned; - } -} - -export function triggerVNodeUpdate(vm: VNode, attrs: Record, dom: any) { - VueRender(cloneVNode(vm, { ...attrs }), dom); -} - -const ensureValidVNode = (slot: VNodeArrayChildren | null) => { - return (slot || []).some(child => { - if (!isVNode(child)) return true; - if (child.type === Comment) return false; - if (child.type === Fragment && !ensureValidVNode(child.children as VNodeArrayChildren)) - return false; - return true; - }) - ? slot - : null; -}; - -export function customRenderSlot( - slots: Slots, - name: string, - props: Record, - fallback?: () => VNodeArrayChildren, -) { - const slot = slots[name]?.(props); - if (ensureValidVNode(slot)) { - return slot; - } - return fallback?.(); -} diff --git a/components/_util/vue-types/index.ts b/components/_util/vue-types/index.ts deleted file mode 100644 index c46f7a3b4..000000000 --- a/components/_util/vue-types/index.ts +++ /dev/null @@ -1,43 +0,0 @@ -import type { CSSProperties } from 'vue'; -import type { VueTypeValidableDef, VueTypesInterface } from 'vue-types'; -import { createTypes } from 'vue-types'; -import type { VueNode } from '../type'; -const PropTypes = createTypes({ - func: undefined, - bool: undefined, - string: undefined, - number: undefined, - array: undefined, - object: undefined, - integer: undefined, -}); - -PropTypes.extend([ - { - name: 'looseBool', - getter: true, - type: Boolean, - default: undefined, - }, - { - name: 'style', - getter: true, - type: [String, Object], - default: undefined, - }, - { - name: 'VueNode', - getter: true, - type: null, - }, -]); - -export function withUndefined(type: T): T { - type.default = undefined; - return type; -} -export default PropTypes as VueTypesInterface & { - readonly looseBool: VueTypeValidableDef; - readonly style: VueTypeValidableDef; - readonly VueNode: VueTypeValidableDef; -}; diff --git a/components/_util/warning.ts b/components/_util/warning.ts deleted file mode 100644 index b4819faa2..000000000 --- a/components/_util/warning.ts +++ /dev/null @@ -1,21 +0,0 @@ -import vcWarning, { resetWarned } from '../vc-util/warning'; - -export { resetWarned }; -export function noop() {} - -type Warning = (valid: boolean, component: string, message?: string) => void; - -// eslint-disable-next-line import/no-mutable-exports -let warning: Warning = noop; -if (process.env.NODE_ENV !== 'production') { - warning = (valid, component, message) => { - vcWarning(valid, `[ant-design-vue: ${component}] ${message}`); - - // StrictMode will inject console which will not throw warning in React 17. - if (process.env.NODE_ENV === 'test') { - resetWarned(); - } - }; -} - -export default warning; diff --git a/components/_util/wave/WaveEffect.tsx b/components/_util/wave/WaveEffect.tsx deleted file mode 100644 index b59c8ff66..000000000 --- a/components/_util/wave/WaveEffect.tsx +++ /dev/null @@ -1,170 +0,0 @@ -import type { CSSProperties } from 'vue'; -import { onBeforeUnmount, onMounted, Transition, render, defineComponent, shallowRef } from 'vue'; -import useState from '../hooks/useState'; -import { objectType } from '../type'; -import { getTargetWaveColor } from './util'; -import wrapperRaf from '../raf'; -function validateNum(value: number) { - return Number.isNaN(value) ? 0 : value; -} - -export interface WaveEffectProps { - className: string; - target: HTMLElement; -} - -const WaveEffect = defineComponent({ - props: { - target: objectType(), - className: String, - }, - setup(props) { - const divRef = shallowRef(null); - - const [color, setWaveColor] = useState(null); - const [borderRadius, setBorderRadius] = useState([]); - const [left, setLeft] = useState(0); - const [top, setTop] = useState(0); - const [width, setWidth] = useState(0); - const [height, setHeight] = useState(0); - const [enabled, setEnabled] = useState(false); - - function syncPos() { - const { target } = props; - const nodeStyle = getComputedStyle(target); - - // Get wave color from target - setWaveColor(getTargetWaveColor(target)); - - const isStatic = nodeStyle.position === 'static'; - - // Rect - const { borderLeftWidth, borderTopWidth } = nodeStyle; - setLeft(isStatic ? target.offsetLeft : validateNum(-parseFloat(borderLeftWidth))); - setTop(isStatic ? target.offsetTop : validateNum(-parseFloat(borderTopWidth))); - setWidth(target.offsetWidth); - setHeight(target.offsetHeight); - - // Get border radius - const { - borderTopLeftRadius, - borderTopRightRadius, - borderBottomLeftRadius, - borderBottomRightRadius, - } = nodeStyle; - - setBorderRadius( - [ - borderTopLeftRadius, - borderTopRightRadius, - borderBottomRightRadius, - borderBottomLeftRadius, - ].map(radius => validateNum(parseFloat(radius))), - ); - } - // Add resize observer to follow size - let resizeObserver: ResizeObserver; - let rafId: number; - let timeoutId: any; - const clear = () => { - clearTimeout(timeoutId); - wrapperRaf.cancel(rafId); - resizeObserver?.disconnect(); - }; - const removeDom = () => { - const holder = divRef.value?.parentElement; - if (holder) { - render(null, holder); - if (holder.parentElement) { - holder.parentElement.removeChild(holder); - } - } - }; - - onMounted(() => { - clear(); - timeoutId = setTimeout(() => { - removeDom(); - }, 5000); - const { target } = props; - if (target) { - // We need delay to check position here - // since UI may change after click - rafId = wrapperRaf(() => { - syncPos(); - - setEnabled(true); - }); - - if (typeof ResizeObserver !== 'undefined') { - resizeObserver = new ResizeObserver(syncPos); - - resizeObserver.observe(target); - } - } - }); - onBeforeUnmount(() => { - clear(); - }); - - const onTransitionend = (e: TransitionEvent) => { - if (e.propertyName === 'opacity') { - removeDom(); - } - }; - return () => { - if (!enabled.value) { - return null; - } - const waveStyle = { - left: `${left.value}px`, - top: `${top.value}px`, - width: `${width.value}px`, - height: `${height.value}px`, - borderRadius: borderRadius.value.map(radius => `${radius}px`).join(' '), - } as CSSProperties & { - [name: string]: number | string; - }; - - if (color) { - waveStyle['--wave-color'] = color.value as string; - } - - return ( - -
- - ); - }; - }, -}); - -function showWaveEffect(node: HTMLElement, className: string) { - // Create holder - const holder = document.createElement('div'); - holder.style.position = 'absolute'; - holder.style.left = `0px`; - holder.style.top = `0px`; - node?.insertBefore(holder, node?.firstChild); - - render(, holder); - return () => { - render(null, holder); - if (holder.parentElement) { - holder.parentElement.removeChild(holder); - } - }; -} - -export default showWaveEffect; diff --git a/components/_util/wave/index.tsx b/components/_util/wave/index.tsx deleted file mode 100644 index 26dab40f9..000000000 --- a/components/_util/wave/index.tsx +++ /dev/null @@ -1,95 +0,0 @@ -import { - computed, - defineComponent, - getCurrentInstance, - nextTick, - onBeforeUnmount, - onMounted, - watch, -} from 'vue'; -import useConfigInject from '../../config-provider/hooks/useConfigInject'; -import isVisible from '../../vc-util/Dom/isVisible'; -import classNames from '../classNames'; -import { findDOMNode } from '../props-util'; -import useStyle from './style'; -import useWave from './useWave'; - -export interface WaveProps { - disabled?: boolean; -} - -export default defineComponent({ - compatConfig: { MODE: 3 }, - name: 'Wave', - props: { - disabled: Boolean, - }, - setup(props, { slots }) { - const instance = getCurrentInstance(); - const { prefixCls, wave } = useConfigInject('wave', props); - - // ============================== Style =============================== - const [, hashId] = useStyle(prefixCls); - - // =============================== Wave =============================== - const showWave = useWave( - computed(() => classNames(prefixCls.value, hashId.value)), - wave, - ); - let onClick: (e: MouseEvent) => void; - const clear = () => { - const node = findDOMNode(instance) as HTMLElement; - node.removeEventListener('click', onClick, true); - }; - onMounted(() => { - watch( - () => props.disabled, - () => { - clear(); - nextTick(() => { - const node: HTMLElement = findDOMNode(instance); - node?.removeEventListener('click', onClick, true); - if (!node || node.nodeType !== 1 || props.disabled) { - return; - } - - // Click handler - onClick = (e: MouseEvent) => { - // Fix radio button click twice - if ( - (e.target as HTMLElement).tagName === 'INPUT' || - !isVisible(e.target as HTMLElement) || - // No need wave - !node.getAttribute || - node.getAttribute('disabled') || - (node as HTMLInputElement).disabled || - node.className.includes('disabled') || - node.className.includes('-leave') - ) { - return; - } - - showWave(); - }; - - // Bind events - node.addEventListener('click', onClick, true); - }); - }, - { - immediate: true, - flush: 'post', - }, - ); - }); - onBeforeUnmount(() => { - clear(); - }); - - return () => { - // ============================== Render ============================== - const children = slots.default?.()[0]; - return children; - }; - }, -}); diff --git a/components/_util/wave/style.ts b/components/_util/wave/style.ts deleted file mode 100644 index 63f75a557..000000000 --- a/components/_util/wave/style.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { genComponentStyleHook } from '../../theme/internal'; -import type { FullToken, GenerateStyle } from '../../theme/internal'; - -// eslint-disable-next-line @typescript-eslint/no-empty-interface -export interface ComponentToken {} - -export type WaveToken = FullToken<'Wave'>; - -const genWaveStyle: GenerateStyle = token => { - const { componentCls, colorPrimary } = token; - return { - [componentCls]: { - position: 'absolute', - background: 'transparent', - pointerEvents: 'none', - boxSizing: 'border-box', - color: `var(--wave-color, ${colorPrimary})`, - - boxShadow: `0 0 0 0 currentcolor`, - opacity: 0.2, - - // =================== Motion =================== - '&.wave-motion-appear': { - transition: [ - `box-shadow 0.4s ${token.motionEaseOutCirc}`, - `opacity 2s ${token.motionEaseOutCirc}`, - ].join(','), - - '&-active': { - boxShadow: `0 0 0 6px currentcolor`, - opacity: 0, - }, - }, - }, - }; -}; - -export default genComponentStyleHook('Wave', token => [genWaveStyle(token)]); diff --git a/components/_util/wave/useWave.ts b/components/_util/wave/useWave.ts deleted file mode 100644 index f88c36168..000000000 --- a/components/_util/wave/useWave.ts +++ /dev/null @@ -1,25 +0,0 @@ -import type { ComputedRef, Ref } from 'vue'; -import { onBeforeUnmount, getCurrentInstance } from 'vue'; -import { findDOMNode } from '../props-util'; -import showWaveEffect from './WaveEffect'; - -export default function useWave( - className: Ref, - wave?: ComputedRef<{ disabled?: boolean }>, -): VoidFunction { - const instance = getCurrentInstance(); - let stopWave: () => void; - function showWave() { - const node = findDOMNode(instance); - stopWave?.(); - if (wave?.value?.disabled || !node) { - return; - } - stopWave = showWaveEffect(node, className.value); - } - onBeforeUnmount(() => { - stopWave?.(); - }); - - return showWave; -} diff --git a/components/_util/wave/util.ts b/components/_util/wave/util.ts deleted file mode 100644 index cd5bf6377..000000000 --- a/components/_util/wave/util.ts +++ /dev/null @@ -1,35 +0,0 @@ -export function isNotGrey(color: string) { - // eslint-disable-next-line no-useless-escape - const match = (color || '').match(/rgba?\((\d*), (\d*), (\d*)(, [\d.]*)?\)/); - if (match && match[1] && match[2] && match[3]) { - return !(match[1] === match[2] && match[2] === match[3]); - } - return true; -} - -export function isValidWaveColor(color: string) { - return ( - color && - color !== '#fff' && - color !== '#ffffff' && - color !== 'rgb(255, 255, 255)' && - color !== 'rgba(255, 255, 255, 1)' && - isNotGrey(color) && - !/rgba\((?:\d*, ){3}0\)/.test(color) && // any transparent rgba color - color !== 'transparent' - ); -} - -export function getTargetWaveColor(node: HTMLElement) { - const { borderTopColor, borderColor, backgroundColor } = getComputedStyle(node); - if (isValidWaveColor(borderTopColor)) { - return borderTopColor; - } - if (isValidWaveColor(borderColor)) { - return borderColor; - } - if (isValidWaveColor(backgroundColor)) { - return backgroundColor; - } - return null; -} diff --git a/components/affix/__tests__/__snapshots__/demo.test.js.snap b/components/affix/__tests__/__snapshots__/demo.test.js.snap deleted file mode 100644 index 608656187..000000000 --- a/components/affix/__tests__/__snapshots__/demo.test.js.snap +++ /dev/null @@ -1,39 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`renders ./components/affix/demo/basic.vue correctly 1`] = ` -
- -
-
-
-
- -
-
-`; - -exports[`renders ./components/affix/demo/on-change.vue correctly 1`] = ` -
- -
-
-`; - -exports[`renders ./components/affix/demo/target.vue correctly 1`] = ` -
-
-
- -
-
-
-
-`; diff --git a/components/affix/__tests__/demo.test.js b/components/affix/__tests__/demo.test.js deleted file mode 100644 index 58fcda3f8..000000000 --- a/components/affix/__tests__/demo.test.js +++ /dev/null @@ -1,3 +0,0 @@ -import demoTest from '../../../tests/shared/demoTest'; - -demoTest('affix'); diff --git a/components/affix/__tests__/index.test.js b/components/affix/__tests__/index.test.js deleted file mode 100644 index d8422deef..000000000 --- a/components/affix/__tests__/index.test.js +++ /dev/null @@ -1,116 +0,0 @@ -import Affix from '..'; -import Button from '../../button'; -import { mount } from '@vue/test-utils'; -import { spyElementPrototype } from '../../__tests__/util/domHook'; -const events = {}; - -const AffixMounter = { - props: ['offsetBottom', 'offsetTop'], - mounted() { - this.$refs.container.addEventListener = jest.fn().mockImplementation((event, cb) => { - events[event] = cb; - }); - }, - methods: { - getTarget() { - return this.$refs.container; - }, - }, - - render() { - return ( -
- this.$refs.container} ref="affix"> - - -
- ); - }, -}; -describe('Affix Render', () => { - let wrapper; - let domMock; - const classRect = { - container: { - top: 1000, - bottom: 100, - }, - }; - beforeAll(() => { - document.body.innerHTML = ''; - jest.useFakeTimers(); - domMock = spyElementPrototype(HTMLElement, 'getBoundingClientRect', function mockBounding() { - return ( - classRect[this.className] || { - top: 0, - bottom: 0, - } - ); - }); - }); - afterAll(() => { - jest.useRealTimers(); - domMock.mockRestore(); - }); - const movePlaceholder = top => { - classRect.fixed = { - top, - bottom: top, - }; - events.scroll({ - type: 'scroll', - }); - jest.runAllTimers(); - }; - it('Anchor render perfectly', () => { - wrapper = mount(AffixMounter, { attachTo: 'body' }); - jest.runAllTimers(); - - movePlaceholder(0); - expect(wrapper.vm.$refs.affix.affixStyle).toBeFalsy(); - - // movePlaceholder(100); - // expect(wrapper.vm.$refs.affix.affixStyle).toBeTruthy(); - - movePlaceholder(0); - expect(wrapper.vm.$refs.affix.affixStyle).toBeFalsy(); - }); - it('support offsetBottom', () => { - wrapper = mount(AffixMounter, { - attachTo: 'body', - props: { - offsetBottom: 0, - }, - }); - - jest.runAllTimers(); - - movePlaceholder(300); - //expect(wrapper.vm.$refs.affix.affixStyle).toBeTruthy(); - - movePlaceholder(0); - expect(wrapper.vm.$refs.affix.affixStyle).toBeFalsy(); - - // movePlaceholder(300); - // expect(wrapper.vm.$refs.affix.affixStyle).toBeTruthy(); - }); - - // it('updatePosition when offsetTop changed', () => { - // wrapper = mount(AffixMounter, { - // attachTo: 'body', - // props: { - // offsetTop: 0, - // }, - // }); - - // jest.runAllTimers(); - - // movePlaceholder(-100); - // expect(wrapper.vm.$refs.affix.affixStyle.top).toBe('0px'); - // wrapper.setProps({ - // offsetTop: 10, - // }); - // jest.runAllTimers(); - // expect(wrapper.vm.$refs.affix.affixStyle.top).toBe('10px'); - // }); -}); diff --git a/components/affix/demo/basic.vue b/components/affix/demo/basic.vue deleted file mode 100644 index cab12bdd3..000000000 --- a/components/affix/demo/basic.vue +++ /dev/null @@ -1,33 +0,0 @@ - ---- -order: 0 -title: - zh-CN: 基本 - en-US: Basic ---- - -## zh-CN - -最简单的用法。 - -## en-US - -The simplest usage. - - - - - - diff --git a/components/affix/demo/index.vue b/components/affix/demo/index.vue deleted file mode 100644 index a0d301bea..000000000 --- a/components/affix/demo/index.vue +++ /dev/null @@ -1,26 +0,0 @@ - - - diff --git a/components/affix/demo/on-change.vue b/components/affix/demo/on-change.vue deleted file mode 100644 index 2bd905c44..000000000 --- a/components/affix/demo/on-change.vue +++ /dev/null @@ -1,28 +0,0 @@ - ---- -order: 1 -title: - zh-CN: 固定状态改变的回调 - en-US: Callback ---- - -## zh-CN - -可以获得是否固定的状态。 - -## en-US - -Callback with affixed state. - - - - - diff --git a/components/affix/demo/target.vue b/components/affix/demo/target.vue deleted file mode 100644 index 852d46f28..000000000 --- a/components/affix/demo/target.vue +++ /dev/null @@ -1,43 +0,0 @@ - ---- -order: 2 -title: - zh-CN: 滚动容器 - en-US: Container to scroll. ---- - -## zh-CN - -用 `target` 设置 `Affix` 需要监听其滚动事件的元素,默认为 `window`。 - -## en-US - -Set a `target` for 'Affix', which is listen to scroll event of target element (default is `window`). - - - - - - diff --git a/components/affix/index.en-US.md b/components/affix/index.en-US.md deleted file mode 100644 index bfa3934dd..000000000 --- a/components/affix/index.en-US.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -category: Components -type: Other -title: Affix -cover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*YSm4RI3iOJ8AAAAAAAAAAAAADrJ8AQ/original -coverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*03dxS64LxeQAAAAAAAAAAAAADrJ8AQ/original ---- - -Wrap Affix around another component to make it stick the viewport. - -## When To Use - -On longer web pages, its helpful for some content to stick to the viewport. This is common for menus and actions. - -Please note that Affix should not cover other content on the page, especially when the size of the viewport is small. - -## API - -| Property | Description | Type | Default | Version | -| --- | --- | --- | --- | --- | -| offsetBottom | Offset from the bottom of the viewport (in pixels) | number | - | | -| offsetTop | Offset from the top of the viewport (in pixels) | number | 0 | | -| target | Specifies the scrollable area DOM node | () => HTMLElement | () => window | | - -### events - -| Events Name | Description | Arguments | Version | -| ----------- | ---------------------------------------- | --------------------------- | ------- | -| change | Callback for when Affix state is changed | (affixed?: boolean) => void | | - -**Note:** Children of `Affix` must not have the property `position: absolute`, but you can set `position: absolute` on `Affix` itself: - -```html -... -``` - -## FAQ - -### When binding container with `target` in Affix, elements sometimes move out of the container. - -We only listen to container scroll events for performance consideration. You can add custom listeners if you still want to, like react demo - -Related issues:[#3938](https://github.com/ant-design/ant-design/issues/3938) [#5642](https://github.com/ant-design/ant-design/issues/5642) [#16120](https://github.com/ant-design/ant-design/issues/16120) - -### When Affix is ​​used in a horizontal scroll container, the position of the element `left` is incorrect. - -Affix is ​​generally only applicable to areas with one-way scrolling, and only supports usage in vertical scrolling containers. If you want to use it in a horizontal container, you can consider implementing with the native `position: sticky` property. diff --git a/components/affix/index.tsx b/components/affix/index.tsx deleted file mode 100644 index 95155dd39..000000000 --- a/components/affix/index.tsx +++ /dev/null @@ -1,292 +0,0 @@ -import type { ComponentPublicInstance, CSSProperties, ExtractPropTypes, PropType } from 'vue'; -import { - defineComponent, - shallowRef, - reactive, - watch, - onMounted, - getCurrentInstance, - computed, - onUnmounted, - onUpdated, -} from 'vue'; -import classNames from '../_util/classNames'; -import ResizeObserver from '../vc-resize-observer'; -import throttleByAnimationFrame from '../_util/throttleByAnimationFrame'; -import { withInstall } from '../_util/type'; -import { - addObserveTarget, - removeObserveTarget, - getTargetRect, - getFixedTop, - getFixedBottom, -} from './utils'; -import useConfigInject from '../config-provider/hooks/useConfigInject'; -import omit from '../_util/omit'; -import useStyle from './style'; -function getDefaultTarget() { - return typeof window !== 'undefined' ? window : null; -} -const AFFIX_STATUS_NONE = 0; -const AFFIX_STATUS_PREPARE = 1; - -type AffixStatus = typeof AFFIX_STATUS_NONE | typeof AFFIX_STATUS_PREPARE; - -export interface AffixState { - affixStyle?: CSSProperties; - placeholderStyle?: CSSProperties; - status: AffixStatus; - lastAffix: boolean; - prevTarget: Window | HTMLElement | null; -} - -// Affix -export const affixProps = () => ({ - /** - * 距离窗口顶部达到指定偏移量后触发 - */ - offsetTop: Number, - /** 距离窗口底部达到指定偏移量后触发 */ - offsetBottom: Number, - /** 设置 Affix 需要监听其滚动事件的元素,值为一个返回对应 DOM 元素的函数 */ - target: { - type: Function as PropType<() => Window | HTMLElement | null>, - default: getDefaultTarget, - }, - prefixCls: String, - /** 固定状态改变时触发的回调函数 */ - onChange: Function as PropType, - onTestUpdatePosition: Function as PropType, -}); - -export type AffixProps = Partial>>; - -export type AffixEmits = { - change: (lastAffix: boolean) => void; - testUpdatePosition: () => void; -}; - -export type AffixExpose = { - updatePosition: (...args: any[]) => void; - lazyUpdatePosition: (...args: any[]) => void; -}; - -export type AffixInstance = ComponentPublicInstance; -const Affix = defineComponent({ - compatConfig: { MODE: 3 }, - name: 'AAffix', - inheritAttrs: false, - props: affixProps(), - setup(props, { slots, emit, expose, attrs }) { - const placeholderNode = shallowRef(); - const fixedNode = shallowRef(); - const state = reactive({ - affixStyle: undefined, - placeholderStyle: undefined, - status: AFFIX_STATUS_NONE, - lastAffix: false, - prevTarget: null, - timeout: null, - }); - const currentInstance = getCurrentInstance(); - - const offsetTop = computed(() => { - return props.offsetBottom === undefined && props.offsetTop === undefined - ? 0 - : props.offsetTop; - }); - const offsetBottom = computed(() => props.offsetBottom); - const measure = () => { - const { status, lastAffix } = state; - const { target } = props; - if ( - status !== AFFIX_STATUS_PREPARE || - !fixedNode.value || - !placeholderNode.value || - !target - ) { - return; - } - - const targetNode = target(); - if (!targetNode) { - return; - } - - const newState = { - status: AFFIX_STATUS_NONE, - } as AffixState; - const placeholderRect = getTargetRect(placeholderNode.value as HTMLElement); - - if ( - placeholderRect.top === 0 && - placeholderRect.left === 0 && - placeholderRect.width === 0 && - placeholderRect.height === 0 - ) { - return; - } - - const targetRect = getTargetRect(targetNode); - const fixedTop = getFixedTop(placeholderRect, targetRect, offsetTop.value); - const fixedBottom = getFixedBottom(placeholderRect, targetRect, offsetBottom.value); - if ( - placeholderRect.top === 0 && - placeholderRect.left === 0 && - placeholderRect.width === 0 && - placeholderRect.height === 0 - ) { - return; - } - - if (fixedTop !== undefined) { - const width = `${placeholderRect.width}px`; - const height = `${placeholderRect.height}px`; - - newState.affixStyle = { - position: 'fixed', - top: fixedTop, - width, - height, - }; - newState.placeholderStyle = { - width, - height, - }; - } else if (fixedBottom !== undefined) { - const width = `${placeholderRect.width}px`; - const height = `${placeholderRect.height}px`; - - newState.affixStyle = { - position: 'fixed', - bottom: fixedBottom, - width, - height, - }; - newState.placeholderStyle = { - width, - height, - }; - } - - newState.lastAffix = !!newState.affixStyle; - if (lastAffix !== newState.lastAffix) { - emit('change', newState.lastAffix); - } - // update state - Object.assign(state, newState); - }; - const prepareMeasure = () => { - Object.assign(state, { - status: AFFIX_STATUS_PREPARE, - affixStyle: undefined, - placeholderStyle: undefined, - }); - // Test if `updatePosition` called - if (process.env.NODE_ENV === 'test') { - emit('testUpdatePosition'); - } - }; - - const updatePosition = throttleByAnimationFrame(() => { - prepareMeasure(); - }); - const lazyUpdatePosition = throttleByAnimationFrame(() => { - const { target } = props; - const { affixStyle } = state; - - // Check position change before measure to make Safari smooth - if (target && affixStyle) { - const targetNode = target(); - if (targetNode && placeholderNode.value) { - const targetRect = getTargetRect(targetNode); - const placeholderRect = getTargetRect(placeholderNode.value as HTMLElement); - const fixedTop = getFixedTop(placeholderRect, targetRect, offsetTop.value); - const fixedBottom = getFixedBottom(placeholderRect, targetRect, offsetBottom.value); - if ( - (fixedTop !== undefined && affixStyle.top === fixedTop) || - (fixedBottom !== undefined && affixStyle.bottom === fixedBottom) - ) { - return; - } - } - } - // Directly call prepare measure since it's already throttled. - prepareMeasure(); - }); - - expose({ - updatePosition, - lazyUpdatePosition, - }); - watch( - () => props.target, - val => { - const newTarget = val?.() || null; - if (state.prevTarget !== newTarget) { - removeObserveTarget(currentInstance); - if (newTarget) { - addObserveTarget(newTarget, currentInstance); - // Mock Event object. - updatePosition(); - } - state.prevTarget = newTarget; - } - }, - ); - watch(() => [props.offsetTop, props.offsetBottom], updatePosition); - onMounted(() => { - const { target } = props; - if (target) { - // [Legacy] Wait for parent component ref has its value. - // We should use target as directly element instead of function which makes element check hard. - state.timeout = setTimeout(() => { - addObserveTarget(target(), currentInstance); - // Mock Event object. - updatePosition(); - }); - } - }); - onUpdated(() => { - measure(); - }); - onUnmounted(() => { - clearTimeout(state.timeout); - removeObserveTarget(currentInstance); - (updatePosition as any).cancel(); - // https://github.com/ant-design/ant-design/issues/22683 - (lazyUpdatePosition as any).cancel(); - }); - - const { prefixCls } = useConfigInject('affix', props); - const [wrapSSR, hashId, cssVarCls] = useStyle(prefixCls); - return () => { - const { affixStyle, placeholderStyle, status } = state; - const className = classNames({ - [prefixCls.value]: affixStyle, - [hashId.value]: true, - [cssVarCls.value]: true, - }); - const restProps = omit(props, [ - 'prefixCls', - 'offsetTop', - 'offsetBottom', - 'target', - 'onChange', - 'onTestUpdatePosition', - ]); - return wrapSSR( - -
- {affixStyle && - , - ); - }; - }, -}); - -export default withInstall(Affix); diff --git a/components/affix/index.zh-CN.md b/components/affix/index.zh-CN.md deleted file mode 100644 index 4044975d0..000000000 --- a/components/affix/index.zh-CN.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -category: Components -subtitle: 固钉 -type: 其他 -title: Affix -cover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*YSm4RI3iOJ8AAAAAAAAAAAAADrJ8AQ/original -coverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*03dxS64LxeQAAAAAAAAAAAAADrJ8AQ/original ---- - -将页面元素钉在可视范围。 - -## 何时使用 - -当内容区域比较长,需要滚动页面时,这部分内容对应的操作或者导航需要在滚动范围内始终展现。常用于侧边菜单和按钮组合。 - -页面可视范围过小时,慎用此功能以免遮挡页面内容。 - -## API - -| 成员 | 说明 | 类型 | 默认值 | 版本 | -| --- | --- | --- | --- | --- | -| offsetBottom | 距离窗口底部达到指定偏移量后触发 | number | | | -| offsetTop | 距离窗口顶部达到指定偏移量后触发 | number | 0 | | -| target | 设置 `Affix` 需要监听其滚动事件的元素,值为一个返回对应 DOM 元素的函数 | () => HTMLElement | () => window | | - -### 事件 - -| 事件名称 | 说明 | 回调参数 | 版本 | | -| -------- | ---------------------------- | --------------------------- | ---- | --- | -| change | 固定状态改变时触发的回调函数 | (affixed?: boolean) => void | - | | - -**注意:**`Affix` 内的元素不要使用绝对定位,如需要绝对定位的效果,可以直接设置 `Affix` 为绝对定位: - -```html -... -``` - -## FAQ - -### Affix 使用 `target` 绑定容器时,元素会跑到容器外。 - -从性能角度考虑,我们只监听容器滚动事件。如果希望任意滚动,你可以在窗体添加滚动监听, 参考 react 版本示例 - -相关 issue:[#3938](https://github.com/ant-design/ant-design/issues/3938) [#5642](https://github.com/ant-design/ant-design/issues/5642) [#16120](https://github.com/ant-design/ant-design/issues/16120) - -### Affix 在水平滚动容器中使用时, 元素 `left` 位置不正确。 - -Affix 一般只适用于单向滚动的区域,只支持在垂直滚动容器中使用。如果希望在水平容器中使用,你可以考虑使用 原生 `position: sticky` 实现。 - -相关 issue: [#29108](https://github.com/ant-design/ant-design/issues/29108) diff --git a/components/affix/style/index.ts b/components/affix/style/index.ts deleted file mode 100644 index be895766d..000000000 --- a/components/affix/style/index.ts +++ /dev/null @@ -1,32 +0,0 @@ -import type { CSSObject } from '../../_util/cssinjs'; -import { FullToken, GenerateStyle, genStyleHooks, GetDefaultToken } from '../../theme/internal'; - -export interface ComponentToken { - /** - * @desc 弹出层的 z-index - * @descEN z-index of popup - */ - zIndexPopup: number; -} - -interface AffixToken extends FullToken<'Affix'> { - // -} - -// ============================== Shared ============================== -const genSharedAffixStyle: GenerateStyle = (token): CSSObject => { - const { componentCls } = token; - return { - [componentCls]: { - position: 'fixed', - zIndex: token.zIndexPopup, - }, - }; -}; - -export const prepareComponentToken: GetDefaultToken<'Affix'> = token => ({ - zIndexPopup: token.zIndexBase + 10, -}); - -// ============================== Export ============================== -export default genStyleHooks('Affix', genSharedAffixStyle, prepareComponentToken); diff --git a/components/affix/utils.ts b/components/affix/utils.ts deleted file mode 100644 index 08b46ea1e..000000000 --- a/components/affix/utils.ts +++ /dev/null @@ -1,113 +0,0 @@ -import addEventListener from '../vc-util/Dom/addEventListener'; -import supportsPassive from '../_util/supportsPassive'; - -export type BindElement = HTMLElement | Window | null | undefined; - -export function getTargetRect(target: BindElement): DOMRect { - return target !== window - ? (target as HTMLElement).getBoundingClientRect() - : ({ top: 0, bottom: window.innerHeight } as DOMRect); -} - -export function getFixedTop(placeholderRect: DOMRect, targetRect: DOMRect, offsetTop?: number) { - if ( - offsetTop !== undefined && - Math.round(targetRect.top) > Math.round(placeholderRect.top) - offsetTop - ) { - return `${offsetTop + targetRect.top}px`; - } - return undefined; -} - -export function getFixedBottom( - placeholderRect: DOMRect, - targetRect: DOMRect, - offsetBottom?: number, -) { - if ( - offsetBottom !== undefined && - Math.round(targetRect.bottom) < Math.round(placeholderRect.bottom) + offsetBottom - ) { - const targetBottomOffset = window.innerHeight - targetRect.bottom; - return `${offsetBottom + targetBottomOffset}px`; - } - return undefined; -} - -// ======================== Observer ======================== -const TRIGGER_EVENTS: (keyof WindowEventMap)[] = [ - 'resize', - 'scroll', - 'touchstart', - 'touchmove', - 'touchend', - 'pageshow', - 'load', -]; - -interface ObserverEntity { - target: HTMLElement | Window; - affixList: any[]; - eventHandlers: { [eventName: string]: any }; -} - -let observerEntities: ObserverEntity[] = []; - -export function getObserverEntities() { - // Only used in test env. Can be removed if refactor. - return observerEntities; -} - -export function addObserveTarget(target: HTMLElement | Window | null, affix: T): void { - if (!target) return; - - let entity = observerEntities.find(item => item.target === target); - - if (entity) { - entity.affixList.push(affix); - } else { - entity = { - target, - affixList: [affix], - eventHandlers: {}, - }; - observerEntities.push(entity); - - // Add listener - TRIGGER_EVENTS.forEach(eventName => { - entity!.eventHandlers[eventName] = addEventListener(target, eventName, () => { - entity!.affixList.forEach( - targetAffix => { - const { lazyUpdatePosition } = (targetAffix as any).exposed; - lazyUpdatePosition(); - }, - (eventName === 'touchstart' || eventName === 'touchmove') && supportsPassive - ? ({ passive: true } as EventListenerOptions) - : false, - ); - }); - }); - } -} - -export function removeObserveTarget(affix: T): void { - const observerEntity = observerEntities.find(oriObserverEntity => { - const hasAffix = oriObserverEntity.affixList.some(item => item === affix); - if (hasAffix) { - oriObserverEntity.affixList = oriObserverEntity.affixList.filter(item => item !== affix); - } - return hasAffix; - }); - - if (observerEntity && observerEntity.affixList.length === 0) { - observerEntities = observerEntities.filter(item => item !== observerEntity); - - // Remove listener - TRIGGER_EVENTS.forEach(eventName => { - const handler = observerEntity.eventHandlers[eventName]; - if (handler && handler.remove) { - handler.remove(); - } - }); - } -} diff --git a/components/alert/__tests__/__snapshots__/demo.test.js.snap b/components/alert/__tests__/__snapshots__/demo.test.js.snap deleted file mode 100644 index 545d66dbd..000000000 --- a/components/alert/__tests__/__snapshots__/demo.test.js.snap +++ /dev/null @@ -1,487 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`renders ./components/alert/demo/action.vue correctly 1`] = ` -
-
- -
- -
- -
- -
- -
- -
- -
- -
-`; - -exports[`renders ./components/alert/demo/banner.vue correctly 1`] = ` -
-
- -
- -
- -
- -
- -
- -
- -
- -
-`; - -exports[`renders ./components/alert/demo/basic.vue correctly 1`] = ` - -`; - -exports[`renders ./components/alert/demo/closable.vue correctly 1`] = ` -
-
- -
- -
- -
- -
-`; - -exports[`renders ./components/alert/demo/close-text.vue correctly 1`] = ` - -`; - -exports[`renders ./components/alert/demo/custom-icon.vue correctly 1`] = ` -
-
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
-`; - -exports[`renders ./components/alert/demo/description.vue correctly 1`] = ` -
-
- -
- -
- -
- -
- -
- -
- -
- -
-`; - -exports[`renders ./components/alert/demo/icon.vue correctly 1`] = ` -
-
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
-`; - -exports[`renders ./components/alert/demo/smooth-closed.vue correctly 1`] = ` - -`; - -exports[`renders ./components/alert/demo/style.vue correctly 1`] = ` -
-
- -
- -
- -
- -
- -
- -
- -
- -
-`; diff --git a/components/alert/__tests__/demo.test.js b/components/alert/__tests__/demo.test.js deleted file mode 100644 index 081086401..000000000 --- a/components/alert/__tests__/demo.test.js +++ /dev/null @@ -1,3 +0,0 @@ -import demoTest from '../../../tests/shared/demoTest'; - -demoTest('alert'); diff --git a/components/alert/__tests__/index.test.js b/components/alert/__tests__/index.test.js deleted file mode 100644 index e9e72d43f..000000000 --- a/components/alert/__tests__/index.test.js +++ /dev/null @@ -1,71 +0,0 @@ -import { mount } from '@vue/test-utils'; -import Alert from '..'; - -describe('Alert', () => { - beforeAll(() => { - jest.useFakeTimers(); - }); - - afterAll(() => { - jest.useRealTimers(); - }); - - it('could be closed', () => { - const onClose = jest.fn(); - const afterClose = jest.fn(); - const wrapper = mount({ - render() { - return ( - - ); - }, - }); - wrapper.find('.ant-alert-close-icon').trigger('click'); - expect(onClose).toHaveBeenCalled(); - jest.runAllTimers(); - wrapper.vm.$refs.alert.animationEnd(); - expect(afterClose).toHaveBeenCalled(); - }); - - describe('data and aria props', () => { - it('sets data attributes on input', () => { - const wrapper = mount({ - render() { - return ; - }, - }); - const input = wrapper.find('.ant-alert').element; - expect(input.getAttribute('data-test')).toBe('test-id'); - expect(input.getAttribute('data-id')).toBe('12345'); - }); - - it('sets aria attributes on input', () => { - const wrapper = mount({ - render() { - return ; - }, - }); - - const input = wrapper.find('.ant-alert').element; - expect(input.getAttribute('aria-describedby')).toBe('some-label'); - }); - - it('sets role attribute on input', () => { - const wrapper = mount({ - render() { - return ; - }, - }); - - const input = wrapper.find('.ant-alert').element; - expect(input.getAttribute('role')).toBe('status'); - }); - }); -}); diff --git a/components/alert/demo/action.vue b/components/alert/demo/action.vue deleted file mode 100644 index d95a4c188..000000000 --- a/components/alert/demo/action.vue +++ /dev/null @@ -1,57 +0,0 @@ - ---- -order: 0 -title: - zh-CN: 操作 - en-US: Action ---- - -## zh-CN - -可以在右上角自定义操作项。 - -## en-US - -Custom action. - - - - diff --git a/components/alert/demo/banner.vue b/components/alert/demo/banner.vue deleted file mode 100644 index cab0cff28..000000000 --- a/components/alert/demo/banner.vue +++ /dev/null @@ -1,30 +0,0 @@ - ---- -order: 6 -title: - zh-CN: 顶部公告 - en-US: Banner ---- - -## zh-CN - -最简单的用法,适用于简短的警告提示。 - -## en-US - -Display Alert as a banner at top of page. - - - - diff --git a/components/alert/demo/basic.vue b/components/alert/demo/basic.vue deleted file mode 100644 index 86000184f..000000000 --- a/components/alert/demo/basic.vue +++ /dev/null @@ -1,21 +0,0 @@ - ---- -order: 0 -title: - zh-CN: 基本用法 - en-US: Basic usage ---- - -## zh-CN - -最简单的用法,适用于简短的警告提示。 - -## en-US - -The simplest usage for short messages. - - - - diff --git a/components/alert/demo/closable.vue b/components/alert/demo/closable.vue deleted file mode 100644 index c75931f14..000000000 --- a/components/alert/demo/closable.vue +++ /dev/null @@ -1,41 +0,0 @@ - ---- -order: 2 -title: - zh-CN: 可关闭的警告提示 - en-US: Customized Close Text ---- - -## zh-CN - -显示关闭按钮,点击可关闭警告提示。 - -## en-US - -To show close button. - - - - - - diff --git a/components/alert/demo/close-text.vue b/components/alert/demo/close-text.vue deleted file mode 100644 index 817dd7c15..000000000 --- a/components/alert/demo/close-text.vue +++ /dev/null @@ -1,21 +0,0 @@ - ---- -order: 5 -title: - zh-CN: 自定义关闭 - en-US: Customized Close Text ---- - -## zh-CN - -自定义图标让信息类型更加醒目。 - -## en-US - -Replace the default icon with customized text. - - - - diff --git a/components/alert/demo/custom-icon.vue b/components/alert/demo/custom-icon.vue deleted file mode 100644 index 75ba49089..000000000 --- a/components/alert/demo/custom-icon.vue +++ /dev/null @@ -1,73 +0,0 @@ - ---- -order: 7 -title: - zh-CN: 自定义图标 - en-US: Custom Icon ---- - -## zh-CN - -可以自定义关闭,自定义的文字会替换原先的关闭 `Icon`。 - -## en-US - -Custom Icon make information more clear and more friendly. - - - - - - diff --git a/components/alert/demo/description.vue b/components/alert/demo/description.vue deleted file mode 100644 index d50c51a99..000000000 --- a/components/alert/demo/description.vue +++ /dev/null @@ -1,46 +0,0 @@ - ---- -order: 3 -title: - zh-CN: 含有辅助性文字介绍 - en-US: Description ---- - -## zh-CN - -含有辅助性文字介绍的警告提示。 - -## en-US - -Additional description for alert message. - - - - diff --git a/components/alert/demo/icon.vue b/components/alert/demo/icon.vue deleted file mode 100644 index 1215fd749..000000000 --- a/components/alert/demo/icon.vue +++ /dev/null @@ -1,50 +0,0 @@ - ---- -order: 4 -title: - zh-CN: 图标 - en-US: Icon ---- - -## zh-CN - -可口的图标让信息类型更加醒目。 - -## en-US - -Decent icon make information more clear and more friendly. - - - - diff --git a/components/alert/demo/index.vue b/components/alert/demo/index.vue deleted file mode 100644 index 1e732a391..000000000 --- a/components/alert/demo/index.vue +++ /dev/null @@ -1,53 +0,0 @@ - - - diff --git a/components/alert/demo/smooth-closed.vue b/components/alert/demo/smooth-closed.vue deleted file mode 100644 index a128bcfe3..000000000 --- a/components/alert/demo/smooth-closed.vue +++ /dev/null @@ -1,34 +0,0 @@ - ---- -order: 8 -title: - zh-CN: 平滑地卸载 - en-US: Smoothly Unmount ---- - -## zh-CN - -平滑、自然的卸载提示。 - -## en-US - -Smoothly and unaffectedly unmount Alert. - - - - - diff --git a/components/alert/demo/style.vue b/components/alert/demo/style.vue deleted file mode 100644 index 541aafd52..000000000 --- a/components/alert/demo/style.vue +++ /dev/null @@ -1,26 +0,0 @@ - ---- -order: 1 -title: - zh-CN: 四种样式 - en-US: More types ---- - -## zh-CN - -共有四种样式 `success`、`info`、`warning`、`error`。 - -## en-US - -There are 4 types of Alert: `success`, `info`, `warning`, `error`. - - - - diff --git a/components/alert/index.en-US.md b/components/alert/index.en-US.md deleted file mode 100644 index 5858d761e..000000000 --- a/components/alert/index.en-US.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -category: Components -type: Feedback -title: Alert -cover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*Ct7bT7rrTTAAAAAAAAAAAAAADrJ8AQ/original -coverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*-U3XQqYN7VsAAAAAAAAAAAAADrJ8AQ/original ---- - -Alert component for feedback. - -## When To Use - -- When you need to show alert messages to users. -- When you need a persistent static container which is closable by user actions. - -## API - -| Property | Description | Type | Default | Version | -| --- | --- | --- | --- | --- | -| action | The action of Alert | slot | - | 4.0.0 | -| afterClose | Called when close animation is finished | () => void | - | | -| banner | Whether to show as banner | boolean | false | | -| closable | Whether Alert can be closed | boolean | | | -| closeIcon | Custom close icon | slot | `` | 3.0 | -| closeText | Close text to show | string\|slot | - | | -| description | Additional content of Alert | string\|slot | - | | -| icon | Custom icon, effective when `showIcon` is `true` | vnode \| slot | - | | -| message | Content of Alert | string\|slot | - | | -| showIcon | Whether to show icon | boolean | false,in `banner` mode default is true | | -| type | Type of Alert styles, options: `success`, `info`, `warning`, `error` | string | `info`,in `banner` mode default is `warning` | | - -### events - -| Events Name | Description | Arguments | Version | -| ----------- | ----------------------------- | ----------------------- | ------- | -| close | Callback when Alert is closed | (e: MouseEvent) => void | - | diff --git a/components/alert/index.tsx b/components/alert/index.tsx deleted file mode 100644 index 9cd8660c9..000000000 --- a/components/alert/index.tsx +++ /dev/null @@ -1,206 +0,0 @@ -import type { CSSProperties, ExtractPropTypes, PropType } from 'vue'; -import { computed, defineComponent, shallowRef, Transition } from 'vue'; -import CloseOutlined from '@ant-design/icons-vue/CloseOutlined'; -import CheckCircleOutlined from '@ant-design/icons-vue/CheckCircleOutlined'; -import ExclamationCircleOutlined from '@ant-design/icons-vue/ExclamationCircleOutlined'; -import InfoCircleOutlined from '@ant-design/icons-vue/InfoCircleOutlined'; -import CloseCircleOutlined from '@ant-design/icons-vue/CloseCircleOutlined'; -import CheckCircleFilled from '@ant-design/icons-vue/CheckCircleFilled'; -import ExclamationCircleFilled from '@ant-design/icons-vue/ExclamationCircleFilled'; -import InfoCircleFilled from '@ant-design/icons-vue/InfoCircleFilled'; -import CloseCircleFilled from '@ant-design/icons-vue/CloseCircleFilled'; -import classNames from '../_util/classNames'; -import PropTypes from '../_util/vue-types'; -import { getTransitionProps } from '../_util/transition'; -import { isValidElement } from '../_util/props-util'; -import { tuple, withInstall } from '../_util/type'; -import { cloneElement } from '../_util/vnode'; -import type { NodeMouseEventHandler } from '../vc-tree/contextTypes'; -import useConfigInject from '../config-provider/hooks/useConfigInject'; -import useStyle from './style'; - -const iconMapFilled = { - success: CheckCircleFilled, - info: InfoCircleFilled, - error: CloseCircleFilled, - warning: ExclamationCircleFilled, -}; - -const iconMapOutlined = { - success: CheckCircleOutlined, - info: InfoCircleOutlined, - error: CloseCircleOutlined, - warning: ExclamationCircleOutlined, -}; - -const AlertTypes = tuple('success', 'info', 'warning', 'error'); - -export type AlertType = (typeof AlertTypes)[number]; - -export const alertProps = () => ({ - /** - * Type of Alert styles, options: `success`, `info`, `warning`, `error` - */ - type: PropTypes.oneOf(AlertTypes), - /** Whether Alert can be closed */ - closable: { type: Boolean, default: undefined }, - /** Close text to show */ - closeText: PropTypes.any, - /** Content of Alert */ - message: PropTypes.any, - /** Additional content of Alert */ - description: PropTypes.any, - /** Trigger when animation ending of Alert */ - afterClose: Function as PropType<() => void>, - /** Whether to show icon */ - showIcon: { type: Boolean, default: undefined }, - prefixCls: String, - banner: { type: Boolean, default: undefined }, - icon: PropTypes.any, - closeIcon: PropTypes.any, - onClose: Function as PropType, -}); - -export type AlertProps = Partial>>; - -const Alert = defineComponent({ - compatConfig: { MODE: 3 }, - name: 'AAlert', - inheritAttrs: false, - props: alertProps(), - setup(props, { slots, emit, attrs, expose }) { - const { prefixCls, direction } = useConfigInject('alert', props); - const [wrapSSR, hashId, cssVarCls] = useStyle(prefixCls); - const closing = shallowRef(false); - const closed = shallowRef(false); - const alertNode = shallowRef(); - - const handleClose = (e: MouseEvent) => { - e.preventDefault(); - - const dom = alertNode.value; - - dom.style.height = `${dom.offsetHeight}px`; - // Magic code - // 重复一次后才能正确设置 height - dom.style.height = `${dom.offsetHeight}px`; - - closing.value = true; - emit('close', e); - }; - - const animationEnd = () => { - closing.value = false; - closed.value = true; - props.afterClose?.(); - }; - const mergedType = computed(() => { - const { type } = props; - if (type !== undefined) { - return type; - } - // banner 模式默认为警告 - return props.banner ? 'warning' : 'info'; - }); - expose({ animationEnd }); - const motionStyle = shallowRef({}); - return () => { - const { banner, closeIcon: customCloseIcon = slots.closeIcon?.() } = props; - - let { closable, showIcon } = props; - - const closeText = props.closeText ?? slots.closeText?.(); - const description = props.description ?? slots.description?.(); - const message = props.message ?? slots.message?.(); - const icon = props.icon ?? slots.icon?.(); - const action = slots.action?.(); - - // banner模式默认有 Icon - showIcon = banner && showIcon === undefined ? true : showIcon; - - const IconType = (description ? iconMapOutlined : iconMapFilled)[mergedType.value] || null; - - // closeable when closeText is assigned - if (closeText) { - closable = true; - } - const prefixClsValue = prefixCls.value; - const alertCls = classNames(prefixClsValue, { - [`${prefixClsValue}-${mergedType.value}`]: true, - [`${prefixClsValue}-closing`]: closing.value, - [`${prefixClsValue}-with-description`]: !!description, - [`${prefixClsValue}-no-icon`]: !showIcon, - [`${prefixClsValue}-banner`]: !!banner, - [`${prefixClsValue}-closable`]: closable, - [`${prefixClsValue}-rtl`]: direction.value === 'rtl', - [hashId.value]: true, - [cssVarCls.value]: true, - }); - - const closeIcon = closable ? ( - - ) : null; - - const iconNode = (icon && - (isValidElement(icon) ? ( - cloneElement(icon, { - class: `${prefixClsValue}-icon`, - }) - ) : ( - {icon} - ))) || ; - - const transitionProps = getTransitionProps(`${prefixClsValue}-motion`, { - appear: false, - css: true, - onAfterLeave: animationEnd, - onBeforeLeave: (node: HTMLDivElement) => { - node.style.maxHeight = `${node.offsetHeight}px`; - }, - onLeave: (node: HTMLDivElement) => { - node.style.maxHeight = '0px'; - }, - }); - return wrapSSR( - closed.value ? null : ( - - - - ), - ); - }; - }, -}); - -export default withInstall(Alert); diff --git a/components/alert/index.zh-CN.md b/components/alert/index.zh-CN.md deleted file mode 100644 index 96890db7e..000000000 --- a/components/alert/index.zh-CN.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -category: Components -type: 反馈 -title: Alert -subtitle: 警告提示 -cover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*Ct7bT7rrTTAAAAAAAAAAAAAADrJ8AQ/original -coverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*-U3XQqYN7VsAAAAAAAAAAAAADrJ8AQ/original ---- - -警告提示,展现需要关注的信息。 - -## 何时使用 - -- 当某个页面需要向用户显示警告的信息时。 -- 非浮层的静态展现形式,始终展现,不会自动消失,用户可以点击关闭。 - -## API - -| 参数 | 说明 | 类型 | 默认值 | 版本 | -| --- | --- | --- | --- | --- | -| action | 自定义操作项 | slot | - | 4.0.0 | -| afterClose | 关闭动画结束后触发的回调函数 | () => void | - | | -| banner | 是否用作顶部公告 | boolean | false | | -| closable | 默认不显示关闭按钮 | boolean | 无 | | -| closeIcon | 自定义关闭 Icon | slot | `` | 3.0 | -| closeText | 自定义关闭按钮 | string\|slot | 无 | | -| description | 警告提示的辅助性文字介绍 | string\|slot | 无 | | -| icon | 自定义图标,`showIcon` 为 `true` 时有效 | vnode\|slot | - | | -| message | 警告提示内容 | string\|slot | 无 | | -| showIcon | 是否显示辅助图标 | boolean | false,`banner` 模式下默认值为 true | | -| type | 指定警告提示的样式,有四种选择 `success`、`info`、`warning`、`error` | string | `info`,`banner` 模式下默认值为 `warning` | | - -### 事件 - -| 事件名称 | 说明 | 回调参数 | 版本 | -| -------- | -------------------- | ----------------------- | ---- | -| close | 关闭时触发的回调函数 | (e: MouseEvent) => void | - | diff --git a/components/alert/style/index.ts b/components/alert/style/index.ts deleted file mode 100644 index ffb6f94f3..000000000 --- a/components/alert/style/index.ts +++ /dev/null @@ -1,252 +0,0 @@ -import { CSSObject, unit } from '../../_util/cssinjs'; -import { FullToken, GenerateStyle, genStyleHooks, GetDefaultToken } from '../../theme/internal'; -import { resetComponent } from '../../style'; -import { CSSProperties } from 'vue'; - -export interface ComponentToken { - // Component token here - /** - * @desc 默认内间距 - * @descEN Default padding - */ - defaultPadding: CSSProperties['padding']; - /** - * @desc 带有描述的内间距 - * @descEN Padding with description - */ - withDescriptionPadding: CSSProperties['padding']; - /** - * @desc 带有描述时的图标尺寸 - * @descEN Icon size with description - */ - withDescriptionIconSize: number; -} - -type AlertToken = FullToken<'Alert'> & { - // Custom token here -}; - -const genAlertTypeStyle = ( - bgColor: string, - borderColor: string, - iconColor: string, - token: AlertToken, - alertCls: string, -): CSSObject => ({ - background: bgColor, - border: `${unit(token.lineWidth)} ${token.lineType} ${borderColor}`, - [`${alertCls}-icon`]: { - color: iconColor, - }, -}); - -export const genBaseStyle: GenerateStyle = (token: AlertToken): CSSObject => { - const { - componentCls, - motionDurationSlow: duration, - marginXS, - marginSM, - fontSize, - fontSizeLG, - lineHeight, - borderRadiusLG: borderRadius, - motionEaseInOutCirc, - withDescriptionIconSize, - colorText, - colorTextHeading, - withDescriptionPadding, - defaultPadding, - } = token; - - return { - [componentCls]: { - ...resetComponent(token), - position: 'relative', - display: 'flex', - alignItems: 'center', - padding: defaultPadding, - wordWrap: 'break-word', - borderRadius, - - [`&${componentCls}-rtl`]: { - direction: 'rtl', - }, - - [`${componentCls}-content`]: { - flex: 1, - minWidth: 0, - }, - - [`${componentCls}-icon`]: { - marginInlineEnd: marginXS, - lineHeight: 0, - }, - - '&-description': { - display: 'none', - fontSize, - lineHeight, - }, - - '&-message': { - color: colorTextHeading, - }, - - [`&${componentCls}-motion-leave`]: { - overflow: 'hidden', - opacity: 1, - transition: `max-height ${duration} ${motionEaseInOutCirc}, opacity ${duration} ${motionEaseInOutCirc}, - padding-top ${duration} ${motionEaseInOutCirc}, padding-bottom ${duration} ${motionEaseInOutCirc}, - margin-bottom ${duration} ${motionEaseInOutCirc}`, - }, - - [`&${componentCls}-motion-leave-active`]: { - maxHeight: 0, - marginBottom: '0 !important', - paddingTop: 0, - paddingBottom: 0, - opacity: 0, - }, - }, - - [`${componentCls}-with-description`]: { - alignItems: 'flex-start', - padding: withDescriptionPadding, - [`${componentCls}-icon`]: { - marginInlineEnd: marginSM, - fontSize: withDescriptionIconSize, - lineHeight: 0, - }, - - [`${componentCls}-message`]: { - display: 'block', - marginBottom: marginXS, - color: colorTextHeading, - fontSize: fontSizeLG, - }, - - [`${componentCls}-description`]: { - display: 'block', - color: colorText, - }, - }, - - [`${componentCls}-banner`]: { - marginBottom: 0, - border: '0 !important', - borderRadius: 0, - }, - }; -}; - -export const genTypeStyle: GenerateStyle = (token: AlertToken): CSSObject => { - const { - componentCls, - - colorSuccess, - colorSuccessBorder, - colorSuccessBg, - - colorWarning, - colorWarningBorder, - colorWarningBg, - - colorError, - colorErrorBorder, - colorErrorBg, - - colorInfo, - colorInfoBorder, - colorInfoBg, - } = token; - - return { - [componentCls]: { - '&-success': genAlertTypeStyle( - colorSuccessBg, - colorSuccessBorder, - colorSuccess, - token, - componentCls, - ), - '&-info': genAlertTypeStyle(colorInfoBg, colorInfoBorder, colorInfo, token, componentCls), - '&-warning': genAlertTypeStyle( - colorWarningBg, - colorWarningBorder, - colorWarning, - token, - componentCls, - ), - '&-error': { - ...genAlertTypeStyle(colorErrorBg, colorErrorBorder, colorError, token, componentCls), - [`${componentCls}-description > pre`]: { - margin: 0, - padding: 0, - }, - }, - }, - }; -}; - -export const genActionStyle: GenerateStyle = (token: AlertToken): CSSObject => { - const { - componentCls, - iconCls, - motionDurationMid, - marginXS, - fontSizeIcon, - colorIcon, - colorIconHover, - } = token; - - return { - [componentCls]: { - '&-action': { - marginInlineStart: marginXS, - }, - - [`${componentCls}-close-icon`]: { - marginInlineStart: marginXS, - padding: 0, - overflow: 'hidden', - fontSize: fontSizeIcon, - lineHeight: unit(fontSizeIcon), - backgroundColor: 'transparent', - border: 'none', - outline: 'none', - cursor: 'pointer', - - [`${iconCls}-close`]: { - color: colorIcon, - transition: `color ${motionDurationMid}`, - '&:hover': { - color: colorIconHover, - }, - }, - }, - - '&-close-text': { - color: colorIcon, - transition: `color ${motionDurationMid}`, - '&:hover': { - color: colorIconHover, - }, - }, - }, - }; -}; - -export const prepareComponentToken: GetDefaultToken<'Alert'> = token => { - const paddingHorizontal = 12; // Fixed value here. - return { - withDescriptionIconSize: token.fontSizeHeading3, - defaultPadding: `${token.paddingContentVerticalSM}px ${paddingHorizontal}px`, - withDescriptionPadding: `${token.paddingMD}px ${token.paddingContentHorizontalLG}px`, - }; -}; - -export default genStyleHooks( - 'Alert', - token => [genBaseStyle(token), genTypeStyle(token), genActionStyle(token)], - prepareComponentToken, -); diff --git a/components/anchor/Anchor.tsx b/components/anchor/Anchor.tsx deleted file mode 100644 index d727e3d40..000000000 --- a/components/anchor/Anchor.tsx +++ /dev/null @@ -1,333 +0,0 @@ -import type { CSSProperties, ExtractPropTypes, PropType } from 'vue'; -import { - defineComponent, - nextTick, - onBeforeUnmount, - onMounted, - onUpdated, - reactive, - ref, - computed, -} from 'vue'; -import scrollIntoView from 'scroll-into-view-if-needed'; -import classNames from '../_util/classNames'; -import addEventListener from '../vc-util/Dom/addEventListener'; -import Affix from '../affix'; -import scrollTo from '../_util/scrollTo'; -import getScroll from '../_util/getScroll'; -import useConfigInject from '../config-provider/hooks/useConfigInject'; -import useProvideAnchor from './context'; -import useStyle from './style'; -import type { AnchorLinkItemProps } from './AnchorLink'; -import AnchorLink from './AnchorLink'; -import PropTypes from '../_util/vue-types'; -import devWarning from '../vc-util/devWarning'; -import { arrayType } from '../_util/type'; -import useCSSVarCls from '../config-provider/hooks/useCssVarCls'; - -export type AnchorDirection = 'vertical' | 'horizontal'; - -function getDefaultContainer() { - return window; -} - -function getOffsetTop(element: HTMLElement, container: AnchorContainer): number { - if (!element.getClientRects().length) { - return 0; - } - - const rect = element.getBoundingClientRect(); - - if (rect.width || rect.height) { - if (container === window) { - return rect.top - element.ownerDocument!.documentElement!.clientTop; - } - return rect.top - (container as HTMLElement).getBoundingClientRect().top; - } - - return rect.top; -} - -const sharpMatcherRegx = /#([\S ]+)$/; - -interface Section { - link: string; - top: number; -} - -export type AnchorContainer = HTMLElement | Window; - -export const anchorProps = () => ({ - prefixCls: String, - offsetTop: Number, - bounds: Number, - affix: { type: Boolean, default: true }, - showInkInFixed: { type: Boolean, default: false }, - getContainer: Function as PropType<() => AnchorContainer>, - wrapperClass: String, - wrapperStyle: { type: Object as PropType, default: undefined as CSSProperties }, - getCurrentAnchor: Function as PropType<(activeLink: string) => string>, - targetOffset: Number, - items: arrayType(), - direction: PropTypes.oneOf(['vertical', 'horizontal'] as AnchorDirection[]).def('vertical'), - replace: Boolean, - onChange: Function as PropType<(currentActiveLink: string) => void>, - onClick: Function as PropType<(e: MouseEvent, link: { title: any; href: string }) => void>, -}); - -export type AnchorProps = Partial>>; - -export interface AnchorState { - scrollContainer: HTMLElement | Window; - links: string[]; - scrollEvent: any; - animating: boolean; -} - -export default defineComponent({ - compatConfig: { MODE: 3 }, - name: 'AAnchor', - inheritAttrs: false, - props: anchorProps(), - setup(props, { emit, attrs, slots, expose }) { - const { prefixCls, getTargetContainer, direction } = useConfigInject('anchor', props); - const anchorDirection = computed(() => props.direction ?? 'vertical'); - const rootCls = useCSSVarCls(prefixCls); - if (process.env.NODE_ENV !== 'production') { - devWarning( - props.items && typeof slots.default !== 'function', - 'Anchor', - '`Anchor children` is deprecated. Please use `items` instead.', - ); - } - - if (process.env.NODE_ENV !== 'production') { - devWarning( - !(anchorDirection.value === 'horizontal' && props.items?.some(n => 'children' in n)), - 'Anchor', - '`Anchor items#children` is not supported when `Anchor` direction is horizontal.', - ); - } - - const spanLinkNode = ref(null); - const anchorRef = ref(); - const state = reactive({ - links: [], - scrollContainer: null, - scrollEvent: null, - animating: false, - }); - const activeLink = ref(null); - const getContainer = computed(() => { - const { getContainer } = props; - return getContainer || getTargetContainer?.value || getDefaultContainer; - }); - // func... - const getCurrentAnchor = (offsetTop = 0, bounds = 5) => { - const linkSections: Array
= []; - const container = getContainer.value(); - state.links.forEach(link => { - const sharpLinkMatch = sharpMatcherRegx.exec(link.toString()); - if (!sharpLinkMatch) { - return; - } - const target = document.getElementById(sharpLinkMatch[1]); - if (target) { - const top = getOffsetTop(target, container); - if (top <= offsetTop + bounds) { - linkSections.push({ - link, - top, - }); - } - } - }); - - if (linkSections.length) { - const maxSection = linkSections.reduce((prev, curr) => (curr.top > prev.top ? curr : prev)); - return maxSection.link; - } - return ''; - }; - const setCurrentActiveLink = (link: string) => { - const { getCurrentAnchor } = props; - if (activeLink.value === link) { - return; - } - activeLink.value = typeof getCurrentAnchor === 'function' ? getCurrentAnchor(link) : link; - emit('change', link); - }; - const handleScrollTo = (link: string) => { - const { offsetTop, targetOffset } = props; - - setCurrentActiveLink(link); - const sharpLinkMatch = sharpMatcherRegx.exec(link); - if (!sharpLinkMatch) { - return; - } - const targetElement = document.getElementById(sharpLinkMatch[1]); - if (!targetElement) { - return; - } - - const container = getContainer.value(); - const scrollTop = getScroll(container); - const eleOffsetTop = getOffsetTop(targetElement, container); - let y = scrollTop + eleOffsetTop; - y -= targetOffset !== undefined ? targetOffset : offsetTop || 0; - state.animating = true; - - scrollTo(y, { - callback: () => { - state.animating = false; - }, - getContainer: getContainer.value, - }); - }; - expose({ - scrollTo: handleScrollTo, - }); - const handleScroll = () => { - if (state.animating) { - return; - } - const { offsetTop, bounds, targetOffset } = props; - const currentActiveLink = getCurrentAnchor( - targetOffset !== undefined ? targetOffset : offsetTop || 0, - bounds, - ); - setCurrentActiveLink(currentActiveLink); - }; - - const updateInk = () => { - const linkNode = anchorRef.value.querySelector(`.${prefixCls.value}-link-title-active`); - if (linkNode && spanLinkNode.value) { - const horizontalAnchor = anchorDirection.value === 'horizontal'; - spanLinkNode.value.style.top = horizontalAnchor - ? '' - : `${linkNode.offsetTop + linkNode.clientHeight / 2}px`; - spanLinkNode.value.style.height = horizontalAnchor ? '' : `${linkNode.clientHeight}px`; - spanLinkNode.value.style.left = horizontalAnchor ? `${linkNode.offsetLeft}px` : ''; - spanLinkNode.value.style.width = horizontalAnchor ? `${linkNode.clientWidth}px` : ''; - if (horizontalAnchor) { - scrollIntoView(linkNode, { - scrollMode: 'if-needed', - block: 'nearest', - }); - } - } - }; - - useProvideAnchor({ - registerLink: (link: string) => { - if (!state.links.includes(link)) { - state.links.push(link); - } - }, - unregisterLink: (link: string) => { - const index = state.links.indexOf(link); - if (index !== -1) { - state.links.splice(index, 1); - } - }, - activeLink, - scrollTo: handleScrollTo, - handleClick: (e, info) => { - emit('click', e, info); - }, - direction: anchorDirection, - }); - - onMounted(() => { - nextTick(() => { - const container = getContainer.value(); - state.scrollContainer = container; - state.scrollEvent = addEventListener(state.scrollContainer, 'scroll', handleScroll); - handleScroll(); - }); - }); - onBeforeUnmount(() => { - if (state.scrollEvent) { - state.scrollEvent.remove(); - } - }); - onUpdated(() => { - if (state.scrollEvent) { - const currentContainer = getContainer.value(); - if (state.scrollContainer !== currentContainer) { - state.scrollContainer = currentContainer; - state.scrollEvent.remove(); - state.scrollEvent = addEventListener(state.scrollContainer, 'scroll', handleScroll); - handleScroll(); - } - } - updateInk(); - }); - - const createNestedLink = (options?: AnchorLinkItemProps[]) => - Array.isArray(options) - ? options.map(option => { - const { children, key, href, target, class: cls, style, title } = option; - return ( - - {anchorDirection.value === 'vertical' ? createNestedLink(children) : null} - - ); - }) - : null; - - const [wrapSSR, hashId, cssVarCls] = useStyle(prefixCls, rootCls); - - return () => { - const { offsetTop, affix, showInkInFixed } = props; - const pre = prefixCls.value; - const inkClass = classNames(`${pre}-ink`, { - [`${pre}-ink-visible`]: activeLink.value, - }); - - const wrapperClass = classNames(hashId.value, props.wrapperClass, `${pre}-wrapper`, { - [`${pre}-wrapper-horizontal`]: anchorDirection.value === 'horizontal', - [`${pre}-rtl`]: direction.value === 'rtl', - [rootCls.value]: true, - [cssVarCls.value]: true, - }); - - const anchorClass = classNames(pre, { - [`${pre}-fixed`]: !affix && !showInkInFixed, - }); - - const wrapperStyle = { - maxHeight: offsetTop ? `calc(100vh - ${offsetTop}px)` : '100vh', - ...props.wrapperStyle, - }; - const anchorContent = ( -
-
- - {Array.isArray(props.items) ? createNestedLink(props.items) : slots.default?.()} -
-
- ); - - return wrapSSR( - !affix ? ( - anchorContent - ) : ( - - {anchorContent} - - ), - ); - }; - }, -}); diff --git a/components/anchor/AnchorLink.tsx b/components/anchor/AnchorLink.tsx deleted file mode 100644 index c45fc7ad5..000000000 --- a/components/anchor/AnchorLink.tsx +++ /dev/null @@ -1,112 +0,0 @@ -import type { ExtractPropTypes } from 'vue'; -import { defineComponent, nextTick, onBeforeUnmount, onMounted, watch } from 'vue'; -import { initDefaultProps } from '../_util/props-util'; -import classNames from '../_util/classNames'; -import useConfigInject from '../config-provider/hooks/useConfigInject'; -import { useInjectAnchor } from './context'; -import type { Key, VueNode, CustomSlotsType } from '../_util/type'; -import { objectType, anyType } from '../_util/type'; -import type { CSSProperties } from '../_util/cssinjs/hooks/useStyleRegister'; - -export const anchorLinkProps = () => ({ - prefixCls: String, - href: String, - title: anyType VueNode)>(), - target: String, - replace: Boolean, - /* private use */ - customTitleProps: objectType(), -}); -export interface AnchorLinkItemProps { - key: Key; - class?: string; - style?: CSSProperties; - href?: string; - target?: string; - children?: AnchorLinkItemProps[]; - title?: VueNode | ((item: AnchorLinkItemProps) => VueNode); -} - -export type AnchorLinkProps = Partial>>; - -export default defineComponent({ - compatConfig: { MODE: 3 }, - name: 'AAnchorLink', - inheritAttrs: false, - props: initDefaultProps(anchorLinkProps(), { href: '#' }), - slots: Object as CustomSlotsType<{ - title: any; - default: any; - customTitle: any; - }>, - setup(props, { slots, attrs }) { - let mergedTitle = null; - const { - handleClick: contextHandleClick, - scrollTo, - unregisterLink, - registerLink, - activeLink, - } = useInjectAnchor(); - const { prefixCls } = useConfigInject('anchor', props); - - const handleClick = (e: Event) => { - const { href } = props; - contextHandleClick(e, { title: mergedTitle, href }); - scrollTo(href); - if (props.replace) { - e.preventDefault(); - window.location.replace(href); - } - }; - - watch( - () => props.href, - (val, oldVal) => { - nextTick(() => { - unregisterLink(oldVal); - registerLink(val); - }); - }, - ); - - onMounted(() => { - registerLink(props.href); - }); - - onBeforeUnmount(() => { - unregisterLink(props.href); - }); - - return () => { - const { href, target, title = slots.title, customTitleProps = {} } = props; - const pre = prefixCls.value; - mergedTitle = typeof title === 'function' ? title(customTitleProps) : title; - const active = activeLink.value === href; - const wrapperClassName = classNames( - `${pre}-link`, - { - [`${pre}-link-active`]: active, - }, - attrs.class, - ); - const titleClassName = classNames(`${pre}-link-title`, { - [`${pre}-link-title-active`]: active, - }); - return ( - - ); - }; - }, -}); diff --git a/components/anchor/__tests__/Anchor.test.js b/components/anchor/__tests__/Anchor.test.js deleted file mode 100644 index 35923de3c..000000000 --- a/components/anchor/__tests__/Anchor.test.js +++ /dev/null @@ -1,213 +0,0 @@ -import { mount } from '@vue/test-utils'; -import { ref } from 'vue'; -import { sleep } from '../../../tests/utils'; -import Anchor from '..'; - -const { Link } = Anchor; - -let idCounter = 0; -const getHashUrl = () => `Anchor-API-${idCounter++}`; - -describe('Anchor Render', () => { - it('Anchor render perfectly', async () => { - const hash = getHashUrl(); - const anchor = ref(null); - const activeLink = ref(null); - const wrapper = mount( - { - render() { - return ( - { - activeLink.value = current; - }} - > - - - ); - }, - }, - { sync: false }, - ); - await sleep(); - wrapper.find(`a[href="#${hash}`).trigger('click'); - - await sleep(); - expect(activeLink.value).not.toBe(hash); - }); - it('Anchor render perfectly for complete href - click', async () => { - const currentActiveLink = ref(null); - const wrapper = mount( - { - render() { - return ( - { - currentActiveLink.value = current; - }} - > - - - ); - }, - }, - { sync: false }, - ); - await sleep(); - wrapper.find('a[href="http://www.example.com/#api"]').trigger('click'); - expect(currentActiveLink.value).toBe('http://www.example.com/#api'); - }); - /* - it('Anchor render perfectly for complete href - scroll', done => { - const wrapper = mount( - { - render() { - return ( -
-
Hello
- - - -
- ); - }, - }, - { sync: false, attachTo: 'body' }, - ); - wrapper.vm.$nextTick(() => { - wrapper.vm.$refs.anchor.handleScroll(); - expect(wrapper.vm.$refs.anchor.$data.activeLink).toBe('http://www.example.com/#api'); - done(); - }); - }); - - it('Anchor render perfectly for complete href - scrollTo', async () => { - const scrollToSpy = jest.spyOn(window, 'scrollTo'); - const wrapper = mount( - { - render() { - return ( -
-
Hello
- - - -
- ); - }, - }, - { sync: false, attachTo: 'body' }, - ); - await asyncExpect(() => { - wrapper.vm.$refs.anchor.handleScrollTo('##api'); - expect(wrapper.vm.$refs.anchor.$data.activeLink).toBe('##api'); - expect(scrollToSpy).not.toHaveBeenCalled(); - }); - await asyncExpect(() => { - expect(scrollToSpy).toHaveBeenCalled(); - }, 1000); - }); - - it('should remove listener when unmount', async () => { - const wrapper = mount( - { - render() { - return ( - - - - ); - }, - }, - { sync: false, attachTo: 'body' }, - ); - await asyncExpect(() => { - const removeListenerSpy = jest.spyOn(wrapper.vm.$refs.anchor.scrollEvent, 'remove'); - wrapper.unmount(); - expect(removeListenerSpy).toHaveBeenCalled(); - }); - }); - - it('should unregister link when unmount children', async () => { - const wrapper = mount( - { - props: { - showLink: { - type: Boolean, - default: true, - }, - }, - render() { - return ( - {this.showLink ? : null} - ); - }, - }, - { sync: false, attachTo: 'body' }, - ); - await asyncExpect(() => { - expect(wrapper.vm.$refs.anchor.links).toEqual(['#api']); - wrapper.setProps({ showLink: false }); - }); - await asyncExpect(() => { - expect(wrapper.vm.$refs.anchor.links).toEqual([]); - }); - }); - - it('should update links when link href update', async () => { - const wrapper = mount( - { - props: ['href'], - render() { - return ( - - - - ); - }, - }, - { - sync: false, - attachTo: 'body', - props: { - href: '#api', - }, - }, - ); - await asyncExpect(() => { - expect(wrapper.vm.$refs.anchor.links).toEqual(['#api']); - wrapper.setProps({ href: '#API_1' }); - }); - await asyncExpect(() => { - expect(wrapper.vm.$refs.anchor.links).toEqual(['#API_1']); - }); - }); - - it('Anchor onClick event', () => { - let event; - let link; - const handleClick = (...arg) => ([event, link] = arg); - - const href = '#api'; - const title = 'API'; - - const anchorRef = Vue.ref(null); - - const wrapper = mount({ - render() { - return ( - - - - ); - }, - }); - - wrapper.find(`a[href="${href}"]`).trigger('click'); - anchorRef.value.handleScroll(); - expect(event).not.toBe(undefined); - expect(link).toEqual({ href, title }); - }); */ -}); diff --git a/components/anchor/__tests__/__snapshots__/demo.test.js.snap b/components/anchor/__tests__/__snapshots__/demo.test.js.snap deleted file mode 100644 index bf09e68dd..000000000 --- a/components/anchor/__tests__/__snapshots__/demo.test.js.snap +++ /dev/null @@ -1,164 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`renders ./components/anchor/demo/basic.vue correctly 1`] = ` -
- -
-
-
- - - -
-
-
-
-`; - -exports[`renders ./components/anchor/demo/customizeHighlight.vue correctly 1`] = ` -
-
- - - -
-
-`; - -exports[`renders ./components/anchor/demo/horizontal.vue correctly 1`] = ` -
-
- -
-
-
- - - - - - -
-
-
-
-
-`; - -exports[`renders ./components/anchor/demo/onChange.vue correctly 1`] = ` -
-
- - - -
-
-`; - -exports[`renders ./components/anchor/demo/onClick.vue correctly 1`] = ` -
-
- - - -
-
-`; - -exports[`renders ./components/anchor/demo/static.vue correctly 1`] = ` -
-
- - - -
-
-`; - -exports[`renders ./components/anchor/demo/targetOffset.vue correctly 1`] = ` -
- -
-
-
- - - -
-
-
-
-`; diff --git a/components/anchor/__tests__/demo.test.js b/components/anchor/__tests__/demo.test.js deleted file mode 100644 index 302081fcb..000000000 --- a/components/anchor/__tests__/demo.test.js +++ /dev/null @@ -1,3 +0,0 @@ -import demoTest from '../../../tests/shared/demoTest'; - -demoTest('anchor'); diff --git a/components/anchor/context.ts b/components/anchor/context.ts deleted file mode 100644 index 16c1c0812..000000000 --- a/components/anchor/context.ts +++ /dev/null @@ -1,35 +0,0 @@ -import type { Ref, InjectionKey, ComputedRef } from 'vue'; -import type { AnchorDirection } from './Anchor'; -import { computed, inject, provide } from 'vue'; - -export interface AnchorContext { - registerLink: (link: string) => void; - unregisterLink: (link: string) => void; - activeLink: Ref; - scrollTo: (link: string) => void; - handleClick: (e: Event, info: { title: any; href: string }) => void; - direction: ComputedRef; -} - -// eslint-disable-next-line @typescript-eslint/no-unused-vars -function noop(..._any: any[]): any {} - -export const AnchorContextKey: InjectionKey = Symbol('anchorContextKey'); - -const useProvideAnchor = (state: AnchorContext) => { - provide(AnchorContextKey, state); -}; - -const useInjectAnchor = () => { - return inject(AnchorContextKey, { - registerLink: noop, - unregisterLink: noop, - scrollTo: noop, - activeLink: computed(() => ''), - handleClick: noop, - direction: computed(() => 'vertical'), - } as AnchorContext); -}; - -export { useInjectAnchor, useProvideAnchor }; -export default useProvideAnchor; diff --git a/components/anchor/demo/basic.vue b/components/anchor/demo/basic.vue deleted file mode 100644 index 139e9cb26..000000000 --- a/components/anchor/demo/basic.vue +++ /dev/null @@ -1,42 +0,0 @@ - ---- -order: 0 -title: - zh-CN: 基本使用 - en-US: Basic Usage ---- - -## zh-CN - -最简单的用法。 - -## en-US - -The simplest usage. - - - - - diff --git a/components/anchor/demo/customizeHighlight.vue b/components/anchor/demo/customizeHighlight.vue deleted file mode 100644 index 58f782219..000000000 --- a/components/anchor/demo/customizeHighlight.vue +++ /dev/null @@ -1,58 +0,0 @@ - ---- -order: 3 -title: - zh-CN: 自定义锚点高亮 - en-US: Customize the anchor highlight ---- - -## zh-CN - -自定义锚点高亮。 - -## en-US - -Customize the anchor highlight. - - - - - diff --git a/components/anchor/demo/horizontal.vue b/components/anchor/demo/horizontal.vue deleted file mode 100644 index bdbedb3b9..000000000 --- a/components/anchor/demo/horizontal.vue +++ /dev/null @@ -1,64 +0,0 @@ - ---- -order: 1 -title: - zh-CN: 横向 Anchor。 - en-US: Horizontally aligned anchors ---- - - -## zh-CN - -横向 Anchor。 - -## en-US - -Horizontally aligned anchors - - - - diff --git a/components/anchor/demo/index.vue b/components/anchor/demo/index.vue deleted file mode 100644 index f97756272..000000000 --- a/components/anchor/demo/index.vue +++ /dev/null @@ -1,41 +0,0 @@ - - - diff --git a/components/anchor/demo/onChange.vue b/components/anchor/demo/onChange.vue deleted file mode 100644 index 4f82cf16e..000000000 --- a/components/anchor/demo/onChange.vue +++ /dev/null @@ -1,58 +0,0 @@ - ---- -order: 5 -title: - zh-CN: 监听锚点链接改变 - en-US: Listening for anchor link change ---- - -## zh-CN - -监听锚点链接改变。 - -## en-US - -Listening for anchor link change. - - - - - diff --git a/components/anchor/demo/onClick.vue b/components/anchor/demo/onClick.vue deleted file mode 100644 index a0d7b9be6..000000000 --- a/components/anchor/demo/onClick.vue +++ /dev/null @@ -1,60 +0,0 @@ - ---- -order: 2 -title: - zh-CN: 自定义 click 事件 - en-US: Customize the click event ---- - -## zh-CN - -点击锚点不记录历史。 - -## en-US - -Clicking on an anchor does not record history. - - - - - diff --git a/components/anchor/demo/static.vue b/components/anchor/demo/static.vue deleted file mode 100644 index c9170e0ea..000000000 --- a/components/anchor/demo/static.vue +++ /dev/null @@ -1,51 +0,0 @@ - ---- -order: 1 -title: - zh-CN: 静态位置 - en-US: Static ---- - -## zh-CN - -不浮动,状态不随页面滚动变化。 - -## en-US - -Do not change state when page is scrolling. - - - diff --git a/components/anchor/demo/targetOffset.vue b/components/anchor/demo/targetOffset.vue deleted file mode 100644 index 08fb76a81..000000000 --- a/components/anchor/demo/targetOffset.vue +++ /dev/null @@ -1,59 +0,0 @@ - ---- -order: 4 -title: - zh-CN: 设置锚点滚动偏移量 - en-US: Set Anchor scroll offset ---- - -## zh-CN - -锚点目标滚动到屏幕正中间。 - -## en-US - -Anchor target scroll to screen center. - - - - - diff --git a/components/anchor/index.en-US.md b/components/anchor/index.en-US.md deleted file mode 100644 index 32c159d38..000000000 --- a/components/anchor/index.en-US.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -category: Components -type: Navigation -cols: 1 -title: Anchor -cover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*TBTSR4PyVmkAAAAAAAAAAAAADrJ8AQ/original -coverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*JGb3RIzyOCkAAAAAAAAAAAAADrJ8AQ/original ---- - -Hyperlinks to scroll on one page. - -## When To Use - -For displaying anchor hyperlinks on page and jumping between them. - -## API - -### Anchor Props - -| Property | Description | Type | Default | Version | -| --- | --- | --- | --- | --- | -| affix | Fixed mode of Anchor | boolean | true | | -| bounds | Bounding distance of anchor area | number | 5(px) | | -| getContainer | Scrolling container | () => HTMLElement | () => window | | -| getCurrentAnchor | Customize the anchor highlight | (activeLink: string) => string | - | activeLink(3.3) | -| offsetBottom | Pixels to offset from bottom when calculating position of scroll | number | - | | -| offsetTop | Pixels to offset from top when calculating position of scroll | number | 0 | | -| showInkInFixed | Whether show ink-square when `:affix="false"` | boolean | false | | -| targetOffset | Anchor scroll offset, default as `offsetTop`, [example](#components-anchor-demo-targetoffset) | number | `offsetTop` | 1.5.0 | -| wrapperClass | The class name of the container | string | - | | -| wrapperStyle | The style of the container | object | - | | -| items | Data configuration option content, support nesting through children | { key, href, title, target, children }\[] [see](#anchoritem) | - | 4.0 | -| direction | Set Anchor direction | `vertical` \| `horizontal` | `vertical` | 4.0 | -| customTitle | custom option title by slot | v-slot="AnchorItem" | - | 4.0 | - -### AnchorItem - -| Property | Description | Type | Default | Version | -| --- | --- | --- | --- | --- | -| key | The unique identifier of the Anchor Link | string \| number | - | | -| href | The target of hyperlink | string | | | -| target | Specifies where to display the linked URL | string | | | -| title | The content of hyperlink | VueNode \| (item: AnchorItem) => VueNode | | | -| children | Nested Anchor Link, `Attention: This attribute does not support horizontal orientation` | [AnchorItem](#anchoritem)\[] | - | | - -### Events - -| Events Name | Description | Arguments | Version | | -| --- | --- | --- | --- | --- | -| change | Listening for anchor link change | (currentActiveLink: string) => void | | 1.5.0 | -| click | set the handler to handle `click` event | Function(e: MouseEvent, link: Object) | | | - -### Link Props - -| Property | Description | Type | Default | Version | -| -------- | ----------------------------------------- | ------------ | ------- | ------- | -| href | target of hyperlink | string | | | -| target | Specifies where to display the linked URL | string | | 1.5.0 | -| title | content of hyperlink | string\|slot | | | diff --git a/components/anchor/index.tsx b/components/anchor/index.tsx deleted file mode 100644 index 378ad12a4..000000000 --- a/components/anchor/index.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import type { App, Plugin } from 'vue'; -import type { AnchorProps } from './Anchor'; -import type { AnchorLinkProps, AnchorLinkItemProps } from './AnchorLink'; -import Anchor from './Anchor'; -import AnchorLink from './AnchorLink'; - -Anchor.Link = AnchorLink; - -/* istanbul ignore next */ -Anchor.install = function (app: App) { - app.component(Anchor.name, Anchor); - app.component(Anchor.Link.name, Anchor.Link); - return app; -}; - -export type { AnchorLinkProps, AnchorProps, AnchorLinkItemProps }; -export { AnchorLink, AnchorLink as Link }; - -export default Anchor as typeof Anchor & - Plugin & { - readonly Link: typeof AnchorLink; - }; diff --git a/components/anchor/index.zh-CN.md b/components/anchor/index.zh-CN.md deleted file mode 100644 index c48ad3785..000000000 --- a/components/anchor/index.zh-CN.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -category: Components -subtitle: 锚点 -cols: 1 -type: 导航 -title: Anchor -cover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*TBTSR4PyVmkAAAAAAAAAAAAADrJ8AQ/original -coverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*JGb3RIzyOCkAAAAAAAAAAAAADrJ8AQ/original ---- - -用于跳转到页面指定位置。 - -## 何时使用 - -需要展现当前页面上可供跳转的锚点链接,以及快速在锚点之间跳转。 - -## API - -### Anchor Props - -| 成员 | 说明 | 类型 | 默认值 | 版本 | -| --- | --- | --- | --- | --- | -| affix | 固定模式 | boolean | true | | -| bounds | 锚点区域边界 | number | 5(px) | | -| getContainer | 指定滚动的容器 | () => HTMLElement | () => window | | -| getCurrentAnchor | 自定义高亮的锚点 | (activeLink: string) => string | - | activeLink(3.3) | -| offsetBottom | 距离窗口底部达到指定偏移量后触发 | number | | | -| offsetTop | 距离窗口顶部达到指定偏移量后触发 | number | | | -| showInkInFixed | `:affix="false"` 时是否显示小方块 | boolean | false | | -| targetOffset | 锚点滚动偏移量,默认与 offsetTop 相同,[例子](#components-anchor-demo-targetoffset) | number | `offsetTop` | 1.5.0 | -| wrapperClass | 容器的类名 | string | - | | -| wrapperStyle | 容器样式 | object | - | | -| items | 数据化配置选项内容,支持通过 children 嵌套 | { key, href, title, target, children }\[] [具体见](#anchoritem) | - | 4.0 | -| direction | 设置导航方向 | `vertical` \| `horizontal` | `vertical` | 4.0 | -| customTitle | 使用插槽自定义选项 title | v-slot="AnchorItem" | - | 4.0 | - -### AnchorItem - -| 成员 | 说明 | 类型 | 默认值 | 版本 | -| --- | --- | --- | --- | --- | -| key | 唯一标志 | string \| number | - | | -| href | 锚点链接 | string | - | | -| target | 该属性指定在何处显示链接的资源 | string | - | | -| title | 文字内容 | VueNode \| (item: AnchorItem) => VueNode | - | | -| children | 嵌套的 Anchor Link,`注意:水平方向该属性不支持` | [AnchorItem](#anchoritem)\[] | - | | - -### 事件 - -| 事件名称 | 说明 | 回调参数 | 版本 | | -| -------- | ---------------------- | ------------------------------------- | ---- | ----- | -| change | 监听锚点链接改变 | (currentActiveLink: string) => void | | 1.5.0 | -| click | `click` 事件的 handler | Function(e: MouseEvent, link: Object) | | | - -### Link Props - -| 成员 | 说明 | 类型 | 默认值 | 版本 | -| ------ | -------------------------------- | ------------ | ------ | ----- | -| href | 锚点链接 | string | | | -| target | 该属性指定在何处显示链接的资源。 | string | | 1.5.0 | -| title | 文字内容 | string\|slot | | | diff --git a/components/anchor/style/index.ts b/components/anchor/style/index.ts deleted file mode 100644 index 387bf2636..000000000 --- a/components/anchor/style/index.ts +++ /dev/null @@ -1,205 +0,0 @@ -import { unit } from '../../_util/cssinjs'; -import { - FullToken, - GenerateStyle, - genStyleHooks, - GetDefaultToken, - mergeToken, -} from '../../theme/internal'; -import { resetComponent, textEllipsis } from '../../style'; - -export interface ComponentToken { - /** - * @desc 链接纵向内间距 - * @descEN Vertical padding of link - */ - linkPaddingBlock: number; - /** - * @desc 链接横向内间距 - * @descEN Horizontal padding of link - */ - linkPaddingInlineStart: number; -} - -/** - * @desc Anchor 组件的 Token - * @descEN Token for Anchor component - */ -interface AnchorToken extends FullToken<'Anchor'> { - /** - * @desc 容器块偏移量 - * @descEN Holder block offset - */ - holderOffsetBlock: number; - /** - * @desc 次级锚点块内间距 - * @descEN Secondary anchor block padding - */ - anchorPaddingBlockSecondary: number | string; - /** - * @desc 锚点球大小 - * @descEN Anchor ball size - */ - anchorBallSize: number | string; - /** - * @desc 锚点标题块 - * @descEN Anchor title block - */ - anchorTitleBlock: number | string; -} - -// ============================== Shared ============================== -const genSharedAnchorStyle: GenerateStyle = token => { - const { - componentCls, - holderOffsetBlock, - motionDurationSlow, - lineWidthBold, - colorPrimary, - lineType, - colorSplit, - calc, - } = token; - - return { - [`${componentCls}-wrapper`]: { - marginBlockStart: calc(holderOffsetBlock).mul(-1).equal(), - paddingBlockStart: holderOffsetBlock, - - // delete overflow: auto - // overflow: 'auto', - - [componentCls]: { - ...resetComponent(token), - position: 'relative', - paddingInlineStart: lineWidthBold, - - [`${componentCls}-link`]: { - paddingBlock: token.linkPaddingBlock, - paddingInline: `${unit(token.linkPaddingInlineStart)} 0`, - - '&-title': { - ...textEllipsis, - position: 'relative', - display: 'block', - marginBlockEnd: token.anchorTitleBlock, - color: token.colorText, - transition: `all ${token.motionDurationSlow}`, - - '&:only-child': { - marginBlockEnd: 0, - }, - }, - - [`&-active > ${componentCls}-link-title`]: { - color: token.colorPrimary, - }, - - // link link - [`${componentCls}-link`]: { - paddingBlock: token.anchorPaddingBlockSecondary, - }, - }, - }, - - [`&:not(${componentCls}-wrapper-horizontal)`]: { - [componentCls]: { - '&::before': { - position: 'absolute', - insetInlineStart: 0, - top: 0, - height: '100%', - borderInlineStart: `${unit(lineWidthBold)} ${lineType} ${colorSplit}`, - content: '" "', - }, - - [`${componentCls}-ink`]: { - position: 'absolute', - insetInlineStart: 0, - display: 'none', - transform: 'translateY(-50%)', - transition: `top ${motionDurationSlow} ease-in-out`, - width: lineWidthBold, - backgroundColor: colorPrimary, - [`&${componentCls}-ink-visible`]: { - display: 'inline-block', - }, - }, - }, - }, - - [`${componentCls}-fixed ${componentCls}-ink ${componentCls}-ink`]: { - display: 'none', - }, - }, - }; -}; - -const genSharedAnchorHorizontalStyle: GenerateStyle = token => { - const { componentCls, motionDurationSlow, lineWidthBold, colorPrimary } = token; - - return { - [`${componentCls}-wrapper-horizontal`]: { - position: 'relative', - - '&::before': { - position: 'absolute', - left: { - _skip_check_: true, - value: 0, - }, - right: { - _skip_check_: true, - value: 0, - }, - bottom: 0, - borderBottom: `${unit(token.lineWidth)} ${token.lineType} ${token.colorSplit}`, - content: '" "', - }, - - [componentCls]: { - overflowX: 'scroll', - position: 'relative', - display: 'flex', - scrollbarWidth: 'none' /* Firefox */, - - '&::-webkit-scrollbar': { - display: 'none' /* Safari and Chrome */, - }, - - [`${componentCls}-link:first-of-type`]: { - paddingInline: 0, - }, - - [`${componentCls}-ink`]: { - position: 'absolute', - bottom: 0, - transition: `left ${motionDurationSlow} ease-in-out, width ${motionDurationSlow} ease-in-out`, - height: lineWidthBold, - backgroundColor: colorPrimary, - }, - }, - }, - }; -}; - -export const prepareComponentToken: GetDefaultToken<'Anchor'> = token => ({ - linkPaddingBlock: token.paddingXXS, - linkPaddingInlineStart: token.padding, -}); - -// ============================== Export ============================== -export default genStyleHooks( - 'Anchor', - token => { - const { fontSize, fontSizeLG, paddingXXS, calc } = token; - const anchorToken = mergeToken(token, { - holderOffsetBlock: paddingXXS, - anchorPaddingBlockSecondary: calc(paddingXXS).div(2).equal(), - anchorTitleBlock: calc(fontSize).div(14).mul(3).equal(), - anchorBallSize: calc(fontSizeLG).div(2).equal(), - }); - return [genSharedAnchorStyle(anchorToken), genSharedAnchorHorizontalStyle(anchorToken)]; - }, - prepareComponentToken, -); diff --git a/components/app/__tests__/__snapshots__/demo.test.js.snap b/components/app/__tests__/__snapshots__/demo.test.js.snap deleted file mode 100644 index cadd37a68..000000000 --- a/components/app/__tests__/__snapshots__/demo.test.js.snap +++ /dev/null @@ -1,41 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`renders ./components/app/demo/basic.vue correctly 1`] = ` -
- - - - -
-
- -
- -
- -
-
-`; - -exports[`renders ./components/app/demo/myPage.vue correctly 1`] = ` -
-
- -
- -
- -
-`; diff --git a/components/app/__tests__/demo.test.js b/components/app/__tests__/demo.test.js deleted file mode 100644 index fbcb9a76c..000000000 --- a/components/app/__tests__/demo.test.js +++ /dev/null @@ -1,3 +0,0 @@ -import demoTest from '../../../tests/shared/demoTest'; - -demoTest('app'); diff --git a/components/app/context.ts b/components/app/context.ts deleted file mode 100644 index f4210192c..000000000 --- a/components/app/context.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { provide, inject, reactive } from 'vue'; -import type { InjectionKey } from 'vue'; -import type { MessageInstance, ConfigOptions as MessageConfig } from '../message/interface'; -import type { NotificationInstance, NotificationConfig } from '../notification/interface'; -import type { ModalStaticFunctions } from '../modal/confirm'; - -export type AppConfig = { - message?: MessageConfig; - notification?: NotificationConfig; -}; - -export const AppConfigContextKey: InjectionKey = Symbol('appConfigContext'); - -export const useProvideAppConfigContext = (appConfigContext: AppConfig) => { - return provide(AppConfigContextKey, appConfigContext); -}; - -export const useInjectAppConfigContext = () => { - return inject(AppConfigContextKey, {}); -}; - -type ModalType = Omit; - -export interface useAppProps { - message: MessageInstance; - notification: NotificationInstance; - modal: ModalType; -} - -export const AppContextKey: InjectionKey = Symbol('appContext'); - -export const useProvideAppContext = (appContext: useAppProps) => { - return provide(AppContextKey, appContext); -}; - -const defaultAppContext: useAppProps = reactive({ - message: {}, - notification: {}, - modal: {}, -} as useAppProps); - -export const useInjectAppContext = () => { - return inject(AppContextKey, defaultAppContext); -}; diff --git a/components/app/demo/basic.vue b/components/app/demo/basic.vue deleted file mode 100644 index 7b0450e49..000000000 --- a/components/app/demo/basic.vue +++ /dev/null @@ -1,26 +0,0 @@ - ---- -order: 0 -title: - zh-CN: 基本使用 - en-US: Basic Usage ---- - -## zh-CN - -获取 `message`、`notification`、`modal` 静态方法。 - -## en-US - -Static method for `message`, `notification`, `modal`. - - - - - diff --git a/components/app/demo/index.vue b/components/app/demo/index.vue deleted file mode 100644 index 63a848fd2..000000000 --- a/components/app/demo/index.vue +++ /dev/null @@ -1,19 +0,0 @@ - - - diff --git a/components/app/demo/myPage.vue b/components/app/demo/myPage.vue deleted file mode 100644 index 163b5e81b..000000000 --- a/components/app/demo/myPage.vue +++ /dev/null @@ -1,32 +0,0 @@ - - - diff --git a/components/app/index.en-US.md b/components/app/index.en-US.md deleted file mode 100644 index 7d2dd7025..000000000 --- a/components/app/index.en-US.md +++ /dev/null @@ -1,130 +0,0 @@ ---- -category: Components -cols: 1 -type: Other -title: App -cover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*TBTSR4PyVmkAAAAAAAAAAAAADrJ8AQ/original -coverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*JGb3RIzyOCkAAAAAAAAAAAAADrJ8AQ/original -tag: New ---- - -Application wrapper for some global usages. - -## When To Use - -- Provide reset styles based on `.ant-app` element. -- You could use static methods of `message/notification/Modal` form `useApp` without writing `contextHolder` manually. - -## API - -### App - -| Property | Description | Type | Default | Version | -| --- | --- | --- | --- | --- | -| message | Global config for Message | [MessageConfig](/components/message/#messageconfig) | - | 4.x | -| notification | Global config for Notification | [NotificationConfig](/components/notification/#notificationconfig) | - | 4.x | - -## How to use - -### Basic usage - -App provides upstream and downstream method calls through `provide/inject`, because useApp needs to be used as a subcomponent, we recommend encapsulating App at the top level in the application. - -```html -/*myPage.vue*/ - - - -``` - -Note: App.useApp must be available under App. - -#### Embedded usage scenarios (if not necessary, try not to do nesting) - -```html - - - ... - ... - - -``` - -#### Sequence with ConfigProvider - -The App component can only use the token in the `ConfigProvider`, if you need to use the Token, the ConfigProvider and the App component must appear in pairs. - -```html - - ... - -``` - -#### Global scene (pinia scene) - -```ts -import { App } from 'ant-design-vue'; -import type { MessageInstance } from 'ant-design-vue/es/message/interface'; -import type { ModalStaticFunctions } from 'ant-design-vue/es/modal/confirm'; -import type { NotificationInstance } from 'ant-design-vue/es/notification/interface'; - -export const useGlobalStore = defineStore('global', () => { - const message: MessageInstance = ref(); - const notification: NotificationInstance = ref(); - const modal: Omit = ref(); - (() => { - const staticFunction = App.useApp(); - message.value = staticFunction.message; - modal.value = staticFunction.modal; - notification.value = staticFunction.notification; - })(); - - return { message, notification, modal }; -}); -``` - -```html -// sub page - - - -``` diff --git a/components/app/index.tsx b/components/app/index.tsx deleted file mode 100644 index 0ee269a94..000000000 --- a/components/app/index.tsx +++ /dev/null @@ -1,83 +0,0 @@ -import { defineComponent, computed } from 'vue'; -import type { App as TypeApp, Plugin } from 'vue'; -import { initDefaultProps } from '../_util/props-util'; -import classNames from '../_util/classNames'; -import { objectType } from '../_util/type'; -import useConfigInject from '../config-provider/hooks/useConfigInject'; -import useMessage from '../message/useMessage'; -import useModal from '../modal/useModal'; -import useNotification from '../notification/useNotification'; -import type { AppConfig } from './context'; -import { - useProvideAppConfigContext, - useInjectAppConfigContext, - useProvideAppContext, - useInjectAppContext, -} from './context'; -import useStyle from './style'; - -export const AppProps = () => { - return { - rootClassName: String, - message: objectType(), - notification: objectType(), - }; -}; - -const useApp = () => { - return useInjectAppContext(); -}; - -const App = defineComponent({ - name: 'AApp', - props: initDefaultProps(AppProps(), {}), - setup(props, { slots }) { - const { prefixCls } = useConfigInject('app', props); - const [wrapSSR, hashId] = useStyle(prefixCls); - const customClassName = computed(() => { - return classNames(hashId.value, prefixCls.value, props.rootClassName); - }); - - const appConfig = useInjectAppConfigContext(); - const mergedAppConfig = computed(() => ({ - message: { ...appConfig.message, ...props.message }, - notification: { ...appConfig.notification, ...props.notification }, - })); - useProvideAppConfigContext(mergedAppConfig.value); - - const [messageApi, messageContextHolder] = useMessage(mergedAppConfig.value.message); - const [notificationApi, notificationContextHolder] = useNotification( - mergedAppConfig.value.notification, - ); - const [ModalApi, ModalContextHolder] = useModal(); - - const memoizedContextValue = computed(() => ({ - message: messageApi, - notification: notificationApi, - modal: ModalApi, - })); - useProvideAppContext(memoizedContextValue.value); - - return () => { - return wrapSSR( -
- {ModalContextHolder()} - {messageContextHolder()} - {notificationContextHolder()} - {slots.default?.()} -
, - ); - }; - }, -}); - -App.useApp = useApp; - -App.install = function (app: TypeApp) { - app.component(App.name, App); -}; - -export default App as typeof App & - Plugin & { - readonly useApp: typeof useApp; - }; diff --git a/components/app/index.zh-CN.md b/components/app/index.zh-CN.md deleted file mode 100644 index 741f04261..000000000 --- a/components/app/index.zh-CN.md +++ /dev/null @@ -1,131 +0,0 @@ ---- -category: Components -subtitle: 包裹组件 -cols: 1 -type: 其它 -title: App -cover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*TBTSR4PyVmkAAAAAAAAAAAAADrJ8AQ/original -coverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*JGb3RIzyOCkAAAAAAAAAAAAADrJ8AQ/original -tag: New ---- - -新的包裹组件,提供重置样式和提供消费上下文的默认环境。 - -## 何时使用 - -- 提供可消费 provide/inject 的 `message.xxx`、`Modal.xxx`、`notification.xxx` 的静态方法,可以简化 useMessage 等方法需要手动植入 `contextHolder` 的问题。 -- 提供基于 `.ant-app` 的默认重置样式,解决原生元素没有 antd 规范样式的问题。 - -## API - -### App - -| 参数 | 说明 | 类型 | 默认值 | 版本 | -| --- | --- | --- | --- | --- | -| message | App 内 Message 的全局配置 | [MessageConfig](/components/message-cn/#messageconfig) | - | 4.x | -| notification | App 内 Notification 的全局配置 | [NotificationConfig](/components/notification-cn/#notificationconfig) | - | 4.x | - -## 如何使用 - -### 基础用法 - -App 组件通过 `provide/inject` 提供上下文方法调用,因而 useApp 需要作为子组件才能使用,我们推荐在应用中顶层包裹 App。 - -```html -/*myPage.vue*/ - - - -``` - -注意:App.useApp 必须在 App 之下方可使用。 - -#### 内嵌使用场景(如无必要,尽量不做嵌套) - -```html - - - ... - ... - - -``` - -#### 与 ConfigProvider 先后顺序 - -App 组件只能在 `ConfigProvider` 之下才能使用 Design Token, 如果需要使用其样式重置能力,则 ConfigProvider 与 App 组件必须成对出现。 - -```html - - ... - -``` - -#### 全局场景 (pinia 场景) - -```ts -import { App } from 'ant-design-vue'; -import type { MessageInstance } from 'ant-design-vue/es/message/interface'; -import type { ModalStaticFunctions } from 'ant-design-vue/es/modal/confirm'; -import type { NotificationInstance } from 'ant-design-vue/es/notification/interface'; - -export const useGlobalStore = defineStore('global', () => { - const message: MessageInstance = ref(); - const notification: NotificationInstance = ref(); - const modal: Omit = ref(); - (() => { - const staticFunction = App.useApp(); - message.value = staticFunction.message; - modal.value = staticFunction.modal; - notification.value = staticFunction.notification; - })(); - - return { message, notification, modal }; -}); -``` - -```html -// sub page - - - -``` diff --git a/components/app/style/index.ts b/components/app/style/index.ts deleted file mode 100644 index 031b0ffd0..000000000 --- a/components/app/style/index.ts +++ /dev/null @@ -1,22 +0,0 @@ -import type { FullToken, GenerateStyle } from '../../theme/internal'; -import { genComponentStyleHook } from '../../theme/internal'; - -export type ComponentToken = {}; - -interface AppToken extends FullToken<'App'> {} - -// =============================== Base =============================== -const genBaseStyle: GenerateStyle = token => { - const { componentCls, colorText, fontSize, lineHeight, fontFamily } = token; - return { - [componentCls]: { - color: colorText, - fontSize, - lineHeight, - fontFamily, - }, - }; -}; - -// ============================== Export ============================== -export default genComponentStyleHook('App', token => [genBaseStyle(token)]); diff --git a/components/auto-complete/OptGroup.tsx b/components/auto-complete/OptGroup.tsx deleted file mode 100644 index 30a19de08..000000000 --- a/components/auto-complete/OptGroup.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import type { FunctionalComponent } from 'vue'; -import type { DefaultOptionType } from '../select'; - -export type OptGroupProps = Omit; - -export interface OptionGroupFC extends FunctionalComponent { - /** Legacy for check if is a Option Group */ - isSelectOptGroup: boolean; -} - -const OptGroup: OptionGroupFC = () => null; -OptGroup.isSelectOptGroup = true; -OptGroup.displayName = 'AAutoCompleteOptGroup'; -export default OptGroup; diff --git a/components/auto-complete/Option.tsx b/components/auto-complete/Option.tsx deleted file mode 100644 index 3fa4771db..000000000 --- a/components/auto-complete/Option.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import type { FunctionalComponent } from 'vue'; -import type { DefaultOptionType } from '../vc-select/Select'; - -export interface OptionProps extends Omit { - /** Save for customize data */ - [prop: string]: any; // eslint-disable-line @typescript-eslint/no-explicit-any -} - -export interface OptionFC extends FunctionalComponent { - /** Legacy for check if is a Option Group */ - isSelectOption: boolean; -} - -const Option: OptionFC = () => null; -Option.isSelectOption = true; -Option.displayName = 'AAutoCompleteOption'; -export default Option; diff --git a/components/auto-complete/__tests__/__snapshots__/demo.test.js.snap b/components/auto-complete/__tests__/__snapshots__/demo.test.js.snap deleted file mode 100644 index 2d2c7da70..000000000 --- a/components/auto-complete/__tests__/__snapshots__/demo.test.js.snap +++ /dev/null @@ -1,141 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`renders ./components/auto-complete/demo/allow-clear.vue correctly 1`] = ` - -
-
- -`; - -exports[`renders ./components/auto-complete/demo/basic.vue correctly 1`] = ` - -`; - -exports[`renders ./components/auto-complete/demo/border-less.vue correctly 1`] = ` - -`; - -exports[`renders ./components/auto-complete/demo/certain-category.vue correctly 1`] = ` -
- -
-`; - -exports[`renders ./components/auto-complete/demo/custom.vue correctly 1`] = ` - -`; - -exports[`renders ./components/auto-complete/demo/non-case-sensitive.vue correctly 1`] = ` - -`; - -exports[`renders ./components/auto-complete/demo/options.vue correctly 1`] = ` - -`; - -exports[`renders ./components/auto-complete/demo/status.vue correctly 1`] = ` -
-
- -
- -
- -
- -
-`; - -exports[`renders ./components/auto-complete/demo/uncertain-category.vue correctly 1`] = ` -
- -
-`; diff --git a/components/auto-complete/__tests__/demo.test.js b/components/auto-complete/__tests__/demo.test.js deleted file mode 100644 index 7386ce505..000000000 --- a/components/auto-complete/__tests__/demo.test.js +++ /dev/null @@ -1,3 +0,0 @@ -import demoTest from '../../../tests/shared/demoTest'; - -demoTest('auto-complete'); diff --git a/components/auto-complete/__tests__/index.test.js b/components/auto-complete/__tests__/index.test.js deleted file mode 100644 index 14c4ffc60..000000000 --- a/components/auto-complete/__tests__/index.test.js +++ /dev/null @@ -1,34 +0,0 @@ -import { mount } from '@vue/test-utils'; -import { sleep } from '../../../tests/utils'; -import AutoComplete from '..'; -import focusTest from '../../../tests/shared/focusTest'; - -describe('AutoComplete with Custom Input Element Render', () => { - focusTest(AutoComplete); - function $$(className) { - return document.body.querySelectorAll(className); - } - it('AutoComplete with custom Input render perfectly', async () => { - const wrapper = mount( - { - render() { - return ( - - - - ); - }, - }, - { attachTo: 'body', sync: false }, - ); - expect(wrapper.findAll('input').length).toBe(1); - const input = wrapper.find('input'); - input.element.value = '123'; - input.trigger('input'); - await sleep(100); - expect($$('.ant-select-item-option').length).toBe(3); - }); -}); diff --git a/components/auto-complete/demo/allow-clear.vue b/components/auto-complete/demo/allow-clear.vue deleted file mode 100644 index 121c96b1e..000000000 --- a/components/auto-complete/demo/allow-clear.vue +++ /dev/null @@ -1,69 +0,0 @@ - ---- -order: 8 -title: - zh-CN: 自定义清除按钮 - en-US: Customize clear button ---- - -## zh-CN - -自定义清除按钮。 - -## en-US - -Customize clear button. - - - - - diff --git a/components/auto-complete/demo/basic.vue b/components/auto-complete/demo/basic.vue deleted file mode 100644 index 72eede0e8..000000000 --- a/components/auto-complete/demo/basic.vue +++ /dev/null @@ -1,54 +0,0 @@ - ---- -order: 0 -title: - zh-CN: 基本使用 - en-US: Basic Usage ---- - -## zh-CN - -基本使用。通过 options 设置自动完成的数据源。 - -## en-US - -Basic Usage, set datasource of autocomplete with `options` property. - - - - - diff --git a/components/auto-complete/demo/border-less.vue b/components/auto-complete/demo/border-less.vue deleted file mode 100644 index 44715e89d..000000000 --- a/components/auto-complete/demo/border-less.vue +++ /dev/null @@ -1,53 +0,0 @@ - ---- -order: 7 -title: - zh-CN: 无边框 - en-US: Border less ---- - -## zh-CN - -没有边框。 - -## en-US - -border less. - - - - - diff --git a/components/auto-complete/demo/certain-category.vue b/components/auto-complete/demo/certain-category.vue deleted file mode 100644 index cfe6a6d76..000000000 --- a/components/auto-complete/demo/certain-category.vue +++ /dev/null @@ -1,134 +0,0 @@ - ---- -order: 4 -title: - zh-CN: 查询模式 - 确定类目 - en-US: Lookup-Patterns - Certain Category ---- - -## zh-CN - -查询模式 - 确定类目。 - -## en-US - -Lookup-Patterns - Certain Category. - - - - - - - diff --git a/components/auto-complete/demo/custom.vue b/components/auto-complete/demo/custom.vue deleted file mode 100644 index 9d46941b4..000000000 --- a/components/auto-complete/demo/custom.vue +++ /dev/null @@ -1,50 +0,0 @@ - ---- -order: 2 -title: - zh-CN: 自定义输入组件 - en-US: Customize Input Component ---- - -## zh-CN - -自定义输入组件。 - -## en-US - -Customize Input Component. - - - - - diff --git a/components/auto-complete/demo/index.vue b/components/auto-complete/demo/index.vue deleted file mode 100644 index 70cb70d8a..000000000 --- a/components/auto-complete/demo/index.vue +++ /dev/null @@ -1,48 +0,0 @@ - - - diff --git a/components/auto-complete/demo/non-case-sensitive.vue b/components/auto-complete/demo/non-case-sensitive.vue deleted file mode 100644 index e9cbf8177..000000000 --- a/components/auto-complete/demo/non-case-sensitive.vue +++ /dev/null @@ -1,42 +0,0 @@ - ---- -order: 3 -title: - zh-CN: 不区分大小写 - en-US: Non-case-sensitive AutoComplete ---- - -## zh-CN - -不区分大小写的 AutoComplete。 - -## en-US - -A non-case-sensitive AutoComplete. - - - - - diff --git a/components/auto-complete/demo/options.vue b/components/auto-complete/demo/options.vue deleted file mode 100644 index 12a939a25..000000000 --- a/components/auto-complete/demo/options.vue +++ /dev/null @@ -1,46 +0,0 @@ - ---- -order: 1 -title: - zh-CN: 自定义选项 - en-US: Customized ---- - -## zh-CN - -3.0 以上版本,可以传递 `v-slot:option` 来自定义 Option。 - -## en-US - -For 3.0+, You could pass `v-slot:option` to custom option. - - - - - diff --git a/components/auto-complete/demo/status.vue b/components/auto-complete/demo/status.vue deleted file mode 100644 index 9db54c501..000000000 --- a/components/auto-complete/demo/status.vue +++ /dev/null @@ -1,74 +0,0 @@ - ---- -order: 19 -version: 3.3.0 -title: - zh-CN: 自定义状态 - en-US: Status ---- - -## zh-CN - -使用 `status` 为 AutoComplete 添加状态,可选 `error` 或者 `warning`。 - -## en-US - -Add status to AutoComplete with `status`, which could be `error` or `warning`. - - - - - - diff --git a/components/auto-complete/demo/uncertain-category.vue b/components/auto-complete/demo/uncertain-category.vue deleted file mode 100644 index 78dd85120..000000000 --- a/components/auto-complete/demo/uncertain-category.vue +++ /dev/null @@ -1,79 +0,0 @@ - ---- -order: 5 -title: - zh-CN: 查询模式 - 不确定类目 - en-US: Lookup-Patterns - Uncertain Category ---- - -## zh-CN - -查询模式 - 不确定类目。 - -## en-US - -Lookup-Patterns - Uncertain Category. - - - - diff --git a/components/auto-complete/index.en-US.md b/components/auto-complete/index.en-US.md deleted file mode 100644 index 8b9c21507..000000000 --- a/components/auto-complete/index.en-US.md +++ /dev/null @@ -1,95 +0,0 @@ ---- -category: Components -type: Data Entry -cols: 2 -title: AutoComplete -cover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*g8THS4NpV6sAAAAAAAAAAAAADrJ8AQ/original -coverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*WERTQ6qvgEYAAAAAAAAAAAAADrJ8AQ/original ---- - -Autocomplete function of input field. - -## When To Use - -- When you need an input box instead of a selector. -- When you need input suggestions or helping text. - -The differences with Select are: - -- AutoComplete is an input box with text hints, and users can type freely. The keyword is aiding **input**. -- Select is selecting among given choices. The keyword is **select**. - -## API - -```html - -``` - -| Property | Description | Type | Default | Version | -| --- | --- | --- | --- | --- | -| allowClear | Show clear button, effective in multiple mode only. | boolean | false | | -| autofocus | get focus when component mounted | boolean | false | | -| backfill | backfill selected item the input when using keyboard | boolean | false | | -| bordered | Whether has border style | boolean | true | 4.0 | -| clearIcon | Use slot custom clear icon | slot | `` | 4.0 | -| default (for customize input element) | customize input element | slot | `` | | -| defaultActiveFirstOption | Whether active first option by default | boolean | true | | -| defaultOpen | Initial open state of dropdown | boolean | - | | -| disabled | Whether disabled select | boolean | false | | -| popupClassName | The className of dropdown menu | string | - | 4.0 | -| dropdownMatchSelectWidth | Determine whether the dropdown menu and the select input are the same width. Default set `min-width` same as input. Will ignore when value less than select width. `false` will disable virtual scroll | boolean \| number | true | | -| dropdownMenuStyle | additional style applied to dropdown menu | object | | 1.5.0 | -| filterOption | If true, filter options by input, if function, filter options against it. The function will receive two arguments, `inputValue` and `option`, if the function returns `true`, the option will be included in the filtered set; Otherwise, it will be excluded. | boolean or function(inputValue, option) | true | | -| open | Controlled open state of dropdown | boolean | - | | -| option | custom render option by slot | v-slot:option="{value, label, [disabled, key, title]}" | - | 3.0 | -| options | Data source for autocomplete | [DataSourceItemType](https://github.com/vueComponent/ant-design-vue/blob/724d53b907e577cf5880c1e6742d4c3f924f8f49/components/auto-complete/index.vue#L9)\[] | | | -| placeholder | placeholder of input | string | - | | -| status | Set validation status | 'error' \| 'warning' | - | 3.3.0 | -| v-model:value | selected option | string\|string\[]\|{ key: string, label: string\|vNodes }\|Array<{ key: string, label: string\|vNodes }> | - | | - -### events - -| Events Name | Description | Arguments | Version | | -| --- | --- | --- | --- | --- | -| blur | Called when leaving the component. | function() | | | -| change | Called when select an option or input value change, or value of input is changed | function(value) | | | -| dropdownVisibleChange | Call when dropdown open | function(open) | | | -| focus | Called when entering the component | function() | | | -| search | Called when searching items. | function(value) | - | | -| select | Called when a option is selected. param is option's value and option instance. | function(value, option) | | | -| clear | Called when clear | function | - | 3.3.0 | - -## Methods - -| Name | Description | Version | -| ------- | ------------ | ------- | -| blur() | remove focus | | -| focus() | get focus | | - -## FAQ - -### Part of the api in v2 are not available in v3? - -AutoComplete is an Input component that supports auto complete tips. As such, it should not support props like `labelInValue` that affect value display. In v3, the AutoComplete implementation can not handle the case where the `value` and `label` are identical. v4 not longer support `label` as the value input. - -Besides, to unify the API, `dataSource` is replaced with `options`. You can migrate with the following change: - -#### v2 - -```ts -dataSource = ['light', 'bamboo']; -// or -dataSource = [ - { value: 'light', text: 'Light' }, - { value: 'bamboo', text: 'Bamboo' }, -]; -``` - -#### v3 - -```ts -options = [ - { value: 'light', label: 'Light' }, - { value: 'bamboo', label: 'Bamboo' }, -]; -``` diff --git a/components/auto-complete/index.tsx b/components/auto-complete/index.tsx deleted file mode 100644 index e95ceba2c..000000000 --- a/components/auto-complete/index.tsx +++ /dev/null @@ -1,175 +0,0 @@ -import type { App, VNode, ExtractPropTypes, CSSProperties, PropType } from 'vue'; -import { defineComponent, ref } from 'vue'; -import Select, { selectProps } from '../select'; -import { isValidElement, flattenChildren } from '../_util/props-util'; -import warning from '../_util/warning'; -import Option from './Option'; -import OptGroup from './OptGroup'; -import omit from '../_util/omit'; - -import useConfigInject from '../config-provider/hooks/useConfigInject'; -import type { InputStatus } from '../_util/statusUtils'; - -import type { CustomSlotsType } from '../_util/type'; - -function isSelectOptionOrSelectOptGroup(child: any): boolean { - return child?.type?.isSelectOption || child?.type?.isSelectOptGroup; -} - -export const autoCompleteProps = () => ({ - ...omit(selectProps(), ['loading', 'mode', 'optionLabelProp', 'labelInValue']), - dataSource: Array as PropType<{ value: any; text: any }[] | string[]>, - dropdownMenuStyle: { - type: Object as PropType, - default: undefined as CSSProperties, - }, - // optionLabelProp: String, - dropdownMatchSelectWidth: { type: [Number, Boolean], default: true }, - prefixCls: String, - showSearch: { type: Boolean, default: undefined }, - transitionName: String, - choiceTransitionName: { type: String, default: 'zoom' }, - autofocus: { type: Boolean, default: undefined }, - backfill: { type: Boolean, default: undefined }, - // optionLabelProp: PropTypes.string.def('children'), - filterOption: { type: [Boolean, Function], default: false }, - defaultActiveFirstOption: { type: Boolean, default: true }, - status: String as PropType, -}); - -export type AutoCompleteProps = Partial>>; - -export const AutoCompleteOption = Option; - -export const AutoCompleteOptGroup = OptGroup; - -const AutoComplete = defineComponent({ - compatConfig: { MODE: 3 }, - name: 'AAutoComplete', - inheritAttrs: false, - props: autoCompleteProps(), - // emits: ['change', 'select', 'focus', 'blur'], - slots: Object as CustomSlotsType<{ - option: any; - // deprecated, should use props `options` instead, not slot - options: any; - default: any; - notFoundContent: any; - dataSource: any; - clearIcon: any; - }>, - setup(props, { slots, attrs, expose }) { - warning( - !('dataSource' in slots), - 'AutoComplete', - '`dataSource` slot is deprecated, please use props `options` instead.', - ); - warning( - !('options' in slots), - 'AutoComplete', - '`options` slot is deprecated, please use props `options` instead.', - ); - warning( - !props.dropdownClassName, - 'AutoComplete', - '`dropdownClassName` is deprecated, please use `popupClassName` instead.', - ); - const selectRef = ref(); - const getInputElement = () => { - const children = flattenChildren(slots.default?.()); - const element = children.length ? children[0] : undefined; - return element; - }; - - const focus = () => { - selectRef.value?.focus(); - }; - - const blur = () => { - selectRef.value?.blur(); - }; - - expose({ - focus, - blur, - }); - const { prefixCls } = useConfigInject('select', props); - return () => { - const { size, dataSource, notFoundContent = slots.notFoundContent?.() } = props; - let optionChildren: VNode[]; - const { class: className } = attrs; - const cls = { - [className as string]: !!className, - [`${prefixCls.value}-lg`]: size === 'large', - [`${prefixCls.value}-sm`]: size === 'small', - [`${prefixCls.value}-show-search`]: true, - [`${prefixCls.value}-auto-complete`]: true, - }; - if (props.options === undefined) { - const childArray = slots.dataSource?.() || slots.options?.() || []; - if (childArray.length && isSelectOptionOrSelectOptGroup(childArray[0])) { - optionChildren = childArray; - } else { - optionChildren = dataSource - ? dataSource.map((item: any) => { - if (isValidElement(item)) { - return item; - } - switch (typeof item) { - case 'string': - return ( - - ); - case 'object': - return ( - - ); - default: - throw new Error( - 'AutoComplete[dataSource] only supports type `string[] | Object[]`.', - ); - } - }) - : []; - } - } - - const selectProps = omit( - { - ...props, - ...(attrs as any), - mode: Select.SECRET_COMBOBOX_MODE_DO_NOT_USE, - // optionLabelProp, - getInputElement, - notFoundContent, - // placeholder: '', - class: cls, - popupClassName: props.popupClassName || props.dropdownClassName, - ref: selectRef, - }, - ['dataSource', 'loading'], - ); - return ( - - ); - }; - }, -}); - -/* istanbul ignore next */ -export default Object.assign(AutoComplete, { - Option, - OptGroup, - install(app: App) { - app.component(AutoComplete.name, AutoComplete); - app.component(Option.displayName, Option); - app.component(OptGroup.displayName, OptGroup); - return app; - }, -}); diff --git a/components/auto-complete/index.zh-CN.md b/components/auto-complete/index.zh-CN.md deleted file mode 100644 index 44b21e63d..000000000 --- a/components/auto-complete/index.zh-CN.md +++ /dev/null @@ -1,96 +0,0 @@ ---- -category: Components -subtitle: 自动完成 -type: 数据录入 -cols: 2 -title: AutoComplete -cover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*g8THS4NpV6sAAAAAAAAAAAAADrJ8AQ/original -coverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*WERTQ6qvgEYAAAAAAAAAAAAADrJ8AQ/original ---- - -输入框自动完成功能。 - -## 何时使用 - -- 需要一个输入框而不是选择器。 -- 需要输入建议/辅助提示。 - -和 Select 的区别是: - -- AutoComplete 是一个带提示的文本输入框,用户可以自由输入,关键词是辅助**输入**。 -- Select 是在限定的可选项中进行选择,关键词是**选择**。 - -## API - -```html - -``` - -| 参数 | 说明 | 类型 | 默认值 | 版本 | -| --- | --- | --- | --- | --- | -| allowClear | 支持清除, 单选模式有效 | boolean | false | | -| autofocus | 自动获取焦点 | boolean | false | | -| backfill | 使用键盘选择选项的时候把选中项回填到输入框中 | boolean | false | | -| bordered | 是否有边框 | boolean | true | 4.0 | -| clearIcon | 使用插槽自定义清除按钮 | slot | `` | 4.0 | -| default (自定义输入框) | 自定义输入框 | slot | `` | | -| defaultActiveFirstOption | 是否默认高亮第一个选项。 | boolean | true | | -| defaultOpen | 是否默认展开下拉菜单 | boolean | - | | -| disabled | 是否禁用 | boolean | false | | -| popupClassName | 下拉菜单的 className 属性 | string | - | 4.0 | -| dropdownMatchSelectWidth | 下拉菜单和选择器同宽。默认将设置 `min-width`,当值小于选择框宽度时会被忽略。false 时会关闭虚拟滚动 | boolean \| number | true | | -| dropdownMenuStyle | dropdown 菜单自定义样式 | object | | 1.5.0 | -| filterOption | 是否根据输入项进行筛选。当其为一个函数时,会接收 `inputValue` `option` 两个参数,当 `option` 符合筛选条件时,应返回 `true`,反之则返回 `false`。 | boolean or function(inputValue, option) | true | | -| open | 是否展开下拉菜单 | boolean | - | | -| option | 通过 option 插槽,自定义节点 | v-slot:option="{value, label, [disabled, key, title]}" | - | 3.0 | -| options | 自动完成的数据源 | [DataSourceItemType](https://github.com/vueComponent/ant-design-vue/blob/724d53b907e577cf5880c1e6742d4c3f924f8f49/components/auto-complete/index.vue#L9)\[] | | | -| placeholder | 输入框提示 | string \| slot | - | | -| status | 设置校验状态 | 'error' \| 'warning' | - | 3.3.0 | -| v-model:value | 指定当前选中的条目 | string\|string\[]\|{ key: string, label: string\|vNodes }\|Array<{ key: string, label: string\|vNodes }> | 无 | | - -### 事件 - -| 事件名称 | 说明 | 回调参数 | 版本 | -| --- | --- | --- | --- | --- | -| blur | 失去焦点时的回调 | function() | | -| change | 选中 option,或 input 的 value 变化时,调用此函数 | function(value) | | -| dropdownVisibleChange | 展开下拉菜单的回调 | function(open) | | -| focus | 获得焦点时的回调 | function() | | -| search | 搜索补全项的时候调用 | function(value) | | -| select | 被选中时调用,参数为选中项的 value 值 | function(value, option) | | -| clear | 清除内容时回调 | function | - | 3.3.0 | - -## 方法 - -| 名称 | 描述 | 版本 | -| ------- | -------- | ---- | -| blur() | 移除焦点 | | -| focus() | 获取焦点 | | - -## FAQ - -### v2 的部分属性为何在 v3 中没有了? - -AutoComplete 组件是一个支持自动提示的 Input 组件,因而其不具有 `labelInValue` 等影响 value 展示的属性。在 v2 版本,AutoComplete 实现存在输入值如果遇到 `value` 与 `label` 相同时无法映射的问题。 v3 中不再支持 `label` 为值的输入形态。 - -此外为了统一 API,`dataSource` 改为 `options` 你可以如下转换: - -#### v2 - -```ts -dataSource = ['light', 'bamboo']; -// or -dataSource = [ - { value: 'light', text: 'Light' }, - { value: 'bamboo', text: 'Bamboo' }, -]; -``` - -#### v3 - -```ts -options = [ - { value: 'light', label: 'Light' }, - { value: 'bamboo', label: 'Bamboo' }, -]; -``` diff --git a/components/avatar/Avatar.tsx b/components/avatar/Avatar.tsx deleted file mode 100644 index 5bd4f17e0..000000000 --- a/components/avatar/Avatar.tsx +++ /dev/null @@ -1,222 +0,0 @@ -import type { CustomSlotsType, VueNode } from '../_util/type'; - -import type { CSSProperties, ExtractPropTypes, PropType } from 'vue'; -import { computed, defineComponent, nextTick, onMounted, shallowRef, watch } from 'vue'; -import { getPropsSlot } from '../_util/props-util'; -import PropTypes from '../_util/vue-types'; -import useBreakpoint from '../_util/hooks/useBreakpoint'; -import type { Breakpoint, ScreenSizeMap } from '../_util/responsiveObserve'; -import { responsiveArray } from '../_util/responsiveObserve'; -import useConfigInject from '../config-provider/hooks/useConfigInject'; -import ResizeObserver from '../vc-resize-observer'; -import eagerComputed from '../_util/eagerComputed'; -import useStyle from './style'; -import { useAvatarInjectContext } from './AvatarContext'; - -export type AvatarSize = 'large' | 'small' | 'default' | number | ScreenSizeMap; - -export const avatarProps = () => ({ - prefixCls: String, - shape: { type: String as PropType<'circle' | 'square'>, default: 'circle' }, - size: { - type: [Number, String, Object] as PropType, - default: (): AvatarSize => 'default', - }, - src: String, - /** Srcset of image avatar */ - srcset: String, - icon: PropTypes.any, - alt: String, - gap: Number, - draggable: { type: Boolean, default: undefined }, - crossOrigin: String as PropType<'' | 'anonymous' | 'use-credentials'>, - loadError: { - type: Function as PropType<() => boolean>, - }, -}); - -export type AvatarProps = Partial>>; - -const Avatar = defineComponent({ - compatConfig: { MODE: 3 }, - name: 'AAvatar', - inheritAttrs: false, - props: avatarProps(), - slots: Object as CustomSlotsType<{ - icon: any; - default: any; - }>, - setup(props, { slots, attrs }) { - const isImgExist = shallowRef(true); - const isMounted = shallowRef(false); - const scale = shallowRef(1); - - const avatarChildrenRef = shallowRef(null); - const avatarNodeRef = shallowRef(null); - - const { prefixCls } = useConfigInject('avatar', props); - const [wrapSSR, hashId] = useStyle(prefixCls); - const avatarCtx = useAvatarInjectContext(); - const size = computed(() => { - return props.size === 'default' ? avatarCtx.size : props.size; - }); - const screens = useBreakpoint(); - const responsiveSize = eagerComputed(() => { - if (typeof props.size !== 'object') { - return undefined; - } - const currentBreakpoint: Breakpoint = responsiveArray.find(screen => screens.value[screen])!; - const currentSize = props.size[currentBreakpoint]; - - return currentSize; - }); - - const responsiveSizeStyle = (hasIcon: boolean) => { - if (responsiveSize.value) { - return { - width: `${responsiveSize.value}px`, - height: `${responsiveSize.value}px`, - lineHeight: `${responsiveSize.value}px`, - fontSize: `${hasIcon ? responsiveSize.value / 2 : 18}px`, - }; - } - return {}; - }; - - const setScaleParam = () => { - if (!avatarChildrenRef.value || !avatarNodeRef.value) { - return; - } - const childrenWidth = avatarChildrenRef.value.offsetWidth; // offsetWidth avoid affecting be transform scale - const nodeWidth = avatarNodeRef.value.offsetWidth; - // denominator is 0 is no meaning - if (childrenWidth !== 0 && nodeWidth !== 0) { - const { gap = 4 } = props; - if (gap * 2 < nodeWidth) { - scale.value = - nodeWidth - gap * 2 < childrenWidth ? (nodeWidth - gap * 2) / childrenWidth : 1; - } - } - }; - - const handleImgLoadError = () => { - const { loadError } = props; - const errorFlag = loadError?.(); - if (errorFlag !== false) { - isImgExist.value = false; - } - }; - - watch( - () => props.src, - () => { - nextTick(() => { - isImgExist.value = true; - scale.value = 1; - }); - }, - ); - - watch( - () => props.gap, - () => { - nextTick(() => { - setScaleParam(); - }); - }, - ); - - onMounted(() => { - nextTick(() => { - setScaleParam(); - isMounted.value = true; - }); - }); - - return () => { - const { shape, src, alt, srcset, draggable, crossOrigin } = props; - const mergeShape = avatarCtx.shape ?? shape; - const icon = getPropsSlot(slots, props, 'icon'); - const pre = prefixCls.value; - const classString = { - [`${attrs.class}`]: !!attrs.class, - [pre]: true, - [`${pre}-lg`]: size.value === 'large', - [`${pre}-sm`]: size.value === 'small', - [`${pre}-${mergeShape}`]: true, - [`${pre}-image`]: src && isImgExist.value, - [`${pre}-icon`]: icon, - [hashId.value]: true, - }; - - const sizeStyle: CSSProperties = - typeof size.value === 'number' - ? { - width: `${size.value}px`, - height: `${size.value}px`, - lineHeight: `${size.value}px`, - fontSize: icon ? `${size.value / 2}px` : '18px', - } - : {}; - - const children: VueNode = slots.default?.(); - let childrenToRender; - if (src && isImgExist.value) { - childrenToRender = ( - {alt} - ); - } else if (icon) { - childrenToRender = icon; - } else if (isMounted.value || scale.value !== 1) { - const transformString = `scale(${scale.value}) translateX(-50%)`; - const childrenStyle: CSSProperties = { - msTransform: transformString, - WebkitTransform: transformString, - transform: transformString, - }; - const sizeChildrenStyle = - typeof size.value === 'number' - ? { - lineHeight: `${size.value}px`, - } - : {}; - childrenToRender = ( - - - {children} - - - ); - } else { - childrenToRender = ( - - {children} - - ); - } - return wrapSSR( - - {childrenToRender} - , - ); - }; - }, -}); - -export default Avatar; diff --git a/components/avatar/AvatarContext.ts b/components/avatar/AvatarContext.ts deleted file mode 100644 index 396b7ce57..000000000 --- a/components/avatar/AvatarContext.ts +++ /dev/null @@ -1,16 +0,0 @@ -import type { InjectionKey } from 'vue'; -import { inject, provide } from 'vue'; -import type { ScreenSizeMap } from '../_util/responsiveObserve'; -export type AvatarSize = 'large' | 'small' | 'default' | number | ScreenSizeMap; -export interface AvatarContextType { - size?: AvatarSize; - shape?: 'circle' | 'square'; -} -const AvatarContextKey: InjectionKey = Symbol('AvatarContextKey'); - -export const useAvatarInjectContext = () => { - return inject(AvatarContextKey, {}); -}; -export const useAvatarProviderContext = (context: AvatarContextType) => { - return provide(AvatarContextKey, context); -}; diff --git a/components/avatar/Group.tsx b/components/avatar/Group.tsx deleted file mode 100644 index c60f6411b..000000000 --- a/components/avatar/Group.tsx +++ /dev/null @@ -1,99 +0,0 @@ -import { cloneElement } from '../_util/vnode'; -import type { AvatarSize } from './Avatar'; -import Avatar from './Avatar'; -import Popover from '../popover'; -import type { PropType, ExtractPropTypes, CSSProperties } from 'vue'; -import { computed, defineComponent, watchEffect } from 'vue'; -import { flattenChildren, getPropsSlot } from '../_util/props-util'; -import useConfigInject from '../config-provider/hooks/useConfigInject'; -import useStyle from './style'; -import { useAvatarProviderContext } from './AvatarContext'; - -export const groupProps = () => ({ - prefixCls: String, - maxCount: Number, - maxStyle: { type: Object as PropType, default: undefined as CSSProperties }, - maxPopoverPlacement: { type: String as PropType<'top' | 'bottom'>, default: 'top' }, - maxPopoverTrigger: String as PropType<'hover' | 'focus' | 'click'>, - /* - * Size of avatar, options: `large`, `small`, `default` - * or a custom number size - * */ - size: { - type: [Number, String, Object] as PropType, - default: 'default' as AvatarSize, - }, - shape: { type: String as PropType<'circle' | 'square'>, default: 'circle' }, -}); - -export type AvatarGroupProps = Partial>>; - -const Group = defineComponent({ - compatConfig: { MODE: 3 }, - name: 'AAvatarGroup', - inheritAttrs: false, - props: groupProps(), - setup(props, { slots, attrs }) { - const { prefixCls, direction } = useConfigInject('avatar', props); - const groupPrefixCls = computed(() => `${prefixCls.value}-group`); - const [wrapSSR, hashId] = useStyle(prefixCls); - watchEffect(() => { - const context = { size: props.size, shape: props.shape }; - useAvatarProviderContext(context); - }); - return () => { - const { - maxPopoverPlacement = 'top', - maxCount, - maxStyle, - maxPopoverTrigger = 'hover', - shape, - } = props; - - const cls = { - [groupPrefixCls.value]: true, - [`${groupPrefixCls.value}-rtl`]: direction.value === 'rtl', - [`${attrs.class}`]: !!attrs.class, - [hashId.value]: true, - }; - - const children = getPropsSlot(slots, props); - const childrenWithProps = flattenChildren(children).map((child, index) => - cloneElement(child, { - key: `avatar-key-${index}`, - }), - ); - - const numOfChildren = childrenWithProps.length; - if (maxCount && maxCount < numOfChildren) { - const childrenShow = childrenWithProps.slice(0, maxCount); - const childrenHidden = childrenWithProps.slice(maxCount, numOfChildren); - - childrenShow.push( - - {`+${numOfChildren - maxCount}`} - , - ); - return wrapSSR( -
- {childrenShow} -
, - ); - } - - return wrapSSR( -
- {childrenWithProps} -
, - ); - }; - }, -}); - -export default Group; diff --git a/components/avatar/__tests__/Avatar.test.js b/components/avatar/__tests__/Avatar.test.js deleted file mode 100644 index 40cd1b907..000000000 --- a/components/avatar/__tests__/Avatar.test.js +++ /dev/null @@ -1,209 +0,0 @@ -import { mount } from '@vue/test-utils'; -import { asyncExpect } from '../../../tests/utils'; -import Avatar from '..'; -import useBreakpoint from '../../_util/hooks/useBreakpoint'; - -jest.mock('../../_util/hooks/useBreakpoint'); - -describe('Avatar Render', () => { - let originOffsetWidth; - const sizes = { xs: 24, sm: 32, md: 40, lg: 64, xl: 80, xxl: 100 }; - - beforeAll(() => { - // Mock offsetHeight - originOffsetWidth = Object.getOwnPropertyDescriptor(HTMLElement.prototype, 'offsetWidth').get; - Object.defineProperty(HTMLElement.prototype, 'offsetWidth', { - get() { - if (this.className === 'ant-avatar-string') { - return 100; - } - return 80; - }, - }); - }); - - afterAll(() => { - // Restore Mock offsetHeight - Object.defineProperty(HTMLElement.prototype, 'offsetWidth', { - get: originOffsetWidth, - }); - }); - it('Render long string correctly', () => { - const wrapper = mount(Avatar, { - slots: { - default: () => 'TestString', - }, - }); - const children = wrapper.findAll('.ant-avatar-string'); - expect(children.length).toBe(1); - }); - it('should render fallback string correctly', async () => { - global.document.body.innerHTML = ''; - const wrapper = mount(Avatar, { - slots: { - default: () => 'Fallback', - }, - props: { - src: 'http://error.url', - }, - attachTo: 'body', - }); - await asyncExpect(() => { - wrapper.find('img').trigger('error'); - }, 0); - await asyncExpect(() => { - const children = wrapper.findAll('.ant-avatar-string'); - expect(children.length).toBe(1); - expect(children[0].text()).toBe('Fallback'); - }); - }); - it('should handle onError correctly', async () => { - global.document.body.innerHTML = ''; - const LOAD_FAILURE_SRC = 'http://error.url'; - const LOAD_SUCCESS_SRC = 'https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png'; - - const Foo = { - data() { - return { - src: LOAD_FAILURE_SRC, - }; - }, - methods: { - handleImgError() { - this.src = LOAD_SUCCESS_SRC; - return false; - }, - }, - - render() { - const { src } = this; - return ; - }, - }; - - const wrapper = mount(Foo, { attachTo: 'body' }); - await asyncExpect(() => { - // mock img load Error, since jsdom do not load resource by default - // https://github.com/jsdom/jsdom/issues/1816 - wrapper.find('img').trigger('error'); - }, 0); - await asyncExpect(() => { - expect(wrapper.find('img')).not.toBeNull(); - }, 0); - await asyncExpect(() => { - expect(wrapper.find('img').attributes('src')).toBe(LOAD_SUCCESS_SRC); - }, 0); - }); - - it('should show image on success after a failure state', async () => { - global.document.body.innerHTML = ''; - const LOAD_FAILURE_SRC = 'http://error.url'; - const LOAD_SUCCESS_SRC = 'https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png'; - - const Foo = { - data() { - return { - src: LOAD_FAILURE_SRC, - }; - }, - render() { - const { src } = this; - return Fallback; - }, - }; - - const wrapper = mount(Foo, { sync: false, attachTo: 'body' }); - await asyncExpect(() => { - wrapper.find('img').trigger('error'); - }, 0); - await asyncExpect(() => { - expect(wrapper.findComponent({ name: 'AAvatar' }).findAll('img').length).toBe(0); - expect(wrapper.findAll('.ant-avatar-string').length).toBe(1); - }, 0); - - await asyncExpect(() => { - wrapper.vm.src = LOAD_SUCCESS_SRC; - }); - await asyncExpect(() => { - expect(wrapper.findComponent({ name: 'AAvatar' }).findAll('img').length).toBe(1); - expect(wrapper.findAll('.ant-avatar-image').length).toBe(1); - }, 0); - }); - - it('should calculate scale of avatar children correctly', async () => { - let wrapper = mount({ - render() { - return Avatar; - }, - }); - - await asyncExpect(() => { - expect(wrapper.find('.ant-avatar-string').html()).toMatchSnapshot(); - }, 0); - - Object.defineProperty(HTMLElement.prototype, 'offsetWidth', { - get() { - if (this.className === 'ant-avatar-string') { - return 100; - } - return 40; - }, - }); - wrapper = mount({ - render() { - return xx; - }, - }); - await asyncExpect(() => { - expect(wrapper.find('.ant-avatar-string').html()).toMatchSnapshot(); - }, 0); - }); - - it('should calculate scale of avatar children correctly with gap', async () => { - const wrapper = mount({ - render() { - return Avatar; - }, - }); - await asyncExpect(() => { - expect(wrapper.html()).toMatchSnapshot(); - }, 0); - }); - - Object.entries(sizes).forEach(([key, value]) => { - it(`adjusts component size to ${value} when window size is ${key}`, async () => { - useBreakpoint.mockReturnValue({ value: { [key]: true } }); - - const wrapper = mount({ - render() { - return ; - }, - }); - - await asyncExpect(() => { - expect(wrapper.html()).toMatchSnapshot(); - }, 0); - }); - }); - - it('fallback', () => { - const div = global.document.createElement('div'); - global.document.body.appendChild(div); - const wrapper = mount( - { - render() { - return ( - - A - - ); - }, - }, - { attachTo: div }, - ); - wrapper.find('img').trigger('error'); - expect(wrapper.html()).toMatchSnapshot(); - wrapper.unmount(); - global.document.body.removeChild(div); - }); -}); diff --git a/components/avatar/__tests__/__snapshots__/Avatar.test.js.snap b/components/avatar/__tests__/__snapshots__/Avatar.test.js.snap deleted file mode 100644 index 3272f1744..000000000 --- a/components/avatar/__tests__/__snapshots__/Avatar.test.js.snap +++ /dev/null @@ -1,21 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Avatar Render adjusts component size to 24 when window size is xs 1`] = ``; - -exports[`Avatar Render adjusts component size to 32 when window size is sm 1`] = ``; - -exports[`Avatar Render adjusts component size to 40 when window size is md 1`] = ``; - -exports[`Avatar Render adjusts component size to 64 when window size is lg 1`] = ``; - -exports[`Avatar Render adjusts component size to 80 when window size is xl 1`] = ``; - -exports[`Avatar Render adjusts component size to 100 when window size is xxl 1`] = ``; - -exports[`Avatar Render fallback 1`] = ``; - -exports[`Avatar Render should calculate scale of avatar children correctly 1`] = `Avatar`; - -exports[`Avatar Render should calculate scale of avatar children correctly 2`] = `xx`; - -exports[`Avatar Render should calculate scale of avatar children correctly with gap 1`] = `Avatar`; diff --git a/components/avatar/__tests__/__snapshots__/demo.test.js.snap b/components/avatar/__tests__/__snapshots__/demo.test.js.snap deleted file mode 100644 index b06c0578a..000000000 --- a/components/avatar/__tests__/__snapshots__/demo.test.js.snap +++ /dev/null @@ -1,56 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`renders ./components/avatar/demo/badge.vue correctly 1`] = ` -

1

-
- - -`; - -exports[`renders ./components/avatar/demo/basic.vue correctly 1`] = ` - - - - -
- - - - -`; - -exports[`renders ./components/avatar/demo/dynamic.vue correctly 1`] = ` -U - -`; - -exports[`renders ./components/avatar/demo/group.vue correctly 1`] = ` -
K - -
- -
K - +2 -
- -
K - +2 -
-`; - -exports[`renders ./components/avatar/demo/responsive.vue correctly 1`] = ``; - -exports[`renders ./components/avatar/demo/type.vue correctly 1`] = ` - -U -USER - -U - -`; diff --git a/components/avatar/__tests__/demo.test.js b/components/avatar/__tests__/demo.test.js deleted file mode 100644 index bb02eea33..000000000 --- a/components/avatar/__tests__/demo.test.js +++ /dev/null @@ -1,3 +0,0 @@ -import demoTest from '../../../tests/shared/demoTest'; - -demoTest('avatar'); diff --git a/components/avatar/demo/badge.vue b/components/avatar/demo/badge.vue deleted file mode 100644 index 00ce30f1a..000000000 --- a/components/avatar/demo/badge.vue +++ /dev/null @@ -1,35 +0,0 @@ - ---- -order: 3 -title: - zh-CN: 带徽标的头像 - en-US: With Badge ---- - -## zh-CN - -通常用于消息提示。 - -## en-US - -Usually used for reminders and notifications. - - - - - diff --git a/components/avatar/demo/basic.vue b/components/avatar/demo/basic.vue deleted file mode 100644 index 3c62046ad..000000000 --- a/components/avatar/demo/basic.vue +++ /dev/null @@ -1,53 +0,0 @@ - ---- -order: 0 -title: - zh-CN: 基本 - en-US: Basic ---- - -## zh-CN - -头像有三种尺寸,两种形状可选。 - -## en-US - -Three sizes and two shapes are available. - - - - - diff --git a/components/avatar/demo/dynamic.vue b/components/avatar/demo/dynamic.vue deleted file mode 100644 index e9d33eb38..000000000 --- a/components/avatar/demo/dynamic.vue +++ /dev/null @@ -1,49 +0,0 @@ - ---- -order: 2 -title: - zh-CN: 自动调整字符大小 - en-US: Autoset Font Size ---- - -## zh-CN - -对于字符型的头像,当字符串较长时,字体大小可以根据头像宽度自动调整。也可使用 `gap`` 来设置字符距离左右两侧边界单位像素。 - -## en-US - -For letter type Avatar, when the letters are too long to display, the font size can be automatically adjusted according to the width of the Avatar. You can also use `gap` to set the unit distance between left and right sides. - - - - - diff --git a/components/avatar/demo/group.vue b/components/avatar/demo/group.vue deleted file mode 100644 index 66cc2ab39..000000000 --- a/components/avatar/demo/group.vue +++ /dev/null @@ -1,101 +0,0 @@ - ---- -order: 4 -title: - zh-CN: Avatar.Group - en-US: Avatar.Group ---- - -## zh-CN - -头像组合展现。 - -## en-US - -Avatar group display. - - - - - diff --git a/components/avatar/demo/index.vue b/components/avatar/demo/index.vue deleted file mode 100644 index d508df1bd..000000000 --- a/components/avatar/demo/index.vue +++ /dev/null @@ -1,38 +0,0 @@ - - - diff --git a/components/avatar/demo/responsive.vue b/components/avatar/demo/responsive.vue deleted file mode 100644 index 7e7d3d542..000000000 --- a/components/avatar/demo/responsive.vue +++ /dev/null @@ -1,28 +0,0 @@ - ---- -order: 5 -title: - zh-CN: 响应式尺寸 - en-US: Responsive Size ---- - -## zh-CN - -头像大小可以根据屏幕大小自动调整。 - -## en-US - -Avatar size can be automatically adjusted based on the screen size. - - - - - diff --git a/components/avatar/demo/type.vue b/components/avatar/demo/type.vue deleted file mode 100644 index fcdf9c215..000000000 --- a/components/avatar/demo/type.vue +++ /dev/null @@ -1,39 +0,0 @@ - ---- -order: 1 -title: - zh-CN: 类型 - en-US: Type ---- - -## zh-CN - -支持三种类型:图片、Icon 以及字符,其中 Icon 和字符型可以自定义图标颜色及背景色。 - -## en-US - -Image, Icon and letter are supported, and the latter two kinds avatar can have custom colors and background colors. - - - - - diff --git a/components/avatar/index.en-US.md b/components/avatar/index.en-US.md deleted file mode 100644 index f7fb1c581..000000000 --- a/components/avatar/index.en-US.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -category: Components -type: Data Display -title: Avatar -cover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*JJBSS5lBG4IAAAAAAAAAAAAADrJ8AQ/original -coverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*YbgyQaRGz-UAAAAAAAAAAAAADrJ8AQ/original ---- - -Avatars can be used to represent people or objects. It supports images, `Icon`s, or letters. - -## API - -### Avatar - -| Property | Description | Type | Default | Version | -| --- | --- | --- | --- | --- | -| alt | This attribute defines the alternative text describing the image | string | - | | -| crossOrigin | cors settings attributes | `'anonymous'` \| `'use-credentials'` \| `''` | - | 3.0 | -| draggable | Whether the picture is allowed to be dragged | boolean \| `'true'` \| `'false'` | - | 2.2.0 | -| gap | Letter type unit distance between left and right sides | number | 4 | 2.2.0 | -| icon | the `Icon` type for an icon avatar, see `Icon` Component | VNode \| slot | - | | -| loadError | handler when img load error, return false to prevent default fallback behavior | () => boolean | - | | -| shape | the shape of avatar | `circle` \| `square` | `circle` | | -| size | The size of the avatar | number \| `large` \| `small` \| `default` \| { xs: number, sm: number, ...} | `default` | 2.2.0 | -| src | the address of the image for an image avatar | string | - | | -| srcset | a list of sources to use for different screen resolutions | string | - | | - -### Avatar.Group (2.2.0) - -| Property | Description | Type | Default | Version | -| --- | --- | --- | --- | --- | -| maxCount | Max avatars to show | number | - | | -| maxPopoverPlacement | The placement of excess avatar Popover | `top` \| `bottom` | `top` | | -| maxPopoverTrigger | Set the trigger of excess avatar Popover | `hover` \| `focus` \| `click` | `hover` | 3.0 | -| maxStyle | The style of excess avatar style | CSSProperties | - | | -| size | The size of the avatar | number \| `large` \| `small` \| `default` \| { xs: number, sm: number, ...} | `default` | | -| shape | The shape of the avatar | `circle` \| `square` | `circle` | 4.0 | diff --git a/components/avatar/index.ts b/components/avatar/index.ts deleted file mode 100644 index 802b0237e..000000000 --- a/components/avatar/index.ts +++ /dev/null @@ -1,20 +0,0 @@ -import type { App, Plugin } from 'vue'; -import Avatar from './Avatar'; -import Group from './Group'; -export { avatarProps } from './Avatar'; -export type { AvatarProps, AvatarSize } from './Avatar'; -export type { AvatarGroupProps } from './Group'; - -Avatar.Group = Group; - -/* istanbul ignore next */ -Avatar.install = function (app: App) { - app.component(Avatar.name, Avatar); - app.component(Group.name, Group); - return app; -}; -export { Group as AvatarGroup }; -export default Avatar as typeof Avatar & - Plugin & { - readonly Group: typeof Group; - }; diff --git a/components/avatar/index.zh-CN.md b/components/avatar/index.zh-CN.md deleted file mode 100644 index 06546bf23..000000000 --- a/components/avatar/index.zh-CN.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -category: Components -subtitle: 头像 -type: 数据展示 -title: Avatar -cover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*JJBSS5lBG4IAAAAAAAAAAAAADrJ8AQ/original -coverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*YbgyQaRGz-UAAAAAAAAAAAAADrJ8AQ/original ---- - -用来代表用户或事物,支持图片、图标或字符展示。 - -## 设计师专属 - -安装 [Kitchen Sketch 插件 💎](https://kitchen.alipay.com),一键填充高逼格头像和文本。 - -## API - -### Avatar - -| 参数 | 说明 | 类型 | 默认值 | 版本 | -| --- | --- | --- | --- | --- | -| alt | 图像无法显示时的替代文本 | string | - | | -| crossOrigin | cors 属性设置 | `'anonymous'` \| `'use-credentials'` \| `''` | - | 3.0 | -| draggable | 图片是否允许拖动 | boolean \| `'true'` \| `'false'` | - | 2.2.0 | -| gap | 字符类型距离左右两侧边界单位像素 | number | 4 | 2.2.0 | -| icon | 设置头像的图标类型,可设为 Icon 的 `type` 或 VNode | VNode \| slot | - | | -| loadError | 图片加载失败的事件,返回 false 会关闭组件默认的 fallback 行为 | () => boolean | - | | -| shape | 指定头像的形状 | `circle` \| `square` | `circle` | | -| size | 设置头像的大小 | number \| `large` \| `small` \| `default` \| { xs: number, sm: number, ...} | `default` | 2.2.0 | -| src | 图片类头像的资源地址 | string | - | | -| srcset | 设置图片类头像响应式资源地址 | string | - | | - -### Avatar.Group (2.2.0) - -| 参数 | 说明 | 类型 | 默认值 | 版本 | -| --- | --- | --- | --- | --- | -| maxCount | 显示的最大头像个数 | number | - | | -| maxPopoverPlacement | 多余头像气泡弹出位置 | `top` \| `bottom` | `top` | | -| maxPopoverTrigger | 设置多余头像 Popover 的触发方式 | `hover` \| `focus` \| `click` | `hover` | 3.0 | -| maxStyle | 多余头像样式 | CSSProperties | - | | -| size | 设置头像的大小 | number \| `large` \| `small` \| `default` \| { xs: number, sm: number, ...} | `default` | | -| shape | 设置头像的形状 | `circle` \| `square` | `circle` | 4.0 | diff --git a/components/avatar/style/index.ts b/components/avatar/style/index.ts deleted file mode 100644 index 6d8201add..000000000 --- a/components/avatar/style/index.ts +++ /dev/null @@ -1,211 +0,0 @@ -import type { CSSObject } from '../../_util/cssinjs'; -import type { FullToken, GenerateStyle } from '../../theme/internal'; -import { genComponentStyleHook, mergeToken } from '../../theme/internal'; -import { resetComponent } from '../../style'; - -export interface ComponentToken { - /** - * @desc 头像背景色 - * @descEN Background color of Avatar - */ - containerSize: number; - /** - * @desc 大号头像尺寸 - * @descEN Size of large Avatar - */ - containerSizeLG: number; - /** - * @desc 小号头像尺寸 - * @descEN Size of small Avatar - */ - containerSizeSM: number; - /** - * @desc 头像文字大小 - * @descEN Font size of Avatar - */ - textFontSize: number; - /** - * @desc 大号头像文字大小 - * @descEN Font size of large Avatar - */ - textFontSizeLG: number; - /** - * @desc 小号头像文字大小 - * @descEN Font size of small Avatar - */ - textFontSizeSM: number; - /** - * @desc 头像组间距 - * @descEN Spacing between avatars in a group - */ - groupSpace: number; - /** - * @desc 头像组重叠宽度 - * @descEN Overlapping of avatars in a group - */ - groupOverlapping: number; - /** - * @desc 头像组边框颜色 - * @descEN Border color of avatars in a group - */ - groupBorderColor: string; -} - -type AvatarToken = FullToken<'Avatar'> & { - avatarBg: string; - avatarColor: string; - avatarBgColor: string; -}; - -const genBaseStyle: GenerateStyle = token => { - const { - antCls, - componentCls, - iconCls, - avatarBg, - avatarColor, - containerSize, - containerSizeLG, - containerSizeSM, - textFontSize, - textFontSizeLG, - textFontSizeSM, - borderRadius, - borderRadiusLG, - borderRadiusSM, - lineWidth, - lineType, - } = token; - - // Avatar size style - const avatarSizeStyle = (size: number, fontSize: number, radius: number): CSSObject => ({ - width: size, - height: size, - lineHeight: `${size - lineWidth * 2}px`, - borderRadius: '50%', - - [`&${componentCls}-square`]: { - borderRadius: radius, - }, - - [`${componentCls}-string`]: { - position: 'absolute', - left: { - _skip_check_: true, - value: '50%', - }, - transformOrigin: '0 center', - }, - - [`&${componentCls}-icon`]: { - fontSize, - [`> ${iconCls}`]: { - margin: 0, - }, - }, - }); - - return { - [componentCls]: { - ...resetComponent(token), - position: 'relative', - display: 'inline-block', - overflow: 'hidden', - color: avatarColor, - whiteSpace: 'nowrap', - textAlign: 'center', - verticalAlign: 'middle', - background: avatarBg, - border: `${lineWidth}px ${lineType} transparent`, - - [`&-image`]: { - background: 'transparent', - }, - - [`${antCls}-image-img`]: { - display: 'block', - }, - - ...avatarSizeStyle(containerSize, textFontSize, borderRadius), - - [`&-lg`]: { - ...avatarSizeStyle(containerSizeLG, textFontSizeLG, borderRadiusLG), - }, - - [`&-sm`]: { - ...avatarSizeStyle(containerSizeSM, textFontSizeSM, borderRadiusSM), - }, - - '> img': { - display: 'block', - width: '100%', - height: '100%', - objectFit: 'cover', - }, - }, - }; -}; - -const genGroupStyle: GenerateStyle = token => { - const { componentCls, groupBorderColor, groupOverlapping, groupSpace } = token; - - return { - [`${componentCls}-group`]: { - display: 'inline-flex', - - [`${componentCls}`]: { - borderColor: groupBorderColor, - }, - - [`> *:not(:first-child)`]: { - marginInlineStart: groupOverlapping, - }, - }, - [`${componentCls}-group-popover`]: { - [`${componentCls} + ${componentCls}`]: { - marginInlineStart: groupSpace, - }, - }, - }; -}; - -export default genComponentStyleHook( - 'Avatar', - token => { - const { colorTextLightSolid, colorTextPlaceholder } = token; - const avatarToken = mergeToken(token, { - avatarBg: colorTextPlaceholder, - avatarColor: colorTextLightSolid, - }); - return [genBaseStyle(avatarToken), genGroupStyle(avatarToken)]; - }, - token => { - const { - controlHeight, - controlHeightLG, - controlHeightSM, - - fontSize, - fontSizeLG, - fontSizeXL, - fontSizeHeading3, - - marginXS, - marginXXS, - colorBorderBg, - } = token; - return { - containerSize: controlHeight, - containerSizeLG: controlHeightLG, - containerSizeSM: controlHeightSM, - - textFontSize: Math.round((fontSizeLG + fontSizeXL) / 2), - textFontSizeLG: fontSizeHeading3, - textFontSizeSM: fontSize, - - groupSpace: marginXXS, - groupOverlapping: -marginXS, - groupBorderColor: colorBorderBg, - }; - }, -); diff --git a/components/badge/Badge.tsx b/components/badge/Badge.tsx deleted file mode 100644 index a0363732f..000000000 --- a/components/badge/Badge.tsx +++ /dev/null @@ -1,239 +0,0 @@ -import PropTypes from '../_util/vue-types'; -import ScrollNumber from './ScrollNumber'; -import classNames from '../_util/classNames'; -import { getPropsSlot, flattenChildren } from '../_util/props-util'; -import { cloneElement } from '../_util/vnode'; -import { getTransitionProps } from '../_util/transition'; -import type { ExtractPropTypes, CSSProperties, PropType } from 'vue'; -import { defineComponent, computed, ref, watch, Transition } from 'vue'; -import Ribbon from './Ribbon'; -import useConfigInject from '../config-provider/hooks/useConfigInject'; -import isNumeric from '../_util/isNumeric'; -import useStyle from './style'; -import type { PresetColorKey } from '../theme/interface'; -import type { LiteralUnion, CustomSlotsType } from '../_util/type'; -import type { PresetStatusColorType } from '../_util/colors'; -import { isPresetColor } from '../_util/colors'; - -export const badgeProps = () => ({ - /** Number to show in badge */ - count: PropTypes.any.def(null), - showZero: { type: Boolean, default: undefined }, - /** Max count to show */ - overflowCount: { type: Number, default: 99 }, - /** whether to show red dot without number */ - dot: { type: Boolean, default: undefined }, - prefixCls: String, - scrollNumberPrefixCls: String, - status: { type: String as PropType }, - size: { type: String as PropType<'default' | 'small'>, default: 'default' }, - color: String as PropType>, - text: PropTypes.any, - offset: Array as unknown as PropType<[number | string, number | string]>, - numberStyle: { type: Object as PropType, default: undefined as CSSProperties }, - title: String, -}); - -export type BadgeProps = Partial>>; - -export default defineComponent({ - compatConfig: { MODE: 3 }, - name: 'ABadge', - Ribbon, - inheritAttrs: false, - props: badgeProps(), - slots: Object as CustomSlotsType<{ - text: any; - count: any; - default: any; - }>, - setup(props, { slots, attrs }) { - const { prefixCls, direction } = useConfigInject('badge', props); - const [wrapSSR, hashId] = useStyle(prefixCls); - - // ================================ Misc ================================ - const numberedDisplayCount = computed(() => { - return ( - (props.count as number) > (props.overflowCount as number) - ? `${props.overflowCount}+` - : props.count - ) as string | number | null; - }); - - const isZero = computed( - () => numberedDisplayCount.value === '0' || numberedDisplayCount.value === 0, - ); - const ignoreCount = computed(() => props.count === null || (isZero.value && !props.showZero)); - const hasStatus = computed( - () => - ((props.status !== null && props.status !== undefined) || - (props.color !== null && props.color !== undefined)) && - ignoreCount.value, - ); - - const showAsDot = computed(() => props.dot && !isZero.value); - - const mergedCount = computed(() => (showAsDot.value ? '' : numberedDisplayCount.value)); - - const isHidden = computed(() => { - const isEmpty = - mergedCount.value === null || mergedCount.value === undefined || mergedCount.value === ''; - return (isEmpty || (isZero.value && !props.showZero)) && !showAsDot.value; - }); - - // Count should be cache in case hidden change it - const livingCount = ref(props.count); - - // We need cache count since remove motion should not change count display - const displayCount = ref(mergedCount.value); - - // We will cache the dot status to avoid shaking on leaved motion - const isDotRef = ref(showAsDot.value); - - watch( - [() => props.count, mergedCount, showAsDot], - () => { - if (!isHidden.value) { - livingCount.value = props.count; - displayCount.value = mergedCount.value; - isDotRef.value = showAsDot.value; - } - }, - { immediate: true }, - ); - // InternalColor - const isInternalColor = computed(() => isPresetColor(props.color, false)); - // Shared styles - const statusCls = computed(() => ({ - [`${prefixCls.value}-status-dot`]: hasStatus.value, - [`${prefixCls.value}-status-${props.status}`]: !!props.status, - [`${prefixCls.value}-color-${props.color}`]: isInternalColor.value, - })); - - const statusStyle = computed(() => { - if (props.color && !isInternalColor.value) { - return { background: props.color, color: props.color }; - } else { - return {}; - } - }); - - const scrollNumberCls = computed(() => ({ - [`${prefixCls.value}-dot`]: isDotRef.value, - [`${prefixCls.value}-count`]: !isDotRef.value, - [`${prefixCls.value}-count-sm`]: props.size === 'small', - [`${prefixCls.value}-multiple-words`]: - !isDotRef.value && displayCount.value && displayCount.value.toString().length > 1, - [`${prefixCls.value}-status-${props.status}`]: !!props.status, - [`${prefixCls.value}-color-${props.color}`]: isInternalColor.value, - })); - - return () => { - const { offset, title, color } = props; - const style = attrs.style as CSSProperties; - const text = getPropsSlot(slots, props, 'text'); - const pre = prefixCls.value; - const count = livingCount.value; - let children = flattenChildren(slots.default?.()); - children = children.length ? children : null; - - const visible = !!(!isHidden.value || slots.count); - - // =============================== Styles =============================== - const mergedStyle = (() => { - if (!offset) { - return { ...style }; - } - - const offsetStyle: CSSProperties = { - marginTop: isNumeric(offset[1]) ? `${offset[1]}px` : offset[1], - }; - if (direction.value === 'rtl') { - offsetStyle.left = `${parseInt(offset[0] as string, 10)}px`; - } else { - offsetStyle.right = `${-parseInt(offset[0] as string, 10)}px`; - } - - return { - ...offsetStyle, - ...style, - }; - })(); - - // =============================== Render =============================== - // >>> Title - const titleNode = - title ?? (typeof count === 'string' || typeof count === 'number' ? count : undefined); - - // >>> Status Text - const statusTextNode = - visible || !text ? null : {text}; - - // >>> Display Component - const displayNode = - typeof count === 'object' || (count === undefined && slots.count) - ? cloneElement( - count ?? slots.count?.(), - { - style: mergedStyle, - }, - false, - ) - : null; - - const badgeClassName = classNames( - pre, - { - [`${pre}-status`]: hasStatus.value, - [`${pre}-not-a-wrapper`]: !children, - [`${pre}-rtl`]: direction.value === 'rtl', - }, - attrs.class, - hashId.value, - ); - - // - if (!children && hasStatus.value) { - const statusTextColor = mergedStyle.color; - return wrapSSR( - - - - {text} - - , - ); - } - - const transitionProps = getTransitionProps(children ? `${pre}-zoom` : '', { - appear: false, - }); - let scrollNumberStyle: CSSProperties = { ...mergedStyle, ...(props.numberStyle as object) }; - if (color && !isInternalColor.value) { - scrollNumberStyle = scrollNumberStyle || {}; - scrollNumberStyle.background = color; - } - - return wrapSSR( - - {children} - - - {displayNode} - - - {statusTextNode} - , - ); - }; - }, -}); diff --git a/components/badge/Ribbon.tsx b/components/badge/Ribbon.tsx deleted file mode 100644 index 6725d833b..000000000 --- a/components/badge/Ribbon.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import type { CustomSlotsType, LiteralUnion } from '../_util/type'; -import type { PresetColorType } from '../_util/colors'; -import useStyle from './style'; -import { isPresetColor } from '../_util/colors'; -import type { CSSProperties, PropType, ExtractPropTypes } from 'vue'; -import { defineComponent, computed } from 'vue'; -import PropTypes from '../_util/vue-types'; -import useConfigInject from '../config-provider/hooks/useConfigInject'; - -export const ribbonProps = () => ({ - prefix: String, - color: { type: String as PropType> }, - text: PropTypes.any, - placement: { type: String as PropType<'start' | 'end'>, default: 'end' }, -}); - -export type RibbonProps = Partial>>; - -export default defineComponent({ - compatConfig: { MODE: 3 }, - name: 'ABadgeRibbon', - inheritAttrs: false, - props: ribbonProps(), - slots: Object as CustomSlotsType<{ - text: any; - default: any; - }>, - setup(props, { attrs, slots }) { - const { prefixCls, direction } = useConfigInject('ribbon', props); - const [wrapSSR, hashId] = useStyle(prefixCls); - const colorInPreset = computed(() => isPresetColor(props.color, false)); - const ribbonCls = computed(() => [ - prefixCls.value, - `${prefixCls.value}-placement-${props.placement}`, - { - [`${prefixCls.value}-rtl`]: direction.value === 'rtl', - [`${prefixCls.value}-color-${props.color}`]: colorInPreset.value, - }, - ]); - return () => { - const { class: className, style, ...restAttrs } = attrs; - const colorStyle: CSSProperties = {}; - const cornerColorStyle: CSSProperties = {}; - if (props.color && !colorInPreset.value) { - colorStyle.background = props.color; - cornerColorStyle.color = props.color; - } - return wrapSSR( -
- {slots.default?.()} -
- {props.text || slots.text?.()} -
-
-
, - ); - }; - }, -}); diff --git a/components/badge/ScrollNumber.tsx b/components/badge/ScrollNumber.tsx deleted file mode 100644 index cba1e29c8..000000000 --- a/components/badge/ScrollNumber.tsx +++ /dev/null @@ -1,86 +0,0 @@ -import classNames from '../_util/classNames'; -import PropTypes from '../_util/vue-types'; -import { cloneElement } from '../_util/vnode'; -import type { ExtractPropTypes, CSSProperties, DefineComponent, HTMLAttributes } from 'vue'; -import { defineComponent } from 'vue'; -import useConfigInject from '../config-provider/hooks/useConfigInject'; -import SingleNumber from './SingleNumber'; -import { filterEmpty } from '../_util/props-util'; - -const scrollNumberProps = { - prefixCls: String, - count: PropTypes.any, - component: String, - title: PropTypes.any, - show: Boolean, -}; - -export type ScrollNumberProps = Partial>; - -export default defineComponent({ - compatConfig: { MODE: 3 }, - name: 'ScrollNumber', - inheritAttrs: false, - props: scrollNumberProps, - setup(props, { attrs, slots }) { - const { prefixCls } = useConfigInject('scroll-number', props); - - return () => { - const { - prefixCls: customizePrefixCls, - count, - title, - show, - component: Tag = 'sup' as unknown as DefineComponent, - class: className, - style, - ...restProps - } = { ...props, ...attrs } as ScrollNumberProps & HTMLAttributes & { style: CSSProperties }; - // ============================ Render ============================ - const newProps = { - ...restProps, - style, - 'data-show': props.show, - class: classNames(prefixCls.value, className), - title: title as string, - }; - - // Only integer need motion - let numberNodes: any = count; - if (count && Number(count) % 1 === 0) { - const numberList = String(count).split(''); - - numberNodes = numberList.map((num, i) => ( - - )); - } - - // allow specify the border - // mock border-color by box-shadow for compatible with old usage: - // - if (style && style.borderColor) { - newProps.style = { - ...(style as CSSProperties), - boxShadow: `0 0 0 1px ${style.borderColor} inset`, - }; - } - const children = filterEmpty(slots.default?.()); - if (children && children.length) { - return cloneElement( - children, - { - class: classNames(`${prefixCls.value}-custom-component`), - }, - false, - ); - } - - return {numberNodes}; - }; - }, -}); diff --git a/components/badge/SingleNumber.tsx b/components/badge/SingleNumber.tsx deleted file mode 100644 index 3c18e128a..000000000 --- a/components/badge/SingleNumber.tsx +++ /dev/null @@ -1,133 +0,0 @@ -import type { CSSProperties } from 'vue'; -import { computed, defineComponent, onUnmounted, reactive, ref, watch } from 'vue'; -import classNames from '../_util/classNames'; - -export interface UnitNumberProps { - prefixCls: string; - value: string | number; - offset?: number; - current?: boolean; -} - -function UnitNumber({ prefixCls, value, current, offset = 0 }: UnitNumberProps) { - let style: CSSProperties | undefined; - - if (offset) { - style = { - position: 'absolute', - top: `${offset}00%`, - left: 0, - }; - } - - return ( -

- {value} -

- ); -} - -function getOffset(start: number, end: number, unit: -1 | 1) { - let index = start; - let offset = 0; - - while ((index + 10) % 10 !== end) { - index += unit; - offset += unit; - } - - return offset; -} - -export default defineComponent({ - compatConfig: { MODE: 3 }, - name: 'SingleNumber', - props: { - prefixCls: String, - value: String, - count: Number, - }, - setup(props) { - const originValue = computed(() => Number(props.value)); - const originCount = computed(() => Math.abs(props.count)); - const state = reactive({ - prevValue: originValue.value, - prevCount: originCount.value, - }); - - // ============================= Events ============================= - const onTransitionEnd = () => { - state.prevValue = originValue.value; - state.prevCount = originCount.value; - }; - const timeout = ref(); - // Fallback if transition event not support - watch( - originValue, - () => { - clearTimeout(timeout.value); - timeout.value = setTimeout(() => { - onTransitionEnd(); - }, 1000); - }, - { flush: 'post' }, - ); - onUnmounted(() => { - clearTimeout(timeout.value); - }); - - return () => { - let unitNodes: any[]; - let offsetStyle: CSSProperties = {}; - const value = originValue.value; - if (state.prevValue === value || Number.isNaN(value) || Number.isNaN(state.prevValue)) { - // Nothing to change - unitNodes = [UnitNumber({ ...props, current: true } as UnitNumberProps)]; - offsetStyle = { - transition: 'none', - }; - } else { - unitNodes = []; - - // Fill basic number units - const end = value + 10; - const unitNumberList: number[] = []; - for (let index = value; index <= end; index += 1) { - unitNumberList.push(index); - } - - // Fill with number unit nodes - const prevIndex = unitNumberList.findIndex(n => n % 10 === state.prevValue); - unitNodes = unitNumberList.map((n, index) => { - const singleUnit = n % 10; - return UnitNumber({ - ...props, - value: singleUnit, - offset: index - prevIndex, - current: index === prevIndex, - } as UnitNumberProps); - }); - - // Calculate container offset value - const unit = state.prevCount < originCount.value ? 1 : -1; - offsetStyle = { - transform: `translateY(${-getOffset(state.prevValue, value, unit)}00%)`, - }; - } - return ( - onTransitionEnd()} - > - {unitNodes} - - ); - }; - }, -}); diff --git a/components/badge/__tests__/__snapshots__/demo.test.js.snap b/components/badge/__tests__/__snapshots__/demo.test.js.snap deleted file mode 100644 index 1e3a9a8f6..000000000 --- a/components/badge/__tests__/__snapshots__/demo.test.js.snap +++ /dev/null @@ -1,280 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`renders ./components/badge/demo/basic.vue correctly 1`] = ` -

5

-
-

0

-
- - -`; - -exports[`renders ./components/badge/demo/change.vue correctly 1`] = ` -

5

-
-
-
- - - - -`; - -exports[`renders ./components/badge/demo/colors.vue correctly 1`] = ` -

Presets:

-
-
pink
-
red
-
yellow
-
orange
-
cyan
-
green
-
blue
-
purple
-
geekblue
-
magenta
-
volcano
-
gold
-
lime
-
- -#f50 -
-#2db7f5 -
-#87d068 -
-#108ee9 -`; - -exports[`renders ./components/badge/demo/dot.vue correctly 1`] = ` - - -Link something -`; - -exports[`renders ./components/badge/demo/link.vue correctly 1`] = ` -

5

-
-
-`; - -exports[`renders ./components/badge/demo/no-wrapper.vue correctly 1`] = ` -

2

5

-
-

4

-
-99+ -`; - -exports[`renders ./components/badge/demo/overflow.vue correctly 1`] = ` -

9

9

-
-99+ - -10+ - -999+ - -`; - -exports[`renders ./components/badge/demo/ribbon.vue correctly 1`] = ` -
-
-
-
-
-
-
Pushes open the window
- -
- -
- -
and raises the spyglass.
- -
-
Hippies -
-
-
-
- -
-
-
-
-
-
Pushes open the window
- -
- -
- -
and raises the spyglass.
- -
-
Hippies -
-
-
-
- -
-
-
-
-
-
Pushes open the window
- -
- -
- -
and raises the spyglass.
- -
-
Hippies -
-
-
-
- -
-
-
-
-
-
Pushes open the window
- -
- -
- -
and raises the spyglass.
- -
-
Hippies -
-
-
-
- -
-
-
-
-
-
Pushes open the window
- -
- -
- -
and raises the spyglass.
- -
-
Hippies -
-
-
-
- -
-
-
-
-
-
Pushes open the window
- -
- -
- -
and raises the spyglass.
- -
-
Hippies -
-
-
-
- -
-
-
-
-
-
Pushes open the window
- -
- -
- -
and raises the spyglass.
- -
-
Hippies -
-
-
-
- -
-
-
-
-
-
Pushes open the window
- -
- -
- -
and raises the spyglass.
- -
-
Hippies -
-
-
-
- -
-`; - -exports[`renders ./components/badge/demo/status.vue correctly 1`] = ` - - - - - -
-
-
Success
- -
Error
- -
Default
- -
Processing
- -
warning
- -
-`; - -exports[`renders ./components/badge/demo/title.vue correctly 1`] = ` -

5

-
-`; diff --git a/components/badge/__tests__/__snapshots__/index.test.js.snap b/components/badge/__tests__/__snapshots__/index.test.js.snap deleted file mode 100644 index 5d9c546ac..000000000 --- a/components/badge/__tests__/__snapshots__/index.test.js.snap +++ /dev/null @@ -1,49 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Badge badge should support float number 1`] = `"3.5"`; - -exports[`Badge badge should support float number 2`] = `3.5`; - -exports[`Badge render correct with negative number 1`] = ` -

-

1

0

-

-

1

0

-
-
-`; - -exports[`Badge should be compatible with borderColor style 1`] = ` -

4

-
-`; - -exports[`Badge should render when count is changed 1`] = ` -

1

0

1

2

3

4

5

6

7

8

9

0

-
-`; - -exports[`Badge should render when count is changed 2`] = ` -

1

1

2

3

4

5

6

7

8

9

0

1

-
-`; - -exports[`Badge should render when count is changed 3`] = ` -

1

1

2

3

4

5

6

7

8

9

0

1

-
-`; - -exports[`Badge should render when count is changed 4`] = ` -

1

0

1

2

3

4

5

6

7

8

9

0

-
-`; - -exports[`Badge should render when count is changed 5`] = ` -

9

-
-`; - -exports[`Badge should support offset when count is a VueNode 1`] = ` -head - -`; - -exports[`Badge text works with vnode 1`] = `hello`; diff --git a/components/badge/__tests__/demo.test.js b/components/badge/__tests__/demo.test.js deleted file mode 100644 index e1bdd02d5..000000000 --- a/components/badge/__tests__/demo.test.js +++ /dev/null @@ -1,3 +0,0 @@ -import demoTest from '../../../tests/shared/demoTest'; - -demoTest('badge'); diff --git a/components/badge/__tests__/index.test.js b/components/badge/__tests__/index.test.js deleted file mode 100644 index aec04a2c1..000000000 --- a/components/badge/__tests__/index.test.js +++ /dev/null @@ -1,223 +0,0 @@ -import { mount } from '@vue/test-utils'; -import Badge from '../index'; -import mountTest from '../../../tests/shared/mountTest'; - -import { asyncExpect } from '../../../tests/utils'; -describe('Badge', () => { - it('badge dot not scaling count > 9', () => { - const badge = mount({ - render() { - return ; - }, - }); - expect(badge.findAll('.ant-card-multiple-words').length).toBe(0); - }); - it('badge should support float number', () => { - let wrapper = mount({ - render() { - return ; - }, - }); - expect(wrapper.text()).toMatchSnapshot(); - wrapper = mount({ - render() { - return ; - }, - }); - expect(wrapper.html()).toMatchSnapshot(); - }); - it('badge dot not showing count == 0', () => { - const badge = mount({ - render() { - return ; - }, - }); - expect(badge.findAll('.ant-badge-dot').length).toBe(0); - }); - - it('should have an overriden title attribute', () => { - const badge = mount({ - render() { - return ; - }, - }); - expect(badge.find('.ant-scroll-number').element.attributes.getNamedItem('title').value).toEqual( - 'Custom title', - ); - }); - - // https://github.com/ant-design/ant-design/issues/10626 - // it('should be composable with Tooltip', async () => { - // const wrapper = mount({ - // render () { - // return - // - // - // }, - // }, { sync: false }) - // await asyncExpect(() => { - // wrapper.find({ name: 'ABadge' }).trigger('mouseenter') - // }, 0) - - // expect(wrapper.vm.$refs.tooltip.sVisible).toBe(true) - // }) - - it('should render when count is changed', async () => { - const wrapper = mount(Badge, { - props: { - count: 9, - }, - sync: false, - }); - await asyncExpect(() => { - wrapper.setProps({ count: 10 }); - }, 100); - await asyncExpect(() => { - expect(wrapper.html()).toMatchSnapshot(); - wrapper.setProps({ count: 11 }); - }, 100); - await asyncExpect(() => { - expect(wrapper.html()).toMatchSnapshot(); - wrapper.setProps({ count: 11 }); - }, 100); - await asyncExpect(() => { - expect(wrapper.html()).toMatchSnapshot(); - wrapper.setProps({ count: 10 }); - }, 100); - await asyncExpect(() => { - expect(wrapper.html()).toMatchSnapshot(); - wrapper.setProps({ count: 9 }); - }, 100); - await asyncExpect(() => { - expect(wrapper.html()).toMatchSnapshot(); - }, 100); - }); - - it('should be compatible with borderColor style', () => { - const wrapper = mount({ - render() { - return ( - - ); - }, - }); - - expect(wrapper.html()).toMatchSnapshot(); - }); - - // https://github.com/ant-design/ant-design/issues/13694 - it('should support offset when count is a VueNode', () => { - const wrapper = mount({ - render() { - return ( - } offset={[10, 20]}> - - head - - - ); - }, - }); - expect(wrapper.html()).toMatchSnapshot(); - }); - // https://github.com/ant-design/ant-design/issues/15799 - it('render correct with negative number', () => { - const wrapper = mount({ - render() { - return ( -
- - -
- ); - }, - }); - expect(wrapper.html()).toMatchSnapshot(); - }); - - it('text works with vnode', () => { - const wrapper = mount({ - render() { - return hello} />; - }, - }); - - expect(wrapper.html()).toMatchSnapshot(); - }); -}); - -describe('Ribbon', () => { - mountTest(Badge.Ribbon); - - describe('placement', () => { - it('works with `start` & `end` placement', () => { - const wrapperStart = mount({ - render() { - return ( - -
- - ); - }, - }); - - expect(wrapperStart.findAll('.ant-ribbon-placement-start').length).toEqual(1); - - const wrapperEnd = mount({ - render() { - return ( - -
- - ); - }, - }); - expect(wrapperEnd.findAll('.ant-ribbon-placement-end').length).toEqual(1); - }); - }); - - describe('color', () => { - it('works with preset color', () => { - const wrapper = mount({ - render() { - return ( - -
- - ); - }, - }); - expect(wrapper.findAll('.ant-ribbon-color-green').length).toEqual(1); - }); - }); - - describe('text', () => { - it('works with string', () => { - const wrapper = mount({ - render() { - return ( - -
- - ); - }, - }); - expect(wrapper.find('.ant-ribbon').text()).toEqual('cool'); - }); - it('works with element', () => { - const wrapper = mount({ - render() { - return ( - }> -
- - ); - }, - }); - expect(wrapper.findAll('.cool').length).toEqual(1); - }); - }); -}); diff --git a/components/badge/demo/basic.vue b/components/badge/demo/basic.vue deleted file mode 100644 index 1dba25843..000000000 --- a/components/badge/demo/basic.vue +++ /dev/null @@ -1,35 +0,0 @@ - ---- -order: 0 -title: - zh-CN: 基本 - en-US: Basic ---- - -## zh-CN - -简单的徽章展示,当 `count` 为 `0` 时,默认不显示,但是可以使用 `showZero` 修改为显示。 - -## en-US - -Simplest Usage. Badge will be hidden when `count` is `0`, but we can use `showZero` to show it. - - - - - diff --git a/components/badge/demo/change.vue b/components/badge/demo/change.vue deleted file mode 100644 index 55c10dae2..000000000 --- a/components/badge/demo/change.vue +++ /dev/null @@ -1,52 +0,0 @@ - ---- -order: 5 -title: - zh-CN: 动态 - en-US: Dynamic ---- - -## zh-CN - -展示动态变化的效果。 - -## en-US - -The count will be animated as it changes. - - - - diff --git a/components/badge/demo/colors.vue b/components/badge/demo/colors.vue deleted file mode 100644 index 00bd146d4..000000000 --- a/components/badge/demo/colors.vue +++ /dev/null @@ -1,51 +0,0 @@ - ---- -order: 7 -title: - zh-CN: 多彩徽标 - en-US: Colorful Badge ---- - -## zh-CN - -1.5.0 后新增。我们添加了多种预设色彩的徽标样式,用作不同场景使用。如果预设值不能满足你的需求,可以设置为具体的色值。 - -## en-US - -New feature after 3.16.0. We preset a series of colorful Badge styles for use in different situations. You can also set it to a hex color string for custom color. - - - - - diff --git a/components/badge/demo/dot.vue b/components/badge/demo/dot.vue deleted file mode 100644 index 5aeae1cd9..000000000 --- a/components/badge/demo/dot.vue +++ /dev/null @@ -1,29 +0,0 @@ - ---- -order: 3 -title: - zh-CN: 讨嫌的小红点 - en-US: Red badge ---- - -## zh-CN - -没有具体的数字。 - -## en-US - -This will simply display a red badge, without a specific count. -If count equals 0, it won't display the dot. - - - - diff --git a/components/badge/demo/index.vue b/components/badge/demo/index.vue deleted file mode 100644 index 6e98468a0..000000000 --- a/components/badge/demo/index.vue +++ /dev/null @@ -1,63 +0,0 @@ -