diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
index eba933692..44c82bad2 100644
--- a/.github/CONTRIBUTING.md
+++ b/.github/CONTRIBUTING.md
@@ -33,7 +33,7 @@ Element UI 的成长离不开大家的支持,如果你愿意为 Element UI 贡
## 开发环境搭建
首先你需要 Node.js 4+ 和 NPM 3+
```shell
-git clone git@github.com:ElemeFE/element.git --recursive
+git clone git@github.com:ElemeFE/element.git
npm run dev
# open http://localhost:8085
diff --git a/.gitmodules b/.gitmodules
deleted file mode 100644
index 2600d332d..000000000
--- a/.gitmodules
+++ /dev/null
@@ -1,3 +0,0 @@
-[submodule "packages/theme-default"]
- path = packages/theme-default
- url = https://github.com/ElementUI/theme-default
diff --git a/build/deploy-ci.sh b/build/deploy-ci.sh
index dd922d2e3..589fb3f35 100644
--- a/build/deploy-ci.sh
+++ b/build/deploy-ci.sh
@@ -16,6 +16,23 @@ if [ "$TRAVIS_BRANCH" = "master" ] && [ "$GH_TOKEN" ]; then
cd ../..
fi
+# push theme-default
+if [ "$TRAVIS_BRANCH" = "master" ] && [ "$GH_TOKEN" ]; then
+ cd temp_web
+ git clone https://$GH_TOKEN@github.com/ElementUI/theme-default.git && cd theme-default
+ git config user.name "element_bot"
+ git config user.email "element_bot"
+ rm -rf *
+ cp -rf ../../packages/theme-default/** .
+ git add -A .
+ git commit -m "$TRAVIS_COMMIT_MSG"
+ if [ "$TRAVIS_TAG" ]; then
+ git tag $TRAVIS_TAG
+ fi
+ git push origin master --tags
+ cd ../..
+fi
+
# build lib
if [ "$TRAVIS_TAG" ] && [ "$GH_TOKEN" ]; then
npm run dist
diff --git a/build/release.sh b/build/release.sh
index 605fbbe06..86febdf1c 100644
--- a/build/release.sh
+++ b/build/release.sh
@@ -14,9 +14,7 @@ then
# publish theme
echo "Releasing theme-default $VERSION ..."
cd packages/theme-default
- git checkout master
npm version $VERSION --message "[release] $VERSION"
- git push origin master --tags
npm publish --tag next
cd ../..
diff --git a/package.json b/package.json
index 2aa3c2473..cf088fb3a 100644
--- a/package.json
+++ b/package.json
@@ -9,7 +9,7 @@
"packages"
],
"scripts": {
- "bootstrap": "npm i && npm run submodule:fetch",
+ "bootstrap": "npm i",
"build:file": "node build/bin/iconInit.js & node build/bin/build-entry.js",
"build:theme": "npm run submodule:fetch && node build/bin/gen-cssfile && gulp build --gulpfile packages/theme-default/gulpfile.js && cp-cli packages/theme-default/lib lib/theme-default",
"build:utils": "cross-env BABEL_ENV=utils babel src --out-dir lib --ignore src/index.js",
@@ -21,7 +21,6 @@
"lint": "eslint src/**/* test/**/* packages/**/*.{js,vue} build/**/* --quiet",
"pub": "sh build/release.sh",
"pub:all": "npm run dist:all && lerna publish",
- "submodule:fetch": "git submodule foreach 'git checkout master && git pull' && git submodule update",
"test": "npm run lint && CI_ENV=/dev/ karma start test/unit/karma.conf.js --single-run",
"test:watch": "karma start test/unit/karma.conf.js"
},
diff --git a/packages/theme-default b/packages/theme-default
deleted file mode 160000
index d8d012b4a..000000000
--- a/packages/theme-default
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit d8d012b4ac597297517fae0f9d05ac5d0d68fc5c
diff --git a/packages/theme-default/.gitignore b/packages/theme-default/.gitignore
new file mode 100644
index 000000000..6ddbcfaad
--- /dev/null
+++ b/packages/theme-default/.gitignore
@@ -0,0 +1,3 @@
+node_modules
+lib
+npm-debug*
diff --git a/packages/theme-default/README.md b/packages/theme-default/README.md
new file mode 100644
index 000000000..7b563524d
--- /dev/null
+++ b/packages/theme-default/README.md
@@ -0,0 +1,33 @@
+# element-theme-default
+> element component defualt theme.
+
+
+## Installation
+```shell
+npm i element-theme-default -S
+```
+
+## Usage
+
+Use Sass Or postcss-import
+```css
+@import 'element-theme-default';
+```
+
+Or Use webpack
+```javascript
+import 'element-theme-default';
+```
+
+Or
+```html
+
+```
+
+## Import your need
+```javascript
+import 'element-theme-default/dist/input.css';
+import 'element-theme-default/dist/select.css';
+
+// ...
+```
diff --git a/packages/theme-default/gulpfile.js b/packages/theme-default/gulpfile.js
new file mode 100644
index 000000000..5856951b2
--- /dev/null
+++ b/packages/theme-default/gulpfile.js
@@ -0,0 +1,37 @@
+'use strict';
+
+const gulp = require('gulp');
+const postcss = require('gulp-postcss');
+const cssmin = require('gulp-cssmin');
+
+const salad = require('postcss-salad')({
+ browser: ['ie > 9', 'last 2 version'],
+ features: {
+ 'bem': {
+ 'shortcuts': {
+ 'component': 'b',
+ 'modifier': 'm',
+ 'descendent': 'e'
+ },
+ 'separators': {
+ 'descendent': '__',
+ 'modifier': '--'
+ }
+ }
+ }
+});
+
+gulp.task('compile', function() {
+ return gulp.src('./src/*.css')
+ .pipe(postcss([salad]))
+ .pipe(cssmin())
+ .pipe(gulp.dest('./lib'));
+});
+
+gulp.task('copyfont', function() {
+ return gulp.src('./src/fonts/**')
+ .pipe(cssmin())
+ .pipe(gulp.dest('./lib/fonts'));
+});
+
+gulp.task('build', ['compile', 'copyfont']);
diff --git a/packages/theme-default/package.json b/packages/theme-default/package.json
new file mode 100644
index 000000000..3402c28b8
--- /dev/null
+++ b/packages/theme-default/package.json
@@ -0,0 +1,37 @@
+{
+ "name": "element-theme-default",
+ "version": "1.0.0",
+ "description": "Element component default theme.",
+ "main": "lib/index.css",
+ "style": "lib/index.css",
+ "files": [
+ "lib",
+ "src"
+ ],
+ "scripts": {
+ "build": "gulp build"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/ElementUI/theme-default.git"
+ },
+ "keywords": [
+ "element",
+ "theme"
+ ],
+ "author": "haiping.zeng ",
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/ElementUI/theme-default/issues"
+ },
+ "homepage": "https://github.com/ElementUI/theme-default#readme",
+ "devDependencies": {
+ "gulp": "^3.9.1",
+ "gulp-cssmin": "^0.1.7",
+ "gulp-postcss": "^6.1.1",
+ "postcss-salad": "^1.0.5"
+ },
+ "dependencies": {
+ "vue-popup": "^0.2.9"
+ }
+}
diff --git a/packages/theme-default/src/alert.css b/packages/theme-default/src/alert.css
new file mode 100644
index 000000000..a5ce5b8ef
--- /dev/null
+++ b/packages/theme-default/src/alert.css
@@ -0,0 +1,86 @@
+@charset "UTF-8";
+@import "./common/var.css";
+
+@component-namespace el {
+
+ @b alert {
+ width: 100%;
+ padding: var(--alert-padding);
+ margin: 0;
+ box-sizing: border-box;
+ border-radius: var(--alert-border-radius);
+ position: relative;
+ background-color: var(--color-white);
+ overflow: hidden;
+ color: #fff;
+ opacity: 1;
+ display: table;
+ transition: opacity .2s;
+
+ @modifier success {
+ background-color: var(--alert-success-color);
+ }
+
+ @modifier info {
+ background-color: var(--alert-info-color);
+ }
+
+ @modifier warning {
+ background-color: var(--alert-warning-color);
+ }
+
+ @modifier error {
+ background-color: var(--alert-danger-color);
+ }
+
+ @e content {
+ display: table-cell;
+ padding-left: 8px;
+ }
+
+ @e icon {
+ font-size: var(--alert-icon-size);
+ width: var(--alert-icon-size);
+ display: table-cell;
+ color: var(--color-white);
+ vertical-align: middle;
+ @when big {
+ font-size: var(--alert-icon-large-size);
+ width: var(--alert-icon-large-size);
+ }
+ }
+
+ @e title {
+ font-size: var(--alert-title-font-size);
+ line-height: 18px;
+ @when bold {
+ font-weight: bold;
+ }
+ }
+
+ & .el-alert__description {
+ color: #fff;
+ font-size: var(--alert-description-font-size);
+ margin: 5px 0 0 0;
+ }
+
+ @e closebtn {
+ font-size: var(--alert-close-font-size);
+ color: #fff;
+ opacity: 1;
+ position: absolute 12px 15px * *;
+ cursor: pointer;
+
+ @when customed {
+ font-style: normal;
+ font-size: var(--alert-close-customed-font-size);
+ top: 9px;
+ }
+ }
+ }
+
+ .el-alert-fade-enter,
+ .el-alert-fade-leave-active {
+ opacity: 0;
+ }
+}
diff --git a/packages/theme-default/src/autocomplete.css b/packages/theme-default/src/autocomplete.css
new file mode 100644
index 000000000..b81ee9641
--- /dev/null
+++ b/packages/theme-default/src/autocomplete.css
@@ -0,0 +1,74 @@
+@charset "UTF-8";
+@import "./input.css";
+@import "./common/var.css";
+
+@component-namespace el {
+ @b autocomplete {
+ position: relative;
+
+ @e suggestions {
+ position: absolute;
+ left: 0;
+ top: 110%;
+ margin: 0;
+ background-color: #fff;
+ border: 1px solid #D3DCE6;
+ width: 100%;
+ padding: 6px 0;
+ z-index: 10;
+ border-radius: 2px;
+ max-height: 280px;
+ box-sizing: border-box;
+ overflow: auto;
+ box-shadow: 0 0 6px 0 rgba(0,0,0,0.04), 0 2px 4px 0 rgba(0,0,0,0.12);
+
+ & li {
+ list-style: none;
+ line-height: 36px;
+ padding: 0 10px;
+ margin: 0;
+ cursor: pointer;
+ color: #475669;
+ font-size: 14px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+
+ &.highlighted,
+ &:hover {
+ background-color: var(--color-primary);
+ color: #fff;
+ }
+ &:active {
+ background-color: darken(var(--color-primary), 0.2);
+ }
+ &.divider {
+ margin-top: 6px;
+ border-top: 1px solid #D3DCE6;
+ }
+ &.divider:last-child {
+ margin-bottom: -6px;
+ }
+ }
+
+ @when loading {
+ li {
+ text-align: center;
+ height: 100px;
+ line-height: 100px;
+ font-size: 20px;
+ color: #999;
+ @utils-vertical-center;
+
+ &:hover {
+ background-color: #fff;
+ }
+ }
+
+ & .el-icon-loading {
+ vertical-align: middle;
+ }
+ }
+ }
+ }
+}
diff --git a/packages/theme-default/src/badge.css b/packages/theme-default/src/badge.css
new file mode 100644
index 000000000..1ee409e7f
--- /dev/null
+++ b/packages/theme-default/src/badge.css
@@ -0,0 +1,40 @@
+@charset "UTF-8";
+@import "./common/var.css";
+
+@component-namespace el {
+ @b badge {
+ position: relative;
+ vertical-align: middle;
+ display: inline-block;
+
+ @e content {
+ background-color: var(--badge-fill);
+ border-radius: var(--badge-radius);
+ color: #fff;
+ display: inline-block;
+ font-size: var(--badge-font-size);
+ height: var(--badge-size);
+ line-height: var(--badge-size);
+ padding: 0 var(--badge-padding);
+ text-align: center;
+ white-space: nowrap;
+ border: 1px solid #fff;
+
+ @when fixed {
+ position: absolute 0 calc(var(--badge-size) / 2 + 1) * *;
+ transform: translateY(-50%) translateX(100%);
+
+ @when dot {
+ right: 5px;
+ }
+ }
+
+ @when dot {
+ size: 8px 8px;
+ padding: 0;
+ right: 0;
+ border-radius: 50%;
+ }
+ }
+ }
+}
diff --git a/packages/theme-default/src/base.css b/packages/theme-default/src/base.css
new file mode 100644
index 000000000..d5da9e9e1
--- /dev/null
+++ b/packages/theme-default/src/base.css
@@ -0,0 +1,2 @@
+@import "./common/transition.css";
+@import "./icon.css";
diff --git a/packages/theme-default/src/breadcrumb-item.css b/packages/theme-default/src/breadcrumb-item.css
new file mode 100644
index 000000000..e69de29bb
diff --git a/packages/theme-default/src/breadcrumb.css b/packages/theme-default/src/breadcrumb.css
new file mode 100644
index 000000000..bc0631e6f
--- /dev/null
+++ b/packages/theme-default/src/breadcrumb.css
@@ -0,0 +1,45 @@
+@charset "UTF-8";
+@import "./common/var.css";
+
+@component-namespace el {
+
+ @b breadcrumb {
+ font-size:13px;
+ line-height: 1;
+ @utils-clearfix;
+
+ @e separator {
+ margin: 0 8px;
+ color: #c0ccda;
+ }
+ @e item {
+ float: left;
+
+ @e inner {
+ &, & a {
+ transition: color .15s linear;
+ color:#475669;
+
+ &:hover {
+ color: var(--color-primary);
+ cursor: pointer;
+ }
+ }
+ }
+
+ &:last-child {
+ .el-breadcrumb__item__inner,
+ .el-breadcrumb__item__inner a {
+ &, &:hover {
+ color: #99a9bf;
+ cursor: text;
+ }
+ }
+
+ .el-breadcrumb__separator {
+ display: none;
+ }
+ }
+ }
+ }
+}
diff --git a/packages/theme-default/src/button-group.css b/packages/theme-default/src/button-group.css
new file mode 100644
index 000000000..e69de29bb
diff --git a/packages/theme-default/src/button.css b/packages/theme-default/src/button.css
new file mode 100644
index 000000000..0fb24a53e
--- /dev/null
+++ b/packages/theme-default/src/button.css
@@ -0,0 +1,186 @@
+@charset "UTF-8";
+@import "./common/var.css";
+@import './mixins/button';
+
+@component-namespace el {
+ @b button {
+ display: inline-block;
+ line-height: 1;
+ white-space: nowrap;
+ cursor: pointer;
+ background: var(--button-default-fill);
+ border: var(--border-base);
+ color: var(--button-default-color);
+ -webkit-appearance: none;
+ text-align: center;
+ box-sizing: border-box;
+ outline: none;
+ margin: 0;
+ @utils-user-select none;
+
+ @mixin button-size var(--button-padding-vertical), var(--button-padding-horizontal), var(--button-font-size), var(--button-border-radius);
+
+ &:hover {
+ color: var(--color-primary);
+ border-color: @color;
+ }
+
+ &:active {
+ color: shade(var(--color-primary), var(--button-active-shade-percent));
+ border-color: @color;
+ outline: none;
+ }
+
+ &::-moz-focus-inner {
+ border: 0;
+ }
+
+ & [class*="el-icon-"] {
+ & + span {
+ margin-left: 5px;
+ }
+ }
+
+ @when plain {
+ &:hover {
+ background: #fff;
+ border-color: var(--color-primary);
+ color: var(--color-primary);
+ }
+
+ &:active {
+ background: #fff;
+ border-color: shade(var(--color-primary), var(--button-active-shade-percent));
+ color: shade(var(--color-primary), var(--button-active-shade-percent));
+ outline: none;
+ }
+ }
+
+ @when active {
+ color: shade(var(--color-primary), var(--button-active-shade-percent));
+ border-color: @color;
+ }
+
+ @when disabled {
+ &,
+ &:hover {
+ color: var(--button-disabled-color);
+ cursor: not-allowed;
+ background-image: none;
+ background-color: var(--button-disabled-fill);
+ border-color: var(--button-disabled-border);
+ }
+
+ &.is-plain {
+ &,
+ &:hover {
+ background-color: #fff;
+ border-color: #d3dce6;
+ color: #C0CCDA;
+ }
+ }
+ }
+
+ @when loading {
+ position: relative;
+ pointer-events: none;
+
+ &:before {
+ pointer-events: none;
+ content: '';
+ position: absolute;
+ left: -1px;
+ top: -1px;
+ right: -1px;
+ bottom: -1px;
+ border-radius: inherit;
+ background-color: rgba(255,255,255,.35);
+ }
+ }
+ @m primary {
+ @mixin button-variant var(--button-primary-color), var(--button-primary-fill), var(--button-primary-border);
+ }
+ @m success {
+ @mixin button-variant var(--button-success-color), var(--button-success-fill), var(--button-success-border);
+ }
+ @m warning {
+ @mixin button-variant var(--button-warning-color), var(--button-warning-fill), var(--button-warning-border);
+ }
+ @m danger {
+ @mixin button-variant var(--button-danger-color), var(--button-danger-fill), var(--button-danger-border);
+ }
+ @m info {
+ @mixin button-variant var(--button-info-color), var(--button-info-fill), var(--button-info-border);
+ }
+ @m text {
+ border: none;
+ color: var(--color-primary);
+ background: transparent;
+
+ &:hover {
+ color: tint(var(--color-primary), var(--button-hover-tint-percent));
+ }
+ &:active {
+ color: shade(var(--color-primary), var(--button-active-shade-percent));
+ }
+ }
+ @m large {
+ @mixin button-size var(--button-large-padding-vertical), var(--button-large-padding-horizontal), var(--button-large-font-size), var(--button-border-radius);
+ }
+ @m small {
+ @mixin button-size var(--button-small-padding-vertical), var(--button-small-padding-horizontal), var(--button-small-font-size), var(--button-border-radius);
+ }
+ @m mini {
+ @mixin button-size var(--button-mini-padding-vertical), var(--button-mini-padding-horizontal), var(--button-mini-font-size), var(--button-border-radius);
+ }
+ }
+
+ @b button-group {
+ @utils-clearfix;
+ display: inline-block;
+
+ & .el-button {
+ float: left;
+ position: relative;
+
+ &:first-child {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ }
+ &:last-child {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+ }
+ &:not(:first-child):not(:last-child) {
+ border-radius: 0;
+ }
+ &:not(:last-child) {
+ margin-right: -1px;
+ }
+
+ &:hover,
+ &:active {
+ z-index: 1;
+ }
+
+ @when active {
+ z-index: 1;
+ }
+ }
+
+ @each $type in (primary, success, warning, danger, info) {
+ .el-button--$type {
+ &:first-child {
+ border-right-color: rgba(#fff, 0.5);
+ }
+ &:last-child {
+ border-left-color: rgba(#fff, 0.5);
+ }
+ &:not(:first-child):not(:last-child) {
+ border-left-color: rgba(#fff, 0.5);
+ border-right-color: rgba(#fff, 0.5);
+ }
+ }
+ }
+ }
+}
diff --git a/packages/theme-default/src/card.css b/packages/theme-default/src/card.css
new file mode 100644
index 000000000..c080c43cd
--- /dev/null
+++ b/packages/theme-default/src/card.css
@@ -0,0 +1,23 @@
+@charset "UTF-8";
+@import "./common/var.css";
+
+@component-namespace el {
+ @b card {
+ border: 1px solid var(--card-border-color);
+ border-radius: var(--card-border-radius);
+ background-color: #fff;
+ overflow: hidden;
+ box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, .12),
+ 0px 0px 6px 0px rgba(0, 0, 0, .04);
+
+ @e header {
+ padding: calc(var(--card-padding) - 2) var(--card-padding);
+ border-bottom: 1px solid var(--card-border-color);
+ box-sizing: border-box;
+ }
+
+ @e body {
+ padding: var(--card-padding);
+ }
+ }
+}
diff --git a/packages/theme-default/src/cascader.css b/packages/theme-default/src/cascader.css
new file mode 100644
index 000000000..a79fe34e2
--- /dev/null
+++ b/packages/theme-default/src/cascader.css
@@ -0,0 +1,45 @@
+@charset "UTF-8";
+@import "./input.css";
+@import "./common/var.css";
+/*@import "./core/dropdown.css";*/
+
+@component-namespace element {
+
+ @b cascader {
+ display: inline-block;
+ position: relative;
+
+ @e dropdown {
+ background-color: var(--cascader-menu-fill);
+ border: var(--cascader-menu-border);
+ border-radius: var(--cascader-menu-radius);
+ box-shadow: var(--cascader-menu-submenu-shadow);
+ margin-top: 5px;
+ max-height: var(--cascader-height);
+ position: absolute;
+ white-space: nowrap;
+ z-index: 10;
+ }
+
+ @e wrap {
+ overflow: hidden;
+ }
+
+ @e menu {
+ border: 0;
+ box-shadow: none;
+ display: inline-block;
+ margin: 0;
+ position: relative;
+ vertical-align: top;
+
+ &::before {
+ border-left: var(--cascader-menu-border);
+ content: " ";
+ height: var(--cascader-height);
+ left: 0;
+ position: absolute;
+ }
+ }
+ }
+}
diff --git a/packages/theme-default/src/checkbox-group.css b/packages/theme-default/src/checkbox-group.css
new file mode 100644
index 000000000..e69de29bb
diff --git a/packages/theme-default/src/checkbox.css b/packages/theme-default/src/checkbox.css
new file mode 100644
index 000000000..ca9fadcbf
--- /dev/null
+++ b/packages/theme-default/src/checkbox.css
@@ -0,0 +1,137 @@
+@charset "UTF-8";
+@import "./common/var.css";
+
+@component-namespace el {
+
+ @b checkbox {
+ color: var(--checkbox-color);
+ position: relative;
+ cursor: pointer;
+ display: inline-block;
+ white-space: nowrap;
+ @utils-user-select none;
+
+ @e input {
+ white-space: nowrap;
+ cursor: pointer;
+ outline: none;
+ display: inline-block;
+ line-height: 1;
+ position: relative;
+ vertical-align: middle;
+ }
+ @e inner {
+ display: inline-block;
+ position: relative;
+ border: var(--checkbox-input-border);
+ border-radius: var(--checkbox-input-border-radius);
+ box-sizing: border-box;
+ rect: var(--checkbox-input-width) var(--checkbox-input-height) var(--checkbox-input-fill);
+ z-index: var(--index-normal);
+ transition: border-color .25s cubic-bezier(.71,-.46,.29,1.46),
+ background-color .25s cubic-bezier(.71,-.46,.29,1.46);
+
+ &:not(.is-disabled):hover {
+ border-color: var(--checkbox-input-border-color-hover);
+ }
+
+ &::after {
+ content: "";
+ border: 2px solid var(--checkbox-checked-icon-color);
+ border-left: 0;
+ border-top: 0;
+ height: 8px;
+ left: 5px;
+ position: absolute;
+ top: 1px;
+ transform: rotate(45deg) scaleY(0);
+ width: 4px;
+ transition: transform .15s cubic-bezier(.71,-.46,.88,.6) .05s;
+ transform-origin: center;
+ }
+
+ @when disabled {
+ background-color: var(--checkbox-disabled-input-fill);
+ border-color: var(--checkbox-disabled-input-border-color);
+ cursor: not-allowed;
+
+ &::after {
+ cursor: not-allowed;
+ border-color: var(--checkbox-disabled-icon-color);
+ }
+
+ & + .el-checkbox__label {
+ cursor: not-allowed;
+ }
+ }
+
+ @when checked {
+ background-color: var(--checkbox-checked-input-fill);
+ border-color: var(--checkbox-checked-input-border-color);
+
+ &::after {
+ transform: rotate(45deg) scaleY(1);
+ }
+ }
+
+ @when focus {
+ border-color: var(--checkbox-input-border-color-hover);
+ }
+
+ &.is-disabled.is-checked {
+ background-color: var(--checkbox-disabled-checked-input-fill);
+ border-color: var(--checkbox-disabled-checked-input-border-color);
+
+ &::after {
+ border-color: var(--checkbox-disabled-checked-icon-color);
+ }
+ }
+
+ @when indeterminate {
+ background-color: var(--checkbox-checked-input-fill);
+ border-color: var(--checkbox-checked-input-border-color);
+
+ &::before {
+ content: '';
+ position: absolute;
+ display: block;
+ border: 1px solid var(--checkbox-checked-icon-color);
+ margin-top: -1px;
+ left: 3px;
+ right: 3px;
+ top: 50%;
+ }
+
+ &::after {
+ display: none;
+ }
+ }
+
+ &.is-disabled.is-indeterminate {
+ background-color: var(--checkbox-disabled-checked-input-fill);
+ border-color: var(--checkbox-disabled-checked-input-border-color);
+
+ &::before {
+ border-color: var(--checkbox-disabled-checked-icon-color);
+ }
+ }
+ }
+
+ @e original {
+ opacity: 0;
+ outline: none;
+ position: absolute;
+ margin: 0;
+ left: -999px;
+ }
+
+ @e label {
+ font-size: var(--checkbox-font-size);
+ padding-left: 5px;
+ }
+
+ & + .el-checkbox {
+ margin-left: 15px;
+ }
+ }
+}
diff --git a/packages/theme-default/src/col.css b/packages/theme-default/src/col.css
new file mode 100644
index 000000000..d15eeb4b8
--- /dev/null
+++ b/packages/theme-default/src/col.css
@@ -0,0 +1,24 @@
+@charset "UTF-8";
+@import "./common/var.css";
+
+.el-col-1, .el-col-2, .el-col-3, .el-col-4, .el-col-5, .el-col-6, .el-col-7, .el-col-8, .el-col-9, .el-col-10, .el-col-11, .el-col-12, .el-col-13, .el-col-14, .el-col-15, .el-col-16, .el-col-17, .el-col-18, .el-col-19, .el-col-20, .el-col-21, .el-col-22, .el-col-23, .el-col-24 {
+ float: left;
+ box-sizing: border-box;
+}
+
+@for $i from 1 to 24 {
+ .el-col-$i {
+ width: calc(1 / 24 * $(i) * 100)%;
+ }
+ .el-col-offset-$i {
+ margin-left: calc(1 / 24 * $(i) * 100)%;
+ }
+ .el-col-pull-$i {
+ position: relative;
+ right: calc(1 / 24 * $(i) * 100)%;
+ }
+ .el-col-push-$i {
+ position: relative;
+ left: calc(1 / 24 * $(i) * 100)%;
+ }
+}
diff --git a/packages/theme-default/src/common/transition.css b/packages/theme-default/src/common/transition.css
new file mode 100644
index 000000000..bc522d3ff
--- /dev/null
+++ b/packages/theme-default/src/common/transition.css
@@ -0,0 +1,113 @@
+@charset "UTF-8";
+@import './var.css';
+
+.fade-in-linear-enter-active,
+.fade-in-linear-leave-active {
+ transition: var(--fade-linear-transition);
+}
+
+.fade-in-linear-enter,
+.fade-in-linear-leave,
+.fade-in-linear-leave-active {
+ opacity: 0;
+}
+
+.fade-in-enter-active,
+.fade-in-leave-active {
+ transition: all .3s cubic-bezier(.55,0,.1,1);
+}
+
+.fade-in-enter,
+.fade-in-leave-active {
+ opacity: 0;
+}
+
+.md-fade-center-enter-active,
+.md-fade-center-leave-active {
+ transition: all .3s cubic-bezier(.55,0,.1,1);
+}
+.md-fade-center-enter,
+.md-fade-center-leave,
+.md-fade-center-leave-active {
+ opacity: 0;
+ transform: scaleY(0);
+}
+
+.md-fade-bottom-enter-active,
+.md-fade-bottom-leave-active {
+ opacity: 1;
+ transform: scaleY(1);
+ transition: var(--md-fade-transition);
+ transform-origin: center top;
+}
+.md-fade-bottom-enter,
+.md-fade-bottom-leave,
+.md-fade-bottom-leave-active {
+ opacity: 0;
+ transform: scaleY(0);
+}
+
+.md-fade-top-enter-active,
+.md-fade-top-leave-active {
+ opacity: 1;
+ transform: scaleY(1);
+ transition: var(--md-fade-transition);
+ transform-origin: center bottom;
+}
+
+.md-fade-top-enter,
+.md-fade-top-leave,
+.md-fade-top-leave-active {
+ opacity: 0;
+ transform: scaleY(0);
+}
+
+.md-fade-left-enter-active,
+.md-fade-left-leave-active {
+ opacity: 1;
+ transform: scaleX(1);
+ transition: var(--md-fade-transition);
+ transform-origin: right center;
+}
+.md-fade-left-enter,
+.md-fade-left-leave,
+.md-fade-left-leave-active {
+ opacity: 0;
+ transform: scaleX(0);
+}
+
+.md-fade-right-enter-active,
+.md-fade-right-leave-active {
+ opacity: 1;
+ transform: scaleX(1);
+ transition: var(--md-fade-transition);
+ transform-origin: left center;
+}
+.md-fade-right-enter,
+.md-fade-right-leave,
+.md-fade-right-leave-active {
+ opacity: 0;
+ transform: scaleX(0);
+}
+
+.fade-enter-active,
+.fade-leave-active {
+ transition: opacity .3s cubic-bezier(.645,.045,.355,1);
+}
+.fade-enter,
+.fade-leave-active {
+ opacity: 0;
+}
+
+.list-move, .list-enter-active, .list-leave-active {
+ transition: all .5s cubic-bezier(.55,0,.1,1);
+}
+.list-enter, .list-leave-active {
+ opacity: 0;
+ transform: translate(0, -30px);
+}
+/*.list-leave-active {
+ position: absolute;
+ opacity: 0;
+ transform: scaleY(0.01) translate(30px, 0);
+}*/
diff --git a/packages/theme-default/src/common/var.css b/packages/theme-default/src/common/var.css
new file mode 100644
index 000000000..4655412f5
--- /dev/null
+++ b/packages/theme-default/src/common/var.css
@@ -0,0 +1,542 @@
+:root {
+
+ /* Transition
+ -------------------------- */
+ --fade-transition: opacity 300ms cubic-bezier(0.23, 1, 0.32, 1);
+ --fade-linear-transition: opacity 200ms linear;
+ --md-fade-transition: transform 300ms cubic-bezier(0.23, 1, 0.32, 1) 100ms, opacity 300ms cubic-bezier(0.23, 1, 0.32, 1) 100ms;
+ --border-transition-base: border-color .2s cubic-bezier(.645,.045,.355,1);
+ --color-transition-base: color .2s cubic-bezier(.645,.045,.355,1);
+
+ /* Colors
+ -------------------------- */
+ --color-primary: #20a0ff;
+ --color-success: #13ce66;
+ --color-warning: #f7ba2a;
+ --color-danger: #ff4949;
+ --color-info: #50BFFF;
+ --color-blue: #2e90fe;
+ --color-blue-light: #5da9ff;
+ --color-blue-lighter: rgba(var(--color-blue), 0.12);
+ --color-white: #fff;
+ --color-black: #000;
+ --color-grey: #C0CCDA;
+
+ /* Link
+ -------------------------- */
+ --link-color: #475669;
+ --link-hover-color: var(--color-primary);
+
+ /* Border
+ -------------------------- */
+ --border-width-base: 1px;
+ --border-style-base: solid;
+ --border-color-base: var(--color-grey);
+ --border-color-hover: #8492a6;
+ --border-base: var(--border-width-base) var(--border-style-base) var(--border-color-base);
+ --border-radius-base: 4px;
+ --border-radius-small: 2px;
+ --border-radius-circle: 100%;
+ --shadow-base: 0 0 2px rgba(var(--color-black), 0.18), 0 0 1px var(--color-blue-light);
+
+ /* Box-shadow
+ -------------------------- */
+ --box-shadow-base: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04);
+ --box-shadow-dark: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .12);
+
+ /* Fill
+ -------------------------- */
+ --fill-base: var(--color-white);
+
+ /* Font
+ -------------------------- */
+ --font-size-base: 14px;
+ --font-color-base: #1f2d3d;
+ --font-color-disabled-base: #bbb;
+
+ /* Size
+ -------------------------- */
+ --size-base: 14px;
+
+ /* z-index
+ -------------------------- */
+ --index-normal: 1;
+ --index-top: 1000;
+ --index-popper: 2000;
+
+ /* Disable base
+ -------------------------- */
+ --disabled-fill-base: #EFF2F7;
+ --disabled-color-base: #bbb;
+ --disabled-border-base: #D3DCE6;
+
+ /* Icon
+ -------------------------- */
+ --icon-color: #666;
+
+ /* Checkbox
+ -------------------------- */
+ --checkbox-font-size: 14px;
+ --checkbox-color: #1f2d3d;
+ --checkbox-input-height: 18px;
+ --checkbox-input-width: 18px;
+ --checkbox-input-border-radius: var(--border-radius-base);
+ --checkbox-input-fill: #fff;
+ --checkbox-input-border: var(--border-base);
+ --checkbox-input-border-color: var(--border-color-base);
+ --checkbox-icon-color: #fff;
+
+ --checkbox-disabled-input-border-color: var(--disabled-border-base);
+ --checkbox-disabled-input-fill: var(--disabled-fill-base);
+ --checkbox-disabled-icon-color: var(--disabled-fill-base);
+
+ --checkbox-disabled-checked-input-fill: var(--disabled-border-base);
+ --checkbox-disabled-checked-input-border-color: var(--disabled-border-base);
+ --checkbox-disabled-checked-icon-color: #fff;
+
+ --checkbox-checked-input-border-color: var(--color-blue);
+ --checkbox-checked-input-fill: var(--color-primary);
+ --checkbox-checked-icon-color: var(--fill-base);
+
+ --checkbox-input-shadow-hover: var(--shadow-base);
+ --checkbox-input-border-color-hover: var(--color-primary);
+
+ /* Radio
+ -------------------------- */
+ --radio-font-size: 14px;
+ --radio-color: #1f2d3d;
+ --radio-input-height: 18px;
+ --radio-input-width: 18px;
+ --radio-input-border-radius: var(--border-radius-circle);
+ --radio-input-fill: #fff;
+ --radio-input-border: var(--border-base);
+ --radio-input-border-color: var(--border-color-base);
+ --radio-icon-color: #fff;
+
+ --radio-disabled-input-border-color: var(--disabled-border-base);
+ --radio-disabled-input-fill: var(--disabled-fill-base);
+ --radio-disabled-icon-color: var(--disabled-fill-base);
+
+ --radio-disabled-checked-input-fill: var(--disabled-border-base);
+ --radio-disabled-checked-input-border-color: var(--disabled-border-base);
+ --radio-disabled-checked-icon-color: #fff;
+
+ --radio-checked-input-border-color: var(--color-primary);
+ --radio-checked-input-fill: #fff;
+ --radio-checked-icon-color: var(--color-primary);
+
+ --radio-input-shadow-hover: var(--shadow-base);
+ --radio-input-border-color-hover: var(--color-primary);
+
+ --radio-button-font-size: var(--font-size-base);
+
+ /* Select
+ -------------------------- */
+ --select-border-color-hover: var(--border-color-hover);
+ --select-disabled-border: var(--disabled-border-base);
+ --select-font-size: var(--font-size-base);
+ --select-close-hover-color: #99a9bf;
+
+ --select-input-color: var(--color-grey);
+ --select-multiple-input-color: #666;
+ --select-input-focus-background: #2ea0ff;
+ --select-input-font-size: 12px;
+
+ --select-tag-height: 24px;
+ --select-tag-color: var(--color-white);
+ --select-tag-background: var(--color-primary);
+
+ --select-option-color: #475669;
+ --select-option-disabled-color: var(--color-grey);
+ --select-option-height: 36px;
+ --select-option-hover-background: #e5e9f2;
+ --select-option-selected: var(--color-primary);
+ --select-option-selected-hover: #1D8CE0;
+
+ --select-group-color: #999;
+ --select-group-height: 30px;
+ --select-group-font-size: 12px;
+
+ --select-dropdown-background: var(--color-white);
+ --select-dropdown-shadow: var(--box-shadow-base);
+ --select-dropdown-empty-color: #999;
+ --select-dropdown-max-height: 274px;
+ --select-dropdown-padding: 6px 0;
+ --select-dropdown-empty-padding: 10px 0;
+ --select-dropdown-border: solid 1px #d3dce6;
+
+ /* Alert
+ -------------------------- */
+ --alert-padding: 8px 16px;
+ --alert-border-radius: var(--border-radius-base);
+ --alert-title-font-size: 13px;
+ --alert-description-font-size: 12px;
+ --alert-close-font-size: 12px;
+ --alert-close-customed-font-size: 13px;
+
+ --alert-success-color: var(--color-success);
+ --alert-info-color: var(--color-info);
+ --alert-warning-color: var(--color-warning);
+ --alert-danger-color: var(--color-danger);
+
+ --alert-icon-size: 16px;
+ --alert-icon-large-size: 28px;
+
+ /* Message Box
+ -------------------------- */
+ --msgbox-width: 420px;
+ --msgbox-border-radius: 3px;
+ --msgbox-font-size: 16px;
+ --msgbox-content-font-size: 14px;
+ --msgbox-content-color: #475669;
+ --msgbox-error-font-size: 12px;
+
+ --msgbox-success-color: var(--color-success);
+ --msgbox-info-color: var(--color-info);
+ --msgbox-warning-color: var(--color-warning);
+ --msgbox-danger-color: var(--color-danger);
+
+ /* Message
+ -------------------------- */
+ --message-shadow: var(--box-shadow-base);
+ --message-min-width: 300px;
+ --message-padding: 10px 12px;
+ --message-content-color: #8492a6;
+ --message-close-color: var(--color-grey);
+ --message-close-hover-color: #99A9BF;
+
+ --message-success-color: var(--color-success);
+ --message-info-color: var(--color-info);
+ --message-warning-color: var(--color-warning);
+ --message-danger-color: var(--color-danger);
+
+ /* Notification
+ -------------------------- */
+ --notification-width: 330px;
+ --notification-padding: 20px;
+ --notification-shadow: var(--box-shadow-base);
+ --notification-icon-size: 40px;
+ --notification-font-size: var(--font-size-base);
+ --notification-color: #8492a6;
+ --notification-title-font-size: 16px;
+ --notification-title-color: #1f2d3d;
+
+ --notification-close-color: var(--color-grey);
+ --notification-close-hover-color: #99A9BF;
+
+ --notification-success-color: var(--color-success);
+ --notification-info-color: var(--color-info);
+ --notification-warning-color: var(--color-warning);
+ --notification-danger-color: var(--color-danger);
+
+ /* Input
+ -------------------------- */
+ --input-font-size: var(--font-size-base);
+ --input-color: var(--font-color-base);
+ --input-width: 140px;
+ --input-height: 36px;
+ --input-shadow-hover: var(--shadow-base);
+ --input-border: var(--border-base);
+ --input-border-color: var(--border-color-base);
+ --input-border-radius: var(--border-radius-base);
+ --input-border-color-hover: var(--border-color-hover);
+ --input-fill: #fff;
+ --input-fill-disabled: var(--disabled-fill-base);
+ --input-color-disabled: var(--font-color-disabled-base);
+ --input-icon-color: var(--color-grey);
+ --input-placeholder-color: #99a9bf;
+ --input-max-width: 314px;
+
+ --input-hover-border: var(--border-color-hover);
+
+ --input-focus-border: var(--color-primary);
+ --input-focus-fill: #fff;
+
+ --input-disabled-fill: var(--disabled-fill-base);
+ --input-disabled-border: var(--disabled-border-base);
+ --input-disabled-color: var(--disabled-color-base);
+ --input-disabled-placeholder-color: #C0CCDA;
+
+ --input-large-font-size: 16px;
+ --input-large-height: 42px;
+
+ --input-small-font-size: 13px;
+ --input-small-height: 30px;
+
+ --input-mini-font-size: 12px;
+ --input-mini-height: 22px;
+
+ /* Cascader
+ -------------------------- */
+ --cascader-menu-fill: var(--fill-base);
+ --cascader-menu-font-size: var(--font-size-base);
+ --cascader-menu-radius: var(--border-radius-base);
+ --cascader-menu-border: var(--border-base);
+ --cascader-menu-border-color: var(--border-color-base);
+ --cascader-menu-border-width: var(--border-width-base);
+ --cascader-menu-color: var(--font-color-base);
+ --cascader-menu-option-color-active: var(--color-blue);
+ --cascader-menu-option-fill-active: rgba(var(--color-blue), 0.12);
+ --cascader-menu-option-color-hover: var(--font-color-base);
+ --cascader-menu-option-fill-hover: rgba(var(--color-black), 0.06);
+ --cascader-menu-option-color-disabled: #999;
+ --cascader-menu-option-fill-disabled: rgba(var(--color-black), 0.06);
+ --cascader-menu-option-empty-color: #666;
+ --cascader-menu-group-color: #999;
+ --cascader-menu-shadow: 0 1px 2px rgba(var(--color-black), 0.14), 0 0 3px rgba(var(--color-black), 0.14);
+ --cascader-menu-option-pinyin-color: #999;
+ --cascader-menu-submenu-shadow: 1px 1px 2px rgba(var(--color-black), 0.14), 1px 0 2px rgba(var(--color-black), 0.14);
+
+ /* Group
+ -------------------------- */
+ --group-option-flex: 0 0 (1/5) * 100%;
+ --group-option-offset-bottom: 12px;
+ --group-option-fill-hover: rgba(var(--color-black), 0.06);
+ --group-title-color: var(--color-black);
+ --group-title-font-size: var(--font-size-base);
+ --group-title-width: 66px;
+
+ /* Tab
+ -------------------------- */
+ --tab-font-size: var(--font-size-base);
+ --tab-border-line: 1px solid #e4e4e4;
+ --tab-header-color-active: var(--color-blue);
+ --tab-header-color-hover: var(--font-color-base);
+ --tab-header-color: var(--font-color-base);
+ --tab-header-fill-active: rgba(var(--color-black), 0.06);
+ --tab-header-fill-hover: rgba(var(--color-black), 0.06);
+ --tab-vertical-header-width: 90px;
+ --tab-vertical-header-count-color: var(--color-white);
+ --tab-vertical-header-count-fill: var(--color-blue);
+ --tab-horizontal-border: 2px solid #438de0;
+
+ /* Button
+ -------------------------- */
+ --button-font-size: 14px;
+ --button-border-radius: var(--border-radius-base);
+ --button-paddding: 5px 20px;
+ --button-padding-vertical: 10px;
+ --button-padding-horizontal: 15px;
+
+ --button-large-font-size: 16px;
+ --button-large-padding-vertical: 11px;
+ --button-large-padding-horizontal: 19px;
+
+ --button-small-font-size: 12px;
+ --button-small-padding-vertical: 7px;
+ --button-small-padding-horizontal: 9px;
+
+ --button-mini-font-size: 12px;
+ --button-mini-padding-vertical: 4px;
+ --button-mini-padding-horizontal: 4px;
+
+ --button-default-color: #1F2D3D;
+ --button-default-fill: #fff;
+ --button-default-border: #c4c4c4;
+
+ --button-ghost-color: #666;
+ --button-ghost-fill: transparent;
+ --button-ghost-border: none;
+
+ --button-disabled-color: #C0CCDA;
+ --button-disabled-fill: #EFF2F7;
+ --button-disabled-border: #D3DCE6;
+
+ --button-primary-border: var(--color-primary);
+ --button-primary-color: #fff;
+ --button-primary-fill: var(--color-primary);
+
+ --button-success-border: var(--color-success);
+ --button-success-color: #fff;
+ --button-success-fill: var(--color-success);
+
+ --button-warning-border: var(--color-warning);
+ --button-warning-color: #fff;
+ --button-warning-fill: var(--color-warning);
+
+ --button-danger-border: var(--color-danger);
+ --button-danger-color: #fff;
+ --button-danger-fill: var(--color-danger);
+
+ --button-info-border: var(--color-info);
+ --button-info-color: #fff;
+ --button-info-fill: var(--color-info);
+
+ --button-hover-tint-percent: 20%;
+ --button-active-shade-percent: 10%;
+
+
+ /* cascader
+ -------------------------- */
+ --cascader-height: 200px;
+
+ /* Switch
+ -------------------------- */
+ --switch-on-color: #20a0ff;
+ --switch-off-color: #C0CCDA;
+ --switch-disabled-color: #E5E9F3;
+ --switch-disabled-text-color: #F9FAFC;
+
+ --switch-font-size: var(--font-size-base);
+ --switch-core-border-radius: 12px;
+ --switch-size: 46px 22px;
+ --switch-button-size: 16px;
+
+ /* Dialog
+ -------------------------- */
+ --dialog-background-color: var(--color-blue);
+ --dialog-footer-background: var(--color-blue-lighter);
+ --dialog-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
+ --dialog-tiny-width: 30%;
+ --dialog-small-width: 50%;
+ --dialog-large-width: 90%;
+ --dialog-close-color: var(--color-grey);
+ --dialog-close-hover-color: var(--color-primary);
+ --dialog-title-font-size: 16px;
+ --dialog-font-size: 14px;
+
+ /* Table
+ -------------------------- */
+ --table-border-color: #e0e6ed;
+ --table-text-color: #1f2d3d;
+ --table-header-background: #EFF2F7;
+
+ /* Pagination
+ -------------------------- */
+ --pagination-font-size: 13px;
+ --pagination-fill: var(--color-white);
+ --pagination-color: #475669;
+ --pagination-border-radius: 2px;
+ --pagination-button-color: #99a9bf;
+ --pagination-button-size: 28px;
+ --pagination-button-disabled-color: #e4e4e4;
+ --pagination-button-disabled-fill: var(--color-white);
+ --pagination-border-color: #D3DCE6;
+ --pagination-hover-fill: var(--color-primary);
+ --pagination-hover-color: var(--color-white);
+
+ /* Popover
+ -------------------------- */
+ --popover-fill: #fff;
+ --popover-font-size: 12px;
+ --popover-border-color: #d3dce6;
+ --popover-arrow-size: 6px;
+ --popover-padding: 10px;
+ --popover-title-font-size: 13px;
+ --popover-title-color: #1f2d3d;
+
+ /* Tooltip
+ -------------------------- */
+ --tooltip-fill: #1f2d3d;
+ --tooltip-color: #fff;
+ --tooltip-font-size: 12px;
+ --tooltip-border-color: #1f2d3d;
+ --tooltip-arrow-size: 6px;
+ --tooltip-padding: 10px;
+
+ /* Tag
+ -------------------------- */
+ --tag-padding: 0 5px;
+ --tag-fill: #8492a6;
+ --tag-border: #8492a6;
+ --tag-color: #fff;
+ --tag-close-color: #666;
+ --tag-font-size: 12px;
+ --tag-border-radius: 4px;
+
+ --tag-gray-fill: #e5e9f2;
+ --tag-gray-border: #e5e9f2;
+ --tag-gray-color: #475669;
+
+ --tag-primary-fill: rgba(32,159,255,0.10);
+ --tag-primary-border: rgba(32,159,255,0.20);
+ --tag-primary-color: #20a0ff;
+
+ --tag-success-fill: rgba(18,206,102,0.10);
+ --tag-success-border: rgba(18,206,102,0.20);
+ --tag-success-color: #13ce66;
+
+ --tag-warning-fill: rgba(247,186,41,0.10);
+ --tag-warning-border: rgba(247,186,41,0.20);
+ --tag-warning-color: #f7ba2a;
+
+ --tag-danger-fill: rgba(255,73,73,0.10);
+ --tag-danger-border: rgba(255,73,73,0.20);
+ --tag-danger-color: #ff4949;
+
+ /* Dropdown
+ -------------------------- */
+ --dropdown-menu-box-shadow: var(--box-shadow-dark);
+ --dropdown-menuItem-hover-fill: #e5e9f2;
+ --dropdown-menuItem-hover-color: #475669;
+
+ /* Badge
+ -------------------------- */
+ --badge-fill: var(--color-danger);
+ --badge-radius: 10px;
+ --badge-font-size: 12px;
+ --badge-padding: 6px;
+ --badge-size: 18px;
+
+ /* Card
+ --------------------------*/
+ --card-border-color: var(--disabled-border-base);
+ --card-border-radius: 4px;
+ --card-padding: 20px;
+
+ /* Slider
+ --------------------------*/
+ --slider-main-background-color: var(--color-primary);
+ --slider-runway-background-color: #e5e9f2;
+ --slider-button-hover-color: #1d8ce0;
+ --slider-stop-background-color: var(--color-grey);
+ --slider-disable-color: var(--color-grey);
+
+ --slider-margin: 16px 0;
+ --slider-border-radius: 3px;
+ --slider-height: 4px;
+ --slider-button-size: 12px;
+ --slider-button-wrapper-size: 36px;
+ --slider-button-wrapper-offset: -16px;
+
+ /* Steps
+ --------------------------*/
+ --steps-border-color: var(--disabled-border-base);
+ --steps-border-radius: 4px;
+ --steps-padding: 20px;
+
+ /* Steps
+ --------------------------*/
+ --menu-item-color: #475669;
+ --menu-item-fill: #eff2f7;
+ --menu-item-hover-fill: #d3dce6;
+ --submenu-item-fill: #e5e9f2;
+
+ --dark-menu-item-color: #475669;
+ --dark-menu-item-fill: #324057;
+ --dark-menu-item-hover-fill: #475669;
+ --dark-submenu-item-fill: #1f2d3d;
+
+ /* Rate
+ --------------------------*/
+ --rate-height: 20px;
+ --rate-font-size: var(--font-size-base);
+ --rate-icon-size: 18px;
+ --rate-icon-margin: 6px;
+ --rate-icon-color: #C6D1DE;
+
+ /* DatePicker
+ --------------------------*/
+ --datepicker-color: #475669;
+ --datepicker-off-color: #ddd;
+ --datepicker-header-color: #8492a6;
+ --datepicker-icon-color: #99a9bf;
+ --datepicker-trigger-color: #c0ccda;
+ --datepicker-border-color: #d3dce6;
+ --datepicker-inner-border-color: #e4e4e4;
+ --datepicker-cell-hover-color: #e5e9f2;
+ --datepicker-inrange-color: #D3ECFF;
+ --datepicker-inrange-hover-color: #AFDCFF;
+ --datepicker-active-color: #20a0ff;
+ --datepicker-text-hover-color: #20a0ff;
+}
diff --git a/packages/theme-default/src/core/dropdown.css b/packages/theme-default/src/core/dropdown.css
new file mode 100644
index 000000000..15a045db2
--- /dev/null
+++ b/packages/theme-default/src/core/dropdown.css
@@ -0,0 +1,45 @@
+@charset "UTF-8";
+@import "../common/var.css";
+@import "./option.css";
+
+@component-namespace element {
+
+ @b dropdown {
+ background-color: var(--dropdown-fill);
+ border: var(--dropdown-border);
+ border-radius: var(--dropdown-radius);
+ box-shadow: var(--dropdown-shadow);
+ left: 0;
+ list-style-type: none;
+ margin: -var(--dropdown-border-width);
+ margin-top: 5px;
+ min-width: calc(var(--input-width) + 4);
+ padding: 0;
+ position: absolute;
+ white-space: nowrap;
+ z-index: var(--index-normal);
+
+ @e empty {
+ color: var(--dropdown-option-empty-color);
+ font-size: var(--input-font-size);
+ padding: 7px;
+ text-align: center;
+ }
+
+ @e list {
+ margin: 0;
+ max-height: var(--cascader-height);
+ overflow: auto;
+ padding: 0;
+ }
+
+ @e option {
+ max-height: 250px;
+ overflow: auto;
+ }
+
+ &:empty {
+ display: none;
+ }
+ }
+}
diff --git a/packages/theme-default/src/core/input.css b/packages/theme-default/src/core/input.css
new file mode 100644
index 000000000..1630321ee
--- /dev/null
+++ b/packages/theme-default/src/core/input.css
@@ -0,0 +1,55 @@
+@charset "UTF-8";
+@import "../common/var.css";
+
+@component-namespace element-core {
+
+ @b input {
+ background-color: var(--input-fill);
+ border: var(--input-border);
+ border-radius: var(--input-border-radius);
+ box-sizing: border-box;
+ color: var(--input-color);
+ cursor: text;
+ display: inline-block;
+ font-size: var(--input-font-size);
+ min-height: var(--input-height);
+ min-width: var(--input-width);
+ padding: 2px;
+ position: relative;
+ vertical-align: middle;
+
+ @when disabled {
+ background-color: var(--input-fill-disabled);
+ border-color: inherit;
+ box-shadow: none;
+ color: var(--input-color-disabled);
+ cursor: not-allowed;
+ }
+
+ @when readonly {
+ cursor: pointer;
+ }
+
+ @when multiple {
+ cursor: text;
+ }
+
+ &:hover,
+ &.is-active {
+ border-color: var(--input-focus-border);
+ box-shadow: var(--input-shadow-hover);
+ }
+
+ @e original {
+ background-color: inherit;
+ border: none;
+ box-sizing: border-box;
+ cursor: inherit;
+ height: 100%;
+ line-height: 1.2;
+ outline: none;
+ padding: 5px 7px;
+ width: auto;
+ }
+ }
+}
diff --git a/packages/theme-default/src/core/option.css b/packages/theme-default/src/core/option.css
new file mode 100644
index 000000000..dde059657
--- /dev/null
+++ b/packages/theme-default/src/core/option.css
@@ -0,0 +1,72 @@
+@charset "UTF-8";
+@import "../common/var.css";
+
+@component-namespace element {
+
+ @b option {
+ box-sizing: border-box;
+ color: var(--dropdown-color);
+ cursor: pointer;
+ display: block;
+ font-size: var(--dropdown-font-size);
+ padding: 9px;
+
+ @e remark {
+ color: var(--dropdown-option-pinyin-color);
+ float: right;
+ }
+
+ @m arrow {
+
+ &:not(.is-last)::after {
+ border-left: 1px solid var(--dropdown-border-color);
+ border-top: 1px solid var(--dropdown-border-color);
+ content: " ";
+ height: 4px;
+ margin-top: 6px;
+ position: absolute;
+ right: 12px;
+ transform: rotate(135deg);
+ width: 4px;
+ }
+ }
+
+ @when disabled {
+ background-color: transparent;
+ color: var(--dropdown-option-color-disabled);
+ cursor: not-allowed;
+ }
+
+ &:hover,
+ &.is-hover {
+ background-color: var(--dropdown-option-fill-hover);
+ color: var(--dropdown-option-color-hover);
+ }
+
+ @when selected {
+ background-color: var(--dropdown-option-fill-active);
+ color: var(--dropdown-option-color-active);
+ }
+ }
+
+ @b optiongroup {
+ list-style: none;
+ padding-left: 0;
+
+ & .element-option {
+ padding-left: 21px;
+ }
+
+ @e title {
+ box-sizing: border-box;
+ color: var(--dropdown-group-color);
+ display: inline-block;
+ font-size: var(--dropdown-font-size);
+ padding: 8px;
+
+ &:hover {
+ background-color: inherit;
+ }
+ }
+ }
+}
diff --git a/packages/theme-default/src/core/tag.css b/packages/theme-default/src/core/tag.css
new file mode 100644
index 000000000..2fc4aabf5
--- /dev/null
+++ b/packages/theme-default/src/core/tag.css
@@ -0,0 +1,29 @@
+@charset "UTF-8";
+@import "../common/var.css";
+
+@component-namespace element-core {
+
+ @b tag {
+ background-color: var(--tag-fill);
+ border: 0;
+ border-radius: var(--tag-border-radius);
+ color: var(--tag-color);
+ height: 22px;
+ margin: 1px;
+ outline: 0;
+ padding: 3px 16px 3px 3px;
+ position: relative;
+
+ @e button {
+ color: var(--tag-close-color);
+ cursor: pointer;
+ line-height: 1;
+
+ /* 增大可点击面积 */
+ padding: 5px;
+ position: absolute;
+ right: 0;
+ top: 0;
+ }
+ }
+}
diff --git a/packages/theme-default/src/date-picker.css b/packages/theme-default/src/date-picker.css
new file mode 100644
index 000000000..3854024fc
--- /dev/null
+++ b/packages/theme-default/src/date-picker.css
@@ -0,0 +1,8 @@
+@import "./date-picker/date-table.css";
+@import "./date-picker/month-table.css";
+@import "./date-picker/year-table.css";
+@import "./date-picker/time-spinner.css";
+@import "./date-picker/picker.css";
+@import "./date-picker/date-picker.css";
+@import "./date-picker/date-range-picker.css";
+@import "./date-picker/time-range-picker.css";
diff --git a/packages/theme-default/src/date-picker/date-picker.css b/packages/theme-default/src/date-picker/date-picker.css
new file mode 100644
index 000000000..5d6acc056
--- /dev/null
+++ b/packages/theme-default/src/date-picker/date-picker.css
@@ -0,0 +1,103 @@
+@import "../common/var.css";
+@import "./picker-panel.css";
+
+@component-namespace el {
+ @b date-picker {
+ min-width: 254px;
+
+ &.has-sidebar.has-time {
+ min-width: 434px;
+ }
+
+ &.has-sidebar {
+ min-width: 370px;
+ }
+
+ &.has-time {
+ min-width: 324px;
+ }
+
+ .el-picker-panel__content {
+ min-width: 224px;
+ }
+
+ table {
+ table-layout: fixed;
+ width: 100%;
+ }
+
+ @e editor-wrap {
+ position: relative;
+ display: table-cell;
+ padding: 0 5px;
+ }
+
+ @e editor {
+ position: relative;
+ border: 1px solid #c0ccda;
+ border-radius: 4px;
+ padding: 5px 10px;
+ box-sizing: border-box;
+ height: 28px;
+ outline: none;
+ appearance: none;
+ transition: border 0.3s;
+ width: 100%;
+
+ &:hover {
+ border-color: #20a0ff;
+ }
+ }
+
+ @e time-header {
+ position: relative;
+ border-bottom: 1px solid var(--datepicker-inner-border-color);
+ font-size: 12px;
+ padding: 8px 5px 5px 5px;
+ display: table;
+ width: 100%;
+ box-sizing: border-box;
+ }
+
+ @e header {
+ margin: 12px;
+ text-align: center;
+ }
+
+ @e header-label {
+ font-size: 14px;
+ padding: 0 5px;
+ line-height: 22px;
+ text-align: center;
+ cursor: pointer;
+
+ &:hover {
+ color: var(--datepicker-text-hover-color);
+ }
+
+ &.active {
+ color: var(--datepicker-active-color);
+ }
+ }
+
+ @e prev-btn {
+ float: left;
+ }
+
+ @e next-btn {
+ float: right;
+ }
+
+ @e time-wrap {
+ padding: 10px;
+ text-align: center;
+ }
+
+ @e time-label {
+ float: left;
+ cursor: pointer;
+ line-height: 30px;
+ margin-left: 10px;
+ }
+ }
+}
diff --git a/packages/theme-default/src/date-picker/date-range-picker.css b/packages/theme-default/src/date-picker/date-range-picker.css
new file mode 100644
index 000000000..b99d142d6
--- /dev/null
+++ b/packages/theme-default/src/date-picker/date-range-picker.css
@@ -0,0 +1,129 @@
+@import "../common/var.css";
+
+@component-namespace el {
+ @b date-range-picker {
+ min-width: 520px;
+
+ &.has-sidebar.has-time {
+ min-width: 766px;
+ }
+
+ &.has-sidebar {
+ min-width: 620px;
+ }
+
+ &.has-time {
+ min-width: 660px;
+ }
+
+ table {
+ table-layout: fixed;
+ width: 100%;
+ }
+
+ .el-picker-panel__body {
+ min-width: 513px;
+ }
+
+ .el-picker-panel__content {
+ margin: 0;
+ }
+
+ @e editor {
+ position: relative;
+ border: 1px solid #c0ccda;
+ border-radius: 4px;
+ padding: 5px 10px;
+ box-sizing: border-box;
+ height: 28px;
+ outline: none;
+ appearance: none;
+ transition: border 0.3s;
+ width: 100%;
+
+ &:hover {
+ border-color: #20a0ff;
+ }
+ }
+
+ @e header {
+ position: relative;
+ text-align: center;
+ height: 28px;
+
+ button {
+ float: left;
+ }
+
+ div {
+ font-size: 14px;
+ margin-right: 50px;
+ }
+ }
+
+ @e content {
+ float: left;
+ width: 50%;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 16px;
+
+ @when left {
+ border-right: 1px solid var(--datepicker-inner-border-color);
+ }
+
+ @when right {
+ .el-date-range-picker__header {
+ button {
+ float: right;
+ }
+
+ div {
+ margin-left: 50px;
+ margin-right: 50px;
+ }
+ }
+ }
+ }
+
+ @e editors-wrap {
+ box-sizing: border-box;
+ display: table-cell;
+
+ @when right {
+ text-align: right;
+ }
+ }
+
+ @e time-header {
+ position: relative;
+ border-bottom: 1px solid var(--datepicker-inner-border-color);
+ font-size: 12px;
+ padding: 8px 5px 5px 5px;
+ display: table;
+ width: 100%;
+ box-sizing: border-box;
+
+ > .el-icon-arrow-right {
+ font-size: 20px;
+ vertical-align: middle;
+ display: table-cell;
+ color: var(--datepicker-icon-color);
+ }
+ }
+
+ @e time-picker-wrap {
+ position: relative;
+ display: table-cell;
+ padding: 0 5px;
+
+ .el-picker-panel {
+ position: absolute;
+ top: 13px;
+ right: 0;
+ z-index: 1;
+ background: #fff;
+ }
+ }
+ }
+}
diff --git a/packages/theme-default/src/date-picker/date-table.css b/packages/theme-default/src/date-picker/date-table.css
new file mode 100644
index 000000000..6d37e6d38
--- /dev/null
+++ b/packages/theme-default/src/date-picker/date-table.css
@@ -0,0 +1,75 @@
+@import "../common/var.css";
+
+@component-namespace el {
+ @b date-table {
+ font-size: 12px;
+ min-width: 224px;
+ user-select: none;
+
+ @when week-mode {
+ .el-date-table__row {
+ &:hover {
+ background-color: var(--datepicker-cell-hover-color);
+ }
+
+ &.current {
+ background-color: var(--datepicker-inrange-color);
+ }
+ }
+ }
+
+ td {
+ width: 32px;
+ height: 32px;
+ box-sizing: border-box;
+ text-align: center;
+ cursor: pointer;
+
+ &.next-month,
+ &.prev-month {
+ color: var(--datepicker-off-color);
+ }
+
+ &.today {
+ color: var(--datepicker-text-hover-color);
+ }
+
+ &.available:hover {
+ background-color: var(--datepicker-cell-hover-color);
+ }
+
+ &.in-range {
+ background-color: var(--datepicker-inrange-color);
+ &:hover {
+ background-color: var(--datepicker-inrange-hover-color);
+ }
+ }
+
+ &.current,
+ &.start-date,
+ &.end-date {
+ background-color: var(--datepicker-active-color) !important;
+ color: #fff;
+ }
+
+ &.disabled {
+ background-color: #f4f4f4;
+ opacity: 1;
+ cursor: not-allowed;
+ color: #ccc;
+ text-decoration: line-through;
+ }
+
+ &.week {
+ font-size: 80%;
+ color: var(--datepicker-header-color);
+ }
+ }
+
+ th {
+ padding: 5px;
+ color: var(--datepicker-header-color);
+ font-weight: 400;
+ }
+ }
+}
diff --git a/packages/theme-default/src/date-picker/month-table.css b/packages/theme-default/src/date-picker/month-table.css
new file mode 100644
index 000000000..ac6a42740
--- /dev/null
+++ b/packages/theme-default/src/date-picker/month-table.css
@@ -0,0 +1,31 @@
+@import "../common/var.css";
+
+@component-namespace el {
+ @b month-table {
+ font-size: 12px;
+ margin: -1px;
+
+ td {
+ text-align: center;
+ padding: 20px 3px;
+ cursor: pointer;
+
+ .cell {
+ width: 48px;
+ height: 32px;
+ display: block;
+ line-height: 32px;
+ color: var(--datepicker-color);
+
+ &:hover {
+ background-color: var(--datepicker-cell-hover-color);
+ }
+ }
+
+ &.current .cell {
+ background-color: var(--datepicker-active-color) !important;
+ color: #fff;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/packages/theme-default/src/date-picker/picker-panel.css b/packages/theme-default/src/date-picker/picker-panel.css
new file mode 100644
index 000000000..edb283537
--- /dev/null
+++ b/packages/theme-default/src/date-picker/picker-panel.css
@@ -0,0 +1,113 @@
+@import "../common/var.css";
+
+@component-namespace el {
+ @b picker-panel {
+ color: var(--datepicker-color);
+ border: 1px solid var(--datepicker-border-color);
+ box-shadow: 0 2px 6px #ccc;
+ background: #fff;
+ border-radius: 2px;
+ line-height: 20px;
+ margin: 5px 0;
+
+ @e body, body-wrapper {
+ &::after {
+ content: "";
+ display: table;
+ clear: both;
+ }
+ }
+
+ @e content {
+ position: relative;
+ margin: 15px;
+ }
+
+ @e footer {
+ border-top: 1px solid var(--datepicker-inner-border-color);
+ padding: 4px;
+ text-align: right;
+ background-color: #fff;
+ position: relative;
+ }
+
+ @e shortcut {
+ display: block;
+ width: 100%;
+ border: 0;
+ background-color: transparent;
+ line-height: 28px;
+ font-size: 14px;
+ color: var(--datepicker-color);
+ padding-left: 12px;
+ text-align: left;
+ outline: none;
+ cursor: pointer;
+
+ &:hover {
+ background-color: #e5e9f2;
+ }
+
+ &.active {
+ background-color: #e6f1fe;
+ color: var(--datepicker-active-color);
+ }
+ }
+
+ @e btn {
+ border: 1px solid #dcdcdc;
+ color: #333;
+ line-height: 24px;
+ border-radius: 2px;
+ padding: 0 20px;
+ cursor: pointer;
+ background-color: transparent;
+ outline: none;
+ font-size: 12px;
+
+ &[disabled] {
+ color: #cccccc;
+ cursor: not-allowed;
+ }
+ }
+
+ @e icon-btn {
+ font-size: 12px;
+ color: var(--datepicker-icon-color);
+ border: 0;
+ background: transparent;
+ cursor: pointer;
+ outline: none;
+ margin-top: 3px;
+
+ &:hover {
+ color: var(--datepicker-text-hover-color);
+ }
+ }
+
+ @e link-btn {
+ cursor: pointer;
+ color: #55a4ff;
+ text-decoration: none;
+ padding: 15px;
+ font-size: 12px;
+ }
+ }
+
+ .el-picker-panel *[slot=sidebar],
+ .el-picker-panel__sidebar {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ width: 110px;
+ border-right: 1px solid var(--datepicker-inner-border-color);
+ box-sizing: border-box;
+ padding-top: 6px;
+ background-color: #f9fafc;
+ }
+
+ .el-picker-panel *[slot=sidebar] + .el-picker-panel__body,
+ .el-picker-panel__sidebar + .el-picker-panel__body {
+ margin-left: 110px;
+ }
+}
diff --git a/packages/theme-default/src/date-picker/picker.css b/packages/theme-default/src/date-picker/picker.css
new file mode 100644
index 000000000..1ee8c5a43
--- /dev/null
+++ b/packages/theme-default/src/date-picker/picker.css
@@ -0,0 +1,123 @@
+@import "../common/var.css";
+@import "../common/transition.css";
+
+@component-namespace el {
+ @b date-editor {
+ position: relative;
+ display: inline-block;
+ box-sizing: border-box;
+ height: 36px;
+ width: 182px;
+
+ @e editor {
+ border: 1px solid #c0ccda;
+ border-radius: 4px;
+ line-height: 18px;
+ height: 36px;
+ padding: 3px 10px;
+ width: 100%;
+ box-sizing: border-box;
+ transition: border 0.3s;
+ color: #666;
+ font-size: 14px;
+
+ &::-webkit-input-placeholder {
+ color: var(--input-placeholder-color);
+ font-size: 14px;
+ }
+
+ &::-moz-placeholder {
+ color: #bbb;
+ font-size: 14px;
+ }
+
+ &:-ms-input-placeholder {
+ color: #bbb;
+ font-size: 14px;
+ }
+
+ &::placeholder {
+ color: #bbb;
+ font-size: 14px;
+ }
+ }
+
+ @e trigger {
+ &.el-icon {
+ cursor: pointer;
+ position: absolute;
+ display: inline-block;
+ width: 16px;
+ right: 10px;
+ top: 0;
+ bottom: 0;
+ color: var(--datepicker-trigger-color);
+ font-size: 16px;
+ line-height: 38px;
+ }
+ }
+
+ @e clear {
+ cursor: pointer;
+ position: absolute;
+ width: 20px;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ line-height: 36px;
+ color: var(--datepicker-icon-color);
+
+ &:hover {
+ color: var(--datepicker-text-hover-color);
+ }
+ }
+
+ @when have-trigger {
+ .el-date-editor__editor {
+ padding-right: 20px;
+ }
+
+ .el-date-editor__clear {
+ right: 22px;
+ }
+ }
+
+ &.lg {
+ .el-date-editor__editor {
+ padding: 6px 4px;
+ }
+ }
+
+ &.sm {
+ .el-date-editor__editor {
+ padding: 1px 1px;
+ }
+ }
+
+ .el-picker-panel {
+ position: absolute;
+ min-width: 180px;
+ box-sizing: border-box;
+ box-shadow: 0 2px 6px #ccc;
+ background: #fff;
+ z-index: 10;
+ top: 41px;
+ }
+ }
+
+ .el-date-editor__editor:focus,
+ .el-date-editor:hover > .el-date-editor__editor,
+ .el-date-editor.is-active > .el-date-editor__editor {
+ outline: none;
+ border-color: var(--datepicker-active-color);
+ }
+
+ .el-date-editor .el-date-editor__clear {
+ display: none;
+ }
+
+ .el-date-editor.is-filled:hover .el-date-editor__clear,
+ .el-date-editor.is-filled.is-active > .el-date-editor__clear {
+ display: inline-block;
+ }
+}
diff --git a/packages/theme-default/src/date-picker/time-picker.css b/packages/theme-default/src/date-picker/time-picker.css
new file mode 100644
index 000000000..e5e50be2c
--- /dev/null
+++ b/packages/theme-default/src/date-picker/time-picker.css
@@ -0,0 +1,78 @@
+@import "../common/var.css";
+
+@component-namespace el {
+ @b time-panel {
+ margin: 5px 0;
+ border: solid 1px #d3dce6;
+ background-color: #fff;
+ box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px 0 rgba(0, 0, 0, .04);
+ border-radius: 2px;
+ position: absolute;
+ width: 180px;
+ left: 0;
+ z-index: 1000;
+ user-select: none;
+
+ @e content {
+ font-size: 0;
+ display: flex;
+ position: relative;
+ overflow: hidden;
+
+ &::after, &::before {
+ content: ":";
+ top: 50%;
+ color: #fff;
+ position: absolute;
+ font-size: 14px;
+ margin-top: -15px;
+ line-height: 16px;
+ background-color: #20a0ff;
+ height: 32px;
+ z-index: -1;
+ left: 0;
+ right: 0;
+ box-sizing: border-box;
+ padding-top: 6px;
+ text-align: left;
+ }
+
+ &::after {
+ left: calc(100%/3*2);
+ margin-left: -2px;
+ }
+
+ &::before {
+ padding-left: calc(100%/3);
+ margin-right: -2px;
+ }
+ }
+
+ @e footer {
+ border-top: 1px solid var(--datepicker-inner-border-color);
+ padding: 4px;
+ height: 36px;
+ line-height: 25px;
+ text-align: right;
+ box-sizing: border-box;
+ }
+
+ @e btn {
+ border: none;
+ line-height: 28px;
+ padding: 0 5px;
+ margin: 0 5px;
+ cursor: pointer;
+ background-color: transparent;
+ outline: none;
+ font-size: 12px;
+ color: #8492a6;
+
+ &.confirm {
+ font-weight: 800;
+ color: #20a0ff;
+ }
+ }
+
+ }
+}
diff --git a/packages/theme-default/src/date-picker/time-range-picker.css b/packages/theme-default/src/date-picker/time-range-picker.css
new file mode 100644
index 000000000..863544e63
--- /dev/null
+++ b/packages/theme-default/src/date-picker/time-range-picker.css
@@ -0,0 +1,34 @@
+@import "../common/var.css";
+
+@component-namespace el {
+ @b time-range-picker {
+ min-width: 354px;
+ overflow: visible;
+
+ @e content {
+ position: relative;
+ text-align: center;
+ padding: 10px;
+ display: flex;
+ }
+
+ @e cell {
+ box-sizing: border-box;
+ margin: 0;
+ padding: 4px 7px 7px;
+ flex: 1;
+ }
+
+ @e header {
+ margin-bottom: 5px;
+ text-align: center;
+ font-size: 14px;
+ }
+
+ @e body {
+ display: flex;
+ border-radius:2px;
+ border: 1px solid var(--datepicker-border-color);
+ }
+ }
+}
diff --git a/packages/theme-default/src/date-picker/time-spinner.css b/packages/theme-default/src/date-picker/time-spinner.css
new file mode 100644
index 000000000..aaf7a5c80
--- /dev/null
+++ b/packages/theme-default/src/date-picker/time-spinner.css
@@ -0,0 +1,53 @@
+@import "../common/var.css";
+
+@component-namespace el {
+ @b time-spinner {
+ @e wrapper {
+ height: 190px;
+ overflow: hidden;
+ flex: 1;
+ vertical-align: top;
+ position: relative;
+ -ms-overflow-style: none;
+
+ &:hover {
+ overflow-y: auto;
+ }
+ }
+
+ @e list {
+ padding: 0;
+ margin: 0;
+ list-style: none;
+ text-align: center;
+
+ &::after,
+ &::before {
+ content: '';
+ display: block;
+ width: 100%;
+ height: 80px;
+ }
+ }
+
+ @e item {
+ height: 32px;
+ line-height: 32px;
+ font-size: 12px;
+
+ &:hover:not(.disabled):not(.active) {
+ background: #E5E9F2;
+ cursor: pointer;
+ }
+
+ &.active:not(.disabled) {
+ color: #fff;
+ }
+
+ &.disabled {
+ color: var(--datepicker-border-color);
+ cursor: not-allowed;
+ }
+ }
+ }
+}
diff --git a/packages/theme-default/src/date-picker/year-table.css b/packages/theme-default/src/date-picker/year-table.css
new file mode 100644
index 000000000..9e988ff28
--- /dev/null
+++ b/packages/theme-default/src/date-picker/year-table.css
@@ -0,0 +1,35 @@
+@import "../common/var.css";
+
+@component-namespace el {
+ @b year-table {
+ font-size: 12px;
+ margin: -1px;
+
+ .el-icon {
+ color: var(--datepicker-icon-color);
+ }
+
+ td {
+ text-align: center;
+ padding: 20px 3px;
+ cursor: pointer;
+
+ .cell {
+ width: 48px;
+ height: 32px;
+ display: block;
+ line-height: 32px;
+ color: var(--datepicker-color);
+ }
+
+ &.available .cell:hover {
+ background-color: var(--datepicker-cell-hover-color);
+ }
+
+ &.current .cell {
+ background-color: var(--datepicker-active-color) !important;
+ color: #fff;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/packages/theme-default/src/dialog.css b/packages/theme-default/src/dialog.css
new file mode 100755
index 000000000..d98418e60
--- /dev/null
+++ b/packages/theme-default/src/dialog.css
@@ -0,0 +1,107 @@
+@charset "UTF-8";
+@import "./common/var.css";
+@import "vue-popup/lib/popup.css";
+
+@component-namespace el {
+
+ @b dialog {
+ position: absolute;
+ left: 50%;
+ transform: translateX(-50%);
+ background: #fff;
+ border-radius: var(--border-radius-small);
+ box-shadow: var(--dialog-box-shadow);
+ box-sizing: border-box;
+
+ @modifier tiny {
+ width: var(--dialog-tiny-width);
+ }
+
+ @modifier small {
+ width: var(--dialog-small-width);
+ }
+
+ @modifier large {
+ width: var(--dialog-large-width);
+ }
+
+ @modifier full {
+ width: 100%;
+ top: 0;
+ height: 100%;
+ overflow: auto;
+ }
+
+ @e wrapper {
+ position: fixed 0 0 0 0;
+ overflow: auto;
+ margin: 0;
+ }
+
+ @e header {
+ padding: 20px 20px 0;
+ }
+
+ @e close {
+ cursor: pointer;
+ color: var(--dialog-close-color);
+
+ &:hover {
+ color: var(--dialog-close-hover-color);
+ }
+ }
+
+ @e title {
+ line-height: 1;
+ font-size: var(--dialog-title-font-size);
+ font-weight: bold;
+ color: #1f2d3d;
+ }
+
+ @e body {
+ padding: 30px 20px;
+ color: #475669;
+ font-size: var(--dialog-font-size);
+ }
+
+ @e headerbtn {
+ float: right;
+ }
+
+ @e footer {
+ padding: 10px 20px 15px;
+ text-align: right;
+ box-sizing: border-box;
+ }
+ }
+
+ .dialog-fade-enter-active {
+ animation: dialog-fade-in .3s;
+ }
+
+ .dialog-fade-leave-active {
+ animation: dialog-fade-out .3s;
+ }
+
+ @keyframes dialog-fade-in {
+ 0% {
+ transform: translate3d(0, -20px, 0);
+ opacity: 0;
+ }
+ 100% {
+ transform: translate3d(0, 0, 0);
+ opacity: 1;
+ }
+ }
+
+ @keyframes dialog-fade-out {
+ 0% {
+ transform: translate3d(0, 0, 0);
+ opacity: 1;
+ }
+ 100% {
+ transform: translate3d(0, -20px, 0);
+ opacity: 0;
+ }
+ }
+}
diff --git a/packages/theme-default/src/dropdown-item.css b/packages/theme-default/src/dropdown-item.css
new file mode 100644
index 000000000..e69de29bb
diff --git a/packages/theme-default/src/dropdown-menu.css b/packages/theme-default/src/dropdown-menu.css
new file mode 100644
index 000000000..e69de29bb
diff --git a/packages/theme-default/src/dropdown.css b/packages/theme-default/src/dropdown.css
new file mode 100644
index 000000000..7b839336b
--- /dev/null
+++ b/packages/theme-default/src/dropdown.css
@@ -0,0 +1,65 @@
+@charset "UTF-8";
+@import "./common/var.css";
+@import "./button.css";
+
+@component-namespace el {
+ @b dropdown {
+ display: inline-block;
+ position: relative;
+ color: #475669;
+ font-size: var(--font-size-base);
+
+ .el-button-group {
+ display: block;
+ }
+
+ @e menu{
+ margin: 5px 0;
+ background-color: #fff;
+ border: 1px solid #D3DCE6;
+ box-shadow: var(--dropdown-menu-box-shadow);
+ padding: 6px 0;
+ z-index: 10;
+ position: absolute;
+ top: 0;
+ left: 0;
+ min-width: 100px;
+
+ & li {
+ list-style: none;
+ line-height: 36px;
+ padding: 0 10px;
+ margin: 0;
+ cursor: pointer;
+
+ &:hover {
+ background-color: var(--dropdown-menuItem-hover-fill);
+ color: var(--dropdown-menuItem-hover-color);
+ }
+ &.divider {
+ margin-top: 6px;
+ border-top: 1px solid #D3DCE6;
+ }
+ &.divider:last-child {
+ margin-bottom: -6px;
+ }
+ }
+ }
+ & .el-dropdown__caret-button {
+ padding: * 5px;
+
+ & .el-dropdown__icon {
+ padding-left: 0;
+ }
+ }
+ @e icon {
+ font-size: 12px;
+ margin: 0 3px;
+ }
+ @m text {
+ .el-button--text {
+ padding: 0;
+ }
+ }
+ }
+}
diff --git a/packages/theme-default/src/fonts/element-icons.eot b/packages/theme-default/src/fonts/element-icons.eot
new file mode 100644
index 000000000..ef3c80bfd
Binary files /dev/null and b/packages/theme-default/src/fonts/element-icons.eot differ
diff --git a/packages/theme-default/src/fonts/element-icons.svg b/packages/theme-default/src/fonts/element-icons.svg
new file mode 100644
index 000000000..d59c78da9
--- /dev/null
+++ b/packages/theme-default/src/fonts/element-icons.svg
@@ -0,0 +1,146 @@
+
+
+
diff --git a/packages/theme-default/src/fonts/element-icons.ttf b/packages/theme-default/src/fonts/element-icons.ttf
new file mode 100644
index 000000000..9c1b72005
Binary files /dev/null and b/packages/theme-default/src/fonts/element-icons.ttf differ
diff --git a/packages/theme-default/src/fonts/element-icons.woff b/packages/theme-default/src/fonts/element-icons.woff
new file mode 100644
index 000000000..2bbd019f8
Binary files /dev/null and b/packages/theme-default/src/fonts/element-icons.woff differ
diff --git a/packages/theme-default/src/form-item.css b/packages/theme-default/src/form-item.css
new file mode 100644
index 000000000..e69de29bb
diff --git a/packages/theme-default/src/form.css b/packages/theme-default/src/form.css
new file mode 100644
index 000000000..1bb37fb12
--- /dev/null
+++ b/packages/theme-default/src/form.css
@@ -0,0 +1,84 @@
+@charset "UTF-8";
+@import "./common/var.css";
+
+@component-namespace el {
+ @b form {
+ @m label-left {
+ & .el-form-item__label {
+ text-align: left;
+ }
+ }
+ @m label-top {
+ & .el-form-item__label {
+ float: none;
+ display: inline-block;
+ padding: 0 0 10px 0;
+ }
+ }
+ @m inline {
+ & .el-form-item {
+ display: inline-block;
+ margin-right: 10px;
+ vertical-align: top;
+ }
+ }
+ }
+ @b form-item {
+ margin-bottom: 22px;
+ @utils-clearfix;
+
+ & .el-form-item {
+ margin-bottom: 0;
+
+ & .el-form-item__content {
+ margin-left: 0 !important;
+ }
+ }
+
+ @e label {
+ text-align: right;
+ vertical-align: middle;
+ float: left;
+ font-size: 14px;
+ color: #5e6d82;
+ line-height: 1;
+ padding: 11px 12px 11px 0;
+ box-sizing: border-box;
+ }
+ @e content {
+ line-height: 36px;
+ position: relative;
+ font-size: 14px;
+ @utils-clearfix;
+ }
+ @e error {
+ color: #ff4949;
+ font-size: 12px;
+ line-height: 1;
+ padding-top: 4px;
+ position: absolute;
+ top: 100%;
+ left: 0;
+ }
+ & .el-button + .el-button,
+ & .el-checkbox + .el-checkbox,
+ & .el-radio + .el-radio {
+ margin-left: 10px;
+ }
+
+ @when required {
+ .el-form-item__label:before {
+ content: '*';
+ color: var(--color-danger);
+ margin-right: 4px;
+ }
+ }
+
+ @when error {
+ & .el-input__inner,
+ & .el-textarea__inner {
+ border-color: var(--color-danger);
+ }
+ }
+ }
+}
diff --git a/packages/theme-default/src/icon.css b/packages/theme-default/src/icon.css
new file mode 100644
index 000000000..bd2428cc3
--- /dev/null
+++ b/packages/theme-default/src/icon.css
@@ -0,0 +1,86 @@
+@font-face {
+ font-family: 'element-icons';
+ src:url('fonts/element-icons.eot?t=1472440741'), /* IE9*/
+ url('fonts/element-icons.woff?t=1472440741') format('woff'), /* chrome, firefox */
+ url('fonts/element-icons.ttf?t=1472440741') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
+ url('fonts/element-icons.svg?t=1472440741#el-icon') format('svg'); /* iOS 4.1- */
+ font-weight: normal;
+ font-style: normal;
+}
+
+[class^="el-icon-"], [class*=" el-icon-"] {
+ /* use !important to prevent issues with browser extensions that change fonts */
+ font-family: 'element-icons' !important;
+ speak: none;
+ font-style: normal;
+ font-weight: normal;
+ font-variant: normal;
+ text-transform: none;
+ line-height: 1;
+ vertical-align: baseline;
+ display: inline-block;
+
+ /* Better Font Rendering =========== */
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.el-icon-arrow-down:before { content: "\e600"; }
+.el-icon-arrow-left:before { content: "\e601"; }
+.el-icon-arrow-right:before { content: "\e602"; }
+.el-icon-arrow-up:before { content: "\e603"; }
+.el-icon-caret-bottom:before { content: "\e604"; }
+.el-icon-caret-left:before { content: "\e605"; }
+.el-icon-caret-right:before { content: "\e606"; }
+.el-icon-caret-top:before { content: "\e607"; }
+.el-icon-check:before { content: "\e608"; }
+.el-icon-circle-check:before { content: "\e609"; }
+.el-icon-circle-close:before { content: "\e60a"; }
+.el-icon-circle-cross:before { content: "\e60b"; }
+.el-icon-close:before { content: "\e60c"; }
+.el-icon-upload:before { content: "\e60d"; }
+.el-icon-d-arrow-left:before { content: "\e60e"; }
+.el-icon-d-arrow-right:before { content: "\e60f"; }
+.el-icon-d-caret:before { content: "\e610"; }
+.el-icon-date:before { content: "\e611"; }
+.el-icon-delete:before { content: "\e612"; }
+.el-icon-document:before { content: "\e613"; }
+.el-icon-edit:before { content: "\e614"; }
+.el-icon-information:before { content: "\e615"; }
+.el-icon-loading:before { content: "\e616"; }
+.el-icon-menu:before { content: "\e617"; }
+.el-icon-message:before { content: "\e618"; }
+.el-icon-minus:before { content: "\e619"; }
+.el-icon-more:before { content: "\e61a"; }
+.el-icon-picture:before { content: "\e61b"; }
+.el-icon-plus:before { content: "\e61c"; }
+.el-icon-search:before { content: "\e61d"; }
+.el-icon-setting:before { content: "\e61e"; }
+.el-icon-share:before { content: "\e61f"; }
+.el-icon-star-off:before { content: "\e620"; }
+.el-icon-star-on:before { content: "\e621"; }
+.el-icon-time:before { content: "\e622"; }
+.el-icon-warning:before { content: "\e623"; }
+.el-icon-delete2:before { content: "\e624"; }
+.el-icon-upload2:before { content: "\e627"; }
+.el-icon-view:before { content: "\e626"; }
+
+.el-icon-loading {
+ animation: rotating 1s linear infinite;
+}
+
+.el-icon--right {
+ margin-left: 5px;
+}
+.el-icon--left {
+ margin-right: 5px;
+}
+
+@keyframes rotating {
+ 0% {
+ transform: rotateZ(0deg);
+ }
+ 100% {
+ transform: rotateZ(360deg);
+ }
+}
diff --git a/packages/theme-default/src/index.css b/packages/theme-default/src/index.css
new file mode 100644
index 000000000..df2aac229
--- /dev/null
+++ b/packages/theme-default/src/index.css
@@ -0,0 +1,42 @@
+@import "./base.css";
+@import "./button.css";
+@import "./input.css";
+@import "./select.css";
+@import "./alert.css";
+@import "./notification.css";
+@import "./slider.css";
+@import "./checkbox.css";
+@import "./radio.css";
+@import "./switch.css";
+@import "./dropdown.css";
+@import "./dropdown-menu.css";
+@import "./loading.css";
+@import "./dialog.css";
+@import "./table.css";
+@import "./table-column.css";
+@import "./pagination.css";
+@import "./popover.css";
+@import "./tooltip.css";
+@import "./autocomplete.css";
+@import "./message.css";
+@import "./message-box.css";
+@import "./date-picker.css";
+@import "./time-picker.css";
+@import "./time-select.css";
+@import "./input-number.css";
+@import "./tag.css";
+@import "./breadcrumb.css";
+@import "./form.css";
+@import "./tabs.css";
+@import "./progress.css";
+@import "./tree.css";
+@import "./menu.css";
+@import "./upload.css";
+@import "./row.css";
+@import "./col.css";
+@import "./spinner.css";
+@import "./badge.css";
+@import "./card.css";
+@import "./rate.css";
+@import "./steps.css";
+@import "./step.css";
diff --git a/packages/theme-default/src/input-number.css b/packages/theme-default/src/input-number.css
new file mode 100644
index 000000000..45054a72a
--- /dev/null
+++ b/packages/theme-default/src/input-number.css
@@ -0,0 +1,86 @@
+@charset "UTF-8";
+@import "./input.css";
+@import "./common/var.css";
+
+@component-namespace el {
+ @b input-number {
+ display: inline-block;
+ overflow: hidden;
+ width: 180px;
+ position: relative;
+
+ & .el-input__inner {
+ appearance: none;
+ padding-right: calc(var(--input-height) * 2 + 10);
+ }
+ @e increase, decrease {
+ height: auto;
+ border-left: var(--border-base);
+ width: var(--input-height);
+ line-height: calc(var(--input-height) - 2);
+ top: 1px;
+ text-align: center;
+ color: #99A9BF;
+ cursor: pointer;
+ position: absolute;
+
+ &:hover {
+ color: var(--color-primary);
+ }
+
+ @when disabled {
+ color: var(--disabled-border-base);
+ cursor: not-allowed;
+ }
+ }
+
+ @e increase {
+ right: 0;
+ }
+ @e decrease {
+ right: calc(var(--input-height) + 1px);
+ }
+
+ @when disabled {
+ & .el-input-number__increase, .el-input-number__decrease {
+ border-color: var(--disabled-border-base);
+ color: var(--disabled-border-base);
+
+ &:hover {
+ color: var(--disabled-border-base);
+ cursor: not-allowed;
+ }
+ }
+ }
+ @m large {
+ width: 200px;
+
+ & .el-input-number__increase, .el-input-number__decrease {
+ line-height: var(--input-large-height);
+ width: var(--input-large-height);
+ font-size: var(--input-large-font-size);
+ }
+ & .el-input-number__decrease {
+ right: calc(var(--input-large-height) + 1px);
+ }
+ & .el-input__inner {
+ padding-right: calc(var(--input-large-height) * 2 + 10);
+ }
+ }
+ @m small {
+ width: 130px;
+
+ & .el-input-number__increase, .el-input-number__decrease {
+ line-height: var(--input-small-height);
+ width: var(--input-small-height);
+ font-size: var(--input-small-font-size);
+ }
+ & .el-input-number__decrease {
+ right: calc(var(--input-small-height) + 1px);
+ }
+ & .el-input__inner {
+ padding-right: calc(var(--input-small-height) * 2 + 10);
+ }
+ }
+ }
+}
diff --git a/packages/theme-default/src/input.css b/packages/theme-default/src/input.css
new file mode 100644
index 000000000..2708e8073
--- /dev/null
+++ b/packages/theme-default/src/input.css
@@ -0,0 +1,220 @@
+@charset "UTF-8";
+@import "./common/var.css";
+
+@component-namespace el {
+ @b input {
+ position: relative;
+ font-size: var(--font-size-base);
+
+ @e inner {
+ display: block;
+ padding: 3px 10px;
+ box-sizing: border-box;
+ width: 100%;
+ height: var(--input-height);
+ color: var(--input-color);
+ background-color: #fff;
+ background-image: none;
+ border: var(--input-border);
+ border-radius: 4px;
+ transition: var(--border-transition-base);
+ outline: none;
+ line-height: normal;
+
+ &::placeholder {
+ color: var(--input-placeholder-color);
+ }
+
+ &:hover {
+ border-color: var(--input-hover-border);
+ }
+ &:focus {
+ outline: none;
+ border-color: var(--input-focus-border);
+ }
+ }
+
+ @e icon {
+ position: absolute;
+ width: 35px;
+ height: 100%;
+ right: 0;
+ text-align: center;
+ color: var(--input-icon-color);
+
+ &:after {
+ content: '';
+ height: 100%;
+ width: 0;
+ display: inline-block;
+ vertical-align: middle;
+ }
+
+ & + .el-input__inner {
+ padding-right: 35px;
+ }
+ }
+
+ @when active {
+ .el-input__inner {
+ outline: none;
+ border-color: var(--input-focus-border);
+ }
+ }
+
+ @when disabled {
+ .el-input__inner {
+ background-color: var(--disabled-fill-base);
+ border-color: var(--disabled-border-base);
+ color: var(--disabled-color-base);
+ cursor: not-allowed;
+
+ &::placeholder {
+ color: var(--input-disabled-placeholder-color);
+ }
+ }
+ }
+
+ .el-icon-loading {
+ animation: validating-rotating 1s linear infinite;
+ }
+ @m large {
+ font-size: var(--input-large-font-size);
+
+ & .el-input__inner {
+ height: var(--input-large-height);
+ }
+ }
+ @m small {
+ font-size: var(--input-small-font-size);
+
+ & .el-input__inner {
+ height: var(--input-small-height);
+ }
+ }
+ @m mini {
+ font-size: var(--input-mini-font-size);
+
+ & .el-input__inner {
+ height: var(--input-mini-height);
+ }
+ }
+ }
+
+ @b input-group {
+ display: table;
+ border-collapse: separate;
+
+ & > .el-input__inner {
+ vertical-align: middle;
+ display: table-cell;
+ }
+ @e append, prepend {
+ background-color: #f9fafc;
+ color: #99a9bf;
+ vertical-align: middle;
+ display: table-cell;
+ position: relative;
+ border: var(--border-base);
+ border-radius: 4px;
+ padding: 0 10px;
+ width: 1%;
+ white-space: nowrap;
+
+ & .el-select,
+ & .el-button {
+ display: block;
+ margin: -10px;
+ }
+
+ & .el-button,
+ & .el-select .el-input__inner,
+ & .el-select:hover .el-input__inner {
+ border-color: transparent;
+ background-color: transparent;
+ color: inherit;
+ border-top: 0;
+ border-bottom: 0;
+ }
+ & .el-button,
+ & .el-input {
+ font-size: inherit;
+ }
+ }
+ @e prepend {
+ border-right: 0;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ }
+ @e append {
+ border-left: 0;
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+ }
+ & .el-input__inner:first-child {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ }
+ & .el-input__inner:last-child {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+ }
+ & .el-input__inner:not(:first-child):not(:last-child) {
+ border-radius: 0;
+ }
+ }
+
+ @b textarea {
+
+ @e inner {
+ display: block;
+ resize: vertical;
+ padding: 5px 7px;
+ line-height: 1.5;
+ box-sizing: border-box;
+ width: 100%;
+ font-size: var(--font-size-base);
+ color: var(--input-color);
+ background-color: #fff;
+ background-image: none;
+ border: var(--input-border);
+ border-radius: 4px;
+ transition: var(--border-transition-base);
+
+ &::placeholder {
+ color: var(--input-placeholder-color);
+ }
+
+ &:hover {
+ border-color: var(--input-hover-border);
+ }
+
+ &:focus {
+ outline: none;
+ border-color: var(--input-focus-border);
+ }
+ }
+
+ @when disabled {
+ .el-textarea__inner {
+ background-color: var(--disabled-fill-base);
+ border-color: var(--disabled-border-base);
+ color: var(--disabled-color-base);
+ cursor: not-allowed;
+
+ &::placeholder {
+ color: var(--input-disabled-placeholder-color);
+ }
+ }
+ }
+ }
+}
+
+@keyframes validating-rotating {
+ 0% {
+ transform: translate(0, -50%) rotateZ(0deg);
+ }
+ 100% {
+ transform: translate(0, -50%) rotateZ(360deg);
+ }
+}
diff --git a/packages/theme-default/src/loading.css b/packages/theme-default/src/loading.css
new file mode 100644
index 000000000..5a71bc893
--- /dev/null
+++ b/packages/theme-default/src/loading.css
@@ -0,0 +1,44 @@
+.el-loading-spinner {
+ height: 12px;
+ width: 60px;
+ top: 50%;
+ left: 50%;
+ font-size: 0;
+ text-align: center;
+ margin-top: -6px;
+ margin-left: -30px;
+ z-index: 10001;
+}
+
+.el-loading-bubble {
+ height: 12px;
+ width: 12px;
+ background-color: #fff;
+ margin: 0 3px;
+ border-radius: 50%;
+ display: inline-block;
+ animation: 1s cubic-bezier(.2,.68,.18,1.08) infinite both bubble-pulse;
+}
+
+.el-loading-bubble.bubble1 {
+ animation-delay: .16s;
+}
+
+.el-loading-bubble.bubble2 {
+ animation-delay: .32s;
+}
+
+.el-loading-bubble.bubble3 {
+ animation-delay: .48s;
+}
+
+@keyframes bubble-pulse {
+ 0%, 80% {
+ transform: scale(1);
+ opacity: 1;
+ }
+ 45% {
+ transform: scale(0);
+ opacity: 0;
+ }
+}
\ No newline at end of file
diff --git a/packages/theme-default/src/menu-item-group.css b/packages/theme-default/src/menu-item-group.css
new file mode 100644
index 000000000..e69de29bb
diff --git a/packages/theme-default/src/menu-item.css b/packages/theme-default/src/menu-item.css
new file mode 100644
index 000000000..e69de29bb
diff --git a/packages/theme-default/src/menu.css b/packages/theme-default/src/menu.css
new file mode 100644
index 000000000..3bc891f11
--- /dev/null
+++ b/packages/theme-default/src/menu.css
@@ -0,0 +1,214 @@
+@charset "UTF-8";
+@import "./common/var.css";
+
+@define-extend menu-item {
+ height: 56px;
+ line-height: 56px;
+ font-size: 14px;
+ color: var(--menu-item-color);
+ padding: 0 20px;
+ cursor: pointer;
+ position: relative;
+ transition: border-color .3s, background-color .3s, color .3s;
+ box-sizing: border-box;
+ white-space: nowrap;
+}
+
+@component-namespace el {
+ @b menu {
+ border-radius: 2px;
+ list-style: none;
+ position: relative;
+ margin: 0;
+ padding-left: 0;
+ background-color: var(--menu-item-fill);
+ @utils-clearfix;
+
+ & li {
+ list-style: none;
+ }
+
+ @m dark {
+ background-color: var(--dark-menu-item-fill);
+
+ & .el-menu-item,
+ & .el-submenu__title {
+ color: #c0ccda;
+
+ &:hover {
+ background-color: #475669;
+ }
+ }
+
+ & .el-submenu .el-menu {
+ background-color: #1f2f3d;
+
+ & .el-menu-item:hover {
+ background-color: #475669;
+ }
+ }
+ }
+ @m horizontal {
+ & .el-menu-item {
+ float: left;
+ height: 60px;
+ line-height: 60px;
+ margin: 0;
+ cursor: pointer;
+ position: relative;
+ box-sizing: border-box;
+ border-bottom: 5px solid transparent;
+
+ &:hover {
+ background-color: var(--menu-item-hover-fill);
+ }
+ }
+ & .el-submenu {
+ float: left;
+ position: relative;
+
+ > .el-menu {
+ position: absolute;
+ top: 65px;
+ left: 0;
+ border:1px solid #d3dce6;
+ padding: 5px 0;
+ background-color: #fff;
+ z-index: 100;
+ min-width: 100%;
+ box-shadow: 0px 2px 4px 0px rgba(0,0,0,0.12), 0px 0px 6px 0px rgba(0,0,0,0.04);
+ }
+
+ & .el-submenu__title {
+ height: 60px;
+ line-height: 60px;
+ border-bottom: 5px solid transparent;
+ }
+
+ & .el-menu-item {
+ background-color: #fff;
+ float: none;
+ height: 36px;
+ line-height: 36px;
+ padding: 0 10px;
+ }
+
+ & .el-submenu__icon-arrow {
+ position: static;
+ vertical-align: middle;
+ margin-left: 5px;
+ color: #99a9bf;
+ margin-top: -3px;
+ }
+ }
+ & .el-menu-item:hover,
+ & .el-submenu__title:hover {
+ background-color: var(--menu-item-fill);
+ }
+ & > .el-menu-item:hover,
+ & > .el-submenu:hover .el-submenu__title,
+ & > .el-submenu.is-active .el-submenu__title {
+ border-bottom: 5px solid var(--color-primary);
+ }
+
+ &.el-menu--dark {
+ & .el-menu-item:hover,
+ & .el-submenu__title:hover {
+ background-color: var(--dark-menu-item-fill);
+ }
+
+ & .el-submenu {
+ .el-menu-item,
+ .el-submenu-title {
+ color: #475669;
+
+ &:hover {
+ background-color: #d3dce6;
+ }
+ }
+ .el-menu-item.is-active {
+ color: var(--color-primary);
+ }
+ }
+ }
+ }
+ }
+ @b menu-item {
+ @extend menu-item;
+
+ & [class^="el-icon-"] {
+ vertical-align: baseline;
+ margin-right: 10px;
+ }
+ &:first-child {
+ margin-left: 0;
+ }
+ &:last-child {
+ margin-right: 0;
+ }
+ &:hover {
+ background-color: #d3dce6;
+ }
+ @when active {
+ color: var(--color-primary);
+ }
+ }
+
+ @b submenu {
+ @e title {
+ position: relative;
+ @extend menu-item;
+
+ &:hover {
+ background-color: #d3dce6;
+ }
+ }
+ & .el-menu {
+ background-color: #e5e9f2;
+ }
+ & .el-menu-item {
+ height: 50px;
+ line-height: 50px;
+ padding: 0 45px;
+
+ &:hover {
+ background-color: #d3dce6;
+ }
+ }
+ @e icon-arrow {
+ position: absolute;
+ top: 50%;
+ right: 20px;
+ margin-top: -7px;
+ transition: transform .3s;
+ font-size: 12px;
+ }
+ @when active {
+ .el-submenu__title {
+ border-bottom-color: var(--color-primary);
+ }
+ }
+ @when opened {
+ .el-submenu__icon-arrow {
+ transform: rotateZ(180deg);
+ }
+ }
+ [class^="el-icon-"] {
+ vertical-align: baseline;
+ margin-right: 10px;
+ }
+ }
+
+ @b menu-item-group {
+ > ul {
+ padding: 0;
+ }
+ @e title {
+ padding-top: 15px;
+ line-height: normal;
+ font-size: 14px;
+ padding-left: 20px;
+ color: #99a9bf;
+ }
+ }
+}
diff --git a/packages/theme-default/src/message-box.css b/packages/theme-default/src/message-box.css
new file mode 100644
index 000000000..21d62ce95
--- /dev/null
+++ b/packages/theme-default/src/message-box.css
@@ -0,0 +1,149 @@
+@charset "UTF-8";
+@import "./common/var.css";
+@import "./button.css";
+@import "./input.css";
+@import "vue-popup/lib/popup.css";
+
+@component-namespace el {
+
+ @b message-box {
+ position: fixed;
+ top: 50%;
+ left: 50%;
+ transform: translate3d(-50%, -50%, 0);
+ background-color: #fff;
+ width: var(--msgbox-width);
+ border-radius: var(--msgbox-border-radius);
+ font-size: var(--msgbox-font-size);
+ -webkit-user-select: none;
+ overflow: hidden;
+ backface-visibility: hidden;
+
+ @e header {
+ padding: 20px 20px 0;
+ }
+
+ @e content {
+ padding: 30px 20px;
+ color: var(--msgbox-content-color);
+ font-size: var(--msgbox-content-font-size);
+ position: relative;
+ }
+
+ @e close {
+ display: inline-block;
+ position: absolute;
+ top: 19px;
+ right: 20px;
+ color: #999;
+ cursor: pointer;
+ line-height: 20px;
+ text-align: center;
+
+ &:hover {
+ color: var(--color-primary);
+ }
+ }
+
+ @e input {
+ padding-top: 15px;
+ & input.invalid {
+ border-color: var(--color-danger);
+ &:focus {
+ border-color: var(--color-danger);
+ }
+ }
+ }
+
+ @e errormsg {
+ color: var(--color-danger);
+ font-size: var(--msgbox-error-font-size);
+ min-height: 18px;
+ margin-top: 2px;
+ }
+
+ @e title {
+ padding-left: 0;
+ margin-bottom: 0;
+ font-size: var(--msgbox-font-size);
+ font-weight: bold;
+ height: 18px;
+ color: #333;
+ }
+
+ @e message {
+ margin: 0;
+
+ & p {
+ margin: 0;
+ line-height: 1.4;
+ }
+ }
+
+ @e btns {
+ padding: 10px 20px 15px;
+ text-align: right;
+
+ & button:nth-child(2) {
+ margin-left: 10px;
+ }
+ }
+
+ @e btns-reverse {
+ flex-direction: row-reverse;
+ }
+
+ @e status {
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%);
+ font-size: 36px !important;
+
+ &.el-icon-circle-check {
+ color: var(--msgbox-success-color);
+ }
+
+ &.el-icon-information {
+ color: var(--msgbox-info-color);
+ }
+
+ &.el-icon-warning {
+ color: var(--msgbox-warning-color);
+ }
+
+ &.el-icon-circle-cross {
+ color: var(--msgbox-danger-color);
+ }
+ }
+ }
+}
+
+.msgbox-fade-enter-active {
+ animation: msgbox-fade-in .3s;
+}
+
+.msgbox-fade-leave-active {
+ animation: msgbox-fade-out .3s;
+}
+
+@keyframes msgbox-fade-in {
+ 0% {
+ transform: translate3d(-50%, calc(-50% - 20px), 0);
+ opacity: 0;
+ }
+ 100% {
+ transform: translate3d(-50%, -50%, 0);
+ opacity: 1;
+ }
+}
+
+@keyframes msgbox-fade-out {
+ 0% {
+ transform: translate3d(-50%, -50%, 0);
+ opacity: 1;
+ }
+ 100% {
+ transform: translate3d(-50%, calc(-50% - 20px), 0);
+ opacity: 0;
+ }
+}
diff --git a/packages/theme-default/src/message.css b/packages/theme-default/src/message.css
new file mode 100644
index 000000000..3899245ed
--- /dev/null
+++ b/packages/theme-default/src/message.css
@@ -0,0 +1,75 @@
+@charset "UTF-8";
+@import "./common/var.css";
+
+@component-namespace el {
+
+ @b message {
+ box-shadow: var(--message-shadow);
+ min-width: var(--message-min-width);
+ padding: var(--message-padding);
+ box-sizing: border-box;
+ border-radius: var(--border-radius-small);
+ position: fixed;
+ left: 50%;
+ top: 20px;
+ transform: translateX(-50%);
+ background-color: #fff;
+ transition: opacity 0.3s, transform .4s;
+ overflow: hidden;
+ z-index: var(--index-popper);
+
+ @e group {
+ margin-left: 38px;
+ position: relative;
+
+ & p {
+ font-size: var(--font-size-base);
+ line-height: 20px;
+ margin: 0 34px 0 0;
+ white-space: nowrap;
+ color: var(--message-content-color);
+ text-align: justify;
+ }
+ }
+
+ @e icon {
+ size: 40px;
+ position: absolute;
+ left: 0;
+ top: 0;
+ }
+
+ @e closeBtn {
+ position: absolute 3px 0 * *;
+ cursor: pointer;
+ color: var(--message-close-color);
+ font-size: var(--font-size-base);
+
+ &:hover {
+ color: var(--message-close-hover-color);
+ }
+ }
+
+ & .el-icon-circle-check {
+ color: var(--message-success-color);
+ }
+
+ & .el-icon-circle-cross {
+ color: var(--message-danger-color);
+ }
+
+ & .el-icon-information {
+ color: var(--message-info-color);
+ }
+
+ & .el-icon-warning {
+ color: var(--message-warning-color);
+ }
+ }
+
+ .el-message-fade-enter,
+ .el-message-fade-leave-active {
+ opacity: 0;
+ transform: translate(-50%, -100%);
+ }
+}
diff --git a/packages/theme-default/src/mixins/_button.css b/packages/theme-default/src/mixins/_button.css
new file mode 100644
index 000000000..55288e9e4
--- /dev/null
+++ b/packages/theme-default/src/mixins/_button.css
@@ -0,0 +1,49 @@
+@define-mixin button-variant $color, $background-color, $border-color {
+ color: $color;
+ background-color: $background-color;
+ border-color: $border-color;
+
+ &:hover {
+ background: tint($background-color, var(--button-hover-tint-percent));
+ border-color: tint($border-color, var(--button-hover-tint-percent));
+ color: $color;
+ }
+
+ &:active {
+ background: shade($background-color, var(--button-active-shade-percent));
+ border-color: shade($border-color, var(--button-active-shade-percent));
+ color: $color;
+ outline: none;
+ }
+
+ &.is-active {
+ background: shade($background-color, var(--button-active-shade-percent));
+ border-color: shade($border-color, var(--button-active-shade-percent));
+ color: $color;
+ }
+
+ &.is-plain {
+ background: var(--button-default-fill);
+ border: var(--border-base);
+ color: var(--button-default-color);
+
+ &:hover {
+ background: #fff;
+ border-color: $border-color;
+ color: $background-color;
+ }
+
+ &:active {
+ background: #fff;
+ border-color: shade($border-color, var(--button-active-shade-percent));
+ color: shade($background-color, var(--button-active-shade-percent));
+ outline: none;
+ }
+ }
+}
+
+@define-mixin button-size $padding-vertical, $padding-horizontal, $font-size, $border-radius {
+ padding: $padding-vertical $padding-horizontal;
+ font-size: $font-size;
+ border-radius: $border-radius;
+}
diff --git a/packages/theme-default/src/notification.css b/packages/theme-default/src/notification.css
new file mode 100644
index 000000000..b6952c296
--- /dev/null
+++ b/packages/theme-default/src/notification.css
@@ -0,0 +1,78 @@
+@charset "UTF-8";
+@import "./common/var.css";
+
+@component-namespace el {
+
+ @b notification {
+ width: var(--notification-width);
+ padding: var(--notification-padding);
+ box-sizing: border-box;
+ border-radius: var(--border-radius-small);
+ position: fixed;
+ right: 16px;
+ background-color: #fff;
+ box-shadow: var(--notification-shadow);
+ transition: opacity 0.3s, transform .3s, right .3s, top 0.4s;
+ overflow: hidden;
+ z-index: var(--index-popper);
+
+ @e group {
+ & span {
+ font-size: var(--notification-title-font-size);
+ color: var(--notification-title-color);
+ }
+
+ & p {
+ font-size: var(--notification-font-size);
+ line-height: 21px;
+ margin: 10px 0 0 0;
+ color: var(--notification-color);
+ text-align: justify;
+ }
+ }
+
+ @e icon {
+ size: var(--notification-icon-size);
+ font-size: var(--notification-icon-size);
+ float: left;
+ position: relative;
+ top: 3px;
+ }
+
+ @e closeBtn {
+ position: absolute 20px 20px * *;
+ cursor: pointer;
+ color: var(--notification-close-color);
+ font-size: var(--notification-font-size);
+
+ &:hover {
+ color: var(--notification-close-hover-color);
+ }
+ }
+
+ & .el-icon-circle-check {
+ color: var(--notification-success-color);
+ }
+
+ & .el-icon-circle-cross {
+ color: var(--notification-danger-color);
+ }
+
+ & .el-icon-information {
+ color: var(--notification-info-color);
+ }
+
+ & .el-icon-warning {
+ color: var(--notification-warning-color);
+ }
+ }
+
+ .el-notification-fade-enter {
+ transform: translateX(100%);
+ right: 0;
+ }
+
+ .el-notification-fade-leave-active {
+ opacity: 0;
+ }
+}
diff --git a/packages/theme-default/src/option-group.css b/packages/theme-default/src/option-group.css
new file mode 100644
index 000000000..9682c160c
--- /dev/null
+++ b/packages/theme-default/src/option-group.css
@@ -0,0 +1,28 @@
+@charset "UTF-8";
+@import "./common/var.css";
+
+@component-namespace el {
+
+ @b select-group {
+ margin: 0;
+ padding: 0;
+
+ @e wrap {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ }
+
+ @e title {
+ padding-left: 10px;
+ font-size: var(--select-group-font-size);
+ color: var(--select-group-color);
+ height: var(--select-group-height);
+ line-height: var(--select-group-height);
+ }
+
+ & .el-select-dropdown__item {
+ padding-left: 20px;
+ }
+ }
+}
diff --git a/packages/theme-default/src/option.css b/packages/theme-default/src/option.css
new file mode 100644
index 000000000..a0b9eb5fe
--- /dev/null
+++ b/packages/theme-default/src/option.css
@@ -0,0 +1,47 @@
+@charset "UTF-8";
+@import "./common/var.css";
+
+@component-namespace el {
+
+ @b select-dropdown {
+ @e item {
+ font-size: var(--select-font-size);
+ padding: 8px 10px;
+ position: relative;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ color: var(--select-option-color);
+ height: var(--select-option-height);
+ line-height: 1.5;
+ box-sizing: border-box;
+ cursor: pointer;
+
+ @when disabled {
+ color: var(--select-option-disabled-color);
+ cursor: not-allowed;
+
+ &:hover {
+ background-color: var(--color-white);
+ }
+ }
+
+ &.hover {
+ background-color: var(--select-option-hover-background);
+ }
+
+ &.selected {
+ color: var(--color-white);
+ background-color: var(--select-option-selected);
+
+ &.hover {
+ background-color: var(--select-option-selected-hover);
+ }
+ }
+
+ & span {
+ line-height: 1.5 !important;
+ }
+ }
+ }
+}
diff --git a/packages/theme-default/src/pagination.css b/packages/theme-default/src/pagination.css
new file mode 100644
index 000000000..e2ca22d5d
--- /dev/null
+++ b/packages/theme-default/src/pagination.css
@@ -0,0 +1,203 @@
+@charset "UTF-8";
+@import "./select.css";
+@import "./common/var.css";
+
+@component-namespace el {
+ @b pagination {
+ white-space: nowrap;
+ padding: 2px 5px;
+ background: var(--pagination-fill);
+ color: var(--pagination-color);
+
+ span,
+ button {
+ display: inline-block;
+ font-size: var(--pagination-font-size);
+ min-width: var(--pagination-button-size);
+ height: var(--pagination-button-size);
+ line-height: var(--pagination-button-size);
+ vertical-align: top;
+ box-sizing: border-box;
+ }
+
+ .el-select .el-input {
+ width: 110px;
+ input {
+ padding-right: 25px;
+ }
+ }
+
+ button {
+ border: none;
+ padding: 0 6px;
+ background: transparent;
+
+ &:focus {
+ outline: none;
+ }
+
+ &:hover {
+ color: var(--pagination-hover-fill);
+ }
+
+ &.disabled {
+ color: var(--pagination-button-disabled-color);
+ background-color: var(--pagination-button-disabled-fill);
+ cursor: not-allowed;
+ }
+ }
+
+ .btn-prev,
+ .btn-next {
+ background: center center no-repeat;
+ background-size: 16px;
+ border: 1px solid var(--pagination-border-color);
+ cursor: pointer;
+ margin: 0;
+ color: var(--pagination-button-color);
+
+ .el-icon {
+ display: block;
+ font-size: 12px;
+ }
+ }
+
+ .btn-prev {
+ border-radius: var(--pagination-border-radius) 0 0 var(--pagination-border-radius);
+ border-right: 0;
+ }
+
+ .btn-next {
+ border-radius: 0 var(--pagination-border-radius) var(--pagination-border-radius) 0;
+ border-left: 0;
+ }
+
+ @m small {
+ .btn-prev,
+ .btn-next,
+ .el-pager li,
+ .el-pager li:last-child {
+ border-color: transparent;
+ font-size: 12px;
+ line-height: 22px;
+ height: 22px;
+ min-width: 22px;
+ }
+
+ .arrow.disabled {
+ visibility: hidden;
+ }
+
+ .el-pager li {
+ border-radius: var(--pagination-border-radius);
+ }
+ }
+
+ @e sizes {
+ margin: 0 10px 0 0;
+
+ .el-input .el-input__inner {
+ font-size: 13px;
+ border-color: var(--pagination-border-color);
+
+ &:hover {
+ border-color: var(--pagination-hover-fill);
+ }
+ }
+ }
+
+ @e jump {
+ margin-left: 10px;
+ }
+
+ @e total {
+ margin: 0 10px;
+ }
+
+ @e rightwrapper {
+ float: right;
+ }
+
+ @e editor {
+ border: 1px solid var(--pagination-border-color);
+ border-radius: var(--pagination-border-radius);
+ line-height: 18px;
+ padding: 4px 2px;
+ width: 30px;
+ text-align: center;
+ margin: 0 6px;
+ box-sizing: border-box;
+ transition: border .3s;
+
+ &::-webkit-inner-spin-button,
+ &::-webkit-outer-spin-button {
+ -webkit-appearance: none;
+ margin: 0;
+ }
+
+ &:focus {
+ outline: none;
+ border-color: var(--pagination-hover-fill);
+ };
+ }
+ }
+
+ @b pager {
+ user-select: none;
+ list-style: none;
+ display: inline-block;
+ vertical-align: top;
+ font-size: 0;
+ padding: 0;
+
+ li {
+ padding: 0 4px;
+ border: 1px solid var(--pagination-border-color);
+ border-right: 0;
+ background: var(--pagination-fill);
+ vertical-align: top;
+ display: inline-block;
+ font-size: var(--pagination-font-size);
+ min-width: var(--pagination-button-size);
+ height: var(--pagination-button-size);
+ line-height: var(--pagination-button-size);
+ cursor: pointer;
+ box-sizing: border-box;
+ text-align: center;
+
+ &:last-child {
+ border-right: 1px solid var(--pagination-border-color);
+ }
+
+ &.btn-quicknext,
+ &.btn-quickprev {
+ line-height: 28px;
+ color: var(--pagination-button-color);
+ }
+
+ &.btn-quickprev:hover {
+ cursor: pointer;
+ }
+
+ &.btn-quicknext:hover {
+ cursor: pointer;
+ }
+
+ &.active + li {
+ border-left: 0;
+ padding-left: 5px;
+ }
+
+ &:hover {
+ color: var(--pagination-hover-fill);
+ }
+
+ &.active {
+ border-color: var(--pagination-hover-fill);
+ background-color: var(--pagination-hover-fill);
+ color: var(--pagination-hover-color);
+ cursor: default;
+ }
+ }
+ }
+}
diff --git a/packages/theme-default/src/popover.css b/packages/theme-default/src/popover.css
new file mode 100644
index 000000000..ff0b99434
--- /dev/null
+++ b/packages/theme-default/src/popover.css
@@ -0,0 +1,120 @@
+@charset "UTF-8";
+@import "./common/var.css";
+
+@component-namespace el {
+ @b popover {
+ position: absolute;
+ background: var(--popover-fill);
+ min-width: 150px;
+ border-radius: 2px;
+ border: 1px solid var(--popover-border-color);
+ padding: var(--popover-padding);
+ z-index: var(--index-popper);
+ font-size: var(--popover-font-size);
+ box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, .12),
+ 0px 0px 6px 0px rgba(0, 0, 0, .04);
+
+ .popper__arrow,
+ .popper__arrow::after {
+ position: absolute;
+ display: block;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+ }
+
+ .popper__arrow {
+ border-width: var(--popover-arrow-size);
+ }
+
+ .popper__arrow::after {
+ content: " ";
+ border-width: var(--popover-arrow-size);
+ }
+
+ &[x-placement^="top"] {
+ margin-bottom: calc(var(--popover-arrow-size) + 6);
+ }
+
+ &[x-placement^="top"] .popper__arrow {
+ bottom: -var(--popover-arrow-size);
+ left: 50%;
+ margin-right: calc(var(--tooltip-arrow-size) / 2);
+ border-top-color: var(--popover-border-color);
+ border-bottom-width: 0;
+
+ &::after {
+ bottom: 1px;
+ margin-left: -var(--popover-arrow-size);
+ border-top-color: var(--popover-fill);
+ border-bottom-width: 0;
+ }
+ }
+
+ &[x-placement^="bottom"] {
+ margin-top: calc(var(--popover-arrow-size) + 6);
+ }
+
+ &[x-placement^="bottom"] .popper__arrow {
+ top: -var(--popover-arrow-size);
+ left: 50%;
+ margin-right: calc(var(--tooltip-arrow-size) / 2);
+ border-top-width: 0;
+ border-bottom-color: var(--popover-border-color);
+
+ &::after {
+ top: 1px;
+ margin-left: -var(--popover-arrow-size);
+ border-top-width: 0;
+ border-bottom-color: var(--popover-fill);
+ }
+ }
+
+ &[x-placement^="right"] {
+ margin-left: calc(var(--popover-arrow-size) + 6);
+ }
+
+ &[x-placement^="right"] .popper__arrow {
+ top: 50%;
+ left: -var(--popover-arrow-size);
+ margin-bottom: calc(var(--tooltip-arrow-size) / 2);
+ border-right-color: var(--popover-border-color);
+ border-left-width: 0;
+
+ &::after {
+ bottom: -var(--popover-arrow-size);
+ left: 1px;
+ border-right-color: var(--popover-fill);
+ border-left-width: 0;
+ }
+ }
+
+ &[x-placement^="left"] {
+ margin-right: calc(var(--popover-arrow-size) + 6);
+ }
+
+ &[x-placement^="left"] .popper__arrow {
+ top: 50%;
+ right: -var(--popover-arrow-size);
+ margin-bottom: calc(var(--tooltip-arrow-size) / 2);
+ border-right-width: 0;
+ border-left-color: var(--popover-border-color);
+
+ &::after {
+ right: 1px;
+ bottom: -var(--popover-arrow-size);
+ margin-left: -var(--popover-arrow-size);
+ border-right-width: 0;
+ border-left-color: var(--popover-fill);
+ }
+ }
+
+ @e title {
+ color: var(--popover-title-color);
+ font-size: var(--popover-title-font-size);
+ line-height: 1;
+ margin-bottom: 9px;
+ }
+ }
+}
diff --git a/packages/theme-default/src/progress.css b/packages/theme-default/src/progress.css
new file mode 100644
index 000000000..c9e6ba896
--- /dev/null
+++ b/packages/theme-default/src/progress.css
@@ -0,0 +1,119 @@
+@charset "UTF-8";
+@import "./common/var.css";
+
+@component-namespace el {
+ @b progress {
+ position: relative;
+ line-height: 1;
+
+ @e text {
+ font-size:14px;
+ color:#475669;
+ display: inline-block;
+ vertical-align: middle;
+ margin-left: 10px;
+ line-height: 1;
+
+ i {
+ vertical-align: middle;
+ display: block;
+ }
+ }
+ @m circle {
+ display: inline-block;
+
+ .el-progress__text {
+ position: absolute;
+ top: 50%;
+ left: 0;
+ width: 100%;
+ text-align: center;
+ margin: 0;
+ transform: translate(0, -50%);
+
+ i {
+ vertical-align: middle;
+ display: inline-block;
+ }
+ }
+ }
+ @m without-text {
+ .el-progress__text {
+ display: none;
+ }
+ .el-progress-bar {
+ padding-right: 0;
+ margin-right: 0;
+ display: block;
+ }
+ }
+ @m text-inside {
+ .el-progress-bar {
+ padding-right: 0;
+ margin-right: 0;
+ }
+ }
+ @when success {
+ .el-progress-bar__inner {
+ background-color: var(--color-success);
+ }
+ .el-progress__text {
+ color: var(--color-success);
+ }
+ }
+ @when exception {
+ .el-progress-bar__inner {
+ background-color: var(--color-danger);
+ }
+ .el-progress__text {
+ color: var(--color-danger);
+ }
+ }
+ }
+ @b progress-bar {
+ padding-right: 50px;
+ display: inline-block;
+ vertical-align: middle;
+ width: 100%;
+ margin-right: -55px;
+ box-sizing: border-box;
+
+ @e outer {
+ height: 6px;
+ border-radius: 100px;
+ background-color: #e5e9f2;
+ overflow: hidden;
+ position: relative;
+ vertical-align: middle;
+ }
+ @e inner {
+ position: absolute;
+ left: 0;
+ top: 0;
+ height: 100%;
+ border-radius: 2px 0 0 2px;
+ background-color: var(--color-primary);
+ text-align: right;
+ border-radius: 100px;
+ line-height: 1;
+
+ @utils-vertical-center;
+ }
+ @e innerText {
+ display: inline-block;
+ vertical-align: middle;
+ color: #fff;
+ font-size: 12px;
+ margin: 0 5px;
+ }
+ }
+}
+
+@keyframes progress {
+ 0% {
+ background-position: 0 0;
+ }
+ 100% {
+ background-position: 32px 0;
+ }
+}
diff --git a/packages/theme-default/src/radio-button.css b/packages/theme-default/src/radio-button.css
new file mode 100644
index 000000000..e69de29bb
diff --git a/packages/theme-default/src/radio-group.css b/packages/theme-default/src/radio-group.css
new file mode 100644
index 000000000..e69de29bb
diff --git a/packages/theme-default/src/radio.css b/packages/theme-default/src/radio.css
new file mode 100644
index 000000000..a48b28efe
--- /dev/null
+++ b/packages/theme-default/src/radio.css
@@ -0,0 +1,211 @@
+@charset "UTF-8";
+@import "./common/var.css";
+@import './mixins/button';
+
+@component-namespace el {
+
+ @b radio {
+ color: var(--radio-color);
+ position: relative;
+ cursor: pointer;
+ display: inline-block;
+ white-space: nowrap;
+ @utils-user-select none;
+
+ & + .el-radio {
+ margin-left: 15px;
+ }
+
+ @e input {
+ white-space: nowrap;
+ cursor: pointer;
+ outline: none;
+ display: inline-block;
+ line-height: 1;
+ position: relative;
+ vertical-align: middle;
+ }
+ @e inner {
+ border: var(--radio-input-border);
+ border-radius: var(--radio-input-border-radius);
+ circle: var(--radio-input-width) var(--radio-input-fill);
+ position: relative;
+ cursor: pointer;
+ display: inline-block;
+ box-sizing: border-box;
+
+ &:not(.is-disabled):hover {
+ border-color: var(--radio-input-border-color-hover);
+ }
+
+ &::after {
+ circle: 6px #fff;
+ content: "";
+ position: absolute;
+ left: 50%;
+ top: 50%;
+ transform: translate(-50%, -50%) scale(0);
+ transition: transform .15s cubic-bezier(.71,-.46,.88,.6);
+ }
+
+ @when disabled {
+ background-color: var(--radio-disabled-input-fill);
+ border-color: var(--radio-disabled-input-border-color);
+ cursor: not-allowed;
+
+ &::after {
+ cursor: not-allowed;
+ background-color: var(--radio-disabled-icon-color);
+ }
+
+ & + .el-radio__label {
+ cursor: not-allowed;
+ }
+ }
+
+ @when checked {
+ border-color: var(--radio-checked-input-border-color);
+ background: var(--radio-checked-icon-color);
+
+ &::after {
+ transform: translate(-50%, -50%) scale(1);
+ }
+ }
+
+ @when focus {
+ border-color: var(--radio-input-border-color-hover);
+ }
+
+ &.is-disabled.is-checked {
+ background-color: var(--radio-disabled-checked-input-fill);
+ border-color: var(--radio-disabled-checked-input-border-color);
+
+ &::after {
+ background-color: var(--radio-disabled-checked-icon-color);
+ }
+ }
+ }
+
+ @e original {
+ opacity: 0;
+ outline: none;
+ position: absolute;
+ z-index: -1;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ margin: 0;
+ }
+
+ @e label {
+ font-size: var(--radio-font-size);
+ padding-left: 5px;
+ }
+ }
+
+ @b radio-group {
+ display: inline-block;
+ font-size: 0;
+
+ & .el-radio {
+ font-size: var(--radio-font-size);
+ }
+
+ }
+ @b radio-button {
+ position: relative;
+ overflow: hidden;
+ display: inline-block;
+
+ @e inner {
+ display: inline-block;
+ line-height: 1;
+ white-space: nowrap;
+ vertical-align: middle;
+ cursor: pointer;
+ background: var(--button-default-fill);
+ border: var(--border-base);
+ color: var(--button-default-color);
+ -webkit-appearance: none;
+ text-align: center;
+ box-sizing: border-box;
+ outline: none;
+ margin: 0;
+ position: relative;
+ cursor: pointer;
+ transition: var(--border-transition-base), var(--color-transition-base);
+ @utils-user-select none;
+
+ @mixin button-size var(--button-padding-vertical), var(--button-padding-horizontal), var(--button-font-size), 0;
+
+ &:hover {
+ color: var(--color-primary);
+ }
+
+ & [class*="el-icon-"] {
+ line-height: 0.9;
+
+ & + span {
+ margin-left: 5px;
+ }
+ }
+ }
+
+ @e orig-radio {
+ opacity: 0;
+ outline: none;
+ position: absolute;
+ z-index: -1;
+ left: -999px;
+
+ &:checked {
+ & + .el-radio-button__inner {
+ z-index: 1;
+ color: var(--color-primary);
+ border-color: @color;
+ }
+ }
+
+ &:disabled {
+ & + .el-radio-button__inner {
+ z-index: -1;
+ color: var(--button-disabled-color);
+ cursor: not-allowed;
+ background-image: none;
+ background-color: var(--button-disabled-fill);
+ border-color: var(--button-disabled-border);
+ }
+ }
+ }
+
+ &:not(:last-child) {
+ margin-right: -1px;
+ }
+ &:first-child {
+ .el-radio-button__inner {
+ border-radius: var(--border-radius-base) 0 0 var(--border-radius-base);
+ }
+ }
+ &:last-child {
+ .el-radio-button__inner {
+ border-radius: 0 var(--border-radius-base) var(--border-radius-base) 0;
+ }
+ }
+ @m large {
+ & .el-radio-button__inner {
+ @mixin button-size var(--button-large-padding-vertical), var(--button-large-padding-horizontal), var(--button-large-font-size), 0;
+ }
+ }
+ @m small {
+ & .el-radio-button__inner {
+ @mixin button-size var(--button-small-padding-vertical), var(--button-small-padding-horizontal), var(--button-small-font-size), 0;
+ }
+ }
+ @m mini {
+ & .el-radio-button__inner {
+ @mixin button-size var(--button-mini-padding-vertical), var(--button-mini-padding-horizontal), var(--button-mini-font-size), 0;
+ }
+ }
+ }
+}
diff --git a/packages/theme-default/src/rate.css b/packages/theme-default/src/rate.css
new file mode 100644
index 000000000..7f08c3e4e
--- /dev/null
+++ b/packages/theme-default/src/rate.css
@@ -0,0 +1,46 @@
+@charset "UTF-8";
+@import "./common/var.css";
+
+@component-namespace el {
+
+ @b rate {
+ height: var(--rate-height);
+ @e item {
+ display: inline-block;
+ position: relative;
+ font-size: 0;
+ vertical-align: middle;
+ }
+
+ @e icon {
+ position: relative;
+ display: inline-block;
+ font-size: var(--rate-icon-size);
+ margin-right: var(--rate-icon-margin);
+ color: var(--rate-icon-color);
+ transition: .3s;
+ &.hover {
+ transform: scale(1.15);
+ }
+
+ .path2 {
+ position: absolute;
+ left: 0;
+ top: 0;
+ }
+ }
+
+ @e decimal {
+ position: absolute;
+ top: 0;
+ left: 0;
+ display: inline-block;
+ overflow: hidden;
+ }
+
+ @e text {
+ font-size: var(--rate-font-size);
+ vertical-align: middle;
+ }
+ }
+}
diff --git a/packages/theme-default/src/row.css b/packages/theme-default/src/row.css
new file mode 100644
index 000000000..062ab1116
--- /dev/null
+++ b/packages/theme-default/src/row.css
@@ -0,0 +1,39 @@
+@charset "UTF-8";
+@import "./common/var.css";
+
+@component-namespace el {
+ @b row {
+ position: relative;
+ box-sizing: border-box;
+ @utils-clearfix;
+
+ @m flex {
+ display: flex;
+ &:before,
+ &:after {
+ display: none;
+ }
+
+ @when justify-center {
+ justify-content: center;
+ }
+ @when justify-end {
+ justify-content: flex-end;
+ }
+ @when justify-space-between {
+ justify-content: space-between;
+ }
+ @when justify-space-around {
+ justify-content: space-around;
+ }
+
+ @when align-middle {
+ align-items: center;
+ }
+ @when align-bottom {
+ align-items: flex-end;
+ }
+ }
+
+ }
+}
diff --git a/packages/theme-default/src/select-dropdown.css b/packages/theme-default/src/select-dropdown.css
new file mode 100644
index 000000000..2c0ce7c39
--- /dev/null
+++ b/packages/theme-default/src/select-dropdown.css
@@ -0,0 +1,55 @@
+@charset "UTF-8";
+@import "./common/var.css";
+
+@component-namespace el {
+
+ @b select-dropdown {
+ position: absolute;
+ z-index: 1001;
+ border: var(--select-dropdown-border);
+ border-radius: var(--border-radius-small);
+ background-color: var(--select-dropdown-background);
+ box-shadow: var(--select-dropdown-shadow);
+ box-sizing: border-box;
+ margin: 5px 0;
+
+ @when multiple {
+ & .el-select-dropdown__item.selected {
+ color: var(--select-option-selected);
+ background-color: var(--select-dropdown-background);
+
+ &.hover {
+ background-color: var(--select-option-hover-background);
+ }
+
+ &::after {
+ position: absolute;
+ right: 10px;
+ font-family: 'element-icons';
+ content: "\E608";
+ font-size: 11px;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ }
+ }
+ }
+ }
+
+ @b select-dropdown__empty {
+ padding: var(--select-dropdown-empty-padding);
+ margin: 0;
+ text-align: center;
+ color: var(--select-dropdown-empty-color);
+ font-size: var(--select-font-size);
+ }
+
+ @b select-dropdown__list {
+ list-style: none;
+ padding: var(--select-dropdown-padding);
+ margin: 0;
+ width: 100%;
+ max-height: var(--select-dropdown-max-height);
+ box-sizing: border-box;
+ overflow-y: auto;
+ }
+}
diff --git a/packages/theme-default/src/select.css b/packages/theme-default/src/select.css
new file mode 100644
index 000000000..f42d20968
--- /dev/null
+++ b/packages/theme-default/src/select.css
@@ -0,0 +1,137 @@
+@charset "UTF-8";
+@import "./common/var.css";
+@import "./select-dropdown.css";
+@import "./input.css";
+@import "./tag.css";
+@import "./option.css";
+@import "./option-group.css";
+
+@component-namespace el {
+
+ @b select {
+ display: block;
+ position: relative;
+
+ @when small {
+ & input {
+ border-radius: var(--border-radius-small);
+ height: 28px;
+ }
+ }
+
+ &:hover {
+ .el-input__inner {
+ border-color: var(--select-border-color-hover);
+ }
+ }
+
+ & .el-input {
+ & .el-input__icon {
+ color: var(--select-input-color);
+ font-size: var(--select-input-font-size);
+ transition: transform .3s;
+ transform: translateY(-50%) rotateZ(180deg);
+ line-height: 16px;
+ top: 50%;
+ cursor: pointer;
+
+ @when reverse {
+ transform: translateY(-50%);
+ }
+
+ @when show-close {
+ transition: 0s;
+ size: 16px;
+ font-size: var(--select-font-size);
+ right: 8px;
+ text-align: center;
+ transform: translateY(-50%) rotateZ(180deg);
+ border-radius: var(--border-radius-circle);
+ color: var(--select-input-color);
+
+ &:hover {
+ color: var(--select-close-hover-color);
+ }
+ }
+ }
+
+ & .el-input__inner {
+ cursor: pointer;
+
+ &:focus {
+ border-color: var(--select-input-focus-background);
+ }
+ }
+
+ &.is-disabled {
+ & .el-input__inner {
+ cursor: not-allowed;
+
+ &:hover {
+ border-color: var(--select-disabled-border);
+ }
+ }
+ }
+ }
+
+ @e input {
+ border: none;
+ outline: none;
+ padding: 0;
+ margin: 4px 0 -3px 10px;
+ color: var(--select-multiple-input-color);
+ font-size: var(--select-font-size);
+ vertical-align: baseline;
+ appearance: none;
+ height: 28px;
+ background-color: transparent;
+ }
+
+ @e close {
+ cursor: pointer;
+ position: absolute;
+ top: 8px;
+ z-index: var(--index-top);
+ right: 25px;
+ color: var(--select-input-color);
+ line-height: 18px;
+ font-size: var(--select-input-font-size);
+
+ &:hover {
+ color: var(--select-close-hover-color);
+ }
+ }
+
+ @e tags {
+ position: absolute;
+ line-height: normal;
+ white-space: normal;
+ z-index: var(--index-top);
+ }
+
+ & .el-tag__close {
+ margin-top: -2px;
+ }
+
+ & .el-tag {
+ height: var(--select-tag-height);
+ line-height: var(--select-tag-height);
+ box-sizing: border-box;
+ margin: 6px 0 0 6px;
+ }
+
+ @e tag {
+ display: inline-block;
+ height: var(--select-tag-height);
+ line-height: var(--select-tag-height);
+ font-size: var(--select-font-size);
+ border-radius: var(--border-radius-base);
+ color: var(--select-tag-color);
+ background-color: var(--select-tag-background);
+
+ & .el-icon-close {
+ font-size: var(--select-input-font-size);
+ }
+ }
+ }
+}
diff --git a/packages/theme-default/src/slider.css b/packages/theme-default/src/slider.css
new file mode 100644
index 000000000..f8141892c
--- /dev/null
+++ b/packages/theme-default/src/slider.css
@@ -0,0 +1,142 @@
+@charset "UTF-8";
+@import "./input-number.css";
+@import "./tooltip.css";
+@import "./common/var.css";
+
+@component-namespace el {
+ @b slider {
+ @utils-clearfix;
+ @e runway {
+ width: 100%;
+ height: var(--slider-height);
+ margin: var(--slider-margin);
+ background-color: var(--slider-runway-background-color);
+ border-radius: var(--slider-border-radius);
+ position: relative;
+ cursor: pointer;
+ vertical-align: middle;
+
+ &.show-input {
+ margin-right: 160px;
+ width: auto;
+ }
+
+ &.disabled {
+ cursor: default;
+
+ .el-slider__bar, .el-slider__button {
+ background-color: var(--slider-disable-color);
+ }
+
+ .el-slider__button-wrapper {
+ &:hover,
+ &.hover {
+ cursor: not-allowed;
+ }
+
+ &.dragging {
+ cursor: not-allowed;
+ }
+ }
+
+ .el-slider__button {
+ &:hover,
+ &.hover,
+ &.dragging {
+ transform: scale(1);
+ }
+
+ &:hover,
+ &.hover {
+ cursor: not-allowed;
+ }
+
+ &.dragging {
+ cursor: not-allowed;
+ }
+ }
+ }
+ }
+
+ @e input {
+ float: right;
+ margin-top: 7px;
+ }
+
+ @e bar {
+ height: var(--slider-height);
+ background-color: var(--slider-main-background-color);
+ border-top-left-radius: var(--slider-border-radius);
+ border-bottom-left-radius: var(--slider-border-radius);
+ position: absolute;
+ }
+
+ @e button-wrapper {
+ size: var(--slider-button-wrapper-size);
+ position: absolute;
+ z-index: 1001;
+ top: var(--slider-button-wrapper-offset);
+ transform: translateX(-50%);
+ background-color: transparent;
+ text-align: center;
+
+ .el-tooltip {
+ line-height: 1;
+ height: 100%;
+ display: block;
+ }
+
+ .el-tooltip::after {
+ content: '';
+ width: 0;
+ height: 100%;
+ display: inline-block;
+ vertical-align: middle;
+ }
+
+ .el-tooltip__rel {
+ vertical-align: middle;
+ }
+
+ &:hover,
+ &.hover {
+ cursor: grab;
+ }
+
+ &.dragging {
+ cursor: grabbing;
+ }
+ }
+
+ @e button {
+ size: var(--slider-button-size);
+ background-color: var(--slider-main-background-color);
+ border-radius: 50%;
+ transition: .2s;
+
+ &:hover,
+ &.hover,
+ &.dragging {
+ transform: scale(1.5);
+ background-color: var(--slider-button-hover-color);
+ }
+
+ &:hover,
+ &.hover {
+ cursor: grab;
+ }
+
+ &.dragging {
+ cursor: grabbing;
+ }
+ }
+
+ @e stop {
+ position: absolute;
+ size: var(--slider-height);
+ border-radius: var(--border-radius-circle);
+ background-color: var(--slider-stop-background-color);
+ transform: translateX(-50%);
+ }
+ }
+}
diff --git a/packages/theme-default/src/spinner.css b/packages/theme-default/src/spinner.css
new file mode 100644
index 000000000..40ed622b3
--- /dev/null
+++ b/packages/theme-default/src/spinner.css
@@ -0,0 +1,46 @@
+@charset "UTF-8";
+@import "./common/var.css";
+
+@component-namespace el {
+ @b time-spinner {
+ display: flex;
+ width: 100%;
+ }
+
+ @b spinner {
+ display: inline-block;
+ vertical-align: middle;
+ }
+ @b spinner-inner {
+ animation: rotate 2s linear infinite;
+ width: 50px;
+ height: 50px;
+
+ & .path {
+ stroke: #ececec;
+ stroke-linecap: round;
+ animation: dash 1.5s ease-in-out infinite;
+ }
+
+ }
+}
+@keyframes rotate {
+ 100% {
+ transform: rotate(360deg);
+ }
+}
+
+@keyframes dash {
+ 0% {
+ stroke-dasharray: 1, 150;
+ stroke-dashoffset: 0;
+ }
+ 50% {
+ stroke-dasharray: 90, 150;
+ stroke-dashoffset: -35;
+ }
+ 100% {
+ stroke-dasharray: 90, 150;
+ stroke-dashoffset: -124;
+ }
+}
diff --git a/packages/theme-default/src/step.css b/packages/theme-default/src/step.css
new file mode 100644
index 000000000..2e47b3ef3
--- /dev/null
+++ b/packages/theme-default/src/step.css
@@ -0,0 +1,204 @@
+@charset "UTF-8";
+@import "./common/var.css";
+
+@component-namespace el {
+ @b step {
+ position: relative;
+ vertical-align: top;
+
+ @when horizontal {
+ display: inline-block;
+ }
+
+ @when vertical {
+ & .el-step__head,
+ & .el-step__main {
+ display: inline-block;
+ }
+
+ & .el-step__main {
+ padding-left: 10px;
+ }
+ }
+
+ @e line {
+ display: inline-block;
+ position: absolute;
+ border-color: inherit;
+ background-color: #c0ccda;
+
+ @when icon {
+ @when horizontal {
+ right: 4px;
+ }
+ }
+
+ @when horizontal {
+ top: 15px;
+ height: 2px;
+ left: 30px;
+ right: 0;
+ }
+
+ @when vertical {
+ width: 2px;
+ box-sizing: border-box;
+ top: 30px;
+ bottom: 0;
+ }
+ }
+
+ @e line-inner {
+ display: inherit;
+ border-width: 1px;
+ border-style: solid;
+ border-color: inherit;
+ transition: all 150ms;
+ width: 0;
+ height: 0;
+ }
+
+ @e icon {
+ display: block;
+ line-height: 28px;
+
+ > * {
+ line-height: inherit;
+ vertical-align: middle;
+ }
+ }
+
+ @e head {
+ circle: 28px transparent;
+ text-align: center;
+ line-height: 28px;
+ font-size: 28px;
+ vertical-align: top;
+ transition: all 150ms;
+
+ @when text {
+ font-size: 14px;
+ border-width: 2px;
+ border-style: solid;
+
+ @when process {
+ color: #fff;
+ background-color: #c0ccda;
+ border-color: #c0ccda;
+ }
+
+ @when wait {
+ color: #c0ccda;
+ background-color: #fff;
+ border-color: #c0ccda;
+ }
+
+ @when success {
+ color: #fff;
+ background-color: #13ce66;
+ border-color: #13ce66;
+ }
+
+ @when error {
+ color: #fff;
+ background-color: #ff4949;
+ border-color: #ff4949;
+ }
+
+ @when finish {
+ color: #fff;
+ background-color: #20a0ff;
+ border-color: #20a0ff;
+ }
+ }
+
+ @when process {
+ color: #c0ccda;
+ border-color: #c0ccda;
+ }
+
+ @when wait {
+ color: #c0ccda;
+ border-color: #c0ccda;
+ }
+
+ @when success {
+ color: #13ce66;
+ border-color: #13ce66;
+ }
+
+ @when error {
+ color: #ff4949;
+ border-color: #ff4949;
+ }
+
+ @when finish {
+ color: #20a0ff;
+ border-color: #20a0ff;
+ }
+ }
+
+ @e main {
+ white-space: normal;
+ padding-right: 10px;
+ text-align: left;
+ }
+
+ @e title {
+ font-size: 14px;
+ line-height: 32px;
+ display: inline-block;
+
+ @when process {
+ font-weight: 700;
+ color: #475669;
+ }
+
+ @when wait {
+ font-weight: normal;
+ color: #99a9bf;
+ }
+
+ @when success {
+ font-weight: 700;
+ color: #13ce66;
+ }
+
+ @when error {
+ font-weight: 700;
+ color: #ff4949;
+ }
+
+ @when finish {
+ font-weight: 700;
+ color: #20a0ff;
+ }
+ }
+
+ @e description {
+ font-size: 12px;
+ font-weight: normal;
+ line-height: 14px;
+
+ @when process {
+ color: #8492a6;
+ }
+
+ @when wait {
+ color: #c0ccda;
+ }
+
+ @when success {
+ color: #13ce66;
+ }
+
+ @when error {
+ color: #ff4949;
+ }
+
+ @when finish {
+ color: #20a0ff;
+ }
+ }
+ }
+}
diff --git a/packages/theme-default/src/steps.css b/packages/theme-default/src/steps.css
new file mode 100644
index 000000000..a2e841b1b
--- /dev/null
+++ b/packages/theme-default/src/steps.css
@@ -0,0 +1,16 @@
+@charset "UTF-8";
+@import "./common/var.css";
+
+@component-namespace el {
+ @b steps {
+ font-size: 0;
+
+ > :last-child .el-step__line {
+ display: none;
+ }
+
+ @when horizontal {
+ white-space: nowrap;
+ }
+ }
+}
diff --git a/packages/theme-default/src/submenu.css b/packages/theme-default/src/submenu.css
new file mode 100644
index 000000000..e69de29bb
diff --git a/packages/theme-default/src/switch.css b/packages/theme-default/src/switch.css
new file mode 100644
index 000000000..e2630d825
--- /dev/null
+++ b/packages/theme-default/src/switch.css
@@ -0,0 +1,119 @@
+@charset "UTF-8";
+@import "./common/var.css";
+
+@component-namespace el {
+
+ @b switch {
+ display: inline-block;
+ position: relative;
+ font-size: var(--switch-font-size);
+ @when disabled {
+ & .el-switch__core,
+ & .el-switch__label {
+ cursor: not-allowed;
+ }
+ }
+
+ @e label {
+ transition: .2s;
+ position: absolute;
+ z-index: 10;
+ size: var(--switch-size);
+ left: 0;
+ top: 0;
+ display: inline-block;
+ font-size: var(--switch-font-size);
+ cursor: pointer;
+ user-select: none;
+ @m left {
+ i {
+ left: 6px;
+ }
+ }
+ @m right {
+ i {
+ right: 6px;
+ }
+ }
+ & * {
+ line-height: 1;
+ top: 4px;
+ position: absolute;
+ font-size: var(--switch-font-size);
+ display: inline-block;
+ color: var(--color-white);
+ }
+ }
+
+ @e input {
+ &:checked + .el-switch__core {
+ border-color: var(--switch-on-color);
+ background-color: var(--switch-on-color);
+ }
+ }
+
+ @e core {
+ margin: 0;
+ display: inline-block;
+ vertical-align: middle;
+ position: relative;
+ size: var(--switch-size);
+ border: 1px solid var(--switch-off-color);
+ outline: none;
+ border-radius: var(--switch-core-border-radius);
+ box-sizing: border-box;
+ background: var(--switch-off-color);
+ cursor: pointer;
+ transition: border-color .3s, background-color .3s;
+
+ & .el-switch__button {
+ position: absolute 0 * * 0;
+ border-radius: var(--border-radius-circle);
+ transition: transform .3s;
+ size: var(--switch-button-size);
+ z-index: 20;
+ background-color: var(--color-white);
+ }
+ }
+
+ @when disabled {
+ .el-switch__core {
+ border-color: var(--switch-disabled-color);
+ background: var(--switch-disabled-color);
+
+ & span {
+ background-color: var(--switch-disabled-text-color);
+ }
+
+ & ~ .el-switch__label * {
+ color: var(--switch-disabled-text-color);
+ }
+ }
+
+ .el-switch__input:checked + .el-switch__core {
+ border-color: var(--switch-disabled-color);
+ background-color: var(--switch-disabled-color);
+ }
+ }
+
+ @modifier wide {
+ .el-switch__label {
+ &.el-switch__label--left {
+ span {
+ left: 10px;
+ }
+ }
+ &.el-switch__label--right {
+ span {
+ right: 10px;
+ }
+ }
+ }
+ }
+
+ & .label-fade-enter,
+ & .label-fade-leave-active {
+ opacity: 0;
+ }
+ }
+}
diff --git a/packages/theme-default/src/tab-pane.css b/packages/theme-default/src/tab-pane.css
new file mode 100644
index 000000000..e69de29bb
diff --git a/packages/theme-default/src/table-column.css b/packages/theme-default/src/table-column.css
new file mode 100644
index 000000000..f367c8f3e
--- /dev/null
+++ b/packages/theme-default/src/table-column.css
@@ -0,0 +1,85 @@
+@charset "UTF-8";
+@import "./checkbox.css";
+@import "./tag.css";
+@import "./common/var.css";
+
+@component-namespace el {
+ @b table-filter {
+ border: solid 1px #d3dce6;
+ border-radius: 2px;
+ background-color: #fff;
+ box-shadow: var(--dropdown-menu-box-shadow);
+ box-sizing: border-box;
+ margin: 2px 0;
+
+ /** used for dropdown mode */
+ @e list {
+ padding: 5px 0;
+ margin: 0;
+ list-style: none;
+ min-width: 100px;
+ }
+
+ @e list-item {
+ line-height: 36px;
+ padding: 0 10px;
+ cursor: pointer;
+ font-size: var(--font-size-base);
+
+ &:hover {
+ background-color: var(--dropdown-menuItem-hover-fill);
+ color: var(--dropdown-menuItem-hover-color);
+ }
+
+ @when active {
+ background-color: #20a0ff;
+ color: #fff;
+ }
+ }
+
+ @e content {
+ min-width: 100px;
+ }
+
+ @e bottom {
+ border-top: 1px solid #d3dce6;
+ padding: 8px;
+
+ button {
+ background: transparent;
+ border: none;
+ color: #8492a6;
+ cursor: pointer;
+ font-size: var(--font-size-base);
+ padding: 0 3px;
+
+ &:hover {
+ color: #20a0ff;
+ }
+
+ &:focus {
+ outline: none;
+ }
+
+ &.is-disabled {
+ color: #c0ccda;
+ cursor: not-allowed;
+ }
+ }
+ }
+
+ @e checkbox-group {
+ padding: 10px;
+
+ .el-checkbox {
+ display: block;
+ margin-bottom: 8px;
+ margin-left: 5px;
+ }
+
+ .el-checkbox:last-child {
+ margin-bottom: 0;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/packages/theme-default/src/table.css b/packages/theme-default/src/table.css
new file mode 100644
index 000000000..b69cde133
--- /dev/null
+++ b/packages/theme-default/src/table.css
@@ -0,0 +1,365 @@
+@charset "UTF-8";
+@import "./checkbox.css";
+@import "./tag.css";
+@import "./common/var.css";
+
+@component-namespace el {
+
+ @b table {
+ position: relative;
+ overflow: hidden;
+ box-sizing: border-box;
+ width: 100%;
+ max-width: 100%;
+ background-color: #fff;
+ border-collapse: collapse;
+ border: 1px solid var(--table-border-color);
+ font-size: 14px;
+ color: var(--table-text-color);
+
+ &::before {
+ content: '';
+ position: absolute;
+ left: 0;
+ bottom: 0;
+ width: 100%;
+ height: 1px;
+ background-color: var(--table-border-color);
+ z-index: 1;
+ }
+
+ &::after {
+ content: '';
+ position: absolute;
+ top: 0;
+ right: 0;
+ width: 1px;
+ height: 100%;
+ background-color: var(--table-border-color);
+ z-index: 1;
+ }
+
+ .el-tooltip {
+ display: block;
+ }
+
+ .el-tooltip__rel {
+ display: block;
+
+ .cell > * {
+ white-space: nowrap;
+ }
+ }
+
+ @e empty-block {
+ display: table;
+ min-height: 60px;
+ text-align: center;
+ width: 100%;
+ height: 100%;
+ }
+
+ @e empty-text {
+ display: table-cell;
+ vertical-align: middle;
+ color: #5e6d82;
+ }
+
+ @modifier fit {
+ border-right: 0;
+ border-bottom: 0;
+
+ & th.gutter, td.gutter {
+ border-right-width: 1px;
+ }
+ }
+
+ & th {
+ white-space: nowrap;
+ overflow: hidden;
+ }
+
+ & th, td {
+ height: 40px;
+ min-width: 0;
+ box-sizing: border-box;
+ text-overflow: ellipsis;
+ vertical-align: middle;
+ position: relative;
+ border-bottom: 1px solid var(--table-border-color);
+
+ @when center {
+ text-align: center;
+ }
+
+ @when left {
+ text-align: left;
+ }
+
+ @when right {
+ text-align: right;
+ }
+ }
+
+ @modifier border {
+ & th, td {
+ border-right: 1px solid var(--table-border-color);
+ }
+ }
+
+ & th {
+ background-color: var(--table-header-background);
+ text-align: left;
+ }
+
+ & th > div {
+ display: inline-block;
+ padding-left: 18px;
+ padding-right: 18px;
+ line-height: 40px;
+ box-sizing: border-box;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ }
+
+ & td > div {
+ box-sizing: border-box;
+ }
+
+ @e fixed, fixed-right {
+ position: absolute;
+ top: 0;
+ left: 0;
+ box-shadow: 1px 0 8px #d3d4d6;
+ overflow-x: hidden;
+
+ &::before {
+ content: '';
+ position: absolute;
+ left: 0;
+ bottom: 0;
+ width: 100%;
+ height: 1px;
+ background-color: var(--table-border-color);
+ z-index: 4;
+ }
+ }
+
+ @e fixed-right {
+ top: 0;
+ left: auto;
+ right: 0;
+
+ box-shadow: -1px 0 8px #d3d4d6;
+
+ .el-table__fixed-header-wrapper, .el-table__fixed-body-wrapper {
+ left: auto;
+ right: 0;
+ }
+ }
+
+ @e fixed-header-wrapper {
+ position: absolute;
+ left: 0;
+ top: 0;
+ z-index: 3;
+
+ & thead div {
+ background-color: var(--table-header-background);
+ color: var(--table-text-color);
+ }
+ }
+
+ @e fixed-body-wrapper {
+ position: absolute;
+ left: 0;
+ top: 37px;
+ overflow: hidden;
+ z-index: 3;
+ }
+
+ @e header-wrapper, body-wrapper {
+ width: 100%;
+ }
+
+ @e header, body {
+ table-layout: fixed;
+ }
+
+ @e header-wrapper {
+ overflow: hidden;
+
+ & thead div {
+ background-color: var(--table-header-background);
+ color: var(--table-text-color);
+ }
+ }
+
+ @e body-wrapper {
+ overflow: auto;
+ position: relative;
+ }
+
+ & th.required > div::before {
+ display: inline-block;
+ content: "";
+ width: 8px;
+ height: 8px;
+ border-radius: 50%;
+ background: #ff4d51;
+ margin-right: 5px;
+ vertical-align: middle;
+ }
+
+ & th > .cell {
+ position: relative;
+ word-wrap: normal;
+ text-overflow: ellipsis;
+ display: inline-block;
+ line-height: 20px;
+ vertical-align: middle;
+ width: 100%;
+ box-sizing: border-box;
+
+ &.highlight {
+ color: #20a0ff;
+ }
+ }
+
+ & .caret-wrapper {
+ position: relative;
+ cursor: pointer;
+ display: inline-block;
+ vertical-align: middle;
+ margin-left: 5px;
+ margin-top: -2px;
+ width: 16px;
+ height: 34px;
+ overflow: initial;
+ }
+
+ & .sort-caret {
+ display: inline-block;
+ width: 0;
+ height: 0;
+ border: 0;
+ content: "";
+ position: absolute;
+ left: 3px;
+ z-index: 2;
+
+ &.ascending {
+ top: 11px;
+ border-top: none;
+ border-right: 5px solid transparent;
+ border-bottom: 5px solid #99a9bf;
+ border-left: 5px solid transparent;
+ }
+
+ &.descending {
+ bottom: 11px;
+ border-top: 5px solid #99a9bf;
+ border-right: 5px solid transparent;
+ border-bottom: none;
+ border-left: 5px solid transparent;
+ }
+ }
+
+ & .ascending .sort-caret.ascending {
+ border-bottom-color: #475669;
+ }
+
+ & .descending .sort-caret.descending {
+ border-top-color: #475669;
+ }
+
+ & th.gutter, td.gutter {
+ width: 15px;
+ border-right-width: 0;
+ border-bottom-width: 0;
+ padding: 0;
+ }
+
+ & td.gutter {
+ width: 0;
+ }
+
+ & td.is-hidden, th.is-hidden {
+ > * {
+ visibility: hidden;
+ }
+ }
+
+ & .cell {
+ box-sizing: border-box;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: normal;
+ line-height: 24px;
+ padding-left: 18px;
+ padding-right: 18px;
+ }
+
+ & tr input[type="checkbox"] {
+ margin: 0;
+ }
+
+ & tr {
+ background-color: #fff;
+ }
+
+ @modifier striped {
+ & .el-table__body {
+ & tr:nth-child(2n) {
+ background: #FAFAFA;
+
+ &.current-row {
+ background: #EFF7FF;
+ }
+ }
+ }
+ }
+
+ @e body {
+ tr {
+ transition: background-color .25s ease-in-out;
+ }
+
+ tr.current-row {
+ background: #eff7ff;
+ }
+ }
+
+ @e column-resize-proxy {
+ position: absolute;
+ left: 200px;
+ top: 0;
+ bottom: 0;
+ width: 0;
+ border-left: 1px solid var(--table-border-color);
+ z-index: 10;
+ }
+
+ & .hidden-columns {
+ visibility: hidden;
+ position: absolute;
+ z-index: -1;
+ }
+
+ @e column-filter-trigger {
+ display: inline-block;
+ line-height: 34px;
+ margin-left: 5px;
+ cursor: pointer;
+
+ & i {
+ color: #99a9bf;
+ }
+ }
+ }
+}
+
+.el-table .el-table__body tr.hover-row {
+ background-color: #eff2f7;
+}
diff --git a/packages/theme-default/src/tabs.css b/packages/theme-default/src/tabs.css
new file mode 100644
index 000000000..0c03a36df
--- /dev/null
+++ b/packages/theme-default/src/tabs.css
@@ -0,0 +1,238 @@
+@charset "UTF-8";
+@import "./common/var.css";
+
+@component-namespace el {
+ @b tabs {
+ display: inline-block;
+
+ @e header {
+ border-bottom: 1px solid #d3dce6;
+ padding: 0;
+ position: relative;
+ margin: 0 0 15px;
+ @utils-clearfix;
+ }
+ @e active-bar {
+ position: absolute;
+ bottom: -1px;
+ left: 0;
+ height: 3px;
+ background-color: var(--color-primary);
+ z-index: 1;
+ /*transition: transform .3s cubic-bezier(.645,.045,.355,1);*/
+ list-style: none;
+ }
+ @e item {
+ padding: 0 16px;
+ height: 42px;
+ box-sizing: border-box;
+ line-height: @height;
+ float: left;
+ list-style: none;
+ font-size: 14px;
+ color: #8492a6;
+ margin-bottom: -1px;
+ position: relative;
+
+ @when active {
+ color: var(--color-primary);
+ }
+
+ &:hover {
+ color: #1f2d3d;
+ cursor: pointer;
+ }
+ }
+ @e content {
+ white-space: nowrap;
+ overflow: hidden;
+ position: relative;
+ }
+ @m card {
+ .el-tabs__active-bar {
+ display: none;
+ }
+ & .el-icon-close {
+ font-size: 12px;
+ vertical-align: middle;
+ line-height: 15px;
+ overflow: hidden;
+ width: 0;
+ height: 14px;
+ border-radius: 50%;
+ text-align: center;
+ transform-origin: 100% 50%;
+ transition: all .3s cubic-bezier(.645,.045,.355,1);
+ position: relative;
+ top: -1px;
+ right: -2px;
+
+ &:before {
+ transform: scale(.7, .7);
+ display: inline-block;
+ }
+
+ &:hover {
+ background-color: #99a9bf;
+ color: #fff;
+ }
+ }
+ .el-tabs__item {
+ border: 1px solid transparent;
+ transition: all .3s cubic-bezier(.645,.045,.355,1);
+
+ &.is-closable {
+ &:hover {
+ padding: * 9px;
+
+ & .el-icon-close {
+ width: 14px;
+ }
+ }
+ }
+ &.is-active {
+ border: 1px solid #d3dce6;
+ border-bottom-color: #fff;
+ border-radius: 4px 4px 0 0;
+
+ &.is-closable {
+ padding: * 16px;
+
+ .el-icon-close {
+ width: 14px;
+ }
+ }
+ }
+ }
+ }
+ @m border-card {
+ background: #fff;
+ border: 1px solid #d3dce6;
+ box-shadow: 0px 2px 4px 0px rgba(0,0,0,0.12), 0px 0px 6px 0px rgba(0,0,0,0.04);
+
+ .el-tabs__content {
+ padding: 15px;
+ }
+ .el-tabs__header {
+ background-color: #eff2f7;
+ margin: 0;
+ }
+ .el-tabs__item {
+ transition: all .3s cubic-bezier(.645,.045,.355,1);
+ border: 1px solid transparent;
+ border-top: 0;
+ margin: * -1px;
+
+ &.is-active {
+ background-color: #fff;
+ border-right-color: #d3dce6;
+ border-left-color: #d3dce6;
+
+ &:first-child {
+ border-left-color: #d3dce6;
+ }
+ &:last-child {
+ border-right-color: #d3dce6;
+ }
+ }
+
+ }
+ }
+ }
+ @b tab-pane {
+ width: 100%;
+ display: inline-block;
+ }
+}
+
+.slideInRight-transition,
+.slideInLeft-transition {
+ display: inline-block;
+}
+.slideInRight-enter {
+ animation: slideInRight-enter .3s;
+}
+.slideInRight-leave {
+ position: absolute;
+ left: 0;
+ right: 0;
+ animation: slideInRight-leave .3s;
+}
+.slideInLeft-enter {
+ animation: slideInLeft-enter .3s;
+}
+.slideInLeft-leave {
+ position: absolute;
+ left: 0;
+ right: 0;
+ animation: slideInLeft-leave .3s;
+}
+
+@keyframes slideInRight-enter {
+ 0% {
+ opacity: 0;
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ -webkit-transform: translateX(100%);
+ transform: translateX(100%)
+ }
+
+ to {
+ opacity: 1;
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ -webkit-transform: translateX(0);
+ transform: translateX(0)
+ }
+}
+@keyframes slideInRight-leave {
+ 0% {
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ opacity: 1
+ }
+
+ 100% {
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ -webkit-transform: translateX(100%);
+ transform: translateX(100%);
+ opacity: 0
+ }
+}
+@keyframes slideInLeft-enter {
+ 0% {
+ opacity: 0;
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ -webkit-transform: translateX(-100%);
+ transform: translateX(-100%)
+ }
+
+ to {
+ opacity: 1;
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ -webkit-transform: translateX(0);
+ transform: translateX(0)
+ }
+}
+@keyframes slideInLeft-leave {
+ 0% {
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ opacity: 1
+ }
+
+ 100% {
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ -webkit-transform: translateX(-100%);
+ transform: translateX(-100%);
+ opacity: 0
+ }
+}
diff --git a/packages/theme-default/src/tag.css b/packages/theme-default/src/tag.css
new file mode 100644
index 000000000..504dfd43f
--- /dev/null
+++ b/packages/theme-default/src/tag.css
@@ -0,0 +1,92 @@
+@charset "UTF-8";
+@import "./common/var.css";
+
+@component-namespace el {
+
+ @b tag {
+ background-color: var(--tag-fill);
+ display: inline-block;
+ padding: var(--tag-padding);
+ height: 22px;
+ line-height: @height;
+ font-size: var(--tag-font-size);
+ color: var(--tag-color);
+ border-radius: var(--tag-border-radius);
+ border: 1px solid var(--tag-border);
+
+ @when hit {
+ border-color: var(--tag-primary-color);
+ }
+
+ & .el-icon-close {
+ border-radius: 50%;
+ text-align: center;
+ position: relative;
+ cursor: pointer;
+ font-size: 12px;
+ transform: scale(.75, .75);
+ height: 18px;
+ width: 18px;
+ line-height: 18px;
+ vertical-align: middle;
+ top: -1px;
+ right: -2px;
+
+ &:hover {
+ background-color: #fff;
+ color: var(--tag-fill);
+ }
+ }
+
+ @m gray {
+ background-color: var(--tag-gray-fill);
+ border-color: var(--tag-gray-border);
+ color: var(--tag-gray-color);
+
+ & .el-tag__close:hover {
+ background-color: var(--tag-gray-color);
+ color: #fff;
+ }
+ }
+ @m primary {
+ background-color: var(--tag-primary-fill);
+ border-color: var(--tag-primary-border);
+ color: var(--tag-primary-color);
+
+ & .el-tag__close:hover {
+ background-color: var(--tag-primary-color);
+ color: #fff;
+ }
+ }
+ @m success {
+ background-color: var(--tag-success-fill);
+ border-color: var(--tag-success-border);
+ color: var(--tag-success-color);
+
+ & .el-tag__close:hover {
+ background-color: var(--tag-success-color);
+ color: #fff;
+ }
+ }
+ @m warning {
+ background-color: var(--tag-warning-fill);
+ border-color: var(--tag-warning-border);
+ color: var(--tag-warning-color);
+
+ & .el-tag__close:hover {
+ background-color: var(--tag-warning-color);
+ color: #fff;
+ }
+ }
+ @m danger {
+ background-color: var(--tag-danger-fill);
+ border-color: var(--tag-danger-border);
+ color: var(--tag-danger-color);
+
+ & .el-tag__close:hover {
+ background-color: var(--tag-danger-color);
+ color: #fff;
+ }
+ }
+ }
+}
diff --git a/packages/theme-default/src/time-picker.css b/packages/theme-default/src/time-picker.css
new file mode 100644
index 000000000..f7769050c
--- /dev/null
+++ b/packages/theme-default/src/time-picker.css
@@ -0,0 +1,3 @@
+@import "./date-picker/picker.css";
+@import "./date-picker/time-spinner.css";
+@import "./date-picker/time-picker.css";
diff --git a/packages/theme-default/src/time-select.css b/packages/theme-default/src/time-select.css
new file mode 100644
index 000000000..407a20812
--- /dev/null
+++ b/packages/theme-default/src/time-select.css
@@ -0,0 +1,42 @@
+@import "./date-picker/picker.css";
+@import "./date-picker/date-picker.css";
+@import "./common/var.css";
+
+.time-select {
+ margin: 5px 0;
+ min-width: 0;
+}
+
+.time-select .el-picker-panel__content {
+ max-height: 200px;
+ overflow: hidden;
+ margin: 0;
+
+ &:hover {
+ overflow-y: auto;
+ }
+}
+
+.time-select-item {
+ padding: 8px 10px;
+ font-size: 14px;
+}
+
+.time-select-item.selected:not(.disabled) {
+ background-color: var(--datepicker-active-color);
+ color: #fff;
+
+ &:hover {
+ background-color: #1d8ce0;
+ }
+}
+
+.time-select-item.disabled {
+ color: var(--datepicker-border-color);
+ cursor: not-allowed;
+}
+
+.time-select-item:hover {
+ background-color: var(--datepicker-cell-hover-color);
+ cursor: pointer;
+}
diff --git a/packages/theme-default/src/tooltip.css b/packages/theme-default/src/tooltip.css
new file mode 100644
index 000000000..b2dfca68f
--- /dev/null
+++ b/packages/theme-default/src/tooltip.css
@@ -0,0 +1,145 @@
+@charset "UTF-8";
+@import "./common/var.css";
+
+@component-namespace el {
+ @b tooltip {
+ display: inline-block;
+
+ @e rel {
+ display: inline-block;
+ position: relative;
+ }
+
+ @e popper {
+ position: absolute;
+ border-radius: 4px;
+ padding: var(--tooltip-padding);
+ z-index: var(--index-popper);
+ font-size: var(--tooltip-font-size);
+ line-height: 1.2;
+
+ .popper__arrow,
+ .popper__arrow::after {
+ position: absolute;
+ display: block;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+ }
+
+ .popper__arrow {
+ border-width: var(--tooltip-arrow-size);
+ }
+
+ .popper__arrow::after {
+ content: " ";
+ border-width: 5px;
+ }
+
+ &[x-placement^="top"] {
+ margin-bottom: calc(var(--tooltip-arrow-size) + 6px);
+ }
+
+ &[x-placement^="top"] .popper__arrow {
+ bottom: -var(--tooltip-arrow-size);
+ border-top-color: var(--tooltip-border-color);
+ border-bottom-width: 0;
+
+ &::after {
+ bottom: 1px;
+ margin-left: -5px;
+ border-top-color: var(--tooltip-fill);
+ border-bottom-width: 0;
+ }
+ }
+
+ &[x-placement^="bottom"] {
+ margin-top: calc(var(--tooltip-arrow-size) + 6px);
+ }
+
+ &[x-placement^="bottom"] .popper__arrow {
+ top: -var(--tooltip-arrow-size);
+ border-top-width: 0;
+ border-bottom-color: var(--tooltip-border-color);
+
+ &::after {
+ top: 1px;
+ margin-left: -5px;
+ border-top-width: 0;
+ border-bottom-color: var(--tooltip-fill);
+ }
+ }
+
+ &[x-placement^="right"] {
+ margin-left: calc(var(--tooltip-arrow-size) + 6px);
+ }
+
+ &[x-placement^="right"] .popper__arrow {
+ left: -var(--tooltip-arrow-size);
+ border-right-color: var(--tooltip-border-color);
+ border-left-width: 0;
+
+ &::after {
+ bottom: -5px;
+ left: 1px;
+ border-right-color: var(--tooltip-fill);
+ border-left-width: 0;
+ }
+ }
+
+ &[x-placement^="left"] {
+ margin-right: calc(var(--tooltip-arrow-size) + 6px);
+ }
+
+ &[x-placement^="left"] .popper__arrow {
+ right: -var(--tooltip-arrow-size);
+ border-right-width: 0;
+ border-left-color: var(--tooltip-border-color);
+
+ &::after {
+ right: 1px;
+ bottom: -5px;
+ margin-left: -5px;
+ border-right-width: 0;
+ border-left-color: var(--tooltip-fill);
+ }
+ }
+
+ @when dark {
+ background: var(--tooltip-fill);
+ color: var(--tooltip-color);
+ }
+
+ @when light {
+ background: var(--tooltip-color);
+ border: 1px solid var(--tooltip-fill);
+
+ &[x-placement^="top"] .popper__arrow {
+ border-top-color: var(--tooltip-fill);
+ &::after {
+ border-top-color: var(--tooltip-color);
+ }
+ }
+ &[x-placement^="bottom"] .popper__arrow {
+ border-bottom-color: var(--tooltip-fill);
+ &::after {
+ border-bottom-color: var(--tooltip-color);
+ }
+ }
+ &[x-placement^="left"] .popper__arrow {
+ border-left-color: var(--tooltip-fill);
+ &::after {
+ border-left-color: var(--tooltip-color);
+ }
+ }
+ &[x-placement^="right"] .popper__arrow {
+ border-right-color: var(--tooltip-fill);
+ &::after {
+ border-right-color: var(--tooltip-color);
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/packages/theme-default/src/tree.css b/packages/theme-default/src/tree.css
new file mode 100644
index 000000000..2a5dbcb88
--- /dev/null
+++ b/packages/theme-default/src/tree.css
@@ -0,0 +1,92 @@
+@charset "UTF-8";
+@import "./common/var.css";
+
+@component-namespace el {
+ @b tree {
+ cursor: default;
+ background: #ffffff;
+ border: 1px solid #d3dce6;
+ }
+
+ @b tree-node {
+ white-space: nowrap;
+
+ @e content {
+ line-height: 36px;
+ height: 36px;
+ cursor: pointer;
+
+ & > .el-checkbox,
+ & > .el-tree-node__expand-icon {
+ margin-right: 8px;
+ }
+ & > .el-checkbox {
+ vertical-align: middle;
+ }
+ &:hover {
+ background: #e5e9f2;
+ }
+ }
+
+ @e expand-icon {
+ display: inline-block;
+ cursor: pointer;
+ width: 0;
+ height: 0;
+ vertical-align: middle;
+ margin-left: 10px;
+ border: 6px solid transparent;
+ border-right-width: 0;
+ border-left-color: #99a9bf;
+ border-left-width: 7px;
+
+ transform: rotate(0deg);
+ transition: transform 0.3s ease-in-out;
+
+ &:hover {
+ border-left-color: #999;
+ }
+
+ &.expanded {
+ transform: rotate(90deg);
+ }
+
+ &.is-leaf {
+ border-color: transparent;
+ cursor: default;
+ }
+ }
+
+ @e label {
+ font-size: 14px;
+ vertical-align: middle;
+ display: inline-block;
+ }
+
+ @e icon {
+ display: inline-block;
+ vertical-align: middle;
+ font-size: 14px;
+ color: #99a9bf;
+ }
+
+ & > .el-tree-node__children {
+ overflow: hidden;
+ background-color: transparent;
+ /** padding-left: 16px; */
+ display: none;
+ }
+
+ &.expanded > .el-tree-node__children {
+ display: block;
+ }
+ }
+}
+
+.el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content {
+ background-color: #eff7ff;
+}
+
+.collapse-transition {
+ transition: 0.3s height ease-in-out, 0.3s padding-top ease-in-out, 0.3s padding-bottom ease-in-out;
+}
diff --git a/packages/theme-default/src/upload.css b/packages/theme-default/src/upload.css
new file mode 100644
index 000000000..026a35a80
--- /dev/null
+++ b/packages/theme-default/src/upload.css
@@ -0,0 +1,265 @@
+@charset "UTF-8";
+@import "./progress.css";
+@import "./common/var.css";
+
+@component-namespace el {
+ @b upload {
+ width: 360px;
+
+ @e input {
+ display: none;
+ }
+ @e inner {
+ display: inline-block;
+ position: relative;
+
+ & iframe {
+ position: absolute;
+ z-index: -1;
+ top: 0;
+ left: 0;
+ opacity: 0;
+ filter: alpha(opacity=0);
+ }
+ }
+ @e files {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+ margin-bottom: 10px;
+ }
+ @e file {
+ transition: all .5s cubic-bezier(.55,0,.1,1);
+ font-size: 14px;
+ color: #475669;
+ line-height: 32px;
+ position: relative;
+ box-sizing: border-box;
+ border-radius: 4px;
+ width: 100%;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ position: relative;
+
+ a {
+ color: #475669;
+ transition: color .3s;
+ padding-left: 4px;
+
+ [class^="el-icon"] {
+ color: #99a9bf;
+ margin-right: 7px;
+ height: 100%;
+ line-height: inherit;
+ }
+ }
+ & .el-progress {
+ position: absolute;
+ bottom: -3px;
+ width: 100%;
+ }
+ & .el-progress__text {
+ position: absolute;
+ right: 0;
+ top: -10px;
+ right: 0;
+ }
+ .el-progress-bar {
+ margin-right: 0;
+ padding-right: 0;
+ }
+ &:hover {
+ background-color: #eff2f7;
+ }
+ @when finished {
+ & a:hover {
+ color: var(--link-hover-color);
+ cursor: pointer;
+ }
+ &:hover {
+ .el-upload__btn-delete {
+ display: block;
+ cursor: pointer;
+ }
+ }
+ }
+ }
+ @e tip {
+ font-size: 12px;
+ color: #8492a6;
+ margin-top: 7px;
+ }
+ @e btn-delete {
+ position: absolute;
+ right: 15px;
+ top: 0;
+ font-size: 12px;
+ color: var(--color-primary);
+ display: none;
+ }
+ }
+ @b dragger {
+ background-color: #f9fafc;
+ border: 1px solid #c0ccda;
+ box-sizing: border-box;
+ width: 360px;
+ height: 180px;
+ border-radius: 4px;
+ text-align: center;
+ cursor: pointer;
+ position: relative;
+ overflow: hidden;
+
+ & .el-upload__inner {
+ display: block;
+ height: 100%;
+ }
+ & .el-icon-upload {
+ font-size: 67px;
+ color: #99a9bf;
+ margin: 40px 0 16px;
+ line-height: 50px;
+ }
+
+ & + .el-upload__tip {
+ text-align: center;
+ }
+ & ~ .el-upload__files {
+ margin-top: 7px;
+ padding-top: 5px;
+ border-top: 1px solid rgba(#c0ccda, .2);
+ }
+
+ @e cover {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ overflow: hidden;
+ z-index: 10;
+ cursor: default;
+ @utils-vertical-center;
+
+ & img {
+ display: block;
+ width: 100%;
+ height: auto;
+ }
+
+ @e progress {
+ display: inline-block;
+ vertical-align: middle;
+ position: static;
+ width: 243px;
+
+ & + .el-upload__inner {
+ opacity: 0;
+ }
+ }
+
+ @e content {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ }
+
+ @e interact {
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background-color: rgba(#000, .72);
+ text-align: center;
+
+ & .btn {
+ display: inline-block;
+ color: #fff;
+ font-size: 14px;
+ cursor: pointer;
+ vertical-align: middle;
+ transition: var(--md-fade-transition);
+ margin-top: 60px;
+
+ & i {
+ margin-top: 0;
+ }
+
+ & span {
+ opacity: 0;
+ transition: opacity .15s linear;
+ }
+
+ &:not(:first-child) {
+ margin-left: 35px;
+ }
+
+ &:hover {
+ transform: translateY(-13px);
+
+ & span {
+ opacity: 1;
+ }
+ }
+
+ & i {
+ color: #fff;
+ display: block;
+ font-size: 24px;
+ line-height: inherit;
+ margin: 0 auto 5px;
+ }
+ }
+ }
+
+ @e title {
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ background-color: #fff;
+ height: 36px;
+ width: 100%;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ font-weight: normal;
+ text-align: left;
+ padding: 0 10px;
+ margin: 0;
+ line-height: 36px;
+ font-size: 14px;
+ color: #475669;
+ }
+
+ & + .el-upload__inner {
+ opacity: 0;
+ position: relative;
+ z-index: 1;
+ }
+ }
+
+ @e text {
+ color: #99a9bf;
+ font-size: 14px;
+ text-align: center;
+
+ & em {
+ color: var(--color-primary);
+ font-style: normal;
+ }
+ }
+
+ &:not(.is-showCover):hover {
+ border-color: var(--color-primary);
+ }
+
+ @when dragOver {
+ background-color: rgba(32, 159, 255, .06);
+ border: 2px dashed var(--color-primary);
+ }
+ }
+}