diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
new file mode 100644
index 0000000..432a3fb
--- /dev/null
+++ b/.github/workflows/main.yml
@@ -0,0 +1,114 @@
+name: CI
+
+on:
+ push:
+ branches: [ master ]
+ pull_request:
+ branches: [ master ]
+
+jobs:
+ setup:
+ runs-on: ubuntu-latest
+ steps:
+ - name: checkout
+ uses: actions/checkout@master
+
+ - uses: actions/setup-node@v1
+ with:
+ node-version: '12'
+
+ - name: cache package-lock.json
+ uses: actions/cache@v2
+ with:
+ path: package-temp-dir
+ key: lock-${{ github.sha }}
+
+ - name: create package-lock.json
+ run: npm i --package-lock-only
+
+ - name: hack for singe file
+ run: |
+ if [ ! -d "package-temp-dir" ]; then
+ mkdir package-temp-dir
+ fi
+ cp package-lock.json package-temp-dir
+
+ - name: cache node_modules
+ id: node_modules_cache_id
+ uses: actions/cache@v2
+ with:
+ path: node_modules
+ key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }}
+
+ - name: install
+ if: steps.node_modules_cache_id.outputs.cache-hit != 'true'
+ run: npm ci
+
+ lint:
+ runs-on: ubuntu-latest
+ steps:
+ - name: checkout
+ uses: actions/checkout@master
+
+ - name: restore cache from package-lock.json
+ uses: actions/cache@v2
+ with:
+ path: package-temp-dir
+ key: lock-${{ github.sha }}
+
+ - name: restore cache from node_modules
+ uses: actions/cache@v2
+ with:
+ path: node_modules
+ key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }}
+
+ - name: lint
+ run: npm run lint
+
+ needs: setup
+
+ compile:
+ runs-on: ubuntu-latest
+ steps:
+ - name: checkout
+ uses: actions/checkout@master
+
+ - name: restore cache from package-lock.json
+ uses: actions/cache@v2
+ with:
+ path: package-temp-dir
+ key: lock-${{ github.sha }}
+
+ - name: restore cache from node_modules
+ uses: actions/cache@v2
+ with:
+ path: node_modules
+ key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }}
+
+ - name: compile
+ run: npm run compile
+
+ needs: setup
+
+ coverage:
+ runs-on: ubuntu-latest
+ steps:
+ - name: checkout
+ uses: actions/checkout@master
+
+ - name: restore cache from package-lock.json
+ uses: actions/cache@v2
+ with:
+ path: package-temp-dir
+ key: lock-${{ github.sha }}
+
+ - name: restore cache from node_modules
+ uses: actions/cache@v2
+ with:
+ path: node_modules
+ key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }}
+
+ - name: coverage
+ run: npm test -- --coverage && bash <(curl -s https://codecov.io/bash)
+
+ needs: setup
diff --git a/.gitignore b/.gitignore
index f473a22..6c440bb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -27,4 +27,10 @@ lib
es
yarn.lock
package-lock.json
-coverage/
\ No newline at end of file
+coverage/
+
+# umi
+.umi
+.umi-production
+.umi-test
+.env.local
\ No newline at end of file
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 298cd9e..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-language: node_js
-
-sudo: false
-
-notifications:
- email:
- - yiminghe@gmail.com
- - afc163@gmail.com
-
-node_js:
-- 10
-
-before_install:
-- |
- if ! git diff --name-only $TRAVIS_COMMIT_RANGE | grep -qvE '(\.md$)|(^(docs|examples))/'
- then
- echo "Only docs were updated, stopping build process."
- exit
- fi
-script:
-- |
- if [ "$TEST_TYPE" = test ]; then
- npm run coverage && \
- bash <(curl -s https://codecov.io/bash)
- else
- npm run $TEST_TYPE
- fi
-env:
- matrix:
- - TEST_TYPE=lint
- - TEST_TYPE=test
\ No newline at end of file
diff --git a/.umirc.ts b/.umirc.ts
new file mode 100644
index 0000000..253c561
--- /dev/null
+++ b/.umirc.ts
@@ -0,0 +1,13 @@
+// more config: https://d.umijs.org/config
+import { defineConfig } from 'dumi';
+
+export default defineConfig({
+ title: 'rc-switch',
+ favicon: 'https://avatars0.githubusercontent.com/u/9441414?s=200&v=4',
+ logo: 'https://avatars0.githubusercontent.com/u/9441414?s=200&v=4',
+ outputPath: '.doc',
+ exportStatic: {},
+ base: '/switch',
+ publicPath: '/switch/',
+ hash: true,
+});
diff --git a/docs/demo/simple.md b/docs/demo/simple.md
new file mode 100644
index 0000000..5b3e79f
--- /dev/null
+++ b/docs/demo/simple.md
@@ -0,0 +1,3 @@
+# Simple
+
+
diff --git a/docs/examples/simple.tsx b/docs/examples/simple.tsx
new file mode 100644
index 0000000..b0088be
--- /dev/null
+++ b/docs/examples/simple.tsx
@@ -0,0 +1,33 @@
+import '../../assets/index.less';
+import React, { useState } from 'react';
+import type { SwitchChangeEventHandler } from 'rc-switch';
+import Switch from 'rc-switch';
+
+const onChange: SwitchChangeEventHandler = (value, event) => {
+ // eslint-disable-next-line no-console
+ console.log(`switch checked: ${value}`, event);
+}
+
+export default () => {
+ const [disabled, setDisabled] = useState(false);
+
+ const toggle = () => {
+ setDisabled((prev) => !prev);
+ }
+
+ return (
+