react-native-system-ui 1.0.4 → 1.0.5

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.
Files changed (209) hide show
  1. package/README.md +2 -2
  2. package/dist/cjs/components/action-sheet/ActionSheet.js +1 -1
  3. package/dist/cjs/components/action-sheet/types.js +1 -0
  4. package/dist/cjs/components/area/types.js +1 -0
  5. package/dist/cjs/components/avatar/types.js +1 -0
  6. package/dist/cjs/components/badge/types.js +1 -0
  7. package/dist/cjs/components/button/types.js +1 -0
  8. package/dist/cjs/components/calendar/types.js +1 -0
  9. package/dist/cjs/components/cascader/types.js +1 -0
  10. package/dist/cjs/components/cell/types.js +1 -0
  11. package/dist/cjs/components/checkbox/Checkbox.js +1 -1
  12. package/dist/cjs/components/checkbox/types.js +1 -0
  13. package/dist/cjs/components/circle/types.js +1 -0
  14. package/dist/cjs/components/collapse/Collapse.js +1 -1
  15. package/dist/cjs/components/collapse/types.js +1 -0
  16. package/dist/cjs/components/config-provider/locale/types.js +1 -0
  17. package/dist/cjs/components/config-provider/types.js +1 -0
  18. package/dist/cjs/components/count-down/types.js +1 -0
  19. package/dist/cjs/components/datetime-picker/types.js +1 -0
  20. package/dist/cjs/components/dialog/Dialog.js +1 -1
  21. package/dist/cjs/components/dialog/types.js +1 -0
  22. package/dist/cjs/components/divider/types.js +1 -0
  23. package/dist/cjs/components/empty/types.js +1 -0
  24. package/dist/cjs/components/error-boundary/types.js +1 -0
  25. package/dist/cjs/components/field/types.js +1 -0
  26. package/dist/cjs/components/flex/types.js +1 -0
  27. package/dist/cjs/components/form/Form.js +1 -1
  28. package/dist/cjs/components/form/FormItem.js +1 -1
  29. package/dist/cjs/components/form/FormList.js +1 -1
  30. package/dist/cjs/components/form/types.js +1 -0
  31. package/dist/cjs/components/grid/types.js +1 -0
  32. package/dist/cjs/components/image/types.js +1 -0
  33. package/dist/cjs/components/image-preview/ImagePreview.js +1 -1
  34. package/dist/cjs/components/image-preview/types.js +1 -0
  35. package/dist/cjs/components/input/types.js +1 -0
  36. package/dist/cjs/components/loading/types.js +1 -0
  37. package/dist/cjs/components/nav-bar/NavBar.js +1 -1
  38. package/dist/cjs/components/nav-bar/types.js +1 -0
  39. package/dist/cjs/components/notice-bar/NoticeBar.js +1 -1
  40. package/dist/cjs/components/notice-bar/types.js +1 -0
  41. package/dist/cjs/components/notify/types.js +1 -0
  42. package/dist/cjs/components/number-keyboard/types.js +1 -0
  43. package/dist/cjs/components/overlay/types.js +1 -0
  44. package/dist/cjs/components/password-input/types.js +1 -0
  45. package/dist/cjs/components/picker/Picker.js +1 -1
  46. package/dist/cjs/components/picker/types.js +1 -0
  47. package/dist/cjs/components/popup/Popup.js +1 -1
  48. package/dist/cjs/components/popup/types.js +1 -0
  49. package/dist/cjs/components/portal/types.js +1 -0
  50. package/dist/cjs/components/progress/types.js +1 -0
  51. package/dist/cjs/components/radio/types.js +1 -0
  52. package/dist/cjs/components/safe-area-view/types.js +1 -0
  53. package/dist/cjs/components/search/types.js +1 -0
  54. package/dist/cjs/components/selector/types.js +1 -0
  55. package/dist/cjs/components/share-sheet/ShareSheet.js +1 -1
  56. package/dist/cjs/components/share-sheet/types.js +1 -0
  57. package/dist/cjs/components/sidebar/types.js +1 -0
  58. package/dist/cjs/components/skeleton/types.js +1 -0
  59. package/dist/cjs/components/slider/Slider.js +1 -1
  60. package/dist/cjs/components/slider/types.js +1 -0
  61. package/dist/cjs/components/space/types.js +1 -0
  62. package/dist/cjs/components/stepper/types.js +1 -0
  63. package/dist/cjs/components/swiper/types.js +1 -0
  64. package/dist/cjs/components/switch/types.js +1 -0
  65. package/dist/cjs/components/tabbar/types.js +1 -0
  66. package/dist/cjs/components/tabs/Tabs.js +1 -1
  67. package/dist/cjs/components/tabs/types.js +1 -0
  68. package/dist/cjs/components/tag/types.js +1 -0
  69. package/dist/cjs/components/theme.js +1 -0
  70. package/dist/cjs/components/toast/Toast.js +1 -1
  71. package/dist/cjs/components/toast/types.js +1 -0
  72. package/dist/cjs/components/typography/types.js +1 -0
  73. package/dist/cjs/components/water-mark/types.js +1 -0
  74. package/dist/es/components/action-sheet/ActionSheet.js +1 -1
  75. package/dist/es/components/action-sheet/types.js +1 -0
  76. package/dist/es/components/area/types.js +1 -0
  77. package/dist/es/components/avatar/types.js +1 -0
  78. package/dist/es/components/badge/types.js +1 -0
  79. package/dist/es/components/button/types.js +1 -0
  80. package/dist/es/components/calendar/types.js +1 -0
  81. package/dist/es/components/cascader/types.js +1 -0
  82. package/dist/es/components/cell/types.js +1 -0
  83. package/dist/es/components/checkbox/Checkbox.js +1 -1
  84. package/dist/es/components/checkbox/types.js +1 -0
  85. package/dist/es/components/circle/types.js +1 -0
  86. package/dist/es/components/collapse/Collapse.js +1 -1
  87. package/dist/es/components/collapse/types.js +1 -0
  88. package/dist/es/components/config-provider/locale/types.js +1 -0
  89. package/dist/es/components/config-provider/types.js +1 -0
  90. package/dist/es/components/count-down/types.js +1 -0
  91. package/dist/es/components/datetime-picker/types.js +1 -0
  92. package/dist/es/components/dialog/Dialog.js +1 -1
  93. package/dist/es/components/dialog/types.js +1 -0
  94. package/dist/es/components/divider/types.js +1 -0
  95. package/dist/es/components/empty/types.js +1 -0
  96. package/dist/es/components/error-boundary/types.js +1 -0
  97. package/dist/es/components/field/types.js +1 -0
  98. package/dist/es/components/flex/types.js +1 -0
  99. package/dist/es/components/form/Form.js +1 -1
  100. package/dist/es/components/form/FormItem.js +1 -1
  101. package/dist/es/components/form/FormList.js +1 -1
  102. package/dist/es/components/form/types.js +1 -0
  103. package/dist/es/components/grid/types.js +1 -0
  104. package/dist/es/components/image/types.js +1 -0
  105. package/dist/es/components/image-preview/ImagePreview.js +1 -1
  106. package/dist/es/components/image-preview/types.js +1 -0
  107. package/dist/es/components/input/types.js +1 -0
  108. package/dist/es/components/loading/types.js +1 -0
  109. package/dist/es/components/nav-bar/NavBar.js +1 -1
  110. package/dist/es/components/nav-bar/types.js +1 -0
  111. package/dist/es/components/notice-bar/NoticeBar.js +1 -1
  112. package/dist/es/components/notice-bar/types.js +1 -0
  113. package/dist/es/components/notify/types.js +1 -0
  114. package/dist/es/components/number-keyboard/types.js +1 -0
  115. package/dist/es/components/overlay/types.js +1 -0
  116. package/dist/es/components/password-input/types.js +1 -0
  117. package/dist/es/components/picker/Picker.js +1 -1
  118. package/dist/es/components/picker/types.js +1 -0
  119. package/dist/es/components/popup/Popup.js +1 -1
  120. package/dist/es/components/popup/types.js +1 -0
  121. package/dist/es/components/portal/types.js +1 -0
  122. package/dist/es/components/progress/types.js +1 -0
  123. package/dist/es/components/radio/types.js +1 -0
  124. package/dist/es/components/safe-area-view/types.js +1 -0
  125. package/dist/es/components/search/types.js +1 -0
  126. package/dist/es/components/selector/types.js +1 -0
  127. package/dist/es/components/share-sheet/ShareSheet.js +1 -1
  128. package/dist/es/components/share-sheet/types.js +1 -0
  129. package/dist/es/components/sidebar/types.js +1 -0
  130. package/dist/es/components/skeleton/types.js +1 -0
  131. package/dist/es/components/slider/Slider.js +1 -1
  132. package/dist/es/components/slider/types.js +1 -0
  133. package/dist/es/components/space/types.js +1 -0
  134. package/dist/es/components/stepper/types.js +1 -0
  135. package/dist/es/components/swiper/types.js +1 -0
  136. package/dist/es/components/switch/types.js +1 -0
  137. package/dist/es/components/tabbar/types.js +1 -0
  138. package/dist/es/components/tabs/Tabs.js +1 -1
  139. package/dist/es/components/tabs/types.js +1 -0
  140. package/dist/es/components/tag/types.js +1 -0
  141. package/dist/es/components/theme.js +1 -0
  142. package/dist/es/components/toast/Toast.js +1 -1
  143. package/dist/es/components/toast/types.js +1 -0
  144. package/dist/es/components/typography/types.js +1 -0
  145. package/dist/es/components/water-mark/types.js +1 -0
  146. package/dist/types/components/action-sheet/types.d.ts +87 -0
  147. package/dist/types/components/area/types.d.ts +20 -0
  148. package/dist/types/components/avatar/types.d.ts +62 -0
  149. package/dist/types/components/badge/types.d.ts +57 -0
  150. package/dist/types/components/button/types.d.ts +109 -0
  151. package/dist/types/components/calendar/types.d.ts +111 -0
  152. package/dist/types/components/cascader/types.d.ts +142 -0
  153. package/dist/types/components/cell/types.d.ts +112 -0
  154. package/dist/types/components/checkbox/types.d.ts +99 -0
  155. package/dist/types/components/circle/types.d.ts +51 -0
  156. package/dist/types/components/collapse/types.d.ts +45 -0
  157. package/dist/types/components/config-provider/locale/types.d.ts +130 -0
  158. package/dist/types/components/config-provider/types.d.ts +10 -0
  159. package/dist/types/components/count-down/types.d.ts +29 -0
  160. package/dist/types/components/datetime-picker/types.d.ts +38 -0
  161. package/dist/types/components/dialog/types.d.ts +70 -0
  162. package/dist/types/components/divider/types.d.ts +48 -0
  163. package/dist/types/components/empty/types.d.ts +44 -0
  164. package/dist/types/components/error-boundary/types.d.ts +18 -0
  165. package/dist/types/components/field/types.d.ts +86 -0
  166. package/dist/types/components/flex/types.d.ts +37 -0
  167. package/dist/types/components/form/Form.d.ts +6 -0
  168. package/dist/types/components/form/types.d.ts +68 -0
  169. package/dist/types/components/grid/types.d.ts +77 -0
  170. package/dist/types/components/image/types.d.ts +53 -0
  171. package/dist/types/components/image-preview/types.d.ts +55 -0
  172. package/dist/types/components/input/types.d.ts +42 -0
  173. package/dist/types/components/loading/types.d.ts +32 -0
  174. package/dist/types/components/nav-bar/types.d.ts +67 -0
  175. package/dist/types/components/notice-bar/types.d.ts +26 -0
  176. package/dist/types/components/notify/types.d.ts +64 -0
  177. package/dist/types/components/number-keyboard/types.d.ts +35 -0
  178. package/dist/types/components/overlay/types.d.ts +13 -0
  179. package/dist/types/components/password-input/types.d.ts +35 -0
  180. package/dist/types/components/picker/types.d.ts +73 -0
  181. package/dist/types/components/popup/types.d.ts +41 -0
  182. package/dist/types/components/portal/types.d.ts +1 -0
  183. package/dist/types/components/progress/types.d.ts +51 -0
  184. package/dist/types/components/radio/types.d.ts +95 -0
  185. package/dist/types/components/safe-area-view/types.d.ts +1 -0
  186. package/dist/types/components/search/types.d.ts +28 -0
  187. package/dist/types/components/selector/types.d.ts +74 -0
  188. package/dist/types/components/share-sheet/types.d.ts +26 -0
  189. package/dist/types/components/sidebar/types.d.ts +64 -0
  190. package/dist/types/components/skeleton/types.d.ts +45 -0
  191. package/dist/types/components/slider/types.d.ts +38 -0
  192. package/dist/types/components/space/types.d.ts +39 -0
  193. package/dist/types/components/stepper/types.d.ts +46 -0
  194. package/dist/types/components/swiper/types.d.ts +29 -0
  195. package/dist/types/components/switch/types.d.ts +33 -0
  196. package/dist/types/components/tabbar/types.d.ts +39 -0
  197. package/dist/types/components/tabs/types.d.ts +64 -0
  198. package/dist/types/components/tag/types.d.ts +69 -0
  199. package/dist/types/components/theme.d.ts +112 -0
  200. package/dist/types/components/toast/types.d.ts +1 -0
  201. package/dist/types/components/typography/types.d.ts +66 -0
  202. package/dist/types/components/water-mark/types.d.ts +58 -0
  203. package/package.json +3 -3
  204. package/dist/cjs/components/form/FormContext.js +0 -1
  205. package/dist/cjs/components/form/utils.js +0 -1
  206. package/dist/es/components/form/FormContext.js +0 -1
  207. package/dist/es/components/form/utils.js +0 -1
  208. package/dist/types/components/form/FormContext.d.ts +0 -2
  209. package/dist/types/components/form/utils.d.ts +0 -7
@@ -0,0 +1,70 @@
1
+ import type React from 'react';
2
+ import type { StyleProp, TextStyle, ViewProps, ViewStyle } from 'react-native';
3
+ import type { DeepPartial } from '../../types';
4
+ import type { DialogTokens } from './tokens';
5
+ export type DialogTheme = 'default' | 'round-button';
6
+ export type DialogMessageAlign = 'left' | 'center' | 'right';
7
+ export type DialogBeforeCloseAction = 'confirm' | 'cancel' | 'close';
8
+ export interface DialogActionState {
9
+ loading?: boolean;
10
+ disabled?: boolean;
11
+ }
12
+ export interface DialogProps extends Omit<ViewProps, 'children'> {
13
+ visible: boolean;
14
+ title?: React.ReactNode;
15
+ message?: React.ReactNode;
16
+ messageAlign?: DialogMessageAlign;
17
+ theme?: DialogTheme;
18
+ width?: number | string;
19
+ closeable?: boolean;
20
+ closeIcon?: React.ReactNode;
21
+ overlay?: boolean;
22
+ overlayStyle?: StyleProp<ViewStyle>;
23
+ overlayTestID?: string;
24
+ closeOnBackPress?: boolean;
25
+ closeOnPopstate?: boolean;
26
+ closeOnOverlayPress?: boolean;
27
+ closeOnClickOverlay?: boolean;
28
+ onClickOverlay?: () => void;
29
+ onClickCloseIcon?: () => void;
30
+ beforeClose?: (action: DialogBeforeCloseAction) => boolean | Promise<boolean>;
31
+ showCancelButton?: boolean;
32
+ cancelButtonText?: React.ReactNode;
33
+ cancelButtonColor?: string;
34
+ cancelProps?: DialogActionState;
35
+ showConfirmButton?: boolean;
36
+ confirmButtonText?: React.ReactNode;
37
+ confirmButtonColor?: string;
38
+ confirmProps?: DialogActionState;
39
+ footer?: React.ReactNode;
40
+ contentStyle?: StyleProp<ViewStyle>;
41
+ titleStyle?: StyleProp<TextStyle>;
42
+ messageStyle?: StyleProp<TextStyle>;
43
+ tokensOverride?: DeepPartial<DialogTokens>;
44
+ style?: StyleProp<ViewStyle>;
45
+ children?: React.ReactNode;
46
+ onCancel?: () => void | boolean | Promise<void | boolean>;
47
+ onConfirm?: () => void | boolean | Promise<void | boolean>;
48
+ onClose?: () => void | boolean | Promise<void | boolean>;
49
+ onClosed?: () => void;
50
+ }
51
+ export type DialogShowOptions = Omit<DialogProps, 'visible'>;
52
+ export type DialogAlertOptions = Omit<DialogShowOptions, 'showCancelButton' | 'onCancel'>;
53
+ export type DialogConfirmOptions = DialogShowOptions;
54
+ export type DialogImperativeMode = 'show' | 'alert' | 'confirm';
55
+ export type DialogSetDefaultOptions = {
56
+ (options: DialogShowOptions): void;
57
+ (mode: DialogImperativeMode, options: DialogShowOptions): void;
58
+ };
59
+ export type DialogResetDefaultOptions = {
60
+ (mode?: DialogImperativeMode): void;
61
+ };
62
+ export interface DialogStatic {
63
+ Host: React.ComponentType<any>;
64
+ show: (options?: DialogShowOptions) => () => void;
65
+ alert: (options?: DialogAlertOptions) => Promise<void>;
66
+ confirm: (options?: DialogConfirmOptions) => Promise<boolean>;
67
+ clear: () => void;
68
+ setDefaultOptions: DialogSetDefaultOptions;
69
+ resetDefaultOptions: DialogResetDefaultOptions;
70
+ }
@@ -0,0 +1,48 @@
1
+ import type { StyleProp, TextStyle, ViewProps, ViewStyle } from 'react-native';
2
+ import type { DeepPartial } from '../../types';
3
+ export type DividerContentPosition = 'left' | 'center' | 'right';
4
+ export interface DividerTokens {
5
+ defaults: {
6
+ dashed: boolean;
7
+ hairline: boolean;
8
+ contentPosition: DividerContentPosition;
9
+ };
10
+ layout: {
11
+ container: ViewStyle;
12
+ contentWrapper: ViewStyle;
13
+ text: TextStyle;
14
+ hairlineWrapper: ViewStyle;
15
+ };
16
+ colors: {
17
+ line: string;
18
+ text: string;
19
+ };
20
+ typography: {
21
+ fontSize: number;
22
+ lineHeight: number;
23
+ fontFamily: string;
24
+ fontWeight: TextStyle['fontWeight'];
25
+ };
26
+ sizing: {
27
+ sideMinFlex: number;
28
+ };
29
+ borders: {
30
+ thickness: number;
31
+ };
32
+ spacing: {
33
+ vertical: number;
34
+ contentPadding: number;
35
+ };
36
+ }
37
+ export interface DividerProps extends ViewProps {
38
+ children?: React.ReactNode;
39
+ type?: 'horizontal' | 'vertical';
40
+ orientation?: 'horizontal' | 'vertical';
41
+ dashed?: boolean;
42
+ hairline?: boolean;
43
+ contentPosition?: DividerContentPosition;
44
+ textStyle?: StyleProp<TextStyle>;
45
+ contentStyle?: StyleProp<ViewStyle>;
46
+ lineColor?: string;
47
+ tokensOverride?: DeepPartial<DividerTokens>;
48
+ }
@@ -0,0 +1,44 @@
1
+ import type { StyleProp, TextStyle, ViewProps, ViewStyle } from 'react-native';
2
+ import type { DeepPartial } from '../../types';
3
+ export type EmptyImage = 'default' | 'error' | 'network' | 'search';
4
+ export interface EmptyTokens {
5
+ defaults: {
6
+ image: EmptyImage;
7
+ gap: number;
8
+ };
9
+ layout: {
10
+ container: ViewStyle;
11
+ imageWrapper: ViewStyle;
12
+ descriptionText: TextStyle;
13
+ footer: ViewStyle;
14
+ };
15
+ colors: {
16
+ description: string;
17
+ icon: string;
18
+ imageBackground: string;
19
+ };
20
+ typography: {
21
+ descriptionSize: number;
22
+ descriptionLineHeight: number;
23
+ descriptionFontFamily: string;
24
+ descriptionFontWeight: TextStyle['fontWeight'];
25
+ };
26
+ sizing: {
27
+ image: number;
28
+ iconScale: number;
29
+ };
30
+ spacing: {
31
+ descriptionPaddingHorizontal: number;
32
+ footerMarginTop: number;
33
+ };
34
+ }
35
+ export interface EmptyProps extends ViewProps {
36
+ image?: EmptyImage | string | React.ReactNode;
37
+ imageSize?: number;
38
+ imageStyle?: StyleProp<ViewStyle>;
39
+ description?: React.ReactNode;
40
+ descriptionStyle?: StyleProp<TextStyle>;
41
+ children?: React.ReactNode;
42
+ gap?: number;
43
+ tokensOverride?: DeepPartial<EmptyTokens>;
44
+ }
@@ -0,0 +1,18 @@
1
+ import type React from 'react';
2
+ export interface ErrorBoundaryProps {
3
+ /** Fallback UI when an error is caught. Can be a ReactNode or a render function */
4
+ fallback?: React.ReactNode | ((error: Error, reset: () => void) => React.ReactNode);
5
+ /** Callback when an error is caught */
6
+ onError?: (error: Error, errorInfo: React.ErrorInfo) => void;
7
+ /** Callback when the error state is reset */
8
+ onReset?: () => void;
9
+ /** Children to render */
10
+ children?: React.ReactNode;
11
+ }
12
+ export interface ErrorBoundaryState {
13
+ error: Error | null;
14
+ }
15
+ export interface ErrorBoundaryRef {
16
+ /** Reset the error boundary to re-render children */
17
+ reset: () => void;
18
+ }
@@ -0,0 +1,86 @@
1
+ import type React from 'react';
2
+ import type { PressableProps, StyleProp, TextInput, TextInputProps, TextStyle, ViewStyle } from 'react-native';
3
+ import type { DeepPartial } from '../../types';
4
+ import type { FieldTokens } from './tokens';
5
+ import type { DialogShowOptions } from '../dialog/types';
6
+ import type { CellArrowDirection, CellGroupProps, CellSize } from '../cell/types';
7
+ export type FieldType = 'tel' | 'text' | 'digit' | 'number' | 'search' | 'password' | 'textarea';
8
+ export type FieldInputAlign = 'left' | 'center' | 'right';
9
+ export type FieldControlAlign = 'left' | 'center' | 'right';
10
+ export type FieldClearTrigger = 'always' | 'focus';
11
+ export type FieldFormatTrigger = 'onBlur' | 'onChange';
12
+ export type FieldAutosizeConfig = {
13
+ maxRows?: number;
14
+ minRows?: number;
15
+ };
16
+ export type FieldTooltipProps = DialogShowOptions & {
17
+ icon?: React.ReactNode;
18
+ };
19
+ export type FieldShowWordLimit = boolean | ((params: {
20
+ currentCount: number;
21
+ maxLength?: number;
22
+ }) => React.ReactNode);
23
+ export interface FieldProps extends Omit<TextInputProps, 'style' | 'value' | 'defaultValue' | 'editable' | 'onChange' | 'onChangeText'> {
24
+ label?: React.ReactNode;
25
+ labelWidth?: number;
26
+ labelAlign?: FieldInputAlign;
27
+ inputAlign?: FieldInputAlign;
28
+ controlAlign?: FieldControlAlign;
29
+ required?: boolean;
30
+ colon?: boolean;
31
+ intro?: React.ReactNode;
32
+ description?: React.ReactNode;
33
+ tooltip?: React.ReactNode | FieldTooltipProps;
34
+ error?: boolean;
35
+ errorMessage?: React.ReactNode;
36
+ errorMessageAlign?: FieldInputAlign;
37
+ disabled?: boolean;
38
+ readOnly?: boolean;
39
+ clearable?: boolean;
40
+ clearTrigger?: FieldClearTrigger;
41
+ clearIcon?: React.ReactNode;
42
+ leftIcon?: React.ReactNode;
43
+ rightIcon?: React.ReactNode;
44
+ prefix?: React.ReactNode;
45
+ suffix?: React.ReactNode;
46
+ button?: React.ReactNode;
47
+ extra?: React.ReactNode;
48
+ value?: string;
49
+ defaultValue?: string;
50
+ type?: FieldType;
51
+ rows?: number;
52
+ autoSize?: boolean | FieldAutosizeConfig;
53
+ formatter?: (value: string) => string;
54
+ formatTrigger?: FieldFormatTrigger;
55
+ showWordLimit?: FieldShowWordLimit;
56
+ onOverlimit?: (value: string) => void;
57
+ onChangeText?: (value: string) => void;
58
+ onClear?: () => void;
59
+ onClick?: () => void;
60
+ onClickInput?: () => void;
61
+ onClickLeftIcon?: () => void;
62
+ onClickRightIcon?: () => void;
63
+ border?: boolean;
64
+ center?: boolean;
65
+ clickable?: boolean;
66
+ isLink?: boolean;
67
+ arrowDirection?: CellArrowDirection;
68
+ size?: CellSize;
69
+ titleStyle?: StyleProp<TextStyle>;
70
+ contentStyle?: StyleProp<ViewStyle>;
71
+ inputStyle?: StyleProp<TextStyle>;
72
+ labelStyle?: StyleProp<TextStyle>;
73
+ introStyle?: StyleProp<TextStyle>;
74
+ errorMessageStyle?: StyleProp<TextStyle>;
75
+ tokensOverride?: DeepPartial<FieldTokens>;
76
+ style?: StyleProp<ViewStyle>;
77
+ androidRipple?: PressableProps['android_ripple'];
78
+ children?: React.ReactNode;
79
+ }
80
+ export interface FieldInstance {
81
+ focus: () => void;
82
+ blur: () => void;
83
+ clear: () => void;
84
+ nativeElement: TextInput | null;
85
+ }
86
+ export type FieldGroupProps = CellGroupProps;
@@ -0,0 +1,37 @@
1
+ import type React from 'react';
2
+ import type { StyleProp, ViewStyle } from 'react-native';
3
+ import type { DeepPartial } from '../../types';
4
+ export type FlexDirection = 'row' | 'row-reverse' | 'column' | 'column-reverse';
5
+ export type FlexWrap = 'nowrap' | 'wrap' | 'wrap-reverse';
6
+ export type FlexAlign = 'start' | 'center' | 'end' | 'baseline' | 'stretch';
7
+ export type FlexJustify = 'start' | 'end' | 'center' | 'around' | 'between';
8
+ export interface FlexTokens {
9
+ defaults: {
10
+ direction: FlexDirection;
11
+ wrap: FlexWrap;
12
+ gutter: number | [number, number];
13
+ align: FlexAlign;
14
+ justify: FlexJustify;
15
+ columns: number;
16
+ };
17
+ layout: {
18
+ container: ViewStyle;
19
+ };
20
+ }
21
+ export interface FlexProps {
22
+ children?: React.ReactNode;
23
+ direction?: FlexDirection;
24
+ wrap?: FlexWrap;
25
+ gutter?: number | [number, number];
26
+ align?: FlexAlign;
27
+ justify?: FlexJustify;
28
+ style?: StyleProp<ViewStyle>;
29
+ columns?: number;
30
+ tokensOverride?: DeepPartial<FlexTokens>;
31
+ }
32
+ export interface FlexItemProps {
33
+ span?: number;
34
+ flex?: number | string;
35
+ style?: StyleProp<ViewStyle>;
36
+ children?: React.ReactNode;
37
+ }
@@ -1,5 +1,11 @@
1
1
  import React from 'react';
2
2
  import type { FormInstance, FormProps, FormSubscribeProps, NamePath, RegisteredFieldOptions } from './types';
3
+ export declare const normalizeTrigger: (trigger?: string | string[]) => string[];
4
+ export declare const FORM_ALL_FIELDS_KEY = "__form_all__";
5
+ export declare const toNamePath: (name?: NamePath) => (string | number)[];
6
+ export declare const serializeNamePath: (name?: NamePath) => string;
7
+ export declare const getValueByName: (source: unknown, name: NamePath) => unknown;
8
+ export declare const setValueByName: (source: Record<string, unknown>, name: NamePath, value: unknown) => Record<string, unknown>;
3
9
  export interface FormContextValue {
4
10
  getFieldValue: (name: NamePath) => unknown;
5
11
  setFieldValue: (name: NamePath, value: unknown, trigger?: string) => void;
@@ -0,0 +1,68 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { ViewProps } from 'react-native';
3
+ export type FormRuleValidateTrigger = string | string[];
4
+ export type FormRuleValidator = (value: unknown, values: Record<string, unknown>) => void | boolean | string | Promise<void | boolean | string>;
5
+ export type NamePath = string | number | (string | number)[];
6
+ export interface FormItemRule {
7
+ required?: boolean;
8
+ message?: string;
9
+ pattern?: RegExp;
10
+ len?: number;
11
+ min?: number;
12
+ max?: number;
13
+ whitespace?: boolean;
14
+ validator?: FormRuleValidator;
15
+ validateTrigger?: FormRuleValidateTrigger;
16
+ }
17
+ export interface RegisteredFieldOptions {
18
+ rules?: FormItemRule[];
19
+ dependencies?: NamePath[];
20
+ initialValue?: unknown;
21
+ validateTrigger?: FormRuleValidateTrigger;
22
+ }
23
+ export interface FormInstance {
24
+ submit: () => Promise<Record<string, unknown> | undefined>;
25
+ getFieldsValue: () => Record<string, unknown>;
26
+ setFieldsValue: (values: Record<string, unknown>, options?: {
27
+ validate?: boolean;
28
+ }) => void;
29
+ resetFields: () => void;
30
+ validateFields: (names?: NamePath[]) => Promise<Record<string, unknown>>;
31
+ getFieldError: (name: NamePath) => string[];
32
+ }
33
+ export interface FormProps extends ViewProps {
34
+ initialValues?: Record<string, unknown>;
35
+ colon?: boolean;
36
+ labelWidth?: number;
37
+ showValidateMessage?: boolean;
38
+ footer?: ReactNode;
39
+ onValuesChange?: (values: Record<string, unknown>, name: string, value: unknown) => void;
40
+ onFinish?: (values: Record<string, unknown>) => void;
41
+ children?: ReactNode;
42
+ }
43
+ export interface FormSubscribeProps {
44
+ to?: string[];
45
+ children: (changedValues: Record<string, unknown>, form: FormInstance | null) => ReactNode;
46
+ }
47
+ export interface FormItemProps {
48
+ name?: NamePath;
49
+ label?: ReactNode;
50
+ description?: ReactNode;
51
+ intro?: ReactNode;
52
+ tooltip?: ReactNode;
53
+ rules?: FormItemRule[];
54
+ dependencies?: NamePath[];
55
+ valuePropName?: string;
56
+ trigger?: string;
57
+ validateTrigger?: FormRuleValidateTrigger;
58
+ showValidateMessage?: boolean;
59
+ required?: boolean;
60
+ noStyle?: boolean;
61
+ shouldUpdate?: (prev: Record<string, unknown>, next: Record<string, unknown>) => boolean;
62
+ initialValue?: unknown;
63
+ children: ReactNode | ((payload: {
64
+ getFieldValue: (name: NamePath) => unknown;
65
+ getFieldsValue: () => Record<string, unknown>;
66
+ form: FormInstance | null;
67
+ }) => ReactNode);
68
+ }
@@ -0,0 +1,77 @@
1
+ import type { PressableProps, StyleProp, TextStyle, ViewProps, ViewStyle } from 'react-native';
2
+ import type { BadgeProps } from '../badge';
3
+ import type { DeepPartial } from '../../types';
4
+ export type GridDirection = 'vertical' | 'horizontal';
5
+ export interface GridTokens {
6
+ defaults: {
7
+ columnNum: number;
8
+ gutter: number;
9
+ border: boolean;
10
+ center: boolean;
11
+ square: boolean;
12
+ direction: GridDirection;
13
+ reverse: boolean;
14
+ clickable: boolean;
15
+ iconSize: number;
16
+ pressedOpacity: number;
17
+ textNumberOfLines: number;
18
+ };
19
+ layout: {
20
+ container: ViewStyle;
21
+ border: ViewStyle;
22
+ borderTop: ViewStyle;
23
+ borderBottom: ViewStyle;
24
+ itemContentBase: ViewStyle;
25
+ itemVertical: ViewStyle;
26
+ itemHorizontal: ViewStyle;
27
+ itemCenter: ViewStyle;
28
+ itemReverseColumn: ViewStyle;
29
+ itemReverseRow: ViewStyle;
30
+ iconWrapper: ViewStyle;
31
+ text: TextStyle;
32
+ itemBorderRight: ViewStyle;
33
+ itemBorderBottom: ViewStyle;
34
+ itemContentSquare: ViewStyle;
35
+ };
36
+ colors: {
37
+ border: string;
38
+ text: string;
39
+ background: string;
40
+ active: string;
41
+ };
42
+ typography: {
43
+ fontSize: number;
44
+ fontFamily: string;
45
+ lineHeight: number;
46
+ fontWeight: NonNullable<TextStyle['fontWeight']>;
47
+ };
48
+ spacing: {
49
+ paddingHorizontal: number;
50
+ paddingVertical: number;
51
+ iconGap: number;
52
+ };
53
+ }
54
+ export interface GridProps extends ViewProps {
55
+ children?: React.ReactNode;
56
+ columnNum?: number;
57
+ gutter?: number;
58
+ border?: boolean;
59
+ center?: boolean;
60
+ square?: boolean;
61
+ direction?: GridDirection;
62
+ reverse?: boolean;
63
+ clickable?: boolean;
64
+ iconSize?: number;
65
+ iconColor?: string;
66
+ tokensOverride?: DeepPartial<GridTokens>;
67
+ }
68
+ export interface GridItemProps extends PressableProps {
69
+ children?: React.ReactNode;
70
+ text?: React.ReactNode;
71
+ icon?: React.ReactNode | ((size: number, color: string) => React.ReactNode);
72
+ iconColor?: string;
73
+ badge?: BadgeProps;
74
+ dot?: boolean;
75
+ contentStyle?: StyleProp<ViewStyle>;
76
+ textStyle?: StyleProp<TextStyle>;
77
+ }
@@ -0,0 +1,53 @@
1
+ import type * as React from 'react';
2
+ import type { ImageProps as RNImageProps, ImageSourcePropType, ImageStyle, PressableProps, StyleProp, TextStyle, ViewStyle } from 'react-native';
3
+ import type { DeepPartial } from '../../types';
4
+ export type ImageFit = 'cover' | 'contain' | 'fill' | 'none' | 'scale-down';
5
+ export interface ImageTokens {
6
+ defaults: {
7
+ fit: ImageFit;
8
+ showLoading: boolean;
9
+ showError: boolean;
10
+ loadingText: React.ReactNode;
11
+ errorText: React.ReactNode;
12
+ iconSize: number;
13
+ loadingIndicatorBaseSize: number;
14
+ loadingLabelMarginTop: number;
15
+ roundRadius: number;
16
+ };
17
+ layout: {
18
+ container: ViewStyle;
19
+ overlay: ViewStyle;
20
+ label: TextStyle;
21
+ iconContainer: ViewStyle;
22
+ absoluteFill: ImageStyle;
23
+ };
24
+ colors: {
25
+ background: string;
26
+ text: string;
27
+ error: string;
28
+ };
29
+ }
30
+ export interface ImageProps extends Omit<RNImageProps, 'source' | 'width' | 'height'> {
31
+ src?: string;
32
+ source?: ImageSourcePropType;
33
+ width?: number | string;
34
+ height?: number | string;
35
+ radius?: number;
36
+ round?: boolean;
37
+ fit?: ImageFit;
38
+ showLoading?: boolean;
39
+ showError?: boolean;
40
+ loadingText?: React.ReactNode;
41
+ loadingIcon?: React.ReactNode;
42
+ errorIcon?: React.ReactNode;
43
+ iconSize?: number;
44
+ loadingSize?: 'small' | 'large' | number;
45
+ errorText?: React.ReactNode;
46
+ fallback?: React.ReactNode;
47
+ onPress?: PressableProps['onPress'];
48
+ alt?: string;
49
+ containerStyle?: StyleProp<ViewStyle>;
50
+ children?: React.ReactNode;
51
+ tokensOverride?: DeepPartial<ImageTokens>;
52
+ 'aria-label'?: string;
53
+ }
@@ -0,0 +1,55 @@
1
+ import React from 'react';
2
+ import type { ImageSourcePropType, StyleProp, ViewStyle } from 'react-native';
3
+ import type { PopupCloseIconPosition } from '../popup';
4
+ import type { DeepPartial } from '../../types';
5
+ import type { ImagePreviewTokens } from './tokens';
6
+ export type ImagePreviewCloseReason = 'overlay' | 'close-icon' | 'content' | 'close';
7
+ export type ImagePreviewImage = ImageSourcePropType | string;
8
+ export interface ImagePreviewProps {
9
+ visible: boolean;
10
+ images?: ImagePreviewImage[];
11
+ startPosition?: number;
12
+ swipeDuration?: number;
13
+ tokensOverride?: DeepPartial<ImagePreviewTokens>;
14
+ lazyRender?: boolean;
15
+ lazyRenderBuffer?: number;
16
+ showIndex?: boolean;
17
+ indexRender?: (ctx: {
18
+ index: number;
19
+ len: number;
20
+ }) => React.ReactNode;
21
+ showIndicators?: boolean;
22
+ closeable?: boolean;
23
+ closeIcon?: React.ReactNode;
24
+ closeIconPosition?: PopupCloseIconPosition;
25
+ overlay?: boolean;
26
+ overlayStyle?: StyleProp<ViewStyle>;
27
+ closeOnBackPress?: boolean;
28
+ closeOnPopstate?: boolean;
29
+ zIndex?: number;
30
+ duration?: number;
31
+ closeOnlyClickCloseIcon?: boolean;
32
+ safeAreaInsetTop?: boolean;
33
+ safeAreaInsetBottom?: boolean;
34
+ onChange?: (index: number) => void;
35
+ onClose?: (params: CloseParams) => void;
36
+ onClosed?: () => void;
37
+ beforeClose?: (context: CloseContext) => boolean | Promise<boolean>;
38
+ }
39
+ export interface CloseParams {
40
+ index: number;
41
+ image?: ImagePreviewImage;
42
+ }
43
+ export interface CloseContext extends CloseParams {
44
+ reason: ImagePreviewCloseReason;
45
+ }
46
+ export type ImagePreviewRef = {
47
+ swipeTo: (index: number, animated?: boolean) => void;
48
+ };
49
+ export type ImagePreviewOpenOptions = Omit<ImagePreviewProps, 'visible'>;
50
+ export type ImagePreviewDestroy = () => void;
51
+ export interface ImagePreviewStatic {
52
+ Host: React.ComponentType<Record<string, unknown>>;
53
+ open: (options: ImagePreviewOpenOptions) => ImagePreviewDestroy;
54
+ clear: () => void;
55
+ }
@@ -0,0 +1,42 @@
1
+ import type { StyleProp, TextInput, TextStyle, ViewStyle } from 'react-native';
2
+ import type { DeepPartial } from '../../types';
3
+ import type { FieldTokens } from '../field/tokens';
4
+ import type { FieldClearTrigger, FieldInputAlign, FieldProps, FieldShowWordLimit } from '../field/types';
5
+ export interface InputTokens {
6
+ defaults: {
7
+ inputAlign: FieldInputAlign;
8
+ clearTrigger: FieldClearTrigger;
9
+ border: boolean;
10
+ };
11
+ spacing: {
12
+ paddingHorizontal: number;
13
+ paddingVertical: number;
14
+ };
15
+ colors: {
16
+ background: string;
17
+ };
18
+ }
19
+ export interface InputProps extends Omit<FieldProps, 'tokensOverride'> {
20
+ align?: FieldInputAlign;
21
+ clearTrigger?: FieldClearTrigger;
22
+ onChange?: (value: string) => void;
23
+ showWordLimit?: FieldShowWordLimit;
24
+ style?: StyleProp<ViewStyle>;
25
+ inputStyle?: StyleProp<TextStyle>;
26
+ fieldTokensOverride?: DeepPartial<FieldTokens>;
27
+ tokensOverride?: DeepPartial<InputTokens>;
28
+ }
29
+ export interface InputInstance {
30
+ focus: () => void;
31
+ blur: () => void;
32
+ clear: () => void;
33
+ nativeElement: TextInput | null;
34
+ }
35
+ export interface InputTextAreaAutoSizeConfig {
36
+ minHeight?: number;
37
+ maxHeight?: number;
38
+ }
39
+ export type InputTextAreaAutoSize = boolean | InputTextAreaAutoSizeConfig;
40
+ export interface InputTextAreaProps extends Omit<InputProps, 'type' | 'autoSize' | 'autosize'> {
41
+ autoSize?: InputTextAreaAutoSize;
42
+ }
@@ -0,0 +1,32 @@
1
+ import type { StyleProp, TextStyle, ViewProps, ViewStyle } from 'react-native';
2
+ import type { DeepPartial } from '../../types';
3
+ export interface LoadingTokens {
4
+ defaults: {
5
+ size: number;
6
+ textSize: number;
7
+ vertical: boolean;
8
+ };
9
+ layout: {
10
+ container: ViewStyle;
11
+ text: TextStyle;
12
+ };
13
+ colors: {
14
+ indicator: string;
15
+ text: string;
16
+ };
17
+ spacing: {
18
+ gap: number;
19
+ };
20
+ }
21
+ export interface LoadingProps extends ViewProps {
22
+ ['aria-label']?: string;
23
+ color?: string;
24
+ size?: number;
25
+ textSize?: number;
26
+ textColor?: string;
27
+ vertical?: boolean;
28
+ children?: React.ReactNode;
29
+ textStyle?: StyleProp<TextStyle>;
30
+ contentStyle?: StyleProp<ViewStyle>;
31
+ tokensOverride?: DeepPartial<LoadingTokens>;
32
+ }