@xaui/native 0.9.1-alpha.4 → 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.
Files changed (209) hide show
  1. package/dist/chunk-2EGR4LWD.js +145 -0
  2. package/dist/chunk-2NRZKJG7.js +531 -0
  3. package/dist/chunk-2PMXMKS5.js +67 -0
  4. package/dist/chunk-2XPG2243.js +586 -0
  5. package/dist/chunk-36PRYGAM.js +13 -0
  6. package/dist/chunk-3E7CDKFO.cjs +696 -0
  7. package/dist/chunk-3GFRSZYR.js +54 -0
  8. package/dist/chunk-423RQBOX.js +21 -0
  9. package/dist/chunk-4CUZZWFW.js +92 -0
  10. package/dist/chunk-4GTAZM2C.js +174 -0
  11. package/dist/chunk-4KFKWBN5.cjs +89 -0
  12. package/dist/{chunk-3QBT3Q65.cjs → chunk-57SJ4LJF.cjs} +7 -2
  13. package/dist/chunk-5R26NM4M.cjs +402 -0
  14. package/dist/chunk-5VKYNBNA.js +607 -0
  15. package/dist/chunk-64MXEVT3.js +66 -0
  16. package/dist/chunk-6DOLGZVV.cjs +147 -0
  17. package/dist/chunk-6L2TS2R3.cjs +92 -0
  18. package/dist/chunk-6UEZJRVI.js +669 -0
  19. package/dist/chunk-734MFAX4.js +27 -0
  20. package/dist/chunk-73RKQC5X.js +104 -0
  21. package/dist/chunk-7DPL3ZDS.cjs +21 -0
  22. package/dist/chunk-7EIHHOHP.cjs +42 -0
  23. package/dist/chunk-7GHM4GKL.cjs +119 -0
  24. package/dist/chunk-7YF5NAHQ.cjs +74 -0
  25. package/dist/{chunk-X2K2FX3W.js → chunk-A3EGFI6T.js} +6 -1
  26. package/dist/chunk-ABAGZTXZ.cjs +736 -0
  27. package/dist/{chunk-AW63PTQ4.cjs → chunk-ACAPTWE3.cjs} +85 -81
  28. package/dist/chunk-AMCSSOJT.cjs +104 -0
  29. package/dist/chunk-BA2DBSAN.js +102 -0
  30. package/dist/chunk-BRRXFOBY.js +431 -0
  31. package/dist/chunk-C5YLPCFC.cjs +293 -0
  32. package/dist/chunk-DA3OKXHV.cjs +700 -0
  33. package/dist/chunk-DD4276RF.js +366 -0
  34. package/dist/chunk-DG2I4PJG.js +701 -0
  35. package/dist/chunk-DHGLGSH6.js +661 -0
  36. package/dist/chunk-DIBUQ46Y.js +346 -0
  37. package/dist/chunk-EGLLDKN6.js +9 -0
  38. package/dist/chunk-EJQCQPET.cjs +9 -0
  39. package/dist/chunk-EKS3W46M.cjs +66 -0
  40. package/dist/chunk-EZEYMLO3.js +402 -0
  41. package/dist/chunk-F6CQ6CBI.cjs +112 -0
  42. package/dist/chunk-F6W3JQ7K.js +42 -0
  43. package/dist/chunk-FHUYHV6J.js +89 -0
  44. package/dist/chunk-FNEUOBCV.cjs +174 -0
  45. package/dist/chunk-G3CCT4EY.js +518 -0
  46. package/dist/chunk-G7P3ERYF.cjs +478 -0
  47. package/dist/chunk-GA6PBWNT.js +147 -0
  48. package/dist/chunk-GFUZ3MUT.cjs +455 -0
  49. package/dist/chunk-GGW43Q37.cjs +1 -0
  50. package/dist/chunk-GTR5X65M.cjs +27 -0
  51. package/dist/chunk-H4E4HDEP.cjs +13 -0
  52. package/dist/chunk-H7DS4IO7.js +198 -0
  53. package/dist/chunk-HDVVZG4S.cjs +198 -0
  54. package/dist/chunk-IKJVLJKT.js +151 -0
  55. package/dist/chunk-J3MB4PI5.cjs +531 -0
  56. package/dist/chunk-K72UDPVN.js +119 -0
  57. package/dist/chunk-KCMYU7WF.js +86 -0
  58. package/dist/chunk-LRN3RNDO.js +940 -0
  59. package/dist/chunk-LTX6TB5I.js +124 -0
  60. package/dist/chunk-LUPCPLND.cjs +145 -0
  61. package/dist/chunk-M63GFNKV.js +194 -0
  62. package/dist/chunk-N3KTZMPG.js +293 -0
  63. package/dist/chunk-NCTOTTVW.js +13 -0
  64. package/dist/chunk-NWGLP6JX.cjs +410 -0
  65. package/dist/chunk-R73XQK7X.cjs +314 -0
  66. package/dist/chunk-RU7JCMWC.cjs +881 -0
  67. package/dist/chunk-SNIHUKDA.cjs +184 -0
  68. package/dist/chunk-T5FV5F7A.cjs +607 -0
  69. package/dist/chunk-TDTUAIFF.cjs +153 -0
  70. package/dist/chunk-TJ74XVZN.cjs +431 -0
  71. package/dist/chunk-TK44VBIE.cjs +194 -0
  72. package/dist/chunk-UAWBAD4E.cjs +346 -0
  73. package/dist/chunk-UFTCTTKK.js +381 -0
  74. package/dist/chunk-VLKBESEV.cjs +407 -0
  75. package/dist/chunk-WDDXU3OH.cjs +67 -0
  76. package/dist/chunk-WFEMJCXO.cjs +13 -0
  77. package/dist/chunk-WHJTBTYM.js +0 -0
  78. package/dist/{chunk-2KXQATVL.js → chunk-WKCQ6VGW.js} +59 -55
  79. package/dist/chunk-XFPQFCEK.js +455 -0
  80. package/dist/chunk-XSQPVDFH.cjs +60 -0
  81. package/dist/chunk-XTC2SLFT.js +153 -0
  82. package/dist/chunk-XV735BSA.cjs +366 -0
  83. package/dist/chunk-XWNG2U4K.cjs +124 -0
  84. package/dist/chunk-YGYYJ3LQ.js +314 -0
  85. package/dist/chunk-YVHT2UVW.js +74 -0
  86. package/dist/chunk-ZFOOJK37.cjs +86 -0
  87. package/dist/close-button.type-BUYuoSt2.d.ts +36 -0
  88. package/dist/close-button.type-CHsgZ3wO.d.cts +36 -0
  89. package/dist/components/accordion/index.cjs +35 -0
  90. package/dist/components/accordion/index.d.cts +299 -0
  91. package/dist/components/accordion/index.d.ts +299 -0
  92. package/dist/components/accordion/index.js +35 -0
  93. package/dist/components/alert/index.cjs +20 -0
  94. package/dist/components/alert/index.d.cts +169 -0
  95. package/dist/components/alert/index.d.ts +169 -0
  96. package/dist/components/alert/index.js +20 -0
  97. package/dist/components/avatar/index.cjs +16 -0
  98. package/dist/components/avatar/index.d.cts +131 -0
  99. package/dist/components/avatar/index.d.ts +131 -0
  100. package/dist/components/avatar/index.js +16 -0
  101. package/dist/components/badge/index.cjs +15 -0
  102. package/dist/components/badge/index.d.cts +157 -0
  103. package/dist/components/badge/index.d.ts +157 -0
  104. package/dist/components/badge/index.js +15 -0
  105. package/dist/components/button/index.cjs +22 -0
  106. package/dist/components/button/index.d.cts +613 -0
  107. package/dist/components/button/index.d.ts +613 -0
  108. package/dist/components/button/index.js +22 -0
  109. package/dist/components/card/index.cjs +22 -0
  110. package/dist/components/card/index.d.cts +620 -0
  111. package/dist/components/card/index.d.ts +620 -0
  112. package/dist/components/card/index.js +22 -0
  113. package/dist/components/checkbox/index.cjs +26 -0
  114. package/dist/components/checkbox/index.d.cts +1136 -0
  115. package/dist/components/checkbox/index.d.ts +1136 -0
  116. package/dist/components/checkbox/index.js +26 -0
  117. package/dist/components/chip/index.cjs +20 -0
  118. package/dist/components/chip/index.d.cts +608 -0
  119. package/dist/components/chip/index.d.ts +608 -0
  120. package/dist/components/chip/index.js +20 -0
  121. package/dist/components/divider/index.cjs +13 -0
  122. package/dist/components/divider/index.d.cts +117 -0
  123. package/dist/components/divider/index.d.ts +117 -0
  124. package/dist/components/divider/index.js +13 -0
  125. package/dist/components/field-group/index.cjs +27 -0
  126. package/dist/components/field-group/index.d.cts +270 -0
  127. package/dist/components/field-group/index.d.ts +270 -0
  128. package/dist/components/field-group/index.js +27 -0
  129. package/dist/components/input-otp/index.cjs +29 -0
  130. package/dist/components/input-otp/index.d.cts +325 -0
  131. package/dist/components/input-otp/index.d.ts +325 -0
  132. package/dist/components/input-otp/index.js +29 -0
  133. package/dist/components/menu/index.cjs +49 -0
  134. package/dist/components/menu/index.d.cts +351 -0
  135. package/dist/components/menu/index.d.ts +351 -0
  136. package/dist/components/menu/index.js +49 -0
  137. package/dist/components/popover/index.cjs +38 -0
  138. package/dist/components/popover/index.d.cts +254 -0
  139. package/dist/components/popover/index.d.ts +254 -0
  140. package/dist/components/popover/index.js +38 -0
  141. package/dist/components/radio/index.cjs +26 -0
  142. package/dist/components/radio/index.d.cts +1102 -0
  143. package/dist/components/radio/index.d.ts +1102 -0
  144. package/dist/components/radio/index.js +26 -0
  145. package/dist/components/select/index.cjs +50 -0
  146. package/dist/components/select/index.d.cts +498 -0
  147. package/dist/components/select/index.d.ts +498 -0
  148. package/dist/components/select/index.js +50 -0
  149. package/dist/components/skeleton/index.cjs +11 -0
  150. package/dist/components/skeleton/index.d.cts +111 -0
  151. package/dist/components/skeleton/index.d.ts +111 -0
  152. package/dist/components/skeleton/index.js +11 -0
  153. package/dist/components/spinner/index.cjs +17 -0
  154. package/dist/components/spinner/index.d.cts +104 -0
  155. package/dist/components/spinner/index.d.ts +104 -0
  156. package/dist/components/spinner/index.js +17 -0
  157. package/dist/components/switch/index.cjs +27 -0
  158. package/dist/components/switch/index.d.cts +1154 -0
  159. package/dist/components/switch/index.d.ts +1154 -0
  160. package/dist/components/switch/index.js +27 -0
  161. package/dist/components/tabs/index.cjs +33 -0
  162. package/dist/components/tabs/index.d.cts +261 -0
  163. package/dist/components/tabs/index.d.ts +261 -0
  164. package/dist/components/tabs/index.js +33 -0
  165. package/dist/components/text-area/index.cjs +14 -0
  166. package/dist/components/text-area/index.d.cts +73 -0
  167. package/dist/components/text-area/index.d.ts +73 -0
  168. package/dist/components/text-area/index.js +14 -0
  169. package/dist/components/text-field/index.cjs +25 -0
  170. package/dist/components/text-field/index.d.cts +205 -0
  171. package/dist/components/text-field/index.d.ts +205 -0
  172. package/dist/components/text-field/index.js +25 -0
  173. package/dist/components/typography/index.cjs +15 -0
  174. package/dist/components/typography/index.d.cts +116 -0
  175. package/dist/components/typography/index.d.ts +116 -0
  176. package/dist/components/typography/index.js +15 -0
  177. package/dist/components/view/index.cjs +17 -0
  178. package/dist/components/view/index.d.cts +152 -0
  179. package/dist/components/view/index.d.ts +152 -0
  180. package/dist/components/view/index.js +17 -0
  181. package/dist/create-recipe-BdVd2ffi.d.ts +114 -0
  182. package/dist/create-recipe-dC7wMfnj.d.cts +114 -0
  183. package/dist/icon.type-Kml72iSz.d.ts +73 -0
  184. package/dist/icon.type-d_i9ma-i.d.cts +73 -0
  185. package/dist/index.cjs +423 -5
  186. package/dist/index.d.cts +119 -4
  187. package/dist/index.d.ts +119 -4
  188. package/dist/index.js +445 -27
  189. package/dist/placement-DHa0Rrh1.d.cts +38 -0
  190. package/dist/placement-DHa0Rrh1.d.ts +38 -0
  191. package/dist/pressable-feedback.type-BA2C9sSz.d.cts +127 -0
  192. package/dist/pressable-feedback.type-Bs4dQlGj.d.ts +127 -0
  193. package/dist/style-props.type-CfnoGEP7.d.cts +31 -0
  194. package/dist/style-props.type-CfnoGEP7.d.ts +31 -0
  195. package/dist/system/index.cjs +73 -4
  196. package/dist/system/index.d.cts +379 -193
  197. package/dist/system/index.d.ts +379 -193
  198. package/dist/system/index.js +87 -18
  199. package/dist/text-field.type-0l73acce.d.ts +167 -0
  200. package/dist/text-field.type-DBh06DU5.d.cts +167 -0
  201. package/dist/theme/index.cjs +5 -3
  202. package/dist/theme/index.d.cts +55 -24
  203. package/dist/theme/index.d.ts +55 -24
  204. package/dist/theme/index.js +4 -2
  205. package/dist/{theme.type-C9bFJKFm.d.cts → theme.type-C2gNHpEx.d.cts} +1 -1
  206. package/dist/{theme.type-C9bFJKFm.d.ts → theme.type-C2gNHpEx.d.ts} +1 -1
  207. package/package.json +264 -18
  208. package/dist/chunk-ECDWSSHJ.js +0 -688
  209. package/dist/chunk-IYFGO523.cjs +0 -688
@@ -0,0 +1,117 @@
1
+ import * as react_native from 'react-native';
2
+ import { ViewProps, StyleProp, ViewStyle, View } from 'react-native';
3
+ import * as react from 'react';
4
+ import { ReactNode } from 'react';
5
+ import { V as ViewStyleProps } from '../../style-props.type-CfnoGEP7.cjs';
6
+ import { S as Size, X as XAUITheme } from '../../theme.type-C2gNHpEx.cjs';
7
+ import { R as Recipe, S as SlotStyles } from '../../create-recipe-dC7wMfnj.cjs';
8
+
9
+ type DividerSlot = 'root';
10
+ type DividerOrientation = 'horizontal' | 'vertical';
11
+ type DividerSize = Size;
12
+ /**
13
+ * What the `Divider` itself understands. R14 — a name in here is the component's, so the
14
+ * style prop that shares it is not exposed: `size` is the divider's scale and never
15
+ * `ViewStyle`'s, and `color` is R7's tint.
16
+ *
17
+ * **No `variant`**, and it is the only component in the core without one. A variant is the
18
+ * design system's *vocabulary* (§1 bis) — a name that means the same thing across the
19
+ * library. On a rule there is nothing for that name to describe: no fill against a
20
+ * foreground, no border against a surface, no intent to report. It had three values naming
21
+ * the three separator tokens, which is a shade of grey wearing a word. `size` says how
22
+ * heavy the rule is and `color` says what colour it is, in React Native's own values —
23
+ * between them there is nothing a third name would add.
24
+ */
25
+ type DividerOwnProps = {
26
+ /**
27
+ * Which way the rule runs. A horizontal one stretches across its parent and a vertical
28
+ * one stretches down it, so the axis a divider does *not* run along is the one it takes
29
+ * from whatever contains it.
30
+ */
31
+ orientation?: DividerOrientation;
32
+ /**
33
+ * The thickness — height when horizontal, width when vertical. It is `size` and not
34
+ * `thickness` because that is the vocabulary word (§1 bis), and it is consistent with
35
+ * the rest of the library rather than in spite of it: "`size` drives height, never
36
+ * width" is exactly what this does, on the axis the orientation names.
37
+ *
38
+ * `xs` is the hairline and it is the default, unlike everywhere else in the library.
39
+ * A rule you notice is a rule that is too thick.
40
+ */
41
+ size?: DividerSize;
42
+ /**
43
+ * A raw tint (`'#7c3aed'`), never a token (R7). There is one thing to colour on a rule,
44
+ * so it lands on the rule.
45
+ */
46
+ color?: string;
47
+ /**
48
+ * R12 — the child element becomes the rule and keeps its resolved style. What it is
49
+ * for here is the animated one: an `Animated.View` that collapses a section takes the
50
+ * thickness and the colour from the recipe and the height from a shared value.
51
+ */
52
+ asChild?: boolean;
53
+ style?: StyleProp<ViewStyle>;
54
+ /** Only meaningful under `asChild`, where it is the element that becomes the rule. */
55
+ children?: ReactNode;
56
+ };
57
+ type DividerProps = Omit<ViewProps, 'style'> & DividerOwnProps & Omit<ViewStyleProps, keyof DividerOwnProps | keyof ViewProps>;
58
+
59
+ /**
60
+ * The line between two things.
61
+ *
62
+ * ```tsx
63
+ * <Column gap={12}>
64
+ * <Row>…</Row>
65
+ * <Divider />
66
+ * <Row>…</Row>
67
+ * </Column>
68
+ *
69
+ * <Row gap={12}>
70
+ * <Typography>Brouillon</Typography>
71
+ * <Divider orientation="vertical" />
72
+ * <Typography>Il y a deux minutes</Typography>
73
+ * </Row>
74
+ * ```
75
+ *
76
+ * **One node and no slots.** A rule is a filled box one point thick; there is nothing
77
+ * inside it. A divider with a word in the middle of it is a `Row` holding two of these
78
+ * and a `Typography`, which is the composition the library already has — inventing a
79
+ * `Divider.Label` would put a layout inside a line.
80
+ *
81
+ * **It takes the axis it does not run along from its parent.** `alignSelf: 'stretch'` is
82
+ * the whole mechanism: in a `Column` that is full width, in a `Row` it is full height, and
83
+ * on the axis the thickness fixes it is ignored. So a divider needs no width prop, and a
84
+ * horizontal one written inside a `Row` collapses on purpose rather than guessing.
85
+ */
86
+ declare const Divider: react.ForwardRefExoticComponent<Omit<react_native.ViewProps, "style"> & {
87
+ orientation?: DividerOrientation;
88
+ size?: DividerSize;
89
+ color?: string;
90
+ asChild?: boolean;
91
+ style?: react_native.StyleProp<react_native.ViewStyle>;
92
+ children?: react.ReactNode;
93
+ } & Omit<ViewStyleProps, "color" | "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" | "asChild" | "orientation"> & react.RefAttributes<View>>;
94
+
95
+ declare const dividerRecipe: Recipe<"root", "default", {
96
+ readonly size: {
97
+ readonly xs: (theme: XAUITheme) => SlotStyles<DividerSlot>;
98
+ readonly sm: (theme: XAUITheme) => SlotStyles<DividerSlot>;
99
+ readonly md: (theme: XAUITheme) => SlotStyles<DividerSlot>;
100
+ readonly lg: (theme: XAUITheme) => SlotStyles<DividerSlot>;
101
+ };
102
+ /** Second, so it releases the axis `size` had to write blind. */
103
+ readonly orientation: {
104
+ readonly horizontal: () => {
105
+ root: {
106
+ width: "auto";
107
+ };
108
+ };
109
+ readonly vertical: () => {
110
+ root: {
111
+ height: "auto";
112
+ };
113
+ };
114
+ };
115
+ }>;
116
+
117
+ export { Divider, type DividerOrientation, type DividerProps, type DividerSize, type DividerSlot, dividerRecipe };
@@ -0,0 +1,117 @@
1
+ import * as react_native from 'react-native';
2
+ import { ViewProps, StyleProp, ViewStyle, View } from 'react-native';
3
+ import * as react from 'react';
4
+ import { ReactNode } from 'react';
5
+ import { V as ViewStyleProps } from '../../style-props.type-CfnoGEP7.js';
6
+ import { S as Size, X as XAUITheme } from '../../theme.type-C2gNHpEx.js';
7
+ import { R as Recipe, S as SlotStyles } from '../../create-recipe-BdVd2ffi.js';
8
+
9
+ type DividerSlot = 'root';
10
+ type DividerOrientation = 'horizontal' | 'vertical';
11
+ type DividerSize = Size;
12
+ /**
13
+ * What the `Divider` itself understands. R14 — a name in here is the component's, so the
14
+ * style prop that shares it is not exposed: `size` is the divider's scale and never
15
+ * `ViewStyle`'s, and `color` is R7's tint.
16
+ *
17
+ * **No `variant`**, and it is the only component in the core without one. A variant is the
18
+ * design system's *vocabulary* (§1 bis) — a name that means the same thing across the
19
+ * library. On a rule there is nothing for that name to describe: no fill against a
20
+ * foreground, no border against a surface, no intent to report. It had three values naming
21
+ * the three separator tokens, which is a shade of grey wearing a word. `size` says how
22
+ * heavy the rule is and `color` says what colour it is, in React Native's own values —
23
+ * between them there is nothing a third name would add.
24
+ */
25
+ type DividerOwnProps = {
26
+ /**
27
+ * Which way the rule runs. A horizontal one stretches across its parent and a vertical
28
+ * one stretches down it, so the axis a divider does *not* run along is the one it takes
29
+ * from whatever contains it.
30
+ */
31
+ orientation?: DividerOrientation;
32
+ /**
33
+ * The thickness — height when horizontal, width when vertical. It is `size` and not
34
+ * `thickness` because that is the vocabulary word (§1 bis), and it is consistent with
35
+ * the rest of the library rather than in spite of it: "`size` drives height, never
36
+ * width" is exactly what this does, on the axis the orientation names.
37
+ *
38
+ * `xs` is the hairline and it is the default, unlike everywhere else in the library.
39
+ * A rule you notice is a rule that is too thick.
40
+ */
41
+ size?: DividerSize;
42
+ /**
43
+ * A raw tint (`'#7c3aed'`), never a token (R7). There is one thing to colour on a rule,
44
+ * so it lands on the rule.
45
+ */
46
+ color?: string;
47
+ /**
48
+ * R12 — the child element becomes the rule and keeps its resolved style. What it is
49
+ * for here is the animated one: an `Animated.View` that collapses a section takes the
50
+ * thickness and the colour from the recipe and the height from a shared value.
51
+ */
52
+ asChild?: boolean;
53
+ style?: StyleProp<ViewStyle>;
54
+ /** Only meaningful under `asChild`, where it is the element that becomes the rule. */
55
+ children?: ReactNode;
56
+ };
57
+ type DividerProps = Omit<ViewProps, 'style'> & DividerOwnProps & Omit<ViewStyleProps, keyof DividerOwnProps | keyof ViewProps>;
58
+
59
+ /**
60
+ * The line between two things.
61
+ *
62
+ * ```tsx
63
+ * <Column gap={12}>
64
+ * <Row>…</Row>
65
+ * <Divider />
66
+ * <Row>…</Row>
67
+ * </Column>
68
+ *
69
+ * <Row gap={12}>
70
+ * <Typography>Brouillon</Typography>
71
+ * <Divider orientation="vertical" />
72
+ * <Typography>Il y a deux minutes</Typography>
73
+ * </Row>
74
+ * ```
75
+ *
76
+ * **One node and no slots.** A rule is a filled box one point thick; there is nothing
77
+ * inside it. A divider with a word in the middle of it is a `Row` holding two of these
78
+ * and a `Typography`, which is the composition the library already has — inventing a
79
+ * `Divider.Label` would put a layout inside a line.
80
+ *
81
+ * **It takes the axis it does not run along from its parent.** `alignSelf: 'stretch'` is
82
+ * the whole mechanism: in a `Column` that is full width, in a `Row` it is full height, and
83
+ * on the axis the thickness fixes it is ignored. So a divider needs no width prop, and a
84
+ * horizontal one written inside a `Row` collapses on purpose rather than guessing.
85
+ */
86
+ declare const Divider: react.ForwardRefExoticComponent<Omit<react_native.ViewProps, "style"> & {
87
+ orientation?: DividerOrientation;
88
+ size?: DividerSize;
89
+ color?: string;
90
+ asChild?: boolean;
91
+ style?: react_native.StyleProp<react_native.ViewStyle>;
92
+ children?: react.ReactNode;
93
+ } & Omit<ViewStyleProps, "color" | "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" | "asChild" | "orientation"> & react.RefAttributes<View>>;
94
+
95
+ declare const dividerRecipe: Recipe<"root", "default", {
96
+ readonly size: {
97
+ readonly xs: (theme: XAUITheme) => SlotStyles<DividerSlot>;
98
+ readonly sm: (theme: XAUITheme) => SlotStyles<DividerSlot>;
99
+ readonly md: (theme: XAUITheme) => SlotStyles<DividerSlot>;
100
+ readonly lg: (theme: XAUITheme) => SlotStyles<DividerSlot>;
101
+ };
102
+ /** Second, so it releases the axis `size` had to write blind. */
103
+ readonly orientation: {
104
+ readonly horizontal: () => {
105
+ root: {
106
+ width: "auto";
107
+ };
108
+ };
109
+ readonly vertical: () => {
110
+ root: {
111
+ height: "auto";
112
+ };
113
+ };
114
+ };
115
+ }>;
116
+
117
+ export { Divider, type DividerOrientation, type DividerProps, type DividerSize, type DividerSlot, dividerRecipe };
@@ -0,0 +1,13 @@
1
+ import {
2
+ Divider,
3
+ dividerRecipe
4
+ } from "../../chunk-4CUZZWFW.js";
5
+ import "../../chunk-4GTAZM2C.js";
6
+ import "../../chunk-A3EGFI6T.js";
7
+ import "../../chunk-K72UDPVN.js";
8
+ import "../../chunk-36PRYGAM.js";
9
+ import "../../chunk-M63GFNKV.js";
10
+ export {
11
+ Divider,
12
+ dividerRecipe
13
+ };
@@ -0,0 +1,27 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+ var _chunk6DOLGZVVcjs = require('../../chunk-6DOLGZVV.cjs');
11
+ require('../../chunk-J3MB4PI5.cjs');
12
+ require('../../chunk-4KFKWBN5.cjs');
13
+ require('../../chunk-FNEUOBCV.cjs');
14
+ require('../../chunk-57SJ4LJF.cjs');
15
+ require('../../chunk-7GHM4GKL.cjs');
16
+ require('../../chunk-H4E4HDEP.cjs');
17
+ require('../../chunk-TK44VBIE.cjs');
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+
26
+
27
+ exports.FieldGroup = _chunk6DOLGZVVcjs.FieldGroup; exports.FieldGroupField = _chunk6DOLGZVVcjs.FieldGroupField; exports.FieldGroupIcon = _chunk6DOLGZVVcjs.FieldGroupIcon; exports.FieldGroupPrefix = _chunk6DOLGZVVcjs.FieldGroupPrefix; exports.FieldGroupRoot = _chunk6DOLGZVVcjs.FieldGroupRoot; exports.FieldGroupSuffix = _chunk6DOLGZVVcjs.FieldGroupSuffix; exports.decoratorPadding = _chunk6DOLGZVVcjs.decoratorPadding; exports.useFieldGroup = _chunk6DOLGZVVcjs.useFieldGroup;
@@ -0,0 +1,270 @@
1
+ import * as react_native from 'react-native';
2
+ import { StyleProp, ViewStyle, ViewProps, View, TextInput } 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 { a as IconProps } from '../../icon.type-d_i9ma-i.cjs';
7
+ import { T as TextFieldFieldProps } from '../../text-field.type-DBh06DU5.cjs';
8
+ import '../../theme.type-C2gNHpEx.cjs';
9
+
10
+ type FieldGroupOwnProps = {
11
+ style?: StyleProp<ViewStyle>;
12
+ children?: ReactNode;
13
+ };
14
+ /**
15
+ * R14 — the wrapper `View`'s own props, plus every `ViewStyle` key it does not claim.
16
+ *
17
+ * **There is no `variant`, no `size`, no `color` and no `isDisabled` here.** They are the
18
+ * `TextField`'s, and a `FieldGroup` is one row inside it: a second `size` on this root would
19
+ * be a second answer to a question the field has already answered.
20
+ */
21
+ type FieldGroupProps = FieldGroupOwnProps & Omit<ViewProps, keyof FieldGroupOwnProps> & Omit<ViewStyleProps, keyof FieldGroupOwnProps | keyof ViewProps> & {
22
+ /** R12 — merge into the single child instead of rendering a `View`. */
23
+ asChild?: boolean;
24
+ };
25
+ type FieldGroupDecoratorOwnProps = {
26
+ /**
27
+ * The decorator stops taking touches and disappears from the accessibility tree, so a
28
+ * tap on the glyph focuses the field under it and a screen reader announces the field
29
+ * rather than a mark it cannot act on.
30
+ *
31
+ * Leave it off whenever the decorator holds something to press — a reveal toggle, a
32
+ * clear button — which is the whole reason it is a prop and not the default.
33
+ *
34
+ * @default false
35
+ */
36
+ isDecorative?: boolean;
37
+ style?: StyleProp<ViewStyle>;
38
+ children?: ReactNode;
39
+ };
40
+ type FieldGroupDecoratorProps = FieldGroupDecoratorOwnProps & Omit<ViewProps, keyof FieldGroupDecoratorOwnProps> & Omit<ViewStyleProps, keyof FieldGroupDecoratorOwnProps | keyof ViewProps>;
41
+ type FieldGroupPrefixProps = FieldGroupDecoratorProps;
42
+ type FieldGroupSuffixProps = FieldGroupDecoratorProps;
43
+ /** Which edge a decorator is pinned to, and therefore which width it reports. */
44
+ type FieldGroupSide = 'prefix' | 'suffix';
45
+ /**
46
+ * Everything `TextField.Field` accepts. It **is** that field — the same `TextInput`, the same
47
+ * focus plumbing, the same styles — with the padding the two decorators measured.
48
+ */
49
+ type FieldGroupFieldProps = TextFieldFieldProps;
50
+ /** Everything `Icon` accepts. `size` and `color` fall back to the field's own. */
51
+ type FieldGroupIconProps = IconProps;
52
+ /**
53
+ * R5 — but the only thing here that is not already resolved on the `TextField`'s context: two
54
+ * widths nobody can know before layout.
55
+ *
56
+ * A decorator is out of flow, so it cannot push the text aside the way a sibling in a row
57
+ * would; the field clears it by padding instead, and the padding is the decorator's own
58
+ * measured width. That is the same shape `TextArea` uses for `rows` — a raw number the
59
+ * slot turns into a style, outside the cache.
60
+ */
61
+ type FieldGroupContextValue = {
62
+ /** `0` while the decorator is absent, and until its first layout. */
63
+ prefixWidth: number;
64
+ suffixWidth: number;
65
+ setPrefixWidth: (width: number) => void;
66
+ setSuffixWidth: (width: number) => void;
67
+ };
68
+
69
+ /**
70
+ * A glyph that takes the field's scale and the placeholder's colour without being told
71
+ * either:
72
+ *
73
+ * ```tsx
74
+ * <FieldGroup.Prefix isDecorative>
75
+ * <FieldGroup.Icon as={MailIcon} />
76
+ * </FieldGroup.Prefix>
77
+ * ```
78
+ *
79
+ * The size comes from the `TextField`'s own `size` — one step above the field's type, as on
80
+ * the `Button` and the `Chip`, because a 16pt glyph beside 16pt of text reads as the
81
+ * smaller of the two. The colour is the theme's `fieldPlaceholder`: a mark in a field is
82
+ * decoration for the text, not text. An explicit `size` or `color` still wins, which is
83
+ * what `Icon` promises everywhere else in the library — and it is the answer for a tinted
84
+ * `primary` field, where the fill is the caller's colour and the placeholder grey is no
85
+ * longer readable over it.
86
+ *
87
+ * It is not one of HeroUI's three parts: theirs colour the glyph at the call site. This is
88
+ * the same slot `Button`, `Chip` and `Alert` all have, and it exists so that a form does
89
+ * not carry a hard-coded `#888` on every field.
90
+ */
91
+ declare function FieldGroupIcon({ size, color, ...rest }: FieldGroupIconProps): react.JSX.Element;
92
+ declare namespace FieldGroupIcon {
93
+ var displayName: string;
94
+ }
95
+
96
+ /**
97
+ * A field with something beside it — a glyph, a unit, a reveal toggle.
98
+ *
99
+ * ```tsx
100
+ * <TextField>
101
+ * <TextField.Label>Mot de passe</TextField.Label>
102
+ * <FieldGroup>
103
+ * <FieldGroup.Prefix isDecorative>
104
+ * <FieldGroup.Icon as={LockIcon} />
105
+ * </FieldGroup.Prefix>
106
+ * <FieldGroup.Field secureTextEntry value={password} onChangeText={setPassword} />
107
+ * <FieldGroup.Suffix>
108
+ * <Pressable onPress={toggle} hitSlop={20}>
109
+ * <FieldGroup.Icon as={EyeIcon} />
110
+ * </Pressable>
111
+ * </FieldGroup.Suffix>
112
+ * </FieldGroup>
113
+ * <TextField.Description>Douze caractères au moins.</TextField.Description>
114
+ * </TextField>
115
+ * ```
116
+ *
117
+ * **It goes inside a `TextField`, and it replaces nothing but the field.** The column, the
118
+ * label, the hint, the error, the four variants, the `size`, the `radius`, the tint, the
119
+ * focus and `isInvalid` are all still the `TextField`'s — this root is one row of that column,
120
+ * and it owns exactly one thing: how wide the two decorators turned out to be.
121
+ *
122
+ * That is why the box is still the `TextInput` itself. A wrapper carrying the border, the
123
+ * fill and the radius would be a second thing to keep in step with `TextField`, and the day
124
+ * one of them gained a shadow the other would not have it. The decorators are laid **over**
125
+ * the field instead, out of flow, and the field clears them with padding.
126
+ *
127
+ * It works under `TextArea` too — the same context, the same field — though a decorator
128
+ * centred over six lines of text is rarely what a multiline field wants.
129
+ */
130
+ declare const FieldGroupRoot: react.ForwardRefExoticComponent<{
131
+ style?: react_native.StyleProp<react_native.ViewStyle>;
132
+ children?: react.ReactNode;
133
+ } & Omit<react_native.ViewProps, keyof {
134
+ style?: react_native.StyleProp<react_native.ViewStyle>;
135
+ children?: react.ReactNode;
136
+ }> & Omit<ViewStyleProps, "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"> & {
137
+ asChild?: boolean;
138
+ } & react.RefAttributes<View>>;
139
+
140
+ /**
141
+ * The `TextInput` itself — `TextField.Field` with the room the two decorators need.
142
+ *
143
+ * ```tsx
144
+ * <FieldGroup.Field value={query} onChangeText={setQuery} placeholder="Rechercher…" />
145
+ * ```
146
+ *
147
+ * It renders the `TextField`'s field rather than a second `TextInput`, so the focus plumbing,
148
+ * the placeholder colour, the label association, `isInvalid` and `isDisabled` are the ones
149
+ * already written, and every `TextInput` prop is written here for the same reason it is
150
+ * there.
151
+ *
152
+ * The padding is arithmetic rather than a token, the way `TextArea`'s height is: a
153
+ * decorator's width is not knowable before layout, so it measures itself and this turns
154
+ * the two numbers into `paddingStart` and `paddingEnd`. They land **after** the recipe's
155
+ * own `paddingHorizontal`, which is what makes them win, and before the caller's `style`,
156
+ * which still has the last word.
157
+ */
158
+ declare const FieldGroupField: react.ForwardRefExoticComponent<Omit<react_native.TextInputProps, "editable"> & Omit<TextStyleProps, keyof react_native.TextInputProps> & react.RefAttributes<TextInput>>;
159
+
160
+ /**
161
+ * What sits before the text — a search glyph, a currency, a country code.
162
+ *
163
+ * ```tsx
164
+ * <FieldGroup>
165
+ * <FieldGroup.Prefix isDecorative>
166
+ * <FieldGroup.Icon as={SearchIcon} />
167
+ * </FieldGroup.Prefix>
168
+ * <FieldGroup.Field placeholder="Rechercher…" />
169
+ * </FieldGroup>
170
+ * ```
171
+ *
172
+ * It is pinned to the **leading** edge and inset by the field's own padding, so the glyph
173
+ * starts where the text would have. The field then clears it by the width it measured —
174
+ * which is what lets a `+33` prefix and a 16pt mark both sit right, without either one
175
+ * being told a number.
176
+ *
177
+ * Add `isDecorative` whenever it holds nothing to press. Leave it off for a control.
178
+ */
179
+ declare const FieldGroupPrefix: react.ForwardRefExoticComponent<{
180
+ isDecorative?: boolean;
181
+ style?: react_native.StyleProp<react_native.ViewStyle>;
182
+ children?: react.ReactNode;
183
+ } & Omit<react_native.ViewProps, keyof {
184
+ isDecorative?: boolean;
185
+ style?: react_native.StyleProp<react_native.ViewStyle>;
186
+ children?: react.ReactNode;
187
+ }> & Omit<ViewStyleProps, "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" | "isDecorative"> & react.RefAttributes<View>>;
188
+
189
+ /**
190
+ * What sits after the text — a reveal toggle, a clear button, a unit, a counter.
191
+ *
192
+ * ```tsx
193
+ * <FieldGroup>
194
+ * <FieldGroup.Field secureTextEntry value={password} onChangeText={setPassword} />
195
+ * <FieldGroup.Suffix>
196
+ * <Pressable onPress={toggle} hitSlop={20}>
197
+ * <FieldGroup.Icon as={isVisible ? EyeOffIcon : EyeIcon} />
198
+ * </Pressable>
199
+ * </FieldGroup.Suffix>
200
+ * </FieldGroup>
201
+ * ```
202
+ *
203
+ * The trailing edge is where a suffix is most often a **control**, which is why
204
+ * `isDecorative` is off by default: a decorator that swallowed its own taps would be a
205
+ * reveal toggle you cannot press.
206
+ *
207
+ * The library ships no button for it. A suffix holds whatever you put in it, and
208
+ * `Pressable` with a `hitSlop` is the thing to put there — a 16pt glyph is not a touch
209
+ * target on its own.
210
+ */
211
+ declare const FieldGroupSuffix: react.ForwardRefExoticComponent<{
212
+ isDecorative?: boolean;
213
+ style?: react_native.StyleProp<react_native.ViewStyle>;
214
+ children?: react.ReactNode;
215
+ } & Omit<react_native.ViewProps, keyof {
216
+ isDecorative?: boolean;
217
+ style?: react_native.StyleProp<react_native.ViewStyle>;
218
+ children?: react.ReactNode;
219
+ }> & Omit<ViewStyleProps, "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" | "isDecorative"> & react.RefAttributes<View>>;
220
+
221
+ declare const useFieldGroup: () => FieldGroupContextValue;
222
+
223
+ /**
224
+ * The room a decorator asks the field to leave it, from the width it measured.
225
+ *
226
+ * `start` and `end`, never `left` and `right` (R13): the prefix is the leading edge in
227
+ * both directions of writing, and RTL mirrors the logical property and only it.
228
+ *
229
+ * It returns `undefined` rather than an object of two `undefined`s when there is nothing
230
+ * to clear, so a group with no decorator adds no entry to the field's style array — and
231
+ * the `useMemo` around it keeps the same reference until a width actually changes.
232
+ */
233
+ declare function decoratorPadding(prefixWidth: number, suffixWidth: number): ViewStyle | undefined;
234
+
235
+ /**
236
+ * The four parts of a decorated field. The label, the hint and the error are **not** here:
237
+ * they are the `TextField`'s, and a `FieldGroup` lives inside one.
238
+ */
239
+ declare const FieldGroup: react.ForwardRefExoticComponent<{
240
+ style?: react_native.StyleProp<react_native.ViewStyle>;
241
+ children?: react.ReactNode;
242
+ } & Omit<react_native.ViewProps, keyof {
243
+ style?: react_native.StyleProp<react_native.ViewStyle>;
244
+ children?: react.ReactNode;
245
+ }> & Omit<ViewStyleProps, "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"> & {
246
+ asChild?: boolean;
247
+ } & react.RefAttributes<react_native.View>> & {
248
+ Prefix: react.ForwardRefExoticComponent<{
249
+ isDecorative?: boolean;
250
+ style?: react_native.StyleProp<react_native.ViewStyle>;
251
+ children?: react.ReactNode;
252
+ } & Omit<react_native.ViewProps, keyof {
253
+ isDecorative?: boolean;
254
+ style?: react_native.StyleProp<react_native.ViewStyle>;
255
+ children?: react.ReactNode;
256
+ }> & Omit<ViewStyleProps, "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" | "isDecorative"> & react.RefAttributes<react_native.View>>;
257
+ Field: react.ForwardRefExoticComponent<Omit<react_native.TextInputProps, "editable"> & Omit<TextStyleProps, keyof react_native.TextInputProps> & react.RefAttributes<react_native.TextInput>>;
258
+ Suffix: react.ForwardRefExoticComponent<{
259
+ isDecorative?: boolean;
260
+ style?: react_native.StyleProp<react_native.ViewStyle>;
261
+ children?: react.ReactNode;
262
+ } & Omit<react_native.ViewProps, keyof {
263
+ isDecorative?: boolean;
264
+ style?: react_native.StyleProp<react_native.ViewStyle>;
265
+ children?: react.ReactNode;
266
+ }> & Omit<ViewStyleProps, "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" | "isDecorative"> & react.RefAttributes<react_native.View>>;
267
+ Icon: typeof FieldGroupIcon;
268
+ };
269
+
270
+ export { FieldGroup, type FieldGroupContextValue, FieldGroupField, type FieldGroupFieldProps, FieldGroupIcon, type FieldGroupIconProps, FieldGroupPrefix, type FieldGroupPrefixProps, type FieldGroupProps, FieldGroupRoot, type FieldGroupSide, FieldGroupSuffix, type FieldGroupSuffixProps, decoratorPadding, useFieldGroup };