From 4e504108926284823351261999e7ed8fe6e9465b Mon Sep 17 00:00:00 2001 From: yatessss <897969073@qq.com> Date: Fri, 7 Apr 2023 18:18:04 +0800 Subject: [PATCH] init repo --- .babel.config.js | 4 + .editorconfig | 13 + .eslintrc.js | 75 ++ .gitmodules | 3 + .lintstagedrc.json | 4 + .npmignore | 3 + .prettierrc.js | 39 + .watchmanconfig | 1 + CHANGELOG.md | 6 + DEVELOP_GUIDE.md | 149 ++++ README.md | 28 + example/.bundle/config | 2 + example/.node-version | 1 + example/.ruby-version | 1 + example/.watchmanconfig | 1 + example/Gemfile | 6 + example/__tests__/App-test.tsx | 14 + example/android/app/build.gradle | 170 +++++ example/android/app/debug.keystore | Bin 0 -> 2257 bytes example/android/app/proguard-rules.pro | 10 + .../android/app/src/debug/AndroidManifest.xml | 13 + .../java/com/example/ReactNativeFlipper.java | 75 ++ .../android/app/src/main/AndroidManifest.xml | 25 + .../main/java/com/example/MainActivity.java | 35 + .../java/com/example/MainApplication.java | 62 ++ .../res/drawable/rn_edit_text_material.xml | 36 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3056 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 5024 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2096 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 2858 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4569 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 7098 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 6464 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 10676 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 9250 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 15523 bytes .../app/src/main/res/values/strings.xml | 3 + .../app/src/main/res/values/styles.xml | 9 + .../java/com/example/ReactNativeFlipper.java | 20 + example/android/build.gradle | 21 + example/android/gradle.properties | 44 ++ .../android/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59821 bytes .../gradle/wrapper/gradle-wrapper.properties | 5 + example/android/gradlew | 234 ++++++ example/android/gradlew.bat | 89 +++ example/android/settings.gradle | 4 + example/app.json | 4 + example/babel.config.js | 25 + example/craco.config.js | 164 ++++ example/index.js | 9 + example/index.web.js | 6 + example/ios/.xcode.env | 11 + example/ios/Podfile | 60 ++ example/ios/Podfile.lock | 654 ++++++++++++++++ example/ios/example.xcodeproj/project.pbxproj | 704 ++++++++++++++++++ .../xcshareddata/xcschemes/example.xcscheme | 88 +++ .../contents.xcworkspacedata | 10 + example/ios/example/AppDelegate.h | 6 + example/ios/example/AppDelegate.mm | 36 + .../AppIcon.appiconset/Contents.json | 53 ++ .../ios/example/Images.xcassets/Contents.json | 6 + example/ios/example/Info.plist | 55 ++ example/ios/example/LaunchScreen.storyboard | 47 ++ example/ios/example/main.m | 10 + example/ios/exampleTests/Info.plist | 24 + example/ios/exampleTests/exampleTests.m | 66 ++ example/metro.config.js | 35 + example/package.json | 57 ++ example/scripts/alias.js | 29 + example/src/App.tsx | 35 + example/src/Test.tsx | 18 + example/src/base-config.ts | 31 + example/src/components/CodeSpace.tsx | 7 + example/src/components/Element.tsx | 32 + example/src/components/Section.tsx | 7 + example/src/components/index.ts | 3 + example/tsconfig.json | 23 + example/web/public/favicon.ico | Bin 0 -> 16958 bytes example/web/public/index.html | 46 ++ jest.config.js | 4 + package.json | 75 ++ scripts/githook/commit-msg.js | 28 + scripts/githook/pre-push.js | 11 + site/.env.intranet | 1 + site/doc/getting-started.md | 89 +++ site/index.html | 28 + site/mobile.html | 30 + site/mobile/App.jsx | 60 ++ site/mobile/components/DemoBlock.jsx | 17 + site/mobile/components/DemoHeader.jsx | 16 + site/mobile/components/Header.jsx | 17 + site/mobile/components/style/index.less | 15 + site/mobile/main.jsx | 15 + site/mobile/mobile.config.js | 216 ++++++ site/mobile/utils.js | 17 + site/package.json | 42 ++ site/plugin-rn-to-md/index.js | 254 +++++++ site/plugin-tdoc/demo.js | 38 + site/plugin-tdoc/index.js | 26 + site/plugin-tdoc/md-to-react.js | 220 ++++++ site/plugin-tdoc/transforms.js | 56 ++ site/public/apple-touch-icon.png | Bin 0 -> 16077 bytes site/public/favicon.ico | Bin 0 -> 16958 bytes site/public/logo.svg | 41 + site/public/pwa-192x192.png | Bin 0 -> 17924 bytes site/public/pwa-512x512.png | Bin 0 -> 103459 bytes site/public/sw.js | 7 + site/pwaConfig.js | 22 + site/scripts/move-example.js | 26 + site/style/mobile/demo.less | 45 ++ site/style/mobile/index.less | 25 + site/style/vars.less | 125 ++++ site/vite.config.js | 88 +++ site/web/App.jsx | 132 ++++ site/web/Demo.jsx | 42 ++ site/web/main.jsx | 21 + site/web/site.config.js | 379 ++++++++++ site/web/utils.js | 21 + src/components/Base/WrapperComponent.tsx | 82 ++ src/components/Base/index.demo.tsx | 38 + src/components/Base/index.tsx | 20 + src/components/Button/_example/base.tsx | 41 + src/components/Button/_example/index.tsx | 113 +++ src/components/Button/button.md | 22 + src/components/Button/index.demo.tsx | 41 + src/components/Button/index.tsx | 231 ++++++ .../Touchable/TouchableHighlight.tsx | 13 + src/components/Touchable/TouchableOpacity.tsx | 13 + src/components/Touchable/index.demo.tsx | 30 + src/components/Touchable/index.tsx | 28 + src/components/Touchable/types.ts | 24 + src/components/index.ts | 2 + src/theme/ThemeContext.ts | 31 + src/theme/ThemeProvider.tsx | 30 + src/theme/common/atom.ts | 227 ++++++ src/theme/common/dimensions.ts | 22 + src/theme/common/fonts.ts | 18 + src/theme/common/spacers.ts | 20 + src/theme/dark/atom.ts | 181 +++++ src/theme/dark/colors.ts | 94 +++ src/theme/index.ts | 7 + src/theme/light/atom.ts | 182 +++++ src/theme/light/colors.ts | 94 +++ src/theme/themes.ts | 47 ++ src/theme/types.ts | 162 ++++ tsconfig.json | 30 + 146 files changed, 7658 insertions(+) create mode 100644 .babel.config.js create mode 100644 .editorconfig create mode 100644 .eslintrc.js create mode 100644 .gitmodules create mode 100644 .lintstagedrc.json create mode 100644 .npmignore create mode 100644 .prettierrc.js create mode 100644 .watchmanconfig create mode 100644 CHANGELOG.md create mode 100644 DEVELOP_GUIDE.md create mode 100644 README.md create mode 100644 example/.bundle/config create mode 100644 example/.node-version create mode 100644 example/.ruby-version create mode 100644 example/.watchmanconfig create mode 100644 example/Gemfile create mode 100644 example/__tests__/App-test.tsx create mode 100644 example/android/app/build.gradle create mode 100644 example/android/app/debug.keystore create mode 100644 example/android/app/proguard-rules.pro create mode 100644 example/android/app/src/debug/AndroidManifest.xml create mode 100644 example/android/app/src/debug/java/com/example/ReactNativeFlipper.java create mode 100644 example/android/app/src/main/AndroidManifest.xml create mode 100644 example/android/app/src/main/java/com/example/MainActivity.java create mode 100644 example/android/app/src/main/java/com/example/MainApplication.java create mode 100644 example/android/app/src/main/res/drawable/rn_edit_text_material.xml create mode 100644 example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 example/android/app/src/main/res/values/strings.xml create mode 100644 example/android/app/src/main/res/values/styles.xml create mode 100644 example/android/app/src/release/java/com/example/ReactNativeFlipper.java create mode 100644 example/android/build.gradle create mode 100644 example/android/gradle.properties create mode 100644 example/android/gradle/wrapper/gradle-wrapper.jar create mode 100644 example/android/gradle/wrapper/gradle-wrapper.properties create mode 100755 example/android/gradlew create mode 100644 example/android/gradlew.bat create mode 100644 example/android/settings.gradle create mode 100644 example/app.json create mode 100644 example/babel.config.js create mode 100644 example/craco.config.js create mode 100644 example/index.js create mode 100644 example/index.web.js create mode 100644 example/ios/.xcode.env create mode 100644 example/ios/Podfile create mode 100644 example/ios/Podfile.lock create mode 100644 example/ios/example.xcodeproj/project.pbxproj create mode 100644 example/ios/example.xcodeproj/xcshareddata/xcschemes/example.xcscheme create mode 100644 example/ios/example.xcworkspace/contents.xcworkspacedata create mode 100644 example/ios/example/AppDelegate.h create mode 100644 example/ios/example/AppDelegate.mm create mode 100644 example/ios/example/Images.xcassets/AppIcon.appiconset/Contents.json create mode 100644 example/ios/example/Images.xcassets/Contents.json create mode 100644 example/ios/example/Info.plist create mode 100644 example/ios/example/LaunchScreen.storyboard create mode 100644 example/ios/example/main.m create mode 100644 example/ios/exampleTests/Info.plist create mode 100644 example/ios/exampleTests/exampleTests.m create mode 100644 example/metro.config.js create mode 100644 example/package.json create mode 100644 example/scripts/alias.js create mode 100644 example/src/App.tsx create mode 100644 example/src/Test.tsx create mode 100644 example/src/base-config.ts create mode 100644 example/src/components/CodeSpace.tsx create mode 100644 example/src/components/Element.tsx create mode 100644 example/src/components/Section.tsx create mode 100644 example/src/components/index.ts create mode 100644 example/tsconfig.json create mode 100644 example/web/public/favicon.ico create mode 100644 example/web/public/index.html create mode 100644 jest.config.js create mode 100644 package.json create mode 100644 scripts/githook/commit-msg.js create mode 100644 scripts/githook/pre-push.js create mode 100644 site/.env.intranet create mode 100644 site/doc/getting-started.md create mode 100644 site/index.html create mode 100644 site/mobile.html create mode 100644 site/mobile/App.jsx create mode 100644 site/mobile/components/DemoBlock.jsx create mode 100644 site/mobile/components/DemoHeader.jsx create mode 100644 site/mobile/components/Header.jsx create mode 100644 site/mobile/components/style/index.less create mode 100644 site/mobile/main.jsx create mode 100644 site/mobile/mobile.config.js create mode 100644 site/mobile/utils.js create mode 100644 site/package.json create mode 100644 site/plugin-rn-to-md/index.js create mode 100644 site/plugin-tdoc/demo.js create mode 100644 site/plugin-tdoc/index.js create mode 100644 site/plugin-tdoc/md-to-react.js create mode 100644 site/plugin-tdoc/transforms.js create mode 100644 site/public/apple-touch-icon.png create mode 100644 site/public/favicon.ico create mode 100644 site/public/logo.svg create mode 100644 site/public/pwa-192x192.png create mode 100644 site/public/pwa-512x512.png create mode 100644 site/public/sw.js create mode 100644 site/pwaConfig.js create mode 100644 site/scripts/move-example.js create mode 100644 site/style/mobile/demo.less create mode 100644 site/style/mobile/index.less create mode 100644 site/style/vars.less create mode 100644 site/vite.config.js create mode 100644 site/web/App.jsx create mode 100644 site/web/Demo.jsx create mode 100644 site/web/main.jsx create mode 100644 site/web/site.config.js create mode 100644 site/web/utils.js create mode 100644 src/components/Base/WrapperComponent.tsx create mode 100644 src/components/Base/index.demo.tsx create mode 100644 src/components/Base/index.tsx create mode 100644 src/components/Button/_example/base.tsx create mode 100644 src/components/Button/_example/index.tsx create mode 100644 src/components/Button/button.md create mode 100644 src/components/Button/index.demo.tsx create mode 100644 src/components/Button/index.tsx create mode 100644 src/components/Touchable/TouchableHighlight.tsx create mode 100644 src/components/Touchable/TouchableOpacity.tsx create mode 100644 src/components/Touchable/index.demo.tsx create mode 100644 src/components/Touchable/index.tsx create mode 100644 src/components/Touchable/types.ts create mode 100644 src/components/index.ts create mode 100644 src/theme/ThemeContext.ts create mode 100644 src/theme/ThemeProvider.tsx create mode 100644 src/theme/common/atom.ts create mode 100644 src/theme/common/dimensions.ts create mode 100644 src/theme/common/fonts.ts create mode 100644 src/theme/common/spacers.ts create mode 100644 src/theme/dark/atom.ts create mode 100644 src/theme/dark/colors.ts create mode 100644 src/theme/index.ts create mode 100644 src/theme/light/atom.ts create mode 100644 src/theme/light/colors.ts create mode 100644 src/theme/themes.ts create mode 100644 src/theme/types.ts create mode 100644 tsconfig.json diff --git a/.babel.config.js b/.babel.config.js new file mode 100644 index 0000000..4265acc --- /dev/null +++ b/.babel.config.js @@ -0,0 +1,4 @@ +module.exports = { + presets: ['@babel/preset-env', '@babel/preset-react', '@babel/preset-typescript'], + plugins: ['react-native-reanimated/plugin', '@babel/plugin-transform-runtime'], +}; diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..b4e3016 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,13 @@ +# Editor configuration, see http://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +max_line_length = off +trim_trailing_whitespace = false \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..092177e --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,75 @@ +module.exports = { + extends: [ + 'airbnb-base', + 'prettier', // eslint-config-prettier 处理冲突 + '@react-native-community', + ], + parser: '@typescript-eslint/parser', + env: { + browser: true, + node: true, + jest: true, + }, + settings: { + react: { + pragma: 'React', + version: 'detect', + }, + }, + parserOptions: { + ecmaVersion: 2019, + sourceType: 'module', + ecmaFeatures: { + jsx: true, + }, + }, + rules: { + 'no-use-before-define': 'off', + '@typescript-eslint/explicit-module-boundary-types': 'off', + '@typescript-eslint/ban-types': 'off', + '@typescript-eslint/explicit-function-return-type': 'off', + '@typescript-eslint/indent': ['off', 2], + '@typescript-eslint/ban-ts-comment': 'off', + '@typescript-eslint/camelcase': 'off', + '@typescript-eslint/no-empty-interface': 'error', // codecc + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-use-before-define': ['error', { functions: false }], + '@typescript-eslint/no-var-requires': 'off', + '@typescript-eslint/no-unused-vars': 'error', // codecc + 'import/order': 'error', + 'import/extensions': 'off', + 'import/no-named-as-default': 'off', + 'import/prefer-default-export': 'off', + 'import/no-extraneous-dependencies': 'off', + 'import/no-cycle': 'off', // TODO: turn on this rule later + 'import/no-unresolved': 'off', // TODO: turn on this rule later + 'react/display-name': 'off', + 'react/react-in-jsx-scope': 'off', + 'react-hooks/exhaustive-deps': 'warn', + 'react-hooks/rules-of-hooks': 'error', + 'react-native/no-inline-styles': 'off', + 'react/prop-types': 'off', + 'max-len': 'off', + 'no-shadow': 'off', + 'no-console': 'off', + 'no-throw-literal': 'off', + 'no-unused-expressions': 'off', + 'no-bitwise': 'off', + 'no-useless-return': 'off', + 'no-plusplus': [ + 'error', + { + allowForLoopAfterthoughts: true, + }, + ], + 'no-continue': 'off', + 'no-return-assign': 'off', + 'no-restricted-syntax': 'off', + 'no-restricted-globals': 'off', + 'no-unneeded-ternary': 'off', + 'eol-last': 'error', // codecc + 'func-names': 'off', + 'consistent-return': 'off', + 'default-case': 'off', + }, +}; diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..62aa885 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "src/_common"] + path = src/_common + url = https://github.com/TDesignOteam/tdesign-common.git diff --git a/.lintstagedrc.json b/.lintstagedrc.json new file mode 100644 index 0000000..dd9d0dd --- /dev/null +++ b/.lintstagedrc.json @@ -0,0 +1,4 @@ +{ + "*.{js,jsx,ts,tsx}": "eslint --cache --fix", + "*.{js,tx,tsx,sass,less,css}": "prettier --write" +} \ No newline at end of file diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000..ade8d90 --- /dev/null +++ b/.npmignore @@ -0,0 +1,3 @@ +example/ +site/ +**/.* \ No newline at end of file diff --git a/.prettierrc.js b/.prettierrc.js new file mode 100644 index 0000000..5e92232 --- /dev/null +++ b/.prettierrc.js @@ -0,0 +1,39 @@ +module.exports = { + // 一行最多 120 字符 + printWidth: 120, + // 使用 2 个空格缩进 + tabWidth: 2, + // 不使用缩进符,而使用空格 + useTabs: false, + // 行尾需要有分号 + semi: true, + // 使用单引号 + singleQuote: true, + // 对象的 key 仅在必要时用引号 + quoteProps: 'as-needed', + // jsx 不使用单引号,而使用双引号 + jsxSingleQuote: false, + // 末尾需要有逗号 + trailingComma: 'all', + // 大括号内的首尾需要空格 + bracketSpacing: true, + // jsx 标签的反尖括号需要换行 + jsxBracketSameLine: false, + // 箭头函数,只有一个参数的时候,也需要括号 + arrowParens: 'always', + // 每个文件格式化的范围是文件的全部内容 + rangeStart: 0, + rangeEnd: Infinity, + // 不需要写文件开头的 @prettier + requirePragma: false, + // 不需要自动在文件开头插入 @prettier + insertPragma: false, + // 使用默认的折行标准 + proseWrap: 'preserve', + // 根据显示样式决定 html 要不要折行 + htmlWhitespaceSensitivity: 'css', + // vue 文件中的 script 和 style 内不用缩进 + vueIndentScriptAndStyle: false, + // 换行符使用 lf + endOfLine: 'lf', +}; diff --git a/.watchmanconfig b/.watchmanconfig new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/.watchmanconfig @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..c38d010 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,6 @@ +--- +title: 更新日志 +docClass: timeline +toc: false +spline: explain +--- diff --git a/DEVELOP_GUIDE.md b/DEVELOP_GUIDE.md new file mode 100644 index 0000000..5fb1f14 --- /dev/null +++ b/DEVELOP_GUIDE.md @@ -0,0 +1,149 @@ +# 参与贡献 + +非常感谢你对 TDesign 的关注,如果你想为组件库或其他产品贡献一份力量,请先了解下以下内容。 + +## 开启 issue + +如果你想要贡献一个新特性,请在实际写代码前先开一个 issue 与社区里的小伙伴一起讨论必要性及实现方案。 + +## Github flow 贡献流程 + +- 请将本项目 fork & clone 至本地 +- 创建 feature/fix 分支 +- 开发过程中可以使用 `git fetch` 或 `git rebase` 来同步上游分支代码 +- 提交代码到 forked 仓库,commit message 撰写请参照 [Angular Commits 规范](https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#commits) +- 发起 pr +- 会有 PMC 同学来 CR 本次提交的代码,请及时关注 CR 评论通知信息 +- CR 通过后会合并进入 develop 分支,等待周迭代或紧急 patch 版本发布 npm + +## 目录结构 +``` +├── CHANGELOG.md 更新日志 +├── DEVELOP_GUIDE.md 开发者readme +├── README.md readme +├── example 演示项目运行目录 +├── scripts 通用脚本目录 +├── site 站点目录 +├── src 源码目录 +``` +## 开发 + +```bash +git clone fork仓库代码 +cd tdesign-react-native +修改.gitmodules子仓库为自己fork的仓库,分支main +git submodule sync +git submodule init +git submodule update + +# 开发预览 +cd .. +yarn +cd example && yarn web + +``` + +## 编写demo + +为了demo和文档的对应,编写demo时需要使用特定格式及组件进行编写,便于自动提取demo生成文档。 + +每个组件对应demo应在该组件的_example文件夹下,可以分文件编写demo,但应以index文件作为入口进行汇总。 + +`example/src/components`目录下提供以下组件: + +``` +export { CodeSpace } from './CodeSpace'; +export { Section } from './Section'; +export { H3, H4, H5, P } from './Element'; + +Section: 每部分demo容器 +CodeSpace: 引用的demo组件的容器 +H3, H4, H5, P: 文字说明内容组件 +``` + +例如需要根据Button不同属性去编写示例: + +```jsx +// index.tsx + +// 不同尺寸 +const Demo1 = () => { + return <> +