diff --git a/.cid/tiny-opentiny-vue.yml b/.cid/tiny-opentiny-vue.yml
new file mode 100644
index 000000000..dcc07d55f
--- /dev/null
+++ b/.cid/tiny-opentiny-vue.yml
@@ -0,0 +1,23 @@
+version: 0.1.0
+name: tiny-opentiny-vue
+language: nodejs
+
+# 构建工具
+dependencies:
+ base:
+ nodejs: best
+
+# 构建机器
+machine:
+ standard:
+ euler:
+ - default
+
+# 构建脚本
+scripts:
+ - sh build.sh
+
+# 构建产物
+artifacts:
+ npm_deploy:
+ - config_path: ./dist/vue/package.json
diff --git a/.codecheck/check.yml b/.codecheck/check.yml
new file mode 100644
index 000000000..d88ba8576
--- /dev/null
+++ b/.codecheck/check.yml
@@ -0,0 +1,9 @@
+version: 2.0
+
+steps:
+ pre_codecheck:
+ - checkout
+
+tool_params:
+ secsolar:
+ source_dir: ./
\ No newline at end of file
diff --git a/.eslintignore b/.eslintignore
new file mode 100644
index 000000000..5f3b9072a
--- /dev/null
+++ b/.eslintignore
@@ -0,0 +1,2 @@
+dist
+runtime
\ No newline at end of file
diff --git a/.eslintrc b/.eslintrc
new file mode 100644
index 000000000..81bd121cf
--- /dev/null
+++ b/.eslintrc
@@ -0,0 +1,94 @@
+{
+ "root": true,
+ "env": {
+ "es6": true,
+ "browser": true,
+ "node": true,
+ "jest": true
+ },
+ "extends": ["eslint:recommended", "plugin:vue/vue3-essential"],
+ "parserOptions": {
+ "parser": ["vue-eslint-parser", "@babel/eslint-parser"],
+ "requireConfigFile": false,
+ "sourceType": "module",
+ "ecmaVersion": "latest",
+ "ecmaFeatures": {
+ "jsx": true
+ }
+ },
+ "rules": {
+ "no-debugger": "off",
+ "no-var": "error",
+ "no-tabs": "error",
+ "no-trailing-spaces": "error",
+ "no-mixed-spaces-and-tabs": "error",
+ "no-undef": "error",
+ "no-extra-semi": "error",
+ "no-empty": "error",
+ "no-console": "off",
+ "semi": [2, "never"],
+ "max-len": [
+ "warn",
+ {
+ "code": 160
+ }
+ ],
+ "function-paren-newline": ["off"],
+ "object-property-newline": [
+ "warn",
+ {
+ "allowAllPropertiesOnSameLine": true
+ }
+ ],
+ "newline-per-chained-call": [
+ "warn",
+ {
+ "ignoreChainWithDepth": 4
+ }
+ ],
+ "comma-dangle": "off",
+ "semi-style": ["warn", "last"],
+ "max-lines": ["error", 2400],
+ "max-lines-per-function": ["error", 200],
+ "complexity": ["error", 26],
+ "max-depth": ["warn", 4],
+ "max-nested-callbacks": ["error", 4],
+ "no-multi-assign": "off",
+ "no-undef-init": "warn",
+ "no-shadow": "off",
+ "max-params": ["warn", 5],
+ "no-param-reassign": "off",
+ "prefer-rest-params": "off",
+ "prefer-arrow-callback": "error",
+ "arrow-body-style": ["warn", "as-needed"],
+ "no-this-before-super": "error",
+ "quotes": ["warn", "single"],
+ "prefer-template": "off",
+ "no-multi-str": "warn",
+ "object-shorthand": "warn",
+ "dot-notation": "error",
+ "accessor-pairs": "error",
+ "no-prototype-builtins": "error",
+ "guard-for-in": "error",
+ "eqeqeq": "off",
+ "no-fallthrough": "error",
+ "no-case-declarations": "error",
+ "no-unsafe-finally": "error",
+ "no-eval": "error",
+ "no-with": "error",
+ "no-implicit-coercion": [
+ "error",
+ {
+ "allow": ["!!", "~"]
+ }
+ ],
+ "vue/multi-word-component-names": "off",
+ "vue/valid-v-slot": "off",
+ "vue/no-deprecated-v-on-native-modifier": "off",
+ "vue/no-reserved-component-names": "off",
+ "vue/no-deprecated-dollar-listeners-api": "off",
+ "vue/no-deprecated-slot-attribute": "off",
+ "vue/no-use-computed-property-like-method": "off",
+ "vue/no-mutating-props": "off"
+ }
+}
diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml
new file mode 100644
index 000000000..14d5e353f
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug-report.yml
@@ -0,0 +1,61 @@
+name: '🐛 Bug report'
+description: Create a report to help us improve Tiny Vue
+title: '🐛 [Bug]: '
+labels: ['🐛 bug']
+body:
+ - type: markdown
+ attributes:
+ value: |
+ Please fill out the following carefully in order to better fix the problem.
+ - type: input
+ id: tiny-vue-version
+ attributes:
+ label: Version
+ description: |
+ ### **Check if the issue is reproducible with the latest stable version.**
+ You can use the command `npm ls @opentiny/vue` to view it
+ placeholder: latest
+ validations:
+ required: true
+ - type: input
+ id: vue-version
+ attributes:
+ label: Vue Version
+ placeholder: latest
+ validations:
+ required: true
+ - type: textarea
+ id: minimal-repo
+ attributes:
+ label: Link to minimal reproduction
+ description: |
+ **Provide a streamlined CodePen / CodeSandbox or GitHub repository link as much as possible. Please don't fill in a link randomly, it will only close your issue directly.**
+ placeholder: Please Input
+ validations:
+ required: true
+ - type: textarea
+ id: reproduce
+ attributes:
+ label: Step to reproduce
+ description: |
+ **After the replay is turned on, what actions do we need to perform to make the bug appear? Simple and clear steps can help us locate the problem more quickly. Please clearly describe the steps of reproducing the issue. Issues without clear reproducing steps will not be repaired. If the issue marked with 'need reproduction' does not provide relevant steps within 7 days, it will be closed directly.**
+ placeholder: Please Input
+ validations:
+ required: true
+ - type: textarea
+ id: expected
+ attributes:
+ label: What is expected
+ placeholder: Please Input
+ - type: textarea
+ id: actually
+ attributes:
+ label: What is actually happening
+ placeholder: Please Input
+ - type: textarea
+ id: additional-comments
+ attributes:
+ label: Any additional comments (optional)
+ description: |
+ **Some background / context of how you ran into this bug.**
+ placeholder: Please Input
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 000000000..fc5eed19c
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1,5 @@
+blank_issues_enabled: true
+contact_links:
+ - name: Questions or need help
+ url: https://github.com/opentiny/ui-vue/discussions
+ about: Add this WeChat(opentiny), we will invite you to the WeChat discussion group later.
diff --git a/.github/ISSUE_TEMPLATE/feature-request.yml b/.github/ISSUE_TEMPLATE/feature-request.yml
new file mode 100644
index 000000000..536cd0c05
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature-request.yml
@@ -0,0 +1,23 @@
+name: ✨ Feature Request
+description: Propose new features to @opentiny/vue to improve it.
+title: '✨ [Feature]: '
+labels: ['✨ feature']
+body:
+ - type: textarea
+ id: feature-solve
+ attributes:
+ label: What problem does this feature solve
+ description: |
+ Explain your use case, context, and rationale behind this feature request. More importantly, what is the end user experience you are trying to build that led to the need for this feature?
+ placeholder: Please Input
+ validations:
+ required: true
+ - type: textarea
+ id: feature-api
+ attributes:
+ label: What does the proposed API look like
+ description: |
+ Describe how you propose to solve the problem and provide code samples of how the API would work once implemented. Note that you can use Markdown to format your code blocks.
+ placeholder: Please Input
+ validations:
+ required: true
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 000000000..9901372bf
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,41 @@
+# PR
+
+## PR Checklist
+
+Please check if your PR fulfills the following requirements:
+
+- [ ] The commit message follows our [Commit Message Guidelines](https://github.com/opentiny/ui-vue/blob/main/CONTRIBUTING.md)
+- [ ] Tests for the changes have been added (for bug fixes / features)
+- [ ] Docs have been added / updated (for bug fixes / features)
+
+## PR Type
+
+What kind of change does this PR introduce?
+
+
+
+- [ ] Bugfix
+- [ ] Feature
+- [ ] Code style update (formatting, local variables)
+- [ ] Refactoring (no functional changes, no api changes)
+- [ ] Build related changes
+- [ ] CI related changes
+- [ ] Documentation content changes
+- [ ] Other... Please describe:
+
+## What is the current behavior?
+
+
+
+Issue Number: N/A
+
+## What is the new behavior?
+
+## Does this PR introduce a breaking change?
+
+- [ ] Yes
+- [ ] No
+
+
+
+## Other information
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 000000000..b3e1a5a99
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,41 @@
+.DS_Store
+node_modules
+dist/
+allDist/
+packages/**/runtime/
+coverage/
+
+/packages/base.js
+/packages/chart.js
+/packages/core.js
+/packages/index.js
+/packages/pc.js
+/packages/mobile.js
+
+# local env
+.env.local
+.env.*.local
+
+# Log files
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# Editor directories and files
+.idea
+.history
+.vscode
+.cloudbuild
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
+*.log
+*.stackdump
+
+yarn.lock
+package-lock.json
+
+tgzs
+*.tgz
diff --git a/.husky/commit-msg b/.husky/commit-msg
new file mode 100644
index 000000000..d71a03b9f
--- /dev/null
+++ b/.husky/commit-msg
@@ -0,0 +1,4 @@
+#!/bin/sh
+. "$(dirname "$0")/_/husky.sh"
+
+yarn commitlint --edit $1
diff --git a/.husky/pre-commit b/.husky/pre-commit
new file mode 100644
index 000000000..36af21989
--- /dev/null
+++ b/.husky/pre-commit
@@ -0,0 +1,4 @@
+#!/bin/sh
+. "$(dirname "$0")/_/husky.sh"
+
+npx lint-staged
diff --git a/.prettierignore b/.prettierignore
new file mode 100644
index 000000000..68ef920d1
--- /dev/null
+++ b/.prettierignore
@@ -0,0 +1,3 @@
+# Except myapp folder:
+dist/
+public/
\ No newline at end of file
diff --git a/.prettierrc b/.prettierrc
new file mode 100644
index 000000000..08c3f2656
--- /dev/null
+++ b/.prettierrc
@@ -0,0 +1,4 @@
+semi: false
+singleQuote: true
+printWidth: 160
+trailingComma: none
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 000000000..2e40d967e
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,20 @@
+# 更新日志
+
+## v2.0.0/v3.0.0
+
+`2022/09/15`
+
+### 📢破坏性变更
+
+无
+
+### ✨新特性
+
+- Search 组件:增加 input 事件
+- Select 组件:增加 scroll 事件
+
+### 🐞缺陷修复
+
+- Tabs 组件:修复 tab 组件套 tab 组件,内部的 tab 项会显示在外部 tab 上的bug
+- PopEditor 组件:解决弹出框里的查询条件不能输入的问题
+- Cascader 组件:解决点击已选中选项无法关闭选择器的问题
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 000000000..18daa8f34
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,81 @@
+# 贡献指南
+
+很高兴你有意愿参与 TinyVue 开源项目的贡献,参与贡献的形式有很多种,你可以根据自己的特长和兴趣选择其中的一个或多个:
+
+- 报告[新缺陷](https://github.com/opentiny/tiny-vue/issues/new?template=bug-report.yml)
+- 为[已有缺陷](https://github.com/opentiny/tiny-vue/labels/bug)提供更详细的信息,比如补充截图、提供更详细的复现步骤、提供最小可复现demo链接等
+- 提交 Pull requests 修复文档中的错别字或让文档更清晰和完善
+- 添加官方小助手微信 opentiny,加入技术交流群参与讨论
+
+当你亲自使用 TinyVue 组件库,并参与多次以上形式的贡献,对 TinyVue 逐渐熟悉之后,可以尝试做一些更有挑战的事情,比如:
+
+- 修复缺陷,可以先从 [Good-first issue](https://github.com/opentiny/tiny-vue/labels/good%20first%20issue) 开始
+- 实现新特性
+- 完善单元测试
+- 翻译文档
+- 参与代码检视
+
+## 提交 Issue
+
+如果你在使用 TinyVue 组件过程中遇到问题,欢迎给我们提交 Issue,提交 Issue 之前,请先仔细阅读相关的[官方文档](https://opentiny.design),确认这是一个缺陷还是尚未实现的功能。
+
+如果是一个缺陷,创建新 Issue 时选择 [Bug report](https://github.com/opentiny/tiny-vue/issues/new?template=bug-report.yml) 模板,标题遵循 `[componentName]缺陷简述` 的格式,比如:`[select]选择框内容太长展示不下时,希望能支持配置tips提示`。
+
+报告缺陷的 Issue 主要需要填写以下信息:
+- tiny-vue 和 vue 的版本号
+- 缺陷的表现,可截图辅助说明,如果有报错可贴上报错信息
+- 缺陷的复现步骤,最好能提供一个最小可复现 demo 链接
+
+如果是一个新特性,则选择 [Feature request](https://github.com/opentiny/tiny-vue/issues/new?template=feature-request.yml) 模板,标题遵循 `[componentName]新特性简述` 的格式,比如:`[select]过滤功能中,选中的选项退格删除后,无法再次选中该选项`。
+
+新特性的 Issue 主要需要填写以下信息:
+- 该特性主要解决用户的什么问题
+- 该特性的 api 是什么样的
+
+## 提交 PR
+
+提交 PR 之前,请先确保你提交的内容是符合 TinyVue 整体规划的,一般已经标记为 [bug](https://github.com/opentiny/tiny-vue/labels/bug) 的 Issue 是鼓励提交 PR 的,如果你不是很确定,可以创建一个 [Discussion](https://github.com/opentiny/tiny-vue/discussions) 进行讨论。
+
+本地启动步骤:
+
+- 点击 [TinyVue](https://github.com/opentiny/tiny-vue) 代码仓库右上角的 Fork 按钮,将上游仓库 Fork 到个人仓库
+- Clone 个人仓库到本地
+- 在 Tiny Vue 根目录下运行 npm i, 安装 node 依赖
+- 运行 npm run dev:vue3,启动组件库网站
+- 打开浏览器访问:[http://127.0.0.1:5173/](http://127.0.0.1:5173/)
+
+```shell
+# username 为用户名,执行前请替换
+git clone git@github.com:username/tiny-vue.git
+cd tiny-vue
+git remote add upstream git@github.com:opentiny/tiny-vue.git
+npm i
+
+# 启动 Vue3 项目
+npm run dev:vue3
+
+# 启动 Vue2 项目
+npm run dev:vue2
+```
+
+提交 PR 的步骤:
+
+- 请确保你已经完成本地启动中的步骤,并能正常访问:[http://127.0.0.1:5173/](http://127.0.0.1:5173/)
+- 创建新分支 `git checkout -b username/feature1`,分支名字建议为 `username/feat-xxx` / `username/fix-xxx`
+- 本地编码
+- 遵循 Commit Message Format 规范进行提交,不符合提交规范的 PR 将不会被合并
+- 提交到远程仓库:git push origin branchName
+- (可选)同步上游仓库 dev 分支最新代码:git pull upstream dev
+- 打开 TinyVue 代码仓库的 [Pull requests](https://github.com/opentiny/tiny-vue/pulls) 链接,点击 New pull request 按钮提交 PR
+- 项目 Committer 进行 Code Review,并提出意见
+- PR 作者根据意见调整代码,请注意一个分支发起了 PR 后,后续的 commit 会自动同步,无需重新提交 PR
+- 项目管理员合并 PR
+
+贡献流程结束,感谢你的贡献!
+
+## 加入开源社区
+
+如果你对我们的开源项目感兴趣,欢迎通过以下方式加入我们的开源社区。
+
+- 添加官方小助手微信:opentiny,加入我们的技术交流群
+- 加入邮件列表:opentiny@googlegroups.com
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 000000000..0c4793709
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2022 - present TinyVue Authors.
+Copyright (c) 2022 - present Huawei Cloud Computing Technologies Co., Ltd.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
index 68abfe4e5..4bda22bdb 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,75 @@
-# tiny-vue
+