diff --git a/packages/nutui-taro-demo/src/app.config.ts b/packages/nutui-taro-demo/src/app.config.ts
index 7357a2dbf7..584a92e8b6 100644
--- a/packages/nutui-taro-demo/src/app.config.ts
+++ b/packages/nutui-taro-demo/src/app.config.ts
@@ -2,125 +2,37 @@
const subPackages = [
{
"root": "base",
- "pages": [
- "pages/button/index",
- "pages/cell/index",
- "pages/configprovider/index",
- "pages/icon/index",
- "pages/image/index",
- "pages/overlay/index"
- ]
+ "pages": []
},
{
"root": "layout",
- "pages": [
- "pages/divider/index",
- "pages/grid/index",
- "pages/layout/index",
- "pages/safearea/index",
- "pages/space/index",
- "pages/sticky/index"
- ]
+ "pages": []
},
{
"root": "nav",
- "pages": [
- "pages/backtop/index",
- "pages/elevator/index",
- "pages/fixednav/index",
- "pages/hoverbutton/index",
- "pages/navbar/index",
- "pages/sidenavbar/index",
- "pages/tabbar/index",
- "pages/tabs/index"
- ]
+ "pages": []
},
{
"root": "dentry",
- "pages": [
- "pages/address/index",
- "pages/calendar/index",
- "pages/calendarcard/index",
- "pages/cascader/index",
- "pages/checkbox/index",
- "pages/datepicker/index",
- "pages/form/index",
- "pages/input/index",
- "pages/inputnumber/index"
- ]
+ "pages": []
},
{
"root": "dataentry",
- "pages": [
- "pages/menu/index",
- "pages/numberkeyboard/index",
- "pages/picker/index",
- "pages/radio/index",
- "pages/range/index",
- "pages/rate/index",
- "pages/searchbar/index",
- "pages/shortpassword/index",
- "pages/signature/index",
- "pages/switch/index",
- "pages/textarea/index",
- "pages/uploader/index"
- ]
+ "pages": []
},
{
"root": "feedback",
- "pages": [
- "pages/actionsheet/index",
- "pages/badge/index",
- "pages/dialog/index",
- "pages/drag/index",
- "pages/empty/index",
- "pages/infiniteloading/index",
- "pages/loading/index",
- "pages/noticebar/index",
- "pages/notify/index",
- "pages/popover/index",
- "pages/popup/index",
- "pages/pulltorefresh/index",
- "pages/resultpage/index",
- "pages/skeleton/index",
- "pages/swipe/index",
- "pages/toast/index"
- ]
+ "pages": []
},
{
"root": "exhibition",
"pages": [
- "pages/animate/index",
- "pages/animatingnumbers/index",
- "pages/avatar/index",
- "pages/circleprogress/index",
- "pages/collapse/index",
- "pages/countdown/index",
- "pages/ellipsis/index",
- "pages/imagepreview/index",
- "pages/indicator/index",
- "pages/pagination/index",
- "pages/price/index",
- "pages/progress/index",
- "pages/steps/index",
- "pages/swiper/index",
- "pages/table/index",
- "pages/tag/index",
- "pages/tour/index",
- "pages/video/index",
- "pages/virtuallist/index"
+ "pages/countdown/index"
]
},
{
"root": "business",
- "pages": [
- "pages/avatarcropper/index",
- "pages/barrage/index",
- "pages/card/index",
- "pages/timeselect/index",
- "pages/trendarrow/index",
- "pages/watermark/index"
- ]
+ "pages": []
}
];
diff --git a/src/config.json b/src/config.json
index 17793b696c..670152864a 100644
--- a/src/config.json
+++ b/src/config.json
@@ -987,7 +987,8 @@
"sort": 17,
"show": true,
"taro": true,
- "author": "songsong"
+ "author": "songsong",
+ "v14": true
},
{
"version": "2.0.0",
diff --git a/src/packages/countdown/__test__/__snapshots__/countdown.spec.tsx.snap b/src/packages/countdown/__test__/__snapshots__/countdown.spec.tsx.snap
new file mode 100644
index 0000000000..e2ff6de2cd
--- /dev/null
+++ b/src/packages/countdown/__test__/__snapshots__/countdown.spec.tsx.snap
@@ -0,0 +1,100 @@
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
+
+exports[`Countdown > type props primary 1`] = `
+
+
+
+ 00
+
+ :
+
+ 00
+
+ :
+
+ 00
+
+
+
+`;
+
+exports[`Countdown > type props text 1`] = `
+
+
+
+ 00
+
+ :
+
+ 00
+
+ :
+
+ 00
+
+
+
+`;
+
+exports[`Countdown > type props text primary 1`] = `
+
+
+
+ 00
+
+ :
+
+ 00
+
+ :
+
+ 00
+
+
+
+
+ 00
+
+ :
+
+ 00
+
+ :
+
+ 00
+
+
+
+`;
diff --git a/src/packages/countdown/__test__/countdown.spec.tsx b/src/packages/countdown/__test__/countdown.spec.tsx
index fc08fa1c45..96ce8a74d0 100644
--- a/src/packages/countdown/__test__/countdown.spec.tsx
+++ b/src/packages/countdown/__test__/countdown.spec.tsx
@@ -43,6 +43,28 @@ describe('Countdown', () => {
})
})
+ test('type props text', async () => {
+ const { container } = render(
+
+ )
+ const countdownDom = container.querySelector('.nut-countdown') as Element
+ expect(container).toMatchSnapshot()
+ expect(
+ countdownDom?.querySelectorAll('.nut-countdown-number-text')?.length
+ ).toBe(3)
+ })
+
+ test('type props primary', async () => {
+ const { container } = render(
+
+ )
+ const countdownDom = container.querySelector('.nut-countdown') as Element
+ expect(container).toMatchSnapshot()
+ expect(
+ countdownDom?.querySelectorAll('.nut-countdown-number-primary')?.length
+ ).toBe(3)
+ })
+
test('paused props', async () => {
const testClick = vi.fn()
let paused = false
diff --git a/src/packages/countdown/countdown.scss b/src/packages/countdown/countdown.scss
index 8591c93949..1c2a5ec431 100644
--- a/src/packages/countdown/countdown.scss
+++ b/src/packages/countdown/countdown.scss
@@ -6,6 +6,7 @@
font-size: $countdown-font-size;
&-number-primary,
&-number,
+ &-number-text,
&-unit {
display: flex;
align-items: center;
@@ -20,19 +21,24 @@
padding: $countdown-number-padding;
border-radius: $countdown-number-border-radius;
margin: $countdown-number-margin;
+ text-align: center;
}
&-number {
border: 1px solid $countdown-number-border-color;
background-color: $countdown-number-background-color;
color: $countdown-number-color;
- text-align: center;
}
&-number-primary {
border: 1px solid $countdown-number-primary-border-color;
background-color: $countdown-number-primary-background-color;
color: $countdown-number-primary-color;
}
+ &-number-text {
+ border: 0;
+ background-color: transparent;
+ color: $countdown-number-color;
+ }
&-unit {
- color: $color-primary;
+ color: $countdown-color;
}
}
diff --git a/src/packages/countdown/countdown.taro.tsx b/src/packages/countdown/countdown.taro.tsx
index f1f178d6c5..8dadad0955 100644
--- a/src/packages/countdown/countdown.taro.tsx
+++ b/src/packages/countdown/countdown.taro.tsx
@@ -2,40 +2,15 @@ import React, {
useState,
useRef,
useEffect,
- ReactNode,
ForwardRefRenderFunction,
useImperativeHandle,
} from 'react'
+import classNames from 'classnames'
import { View } from '@tarojs/components'
-import { BasicComponent, ComponentDefaults } from '@/utils/typings'
+import { ComponentDefaults } from '@/utils/typings'
import { padZero } from '@/utils/pad-zero'
import { web } from '@/utils/platform-taro'
-
-export interface CountDownTimeProps {
- d: number
- h: number
- m: number
- s: number
- ms: number
-}
-export type CountDownType = 'default' | 'primary'
-export interface CountDownProps extends BasicComponent {
- type: CountDownType
- paused: boolean
- startTime: number
- endTime: number
- remainingTime: number
- millisecond: boolean
- format: string
- autoStart: boolean
- time: number
- destroy: boolean
- onEnd: () => void
- onPaused: (restTime: number) => void
- onRestart: (restTime: number) => void
- onUpdate: (restTime: any) => void
- children: ReactNode
-}
+import { CountDownProps, CountDownTimeProps } from './types'
const defaultProps = {
...ComponentDefaults,
@@ -198,7 +173,7 @@ const InternalCountDown: ForwardRefRenderFunction<
} else if (formatCache.includes('SS')) {
formatCache = formatCache.replace('SS', msC.slice(0, 2))
} else if (formatCache.includes('S')) {
- formatCache = formatCache.replace('SS', msC.slice(0, 1))
+ formatCache = formatCache.replace('S', msC.slice(0, 1))
}
}
@@ -237,8 +212,7 @@ const InternalCountDown: ForwardRefRenderFunction<
// 监听值变更
useEffect(() => {
const tranTime = formatRemainTime(stateRef.current.restTime, 'custom')
-
- onUpdate && onUpdate(tranTime)
+ onUpdate && onUpdate(tranTime as CountDownTimeProps)
}, [restTimeStamp])
// 监听暂停
@@ -301,9 +275,13 @@ const InternalCountDown: ForwardRefRenderFunction<
{format.includes(formatUnit) ? (
<>
- {padZero(time)}
+ {unit ? padZero(time) : time}
{unit ? (
{getUnit(unit)}
@@ -335,7 +313,7 @@ const InternalCountDown: ForwardRefRenderFunction<
'S',
padZero(ms, 3)
.toString()
- .slice(0, digit || 2)
+ .slice(0, digit || 1)
)}
>
)
diff --git a/src/packages/countdown/countdown.tsx b/src/packages/countdown/countdown.tsx
index e9bb2da527..75cebabf6b 100644
--- a/src/packages/countdown/countdown.tsx
+++ b/src/packages/countdown/countdown.tsx
@@ -2,32 +2,12 @@ import React, {
useState,
useRef,
useEffect,
- ReactNode,
ForwardRefRenderFunction,
useImperativeHandle,
} from 'react'
-import { BasicComponent, ComponentDefaults } from '@/utils/typings'
+import { ComponentDefaults } from '@/utils/typings'
import { padZero } from '@/utils/pad-zero'
-
-export type CountDownType = 'default' | 'primary'
-
-export interface CountDownProps extends BasicComponent {
- type: CountDownType
- paused: boolean
- startTime: number
- endTime: number
- remainingTime: number
- millisecond: boolean
- format: string
- autoStart: boolean
- time: number
- destroy: boolean
- onEnd: () => void
- onPaused: (restTime: number) => void
- onRestart: (restTime: number) => void
- onUpdate: (restTime: any) => void
- children: ReactNode
-}
+import { CountDownProps, CountDownTimeProps } from './types'
const defaultProps = {
...ComponentDefaults,
@@ -194,14 +174,18 @@ const InternalCountDown: ForwardRefRenderFunction<
} else if (formatCache.includes('SS')) {
formatCache = formatCache.replace('SS', msC.slice(0, 2))
} else if (formatCache.includes('S')) {
- formatCache = formatCache.replace('SS', msC.slice(0, 1))
+ formatCache = formatCache.replace('S', msC.slice(0, 1))
}
}
+ const isTextDom =
+ type === 'text'
+ ? `$1`
+ : `$1`
formatCache = formatCache.replace(
/(\d+)/g,
type === 'primary'
? `$1`
- : `$1`
+ : isTextDom
)
return formatCache
@@ -241,7 +225,7 @@ const InternalCountDown: ForwardRefRenderFunction<
useEffect(() => {
const tranTime = formatRemainTime(stateRef.current.restTime, 'custom')
- onUpdate && onUpdate(tranTime)
+ onUpdate && onUpdate(tranTime as CountDownTimeProps)
}, [restTimeStamp])
// 监听暂停
diff --git a/src/packages/countdown/demos/h5/demo1.tsx b/src/packages/countdown/demos/h5/demo1.tsx
index 2b216cb815..7119a3f3cd 100644
--- a/src/packages/countdown/demos/h5/demo1.tsx
+++ b/src/packages/countdown/demos/h5/demo1.tsx
@@ -10,13 +10,20 @@ const Demo1 = () => {
}
return (
<>
+
+
+ |
|
|
diff --git a/src/packages/countdown/demos/h5/demo3.tsx b/src/packages/countdown/demos/h5/demo3.tsx
index 4932c253f7..6fdedc8d60 100644
--- a/src/packages/countdown/demos/h5/demo3.tsx
+++ b/src/packages/countdown/demos/h5/demo3.tsx
@@ -4,14 +4,24 @@ import { Cell, CountDown } from '@nutui/nutui-react'
const Demo3 = () => {
const stateRef = useRef({
endTime: Date.now() + 60 * 1000,
+ endDay: Date.now() + 60 * 1000 * 60 * 25,
})
return (
-
-
- |
+ <>
+
+
+ |
+
+
+ |
+
+
+ |
+ >
)
}
export default Demo3
diff --git a/src/packages/countdown/demos/h5/demo4.tsx b/src/packages/countdown/demos/h5/demo4.tsx
index a3f380de89..d83420ca0c 100644
--- a/src/packages/countdown/demos/h5/demo4.tsx
+++ b/src/packages/countdown/demos/h5/demo4.tsx
@@ -10,7 +10,7 @@ const Demo4 = () => {
)
diff --git a/src/packages/countdown/demos/taro/demo1.tsx b/src/packages/countdown/demos/taro/demo1.tsx
index 8d1e389c29..a5bf4b6083 100644
--- a/src/packages/countdown/demos/taro/demo1.tsx
+++ b/src/packages/countdown/demos/taro/demo1.tsx
@@ -10,13 +10,20 @@ const Demo1 = () => {
}
return (
<>
+
+
+ |
|
|
diff --git a/src/packages/countdown/demos/taro/demo3.tsx b/src/packages/countdown/demos/taro/demo3.tsx
index 381268fbfd..dff590bb02 100644
--- a/src/packages/countdown/demos/taro/demo3.tsx
+++ b/src/packages/countdown/demos/taro/demo3.tsx
@@ -4,11 +4,24 @@ import { Cell, CountDown } from '@nutui/nutui-react-taro'
const Demo3 = () => {
const stateRef = useRef({
endTime: Date.now() + 60 * 1000,
+ endDay: Date.now() + 60 * 1000 * 60 * 25,
})
return (
-
-
- |
+ <>
+
+
+ |
+
+
+ |
+
+
+ |
+ >
)
}
export default Demo3
diff --git a/src/packages/countdown/demos/taro/demo4.tsx b/src/packages/countdown/demos/taro/demo4.tsx
index a80f32f01a..239f29c4bb 100644
--- a/src/packages/countdown/demos/taro/demo4.tsx
+++ b/src/packages/countdown/demos/taro/demo4.tsx
@@ -10,7 +10,7 @@ const Demo4 = () => {
)
diff --git a/src/packages/countdown/doc.en-US.md b/src/packages/countdown/doc.en-US.md
index a3b8740a79..433119dc17 100644
--- a/src/packages/countdown/doc.en-US.md
+++ b/src/packages/countdown/doc.en-US.md
@@ -90,6 +90,7 @@ Paused and restarted the countdown with the paused attribute
| Property | Description | Type | Default |
| --- | --- | --- | --- |
+| type | Display Type | `default`\|`primary`\|`text` | `default` |
| startTime | Start Time | `number` | `Date.now()` |
| endTime | End Time | `number` | `Date.now()` |
| remainingTime | Remaining time, unit milliseconds | `number` | `0` |
@@ -131,18 +132,18 @@ The component provides the following CSS variables, which can be used to customi
| Name | Description | Default |
| --- | --- | --- |
-| \--nutui-countdown-display | display mode of countdown | `flex` |
+| \--nutui-countdown-display | Layout of countdown | `flex` |
| \--nutui-countdown-color | Countdown text color | `$color-primary` |
-| \--nutui-countdown-font-size | The font size of the countdown | `10px` |
-| \--nutui-countdown-font-weight | Countdown font weight | `400` |
-| \--nutui-countdown-width | Time area width of the countdown | `20px` |
-| \--nutui-countdown-height | Time area height of the countdown | `14px` |
-| \--nutui-countdown-number-padding | Countdown time area padding | `0 1px` |
-| \--nutui-countdown-number-margin | Countdown time area margin | `0 2px` |
-| \--countdown-number-border-radius | Countdown time area border radius | `2px` |
-| \--nutui-countdown-color | Countdown time area text color | `$color-primary-light-pressed` |
-| \--nutui-countdown-background-color | Countdown time area background color | `$color-primary` |
-| \--nutui-countdown-border-color | Countdown time area border color color | `$color-primary` |
-| \--nutui-countdown-primary-color | When type is primary, the text color of the countdown time area | `#FFFFFF` |
-| \--nutui-countdown-primary-background-color | When type is primary, the background color of the countdown time area | `$color-primary` |
-| \--nutui-countdown-primary-border-color | When type is primary, the border color of the countdown time area is the color | `$color-primary` |
+| \--nutui-countdown-font-size | Countdown font size | `11px` |
+| \--nutui-countdown-font-weight | Countdown font thickness | `400` |
+| \--nutui-countdown-width | Countdown time area width | `16px` |
+| \--nutui-countdown-height | Countdown time area height | `16px` |
+| \--nutui-countdown-number-padding | Countdown time area padding | `0 0` |
+| \--nutui-countdown-number-margin | Countdown time area margin | `0 1px` |
+| \--nutui-countdown-number-border-radius | Countdown time area rounded angle size | `2px` |
+| \--nutui-countdown-number-color | The text color of the countdown time area | `$color-primary` |
+| \--nutui-countdown-background-color | Background color of the countdown time area | `$color-background-overlay` |
+| \--nutui-countdown-border-color | Border color of the countdown time area | `$color-primary-light-pressed` |
+| \--nutui-countdown-number-primary-color | When type is `primary`, the text color of the countdown time area | `$color-primary-text` |
+| \--nutui-countdown-primary-background-color | When type is `primary`, the background color of the countdown time area | `$color-primary` |
+| \--nutui-countdown-primary-border-color | When type is `primary`, the border color of the countdown time area | `$color-primary` |
diff --git a/src/packages/countdown/doc.md b/src/packages/countdown/doc.md
index d9a1424e7c..d26bfec589 100644
--- a/src/packages/countdown/doc.md
+++ b/src/packages/countdown/doc.md
@@ -90,7 +90,7 @@ import { CountDown } from '@nutui/nutui-react'
| 属性 | 说明 | 类型 | 默认值 |
| --- | --- | --- | --- |
-| type | 展示类型 | `default`\|`primary` | `default` |
+| type | 展示类型 | `default`\|`primary`\|`text` | `default` |
| startTime | 开始时间 | `number` | `Date.now()` |
| endTime | 结束时间 | `number` | `Date.now()` |
| remainingTime | 剩余时间,单位是毫秒 | `number` | `0` |
@@ -135,16 +135,16 @@ import { CountDown } from '@nutui/nutui-react'
| --- | --- | --- |
| \--nutui-countdown-display | 倒计时的布局方式 | `flex` |
| \--nutui-countdown-color | 倒计时的文字颜色 | `$color-primary` |
-| \--nutui-countdown-font-size | 倒计时的字体大小 | `10px` |
+| \--nutui-countdown-font-size | 倒计时的字体大小 | `11px` |
| \--nutui-countdown-font-weight | 倒计时的字体粗细 | `400` |
-| \--nutui-countdown-width | 倒计时的时间区域宽度 | `20px` |
-| \--nutui-countdown-height | 倒计时的时间区域高度 | `14px` |
-| \--nutui-countdown-number-padding | 倒计时的时间区域padding | `0 1px` |
-| \--nutui-countdown-number-margin | 倒计时的时间区域margin | `0 2px` |
-| \--countdown-number-border-radius | 倒计时的时间区域圆角大小 | `2px` |
-| \--nutui-countdown-color | 倒计时的时间区域的文字颜色 | `$color-primary-light-pressed` |
-| \--nutui-countdown-background-color | 倒计时的时间区域的背景颜色 | `$color-primary` |
-| \--nutui-countdown-border-color | 倒计时的时间区域的边框颜色颜色 | `$color-primary` |
-| \--nutui-countdown-primary-color | type为`primary`时,倒计时的时间区域的文字颜色 | `#FFFFFF` |
+| \--nutui-countdown-width | 倒计时的时间区域宽度 | `16px` |
+| \--nutui-countdown-height | 倒计时的时间区域高度 | `16px` |
+| \--nutui-countdown-number-padding | 倒计时的时间区域padding | `0 0` |
+| \--nutui-countdown-number-margin | 倒计时的时间区域margin | `0 1px` |
+| \--nutui-countdown-number-border-radius | 倒计时的时间区域圆角大小 | `2px` |
+| \--nutui-countdown-number-color | 倒计时的时间区域的文字颜色 | `$color-primary` |
+| \--nutui-countdown-background-color | 倒计时的时间区域的背景颜色 | `$color-background-overlay` |
+| \--nutui-countdown-border-color | 倒计时的时间区域的边框颜色颜色 | `$color-primary-light-pressed` |
+| \--nutui-countdown-number-primary-color | type为`primary`时,倒计时的时间区域的文字颜色 | `$color-primary-text` |
| \--nutui-countdown-primary-background-color | type为`primary`时,倒计时的时间区域的背景颜色 | `$color-primary` |
| \--nutui-countdown-primary-border-color | type为`primary`时,倒计时的时间区域的边框颜色颜色 | `$color-primary` |
diff --git a/src/packages/countdown/doc.taro.md b/src/packages/countdown/doc.taro.md
index 4941c4712a..3b492caf8c 100644
--- a/src/packages/countdown/doc.taro.md
+++ b/src/packages/countdown/doc.taro.md
@@ -90,6 +90,7 @@ import { CountDown } from '@nutui/nutui-react-taro'
| 属性 | 说明 | 类型 | 默认值 |
| --- | --- | --- | --- |
+| type | 展示类型 | `default`\|`primary`\|`text` | `default` |
| startTime | 开始时间 | `number` | `Date.now()` |
| endTime | 结束时间 | `number` | `Date.now()` |
| remainingTime | 剩余时间,单位是毫秒 | `number` | `0` |
@@ -134,16 +135,16 @@ import { CountDown } from '@nutui/nutui-react-taro'
| --- | --- | --- |
| \--nutui-countdown-display | 倒计时的布局方式 | `flex` |
| \--nutui-countdown-color | 倒计时的文字颜色 | `$color-primary` |
-| \--nutui-countdown-font-size | 倒计时的字体大小 | `10px` |
+| \--nutui-countdown-font-size | 倒计时的字体大小 | `11px` |
| \--nutui-countdown-font-weight | 倒计时的字体粗细 | `400` |
-| \--nutui-countdown-width | 倒计时的时间区域宽度 | `20px` |
-| \--nutui-countdown-height | 倒计时的时间区域高度 | `14px` |
-| \--nutui-countdown-number-padding | 倒计时的时间区域padding | `0 1px` |
-| \--nutui-countdown-number-margin | 倒计时的时间区域margin | `0 2px` |
-| \--countdown-number-border-radius | 倒计时的时间区域圆角大小 | `2px` |
-| \--nutui-countdown-color | 倒计时的时间区域的文字颜色 | `$color-primary-light-pressed` |
-| \--nutui-countdown-background-color | 倒计时的时间区域的背景颜色 | `$color-primary` |
-| \--nutui-countdown-border-color | 倒计时的时间区域的边框颜色颜色 | `$color-primary` |
-| \--nutui-countdown-primary-color | type为`primary`时,倒计时的时间区域的文字颜色 | `#FFFFFF` |
+| \--nutui-countdown-width | 倒计时的时间区域宽度 | `16px` |
+| \--nutui-countdown-height | 倒计时的时间区域高度 | `16px` |
+| \--nutui-countdown-number-padding | 倒计时的时间区域padding | `0 0` |
+| \--nutui-countdown-number-margin | 倒计时的时间区域margin | `0 1px` |
+| \--nutui-countdown-number-border-radius | 倒计时的时间区域圆角大小 | `2px` |
+| \--nutui-countdown-number-color | 倒计时的时间区域的文字颜色 | `$color-primary` |
+| \--nutui-countdown-background-color | 倒计时的时间区域的背景颜色 | `$color-background-overlay` |
+| \--nutui-countdown-border-color | 倒计时的时间区域的边框颜色颜色 | `$color-primary-light-pressed` |
+| \--nutui-countdown-number-primary-color | type为`primary`时,倒计时的时间区域的文字颜色 | `$color-primary-text` |
| \--nutui-countdown-primary-background-color | type为`primary`时,倒计时的时间区域的背景颜色 | `$color-primary` |
| \--nutui-countdown-primary-border-color | type为`primary`时,倒计时的时间区域的边框颜色颜色 | `$color-primary` |
diff --git a/src/packages/countdown/doc.zh-TW.md b/src/packages/countdown/doc.zh-TW.md
index 4946d28a36..458a9aef45 100644
--- a/src/packages/countdown/doc.zh-TW.md
+++ b/src/packages/countdown/doc.zh-TW.md
@@ -90,6 +90,7 @@ import { CountDown } from '@nutui/nutui-react'
| 屬性 | 說明 | 類型 | 默認值 |
| --- | --- | --- | --- |
+| type | 展示類型 | `default`\|`primary`\|`text` | `default` |
| startTime | 開始時間 | `number` | `Date.now()` |
| endTime | 結束時間 | `number` | `Date.now()` |
| remainingTime | 剩余時間,單位是毫秒 | `number` | `0` |
@@ -132,18 +133,18 @@ import { CountDown } from '@nutui/nutui-react'
| 名稱 | 說明 | 默認值 |
| --- | --- | --- |
-| \--nutui-countdown-display | 倒計時的布局方式 | `flex` |
-| \--nutui-countdown-color | 倒計時的文字顔色 | `$color-primary` |
-| \--nutui-countdown-font-size | 倒計時的字體大小 | `10px` |
+| \--nutui-countdown-display | 倒計時的佈局方式 | `flex` |
+| \--nutui-countdown-color | 倒計時的文字顏色 | `$color-primary` |
+| \--nutui-countdown-font-size | 倒計時的字體大小 | `11px` |
| \--nutui-countdown-font-weight | 倒計時的字體粗細 | `400` |
-| \--nutui-countdown-width | 倒計時的時間區域寬度 | `20px` |
-| \--nutui-countdown-height | 倒計時的時間區域高度 | `14px` |
-| \--nutui-countdown-number-padding | 倒計時的時間區域padding | `0 1px` |
-| \--nutui-countdown-number-margin | 倒計時的時間區域margin | `0 2px` |
-| \--countdown-number-border-radius | 倒計時的時間區域圓角大小 | `2px` |
-| \--nutui-countdown-color | 倒計時的時間區域的文字顔色 | `$color-primary-light-pressed` |
-| \--nutui-countdown-background-color | 倒計時的時間區域的背景顔色 | `$color-primary` |
-| \--nutui-countdown-border-color | 倒計時的時間區域的邊框顔色顔色 | `$color-primary` |
-| \--nutui-countdown-primary-color | type爲`primary`時,倒計時的時間區域的文字顔色 | `#FFFFFF` |
-| \--nutui-countdown-primary-background-color | type爲`primary`時,倒計時的時間區域的背景顔色 | `$color-primary` |
-| \--nutui-countdown-primary-border-color | type爲`primary`時,倒計時的時間區域的邊框顔色顔色 | `$color-primary` |
+| \--nutui-countdown-width | 倒計時的時間區域寬度 | `16px` |
+| \--nutui-countdown-height | 倒計時的時間區域高度 | `16px` |
+| \--nutui-countdown-number-padding | 倒計時的時間區域padding | `0 0` |
+| \--nutui-countdown-number-margin | 倒計時的時間區域margin | `0 1px` |
+| \--nutui-countdown-number-border-radius | 倒計時的時間區域圓角大小 | `2px` |
+| \--nutui-countdown-number-color | 倒計時的時間區域的文字顏色 | `$color-primary` |
+| \--nutui-countdown-background-color | 倒計時的時間區域的背景顏色 | `$color-background-overlay` |
+| \--nutui-countdown-border-color | 倒計時的時間區域的邊框顏色顏色 | `$color-primary-light-pressed` |
+| \--nutui-countdown-number-primary-color | type爲`primary`時,倒計時的時間區域的文字顏色 | `$color-primary-text` |
+| \--nutui-countdown-primary-background-color | type爲`primary`時,倒計時的時間區域的背景顏色 | `$color-primary` |
+| \--nutui-countdown-primary-border-color | type爲`primary`時,倒計時的時間區域的邊框顏色顏色 | `$color-primary` |
diff --git a/src/packages/countdown/index.taro.ts b/src/packages/countdown/index.taro.ts
index 7613153601..f389d13d67 100644
--- a/src/packages/countdown/index.taro.ts
+++ b/src/packages/countdown/index.taro.ts
@@ -1,4 +1,4 @@
import { CountDown } from './countdown.taro'
-export type { CountDownProps } from './countdown.taro'
+export type { CountDownProps, CountDownType, CountDownTimeProps } from './types'
export default CountDown
diff --git a/src/packages/countdown/index.ts b/src/packages/countdown/index.ts
index 5879e8eea8..d48a338dfd 100644
--- a/src/packages/countdown/index.ts
+++ b/src/packages/countdown/index.ts
@@ -1,4 +1,4 @@
import { CountDown } from './countdown'
-export type { CountDownProps } from './countdown'
+export type { CountDownProps, CountDownType, CountDownTimeProps } from './types'
export default CountDown
diff --git a/src/packages/countdown/types.ts b/src/packages/countdown/types.ts
new file mode 100644
index 0000000000..1dce65f270
--- /dev/null
+++ b/src/packages/countdown/types.ts
@@ -0,0 +1,29 @@
+import { BasicComponent } from '@/utils/typings'
+
+export type CountDownType = 'default' | 'primary' | 'text'
+
+export interface CountDownTimeProps {
+ d: number
+ h: number
+ m: number
+ s: number
+ ms: number
+}
+
+export interface CountDownProps extends BasicComponent {
+ type: CountDownType
+ paused: boolean
+ startTime: number
+ endTime: number
+ remainingTime: number
+ millisecond: boolean
+ format: string
+ autoStart: boolean
+ time: number
+ destroy: boolean
+ onEnd: () => void
+ onPaused: (restTime: number) => void
+ onRestart: (restTime: number) => void
+ onUpdate: (restTime: string | CountDownTimeProps) => void
+ children: React.ReactNode
+}
diff --git a/src/styles/variables.scss b/src/styles/variables.scss
index 27da2c93ca..d471a05575 100644
--- a/src/styles/variables.scss
+++ b/src/styles/variables.scss
@@ -778,43 +778,43 @@ $numberkeyboard-key-confirm-background-color: var(
// countdown(✅)
$countdown-display: var(--nutui-countdown-display, flex) !default;
$countdown-color: var(--nutui-countdown-color, $color-primary) !default;
-$countdown-font-size: var(--nutui-countdown-font-size, 10px) !default;
-$coutdown-font-weight: var(--nutui-countdown-font-weight, 400) !default;
-$countdown-height: var(--nutui-countdown-height, 14px) !default;
-$countdown-width: var(--nutui-countdown-width, 20px) !default;
-$countdown-number-padding: var(
- --nutui-countdown-number-padding,
- 0 1px
+$countdown-font-size: var(--nutui-countdown-font-size, $font-size-xs) !default;
+$coutdown-font-weight: var(
+ --nutui-countdown-font-weight,
+ $font-weight
) !default;
+$countdown-height: var(--nutui-countdown-height, 16px) !default;
+$countdown-width: var(--nutui-countdown-width, 16px) !default;
+$countdown-number-padding: var(--nutui-countdown-number-padding, 0 0) !default;
$countdown-number-border-radius: var(
--nutui-countdown-number-border-radius,
- 2px
-) !default;
-$countdown-number-margin: var(--nutui-countdown-number-margin, 0 2px) !default;
-$countdown-number-border-color: var(
- --nutui-countdown-number-border-color,
- $color-primary-light-pressed
+ $radius-xxs
) !default;
+$countdown-number-margin: var(--nutui-countdown-number-margin, 0 1px) !default;
$countdown-number-color: var(
--nutui-countdown-number-color,
$color-primary
) !default;
$countdown-number-background-color: var(
--nutui-countdown-number-background-color,
- transparent
+ $color-background-overlay
) !default;
-$countdown-number-primary-border-color: var(
- --nutui-countdown-number-primary-border-color,
- $color-primary
+$countdown-number-border-color: var(
+ --nutui-countdown-number-border-color,
+ $color-primary-light-pressed
) !default;
$countdown-number-primary-color: var(
--nutui-countdown-number-primary-color,
- #ffffff
+ $color-primary-text
) !default;
$countdown-number-primary-background-color: var(
--nutui-countdown-number-primary-background-color,
$color-primary
) !default;
+$countdown-number-primary-border-color: var(
+ --nutui-countdown-number-primary-border-color,
+ $color-primary
+) !default;
//large price(✅)
$price-symbol-padding-right: var(