react-native-platform-components 1.2.0 → 1.4.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.
Files changed (242) hide show
  1. package/README.md +33 -31
  2. package/android/src/main/java/com/platformcomponents/PCButtonGroupView.kt +498 -0
  3. package/android/src/main/java/com/platformcomponents/PCButtonGroupViewManager.kt +191 -0
  4. package/android/src/main/java/com/platformcomponents/PCButtonSupport.kt +127 -0
  5. package/android/src/main/java/com/platformcomponents/PCButtonView.kt +345 -0
  6. package/android/src/main/java/com/platformcomponents/PCButtonViewManager.kt +126 -0
  7. package/android/src/main/java/com/platformcomponents/PCExpressive.kt +107 -0
  8. package/android/src/main/java/com/platformcomponents/PCFloatingToolbarView.kt +115 -0
  9. package/android/src/main/java/com/platformcomponents/PCFloatingToolbarViewManager.kt +65 -0
  10. package/android/src/main/java/com/platformcomponents/PCNativeThemeModule.kt +3 -0
  11. package/android/src/main/java/com/platformcomponents/PCSegmentedControlView.kt +13 -5
  12. package/android/src/main/java/com/platformcomponents/PCSegmentedControlViewManager.kt +6 -1
  13. package/android/src/main/java/com/platformcomponents/PCTextFieldView.kt +1018 -0
  14. package/android/src/main/java/com/platformcomponents/PCTextFieldViewManager.kt +248 -0
  15. package/android/src/main/java/com/platformcomponents/PlatformComponentsPackage.kt +13 -6
  16. package/android/src/main/jni/CMakeLists.txt +13 -1
  17. package/android/src/main/res/values/attrs.xml +13 -0
  18. package/android/src/main/res/values/styles.xml +183 -0
  19. package/ios/PCButton.h +10 -0
  20. package/ios/PCButton.mm +196 -0
  21. package/ios/PCButtonGroup.h +10 -0
  22. package/ios/PCButtonGroup.mm +256 -0
  23. package/ios/PCButtonGroupView.swift +254 -0
  24. package/ios/PCButtonSupport.swift +141 -0
  25. package/ios/PCButtonView.swift +155 -0
  26. package/ios/PCFloatingToolbar.h +10 -0
  27. package/ios/PCFloatingToolbar.mm +76 -0
  28. package/ios/PCFloatingToolbarView.swift +95 -0
  29. package/ios/PCNativeThemeModule.mm +13 -0
  30. package/ios/PCSelectionMenu.swift +9 -1
  31. package/ios/PCTextField.h +10 -0
  32. package/ios/PCTextField.mm +391 -0
  33. package/ios/PCTextFieldView.swift +1012 -0
  34. package/lib/commonjs/Button.js +77 -0
  35. package/lib/commonjs/Button.js.map +1 -0
  36. package/lib/commonjs/ButtonGroup.js +99 -0
  37. package/lib/commonjs/ButtonGroup.js.map +1 -0
  38. package/lib/commonjs/ButtonGroupNativeComponent.ts +121 -0
  39. package/lib/commonjs/ButtonNativeComponent.ts +76 -0
  40. package/lib/commonjs/ContextMenuNativeComponent.ts +5 -4
  41. package/lib/commonjs/DatePickerNativeComponent.ts +17 -11
  42. package/lib/commonjs/FloatingToolbar.js +69 -0
  43. package/lib/commonjs/FloatingToolbar.js.map +1 -0
  44. package/lib/commonjs/FloatingToolbarNativeComponent.ts +31 -0
  45. package/lib/commonjs/LiquidGlass.js +24 -4
  46. package/lib/commonjs/LiquidGlass.js.map +1 -1
  47. package/lib/commonjs/LiquidGlassNativeComponent.ts +6 -5
  48. package/lib/commonjs/NativePlatformComponentsTheme.js.map +1 -1
  49. package/lib/commonjs/SegmentedControl.js +11 -85
  50. package/lib/commonjs/SegmentedControl.js.map +1 -1
  51. package/lib/commonjs/SegmentedControlNativeComponent.ts +15 -11
  52. package/lib/commonjs/SelectionMenuNativeComponent.ts +6 -5
  53. package/lib/commonjs/TextField.js +195 -0
  54. package/lib/commonjs/TextField.js.map +1 -0
  55. package/lib/commonjs/TextFieldNativeComponent.ts +218 -0
  56. package/lib/commonjs/codegenTypes.js +6 -0
  57. package/lib/commonjs/codegenTypes.js.map +1 -0
  58. package/lib/commonjs/focusRegistry.js +78 -0
  59. package/lib/commonjs/focusRegistry.js.map +1 -0
  60. package/lib/commonjs/icons.js +92 -0
  61. package/lib/commonjs/icons.js.map +1 -0
  62. package/lib/commonjs/index.js +66 -0
  63. package/lib/commonjs/index.js.map +1 -1
  64. package/lib/commonjs/index.web.js +32 -2
  65. package/lib/commonjs/index.web.js.map +1 -1
  66. package/lib/commonjs/labelStyle.js +27 -0
  67. package/lib/commonjs/labelStyle.js.map +1 -0
  68. package/lib/commonjs/reactNativeInternals.d.js +2 -0
  69. package/lib/commonjs/reactNativeInternals.d.js.map +1 -0
  70. package/lib/module/Button.js +70 -0
  71. package/lib/module/Button.js.map +1 -0
  72. package/lib/module/ButtonGroup.js +92 -0
  73. package/lib/module/ButtonGroup.js.map +1 -0
  74. package/lib/module/ButtonGroupNativeComponent.ts +121 -0
  75. package/lib/module/ButtonNativeComponent.ts +76 -0
  76. package/lib/module/ContextMenuNativeComponent.ts +5 -4
  77. package/lib/module/DatePickerNativeComponent.ts +17 -11
  78. package/lib/module/FloatingToolbar.js +62 -0
  79. package/lib/module/FloatingToolbar.js.map +1 -0
  80. package/lib/module/FloatingToolbarNativeComponent.ts +31 -0
  81. package/lib/module/LiquidGlass.js +24 -4
  82. package/lib/module/LiquidGlass.js.map +1 -1
  83. package/lib/module/LiquidGlassNativeComponent.ts +6 -5
  84. package/lib/module/NativePlatformComponentsTheme.js.map +1 -1
  85. package/lib/module/SegmentedControl.js +12 -87
  86. package/lib/module/SegmentedControl.js.map +1 -1
  87. package/lib/module/SegmentedControlNativeComponent.ts +15 -11
  88. package/lib/module/SelectionMenuNativeComponent.ts +6 -5
  89. package/lib/module/TextField.js +189 -0
  90. package/lib/module/TextField.js.map +1 -0
  91. package/lib/module/TextFieldNativeComponent.ts +218 -0
  92. package/lib/module/codegenTypes.js +4 -0
  93. package/lib/module/codegenTypes.js.map +1 -0
  94. package/lib/module/focusRegistry.js +74 -0
  95. package/lib/module/focusRegistry.js.map +1 -0
  96. package/lib/module/icons.js +87 -0
  97. package/lib/module/icons.js.map +1 -0
  98. package/lib/module/index.js +6 -0
  99. package/lib/module/index.js.map +1 -1
  100. package/lib/module/index.web.js +28 -0
  101. package/lib/module/index.web.js.map +1 -1
  102. package/lib/module/labelStyle.js +23 -0
  103. package/lib/module/labelStyle.js.map +1 -0
  104. package/lib/module/reactNativeInternals.d.js +2 -0
  105. package/lib/module/reactNativeInternals.d.js.map +1 -0
  106. package/lib/typescript/commonjs/docs/sidebars.d.ts.map +1 -1
  107. package/lib/typescript/commonjs/src/Button.d.ts +76 -0
  108. package/lib/typescript/commonjs/src/Button.d.ts.map +1 -0
  109. package/lib/typescript/commonjs/src/ButtonGroup.d.ts +102 -0
  110. package/lib/typescript/commonjs/src/ButtonGroup.d.ts.map +1 -0
  111. package/lib/typescript/commonjs/src/ButtonGroupNativeComponent.d.ts +93 -0
  112. package/lib/typescript/commonjs/src/ButtonGroupNativeComponent.d.ts.map +1 -0
  113. package/lib/typescript/commonjs/src/ButtonNativeComponent.d.ts +57 -0
  114. package/lib/typescript/commonjs/src/ButtonNativeComponent.d.ts.map +1 -0
  115. package/lib/typescript/commonjs/src/ContextMenuNativeComponent.d.ts +5 -4
  116. package/lib/typescript/commonjs/src/ContextMenuNativeComponent.d.ts.map +1 -1
  117. package/lib/typescript/commonjs/src/DatePickerNativeComponent.d.ts +12 -11
  118. package/lib/typescript/commonjs/src/DatePickerNativeComponent.d.ts.map +1 -1
  119. package/lib/typescript/commonjs/src/FloatingToolbar.d.ts +45 -0
  120. package/lib/typescript/commonjs/src/FloatingToolbar.d.ts.map +1 -0
  121. package/lib/typescript/commonjs/src/FloatingToolbarNativeComponent.d.ts +24 -0
  122. package/lib/typescript/commonjs/src/FloatingToolbarNativeComponent.d.ts.map +1 -0
  123. package/lib/typescript/commonjs/src/LiquidGlass.d.ts +4 -3
  124. package/lib/typescript/commonjs/src/LiquidGlass.d.ts.map +1 -1
  125. package/lib/typescript/commonjs/src/LiquidGlassNativeComponent.d.ts +6 -5
  126. package/lib/typescript/commonjs/src/LiquidGlassNativeComponent.d.ts.map +1 -1
  127. package/lib/typescript/commonjs/src/NativePlatformComponentsTheme.d.ts +10 -2
  128. package/lib/typescript/commonjs/src/NativePlatformComponentsTheme.d.ts.map +1 -1
  129. package/lib/typescript/commonjs/src/SegmentedControl.d.ts +17 -46
  130. package/lib/typescript/commonjs/src/SegmentedControl.d.ts.map +1 -1
  131. package/lib/typescript/commonjs/src/SegmentedControlNativeComponent.d.ts +9 -6
  132. package/lib/typescript/commonjs/src/SegmentedControlNativeComponent.d.ts.map +1 -1
  133. package/lib/typescript/commonjs/src/SelectionMenuNativeComponent.d.ts +6 -5
  134. package/lib/typescript/commonjs/src/SelectionMenuNativeComponent.d.ts.map +1 -1
  135. package/lib/typescript/commonjs/src/TextField.d.ts +174 -0
  136. package/lib/typescript/commonjs/src/TextField.d.ts.map +1 -0
  137. package/lib/typescript/commonjs/src/TextFieldNativeComponent.d.ts +162 -0
  138. package/lib/typescript/commonjs/src/TextFieldNativeComponent.d.ts.map +1 -0
  139. package/lib/typescript/commonjs/src/codegenTypes.d.ts +12 -0
  140. package/lib/typescript/commonjs/src/codegenTypes.d.ts.map +1 -0
  141. package/lib/typescript/commonjs/src/focusRegistry.d.ts +13 -0
  142. package/lib/typescript/commonjs/src/focusRegistry.d.ts.map +1 -0
  143. package/lib/typescript/commonjs/src/icons.d.ts +52 -0
  144. package/lib/typescript/commonjs/src/icons.d.ts.map +1 -0
  145. package/lib/typescript/commonjs/src/index.d.ts +6 -0
  146. package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
  147. package/lib/typescript/commonjs/src/index.web.d.ts +121 -0
  148. package/lib/typescript/commonjs/src/index.web.d.ts.map +1 -1
  149. package/lib/typescript/commonjs/src/labelStyle.d.ts +20 -0
  150. package/lib/typescript/commonjs/src/labelStyle.d.ts.map +1 -0
  151. package/lib/typescript/commonjs/src/sharedTypes.d.ts +8 -3
  152. package/lib/typescript/commonjs/src/sharedTypes.d.ts.map +1 -1
  153. package/lib/typescript/module/docs/sidebars.d.ts.map +1 -1
  154. package/lib/typescript/module/src/Button.d.ts +76 -0
  155. package/lib/typescript/module/src/Button.d.ts.map +1 -0
  156. package/lib/typescript/module/src/ButtonGroup.d.ts +102 -0
  157. package/lib/typescript/module/src/ButtonGroup.d.ts.map +1 -0
  158. package/lib/typescript/module/src/ButtonGroupNativeComponent.d.ts +93 -0
  159. package/lib/typescript/module/src/ButtonGroupNativeComponent.d.ts.map +1 -0
  160. package/lib/typescript/module/src/ButtonNativeComponent.d.ts +57 -0
  161. package/lib/typescript/module/src/ButtonNativeComponent.d.ts.map +1 -0
  162. package/lib/typescript/module/src/ContextMenuNativeComponent.d.ts +5 -4
  163. package/lib/typescript/module/src/ContextMenuNativeComponent.d.ts.map +1 -1
  164. package/lib/typescript/module/src/DatePickerNativeComponent.d.ts +12 -11
  165. package/lib/typescript/module/src/DatePickerNativeComponent.d.ts.map +1 -1
  166. package/lib/typescript/module/src/FloatingToolbar.d.ts +45 -0
  167. package/lib/typescript/module/src/FloatingToolbar.d.ts.map +1 -0
  168. package/lib/typescript/module/src/FloatingToolbarNativeComponent.d.ts +24 -0
  169. package/lib/typescript/module/src/FloatingToolbarNativeComponent.d.ts.map +1 -0
  170. package/lib/typescript/module/src/LiquidGlass.d.ts +4 -3
  171. package/lib/typescript/module/src/LiquidGlass.d.ts.map +1 -1
  172. package/lib/typescript/module/src/LiquidGlassNativeComponent.d.ts +6 -5
  173. package/lib/typescript/module/src/LiquidGlassNativeComponent.d.ts.map +1 -1
  174. package/lib/typescript/module/src/NativePlatformComponentsTheme.d.ts +10 -2
  175. package/lib/typescript/module/src/NativePlatformComponentsTheme.d.ts.map +1 -1
  176. package/lib/typescript/module/src/SegmentedControl.d.ts +17 -46
  177. package/lib/typescript/module/src/SegmentedControl.d.ts.map +1 -1
  178. package/lib/typescript/module/src/SegmentedControlNativeComponent.d.ts +9 -6
  179. package/lib/typescript/module/src/SegmentedControlNativeComponent.d.ts.map +1 -1
  180. package/lib/typescript/module/src/SelectionMenuNativeComponent.d.ts +6 -5
  181. package/lib/typescript/module/src/SelectionMenuNativeComponent.d.ts.map +1 -1
  182. package/lib/typescript/module/src/TextField.d.ts +174 -0
  183. package/lib/typescript/module/src/TextField.d.ts.map +1 -0
  184. package/lib/typescript/module/src/TextFieldNativeComponent.d.ts +162 -0
  185. package/lib/typescript/module/src/TextFieldNativeComponent.d.ts.map +1 -0
  186. package/lib/typescript/module/src/codegenTypes.d.ts +12 -0
  187. package/lib/typescript/module/src/codegenTypes.d.ts.map +1 -0
  188. package/lib/typescript/module/src/focusRegistry.d.ts +13 -0
  189. package/lib/typescript/module/src/focusRegistry.d.ts.map +1 -0
  190. package/lib/typescript/module/src/icons.d.ts +52 -0
  191. package/lib/typescript/module/src/icons.d.ts.map +1 -0
  192. package/lib/typescript/module/src/index.d.ts +6 -0
  193. package/lib/typescript/module/src/index.d.ts.map +1 -1
  194. package/lib/typescript/module/src/index.web.d.ts +121 -0
  195. package/lib/typescript/module/src/index.web.d.ts.map +1 -1
  196. package/lib/typescript/module/src/labelStyle.d.ts +20 -0
  197. package/lib/typescript/module/src/labelStyle.d.ts.map +1 -0
  198. package/lib/typescript/module/src/sharedTypes.d.ts +8 -3
  199. package/lib/typescript/module/src/sharedTypes.d.ts.map +1 -1
  200. package/package.json +28 -6
  201. package/react-native.config.js +3 -0
  202. package/shared/PCButtonComponentDescriptors-custom.h +22 -0
  203. package/shared/PCButtonGroupComponentDescriptors-custom.h +22 -0
  204. package/shared/PCButtonGroupShadowNode-custom.cpp +48 -0
  205. package/shared/PCButtonGroupShadowNode-custom.h +55 -0
  206. package/shared/PCButtonGroupState-custom.h +61 -0
  207. package/shared/PCButtonShadowNode-custom.cpp +48 -0
  208. package/shared/PCButtonShadowNode-custom.h +55 -0
  209. package/shared/PCButtonState-custom.h +61 -0
  210. package/shared/PCDatePickerState-custom.h +2 -2
  211. package/shared/PCSegmentedControlState-custom.h +2 -2
  212. package/shared/PCSelectionMenuState-custom.h +2 -2
  213. package/shared/PCTextFieldComponentDescriptors-custom.h +22 -0
  214. package/shared/PCTextFieldShadowNode-custom.cpp +47 -0
  215. package/shared/PCTextFieldShadowNode-custom.h +55 -0
  216. package/shared/PCTextFieldState-custom.h +61 -0
  217. package/shared/react/renderer/components/PlatformComponentsViewSpec/ComponentDescriptors.h +3 -0
  218. package/src/Button.tsx +144 -0
  219. package/src/ButtonGroup.tsx +233 -0
  220. package/src/ButtonGroupNativeComponent.ts +121 -0
  221. package/src/ButtonNativeComponent.ts +76 -0
  222. package/src/ContextMenuNativeComponent.ts +5 -4
  223. package/src/DatePickerNativeComponent.ts +17 -11
  224. package/src/FloatingToolbar.tsx +113 -0
  225. package/src/FloatingToolbarNativeComponent.ts +31 -0
  226. package/src/LiquidGlass.tsx +24 -5
  227. package/src/LiquidGlassNativeComponent.ts +6 -5
  228. package/src/NativePlatformComponentsTheme.ts +11 -2
  229. package/src/SegmentedControl.tsx +26 -118
  230. package/src/SegmentedControlNativeComponent.ts +15 -11
  231. package/src/SelectionMenuNativeComponent.ts +6 -5
  232. package/src/TextField.tsx +494 -0
  233. package/src/TextFieldNativeComponent.ts +218 -0
  234. package/src/codegenTypes.ts +40 -0
  235. package/src/focusRegistry.ts +89 -0
  236. package/src/icons.ts +116 -0
  237. package/src/index.tsx +6 -0
  238. package/src/index.web.tsx +194 -0
  239. package/src/labelStyle.ts +36 -0
  240. package/src/reactNativeInternals.d.ts +22 -0
  241. package/src/sharedTypes.ts +9 -3
  242. /package/{app.plugin.cjs → app.plugin.js} +0 -0
@@ -2,31 +2,21 @@
2
2
 
3
3
  // SegmentedControl.tsx
4
4
  import React, { useCallback, useMemo } from 'react';
5
- import { Image, Platform, StyleSheet } from 'react-native';
5
+ import { Platform, StyleSheet } from 'react-native';
6
6
  import NativeSegmentedControl from './SegmentedControlNativeComponent';
7
-
7
+ import { resolveIcon } from "./icons.js";
8
+ import { normalizeLabelStyle } from "./labelStyle.js";
9
+ import { jsx as _jsx } from "react/jsx-runtime";
8
10
  // Android: Minimum height to ensure visibility.
9
11
  // Fabric's shadow node measurement isn't being called on initial render,
10
12
  // so we apply a minHeight that matches Material design touch target guidelines.
11
- import { jsx as _jsx } from "react/jsx-runtime";
12
13
  const ANDROID_MIN_HEIGHT = 48;
13
14
 
14
- /**
15
- * A single icon source.
16
- *
17
- * - `string`: shorthand for an SF Symbol name on iOS and a drawable resource
18
- * name on Android (the original API).
19
- * - `{ type: 'sfSymbol' }`: an SF Symbol. iOS only; ignored on Android.
20
- * - `{ type: 'drawable' }`: a drawable from the app's `res/drawable`.
21
- * Android only; ignored on iOS.
22
- * - `{ type: 'image' }`: an image asset (`require('./icon.png')`) or a
23
- * `{ uri }` source. Works on both platforms. Images are drawn as tinted
24
- * templates unless `tinted` is `false`.
25
- */
15
+ /** A single icon source. Alias of {@link PlatformIconSource}. */
26
16
 
27
17
  /**
28
18
  * An icon for a segment: a single source used on both platforms, or a
29
- * per-platform pair so callers don't need to branch on `Platform.OS`.
19
+ * per-platform pair. Alias of {@link PlatformIcon}.
30
20
  */
31
21
 
32
22
  /**
@@ -39,72 +29,14 @@ const ANDROID_MIN_HEIGHT = 48;
39
29
  * their label. Screen readers still announce the label on both platforms.
40
30
  */
41
31
 
42
- /**
43
- * Font for segment labels. Each field falls back to the platform default.
44
- */
32
+ /** Font for segment labels. Alias of {@link LabelStyle}. */
45
33
 
46
34
  /**
47
35
  * Badge colors. Both default to the platform look (red with white text).
48
36
  */
49
37
 
50
- const NO_ICON = {
51
- iconType: '',
52
- iconName: '',
53
- iconUri: '',
54
- iconScale: 1,
55
- iconTinted: 'true'
56
- };
57
- function pickIconSource(icon) {
58
- if (icon === undefined || typeof icon === 'string' || 'type' in icon) {
59
- return icon;
60
- }
61
- return Platform.OS === 'ios' ? icon.ios : icon.android;
62
- }
63
-
64
- /**
65
- * Flattens the public icon shape into the strings native expects, dropping
66
- * sources that don't apply to the current platform.
67
- */
68
- export function resolveSegmentIcon(icon) {
69
- const source = pickIconSource(icon);
70
- if (source === undefined) return NO_ICON;
71
- if (typeof source === 'string') {
72
- if (source.length === 0) return NO_ICON;
73
- return {
74
- ...NO_ICON,
75
- iconType: Platform.OS === 'ios' ? 'sfSymbol' : 'drawable',
76
- iconName: source
77
- };
78
- }
79
- switch (source.type) {
80
- case 'sfSymbol':
81
- return Platform.OS === 'ios' ? {
82
- ...NO_ICON,
83
- iconType: 'sfSymbol',
84
- iconName: source.name
85
- } : NO_ICON;
86
- case 'drawable':
87
- return Platform.OS === 'android' ? {
88
- ...NO_ICON,
89
- iconType: 'drawable',
90
- iconName: source.name
91
- } : NO_ICON;
92
- case 'image':
93
- {
94
- const resolved = Image.resolveAssetSource(source.source);
95
- if (!resolved?.uri) return NO_ICON;
96
- return {
97
- iconType: 'image',
98
- iconName: '',
99
- iconUri: resolved.uri,
100
- iconScale: resolved.scale > 0 ? resolved.scale : 1,
101
- iconTinted: source.tinted === false ? 'false' : 'true'
102
- };
103
- }
104
- default:
105
- return NO_ICON;
106
- }
107
- }
38
+ /** Flattens a segment icon for native. Alias of {@link resolveIcon}. */
39
+ export const resolveSegmentIcon = resolveIcon;
108
40
  function normalizeSelectedValue(selected) {
109
41
  return selected ?? '';
110
42
  }
@@ -165,21 +97,14 @@ export function SegmentedControl(props) {
165
97
  const nativeSelectedSegmentColor = selectedSegmentColor ?? (Platform.OS === 'ios' ? ios?.selectedSegmentTintColor : undefined);
166
98
 
167
99
  // Normalize the label font; empty / 0 means platform default
168
- const nativeLabelStyle = useMemo(() => {
169
- if (!labelStyle) return undefined;
170
- return {
171
- fontFamily: labelStyle.fontFamily ?? '',
172
- fontSize: labelStyle.fontSize ?? 0,
173
- fontWeight: labelStyle.fontWeight === undefined ? '' : String(labelStyle.fontWeight),
174
- fontStyle: labelStyle.fontStyle ?? ''
175
- };
176
- }, [labelStyle]);
100
+ const nativeLabelStyle = useMemo(() => normalizeLabelStyle(labelStyle), [labelStyle]);
177
101
 
178
102
  // Normalize Android props
179
103
  const nativeAndroid = useMemo(() => {
180
104
  if (!android) return undefined;
181
105
  return {
182
- selectionRequired: android.selectionRequired === false ? 'false' : 'true'
106
+ selectionRequired: android.selectionRequired === false ? 'false' : 'true',
107
+ material: android.material ?? 'expressive'
183
108
  };
184
109
  }, [android]);
185
110
 
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","useMemo","Image","Platform","StyleSheet","NativeSegmentedControl","jsx","_jsx","ANDROID_MIN_HEIGHT","NO_ICON","iconType","iconName","iconUri","iconScale","iconTinted","pickIconSource","icon","undefined","OS","ios","android","resolveSegmentIcon","source","length","type","name","resolved","resolveAssetSource","uri","scale","tinted","normalizeSelectedValue","selected","SegmentedControl","props","style","segments","selectedValue","disabled","labelVisibility","selectedSegmentColor","activeTintColor","inactiveTintColor","labelStyle","badgeStyle","onSelect","onDeselect","viewProps","nativeSegments","map","seg","label","value","badge","String","accessibilityLabel","selectedData","handleSelect","e","index","nativeEvent","nativeIos","momentary","apportionsSegmentWidthsByContent","nativeSelectedSegmentColor","selectedSegmentTintColor","nativeLabelStyle","fontFamily","fontSize","fontWeight","fontStyle","nativeAndroid","selectionRequired","mergedStyle","styles","androidDefault","interactivity","androidRippleColor","rippleColor","androidStrokeColor","strokeColor","badgeBackgroundColor","backgroundColor","badgeTextColor","color","create","minHeight"],"sourceRoot":"../../src","sources":["SegmentedControl.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useCallback","useMemo","Platform","StyleSheet","NativeSegmentedControl","resolveIcon","normalizeLabelStyle","jsx","_jsx","ANDROID_MIN_HEIGHT","resolveSegmentIcon","normalizeSelectedValue","selected","SegmentedControl","props","style","segments","selectedValue","disabled","labelVisibility","selectedSegmentColor","activeTintColor","inactiveTintColor","labelStyle","badgeStyle","onSelect","onDeselect","ios","android","viewProps","nativeSegments","map","seg","label","value","badge","undefined","String","accessibilityLabel","icon","selectedData","handleSelect","e","index","nativeEvent","nativeIos","momentary","apportionsSegmentWidthsByContent","nativeSelectedSegmentColor","OS","selectedSegmentTintColor","nativeLabelStyle","nativeAndroid","selectionRequired","material","mergedStyle","styles","androidDefault","interactivity","androidRippleColor","rippleColor","androidStrokeColor","strokeColor","badgeBackgroundColor","backgroundColor","badgeTextColor","color","create","minHeight"],"sourceRoot":"../../src","sources":["SegmentedControl.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,11 +1,12 @@
1
1
  // SegmentedControlNativeComponent.ts
2
- import type {
3
- CodegenTypes,
4
- ColorValue,
5
- HostComponent,
6
- ViewProps,
7
- } from 'react-native';
2
+ import type { ColorValue, HostComponent, ViewProps } from 'react-native';
8
3
  import { codegenNativeComponent } from 'react-native';
4
+ import type {
5
+ BubblingEventHandler,
6
+ Double,
7
+ Int32,
8
+ WithDefault,
9
+ } from './codegenTypes';
9
10
 
10
11
  /**
11
12
  * A single segment in the control.
@@ -21,7 +22,7 @@ export type SegmentedControlSegment = Readonly<{
21
22
  iconType: string; // '' | 'sfSymbol' | 'drawable' | 'image'
22
23
  iconName: string; // SF Symbol (iOS) or drawable resource name (Android)
23
24
  iconUri: string; // Resolved image URI when iconType === 'image'
24
- iconScale: CodegenTypes.Double; // Resolved image scale when iconType === 'image'
25
+ iconScale: Double; // Resolved image scale when iconType === 'image'
25
26
  iconTinted: string; // 'true' | 'false' — draw the image as a tinted template
26
27
  badge: string; // Badge text, empty = no badge
27
28
  accessibilityLabel: string; // Screen-reader label, empty = use label
@@ -32,7 +33,7 @@ export type SegmentedControlSegment = Readonly<{
32
33
  */
33
34
  export type SegmentedControlSelectEvent = Readonly<{
34
35
  /** Selected segment index. -1 means the selection was cleared. */
35
- index: CodegenTypes.Int32;
36
+ index: Int32;
36
37
 
37
38
  /** Selected segment value. Empty when the selection was cleared. */
38
39
  value: string;
@@ -49,7 +50,7 @@ export type SegmentedControlLabelVisibility = 'auto' | 'labeled' | 'unlabeled';
49
50
  */
50
51
  export type LabelStyleProps = Readonly<{
51
52
  fontFamily?: string;
52
- fontSize?: CodegenTypes.Double;
53
+ fontSize?: Double;
53
54
  fontWeight?: string; // 'normal' | 'bold' | '100'..'900'
54
55
  fontStyle?: string; // 'normal' | 'italic'
55
56
  }>;
@@ -71,6 +72,9 @@ export type IOSProps = Readonly<{
71
72
  export type AndroidProps = Readonly<{
72
73
  /** Whether one segment must always be selected */
73
74
  selectionRequired?: string; // 'true' | 'false'
75
+
76
+ /** Material style: 'm3' | 'expressive' */
77
+ material?: string;
74
78
  }>;
75
79
 
76
80
  export interface SegmentedControlProps extends ViewProps {
@@ -83,7 +87,7 @@ export interface SegmentedControlProps extends ViewProps {
83
87
  * Controlled selection by `value`.
84
88
  * Empty string means "no selection".
85
89
  */
86
- selectedValue?: CodegenTypes.WithDefault<string, ''>;
90
+ selectedValue?: WithDefault<string, ''>;
87
91
 
88
92
  /**
89
93
  * Enabled / disabled state.
@@ -122,7 +126,7 @@ export interface SegmentedControlProps extends ViewProps {
122
126
  /**
123
127
  * Fired when the user selects a segment.
124
128
  */
125
- onSelect?: CodegenTypes.BubblingEventHandler<SegmentedControlSelectEvent>;
129
+ onSelect?: BubblingEventHandler<SegmentedControlSelectEvent>;
126
130
 
127
131
  ios?: IOSProps;
128
132
  android?: AndroidProps;
@@ -1,6 +1,7 @@
1
1
  // SelectionMenuNativeComponent.ts
2
- import type { CodegenTypes, HostComponent, ViewProps } from 'react-native';
2
+ import type { HostComponent, ViewProps } from 'react-native';
3
3
  import { codegenNativeComponent } from 'react-native';
4
+ import type { BubblingEventHandler, Int32, WithDefault } from './codegenTypes';
4
5
 
5
6
  /**
6
7
  * A single option in the menu.
@@ -15,7 +16,7 @@ export type SelectionMenuOption = Readonly<{
15
16
  */
16
17
  export type SelectionMenuSelectEvent = Readonly<{
17
18
  /** Selected option index (implementation detail; stable for this render) */
18
- index: CodegenTypes.Int32;
19
+ index: Int32;
19
20
 
20
21
  /** Selected option label */
21
22
  label: string;
@@ -57,7 +58,7 @@ export interface SelectionMenuProps extends ViewProps {
57
58
  * - Empty string means "no selection".
58
59
  * - Native should treat this as the single source of truth.
59
60
  */
60
- selectedData?: CodegenTypes.WithDefault<string, ''>;
61
+ selectedData?: WithDefault<string, ''>;
61
62
 
62
63
  /**
63
64
  * Enabled / disabled state.
@@ -83,12 +84,12 @@ export interface SelectionMenuProps extends ViewProps {
83
84
  /**
84
85
  * Fired when the user selects an option.
85
86
  */
86
- onSelect?: CodegenTypes.BubblingEventHandler<SelectionMenuSelectEvent>;
87
+ onSelect?: BubblingEventHandler<SelectionMenuSelectEvent>;
87
88
 
88
89
  /**
89
90
  * Fired when dismissed without selection.
90
91
  */
91
- onRequestClose?: CodegenTypes.BubblingEventHandler<Readonly<{}>>;
92
+ onRequestClose?: BubblingEventHandler<Readonly<{}>>;
92
93
 
93
94
  ios?: IOSProps;
94
95
  android?: AndroidProps;
@@ -0,0 +1,189 @@
1
+ "use strict";
2
+
3
+ // TextField.tsx
4
+ import React, { forwardRef, useCallback, useImperativeHandle, useLayoutEffect, useMemo, useRef, useState } from 'react';
5
+ import NativeTextField, { Commands } from './TextFieldNativeComponent';
6
+ import { resolveIcon } from "./icons.js";
7
+ import { normalizeLabelStyle } from "./labelStyle.js";
8
+ import { focusRegistry } from "./focusRegistry.js";
9
+
10
+ /** Keyboard to show; the React Native `TextInput` values. */
11
+
12
+ /** Return key label; the React Native `TextInput` values. */
13
+
14
+ /** Autofill hint; a cross-platform subset of the React Native `TextInput` values. */
15
+
16
+ /** An iOS text trait: the system default, on, or off. */
17
+
18
+ /** Focus, blur and submit events carry the text at that moment. */
19
+
20
+ /** Change events carry the text and the native edit counter. */
21
+
22
+ /** Methods available through the `ref`. */
23
+ import { jsx as _jsx } from "react/jsx-runtime";
24
+ export const TextField = /*#__PURE__*/forwardRef(function TextFieldComponent(props, ref) {
25
+ const {
26
+ value,
27
+ defaultValue,
28
+ onChangeText,
29
+ onChange,
30
+ onFocus,
31
+ onBlur,
32
+ onSubmitEditing,
33
+ label,
34
+ placeholder,
35
+ supportingText,
36
+ error,
37
+ prefix,
38
+ suffix,
39
+ leadingIcon,
40
+ trailingIcon,
41
+ onTrailingIconPress,
42
+ clearButtonMode,
43
+ passwordToggle,
44
+ showCharacterCount,
45
+ maxLength,
46
+ keyboardType,
47
+ returnKeyType,
48
+ autoCapitalize,
49
+ autoCorrect,
50
+ secureTextEntry,
51
+ multiline,
52
+ editable,
53
+ autoFocus,
54
+ selectTextOnFocus,
55
+ autoComplete,
56
+ keyboardAppearance,
57
+ textStyle,
58
+ accessibilityLabel,
59
+ ios,
60
+ android,
61
+ ...viewProps
62
+ } = props;
63
+ const nativeRef = useRef(null);
64
+ const focused = useRef(false);
65
+
66
+ // The same synchronization as React Native's TextInput: every native edit
67
+ // reports an event count, and a controlled value is pushed with the last
68
+ // count JS has seen. Native drops the update when the user has typed
69
+ // since, and the edit that follows brings JS back in line.
70
+ const [mostRecentEventCount, setMostRecentEventCount] = useState(0);
71
+ const [lastNativeText, setLastNativeText] = useState(value ?? defaultValue);
72
+
73
+ // Registered like a TextInput, so Keyboard.dismiss() and the ScrollView
74
+ // keyboard props treat the field as one (see focusRegistry.ts)
75
+ useLayoutEffect(() => {
76
+ const node = nativeRef.current;
77
+ if (node == null) return undefined;
78
+ focusRegistry.register(node);
79
+ return () => focusRegistry.unregister(node);
80
+ }, []);
81
+ useLayoutEffect(() => {
82
+ if (typeof value !== 'string' || value === lastNativeText) return;
83
+ setLastNativeText(value);
84
+ const node = nativeRef.current;
85
+ if (node != null) {
86
+ Commands.setText(node, mostRecentEventCount, value);
87
+ }
88
+ }, [value, lastNativeText, mostRecentEventCount]);
89
+ useImperativeHandle(ref, () => ({
90
+ focus: () => {
91
+ const node = nativeRef.current;
92
+ if (node != null) Commands.focus(node);
93
+ },
94
+ blur: () => {
95
+ const node = nativeRef.current;
96
+ if (node != null) Commands.blur(node);
97
+ },
98
+ clear: () => {
99
+ const node = nativeRef.current;
100
+ if (node != null) Commands.clear(node);
101
+ },
102
+ isFocused: () => focused.current
103
+ }), []);
104
+ const handleChange = useCallback(event => {
105
+ const {
106
+ text,
107
+ eventCount
108
+ } = event.nativeEvent;
109
+ setMostRecentEventCount(eventCount);
110
+ setLastNativeText(text);
111
+ onChange?.(event);
112
+ onChangeText?.(text);
113
+ }, [onChange, onChangeText]);
114
+ const handleFocus = useCallback(event => {
115
+ focused.current = true;
116
+ focusRegistry.focused(nativeRef.current);
117
+ onFocus?.(event);
118
+ }, [onFocus]);
119
+ const handleBlur = useCallback(event => {
120
+ focused.current = false;
121
+ focusRegistry.blurred(nativeRef.current);
122
+ onBlur?.(event);
123
+ }, [onBlur]);
124
+ const handleSubmit = useCallback(event => {
125
+ onSubmitEditing?.(event);
126
+ }, [onSubmitEditing]);
127
+ const handleTrailingIconPress = useCallback(() => {
128
+ onTrailingIconPress?.();
129
+ }, [onTrailingIconPress]);
130
+ const nativeLeadingIcon = useMemo(() => resolveIcon(leadingIcon), [leadingIcon]);
131
+ const nativeTrailingIcon = useMemo(() => resolveIcon(trailingIcon), [trailingIcon]);
132
+ const nativeTextStyle = useMemo(() => normalizeLabelStyle(textStyle), [textStyle]);
133
+ const nativeIOS = useMemo(() => ({
134
+ writingTools: ios?.writingTools ?? '',
135
+ inlinePrediction: ios?.inlinePrediction ?? '',
136
+ smartQuotes: ios?.smartQuotes ?? '',
137
+ smartDashes: ios?.smartDashes ?? '',
138
+ smartInsertDelete: ios?.smartInsertDelete ?? '',
139
+ mathExpressionCompletion: ios?.mathExpressionCompletion ?? '',
140
+ borderStyle: ios?.borderStyle ?? '',
141
+ labelPlacement: ios?.labelPlacement ?? '',
142
+ labelWidth: ios?.labelWidth ?? 0
143
+ }), [ios]);
144
+ const nativeAndroid = useMemo(() => ({
145
+ material: android?.material ?? 'm3',
146
+ variant: android?.variant ?? 'outlined',
147
+ density: android?.dense ? 'dense' : 'standard'
148
+ }), [android]);
149
+ return /*#__PURE__*/_jsx(NativeTextField, {
150
+ ref: nativeRef,
151
+ initialText: value ?? defaultValue ?? '',
152
+ label: label ?? '',
153
+ placeholder: placeholder ?? '',
154
+ supportingText: supportingText ?? '',
155
+ errorState: error ? 'error' : 'none',
156
+ errorText: typeof error === 'string' ? error : '',
157
+ prefix: prefix ?? '',
158
+ suffix: suffix ?? '',
159
+ leadingIcon: nativeLeadingIcon,
160
+ trailingIcon: nativeTrailingIcon,
161
+ clearButtonMode: clearButtonMode ?? 'never',
162
+ passwordToggle: passwordToggle ? 'shown' : 'hidden',
163
+ characterCount: showCharacterCount ? 'shown' : 'hidden',
164
+ maxLength: maxLength ?? 0,
165
+ keyboardType: keyboardType ?? 'default',
166
+ returnKeyType: returnKeyType ?? 'default',
167
+ autoCapitalize: autoCapitalize ?? 'sentences',
168
+ autoCorrect: autoCorrect === false ? 'disabled' : 'enabled',
169
+ secureTextEntry: secureTextEntry ? 'secure' : 'plain',
170
+ lines: multiline ? 'multiline' : 'single',
171
+ interactivity: editable === false ? 'disabled' : 'enabled',
172
+ autoFocus: autoFocus ? 'focus' : 'none',
173
+ selectTextOnFocus: selectTextOnFocus ? 'select' : 'keep',
174
+ autoComplete: autoComplete ?? '',
175
+ keyboardAppearance: keyboardAppearance ?? 'default',
176
+ textStyle: nativeTextStyle,
177
+ spokenLabel: accessibilityLabel ?? '',
178
+ ios: nativeIOS,
179
+ android: nativeAndroid,
180
+ onFieldChange: handleChange,
181
+ onFieldFocus: handleFocus,
182
+ onFieldBlur: handleBlur,
183
+ onFieldSubmit: onSubmitEditing ? handleSubmit : undefined,
184
+ onTrailingIconPress: onTrailingIconPress ? handleTrailingIconPress : undefined,
185
+ ...viewProps
186
+ });
187
+ });
188
+ TextField.displayName = 'TextField';
189
+ //# sourceMappingURL=TextField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","forwardRef","useCallback","useImperativeHandle","useLayoutEffect","useMemo","useRef","useState","NativeTextField","Commands","resolveIcon","normalizeLabelStyle","focusRegistry","jsx","_jsx","TextField","TextFieldComponent","props","ref","value","defaultValue","onChangeText","onChange","onFocus","onBlur","onSubmitEditing","label","placeholder","supportingText","error","prefix","suffix","leadingIcon","trailingIcon","onTrailingIconPress","clearButtonMode","passwordToggle","showCharacterCount","maxLength","keyboardType","returnKeyType","autoCapitalize","autoCorrect","secureTextEntry","multiline","editable","autoFocus","selectTextOnFocus","autoComplete","keyboardAppearance","textStyle","accessibilityLabel","ios","android","viewProps","nativeRef","focused","mostRecentEventCount","setMostRecentEventCount","lastNativeText","setLastNativeText","node","current","undefined","register","unregister","setText","focus","blur","clear","isFocused","handleChange","event","text","eventCount","nativeEvent","handleFocus","handleBlur","blurred","handleSubmit","handleTrailingIconPress","nativeLeadingIcon","nativeTrailingIcon","nativeTextStyle","nativeIOS","writingTools","inlinePrediction","smartQuotes","smartDashes","smartInsertDelete","mathExpressionCompletion","borderStyle","labelPlacement","labelWidth","nativeAndroid","material","variant","density","dense","initialText","errorState","errorText","characterCount","lines","interactivity","spokenLabel","onFieldChange","onFieldFocus","onFieldBlur","onFieldSubmit","displayName"],"sourceRoot":"../../src","sources":["TextField.tsx"],"mappings":"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","ignoreList":[]}