@xaui/native 0.9.1-alpha.40 → 0.9.1-alpha.41

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.
@@ -0,0 +1,261 @@
1
+ import * as react_native from 'react-native';
2
+ import { ViewProps, StyleProp, ViewStyle, TextStyle, TextProps, PressableProps, View, Text } from 'react-native';
3
+ import * as react from 'react';
4
+ import { ReactNode } from 'react';
5
+ import { V as ViewStyleProps, T as TextStyleProps } from '../../style-props.type-CfnoGEP7.cjs';
6
+ import { S as Size, R as RadiusKey, X as XAUITheme } from '../../theme.type-C2gNHpEx.cjs';
7
+ import { R as Recipe, S as SlotStyles, a as StyleFn } from '../../create-recipe-dC7wMfnj.cjs';
8
+
9
+ type TabsSlot = 'root' | 'list' | 'trigger' | 'label' | 'indicator' | 'content';
10
+ /**
11
+ * Three shapes, not three emphases.
12
+ *
13
+ * `primary` is the segmented control — a pill sliding under the chosen tab inside a filled
14
+ * track. `secondary` is the underline, a rule moving along the bottom edge. `light` is
15
+ * neither: no track, no rule, nothing but the chosen tab's label going to the accent.
16
+ *
17
+ * They are different affordances rather than the same one louder, which is why the union
18
+ * is three rather than the usual four. `light` is the quietest a tab bar can be and still
19
+ * be one — the colour carries it alone, so it belongs over content that is already busy,
20
+ * and not where a bar has to be found before it can be read.
21
+ */
22
+ type TabsVariant = 'primary' | 'secondary' | 'light';
23
+ type TabsSize = Exclude<Size, 'xs'>;
24
+ /** Where a trigger sits, so the indicator knows where to slide. */
25
+ type TabRect = {
26
+ x: number;
27
+ width: number;
28
+ };
29
+ type TabsOwnProps = {
30
+ children?: ReactNode;
31
+ variant?: TabsVariant;
32
+ size?: TabsSize;
33
+ radius?: RadiusKey;
34
+ /** The tint (R7) — a raw value, never a token. */
35
+ color?: string;
36
+ value?: string;
37
+ defaultValue?: string;
38
+ onValueChange?: (value: string) => void;
39
+ isDisabled?: boolean;
40
+ };
41
+ type TabsProps = TabsOwnProps & Omit<ViewProps, keyof TabsOwnProps> & Omit<ViewStyleProps, keyof TabsOwnProps | keyof ViewProps>;
42
+ type TabsListOwnProps = {
43
+ children?: ReactNode;
44
+ };
45
+ type TabsListProps = TabsListOwnProps & Omit<ViewProps, keyof TabsListOwnProps> & Omit<ViewStyleProps, keyof TabsListOwnProps | keyof ViewProps>;
46
+ /** What a trigger's render function is handed. */
47
+ type TabsTriggerRenderState = {
48
+ isSelected: boolean;
49
+ isPressed: boolean;
50
+ isDisabled: boolean;
51
+ };
52
+ type TabsTriggerOwnProps = {
53
+ value: string;
54
+ isDisabled?: boolean;
55
+ children?: ReactNode | ((state: TabsTriggerRenderState) => ReactNode);
56
+ asChild?: boolean;
57
+ };
58
+ type TabsTriggerProps = TabsTriggerOwnProps & Omit<PressableProps, keyof TabsTriggerOwnProps> & Omit<ViewStyleProps, keyof TabsTriggerOwnProps | keyof PressableProps>;
59
+ type TabsLabelOwnProps = {
60
+ children?: ReactNode;
61
+ };
62
+ type TabsLabelProps = TabsLabelOwnProps & Omit<TextProps, keyof TabsLabelOwnProps> & Omit<TextStyleProps, keyof TabsLabelOwnProps | keyof TextProps>;
63
+ /** The indicator takes no props of its own — where it goes is the root's business. */
64
+ type TabsIndicatorProps = Omit<ViewProps, 'children'> & ViewStyleProps;
65
+ type TabsContentOwnProps = {
66
+ value: string;
67
+ children?: ReactNode;
68
+ };
69
+ type TabsContentProps = TabsContentOwnProps & Omit<ViewProps, keyof TabsContentOwnProps> & Omit<ViewStyleProps, keyof TabsContentOwnProps | keyof ViewProps>;
70
+ /** R5 — resolved style ids and the state the slots read. */
71
+ type TabsContextValue = {
72
+ listStyle: StyleProp<ViewStyle>;
73
+ triggerStyle: StyleProp<ViewStyle>;
74
+ labelStyle: StyleProp<TextStyle>;
75
+ labelSelectedStyle: StyleProp<TextStyle>;
76
+ indicatorStyle: StyleProp<ViewStyle>;
77
+ contentStyle: StyleProp<ViewStyle>;
78
+ variant: TabsVariant;
79
+ value: string | undefined;
80
+ isDisabled: boolean;
81
+ select: (value: string) => void;
82
+ /** Every trigger's measured rectangle, keyed by value. The indicator reads one. */
83
+ rects: Readonly<Record<string, TabRect>>;
84
+ setRect: (value: string, rect: TabRect) => void;
85
+ };
86
+ /** One trigger's own state, for the label inside it. */
87
+ type TabsTriggerContextValue = TabsTriggerRenderState;
88
+
89
+ /**
90
+ * The one node that says which tab is chosen.
91
+ *
92
+ * It slides between the triggers' measured rectangles on a spring, on the UI thread — so
93
+ * it keeps travelling while whatever the new tab shows is mounting.
94
+ *
95
+ * **It renders nothing until a rectangle exists.** On the first frame no trigger has been
96
+ * laid out, and an indicator at zero width would flash at the start of the row before
97
+ * jumping to the chosen tab.
98
+ */
99
+ declare function TabsIndicator({ style, ...props }: TabsIndicatorProps): react.JSX.Element;
100
+ declare namespace TabsIndicator {
101
+ var displayName: string;
102
+ }
103
+
104
+ /**
105
+ * A row of tabs, and what each one shows.
106
+ *
107
+ * ```tsx
108
+ * <Tabs defaultValue="all">
109
+ * <Tabs.List>
110
+ * <Tabs.Indicator />
111
+ * <Tabs.Trigger value="all">Tout</Tabs.Trigger>
112
+ * <Tabs.Trigger value="unread">Non lus</Tabs.Trigger>
113
+ * </Tabs.List>
114
+ * <Tabs.Content value="all">…</Tabs.Content>
115
+ * <Tabs.Content value="unread">…</Tabs.Content>
116
+ * </Tabs>
117
+ * ```
118
+ *
119
+ * **The triggers measure themselves and the root keeps the rectangles.** That is what lets
120
+ * the indicator be one node sliding rather than a border on each tab appearing and
121
+ * disappearing — and it is why `Tabs.Indicator` is written inside the list rather than
122
+ * being conjured by it: where it goes is the root's business, but whether it exists at all
123
+ * is the caller's.
124
+ */
125
+ declare const TabsRoot: react.ForwardRefExoticComponent<{
126
+ children?: react.ReactNode;
127
+ variant?: TabsVariant;
128
+ size?: TabsSize;
129
+ radius?: RadiusKey;
130
+ color?: string;
131
+ value?: string;
132
+ defaultValue?: string;
133
+ onValueChange?: (value: string) => void;
134
+ isDisabled?: boolean;
135
+ } & Omit<react_native.ViewProps, keyof {
136
+ children?: react.ReactNode;
137
+ variant?: TabsVariant;
138
+ size?: TabsSize;
139
+ radius?: RadiusKey;
140
+ color?: string;
141
+ value?: string;
142
+ defaultValue?: string;
143
+ onValueChange?: (value: string) => void;
144
+ isDisabled?: boolean;
145
+ }> & Omit<ViewStyleProps, "color" | "value" | "pointerEvents" | "style" | "children" | "size" | "hitSlop" | "id" | "needsOffscreenAlphaCompositing" | "onLayout" | "removeClippedSubviews" | "testID" | "nativeID" | "collapsable" | "collapsableChildren" | "onBlur" | "onFocus" | "renderToHardwareTextureAndroid" | "focusable" | "tabIndex" | "shouldRasterizeIOS" | "isTVSelectable" | "hasTVPreferredFocus" | "tvParallaxShiftDistanceX" | "tvParallaxShiftDistanceY" | "tvParallaxTiltAngle" | "tvParallaxMagnification" | "onStartShouldSetResponder" | "onMoveShouldSetResponder" | "onResponderEnd" | "onResponderGrant" | "onResponderReject" | "onResponderMove" | "onResponderRelease" | "onResponderStart" | "onResponderTerminationRequest" | "onResponderTerminate" | "onStartShouldSetResponderCapture" | "onMoveShouldSetResponderCapture" | "onTouchStart" | "onTouchMove" | "onTouchEnd" | "onTouchCancel" | "onTouchEndCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerUp" | "onPointerUpCapture" | "accessible" | "accessibilityActions" | "accessibilityLabel" | "aria-label" | "accessibilityRole" | "accessibilityState" | "aria-busy" | "aria-checked" | "aria-disabled" | "aria-expanded" | "aria-selected" | "accessibilityHint" | "accessibilityValue" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "onAccessibilityAction" | "importantForAccessibility" | "aria-hidden" | "aria-modal" | "role" | "accessibilityLabelledBy" | "aria-labelledby" | "accessibilityLiveRegion" | "aria-live" | "screenReaderFocusable" | "accessibilityElementsHidden" | "accessibilityViewIsModal" | "onAccessibilityEscape" | "onAccessibilityTap" | "onMagicTap" | "accessibilityIgnoresInvertColors" | "accessibilityLanguage" | "accessibilityShowsLargeContentViewer" | "accessibilityLargeContentTitle" | "accessibilityRespondsToUserInteraction" | "variant" | "radius" | "defaultValue" | "onValueChange" | "isDisabled"> & react.RefAttributes<View>>;
146
+
147
+ /**
148
+ * What a tab shows. Mounted when its tab is chosen, absent otherwise.
149
+ *
150
+ * Absent rather than hidden, deliberately: a tab bar over four screens of content should
151
+ * not have four screens of content mounted. A panel that must keep its state across a
152
+ * switch — a half-typed form, a scroll position — is one the caller holds the state for,
153
+ * which is the same trade every router makes.
154
+ */
155
+ declare const TabsContent: react.ForwardRefExoticComponent<{
156
+ value: string;
157
+ children?: react.ReactNode;
158
+ } & Omit<react_native.ViewProps, keyof {
159
+ value: string;
160
+ children?: react.ReactNode;
161
+ }> & Omit<ViewStyleProps, "value" | "pointerEvents" | "style" | "children" | "hitSlop" | "id" | "needsOffscreenAlphaCompositing" | "onLayout" | "removeClippedSubviews" | "testID" | "nativeID" | "collapsable" | "collapsableChildren" | "onBlur" | "onFocus" | "renderToHardwareTextureAndroid" | "focusable" | "tabIndex" | "shouldRasterizeIOS" | "isTVSelectable" | "hasTVPreferredFocus" | "tvParallaxShiftDistanceX" | "tvParallaxShiftDistanceY" | "tvParallaxTiltAngle" | "tvParallaxMagnification" | "onStartShouldSetResponder" | "onMoveShouldSetResponder" | "onResponderEnd" | "onResponderGrant" | "onResponderReject" | "onResponderMove" | "onResponderRelease" | "onResponderStart" | "onResponderTerminationRequest" | "onResponderTerminate" | "onStartShouldSetResponderCapture" | "onMoveShouldSetResponderCapture" | "onTouchStart" | "onTouchMove" | "onTouchEnd" | "onTouchCancel" | "onTouchEndCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerUp" | "onPointerUpCapture" | "accessible" | "accessibilityActions" | "accessibilityLabel" | "aria-label" | "accessibilityRole" | "accessibilityState" | "aria-busy" | "aria-checked" | "aria-disabled" | "aria-expanded" | "aria-selected" | "accessibilityHint" | "accessibilityValue" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "onAccessibilityAction" | "importantForAccessibility" | "aria-hidden" | "aria-modal" | "role" | "accessibilityLabelledBy" | "aria-labelledby" | "accessibilityLiveRegion" | "aria-live" | "screenReaderFocusable" | "accessibilityElementsHidden" | "accessibilityViewIsModal" | "onAccessibilityEscape" | "onAccessibilityTap" | "onMagicTap" | "accessibilityIgnoresInvertColors" | "accessibilityLanguage" | "accessibilityShowsLargeContentViewer" | "accessibilityLargeContentTitle" | "accessibilityRespondsToUserInteraction"> & react.RefAttributes<View>>;
162
+
163
+ /**
164
+ * A tab's text. It is the one thing that says which tab is chosen when the indicator has
165
+ * not arrived yet — the colour changes on the press, the pill takes a moment to follow.
166
+ */
167
+ declare const TabsLabel: react.ForwardRefExoticComponent<{
168
+ children?: react.ReactNode;
169
+ } & Omit<react_native.TextProps, "children"> & Omit<TextStyleProps, keyof react_native.TextProps> & react.RefAttributes<Text>>;
170
+
171
+ /**
172
+ * The row the triggers sit in, and the box the indicator slides inside.
173
+ *
174
+ * It hugs its tabs rather than filling the row: a tab bar as wide as the screen with three
175
+ * tabs in it is a segmented control pretending to be a navigation bar. `alignSelf` on the
176
+ * caller's side is how you widen it.
177
+ */
178
+ declare const TabsList: react.ForwardRefExoticComponent<{
179
+ children?: react.ReactNode;
180
+ } & Omit<react_native.ViewProps, "children"> & Omit<ViewStyleProps, keyof react_native.ViewProps> & react.RefAttributes<View>>;
181
+
182
+ /**
183
+ * One tab.
184
+ *
185
+ * It publishes its own rectangle on every layout, and the layout event's `x` and `width`
186
+ * are the right ones here — unlike an overlay's anchor, both the trigger and the indicator
187
+ * are laid out in the same parent, so the parent's coordinates are the ones that matter.
188
+ */
189
+ declare const TabsTrigger: react.ForwardRefExoticComponent<{
190
+ value: string;
191
+ isDisabled?: boolean;
192
+ children?: react.ReactNode | ((state: TabsTriggerRenderState) => react.ReactNode);
193
+ asChild?: boolean;
194
+ } & Omit<react_native.PressableProps, keyof {
195
+ value: string;
196
+ isDisabled?: boolean;
197
+ children?: react.ReactNode | ((state: TabsTriggerRenderState) => react.ReactNode);
198
+ asChild?: boolean;
199
+ }> & Omit<ViewStyleProps, "value" | "pointerEvents" | "style" | "children" | "hitSlop" | "id" | "needsOffscreenAlphaCompositing" | "onLayout" | "removeClippedSubviews" | "testID" | "nativeID" | "collapsable" | "collapsableChildren" | "onBlur" | "onFocus" | "renderToHardwareTextureAndroid" | "focusable" | "tabIndex" | "shouldRasterizeIOS" | "isTVSelectable" | "hasTVPreferredFocus" | "tvParallaxShiftDistanceX" | "tvParallaxShiftDistanceY" | "tvParallaxTiltAngle" | "tvParallaxMagnification" | "onStartShouldSetResponder" | "onMoveShouldSetResponder" | "onResponderEnd" | "onResponderGrant" | "onResponderReject" | "onResponderMove" | "onResponderRelease" | "onResponderStart" | "onResponderTerminationRequest" | "onResponderTerminate" | "onStartShouldSetResponderCapture" | "onMoveShouldSetResponderCapture" | "onTouchStart" | "onTouchMove" | "onTouchEnd" | "onTouchCancel" | "onTouchEndCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerUp" | "onPointerUpCapture" | "accessible" | "accessibilityActions" | "accessibilityLabel" | "aria-label" | "accessibilityRole" | "accessibilityState" | "aria-busy" | "aria-checked" | "aria-disabled" | "aria-expanded" | "aria-selected" | "accessibilityHint" | "accessibilityValue" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "onAccessibilityAction" | "importantForAccessibility" | "aria-hidden" | "aria-modal" | "role" | "accessibilityLabelledBy" | "aria-labelledby" | "accessibilityLiveRegion" | "aria-live" | "screenReaderFocusable" | "accessibilityElementsHidden" | "accessibilityViewIsModal" | "onAccessibilityEscape" | "onAccessibilityTap" | "onMagicTap" | "accessibilityIgnoresInvertColors" | "accessibilityLanguage" | "accessibilityShowsLargeContentViewer" | "accessibilityLargeContentTitle" | "accessibilityRespondsToUserInteraction" | "disabled" | "onPress" | "onPressIn" | "onPressOut" | "onLongPress" | "delayLongPress" | "isDisabled" | "asChild" | "onHoverIn" | "onHoverOut" | "cancelable" | "delayHoverIn" | "delayHoverOut" | "pressRetentionOffset" | "android_disableSound" | "android_ripple" | "testOnly_pressed" | "unstable_pressDelay"> & react.RefAttributes<View>>;
200
+
201
+ declare const useTabs: () => TabsContextValue;
202
+ declare const useTabsTrigger: () => TabsTriggerRenderState;
203
+
204
+ declare const tabsRecipe: Recipe<"label" | "root" | "trigger" | "indicator" | "content" | "list", TabsVariant, {
205
+ readonly size: {
206
+ readonly sm: (theme: XAUITheme) => SlotStyles<TabsSlot>;
207
+ readonly md: (theme: XAUITheme) => SlotStyles<TabsSlot>;
208
+ readonly lg: (theme: XAUITheme) => SlotStyles<TabsSlot>;
209
+ };
210
+ readonly radius: Record<RadiusKey, StyleFn<"indicator" | "list">>;
211
+ }>;
212
+
213
+ declare const Tabs: react.ForwardRefExoticComponent<{
214
+ children?: react.ReactNode;
215
+ variant?: TabsVariant;
216
+ size?: TabsSize;
217
+ radius?: RadiusKey;
218
+ color?: string;
219
+ value?: string;
220
+ defaultValue?: string;
221
+ onValueChange?: (value: string) => void;
222
+ isDisabled?: boolean;
223
+ } & Omit<react_native.ViewProps, keyof {
224
+ children?: react.ReactNode;
225
+ variant?: TabsVariant;
226
+ size?: TabsSize;
227
+ radius?: RadiusKey;
228
+ color?: string;
229
+ value?: string;
230
+ defaultValue?: string;
231
+ onValueChange?: (value: string) => void;
232
+ isDisabled?: boolean;
233
+ }> & Omit<ViewStyleProps, "color" | "value" | "pointerEvents" | "style" | "children" | "size" | "hitSlop" | "id" | "needsOffscreenAlphaCompositing" | "onLayout" | "removeClippedSubviews" | "testID" | "nativeID" | "collapsable" | "collapsableChildren" | "onBlur" | "onFocus" | "renderToHardwareTextureAndroid" | "focusable" | "tabIndex" | "shouldRasterizeIOS" | "isTVSelectable" | "hasTVPreferredFocus" | "tvParallaxShiftDistanceX" | "tvParallaxShiftDistanceY" | "tvParallaxTiltAngle" | "tvParallaxMagnification" | "onStartShouldSetResponder" | "onMoveShouldSetResponder" | "onResponderEnd" | "onResponderGrant" | "onResponderReject" | "onResponderMove" | "onResponderRelease" | "onResponderStart" | "onResponderTerminationRequest" | "onResponderTerminate" | "onStartShouldSetResponderCapture" | "onMoveShouldSetResponderCapture" | "onTouchStart" | "onTouchMove" | "onTouchEnd" | "onTouchCancel" | "onTouchEndCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerUp" | "onPointerUpCapture" | "accessible" | "accessibilityActions" | "accessibilityLabel" | "aria-label" | "accessibilityRole" | "accessibilityState" | "aria-busy" | "aria-checked" | "aria-disabled" | "aria-expanded" | "aria-selected" | "accessibilityHint" | "accessibilityValue" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "onAccessibilityAction" | "importantForAccessibility" | "aria-hidden" | "aria-modal" | "role" | "accessibilityLabelledBy" | "aria-labelledby" | "accessibilityLiveRegion" | "aria-live" | "screenReaderFocusable" | "accessibilityElementsHidden" | "accessibilityViewIsModal" | "onAccessibilityEscape" | "onAccessibilityTap" | "onMagicTap" | "accessibilityIgnoresInvertColors" | "accessibilityLanguage" | "accessibilityShowsLargeContentViewer" | "accessibilityLargeContentTitle" | "accessibilityRespondsToUserInteraction" | "variant" | "radius" | "defaultValue" | "onValueChange" | "isDisabled"> & react.RefAttributes<react_native.View>> & {
234
+ List: react.ForwardRefExoticComponent<{
235
+ children?: react.ReactNode;
236
+ } & Omit<react_native.ViewProps, "children"> & Omit<ViewStyleProps, keyof react_native.ViewProps> & react.RefAttributes<react_native.View>>;
237
+ Trigger: react.ForwardRefExoticComponent<{
238
+ value: string;
239
+ isDisabled?: boolean;
240
+ children?: react.ReactNode | ((state: TabsTriggerRenderState) => react.ReactNode);
241
+ asChild?: boolean;
242
+ } & Omit<react_native.PressableProps, keyof {
243
+ value: string;
244
+ isDisabled?: boolean;
245
+ children?: react.ReactNode | ((state: TabsTriggerRenderState) => react.ReactNode);
246
+ asChild?: boolean;
247
+ }> & Omit<ViewStyleProps, "value" | "pointerEvents" | "style" | "children" | "hitSlop" | "id" | "needsOffscreenAlphaCompositing" | "onLayout" | "removeClippedSubviews" | "testID" | "nativeID" | "collapsable" | "collapsableChildren" | "onBlur" | "onFocus" | "renderToHardwareTextureAndroid" | "focusable" | "tabIndex" | "shouldRasterizeIOS" | "isTVSelectable" | "hasTVPreferredFocus" | "tvParallaxShiftDistanceX" | "tvParallaxShiftDistanceY" | "tvParallaxTiltAngle" | "tvParallaxMagnification" | "onStartShouldSetResponder" | "onMoveShouldSetResponder" | "onResponderEnd" | "onResponderGrant" | "onResponderReject" | "onResponderMove" | "onResponderRelease" | "onResponderStart" | "onResponderTerminationRequest" | "onResponderTerminate" | "onStartShouldSetResponderCapture" | "onMoveShouldSetResponderCapture" | "onTouchStart" | "onTouchMove" | "onTouchEnd" | "onTouchCancel" | "onTouchEndCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerUp" | "onPointerUpCapture" | "accessible" | "accessibilityActions" | "accessibilityLabel" | "aria-label" | "accessibilityRole" | "accessibilityState" | "aria-busy" | "aria-checked" | "aria-disabled" | "aria-expanded" | "aria-selected" | "accessibilityHint" | "accessibilityValue" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "onAccessibilityAction" | "importantForAccessibility" | "aria-hidden" | "aria-modal" | "role" | "accessibilityLabelledBy" | "aria-labelledby" | "accessibilityLiveRegion" | "aria-live" | "screenReaderFocusable" | "accessibilityElementsHidden" | "accessibilityViewIsModal" | "onAccessibilityEscape" | "onAccessibilityTap" | "onMagicTap" | "accessibilityIgnoresInvertColors" | "accessibilityLanguage" | "accessibilityShowsLargeContentViewer" | "accessibilityLargeContentTitle" | "accessibilityRespondsToUserInteraction" | "disabled" | "onPress" | "onPressIn" | "onPressOut" | "onLongPress" | "delayLongPress" | "isDisabled" | "asChild" | "onHoverIn" | "onHoverOut" | "cancelable" | "delayHoverIn" | "delayHoverOut" | "pressRetentionOffset" | "android_disableSound" | "android_ripple" | "testOnly_pressed" | "unstable_pressDelay"> & react.RefAttributes<react_native.View>>;
248
+ Label: react.ForwardRefExoticComponent<{
249
+ children?: react.ReactNode;
250
+ } & Omit<react_native.TextProps, "children"> & Omit<TextStyleProps, keyof react_native.TextProps> & react.RefAttributes<react_native.Text>>;
251
+ Indicator: typeof TabsIndicator;
252
+ Content: react.ForwardRefExoticComponent<{
253
+ value: string;
254
+ children?: react.ReactNode;
255
+ } & Omit<react_native.ViewProps, keyof {
256
+ value: string;
257
+ children?: react.ReactNode;
258
+ }> & Omit<ViewStyleProps, "value" | "pointerEvents" | "style" | "children" | "hitSlop" | "id" | "needsOffscreenAlphaCompositing" | "onLayout" | "removeClippedSubviews" | "testID" | "nativeID" | "collapsable" | "collapsableChildren" | "onBlur" | "onFocus" | "renderToHardwareTextureAndroid" | "focusable" | "tabIndex" | "shouldRasterizeIOS" | "isTVSelectable" | "hasTVPreferredFocus" | "tvParallaxShiftDistanceX" | "tvParallaxShiftDistanceY" | "tvParallaxTiltAngle" | "tvParallaxMagnification" | "onStartShouldSetResponder" | "onMoveShouldSetResponder" | "onResponderEnd" | "onResponderGrant" | "onResponderReject" | "onResponderMove" | "onResponderRelease" | "onResponderStart" | "onResponderTerminationRequest" | "onResponderTerminate" | "onStartShouldSetResponderCapture" | "onMoveShouldSetResponderCapture" | "onTouchStart" | "onTouchMove" | "onTouchEnd" | "onTouchCancel" | "onTouchEndCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerUp" | "onPointerUpCapture" | "accessible" | "accessibilityActions" | "accessibilityLabel" | "aria-label" | "accessibilityRole" | "accessibilityState" | "aria-busy" | "aria-checked" | "aria-disabled" | "aria-expanded" | "aria-selected" | "accessibilityHint" | "accessibilityValue" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "onAccessibilityAction" | "importantForAccessibility" | "aria-hidden" | "aria-modal" | "role" | "accessibilityLabelledBy" | "aria-labelledby" | "accessibilityLiveRegion" | "aria-live" | "screenReaderFocusable" | "accessibilityElementsHidden" | "accessibilityViewIsModal" | "onAccessibilityEscape" | "onAccessibilityTap" | "onMagicTap" | "accessibilityIgnoresInvertColors" | "accessibilityLanguage" | "accessibilityShowsLargeContentViewer" | "accessibilityLargeContentTitle" | "accessibilityRespondsToUserInteraction"> & react.RefAttributes<react_native.View>>;
259
+ };
260
+
261
+ export { type TabRect, Tabs, TabsContent, type TabsContentProps, type TabsContextValue, TabsIndicator, type TabsIndicatorProps, TabsLabel, type TabsLabelProps, TabsList, type TabsListProps, type TabsProps, TabsRoot, type TabsSize, type TabsSlot, TabsTrigger, type TabsTriggerContextValue, type TabsTriggerProps, type TabsTriggerRenderState, type TabsVariant, tabsRecipe, useTabs, useTabsTrigger };
@@ -0,0 +1,261 @@
1
+ import * as react_native from 'react-native';
2
+ import { ViewProps, StyleProp, ViewStyle, TextStyle, TextProps, PressableProps, View, Text } from 'react-native';
3
+ import * as react from 'react';
4
+ import { ReactNode } from 'react';
5
+ import { V as ViewStyleProps, T as TextStyleProps } from '../../style-props.type-CfnoGEP7.js';
6
+ import { S as Size, R as RadiusKey, X as XAUITheme } from '../../theme.type-C2gNHpEx.js';
7
+ import { R as Recipe, S as SlotStyles, a as StyleFn } from '../../create-recipe-BdVd2ffi.js';
8
+
9
+ type TabsSlot = 'root' | 'list' | 'trigger' | 'label' | 'indicator' | 'content';
10
+ /**
11
+ * Three shapes, not three emphases.
12
+ *
13
+ * `primary` is the segmented control — a pill sliding under the chosen tab inside a filled
14
+ * track. `secondary` is the underline, a rule moving along the bottom edge. `light` is
15
+ * neither: no track, no rule, nothing but the chosen tab's label going to the accent.
16
+ *
17
+ * They are different affordances rather than the same one louder, which is why the union
18
+ * is three rather than the usual four. `light` is the quietest a tab bar can be and still
19
+ * be one — the colour carries it alone, so it belongs over content that is already busy,
20
+ * and not where a bar has to be found before it can be read.
21
+ */
22
+ type TabsVariant = 'primary' | 'secondary' | 'light';
23
+ type TabsSize = Exclude<Size, 'xs'>;
24
+ /** Where a trigger sits, so the indicator knows where to slide. */
25
+ type TabRect = {
26
+ x: number;
27
+ width: number;
28
+ };
29
+ type TabsOwnProps = {
30
+ children?: ReactNode;
31
+ variant?: TabsVariant;
32
+ size?: TabsSize;
33
+ radius?: RadiusKey;
34
+ /** The tint (R7) — a raw value, never a token. */
35
+ color?: string;
36
+ value?: string;
37
+ defaultValue?: string;
38
+ onValueChange?: (value: string) => void;
39
+ isDisabled?: boolean;
40
+ };
41
+ type TabsProps = TabsOwnProps & Omit<ViewProps, keyof TabsOwnProps> & Omit<ViewStyleProps, keyof TabsOwnProps | keyof ViewProps>;
42
+ type TabsListOwnProps = {
43
+ children?: ReactNode;
44
+ };
45
+ type TabsListProps = TabsListOwnProps & Omit<ViewProps, keyof TabsListOwnProps> & Omit<ViewStyleProps, keyof TabsListOwnProps | keyof ViewProps>;
46
+ /** What a trigger's render function is handed. */
47
+ type TabsTriggerRenderState = {
48
+ isSelected: boolean;
49
+ isPressed: boolean;
50
+ isDisabled: boolean;
51
+ };
52
+ type TabsTriggerOwnProps = {
53
+ value: string;
54
+ isDisabled?: boolean;
55
+ children?: ReactNode | ((state: TabsTriggerRenderState) => ReactNode);
56
+ asChild?: boolean;
57
+ };
58
+ type TabsTriggerProps = TabsTriggerOwnProps & Omit<PressableProps, keyof TabsTriggerOwnProps> & Omit<ViewStyleProps, keyof TabsTriggerOwnProps | keyof PressableProps>;
59
+ type TabsLabelOwnProps = {
60
+ children?: ReactNode;
61
+ };
62
+ type TabsLabelProps = TabsLabelOwnProps & Omit<TextProps, keyof TabsLabelOwnProps> & Omit<TextStyleProps, keyof TabsLabelOwnProps | keyof TextProps>;
63
+ /** The indicator takes no props of its own — where it goes is the root's business. */
64
+ type TabsIndicatorProps = Omit<ViewProps, 'children'> & ViewStyleProps;
65
+ type TabsContentOwnProps = {
66
+ value: string;
67
+ children?: ReactNode;
68
+ };
69
+ type TabsContentProps = TabsContentOwnProps & Omit<ViewProps, keyof TabsContentOwnProps> & Omit<ViewStyleProps, keyof TabsContentOwnProps | keyof ViewProps>;
70
+ /** R5 — resolved style ids and the state the slots read. */
71
+ type TabsContextValue = {
72
+ listStyle: StyleProp<ViewStyle>;
73
+ triggerStyle: StyleProp<ViewStyle>;
74
+ labelStyle: StyleProp<TextStyle>;
75
+ labelSelectedStyle: StyleProp<TextStyle>;
76
+ indicatorStyle: StyleProp<ViewStyle>;
77
+ contentStyle: StyleProp<ViewStyle>;
78
+ variant: TabsVariant;
79
+ value: string | undefined;
80
+ isDisabled: boolean;
81
+ select: (value: string) => void;
82
+ /** Every trigger's measured rectangle, keyed by value. The indicator reads one. */
83
+ rects: Readonly<Record<string, TabRect>>;
84
+ setRect: (value: string, rect: TabRect) => void;
85
+ };
86
+ /** One trigger's own state, for the label inside it. */
87
+ type TabsTriggerContextValue = TabsTriggerRenderState;
88
+
89
+ /**
90
+ * The one node that says which tab is chosen.
91
+ *
92
+ * It slides between the triggers' measured rectangles on a spring, on the UI thread — so
93
+ * it keeps travelling while whatever the new tab shows is mounting.
94
+ *
95
+ * **It renders nothing until a rectangle exists.** On the first frame no trigger has been
96
+ * laid out, and an indicator at zero width would flash at the start of the row before
97
+ * jumping to the chosen tab.
98
+ */
99
+ declare function TabsIndicator({ style, ...props }: TabsIndicatorProps): react.JSX.Element;
100
+ declare namespace TabsIndicator {
101
+ var displayName: string;
102
+ }
103
+
104
+ /**
105
+ * A row of tabs, and what each one shows.
106
+ *
107
+ * ```tsx
108
+ * <Tabs defaultValue="all">
109
+ * <Tabs.List>
110
+ * <Tabs.Indicator />
111
+ * <Tabs.Trigger value="all">Tout</Tabs.Trigger>
112
+ * <Tabs.Trigger value="unread">Non lus</Tabs.Trigger>
113
+ * </Tabs.List>
114
+ * <Tabs.Content value="all">…</Tabs.Content>
115
+ * <Tabs.Content value="unread">…</Tabs.Content>
116
+ * </Tabs>
117
+ * ```
118
+ *
119
+ * **The triggers measure themselves and the root keeps the rectangles.** That is what lets
120
+ * the indicator be one node sliding rather than a border on each tab appearing and
121
+ * disappearing — and it is why `Tabs.Indicator` is written inside the list rather than
122
+ * being conjured by it: where it goes is the root's business, but whether it exists at all
123
+ * is the caller's.
124
+ */
125
+ declare const TabsRoot: react.ForwardRefExoticComponent<{
126
+ children?: react.ReactNode;
127
+ variant?: TabsVariant;
128
+ size?: TabsSize;
129
+ radius?: RadiusKey;
130
+ color?: string;
131
+ value?: string;
132
+ defaultValue?: string;
133
+ onValueChange?: (value: string) => void;
134
+ isDisabled?: boolean;
135
+ } & Omit<react_native.ViewProps, keyof {
136
+ children?: react.ReactNode;
137
+ variant?: TabsVariant;
138
+ size?: TabsSize;
139
+ radius?: RadiusKey;
140
+ color?: string;
141
+ value?: string;
142
+ defaultValue?: string;
143
+ onValueChange?: (value: string) => void;
144
+ isDisabled?: boolean;
145
+ }> & Omit<ViewStyleProps, "color" | "value" | "pointerEvents" | "style" | "children" | "size" | "hitSlop" | "id" | "needsOffscreenAlphaCompositing" | "onLayout" | "removeClippedSubviews" | "testID" | "nativeID" | "collapsable" | "collapsableChildren" | "onBlur" | "onFocus" | "renderToHardwareTextureAndroid" | "focusable" | "tabIndex" | "shouldRasterizeIOS" | "isTVSelectable" | "hasTVPreferredFocus" | "tvParallaxShiftDistanceX" | "tvParallaxShiftDistanceY" | "tvParallaxTiltAngle" | "tvParallaxMagnification" | "onStartShouldSetResponder" | "onMoveShouldSetResponder" | "onResponderEnd" | "onResponderGrant" | "onResponderReject" | "onResponderMove" | "onResponderRelease" | "onResponderStart" | "onResponderTerminationRequest" | "onResponderTerminate" | "onStartShouldSetResponderCapture" | "onMoveShouldSetResponderCapture" | "onTouchStart" | "onTouchMove" | "onTouchEnd" | "onTouchCancel" | "onTouchEndCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerUp" | "onPointerUpCapture" | "accessible" | "accessibilityActions" | "accessibilityLabel" | "aria-label" | "accessibilityRole" | "accessibilityState" | "aria-busy" | "aria-checked" | "aria-disabled" | "aria-expanded" | "aria-selected" | "accessibilityHint" | "accessibilityValue" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "onAccessibilityAction" | "importantForAccessibility" | "aria-hidden" | "aria-modal" | "role" | "accessibilityLabelledBy" | "aria-labelledby" | "accessibilityLiveRegion" | "aria-live" | "screenReaderFocusable" | "accessibilityElementsHidden" | "accessibilityViewIsModal" | "onAccessibilityEscape" | "onAccessibilityTap" | "onMagicTap" | "accessibilityIgnoresInvertColors" | "accessibilityLanguage" | "accessibilityShowsLargeContentViewer" | "accessibilityLargeContentTitle" | "accessibilityRespondsToUserInteraction" | "variant" | "radius" | "defaultValue" | "onValueChange" | "isDisabled"> & react.RefAttributes<View>>;
146
+
147
+ /**
148
+ * What a tab shows. Mounted when its tab is chosen, absent otherwise.
149
+ *
150
+ * Absent rather than hidden, deliberately: a tab bar over four screens of content should
151
+ * not have four screens of content mounted. A panel that must keep its state across a
152
+ * switch — a half-typed form, a scroll position — is one the caller holds the state for,
153
+ * which is the same trade every router makes.
154
+ */
155
+ declare const TabsContent: react.ForwardRefExoticComponent<{
156
+ value: string;
157
+ children?: react.ReactNode;
158
+ } & Omit<react_native.ViewProps, keyof {
159
+ value: string;
160
+ children?: react.ReactNode;
161
+ }> & Omit<ViewStyleProps, "value" | "pointerEvents" | "style" | "children" | "hitSlop" | "id" | "needsOffscreenAlphaCompositing" | "onLayout" | "removeClippedSubviews" | "testID" | "nativeID" | "collapsable" | "collapsableChildren" | "onBlur" | "onFocus" | "renderToHardwareTextureAndroid" | "focusable" | "tabIndex" | "shouldRasterizeIOS" | "isTVSelectable" | "hasTVPreferredFocus" | "tvParallaxShiftDistanceX" | "tvParallaxShiftDistanceY" | "tvParallaxTiltAngle" | "tvParallaxMagnification" | "onStartShouldSetResponder" | "onMoveShouldSetResponder" | "onResponderEnd" | "onResponderGrant" | "onResponderReject" | "onResponderMove" | "onResponderRelease" | "onResponderStart" | "onResponderTerminationRequest" | "onResponderTerminate" | "onStartShouldSetResponderCapture" | "onMoveShouldSetResponderCapture" | "onTouchStart" | "onTouchMove" | "onTouchEnd" | "onTouchCancel" | "onTouchEndCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerUp" | "onPointerUpCapture" | "accessible" | "accessibilityActions" | "accessibilityLabel" | "aria-label" | "accessibilityRole" | "accessibilityState" | "aria-busy" | "aria-checked" | "aria-disabled" | "aria-expanded" | "aria-selected" | "accessibilityHint" | "accessibilityValue" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "onAccessibilityAction" | "importantForAccessibility" | "aria-hidden" | "aria-modal" | "role" | "accessibilityLabelledBy" | "aria-labelledby" | "accessibilityLiveRegion" | "aria-live" | "screenReaderFocusable" | "accessibilityElementsHidden" | "accessibilityViewIsModal" | "onAccessibilityEscape" | "onAccessibilityTap" | "onMagicTap" | "accessibilityIgnoresInvertColors" | "accessibilityLanguage" | "accessibilityShowsLargeContentViewer" | "accessibilityLargeContentTitle" | "accessibilityRespondsToUserInteraction"> & react.RefAttributes<View>>;
162
+
163
+ /**
164
+ * A tab's text. It is the one thing that says which tab is chosen when the indicator has
165
+ * not arrived yet — the colour changes on the press, the pill takes a moment to follow.
166
+ */
167
+ declare const TabsLabel: react.ForwardRefExoticComponent<{
168
+ children?: react.ReactNode;
169
+ } & Omit<react_native.TextProps, "children"> & Omit<TextStyleProps, keyof react_native.TextProps> & react.RefAttributes<Text>>;
170
+
171
+ /**
172
+ * The row the triggers sit in, and the box the indicator slides inside.
173
+ *
174
+ * It hugs its tabs rather than filling the row: a tab bar as wide as the screen with three
175
+ * tabs in it is a segmented control pretending to be a navigation bar. `alignSelf` on the
176
+ * caller's side is how you widen it.
177
+ */
178
+ declare const TabsList: react.ForwardRefExoticComponent<{
179
+ children?: react.ReactNode;
180
+ } & Omit<react_native.ViewProps, "children"> & Omit<ViewStyleProps, keyof react_native.ViewProps> & react.RefAttributes<View>>;
181
+
182
+ /**
183
+ * One tab.
184
+ *
185
+ * It publishes its own rectangle on every layout, and the layout event's `x` and `width`
186
+ * are the right ones here — unlike an overlay's anchor, both the trigger and the indicator
187
+ * are laid out in the same parent, so the parent's coordinates are the ones that matter.
188
+ */
189
+ declare const TabsTrigger: react.ForwardRefExoticComponent<{
190
+ value: string;
191
+ isDisabled?: boolean;
192
+ children?: react.ReactNode | ((state: TabsTriggerRenderState) => react.ReactNode);
193
+ asChild?: boolean;
194
+ } & Omit<react_native.PressableProps, keyof {
195
+ value: string;
196
+ isDisabled?: boolean;
197
+ children?: react.ReactNode | ((state: TabsTriggerRenderState) => react.ReactNode);
198
+ asChild?: boolean;
199
+ }> & Omit<ViewStyleProps, "value" | "pointerEvents" | "style" | "children" | "hitSlop" | "id" | "needsOffscreenAlphaCompositing" | "onLayout" | "removeClippedSubviews" | "testID" | "nativeID" | "collapsable" | "collapsableChildren" | "onBlur" | "onFocus" | "renderToHardwareTextureAndroid" | "focusable" | "tabIndex" | "shouldRasterizeIOS" | "isTVSelectable" | "hasTVPreferredFocus" | "tvParallaxShiftDistanceX" | "tvParallaxShiftDistanceY" | "tvParallaxTiltAngle" | "tvParallaxMagnification" | "onStartShouldSetResponder" | "onMoveShouldSetResponder" | "onResponderEnd" | "onResponderGrant" | "onResponderReject" | "onResponderMove" | "onResponderRelease" | "onResponderStart" | "onResponderTerminationRequest" | "onResponderTerminate" | "onStartShouldSetResponderCapture" | "onMoveShouldSetResponderCapture" | "onTouchStart" | "onTouchMove" | "onTouchEnd" | "onTouchCancel" | "onTouchEndCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerUp" | "onPointerUpCapture" | "accessible" | "accessibilityActions" | "accessibilityLabel" | "aria-label" | "accessibilityRole" | "accessibilityState" | "aria-busy" | "aria-checked" | "aria-disabled" | "aria-expanded" | "aria-selected" | "accessibilityHint" | "accessibilityValue" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "onAccessibilityAction" | "importantForAccessibility" | "aria-hidden" | "aria-modal" | "role" | "accessibilityLabelledBy" | "aria-labelledby" | "accessibilityLiveRegion" | "aria-live" | "screenReaderFocusable" | "accessibilityElementsHidden" | "accessibilityViewIsModal" | "onAccessibilityEscape" | "onAccessibilityTap" | "onMagicTap" | "accessibilityIgnoresInvertColors" | "accessibilityLanguage" | "accessibilityShowsLargeContentViewer" | "accessibilityLargeContentTitle" | "accessibilityRespondsToUserInteraction" | "disabled" | "onPress" | "onPressIn" | "onPressOut" | "onLongPress" | "delayLongPress" | "isDisabled" | "asChild" | "onHoverIn" | "onHoverOut" | "cancelable" | "delayHoverIn" | "delayHoverOut" | "pressRetentionOffset" | "android_disableSound" | "android_ripple" | "testOnly_pressed" | "unstable_pressDelay"> & react.RefAttributes<View>>;
200
+
201
+ declare const useTabs: () => TabsContextValue;
202
+ declare const useTabsTrigger: () => TabsTriggerRenderState;
203
+
204
+ declare const tabsRecipe: Recipe<"label" | "root" | "trigger" | "indicator" | "content" | "list", TabsVariant, {
205
+ readonly size: {
206
+ readonly sm: (theme: XAUITheme) => SlotStyles<TabsSlot>;
207
+ readonly md: (theme: XAUITheme) => SlotStyles<TabsSlot>;
208
+ readonly lg: (theme: XAUITheme) => SlotStyles<TabsSlot>;
209
+ };
210
+ readonly radius: Record<RadiusKey, StyleFn<"indicator" | "list">>;
211
+ }>;
212
+
213
+ declare const Tabs: react.ForwardRefExoticComponent<{
214
+ children?: react.ReactNode;
215
+ variant?: TabsVariant;
216
+ size?: TabsSize;
217
+ radius?: RadiusKey;
218
+ color?: string;
219
+ value?: string;
220
+ defaultValue?: string;
221
+ onValueChange?: (value: string) => void;
222
+ isDisabled?: boolean;
223
+ } & Omit<react_native.ViewProps, keyof {
224
+ children?: react.ReactNode;
225
+ variant?: TabsVariant;
226
+ size?: TabsSize;
227
+ radius?: RadiusKey;
228
+ color?: string;
229
+ value?: string;
230
+ defaultValue?: string;
231
+ onValueChange?: (value: string) => void;
232
+ isDisabled?: boolean;
233
+ }> & Omit<ViewStyleProps, "color" | "value" | "pointerEvents" | "style" | "children" | "size" | "hitSlop" | "id" | "needsOffscreenAlphaCompositing" | "onLayout" | "removeClippedSubviews" | "testID" | "nativeID" | "collapsable" | "collapsableChildren" | "onBlur" | "onFocus" | "renderToHardwareTextureAndroid" | "focusable" | "tabIndex" | "shouldRasterizeIOS" | "isTVSelectable" | "hasTVPreferredFocus" | "tvParallaxShiftDistanceX" | "tvParallaxShiftDistanceY" | "tvParallaxTiltAngle" | "tvParallaxMagnification" | "onStartShouldSetResponder" | "onMoveShouldSetResponder" | "onResponderEnd" | "onResponderGrant" | "onResponderReject" | "onResponderMove" | "onResponderRelease" | "onResponderStart" | "onResponderTerminationRequest" | "onResponderTerminate" | "onStartShouldSetResponderCapture" | "onMoveShouldSetResponderCapture" | "onTouchStart" | "onTouchMove" | "onTouchEnd" | "onTouchCancel" | "onTouchEndCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerUp" | "onPointerUpCapture" | "accessible" | "accessibilityActions" | "accessibilityLabel" | "aria-label" | "accessibilityRole" | "accessibilityState" | "aria-busy" | "aria-checked" | "aria-disabled" | "aria-expanded" | "aria-selected" | "accessibilityHint" | "accessibilityValue" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "onAccessibilityAction" | "importantForAccessibility" | "aria-hidden" | "aria-modal" | "role" | "accessibilityLabelledBy" | "aria-labelledby" | "accessibilityLiveRegion" | "aria-live" | "screenReaderFocusable" | "accessibilityElementsHidden" | "accessibilityViewIsModal" | "onAccessibilityEscape" | "onAccessibilityTap" | "onMagicTap" | "accessibilityIgnoresInvertColors" | "accessibilityLanguage" | "accessibilityShowsLargeContentViewer" | "accessibilityLargeContentTitle" | "accessibilityRespondsToUserInteraction" | "variant" | "radius" | "defaultValue" | "onValueChange" | "isDisabled"> & react.RefAttributes<react_native.View>> & {
234
+ List: react.ForwardRefExoticComponent<{
235
+ children?: react.ReactNode;
236
+ } & Omit<react_native.ViewProps, "children"> & Omit<ViewStyleProps, keyof react_native.ViewProps> & react.RefAttributes<react_native.View>>;
237
+ Trigger: react.ForwardRefExoticComponent<{
238
+ value: string;
239
+ isDisabled?: boolean;
240
+ children?: react.ReactNode | ((state: TabsTriggerRenderState) => react.ReactNode);
241
+ asChild?: boolean;
242
+ } & Omit<react_native.PressableProps, keyof {
243
+ value: string;
244
+ isDisabled?: boolean;
245
+ children?: react.ReactNode | ((state: TabsTriggerRenderState) => react.ReactNode);
246
+ asChild?: boolean;
247
+ }> & Omit<ViewStyleProps, "value" | "pointerEvents" | "style" | "children" | "hitSlop" | "id" | "needsOffscreenAlphaCompositing" | "onLayout" | "removeClippedSubviews" | "testID" | "nativeID" | "collapsable" | "collapsableChildren" | "onBlur" | "onFocus" | "renderToHardwareTextureAndroid" | "focusable" | "tabIndex" | "shouldRasterizeIOS" | "isTVSelectable" | "hasTVPreferredFocus" | "tvParallaxShiftDistanceX" | "tvParallaxShiftDistanceY" | "tvParallaxTiltAngle" | "tvParallaxMagnification" | "onStartShouldSetResponder" | "onMoveShouldSetResponder" | "onResponderEnd" | "onResponderGrant" | "onResponderReject" | "onResponderMove" | "onResponderRelease" | "onResponderStart" | "onResponderTerminationRequest" | "onResponderTerminate" | "onStartShouldSetResponderCapture" | "onMoveShouldSetResponderCapture" | "onTouchStart" | "onTouchMove" | "onTouchEnd" | "onTouchCancel" | "onTouchEndCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerUp" | "onPointerUpCapture" | "accessible" | "accessibilityActions" | "accessibilityLabel" | "aria-label" | "accessibilityRole" | "accessibilityState" | "aria-busy" | "aria-checked" | "aria-disabled" | "aria-expanded" | "aria-selected" | "accessibilityHint" | "accessibilityValue" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "onAccessibilityAction" | "importantForAccessibility" | "aria-hidden" | "aria-modal" | "role" | "accessibilityLabelledBy" | "aria-labelledby" | "accessibilityLiveRegion" | "aria-live" | "screenReaderFocusable" | "accessibilityElementsHidden" | "accessibilityViewIsModal" | "onAccessibilityEscape" | "onAccessibilityTap" | "onMagicTap" | "accessibilityIgnoresInvertColors" | "accessibilityLanguage" | "accessibilityShowsLargeContentViewer" | "accessibilityLargeContentTitle" | "accessibilityRespondsToUserInteraction" | "disabled" | "onPress" | "onPressIn" | "onPressOut" | "onLongPress" | "delayLongPress" | "isDisabled" | "asChild" | "onHoverIn" | "onHoverOut" | "cancelable" | "delayHoverIn" | "delayHoverOut" | "pressRetentionOffset" | "android_disableSound" | "android_ripple" | "testOnly_pressed" | "unstable_pressDelay"> & react.RefAttributes<react_native.View>>;
248
+ Label: react.ForwardRefExoticComponent<{
249
+ children?: react.ReactNode;
250
+ } & Omit<react_native.TextProps, "children"> & Omit<TextStyleProps, keyof react_native.TextProps> & react.RefAttributes<react_native.Text>>;
251
+ Indicator: typeof TabsIndicator;
252
+ Content: react.ForwardRefExoticComponent<{
253
+ value: string;
254
+ children?: react.ReactNode;
255
+ } & Omit<react_native.ViewProps, keyof {
256
+ value: string;
257
+ children?: react.ReactNode;
258
+ }> & Omit<ViewStyleProps, "value" | "pointerEvents" | "style" | "children" | "hitSlop" | "id" | "needsOffscreenAlphaCompositing" | "onLayout" | "removeClippedSubviews" | "testID" | "nativeID" | "collapsable" | "collapsableChildren" | "onBlur" | "onFocus" | "renderToHardwareTextureAndroid" | "focusable" | "tabIndex" | "shouldRasterizeIOS" | "isTVSelectable" | "hasTVPreferredFocus" | "tvParallaxShiftDistanceX" | "tvParallaxShiftDistanceY" | "tvParallaxTiltAngle" | "tvParallaxMagnification" | "onStartShouldSetResponder" | "onMoveShouldSetResponder" | "onResponderEnd" | "onResponderGrant" | "onResponderReject" | "onResponderMove" | "onResponderRelease" | "onResponderStart" | "onResponderTerminationRequest" | "onResponderTerminate" | "onStartShouldSetResponderCapture" | "onMoveShouldSetResponderCapture" | "onTouchStart" | "onTouchMove" | "onTouchEnd" | "onTouchCancel" | "onTouchEndCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerUp" | "onPointerUpCapture" | "accessible" | "accessibilityActions" | "accessibilityLabel" | "aria-label" | "accessibilityRole" | "accessibilityState" | "aria-busy" | "aria-checked" | "aria-disabled" | "aria-expanded" | "aria-selected" | "accessibilityHint" | "accessibilityValue" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "onAccessibilityAction" | "importantForAccessibility" | "aria-hidden" | "aria-modal" | "role" | "accessibilityLabelledBy" | "aria-labelledby" | "accessibilityLiveRegion" | "aria-live" | "screenReaderFocusable" | "accessibilityElementsHidden" | "accessibilityViewIsModal" | "onAccessibilityEscape" | "onAccessibilityTap" | "onMagicTap" | "accessibilityIgnoresInvertColors" | "accessibilityLanguage" | "accessibilityShowsLargeContentViewer" | "accessibilityLargeContentTitle" | "accessibilityRespondsToUserInteraction"> & react.RefAttributes<react_native.View>>;
259
+ };
260
+
261
+ export { type TabRect, Tabs, TabsContent, type TabsContentProps, type TabsContextValue, TabsIndicator, type TabsIndicatorProps, TabsLabel, type TabsLabelProps, TabsList, type TabsListProps, type TabsProps, TabsRoot, type TabsSize, type TabsSlot, TabsTrigger, type TabsTriggerContextValue, type TabsTriggerProps, type TabsTriggerRenderState, type TabsVariant, tabsRecipe, useTabs, useTabsTrigger };
@@ -0,0 +1,33 @@
1
+ import {
2
+ Tabs,
3
+ TabsContent,
4
+ TabsIndicator,
5
+ TabsLabel,
6
+ TabsList,
7
+ TabsRoot,
8
+ TabsTrigger,
9
+ tabsRecipe,
10
+ useTabs,
11
+ useTabsTrigger
12
+ } from "../../chunk-G3CCT4EY.js";
13
+ import "../../chunk-F6W3JQ7K.js";
14
+ import "../../chunk-6UEZJRVI.js";
15
+ import "../../chunk-423RQBOX.js";
16
+ import "../../chunk-EGLLDKN6.js";
17
+ import "../../chunk-4GTAZM2C.js";
18
+ import "../../chunk-A3EGFI6T.js";
19
+ import "../../chunk-K72UDPVN.js";
20
+ import "../../chunk-36PRYGAM.js";
21
+ import "../../chunk-M63GFNKV.js";
22
+ export {
23
+ Tabs,
24
+ TabsContent,
25
+ TabsIndicator,
26
+ TabsLabel,
27
+ TabsList,
28
+ TabsRoot,
29
+ TabsTrigger,
30
+ tabsRecipe,
31
+ useTabs,
32
+ useTabsTrigger
33
+ };