zkit-ui 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +267 -0
- package/dist/ComponentLibProvider.d.ts +15 -0
- package/dist/ComponentLibProvider.d.ts.map +1 -0
- package/dist/ComponentLibProvider.js +18 -0
- package/dist/assets/animations/spinner.json +1 -0
- package/dist/assets/icons/check.svg +4 -0
- package/dist/assets/icons/toast/error.webp +0 -0
- package/dist/assets/icons/toast/success.webp +0 -0
- package/dist/assets/icons/toast/warning.webp +0 -0
- package/dist/config.d.ts +16 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +42 -0
- package/dist/i18n/I18nProvider.d.ts +11 -0
- package/dist/i18n/I18nProvider.d.ts.map +1 -0
- package/dist/i18n/I18nProvider.js +84 -0
- package/dist/i18n/locale.d.ts +7 -0
- package/dist/i18n/locale.d.ts.map +1 -0
- package/dist/i18n/locale.js +87 -0
- package/dist/i18n/locales/de.d.ts +51 -0
- package/dist/i18n/locales/de.d.ts.map +1 -0
- package/dist/i18n/locales/de.js +62 -0
- package/dist/i18n/locales/en-US.d.ts +51 -0
- package/dist/i18n/locales/en-US.d.ts.map +1 -0
- package/dist/i18n/locales/en-US.js +62 -0
- package/dist/i18n/locales/index.d.ts +9 -0
- package/dist/i18n/locales/index.d.ts.map +1 -0
- package/dist/i18n/locales/index.js +23 -0
- package/dist/i18n/locales/ja.d.ts +51 -0
- package/dist/i18n/locales/ja.d.ts.map +1 -0
- package/dist/i18n/locales/ja.js +62 -0
- package/dist/i18n/locales/zh-CN.d.ts +51 -0
- package/dist/i18n/locales/zh-CN.d.ts.map +1 -0
- package/dist/i18n/locales/zh-CN.js +62 -0
- package/dist/i18n/locales/zh-TW.d.ts +51 -0
- package/dist/i18n/locales/zh-TW.d.ts.map +1 -0
- package/dist/i18n/locales/zh-TW.js +62 -0
- package/dist/i18n/types.d.ts +11 -0
- package/dist/i18n/types.d.ts.map +1 -0
- package/dist/i18n/types.js +2 -0
- package/dist/i18n/useI18n.d.ts +2 -0
- package/dist/i18n/useI18n.d.ts.map +1 -0
- package/dist/i18n/useI18n.js +41 -0
- package/dist/index.d.ts +57 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +90 -0
- package/dist/services/ActionDialogService/ActionDialog.d.ts +4 -0
- package/dist/services/ActionDialogService/ActionDialog.d.ts.map +1 -0
- package/dist/services/ActionDialogService/ActionDialog.js +531 -0
- package/dist/services/ActionDialogService/index.d.ts +4 -0
- package/dist/services/ActionDialogService/index.d.ts.map +1 -0
- package/dist/services/ActionDialogService/index.js +8 -0
- package/dist/services/ActionDialogService/service.d.ts +7 -0
- package/dist/services/ActionDialogService/service.d.ts.map +1 -0
- package/dist/services/ActionDialogService/service.js +309 -0
- package/dist/services/ActionDialogService/shared.d.ts +17 -0
- package/dist/services/ActionDialogService/shared.d.ts.map +1 -0
- package/dist/services/ActionDialogService/shared.js +167 -0
- package/dist/services/ActionDialogService/types.d.ts +160 -0
- package/dist/services/ActionDialogService/types.d.ts.map +1 -0
- package/dist/services/ActionDialogService/types.js +2 -0
- package/dist/services/CardToastService/index.d.ts +115 -0
- package/dist/services/CardToastService/index.d.ts.map +1 -0
- package/dist/services/CardToastService/index.js +899 -0
- package/dist/services/ImagePreviewService/index.d.ts +179 -0
- package/dist/services/ImagePreviewService/index.d.ts.map +1 -0
- package/dist/services/ImagePreviewService/index.js +1383 -0
- package/dist/services/LoadingService/index.d.ts +146 -0
- package/dist/services/LoadingService/index.d.ts.map +1 -0
- package/dist/services/LoadingService/index.js +827 -0
- package/dist/services/PermissionPurposeDialogService/index.d.ts +99 -0
- package/dist/services/PermissionPurposeDialogService/index.d.ts.map +1 -0
- package/dist/services/PermissionPurposeDialogService/index.js +360 -0
- package/dist/services/PickerService/index.d.ts +128 -0
- package/dist/services/PickerService/index.d.ts.map +1 -0
- package/dist/services/PickerService/index.js +250 -0
- package/dist/theme/ThemeProvider.d.ts +15 -0
- package/dist/theme/ThemeProvider.d.ts.map +1 -0
- package/dist/theme/ThemeProvider.js +61 -0
- package/dist/theme/defaultTheme.d.ts +3 -0
- package/dist/theme/defaultTheme.d.ts.map +1 -0
- package/dist/theme/defaultTheme.js +28 -0
- package/dist/theme/mergeTheme.d.ts +3 -0
- package/dist/theme/mergeTheme.d.ts.map +1 -0
- package/dist/theme/mergeTheme.js +19 -0
- package/dist/theme/types.d.ts +17 -0
- package/dist/theme/types.d.ts.map +1 -0
- package/dist/theme/types.js +2 -0
- package/dist/theme/useTheme.d.ts +2 -0
- package/dist/theme/useTheme.d.ts.map +1 -0
- package/dist/theme/useTheme.js +46 -0
- package/dist/ui/Accordion/index.d.ts +99 -0
- package/dist/ui/Accordion/index.d.ts.map +1 -0
- package/dist/ui/Accordion/index.js +777 -0
- package/dist/ui/AddressCascader/index.d.ts +58 -0
- package/dist/ui/AddressCascader/index.d.ts.map +1 -0
- package/dist/ui/AddressCascader/index.js +710 -0
- package/dist/ui/BetweenTime/index.d.ts +82 -0
- package/dist/ui/BetweenTime/index.d.ts.map +1 -0
- package/dist/ui/BetweenTime/index.js +702 -0
- package/dist/ui/Button/index.d.ts +93 -0
- package/dist/ui/Button/index.d.ts.map +1 -0
- package/dist/ui/Button/index.js +832 -0
- package/dist/ui/Checkbox/index.d.ts +103 -0
- package/dist/ui/Checkbox/index.d.ts.map +1 -0
- package/dist/ui/Checkbox/index.js +694 -0
- package/dist/ui/DatePicker/index.d.ts +5 -0
- package/dist/ui/DatePicker/index.d.ts.map +1 -0
- package/dist/ui/DatePicker/index.js +157 -0
- package/dist/ui/DatePicker/types.d.ts +99 -0
- package/dist/ui/DatePicker/types.d.ts.map +1 -0
- package/dist/ui/DatePicker/types.js +2 -0
- package/dist/ui/DatePicker/utils.d.ts +32 -0
- package/dist/ui/DatePicker/utils.d.ts.map +1 -0
- package/dist/ui/DatePicker/utils.js +316 -0
- package/dist/ui/LinkedScroll/index.d.ts +78 -0
- package/dist/ui/LinkedScroll/index.d.ts.map +1 -0
- package/dist/ui/LinkedScroll/index.js +470 -0
- package/dist/ui/LoadingSpinner/index.d.ts +8 -0
- package/dist/ui/LoadingSpinner/index.d.ts.map +1 -0
- package/dist/ui/LoadingSpinner/index.js +122 -0
- package/dist/ui/Picker/actionBar.d.ts +14 -0
- package/dist/ui/Picker/actionBar.d.ts.map +1 -0
- package/dist/ui/Picker/actionBar.js +28 -0
- package/dist/ui/Picker/index.d.ts +5 -0
- package/dist/ui/Picker/index.d.ts.map +1 -0
- package/dist/ui/Picker/index.js +412 -0
- package/dist/ui/Picker/types.d.ts +80 -0
- package/dist/ui/Picker/types.d.ts.map +1 -0
- package/dist/ui/Picker/types.js +2 -0
- package/dist/ui/Picker/utils.d.ts +27 -0
- package/dist/ui/Picker/utils.d.ts.map +1 -0
- package/dist/ui/Picker/utils.js +182 -0
- package/dist/ui/Radio/index.d.ts +95 -0
- package/dist/ui/Radio/index.d.ts.map +1 -0
- package/dist/ui/Radio/index.js +633 -0
- package/dist/ui/Sheet/index.d.ts +12 -0
- package/dist/ui/Sheet/index.d.ts.map +1 -0
- package/dist/ui/Sheet/index.js +832 -0
- package/dist/ui/Sheet/nativeBottom.d.ts +52 -0
- package/dist/ui/Sheet/nativeBottom.d.ts.map +1 -0
- package/dist/ui/Sheet/nativeBottom.js +442 -0
- package/dist/ui/Sheet/nativeBottom.web.d.ts +18 -0
- package/dist/ui/Sheet/nativeBottom.web.d.ts.map +1 -0
- package/dist/ui/Sheet/nativeBottom.web.js +46 -0
- package/dist/ui/Sheet/slots.d.ts +5 -0
- package/dist/ui/Sheet/slots.d.ts.map +1 -0
- package/dist/ui/Sheet/slots.js +40 -0
- package/dist/ui/Sheet/types.d.ts +131 -0
- package/dist/ui/Sheet/types.d.ts.map +1 -0
- package/dist/ui/Sheet/types.js +2 -0
- package/dist/ui/SliderCaptcha/index.d.ts +57 -0
- package/dist/ui/SliderCaptcha/index.d.ts.map +1 -0
- package/dist/ui/SliderCaptcha/index.js +586 -0
- package/dist/ui/Switch/index.d.ts +72 -0
- package/dist/ui/Switch/index.d.ts.map +1 -0
- package/dist/ui/Switch/index.js +671 -0
- package/dist/ui/Text/index.d.ts +41 -0
- package/dist/ui/Text/index.d.ts.map +1 -0
- package/dist/ui/Text/index.js +325 -0
- package/dist/ui/TextInput/TextInputPrimitive.d.ts +8 -0
- package/dist/ui/TextInput/TextInputPrimitive.d.ts.map +1 -0
- package/dist/ui/TextInput/TextInputPrimitive.js +54 -0
- package/dist/ui/TextInput/index.d.ts +89 -0
- package/dist/ui/TextInput/index.d.ts.map +1 -0
- package/dist/ui/TextInput/index.js +545 -0
- package/dist/ui/WheelColumn/ZKitWheelPickerNativeComponent.d.ts +39 -0
- package/dist/ui/WheelColumn/ZKitWheelPickerNativeComponent.d.ts.map +1 -0
- package/dist/ui/WheelColumn/ZKitWheelPickerNativeComponent.js +60 -0
- package/dist/ui/WheelColumn/constants.d.ts +2 -0
- package/dist/ui/WheelColumn/constants.d.ts.map +1 -0
- package/dist/ui/WheelColumn/constants.js +4 -0
- package/dist/ui/WheelColumn/index.d.ts +59 -0
- package/dist/ui/WheelColumn/index.d.ts.map +1 -0
- package/dist/ui/WheelColumn/index.js +547 -0
- package/ios/ZKitWheelPicker.h +18 -0
- package/ios/ZKitWheelPicker.mm +230 -0
- package/ios/ZKitWheelPickerLabel.h +10 -0
- package/ios/ZKitWheelPickerLabel.mm +31 -0
- package/ios/ZKitWheelPickerManager.h +5 -0
- package/ios/ZKitWheelPickerManager.mm +53 -0
- package/package.json +75 -0
- package/react-native.config.js +10 -0
- package/src/ComponentLibProvider.tsx +56 -0
- package/src/assets/animations/spinner.json +1 -0
- package/src/assets/icons/check.svg +4 -0
- package/src/assets/icons/toast/error.webp +0 -0
- package/src/assets/icons/toast/success.webp +0 -0
- package/src/assets/icons/toast/warning.webp +0 -0
- package/src/config.ts +65 -0
- package/src/i18n/I18nProvider.tsx +69 -0
- package/src/i18n/locale.ts +108 -0
- package/src/i18n/locales/de.ts +67 -0
- package/src/i18n/locales/en-US.ts +67 -0
- package/src/i18n/locales/index.ts +19 -0
- package/src/i18n/locales/ja.ts +67 -0
- package/src/i18n/locales/zh-CN.ts +67 -0
- package/src/i18n/locales/zh-TW.ts +67 -0
- package/src/i18n/types.ts +21 -0
- package/src/i18n/useI18n.ts +7 -0
- package/src/index.ts +395 -0
- package/src/services/ActionDialogService/ActionDialog.tsx +756 -0
- package/src/services/ActionDialogService/README.md +146 -0
- package/src/services/ActionDialogService/index.tsx +39 -0
- package/src/services/ActionDialogService/service.tsx +355 -0
- package/src/services/ActionDialogService/shared.ts +204 -0
- package/src/services/ActionDialogService/types.ts +197 -0
- package/src/services/CardToastService/README.md +128 -0
- package/src/services/CardToastService/index.tsx +1284 -0
- package/src/services/ImagePreviewService/README.md +67 -0
- package/src/services/ImagePreviewService/index.tsx +2148 -0
- package/src/services/LoadingService/README.md +128 -0
- package/src/services/LoadingService/index.tsx +1113 -0
- package/src/services/PermissionPurposeDialogService/README.md +80 -0
- package/src/services/PermissionPurposeDialogService/index.tsx +449 -0
- package/src/services/PickerService/README.md +154 -0
- package/src/services/PickerService/index.tsx +410 -0
- package/src/theme/ThemeProvider.tsx +40 -0
- package/src/theme/defaultTheme.ts +30 -0
- package/src/theme/mergeTheme.ts +16 -0
- package/src/theme/types.ts +36 -0
- package/src/theme/useTheme.ts +10 -0
- package/src/types/svg.d.ts +9 -0
- package/src/types/vant-area-data.d.ts +19 -0
- package/src/ui/Accordion/README.md +67 -0
- package/src/ui/Accordion/index.tsx +1221 -0
- package/src/ui/AddressCascader/README.md +144 -0
- package/src/ui/AddressCascader/index.tsx +1084 -0
- package/src/ui/BetweenTime/README.md +490 -0
- package/src/ui/BetweenTime/index.tsx +1001 -0
- package/src/ui/Button/README.md +186 -0
- package/src/ui/Button/index.tsx +1356 -0
- package/src/ui/Checkbox/README.md +211 -0
- package/src/ui/Checkbox/index.tsx +1231 -0
- package/src/ui/DatePicker/README.md +117 -0
- package/src/ui/DatePicker/index.tsx +295 -0
- package/src/ui/DatePicker/types.ts +115 -0
- package/src/ui/DatePicker/utils.ts +405 -0
- package/src/ui/LinkedScroll/README.md +55 -0
- package/src/ui/LinkedScroll/index.tsx +809 -0
- package/src/ui/LoadingSpinner/index.tsx +104 -0
- package/src/ui/Picker/README.md +190 -0
- package/src/ui/Picker/actionBar.tsx +70 -0
- package/src/ui/Picker/index.tsx +694 -0
- package/src/ui/Picker/types.ts +94 -0
- package/src/ui/Picker/utils.ts +239 -0
- package/src/ui/Radio/README.md +207 -0
- package/src/ui/Radio/index.tsx +1117 -0
- package/src/ui/Sheet/README.md +82 -0
- package/src/ui/Sheet/index.tsx +1163 -0
- package/src/ui/Sheet/nativeBottom.tsx +683 -0
- package/src/ui/Sheet/nativeBottom.web.tsx +40 -0
- package/src/ui/Sheet/slots.tsx +75 -0
- package/src/ui/Sheet/types.ts +195 -0
- package/src/ui/SliderCaptcha/README.md +61 -0
- package/src/ui/SliderCaptcha/index.tsx +816 -0
- package/src/ui/Switch/README.md +143 -0
- package/src/ui/Switch/index.tsx +1092 -0
- package/src/ui/Text/README.md +157 -0
- package/src/ui/Text/index.tsx +450 -0
- package/src/ui/TextInput/README.md +197 -0
- package/src/ui/TextInput/TextInputPrimitive.tsx +44 -0
- package/src/ui/TextInput/index.tsx +942 -0
- package/src/ui/WheelColumn/README.md +104 -0
- package/src/ui/WheelColumn/ZKitWheelPickerNativeComponent.tsx +68 -0
- package/src/ui/WheelColumn/constants.ts +1 -0
- package/src/ui/WheelColumn/index.tsx +826 -0
- package/zkit-ui.podspec +19 -0
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
# Checkbox
|
|
2
|
+
|
|
3
|
+
Checkbox 是三端一致的复选框组件,适合协议勾选、多选列表、批量选择和“全选/部分选中”入口。组件使用自绘 Pressable + Reanimated 路径,而不是依赖平台原生 checkbox,以保证 iOS / Android / Web 的尺寸、动效、主题和三态表现一致。
|
|
4
|
+
|
|
5
|
+
## 设计约定
|
|
6
|
+
|
|
7
|
+
- 状态模型统一为 `checked/defaultChecked/onChange`
|
|
8
|
+
- 三态只通过 `checked="indeterminate"` 表达,不再提供独立 `indeterminate` 覆盖字段
|
|
9
|
+
- 受控模式完全跟随外部 `checked`,不会乐观漂移
|
|
10
|
+
- 非受控模式先在 UI 线程推进动画,再同步内部状态
|
|
11
|
+
- `CheckboxGroup` 使用 `value/defaultValue/onChange` 管理选中集合
|
|
12
|
+
- 默认触控热区至少补到 `wp(44)`,小尺寸也保持可点性
|
|
13
|
+
|
|
14
|
+
## 基础用法
|
|
15
|
+
|
|
16
|
+
```tsx
|
|
17
|
+
import * as React from 'react';
|
|
18
|
+
import { Checkbox } from 'zkit-ui';
|
|
19
|
+
|
|
20
|
+
export function Demo() {
|
|
21
|
+
const [checked, setChecked] = React.useState(false);
|
|
22
|
+
|
|
23
|
+
return (
|
|
24
|
+
<Checkbox
|
|
25
|
+
checked={checked}
|
|
26
|
+
onChange={setChecked}
|
|
27
|
+
label="我已阅读并同意"
|
|
28
|
+
/>
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## 三态与全选
|
|
34
|
+
|
|
35
|
+
`checked` 支持 `false | true | 'indeterminate'`。用户点击半选态时会切换到 `true`,适合“部分选中 -> 全选”的直觉路径。
|
|
36
|
+
|
|
37
|
+
```tsx
|
|
38
|
+
const allChecked = selected.length === items.length;
|
|
39
|
+
const partiallyChecked = selected.length > 0 && !allChecked;
|
|
40
|
+
|
|
41
|
+
<Checkbox
|
|
42
|
+
checked={partiallyChecked ? 'indeterminate' : allChecked}
|
|
43
|
+
onChange={(next) => {
|
|
44
|
+
setSelected(next ? items.map((item) => item.id) : []);
|
|
45
|
+
}}
|
|
46
|
+
label="全部"
|
|
47
|
+
/>;
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## CheckboxGroup
|
|
51
|
+
|
|
52
|
+
```tsx
|
|
53
|
+
import { Checkbox, CheckboxGroup } from 'zkit-ui';
|
|
54
|
+
import { wp } from 'zkit-tools';
|
|
55
|
+
|
|
56
|
+
const options = [
|
|
57
|
+
{ id: 'motion', label: '动画 tokens' },
|
|
58
|
+
{ id: 'forms', label: '表单控件' },
|
|
59
|
+
{ id: 'overlays', label: '浮层服务' },
|
|
60
|
+
];
|
|
61
|
+
|
|
62
|
+
export function Demo() {
|
|
63
|
+
const [value, setValue] = React.useState<string[]>(['motion']);
|
|
64
|
+
|
|
65
|
+
return (
|
|
66
|
+
<CheckboxGroup
|
|
67
|
+
value={value}
|
|
68
|
+
onChange={setValue}
|
|
69
|
+
orientation="vertical"
|
|
70
|
+
gap={wp(10)}
|
|
71
|
+
tone="success"
|
|
72
|
+
>
|
|
73
|
+
{options.map((option) => (
|
|
74
|
+
<Checkbox key={option.id} value={option.id} label={option.label} />
|
|
75
|
+
))}
|
|
76
|
+
</CheckboxGroup>
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## 外观与主题
|
|
82
|
+
|
|
83
|
+
```tsx
|
|
84
|
+
<Checkbox label="默认" />
|
|
85
|
+
<Checkbox label="柔和" variant="soft" />
|
|
86
|
+
<Checkbox label="描边" variant="outline" />
|
|
87
|
+
<Checkbox label="成功色" tone="success" />
|
|
88
|
+
<Checkbox label="圆形" shape="circle" />
|
|
89
|
+
<Checkbox label="自定义主色" color="#0EA5E9" />
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
像素类自定义值应在调用侧用 `wp(...)` 计算后传入:
|
|
93
|
+
|
|
94
|
+
```tsx
|
|
95
|
+
<Checkbox
|
|
96
|
+
label="大尺寸"
|
|
97
|
+
layout={{
|
|
98
|
+
indicatorSize: wp(24),
|
|
99
|
+
indicatorRadius: wp(7),
|
|
100
|
+
gap: wp(12),
|
|
101
|
+
}}
|
|
102
|
+
/>
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## 自定义内容
|
|
106
|
+
|
|
107
|
+
`children` 支持 render-prop。根节点本身就是可点击区域,子节点通常只读取状态做视觉变化,不需要再绑定一次点击。
|
|
108
|
+
|
|
109
|
+
```tsx
|
|
110
|
+
<Checkbox checked={checked} onChange={setChecked} showIndicator={false}>
|
|
111
|
+
{({ checked }) => (
|
|
112
|
+
<Text tone={checked ? 'primary' : 'muted'}>
|
|
113
|
+
{checked ? '已选择' : '未选择'}
|
|
114
|
+
</Text>
|
|
115
|
+
)}
|
|
116
|
+
</Checkbox>
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
需要完全替换指示器时使用 `indicator`,或在自定义内容中放置 `CheckboxIndicator`:
|
|
120
|
+
|
|
121
|
+
```tsx
|
|
122
|
+
<Checkbox
|
|
123
|
+
checked={checked}
|
|
124
|
+
onChange={setChecked}
|
|
125
|
+
indicator={({ indeterminate }) => (
|
|
126
|
+
<YourIcon name={indeterminate ? 'minus' : 'check'} />
|
|
127
|
+
)}
|
|
128
|
+
label="自定义指示器"
|
|
129
|
+
/>
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## Props
|
|
133
|
+
|
|
134
|
+
Checkbox 透传 React Native `Pressable` 的常用属性和事件;组件自身固定使用 `accessibilityRole="checkbox"`,并维护 `checked/disabled` 状态。
|
|
135
|
+
|
|
136
|
+
### 状态
|
|
137
|
+
|
|
138
|
+
- `checked?: boolean | 'indeterminate'`:受控选中态。
|
|
139
|
+
- `defaultChecked?: boolean | 'indeterminate'`:非受控初始状态,默认 `false`。
|
|
140
|
+
- `onChange?: (checked: boolean | 'indeterminate') => void`:状态变化回调。
|
|
141
|
+
- `disabled?: boolean`:禁用,默认 `false`。
|
|
142
|
+
- `value?: string | number`:在 `CheckboxGroup` 内参与选中集合。
|
|
143
|
+
|
|
144
|
+
### 外观
|
|
145
|
+
|
|
146
|
+
- `size?: 'sm' | 'md' | 'lg'`:尺寸,默认 `'md'`。
|
|
147
|
+
- `tone?: 'primary' | 'neutral' | 'success' | 'warning' | 'danger' | 'info'`:语义色,默认 `'primary'`。
|
|
148
|
+
- `variant?: 'solid' | 'soft' | 'outline'`:选中态视觉样式,默认 `'solid'`。
|
|
149
|
+
- `shape?: 'rounded' | 'square' | 'circle'`:指示器形状,默认 `'rounded'`。
|
|
150
|
+
- `color?: string`:主色覆盖,支持主题 token、语义色或颜色字符串。
|
|
151
|
+
- `colors?: CheckboxColors`:结构化颜色覆盖。
|
|
152
|
+
- `layout?: CheckboxLayout`:结构化尺寸覆盖。
|
|
153
|
+
- `duration?: number`:状态切换动画时长,默认 `170`。
|
|
154
|
+
|
|
155
|
+
### 内容
|
|
156
|
+
|
|
157
|
+
- `label?: ReactNode`:快捷主文案;字符串会使用组件库 `Text` 渲染,并可推导 `accessibilityLabel`。
|
|
158
|
+
- `description?: ReactNode`:快捷辅助文案。
|
|
159
|
+
- `labelPlacement?: 'start' | 'end'`:文案位于指示器的逻辑起点或终点,默认 `'end'`,RTL 下会自动调整视觉顺序。
|
|
160
|
+
- `children?: ReactNode | ((slot: CheckboxSlotProps) => ReactNode)`:自定义内容区域。
|
|
161
|
+
- `showIndicator?: boolean`:是否渲染内置指示器,默认 `true`。
|
|
162
|
+
- `indicator?: ReactNode | ((slot: CheckboxSlotProps) => ReactNode)`:自定义指示器内容。
|
|
163
|
+
|
|
164
|
+
### 样式 escape hatch
|
|
165
|
+
|
|
166
|
+
- `style?: Pressable['style']`:根 Pressable 样式。
|
|
167
|
+
- `contentStyle?: StyleProp<ViewStyle>`:内容行样式。
|
|
168
|
+
- `indicatorStyle?: StyleProp<ViewStyle>`:指示器样式。
|
|
169
|
+
- `labelStyle?: StyleProp<TextStyle>`:快捷主文案样式。
|
|
170
|
+
- `descriptionStyle?: StyleProp<TextStyle>`:快捷辅助文案样式。
|
|
171
|
+
|
|
172
|
+
### CheckboxGroup
|
|
173
|
+
|
|
174
|
+
- `value?: readonly Array<string | number>`:受控选中值数组。
|
|
175
|
+
- `defaultValue?: readonly Array<string | number>`:非受控初始选中值数组。
|
|
176
|
+
- `onChange?: (value: Array<string | number>) => void`:选中集合变化回调。
|
|
177
|
+
- `disabled?: boolean`:组禁用。
|
|
178
|
+
- `orientation?: 'horizontal' | 'vertical'`:布局方向,默认 `'horizontal'`。
|
|
179
|
+
- `align?: 'start' | 'center' | 'end' | 'stretch'`:交叉轴对齐,默认 `'start'`。
|
|
180
|
+
- `wrap?: boolean`:横向布局是否换行,默认 `false`。
|
|
181
|
+
- `gap?: number` / `rowGap?: number` / `columnGap?: number`:组内间距,默认 `wp(12)`。
|
|
182
|
+
- `size` / `tone` / `variant` / `shape` / `color` / `colors` / `layout`:作为组内 Checkbox 的默认外观配置,单个 Checkbox 传入同名 props 时优先生效。
|
|
183
|
+
|
|
184
|
+
## 类型
|
|
185
|
+
|
|
186
|
+
```ts
|
|
187
|
+
type CheckboxCheckedState = boolean | 'indeterminate';
|
|
188
|
+
|
|
189
|
+
type CheckboxColors = {
|
|
190
|
+
checkedBackground?: string;
|
|
191
|
+
checkedBorder?: string;
|
|
192
|
+
checkedIndicator?: string;
|
|
193
|
+
indeterminateBackground?: string;
|
|
194
|
+
indeterminateBorder?: string;
|
|
195
|
+
indeterminateIndicator?: string;
|
|
196
|
+
uncheckedBackground?: string;
|
|
197
|
+
uncheckedBorder?: string;
|
|
198
|
+
focusRing?: string;
|
|
199
|
+
};
|
|
200
|
+
|
|
201
|
+
type CheckboxLayout = {
|
|
202
|
+
indicatorSize?: number;
|
|
203
|
+
indicatorRadius?: number;
|
|
204
|
+
indicatorBorderWidth?: number;
|
|
205
|
+
indicatorIconSize?: number;
|
|
206
|
+
gap?: number;
|
|
207
|
+
minTouchTarget?: number;
|
|
208
|
+
focusRingWidth?: number;
|
|
209
|
+
focusRingOffset?: number;
|
|
210
|
+
};
|
|
211
|
+
```
|