diff --git a/.dumirc.ts b/.dumirc.ts index 229958b..bb214c5 100644 --- a/.dumirc.ts +++ b/.dumirc.ts @@ -1,12 +1,18 @@ // more config: https://d.umijs.org/config import { defineConfig } from 'dumi'; +const basePath = process.env.GH_PAGES ? '/progress/' : '/'; +const publicPath = basePath; + export default defineConfig({ + outputPath: 'docs-dist', favicons: ['https://avatars0.githubusercontent.com/u/9441414?s=200&v=4'], themeConfig: { name: '@rc-component/progress', logo: 'https://avatars0.githubusercontent.com/u/9441414?s=200&v=4', }, + base: basePath, + publicPath, exportStatic: {}, styles: [ ` diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 33b1999..758659a 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,15 +1,2 @@ -# These are supported funding model platforms - -github: ant-design # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] -patreon: # Replace with a single Patreon username -open_collective: ant-design # Replace with a single Open Collective username -ko_fi: # Replace with a single Ko-fi username -tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel -community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry -liberapay: # Replace with a single Liberapay username -issuehunt: # Replace with a single IssueHunt username -lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry -polar: # Replace with a single Polar username -buy_me_a_coffee: # Replace with a single Buy Me a Coffee username -thanks_dev: # Replace with a single thanks.dev username -custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] +github: ant-design +open_collective: ant-design diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 7c9e2a4..3b730ef 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,20 +1,19 @@ version: 2 updates: -- package-ecosystem: npm - directory: "/" - schedule: - interval: daily - time: "21:00" - open-pull-requests-limit: 10 - ignore: - - dependency-name: "@types/react-dom" - versions: - - 17.0.0 - - 17.0.1 - - 17.0.2 - - dependency-name: "@types/react" - versions: - - 17.0.0 - - 17.0.1 - - 17.0.2 - - 17.0.3 + - package-ecosystem: npm + directory: '/' + schedule: + interval: weekly + day: monday + time: '21:00' + timezone: Asia/Shanghai + open-pull-requests-limit: 10 + + - package-ecosystem: github-actions + directory: '/' + schedule: + interval: weekly + day: monday + time: '21:00' + timezone: Asia/Shanghai + open-pull-requests-limit: 10 diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml new file mode 100644 index 0000000..1c7e7bf --- /dev/null +++ b/.github/workflows/codeql.yml @@ -0,0 +1,43 @@ +name: 'CodeQL' + +on: + push: + branches: ['master'] + pull_request: + branches: ['master'] + schedule: + - cron: '13 8 * * 0' + +jobs: + analyze: + name: Analyze + runs-on: ubuntu-latest + permissions: + actions: read + contents: read + security-events: write + + strategy: + fail-fast: false + matrix: + language: [javascript] + + steps: + - name: Checkout + uses: actions/checkout@v7 + with: + persist-credentials: false + + - name: Initialize CodeQL + uses: github/codeql-action/init@8aad20d150bbac5944a9f9d289da16a4b0d87c1e + with: + languages: ${{ matrix.language }} + queries: +security-and-quality + + - name: Autobuild + uses: github/codeql-action/autobuild@8aad20d150bbac5944a9f9d289da16a4b0d87c1e + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@8aad20d150bbac5944a9f9d289da16a4b0d87c1e + with: + category: '/language:${{ matrix.language }}' diff --git a/.github/workflows/react-component-ci.yml b/.github/workflows/react-component-ci.yml index c2db94c..e2b301b 100644 --- a/.github/workflows/react-component-ci.yml +++ b/.github/workflows/react-component-ci.yml @@ -1,7 +1,10 @@ name: ✅ test on: [push, pull_request] +permissions: + contents: read jobs: test: - uses: react-component/rc-test/.github/workflows/test.yml@main - secrets: inherit + uses: react-component/rc-test/.github/workflows/test-utoo.yml@main + secrets: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/react-doctor.yml b/.github/workflows/react-doctor.yml new file mode 100644 index 0000000..097eb88 --- /dev/null +++ b/.github/workflows/react-doctor.yml @@ -0,0 +1,27 @@ +name: React Doctor + +on: + pull_request: + types: [opened, synchronize, reopened, ready_for_review] + push: + branches: [master] + +permissions: + contents: read + pull-requests: write + issues: write + statuses: write + +concurrency: + group: react-doctor-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +jobs: + react-doctor: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v7 + with: + fetch-depth: 0 + persist-credentials: false + - uses: millionco/react-doctor@0b4f4f4bd248a154e64eb508a48347f71154b3f3 diff --git a/.github/workflows/surge-preview.yml b/.github/workflows/surge-preview.yml new file mode 100644 index 0000000..4c2f17e --- /dev/null +++ b/.github/workflows/surge-preview.yml @@ -0,0 +1,54 @@ +name: Surge Preview + +on: + pull_request: + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number }} + cancel-in-progress: true + +permissions: + contents: read + pull-requests: write + checks: write + +jobs: + preview: + runs-on: ubuntu-latest + concurrency: + group: surge-preview-${{ github.event.pull_request.number }} + cancel-in-progress: true + env: + PREVIEW: true + steps: + - uses: actions/checkout@v7 + with: + persist-credentials: false + - name: Check Surge token + id: surge-token + env: + SURGE_TOKEN: ${{ secrets.SURGE_TOKEN }} + run: | + if [ -n "$SURGE_TOKEN" ]; then + echo "enabled=true" >> "$GITHUB_OUTPUT" + else + echo "enabled=false" >> "$GITHUB_OUTPUT" + fi + - name: Build preview + if: ${{ steps.surge-token.outputs.enabled == 'true' }} + run: | + npm install + npm run build + - uses: afc163/surge-preview@bf90a5a86111f6311ca42f0a5a0f80fb0fb03cec + if: ${{ steps.surge-token.outputs.enabled == 'true' }} + env: + SURGE_TOKEN: ${{ secrets.SURGE_TOKEN }} + with: + surge_token: ${{ env.SURGE_TOKEN }} + github_token: ${{ secrets.GITHUB_TOKEN }} + dist: docs-dist + failOnError: false + setCommitStatus: false + - name: Skip Surge preview + if: ${{ steps.surge-token.outputs.enabled != 'true' }} + run: echo "SURGE_TOKEN is not configured; skip Surge preview." diff --git a/.gitignore b/.gitignore index 005f482..52250a8 100644 --- a/.gitignore +++ b/.gitignore @@ -22,6 +22,7 @@ Thumbs.db node_modules .cache dist +docs-dist assets/**/*.css build lib @@ -38,5 +39,6 @@ pnpm-lock.yaml .dumi/tmp-test .dumi/tmp-production .env.local +.vercel -bun.lockb \ No newline at end of file +bun.lockb diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 0000000..2312dc5 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1 @@ +npx lint-staged diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..c466d87 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,14 @@ +node_modules +coverage +docs-dist +dist +es +lib +.dumi/tmp +.dumi/tmp-production +.vercel +package-lock.json +pnpm-lock.yaml +yarn.lock +bun.lockb +*.log diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..bd0a1f7 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019-present react-component + +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 4b3a400..b846f83 100644 --- a/README.md +++ b/README.md @@ -1,163 +1,115 @@ -# @rc-component/progress +
Part of the Ant Design ecosystem.
📊 Lightweight React line and circle progress indicators with SVG rendering.
-Progress Bar. + +English | 简体中文
-[npm-image]: http://img.shields.io/npm/v/@rc-component/progress.svg?style=flat-square -[npm-url]: http://npmjs.org/package/@rc-component/progress -[github-actions-image]: https://github.com/react-component/progress/workflows/CI/badge.svg -[github-actions-url]: https://github.com/react-component/progress/actions -[circleci-image]: https://img.shields.io/circleci/react-component/progress/master?style=flat-square -[circleci-url]: https://circleci.com/gh/react-component/progress -[coveralls-image]: https://img.shields.io/coveralls/react-component/progress.svg?style=flat-square -[coveralls-url]: https://coveralls.io/r/react-component/progress?branch=master -[david-url]: https://david-dm.org/react-component/progress -[david-image]: https://david-dm.org/react-component/progress/status.svg?style=flat-square -[david-dev-url]: https://david-dm.org/react-component/progress?type=dev -[david-dev-image]: https://david-dm.org/react-component/progress/dev-status.svg?style=flat-square -[download-image]: https://img.shields.io/npm/dm/@rc-component/progress.svg?style=flat-square -[download-url]: https://npmjs.org/package/@rc-component/progress -[bundlephobia-url]: https://bundlephobia.com/result?p=@rc-component/progress -[bundlephobia-image]: https://badgen.net/bundlephobia/minzip/@rc-component/progress -## Example +## Highlights -https://progress.react-component.vercel.app/ - -## Screenshots - -
-
-## Browsers
-
-* support IE9+, Chrome, Firefox, Safari
+- `Line` and `Circle` progress components rendered with SVG.
+- Single value, segmented value, gradient color, and indeterminate loading states.
+- Semantic `classNames` and `styles` slots for root, rail, and track customization.
+- TypeScript definitions for the shared progress props.
## Install
-[](https://npmjs.org/package/@rc-component/progress)
+```bash
+npm install @rc-component/progress
+```
## Usage
-```js
-import { Line, Circle } from '@rc-component/progress';
-
+```tsx | pure
+import { Circle, Line } from '@rc-component/progress';
export default () => (
<>
-
](http://godban.github.io/browsers-support-badges/)
](http://godban.github.io/browsers-support-badges/)
](http://godban.github.io/browsers-support-badges/)
](http://godban.github.io/browsers-support-badges/)
](http://godban.github.io/browsers-support-badges/)| name | -type | -default | -description | -
|---|---|---|---|
| strokeWidth | -Number | -1 | -Width of the stroke. Unit is percentage of SVG canvas size. | -
| strokeColor | -String | -#2db7f5 | -Stroke color. | -
| railWidth | -Number | -1 | -Width of the rail stroke. Unit is percentage of SVG canvas size. Rail is always centered relative to actual progress path. If railWidth is not defined, it is the same as strokeWidth. | -
| railColor | -String | -#D9D9D9 | -Color for lighter rail stroke underneath the actual progress path. | -
| strokeLinecap | -String | -'round' | -The shape to be used at the end of the progress bar: can be `butt`, `square` or `round`. | -
| prefixCls | -String | -rc-progress | -prefix className for component | -
| className | -String | -- | customized className | -
| style | -Object | -- | style object will be added to svg element | -
| percent | -Number | Number[] | -0 | -the percent of the progress | -
| gapDegree | -Number | -0 | -the gap degree of half circle, 0 - 360 | -
| gapPosition | -String | -top | -the gap position: can be `top`, `bottom`, `left`, or `right`. | -
| loading | -Boolean | -false | -If it is true the indeterminate progress will be enabled. | -
English | 简体中文
+ +## 特性 + +- `Line` 和 `Circle` 使用 SVG 渲染的进度组件。 +- 单值、分段值、渐变颜色和不确定的加载状态。 +- 用于根、导轨和轨道定制的语义 `classNames` 和 `styles` 插槽。 +- 为共享进度属性提供 TypeScript 类型定义。 + +## 安装 + +```bash +npm install @rc-component/progress +``` + +## 使用 + +```tsx | pure +import { Circle, Line } from '@rc-component/progress'; +export default () => ( + <> +