diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..9d08a1a
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,9 @@
+root = true
+
+[*]
+charset = utf-8
+indent_style = space
+indent_size = 2
+end_of_line = lf
+insert_final_newline = true
+trim_trailing_whitespace = true
diff --git a/.eslintrc.js b/.eslintrc.js
new file mode 100644
index 0000000..adcdf4b
--- /dev/null
+++ b/.eslintrc.js
@@ -0,0 +1,69 @@
+// http://eslint.org/docs/user-guide/configuring
+
+module.exports = {
+ root: true,
+ parserOptions: {
+ parser: 'babel-eslint',
+ sourceType: 'module'
+ },
+ extends: [
+ // https://github.com/vuejs/eslint-plugin-vue#bulb-rules
+ 'plugin:vue/essential',
+ 'plugin:vue/recommended',
+ 'plugin:vue/strongly-recommended',
+ // https://github.com/standard/standard/blob/master/docs/RULES-en.md
+ 'standard',
+ 'prettier/standard'
+ ],
+ // required to lint *.vue files
+ plugins: ['vue'],
+ // add your custom rules here
+ rules: {
+ // allow paren-less arrow functions
+ 'arrow-parens': 0,
+ // allow async-await
+ 'generator-star-spacing': 0,
+ // allow debugger during development
+ 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
+ 'no-multi-spaces': ['error', { ignoreEOLComments: true }],
+ 'no-template-curly-in-string': 0,
+ // to many false positives
+ 'vue/no-side-effects-in-computed-properties': 0,
+ // fix unused var error for JSX custom tags
+ 'vue/jsx-uses-vars': 2,
+ 'vue/require-default-prop': 0,
+ 'vue/name-property-casing': ['error', 'kebab-case'],
+ 'vue/component-name-in-template-casing': ['error', 'kebab-case'],
+ 'vue/html-indent': [
+ 'error',
+ 2,
+ {
+ attribute: 1,
+ baseIndent: 0,
+ closeBracket: 0,
+ alignAttributesVertically: true
+ }
+ ],
+ 'vue/html-self-closing': [
+ 'error',
+ {
+ html: {
+ void: 'never',
+ normal: 'always',
+ component: 'always'
+ },
+ svg: 'always',
+ math: 'always'
+ }
+ ],
+ 'vue/html-closing-bracket-spacing': [
+ 'error',
+ {
+ startTag: 'never',
+ endTag: 'never',
+ selfClosingTag: 'never'
+ }
+ ],
+ 'vue/no-v-html': 0
+ }
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..726398f
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,12 @@
+node_modules
+npm-debug.log
+one/build/deps.json
+.DS_Store
+.nuxt
+.vscode
+pages
+components/demos
+dist
+logs
+assets/data
+static/images/mermaid
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..ba1f8f6
--- /dev/null
+++ b/README.md
@@ -0,0 +1,124 @@
+# veui/docs
+
+> VEUI 文档。
+
+## 本地安装
+
+`git clone` 到本地后,在项目根目录下运行:
+
+```shell
+npm i
+npm run dev
+```
+
+后在浏览访问 `http://localhost:3000` 即可。
+
+## 文档编写
+
+开发相关文档位于 `one/docs/development` 下。文档目录结构与网站的目录结构一致,新建 `.md` 文件后需要在 `one/docs/nav.json` 中新建相应的条目,作为目录配置。添加 `sub: true` 将缩进一个层级。
+
+### 组件文档结构
+
+每个组件的文档请按如下顺序编写:
+
+1. 示例
+2. API
+
+ 1. 属性
+ 2. 插槽
+ 3. 作用域插槽
+ 4. 事件
+ 5. 方法
+
+3. 全局配置
+
+ 1. `veui` 中的默认
+ 2. `veui-theme-dls` 中的默认配置
+
+4. 图标名称
+
+另外,如有关联组件请在最开始进行说明。比如:
+
+```md
+:::tip
+`Select` 组件可以内联 [`Option`](./option) 或 [`OptionGroup`](./option-group) 组件使用。
+:::
+```
+
+### 在文档中插入示例
+
+使用 Markdown 的 shortcode 语法,如下:
+
+```md
+[[ demo src="../demo/button.vue"]]
+```
+
+路径为 demo 文件相对于当前文档文件的路径。Demo 文件是一个 Vue 单文件组件,最后会将代码展示到文档中。可以编写多个 `
diff --git a/components/OneDemo.vue b/components/OneDemo.vue
new file mode 100644
index 0000000..c4300ea
--- /dev/null
+++ b/components/OneDemo.vue
@@ -0,0 +1,137 @@
+
+Baidu DLS
+ 返回 DLS
+ \`${namespace}.${key}\`
。
+
+除此以外,还提供了相同参数列表的 `config.defaults()` 方法,区别在于当需要在配置项中写入的键值已经存在,则不会覆盖。
+
+每个组件、指令等支持的全局配置请查看对应组件、指令的详情页。
diff --git a/one/docs/advanced/overlay.md b/one/docs/advanced/overlay.md
new file mode 100644
index 0000000..ca6161c
--- /dev/null
+++ b/one/docs/advanced/overlay.md
@@ -0,0 +1,124 @@
+# 浮层管理
+
+在 VEUI 中,有大量组件使用到了浮层功能:
+
+* 各种类型的弹框:[对话框](../components/dialog)、[警告弹框](../components/alert-box)等;
+* [下拉选择](../components/select);
+* ……
+
+针对这些组件,我们抽离了具备如下功能的浮层模块:
+
+* 能够浮于页面上所有普通元素之上;
+* 能够进行层叠顺序管理;
+* 能够基于指定元素定位。
+
+## 层叠覆盖
+
+为了避免浮层被上层 `overflow: hidden` 的元素意外遮盖,我们将浮层根元素直接置于 `
{ position: `${side}-${align}` }
,`side` 表示浮层根元素位于目标元素哪一边(`top`/`right`/`bottom`/`left`),`align` 表示对齐方式(`start`/`end`)。其中 `side` 是必须的,`align` 不传表示居中。推荐尽量使用简化的配置。
+
+## 样式
+
+由于浮层根元素被手动放置到 `` 元素之下了,要设置浮层内容的样式,就需要给浮层根元素指定 `class`。所有浮层系组件都支持 `overlay-class` 属性,通过该属性为浮层根元素设置 `class`:
+
+```vue
+
+