react-native-platform-components 0.8.9 → 0.9.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 (54) hide show
  1. package/README.md +126 -30
  2. package/android/src/main/java/com/platformcomponents/PCImageLoader.kt +88 -0
  3. package/android/src/main/java/com/platformcomponents/PCSegmentedControlView.kt +288 -29
  4. package/android/src/main/java/com/platformcomponents/PCSegmentedControlViewManager.kt +74 -8
  5. package/ios/PCConstants.swift +39 -3
  6. package/ios/PCImageLoader.swift +58 -0
  7. package/ios/PCSegmentedControl.mm +85 -25
  8. package/ios/PCSegmentedControl.swift +231 -308
  9. package/ios/PCSelectionMenu.swift +60 -14
  10. package/lib/commonjs/DatePickerNativeComponent.ts +4 -2
  11. package/lib/commonjs/SegmentedControl.js +138 -6
  12. package/lib/commonjs/SegmentedControl.js.map +1 -1
  13. package/lib/commonjs/SegmentedControlNativeComponent.ts +62 -8
  14. package/lib/commonjs/SelectionMenuNativeComponent.ts +4 -2
  15. package/lib/commonjs/index.web.js.map +1 -1
  16. package/lib/module/DatePickerNativeComponent.ts +4 -2
  17. package/lib/module/SegmentedControl.js +138 -7
  18. package/lib/module/SegmentedControl.js.map +1 -1
  19. package/lib/module/SegmentedControlNativeComponent.ts +62 -8
  20. package/lib/module/SelectionMenuNativeComponent.ts +4 -2
  21. package/lib/module/index.web.js.map +1 -1
  22. package/lib/typescript/commonjs/src/DatePickerNativeComponent.d.ts +2 -2
  23. package/lib/typescript/commonjs/src/DatePickerNativeComponent.d.ts.map +1 -1
  24. package/lib/typescript/commonjs/src/SegmentedControl.d.ts +111 -6
  25. package/lib/typescript/commonjs/src/SegmentedControl.d.ts.map +1 -1
  26. package/lib/typescript/commonjs/src/SegmentedControlNativeComponent.d.ts +46 -7
  27. package/lib/typescript/commonjs/src/SegmentedControlNativeComponent.d.ts.map +1 -1
  28. package/lib/typescript/commonjs/src/SelectionMenuNativeComponent.d.ts +2 -2
  29. package/lib/typescript/commonjs/src/SelectionMenuNativeComponent.d.ts.map +1 -1
  30. package/lib/typescript/commonjs/src/index.web.d.ts +36 -1
  31. package/lib/typescript/commonjs/src/index.web.d.ts.map +1 -1
  32. package/lib/typescript/module/src/DatePicker.d.ts +1 -1
  33. package/lib/typescript/module/src/DatePicker.d.ts.map +1 -1
  34. package/lib/typescript/module/src/DatePickerNativeComponent.d.ts +2 -2
  35. package/lib/typescript/module/src/DatePickerNativeComponent.d.ts.map +1 -1
  36. package/lib/typescript/module/src/SegmentedControl.d.ts +111 -6
  37. package/lib/typescript/module/src/SegmentedControl.d.ts.map +1 -1
  38. package/lib/typescript/module/src/SegmentedControlNativeComponent.d.ts +46 -7
  39. package/lib/typescript/module/src/SegmentedControlNativeComponent.d.ts.map +1 -1
  40. package/lib/typescript/module/src/SelectionMenu.d.ts +1 -1
  41. package/lib/typescript/module/src/SelectionMenu.d.ts.map +1 -1
  42. package/lib/typescript/module/src/SelectionMenuNativeComponent.d.ts +2 -2
  43. package/lib/typescript/module/src/SelectionMenuNativeComponent.d.ts.map +1 -1
  44. package/lib/typescript/module/src/index.d.ts +6 -6
  45. package/lib/typescript/module/src/index.d.ts.map +1 -1
  46. package/lib/typescript/module/src/index.web.d.ts +36 -1
  47. package/lib/typescript/module/src/index.web.d.ts.map +1 -1
  48. package/package.json +30 -25
  49. package/plugin/tsconfig.json +2 -2
  50. package/src/DatePickerNativeComponent.ts +4 -2
  51. package/src/SegmentedControl.tsx +238 -11
  52. package/src/SegmentedControlNativeComponent.ts +62 -8
  53. package/src/SelectionMenuNativeComponent.ts +4 -2
  54. package/src/index.web.tsx +34 -1
@@ -2,7 +2,7 @@
2
2
 
3
3
  // SegmentedControl.tsx
4
4
  import React, { useCallback, useMemo } from 'react';
5
- import { Platform, StyleSheet } from 'react-native';
5
+ import { Image, Platform, StyleSheet } from 'react-native';
6
6
  import NativeSegmentedControl from './SegmentedControlNativeComponent';
7
7
 
8
8
  // Android: Minimum height to ensure visibility.
@@ -10,6 +10,101 @@ import NativeSegmentedControl from './SegmentedControlNativeComponent';
10
10
  // so we apply a minHeight that matches Material design touch target guidelines.
11
11
  import { jsx as _jsx } from "react/jsx-runtime";
12
12
  const ANDROID_MIN_HEIGHT = 48;
13
+
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
+ */
26
+
27
+ /**
28
+ * 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`.
30
+ */
31
+
32
+ /**
33
+ * How labels and icons combine for segments that have an icon.
34
+ *
35
+ * - `auto` (default): platform behavior. iOS shows the icon in place of the
36
+ * label (UISegmentedControl cannot show both); Android shows icon and label.
37
+ * - `labeled`: always show the label. iOS drops the icon; Android shows both.
38
+ * - `unlabeled`: show only the icon. Segments without an icon still show
39
+ * their label. Screen readers still announce the label on both platforms.
40
+ */
41
+
42
+ /**
43
+ * Font for segment labels. Each field falls back to the platform default.
44
+ */
45
+
46
+ /**
47
+ * Badge colors. Both default to the platform look (red with white text).
48
+ */
49
+
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
+ }
13
108
  function normalizeSelectedValue(selected) {
14
109
  return selected ?? '';
15
110
  }
@@ -19,7 +114,14 @@ export function SegmentedControl(props) {
19
114
  segments,
20
115
  selectedValue,
21
116
  disabled,
117
+ labelVisibility,
118
+ selectedSegmentColor,
119
+ activeTintColor,
120
+ inactiveTintColor,
121
+ labelStyle,
122
+ badgeStyle,
22
123
  onSelect,
124
+ onDeselect,
23
125
  ios,
24
126
  android,
25
127
  ...viewProps
@@ -31,7 +133,9 @@ export function SegmentedControl(props) {
31
133
  label: seg.label,
32
134
  value: seg.value,
33
135
  disabled: seg.disabled ? 'disabled' : 'enabled',
34
- icon: seg.icon ?? ''
136
+ badge: seg.badge === undefined || seg.badge === null ? '' : String(seg.badge),
137
+ accessibilityLabel: seg.accessibilityLabel ?? '',
138
+ ...resolveSegmentIcon(seg.icon)
35
139
  }));
36
140
  }, [segments]);
37
141
  const selectedData = useMemo(() => normalizeSelectedValue(selectedValue), [selectedValue]);
@@ -40,24 +144,42 @@ export function SegmentedControl(props) {
40
144
  index,
41
145
  value
42
146
  } = e.nativeEvent;
147
+ // Native reports a cleared selection as index -1 with an empty value.
148
+ if (index < 0) {
149
+ onDeselect?.();
150
+ return;
151
+ }
43
152
  onSelect?.(value, index);
44
- }, [onSelect]);
153
+ }, [onSelect, onDeselect]);
45
154
 
46
155
  // Normalize iOS props to native string format
47
156
  const nativeIos = useMemo(() => {
48
157
  if (!ios) return undefined;
49
158
  return {
50
159
  momentary: ios.momentary ? 'true' : 'false',
51
- apportionsSegmentWidthsByContent: ios.apportionsSegmentWidthsByContent ? 'true' : 'false',
52
- selectedSegmentTintColor: ios.selectedSegmentTintColor ?? ''
160
+ apportionsSegmentWidthsByContent: ios.apportionsSegmentWidthsByContent ? 'true' : 'false'
53
161
  };
54
162
  }, [ios]);
55
163
 
164
+ // Deprecated iOS-only tint falls back to the cross-platform prop
165
+ const nativeSelectedSegmentColor = selectedSegmentColor ?? (Platform.OS === 'ios' ? ios?.selectedSegmentTintColor : undefined);
166
+
167
+ // 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]);
177
+
56
178
  // Normalize Android props
57
179
  const nativeAndroid = useMemo(() => {
58
180
  if (!android) return undefined;
59
181
  return {
60
- selectionRequired: android.selectionRequired ? 'true' : 'false'
182
+ selectionRequired: android.selectionRequired === false ? 'false' : 'true'
61
183
  };
62
184
  }, [android]);
63
185
 
@@ -73,7 +195,16 @@ export function SegmentedControl(props) {
73
195
  segments: nativeSegments,
74
196
  selectedValue: selectedData,
75
197
  interactivity: disabled ? 'disabled' : 'enabled',
76
- onSelect: onSelect ? handleSelect : undefined,
198
+ labelVisibility: labelVisibility ?? 'auto',
199
+ selectedSegmentColor: nativeSelectedSegmentColor,
200
+ activeTintColor: activeTintColor,
201
+ inactiveTintColor: inactiveTintColor,
202
+ androidRippleColor: android?.rippleColor,
203
+ androidStrokeColor: android?.strokeColor,
204
+ labelStyle: nativeLabelStyle,
205
+ badgeBackgroundColor: badgeStyle?.backgroundColor,
206
+ badgeTextColor: badgeStyle?.color,
207
+ onSelect: onSelect || onDeselect ? handleSelect : undefined,
77
208
  ios: nativeIos,
78
209
  android: nativeAndroid,
79
210
  ...viewProps
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","useMemo","Platform","StyleSheet","NativeSegmentedControl","jsx","_jsx","ANDROID_MIN_HEIGHT","normalizeSelectedValue","selected","SegmentedControl","props","style","segments","selectedValue","disabled","onSelect","ios","android","viewProps","nativeSegments","map","seg","label","value","icon","selectedData","handleSelect","e","index","nativeEvent","nativeIos","undefined","momentary","apportionsSegmentWidthsByContent","selectedSegmentTintColor","nativeAndroid","selectionRequired","mergedStyle","OS","styles","androidDefault","interactivity","create","minHeight"],"sourceRoot":"../../src","sources":["SegmentedControl.tsx"],"mappings":"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","ignoreList":[]}
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,31 +1,59 @@
1
1
  // SegmentedControlNativeComponent.ts
2
- import type { CodegenTypes, ViewProps } from 'react-native';
2
+ import type {
3
+ CodegenTypes,
4
+ ColorValue,
5
+ HostComponent,
6
+ ViewProps,
7
+ } from 'react-native';
3
8
  import { codegenNativeComponent } from 'react-native';
4
9
 
5
10
  /**
6
11
  * A single segment in the control.
12
+ *
13
+ * Icons are pre-resolved on the JS side so native only deals with flat
14
+ * strings: `iconType` selects the source, `iconName` carries an SF Symbol or
15
+ * drawable name, and `iconUri` / `iconScale` carry a resolved image asset.
7
16
  */
8
17
  export type SegmentedControlSegment = Readonly<{
9
18
  label: string;
10
19
  value: string;
11
20
  disabled: string; // 'enabled' | 'disabled'
12
- icon: string; // SF Symbol (iOS) or drawable name (Android), empty = none
21
+ iconType: string; // '' | 'sfSymbol' | 'drawable' | 'image'
22
+ iconName: string; // SF Symbol (iOS) or drawable resource name (Android)
23
+ iconUri: string; // Resolved image URI when iconType === 'image'
24
+ iconScale: CodegenTypes.Double; // Resolved image scale when iconType === 'image'
25
+ iconTinted: string; // 'true' | 'false' — draw the image as a tinted template
26
+ badge: string; // Badge text, empty = no badge
27
+ accessibilityLabel: string; // Screen-reader label, empty = use label
13
28
  }>;
14
29
 
15
30
  /**
16
31
  * Event emitted when the user selects a segment.
17
32
  */
18
33
  export type SegmentedControlSelectEvent = Readonly<{
19
- /** Selected segment index */
34
+ /** Selected segment index. -1 means the selection was cleared. */
20
35
  index: CodegenTypes.Int32;
21
36
 
22
- /** Selected segment value */
37
+ /** Selected segment value. Empty when the selection was cleared. */
23
38
  value: string;
24
39
  }>;
25
40
 
26
41
  /** Interactivity state (no booleans). */
27
42
  export type SegmentedControlInteractivity = 'enabled' | 'disabled';
28
43
 
44
+ /** How labels and icons combine (no booleans). */
45
+ export type SegmentedControlLabelVisibility = 'auto' | 'labeled' | 'unlabeled';
46
+
47
+ /**
48
+ * Label font. Empty strings / 0 mean "platform default".
49
+ */
50
+ export type LabelStyleProps = Readonly<{
51
+ fontFamily?: string;
52
+ fontSize?: CodegenTypes.Double;
53
+ fontWeight?: string; // 'normal' | 'bold' | '100'..'900'
54
+ fontStyle?: string; // 'normal' | 'italic'
55
+ }>;
56
+
29
57
  /**
30
58
  * iOS-specific configuration.
31
59
  */
@@ -35,9 +63,6 @@ export type IOSProps = Readonly<{
35
63
 
36
64
  /** Whether segment widths are proportional to content */
37
65
  apportionsSegmentWidthsByContent?: string; // 'true' | 'false'
38
-
39
- /** Selected segment tint color (hex string) */
40
- selectedSegmentTintColor?: string;
41
66
  }>;
42
67
 
43
68
  /**
@@ -65,6 +90,35 @@ export interface SegmentedControlProps extends ViewProps {
65
90
  */
66
91
  interactivity?: string; // SegmentedControlInteractivity
67
92
 
93
+ /**
94
+ * How segment labels and icons combine.
95
+ */
96
+ labelVisibility?: string; // SegmentedControlLabelVisibility
97
+
98
+ /** Background of the selected segment. */
99
+ selectedSegmentColor?: ColorValue;
100
+
101
+ /** Text / icon color of the selected segment. */
102
+ activeTintColor?: ColorValue;
103
+
104
+ /** Text / icon color of unselected segments. */
105
+ inactiveTintColor?: ColorValue;
106
+
107
+ /** Android: ripple color when pressing a segment. */
108
+ androidRippleColor?: ColorValue;
109
+
110
+ /** Android: outline color of the segments. */
111
+ androidStrokeColor?: ColorValue;
112
+
113
+ /** Label font. */
114
+ labelStyle?: LabelStyleProps;
115
+
116
+ /** Badge background (default: system red). */
117
+ badgeBackgroundColor?: ColorValue;
118
+
119
+ /** Badge text color (default: white). */
120
+ badgeTextColor?: ColorValue;
121
+
68
122
  /**
69
123
  * Fired when the user selects a segment.
70
124
  */
@@ -76,4 +130,4 @@ export interface SegmentedControlProps extends ViewProps {
76
130
 
77
131
  export default codegenNativeComponent<SegmentedControlProps>(
78
132
  'PCSegmentedControl'
79
- );
133
+ ) as HostComponent<SegmentedControlProps>;
@@ -1,5 +1,5 @@
1
1
  // SelectionMenuNativeComponent.ts
2
- import type { CodegenTypes, ViewProps } from 'react-native';
2
+ import type { CodegenTypes, HostComponent, ViewProps } from 'react-native';
3
3
  import { codegenNativeComponent } from 'react-native';
4
4
 
5
5
  /**
@@ -94,4 +94,6 @@ export interface SelectionMenuProps extends ViewProps {
94
94
  android?: AndroidProps;
95
95
  }
96
96
 
97
- export default codegenNativeComponent<SelectionMenuProps>('PCSelectionMenu');
97
+ export default codegenNativeComponent<SelectionMenuProps>(
98
+ 'PCSelectionMenu'
99
+ ) as HostComponent<SelectionMenuProps>;
@@ -1 +1 @@
1
- {"version":3,"names":["React","Fragment","_Fragment","jsx","_jsx","DatePicker","_props","SelectionMenu","ContextMenu","children","SegmentedControl","LiquidGlass","isLiquidGlassSupported"],"sourceRoot":"../../src","sources":["index.web.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;;AAEA,OAAOA,KAAK,MAAM,OAAO;;AAIzB;AACA;AACA;;AAMA;AACA;AACA;AAAA,SAAAC,QAAA,IAAAC,SAAA,EAAAC,GAAA,IAAAC,IAAA;AAoBA,OAAO,MAAMC,UAAU,GACrBC,MAAuB,IACO,IAAI;;AAEpC;AACA;AACA;;AAoBA,OAAO,MAAMC,aAAa,GACxBD,MAA0B,IACI,IAAI;;AAEpC;AACA;AACA;;AAgCA,OAAO,MAAME,WAAW,GAAGA,CAAC;EAC1BC;AACgB,CAAC,KAAgC;EACjD,oBAAOL,IAAA,CAAAF,SAAA;IAAAO,QAAA,EAAGA;EAAQ,CAAG,CAAC;AACxB,CAAC;;AAED;AACA;AACA;;AAkBA,OAAO,MAAMC,gBAAgB,GAC3BJ,MAA6B,IACC,IAAI;;AAEpC;AACA;AACA;;AASA,OAAO,MAAMK,WAAW,GAAGA,CAAC;EAC1BF;AACgB,CAAC,KAAgC;EACjD,oBAAOL,IAAA,CAAAF,SAAA;IAAAO,QAAA,EAAGA;EAAQ,CAAG,CAAC;AACxB,CAAC;AAED,OAAO,MAAMG,sBAAsB,GAAG,KAAK","ignoreList":[]}
1
+ {"version":3,"names":["React","Fragment","_Fragment","jsx","_jsx","DatePicker","_props","SelectionMenu","ContextMenu","children","SegmentedControl","LiquidGlass","isLiquidGlassSupported"],"sourceRoot":"../../src","sources":["index.web.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;;AAEA,OAAOA,KAAK,MAAM,OAAO;;AAIzB;AACA;AACA;;AAMA;AACA;AACA;AAAA,SAAAC,QAAA,IAAAC,SAAA,EAAAC,GAAA,IAAAC,IAAA;AAoBA,OAAO,MAAMC,UAAU,GACrBC,MAAuB,IACO,IAAI;;AAEpC;AACA;AACA;;AAoBA,OAAO,MAAMC,aAAa,GACxBD,MAA0B,IACI,IAAI;;AAEpC;AACA;AACA;;AAgCA,OAAO,MAAME,WAAW,GAAGA,CAAC;EAC1BC;AACgB,CAAC,KAAgC;EACjD,oBAAOL,IAAA,CAAAF,SAAA;IAAAO,QAAA,EAAGA;EAAQ,CAAG,CAAC;AACxB,CAAC;;AAED;AACA;AACA;;AAmDA,OAAO,MAAMC,gBAAgB,GAC3BJ,MAA6B,IACC,IAAI;;AAEpC;AACA;AACA;;AASA,OAAO,MAAMK,WAAW,GAAGA,CAAC;EAC1BF;AACgB,CAAC,KAAgC;EACjD,oBAAOL,IAAA,CAAAF,SAAA;IAAAO,QAAA,EAAGA;EAAQ,CAAG,CAAC;AACxB,CAAC;AAED,OAAO,MAAMG,sBAAsB,GAAG,KAAK","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import type { CodegenTypes, ViewProps } from 'react-native';
1
+ import type { CodegenTypes, HostComponent, ViewProps } from 'react-native';
2
2
  export type TimestampMs = CodegenTypes.Double;
3
3
  export type DateChangeEvent = {
4
4
  timestampMs: CodegenTypes.Double;
@@ -52,6 +52,6 @@ export interface NativeProps extends ViewProps, CommonProps {
52
52
  onConfirm?: CodegenTypes.BubblingEventHandler<DateChangeEvent>;
53
53
  onClosed?: CodegenTypes.BubblingEventHandler<Readonly<{}>>;
54
54
  }
55
- declare const _default: import("react-native/types_generated/Libraries/Utilities/codegenNativeComponent").NativeComponentType<NativeProps>;
55
+ declare const _default: HostComponent<NativeProps>;
56
56
  export default _default;
57
57
  //# sourceMappingURL=DatePickerNativeComponent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DatePickerNativeComponent.d.ts","sourceRoot":"","sources":["../../../../src/DatePickerNativeComponent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG5D,MAAM,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC;AAE9C,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,EAAE,YAAY,CAAC,MAAM,CAAC;IACjC,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,aAAa,GAAG,gBAAgB,CAAC;AAChF,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,UAAU,CAAC;AAE1D,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC/E,MAAM,MAAM,yBAAyB,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AACxE,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,CAAC;AAEhD,MAAM,MAAM,QAAQ,GAAG;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wBAAwB,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC;IAC/C,cAAc,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC;IACpC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,cAAc,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;AACpC,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;AACxC,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;AAEtC;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,MAAM,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,gBAAgB,CAAC,CAAC;IAClE,SAAS,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,gBAAgB,CAAC,CAAC;IACrE,SAAS,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,gBAAgB,CAAC,CAAC;IAErE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,WAAW,WAAY,SAAQ,SAAS,EAAE,WAAW;IACzD,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,OAAO,CAAC,EAAE,YAAY,CAAC;IAEvB,SAAS,CAAC,EAAE,YAAY,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;IAC/D,QAAQ,CAAC,EAAE,YAAY,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;CAC5D;;AAED,wBAAmE"}
1
+ {"version":3,"file":"DatePickerNativeComponent.d.ts","sourceRoot":"","sources":["../../../../src/DatePickerNativeComponent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG3E,MAAM,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC;AAE9C,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,EAAE,YAAY,CAAC,MAAM,CAAC;IACjC,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,aAAa,GAAG,gBAAgB,CAAC;AAChF,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,UAAU,CAAC;AAE1D,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC/E,MAAM,MAAM,yBAAyB,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AACxE,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,CAAC;AAEhD,MAAM,MAAM,QAAQ,GAAG;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wBAAwB,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC;IAC/C,cAAc,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC;IACpC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,cAAc,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;AACpC,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;AACxC,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;AAEtC;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,MAAM,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,gBAAgB,CAAC,CAAC;IAClE,SAAS,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,gBAAgB,CAAC,CAAC;IACrE,SAAS,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,gBAAgB,CAAC,CAAC;IAErE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,WAAW,WAAY,SAAQ,SAAS,EAAE,WAAW;IACzD,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,OAAO,CAAC,EAAE,YAAY,CAAC;IAEvB,SAAS,CAAC,EAAE,YAAY,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;IAC/D,QAAQ,CAAC,EAAE,YAAY,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;CAC5D;wBAII,aAAa,CAAC,WAAW,CAAC;AAF/B,wBAEgC"}
@@ -1,5 +1,63 @@
1
1
  import React from 'react';
2
- import { type ViewProps } from 'react-native';
2
+ import { type ColorValue, type ImageRequireSource, type ImageURISource, type TextStyle, type ViewProps } from 'react-native';
3
+ import { type SegmentedControlSegment as NativeSegment } from './SegmentedControlNativeComponent';
4
+ /**
5
+ * A single icon source.
6
+ *
7
+ * - `string`: shorthand for an SF Symbol name on iOS and a drawable resource
8
+ * name on Android (the original API).
9
+ * - `{ type: 'sfSymbol' }`: an SF Symbol. iOS only; ignored on Android.
10
+ * - `{ type: 'drawable' }`: a drawable from the app's `res/drawable`.
11
+ * Android only; ignored on iOS.
12
+ * - `{ type: 'image' }`: an image asset (`require('./icon.png')`) or a
13
+ * `{ uri }` source. Works on both platforms. Images are drawn as tinted
14
+ * templates unless `tinted` is `false`.
15
+ */
16
+ export type SegmentedControlIconSource = string | {
17
+ type: 'sfSymbol';
18
+ name: string;
19
+ } | {
20
+ type: 'drawable';
21
+ name: string;
22
+ } | {
23
+ type: 'image';
24
+ source: ImageRequireSource | ImageURISource;
25
+ tinted?: boolean;
26
+ };
27
+ /**
28
+ * 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`.
30
+ */
31
+ export type SegmentedControlIcon = SegmentedControlIconSource | {
32
+ ios?: SegmentedControlIconSource;
33
+ android?: SegmentedControlIconSource;
34
+ };
35
+ /**
36
+ * How labels and icons combine for segments that have an icon.
37
+ *
38
+ * - `auto` (default): platform behavior. iOS shows the icon in place of the
39
+ * label (UISegmentedControl cannot show both); Android shows icon and label.
40
+ * - `labeled`: always show the label. iOS drops the icon; Android shows both.
41
+ * - `unlabeled`: show only the icon. Segments without an icon still show
42
+ * their label. Screen readers still announce the label on both platforms.
43
+ */
44
+ export type SegmentedControlLabelVisibility = 'auto' | 'labeled' | 'unlabeled';
45
+ /**
46
+ * Font for segment labels. Each field falls back to the platform default.
47
+ */
48
+ export interface SegmentedControlLabelStyle {
49
+ fontFamily?: string;
50
+ fontSize?: number;
51
+ fontWeight?: TextStyle['fontWeight'];
52
+ fontStyle?: 'normal' | 'italic';
53
+ }
54
+ /**
55
+ * Badge colors. Both default to the platform look (red with white text).
56
+ */
57
+ export interface SegmentedControlBadgeStyle {
58
+ backgroundColor?: ColorValue;
59
+ color?: ColorValue;
60
+ }
3
61
  export interface SegmentedControlSegmentProps {
4
62
  /** Display label for the segment */
5
63
  label: string;
@@ -7,8 +65,19 @@ export interface SegmentedControlSegmentProps {
7
65
  value: string;
8
66
  /** Whether this specific segment is disabled */
9
67
  disabled?: boolean;
10
- /** Optional SF Symbol name (iOS) or drawable resource name (Android) */
11
- icon?: string;
68
+ /** Optional icon. See {@link SegmentedControlIcon}. */
69
+ icon?: SegmentedControlIcon;
70
+ /**
71
+ * Badge shown at the segment's top-right corner, e.g. an unread count.
72
+ * Numbers are shown as-is; use `undefined` to hide the badge.
73
+ */
74
+ badge?: string | number;
75
+ /**
76
+ * Screen-reader label. Defaults to `label`.
77
+ * On iOS this applies to segments rendered as icons; text segments are
78
+ * announced by their title.
79
+ */
80
+ accessibilityLabel?: string;
12
81
  }
13
82
  export interface SegmentedControlProps extends ViewProps {
14
83
  /** Array of segments to display */
@@ -24,8 +93,32 @@ export interface SegmentedControlProps extends ViewProps {
24
93
  * @param index - The selected segment's index
25
94
  */
26
95
  onSelect?: (value: string, index: number) => void;
96
+ /**
97
+ * Called when the user clears the selection by tapping the selected segment.
98
+ * Only possible on Android with `android.selectionRequired` set to `false`;
99
+ * iOS never clears a selection from a tap.
100
+ */
101
+ onDeselect?: () => void;
27
102
  /** Whether the entire control is disabled */
28
103
  disabled?: boolean;
104
+ /**
105
+ * How labels and icons combine. Default: `'auto'`.
106
+ * See {@link SegmentedControlLabelVisibility}.
107
+ */
108
+ labelVisibility?: SegmentedControlLabelVisibility;
109
+ /**
110
+ * Background color of the selected segment.
111
+ * iOS: `selectedSegmentTintColor`. Android: checked button background.
112
+ */
113
+ selectedSegmentColor?: ColorValue;
114
+ /** Text and icon color of the selected segment. */
115
+ activeTintColor?: ColorValue;
116
+ /** Text and icon color of unselected segments. */
117
+ inactiveTintColor?: ColorValue;
118
+ /** Font for segment labels. See {@link SegmentedControlLabelStyle}. */
119
+ labelStyle?: SegmentedControlLabelStyle;
120
+ /** Colors for segment badges. See {@link SegmentedControlBadgeStyle}. */
121
+ badgeStyle?: SegmentedControlBadgeStyle;
29
122
  /**
30
123
  * iOS-specific configuration
31
124
  */
@@ -41,7 +134,7 @@ export interface SegmentedControlProps extends ViewProps {
41
134
  */
42
135
  apportionsSegmentWidthsByContent?: boolean;
43
136
  /**
44
- * Selected segment tint color (hex string, e.g., "#007AFF")
137
+ * @deprecated Use `selectedSegmentColor`, which works on both platforms.
45
138
  */
46
139
  selectedSegmentTintColor?: string;
47
140
  };
@@ -50,13 +143,25 @@ export interface SegmentedControlProps extends ViewProps {
50
143
  */
51
144
  android?: {
52
145
  /**
53
- * Whether one segment must always be selected.
54
- * Default: false
146
+ * Whether one segment must always be selected. When `false`, tapping the
147
+ * selected segment clears the selection and calls `onDeselect`.
148
+ * Default: true (matches iOS, which cannot clear a selection by tapping)
55
149
  */
56
150
  selectionRequired?: boolean;
151
+ /** Ripple color shown while pressing a segment. */
152
+ rippleColor?: ColorValue;
153
+ /** Outline color of the segments. */
154
+ strokeColor?: ColorValue;
57
155
  };
58
156
  /** Test identifier */
59
157
  testID?: string;
60
158
  }
159
+ type NativeIconFields = Pick<NativeSegment, 'iconType' | 'iconName' | 'iconUri' | 'iconScale' | 'iconTinted'>;
160
+ /**
161
+ * Flattens the public icon shape into the strings native expects, dropping
162
+ * sources that don't apply to the current platform.
163
+ */
164
+ export declare function resolveSegmentIcon(icon: SegmentedControlIcon | undefined): NativeIconFields;
61
165
  export declare function SegmentedControl(props: SegmentedControlProps): React.ReactElement;
166
+ export {};
62
167
  //# sourceMappingURL=SegmentedControl.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SegmentedControl.d.ts","sourceRoot":"","sources":["../../../../src/SegmentedControl.tsx"],"names":[],"mappings":"AACA,OAAO,KAA+B,MAAM,OAAO,CAAC;AACpD,OAAO,EAIL,KAAK,SAAS,EAEf,MAAM,cAAc,CAAC;AAWtB,MAAM,WAAW,4BAA4B;IAC3C,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IAEd,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC;IAEd,gDAAgD;IAChD,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qBAAsB,SAAQ,SAAS;IACtD,mCAAmC;IACnC,QAAQ,EAAE,SAAS,4BAA4B,EAAE,CAAC;IAElD;;;OAGG;IACH,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAE7B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAElD,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,GAAG,CAAC,EAAE;QACJ;;;WAGG;QACH,SAAS,CAAC,EAAE,OAAO,CAAC;QAEpB;;;WAGG;QACH,gCAAgC,CAAC,EAAE,OAAO,CAAC;QAE3C;;WAEG;QACH,wBAAwB,CAAC,EAAE,MAAM,CAAC;KACnC,CAAC;IAEF;;OAEG;IACH,OAAO,CAAC,EAAE;QACR;;;WAGG;QACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;KAC7B,CAAC;IAEF,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAMD,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,qBAAqB,GAC3B,KAAK,CAAC,YAAY,CA2EpB"}
1
+ {"version":3,"file":"SegmentedControl.d.ts","sourceRoot":"","sources":["../../../../src/SegmentedControl.tsx"],"names":[],"mappings":"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"}
@@ -1,24 +1,45 @@
1
- import type { CodegenTypes, ViewProps } from 'react-native';
1
+ import type { CodegenTypes, ColorValue, HostComponent, ViewProps } from 'react-native';
2
2
  /**
3
3
  * A single segment in the control.
4
+ *
5
+ * Icons are pre-resolved on the JS side so native only deals with flat
6
+ * strings: `iconType` selects the source, `iconName` carries an SF Symbol or
7
+ * drawable name, and `iconUri` / `iconScale` carry a resolved image asset.
4
8
  */
5
9
  export type SegmentedControlSegment = Readonly<{
6
10
  label: string;
7
11
  value: string;
8
12
  disabled: string;
9
- icon: string;
13
+ iconType: string;
14
+ iconName: string;
15
+ iconUri: string;
16
+ iconScale: CodegenTypes.Double;
17
+ iconTinted: string;
18
+ badge: string;
19
+ accessibilityLabel: string;
10
20
  }>;
11
21
  /**
12
22
  * Event emitted when the user selects a segment.
13
23
  */
14
24
  export type SegmentedControlSelectEvent = Readonly<{
15
- /** Selected segment index */
25
+ /** Selected segment index. -1 means the selection was cleared. */
16
26
  index: CodegenTypes.Int32;
17
- /** Selected segment value */
27
+ /** Selected segment value. Empty when the selection was cleared. */
18
28
  value: string;
19
29
  }>;
20
30
  /** Interactivity state (no booleans). */
21
31
  export type SegmentedControlInteractivity = 'enabled' | 'disabled';
32
+ /** How labels and icons combine (no booleans). */
33
+ export type SegmentedControlLabelVisibility = 'auto' | 'labeled' | 'unlabeled';
34
+ /**
35
+ * Label font. Empty strings / 0 mean "platform default".
36
+ */
37
+ export type LabelStyleProps = Readonly<{
38
+ fontFamily?: string;
39
+ fontSize?: CodegenTypes.Double;
40
+ fontWeight?: string;
41
+ fontStyle?: string;
42
+ }>;
22
43
  /**
23
44
  * iOS-specific configuration.
24
45
  */
@@ -27,8 +48,6 @@ export type IOSProps = Readonly<{
27
48
  momentary?: string;
28
49
  /** Whether segment widths are proportional to content */
29
50
  apportionsSegmentWidthsByContent?: string;
30
- /** Selected segment tint color (hex string) */
31
- selectedSegmentTintColor?: string;
32
51
  }>;
33
52
  /**
34
53
  * Android-specific configuration.
@@ -51,6 +70,26 @@ export interface SegmentedControlProps extends ViewProps {
51
70
  * Enabled / disabled state.
52
71
  */
53
72
  interactivity?: string;
73
+ /**
74
+ * How segment labels and icons combine.
75
+ */
76
+ labelVisibility?: string;
77
+ /** Background of the selected segment. */
78
+ selectedSegmentColor?: ColorValue;
79
+ /** Text / icon color of the selected segment. */
80
+ activeTintColor?: ColorValue;
81
+ /** Text / icon color of unselected segments. */
82
+ inactiveTintColor?: ColorValue;
83
+ /** Android: ripple color when pressing a segment. */
84
+ androidRippleColor?: ColorValue;
85
+ /** Android: outline color of the segments. */
86
+ androidStrokeColor?: ColorValue;
87
+ /** Label font. */
88
+ labelStyle?: LabelStyleProps;
89
+ /** Badge background (default: system red). */
90
+ badgeBackgroundColor?: ColorValue;
91
+ /** Badge text color (default: white). */
92
+ badgeTextColor?: ColorValue;
54
93
  /**
55
94
  * Fired when the user selects a segment.
56
95
  */
@@ -58,6 +97,6 @@ export interface SegmentedControlProps extends ViewProps {
58
97
  ios?: IOSProps;
59
98
  android?: AndroidProps;
60
99
  }
61
- declare const _default: import("react-native/types_generated/Libraries/Utilities/codegenNativeComponent").NativeComponentType<SegmentedControlProps>;
100
+ declare const _default: HostComponent<SegmentedControlProps>;
62
101
  export default _default;
63
102
  //# sourceMappingURL=SegmentedControlNativeComponent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SegmentedControlNativeComponent.d.ts","sourceRoot":"","sources":["../../../../src/SegmentedControlNativeComponent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG5D;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAAC;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,2BAA2B,GAAG,QAAQ,CAAC;IACjD,6BAA6B;IAC7B,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC;IAE1B,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAAC;AAEH,yCAAyC;AACzC,MAAM,MAAM,6BAA6B,GAAG,SAAS,GAAG,UAAU,CAAC;AAEnE;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,QAAQ,CAAC;IAC9B,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,yDAAyD;IACzD,gCAAgC,CAAC,EAAE,MAAM,CAAC;IAE1C,+CAA+C;IAC/C,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC;IAClC,kDAAkD;IAClD,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC,CAAC;AAEH,MAAM,WAAW,qBAAsB,SAAQ,SAAS;IACtD;;OAEG;IACH,QAAQ,EAAE,aAAa,CAAC,uBAAuB,CAAC,CAAC;IAEjD;;;OAGG;IACH,aAAa,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAErD;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,QAAQ,CAAC,EAAE,YAAY,CAAC,oBAAoB,CAAC,2BAA2B,CAAC,CAAC;IAE1E,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;;AAED,wBAEE"}
1
+ {"version":3,"file":"SegmentedControlNativeComponent.d.ts","sourceRoot":"","sources":["../../../../src/SegmentedControlNativeComponent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EACV,aAAa,EACb,SAAS,EACV,MAAM,cAAc,CAAC;AAGtB;;;;;;GAMG;AACH,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAAC;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,YAAY,CAAC,MAAM,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB,EAAE,MAAM,CAAC;CAC5B,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,2BAA2B,GAAG,QAAQ,CAAC;IACjD,kEAAkE;IAClE,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC;IAE1B,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAAC;AAEH,yCAAyC;AACzC,MAAM,MAAM,6BAA6B,GAAG,SAAS,GAAG,UAAU,CAAC;AAEnE,kDAAkD;AAClD,MAAM,MAAM,+BAA+B,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,CAAC;AAE/E;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,QAAQ,CAAC;IAC9B,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,yDAAyD;IACzD,gCAAgC,CAAC,EAAE,MAAM,CAAC;CAC3C,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC;IAClC,kDAAkD;IAClD,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC,CAAC;AAEH,MAAM,WAAW,qBAAsB,SAAQ,SAAS;IACtD;;OAEG;IACH,QAAQ,EAAE,aAAa,CAAC,uBAAuB,CAAC,CAAC;IAEjD;;;OAGG;IACH,aAAa,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAErD;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,0CAA0C;IAC1C,oBAAoB,CAAC,EAAE,UAAU,CAAC;IAElC,iDAAiD;IACjD,eAAe,CAAC,EAAE,UAAU,CAAC;IAE7B,gDAAgD;IAChD,iBAAiB,CAAC,EAAE,UAAU,CAAC;IAE/B,qDAAqD;IACrD,kBAAkB,CAAC,EAAE,UAAU,CAAC;IAEhC,8CAA8C;IAC9C,kBAAkB,CAAC,EAAE,UAAU,CAAC;IAEhC,kBAAkB;IAClB,UAAU,CAAC,EAAE,eAAe,CAAC;IAE7B,8CAA8C;IAC9C,oBAAoB,CAAC,EAAE,UAAU,CAAC;IAElC,yCAAyC;IACzC,cAAc,CAAC,EAAE,UAAU,CAAC;IAE5B;;OAEG;IACH,QAAQ,CAAC,EAAE,YAAY,CAAC,oBAAoB,CAAC,2BAA2B,CAAC,CAAC;IAE1E,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;wBAII,aAAa,CAAC,qBAAqB,CAAC;AAFzC,wBAE0C"}