@xaui/native 0.9.1-alpha.21 → 0.9.1-alpha.23

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 (81) hide show
  1. package/dist/{chunk-RMLFMRWL.js → chunk-2U6JR7BF.js} +5 -5
  2. package/dist/{chunk-N7C4UNUL.js → chunk-3JATAB7S.js} +23 -1
  3. package/dist/chunk-4MHJOWM4.cjs +364 -0
  4. package/dist/{chunk-2WMVDMFV.cjs → chunk-6HXWQ5AU.cjs} +2 -2
  5. package/dist/chunk-6WW4CSPY.cjs +82 -0
  6. package/dist/chunk-AHL33YAO.js +425 -0
  7. package/dist/{chunk-XHZBXYVU.js → chunk-AKXG43S4.js} +1 -1
  8. package/dist/{chunk-4NE3SLTM.cjs → chunk-BH5DSJVX.cjs} +102 -73
  9. package/dist/{chunk-BPBY7ON7.cjs → chunk-BNWS26PX.cjs} +19 -21
  10. package/dist/{chunk-5LC6KVL3.cjs → chunk-DXGQ43IV.cjs} +3 -3
  11. package/dist/chunk-E3LXUXE7.js +451 -0
  12. package/dist/{chunk-ISVUXVFL.js → chunk-FNQF4KQV.js} +19 -71
  13. package/dist/{chunk-YRCUALUQ.js → chunk-FTCTTBLG.js} +7 -9
  14. package/dist/{chunk-JL27KVRT.js → chunk-FVP5FUVS.js} +3 -3
  15. package/dist/{chunk-UL263KGM.cjs → chunk-GBPWTFTU.cjs} +10 -10
  16. package/dist/{chunk-TUJBDS5M.js → chunk-GG2WWCBK.js} +10 -10
  17. package/dist/{chunk-EVXZGNPA.cjs → chunk-HUZ4AUM2.cjs} +98 -98
  18. package/dist/chunk-I6PE5UUH.cjs +425 -0
  19. package/dist/{chunk-33QILJJH.cjs → chunk-IBEX4XGV.cjs} +11 -11
  20. package/dist/{chunk-IBRVMLUF.js → chunk-KM2TI5IC.js} +107 -80
  21. package/dist/chunk-OGC4RKE3.js +364 -0
  22. package/dist/{chunk-JXLRHKCQ.js → chunk-OYZYWWJ6.js} +1 -1
  23. package/dist/{chunk-EXX6ATAS.js → chunk-PMO62QK4.js} +101 -101
  24. package/dist/{chunk-UBA6AEY6.cjs → chunk-RAWOJ3N3.cjs} +8 -8
  25. package/dist/chunk-TIP3T7JJ.cjs +451 -0
  26. package/dist/{chunk-APCBIHLR.cjs → chunk-VDRRD6GM.cjs} +29 -81
  27. package/dist/{chunk-UVO4GFSW.cjs → chunk-YXVKQMCK.cjs} +23 -1
  28. package/dist/chunk-ZQ3JSWRO.js +82 -0
  29. package/dist/close-button.type-BUYuoSt2.d.ts +36 -0
  30. package/dist/close-button.type-CHsgZ3wO.d.cts +36 -0
  31. package/dist/components/alert/index.cjs +17 -0
  32. package/dist/components/alert/index.d.cts +169 -0
  33. package/dist/components/alert/index.d.ts +169 -0
  34. package/dist/components/alert/index.js +17 -0
  35. package/dist/components/button/index.cjs +6 -7
  36. package/dist/components/button/index.d.cts +74 -125
  37. package/dist/components/button/index.d.ts +74 -125
  38. package/dist/components/button/index.js +5 -6
  39. package/dist/components/card/index.cjs +5 -6
  40. package/dist/components/card/index.d.cts +74 -74
  41. package/dist/components/card/index.d.ts +74 -74
  42. package/dist/components/card/index.js +4 -5
  43. package/dist/components/chip/index.cjs +17 -0
  44. package/dist/components/chip/index.d.cts +608 -0
  45. package/dist/components/chip/index.d.ts +608 -0
  46. package/dist/components/chip/index.js +17 -0
  47. package/dist/components/input/index.cjs +14 -0
  48. package/dist/components/input/index.d.cts +213 -0
  49. package/dist/components/input/index.d.ts +213 -0
  50. package/dist/components/input/index.js +14 -0
  51. package/dist/components/typography/index.cjs +4 -4
  52. package/dist/components/typography/index.d.cts +4 -4
  53. package/dist/components/typography/index.d.ts +4 -4
  54. package/dist/components/typography/index.js +3 -3
  55. package/dist/components/view/index.cjs +3 -3
  56. package/dist/components/view/index.d.cts +7 -7
  57. package/dist/components/view/index.d.ts +7 -7
  58. package/dist/components/view/index.js +2 -2
  59. package/dist/{create-recipe-CC3NNCqF.d.ts → create-recipe-C4JkINrA.d.ts} +18 -5
  60. package/dist/{create-recipe-CPBFg7ym.d.cts → create-recipe-dBN_ewZc.d.cts} +18 -5
  61. package/dist/{icon.type-Cs1tMX0W.d.cts → icon.type-CF4KiMKl.d.cts} +1 -1
  62. package/dist/{icon.type-BkcEPJbK.d.ts → icon.type-Dq4_qePa.d.ts} +1 -1
  63. package/dist/index.cjs +44 -14
  64. package/dist/index.d.cts +9 -5
  65. package/dist/index.d.ts +9 -5
  66. package/dist/index.js +74 -44
  67. package/dist/{pressable-feedback.type-wfeiJz5m.d.cts → pressable-feedback.type-BA2C9sSz.d.cts} +1 -1
  68. package/dist/{pressable-feedback.type-DsvWZXWC.d.ts → pressable-feedback.type-Bs4dQlGj.d.ts} +1 -1
  69. package/dist/{style-props.type-B1BG5TCm.d.cts → style-props.type-CfnoGEP7.d.cts} +1 -1
  70. package/dist/{style-props.type-B1BG5TCm.d.ts → style-props.type-CfnoGEP7.d.ts} +1 -1
  71. package/dist/system/index.cjs +15 -7
  72. package/dist/system/index.d.cts +175 -101
  73. package/dist/system/index.d.ts +175 -101
  74. package/dist/system/index.js +15 -7
  75. package/dist/theme/index.cjs +2 -2
  76. package/dist/theme/index.d.cts +10 -10
  77. package/dist/theme/index.d.ts +10 -10
  78. package/dist/theme/index.js +1 -1
  79. package/package.json +31 -1
  80. package/dist/chunk-RRRGLRRP.cjs +0 -28
  81. package/dist/chunk-SGHP76GU.js +0 -28
@@ -1,16 +1,18 @@
1
+ import * as react_native from 'react-native';
2
+ import { StyleProp, ViewStyle, View } from 'react-native';
1
3
  import * as react from 'react';
2
4
  import { ReactNode, Provider, Ref, RefCallback } from 'react';
3
- import { b as IconProps, a as IconContextValue } from '../icon.type-Cs1tMX0W.cjs';
4
- export { I as IconComponentProps } from '../icon.type-Cs1tMX0W.cjs';
5
- import { V as ViewStyleProps } from '../style-props.type-B1BG5TCm.cjs';
6
- export { D as DirectionalStyleKey, I as ImageStyleProps, S as StyleProps, T as TextStyleProps } from '../style-props.type-B1BG5TCm.cjs';
7
- import { S as SlotAnimation, F as FeedbackContext, a as AnimationProp, b as ResolvedAnimation } from '../pressable-feedback.type-wfeiJz5m.cjs';
8
- export { A as AnimationConfig, P as PressableFeedbackProps, R as RadiusStyle, c as RippleWave } from '../pressable-feedback.type-wfeiJz5m.cjs';
9
- import * as react_native from 'react-native';
10
- import { StyleProp, ViewStyle } from 'react-native';
11
- export { A as Axes, C as CompoundVariant, R as Recipe, b as RecipeConfig, a as ResolveArgs, d as ResolvedSelection, e as ResolvedStyles, S as Selection, f as SlotStyle, g as SlotStyles, h as StateName, i as States, j as StyleFn, T as TintArgs, V as VariantColors, k as VariantRole, l as VariantTokens, c as createRecipe } from '../create-recipe-CPBFg7ym.cjs';
5
+ import { S as SlotAnimation, F as FeedbackContext, a as AnimationProp, b as ResolvedAnimation, P as PressableFeedbackProps } from '../pressable-feedback.type-BA2C9sSz.cjs';
6
+ export { A as AnimationConfig, R as RadiusStyle, c as RippleWave } from '../pressable-feedback.type-BA2C9sSz.cjs';
7
+ import { R as RadiusKey, X as XAUITheme } from '../theme.type-C2gNHpEx.cjs';
8
+ import { j as StyleFn, f as SlotStyle } from '../create-recipe-dBN_ewZc.cjs';
9
+ export { A as Axes, C as CompoundVariant, R as Recipe, b as RecipeConfig, a as ResolveArgs, d as ResolvedSelection, e as ResolvedStyles, S as Selection, g as SlotStyles, h as StateName, i as States, T as TintArgs, V as VariantColors, k as VariantRole, l as VariantTokens, c as createRecipe } from '../create-recipe-dBN_ewZc.cjs';
10
+ export { C as CloseButtonProps } from '../close-button.type-CHsgZ3wO.cjs';
11
+ import { b as IconProps, a as IconContextValue } from '../icon.type-CF4KiMKl.cjs';
12
+ export { I as IconComponentProps } from '../icon.type-CF4KiMKl.cjs';
13
+ import { V as ViewStyleProps } from '../style-props.type-CfnoGEP7.cjs';
14
+ export { D as DirectionalStyleKey, I as ImageStyleProps, S as StyleProps, T as TextStyleProps } from '../style-props.type-CfnoGEP7.cjs';
12
15
  import 'react-native-reanimated';
13
- import '../theme.type-C2gNHpEx.cjs';
14
16
 
15
17
  /**
16
18
  * The runtime half of R14. The type half lives in `system/style-props/`, and the two are
@@ -119,95 +121,6 @@ declare namespace PortalHost {
119
121
  var displayName: string;
120
122
  }
121
123
 
122
- /**
123
- * R3: the string a root should wrap in its default text slot, or `null` when it should
124
- * render its children as they are.
125
- *
126
- * The whole tree is stringified recursively rather than the first child inspected. That
127
- * is what makes `<Button>{count} items</Button>` work — children there are the array
128
- * `[3, ' items']`, and an `isValidElement` check on the first entry would call it an
129
- * element-free tree only by accident, while a check for "is the first child a string"
130
- * would miss it outright.
131
- *
132
- * `null` for an empty result as much as for a tree containing an element: in both cases
133
- * there is nothing to wrap, and a root's fallback — render the children — is right for
134
- * both. It also keeps `<Button>{false}</Button>` from mounting an empty text node.
135
- */
136
- declare function childrenToString(children: ReactNode): string | null;
137
-
138
- /**
139
- * A context a slot cannot read by accident. Every compound gets one, and it carries
140
- * **resolved** values — style references the root already computed, not tokens for the
141
- * slot to resolve again (R5).
142
- *
143
- * ```ts
144
- * const [ButtonProvider, useButton] = createSlotContext<ButtonContext>('Button')
145
- * ```
146
- *
147
- * The tuple is what lets each compound name its own hook, which R10 requires it to
148
- * export. `name` gives both halves of the error, so there is one place to spell it.
149
- */
150
- declare function createSlotContext<T>(name: string): readonly [Provider<T | null>, () => T];
151
-
152
- /** Anything React accepts as a ref, plus the absence of one. */
153
- type PossibleRef<T> = Ref<T> | undefined;
154
- /**
155
- * The props `mergeProps` knows how to combine. Deliberately loose: it merges whatever a
156
- * root hands to whatever child it was given, and neither side is knowable from here.
157
- */
158
- type MergeableProps = Record<string, unknown>;
159
- type AsChildProps = {
160
- /**
161
- * Merge this component's props into its single child instead of rendering an element
162
- * of its own — a navigation `Link` as a `Button`, a bespoke trigger as a `Select`.
163
- */
164
- asChild?: boolean;
165
- };
166
-
167
- /**
168
- * Merges a root's own props into the child it renders through `asChild` (R12). Four
169
- * rules, and the child wins wherever they do not apply — it is the more specific intent:
170
- *
171
- * - **Event handlers compose.** Both run, ours first: the component's own behaviour (the
172
- * press state that drives its styles) happens before the child's side effect (the
173
- * navigation). Replacing one with the other is the bug this exists to prevent.
174
- * - **Styles stack**, ours under the child's, so the child can override.
175
- * - **`ref`s merge** through `mergeRefs`. React 19 passes `ref` as an ordinary prop, so
176
- * it arrives here rather than beside the props, and dropping it would sever the root's
177
- * handle on the node.
178
- * - **Everything else: the child's value wins**, and ours fills in what it left unset.
179
- */
180
- declare function mergeProps(ours: MergeableProps, theirs: MergeableProps): MergeableProps;
181
-
182
- /**
183
- * One callback that feeds several refs — what lets a root keep its own handle on a node
184
- * while still honouring the ref its caller passed (R9), and what `asChild` needs to
185
- * forward a ref into the child it merges into (R12).
186
- *
187
- * It returns nothing on purpose. React 19 reads a ref callback's return value as a
188
- * cleanup function while React 18 ignores it, and this package supports both; letting
189
- * a merged cleanup through would behave differently on each. React calls every ref with
190
- * `null` on unmount anyway, which this forwards.
191
- */
192
- declare function mergeRefs<T>(...refs: Array<PossibleRef<T>>): RefCallback<T>;
193
-
194
- type SlotProps = MergeableProps & {
195
- children?: ReactNode;
196
- };
197
- /**
198
- * The render branch behind `asChild` (R12). A root picks it instead of its own element:
199
- *
200
- * ```tsx
201
- * const Root = asChild ? Slot : Pressable
202
- * return <Root ref={ref} {...rootProps}>{children}</Root>
203
- * ```
204
- *
205
- * One line per root, which is the point — forty-seven roots each hand-rolling a
206
- * `cloneElement` and a ref merge would drift, and R12 has to hold uniformly from the
207
- * first component or the ref signature of the whole core changes later.
208
- */
209
- declare const Slot: react.ForwardRefExoticComponent<Omit<SlotProps, "ref"> & react.RefAttributes<unknown>>;
210
-
211
124
  type PressableFeedbackHighlightProps = ViewStyleProps & {
212
125
  style?: StyleProp<ViewStyle>;
213
126
  animation?: SlotAnimation;
@@ -385,7 +298,7 @@ declare function resolveSlotAnimation(override: SlotAnimation | undefined, enabl
385
298
  * off — and it is the only shape that survives `asChild`, where the caller's own element
386
299
  * is the pressable and there is no sibling for the primitive to inject.
387
300
  */
388
- declare const PressableFeedback: react.ForwardRefExoticComponent<Omit<react_native.PressableProps, "style" | "children" | "disabled"> & ViewStyleProps & {
301
+ declare const PressableFeedback: react.ForwardRefExoticComponent<Omit<react_native.PressableProps, "disabled" | "style" | "children"> & ViewStyleProps & {
389
302
  isPressed?: boolean;
390
303
  isDisabled?: boolean;
391
304
  asChild?: boolean;
@@ -397,4 +310,165 @@ declare const PressableFeedback: react.ForwardRefExoticComponent<Omit<react_nati
397
310
  Ripple: typeof PressableFeedbackRipple;
398
311
  };
399
312
 
400
- export { AnimationProp, type AsChildProps, FEEDBACK_OVERLAY, FeedbackContext, HIGHLIGHT_DURATION, HIGHLIGHT_OPACITY, Icon, IconContext, IconContextValue, IconProps, type MergeableProps, PRESS_DURATION, PRESS_SCALE, Portal, PortalContext, PortalHost, type PortalHostProps, type PortalMethods, type PortalProps, type PossibleRef, PressableFeedback, type PressableFeedbackHighlightProps, type PressableFeedbackRippleProps, RIPPLE_CONFIRM_DURATION, RIPPLE_EXPAND_DURATION, RIPPLE_FADE_IN, RIPPLE_FADE_OUT, RIPPLE_FADE_OUT_DELAY, RIPPLE_OPACITY, RIPPLE_START_SCALE, ResolvedAnimation, SCALE_REFERENCE_WIDTH, Slot, SlotAnimation, type SlotProps, ViewStyleProps, childrenToString, createSlotContext, markOverlay, mergeProps, mergeRefs, pressScaleFor, resolveAnimation, resolveSlotAnimation, rippleRadiusFor, useFeedback, useIconContext, useStyleProps };
313
+ /**
314
+ * The `radius` axis, which is the same ten lines in every component that has one — a key
315
+ * of the radius scale, applied to one slot, overriding whatever `size` chose.
316
+ *
317
+ * It is written here rather than a third time in a recipe because that is the rule §2 bis
318
+ * states: extract at the second use, and by the end of P3 this axis exists in a dozen
319
+ * components. Nothing about it is component-specific except which slot carries the corner.
320
+ *
321
+ * ```ts
322
+ * variants: { size: { … }, radius: radiusAxis('root') }
323
+ * ```
324
+ *
325
+ * The return type is a full `Record<RadiusKey, …>` rather than a partial one, so
326
+ * `createRecipe` still infers `radius="3xl"` as the axis's value union and a typo in a
327
+ * caller's `radius` is a type error rather than a silently ignored key.
328
+ */
329
+ declare function radiusAxis<Slot extends string>(slot: Slot): Record<RadiusKey, StyleFn<Slot>>;
330
+
331
+ /**
332
+ * R3: the string a root should wrap in its default text slot, or `null` when it should
333
+ * render its children as they are.
334
+ *
335
+ * The whole tree is stringified recursively rather than the first child inspected. That
336
+ * is what makes `<Button>{count} items</Button>` work — children there are the array
337
+ * `[3, ' items']`, and an `isValidElement` check on the first entry would call it an
338
+ * element-free tree only by accident, while a check for "is the first child a string"
339
+ * would miss it outright.
340
+ *
341
+ * `null` for an empty result as much as for a tree containing an element: in both cases
342
+ * there is nothing to wrap, and a root's fallback — render the children — is right for
343
+ * both. It also keeps `<Button>{false}</Button>` from mounting an empty text node.
344
+ */
345
+ declare function childrenToString(children: ReactNode): string | null;
346
+
347
+ /**
348
+ * A context a slot cannot read by accident. Every compound gets one, and it carries
349
+ * **resolved** values — style references the root already computed, not tokens for the
350
+ * slot to resolve again (R5).
351
+ *
352
+ * ```ts
353
+ * const [ButtonProvider, useButton] = createSlotContext<ButtonContext>('Button')
354
+ * ```
355
+ *
356
+ * The tuple is what lets each compound name its own hook, which R10 requires it to
357
+ * export. `name` gives both halves of the error, so there is one place to spell it.
358
+ */
359
+ declare function createSlotContext<T>(name: string): readonly [Provider<T | null>, () => T];
360
+
361
+ /** Anything React accepts as a ref, plus the absence of one. */
362
+ type PossibleRef<T> = Ref<T> | undefined;
363
+ /**
364
+ * The props `mergeProps` knows how to combine. Deliberately loose: it merges whatever a
365
+ * root hands to whatever child it was given, and neither side is knowable from here.
366
+ */
367
+ type MergeableProps = Record<string, unknown>;
368
+ type AsChildProps = {
369
+ /**
370
+ * Merge this component's props into its single child instead of rendering an element
371
+ * of its own — a navigation `Link` as a `Button`, a bespoke trigger as a `Select`.
372
+ */
373
+ asChild?: boolean;
374
+ };
375
+
376
+ /**
377
+ * Merges a root's own props into the child it renders through `asChild` (R12). Four
378
+ * rules, and the child wins wherever they do not apply — it is the more specific intent:
379
+ *
380
+ * - **Event handlers compose.** Both run, ours first: the component's own behaviour (the
381
+ * press state that drives its styles) happens before the child's side effect (the
382
+ * navigation). Replacing one with the other is the bug this exists to prevent.
383
+ * - **Styles stack**, ours under the child's, so the child can override.
384
+ * - **`ref`s merge** through `mergeRefs`. React 19 passes `ref` as an ordinary prop, so
385
+ * it arrives here rather than beside the props, and dropping it would sever the root's
386
+ * handle on the node.
387
+ * - **Everything else: the child's value wins**, and ours fills in what it left unset.
388
+ */
389
+ declare function mergeProps(ours: MergeableProps, theirs: MergeableProps): MergeableProps;
390
+
391
+ /**
392
+ * One callback that feeds several refs — what lets a root keep its own handle on a node
393
+ * while still honouring the ref its caller passed (R9), and what `asChild` needs to
394
+ * forward a ref into the child it merges into (R12).
395
+ *
396
+ * It returns nothing on purpose. React 19 reads a ref callback's return value as a
397
+ * cleanup function while React 18 ignores it, and this package supports both; letting
398
+ * a merged cleanup through would behave differently on each. React calls every ref with
399
+ * `null` on unmount anyway, which this forwards.
400
+ */
401
+ declare function mergeRefs<T>(...refs: Array<PossibleRef<T>>): RefCallback<T>;
402
+
403
+ type SlotProps = MergeableProps & {
404
+ children?: ReactNode;
405
+ };
406
+ /**
407
+ * The render branch behind `asChild` (R12). A root picks it instead of its own element:
408
+ *
409
+ * ```tsx
410
+ * const Root = asChild ? Slot : Pressable
411
+ * return <Root ref={ref} {...rootProps}>{children}</Root>
412
+ * ```
413
+ *
414
+ * One line per root, which is the point — forty-seven roots each hand-rolling a
415
+ * `cloneElement` and a ref merge would drift, and R12 has to hold uniformly from the
416
+ * first component or the ref signature of the whole core changes later.
417
+ */
418
+ declare const Slot: react.ForwardRefExoticComponent<Omit<SlotProps, "ref"> & react.RefAttributes<unknown>>;
419
+
420
+ /**
421
+ * The dismiss affordance shared by everything that can be dismissed — `Chip.Close`,
422
+ * `Alert.Close`, and the `Dialog`, `Snackbar` and `Sheet` of P5. Each of those is a
423
+ * five-line call site handing it the styles its own recipe resolved:
424
+ *
425
+ * ```tsx
426
+ * const { closeStyle, closeGlyphStyle, isDisabled } = useChip()
427
+ *
428
+ * <CloseButton
429
+ * name="Chip.Close"
430
+ * baseStyle={closeStyle}
431
+ * glyphStyle={closeGlyphStyle}
432
+ * isDisabled={isDisabled}
433
+ * />
434
+ * ```
435
+ *
436
+ * **It owns its press state**, unlike every other pressable in the library, where the
437
+ * component root owns it because its recipe resolves on it. Here the surrounding
438
+ * component is usually not a control at all, and where it is, the two are different
439
+ * targets: pressing the cross must not read as pressing the chip around it.
440
+ *
441
+ * With no children it draws its own cross from two bars a quarter turn apart, so a
442
+ * dismissible component works in a project that has installed no icon set.
443
+ */
444
+ declare const CloseButton: react.ForwardRefExoticComponent<{
445
+ name: string;
446
+ children?: react.ReactNode;
447
+ baseStyle?: react_native.StyleProp<react_native.ViewStyle>;
448
+ glyphStyle?: react_native.StyleProp<react_native.ViewStyle>;
449
+ style?: react_native.StyleProp<react_native.ViewStyle> | ((state: react_native.PressableStateCallbackType) => react_native.StyleProp<react_native.ViewStyle>);
450
+ } & Omit<PressableFeedbackProps, "isPressed" | "style" | "children"> & react.RefAttributes<View>>;
451
+
452
+ /** The two slots a component publishes for a `CloseButton`: its box and one cross bar. */
453
+ type CloseButtonSlots = {
454
+ close: SlotStyle;
455
+ closeGlyph: SlotStyle;
456
+ };
457
+ /**
458
+ * The cross's own geometry, for the `base` of any recipe that hosts a `CloseButton`:
459
+ *
460
+ * ```ts
461
+ * base: theme => ({ ...closeButtonBase(theme), root: { … } })
462
+ * ```
463
+ *
464
+ * The bar's thickness and the box's centring belong to the button rather than to the
465
+ * component around it, so they are written once here. What stays in the recipe is what is
466
+ * genuinely the component's: the size of the box and the length of the bar, both of which
467
+ * follow that component's own scale.
468
+ *
469
+ * Two bars are rendered, rotated a quarter turn apart, which is why only one is described
470
+ * and why it is positioned absolutely — they overlap at the centre of the box.
471
+ */
472
+ declare function closeButtonBase(theme: XAUITheme): CloseButtonSlots;
473
+
474
+ export { AnimationProp, type AsChildProps, CloseButton, type CloseButtonSlots, FEEDBACK_OVERLAY, FeedbackContext, HIGHLIGHT_DURATION, HIGHLIGHT_OPACITY, Icon, IconContext, IconContextValue, IconProps, type MergeableProps, PRESS_DURATION, PRESS_SCALE, Portal, PortalContext, PortalHost, type PortalHostProps, type PortalMethods, type PortalProps, type PossibleRef, PressableFeedback, type PressableFeedbackHighlightProps, PressableFeedbackProps, type PressableFeedbackRippleProps, RIPPLE_CONFIRM_DURATION, RIPPLE_EXPAND_DURATION, RIPPLE_FADE_IN, RIPPLE_FADE_OUT, RIPPLE_FADE_OUT_DELAY, RIPPLE_OPACITY, RIPPLE_START_SCALE, ResolvedAnimation, SCALE_REFERENCE_WIDTH, Slot, SlotAnimation, type SlotProps, SlotStyle, StyleFn, ViewStyleProps, childrenToString, closeButtonBase, createSlotContext, markOverlay, mergeProps, mergeRefs, pressScaleFor, radiusAxis, resolveAnimation, resolveSlotAnimation, rippleRadiusFor, useFeedback, useIconContext, useStyleProps };
@@ -1,16 +1,18 @@
1
+ import * as react_native from 'react-native';
2
+ import { StyleProp, ViewStyle, View } from 'react-native';
1
3
  import * as react from 'react';
2
4
  import { ReactNode, Provider, Ref, RefCallback } from 'react';
3
- import { b as IconProps, a as IconContextValue } from '../icon.type-BkcEPJbK.js';
4
- export { I as IconComponentProps } from '../icon.type-BkcEPJbK.js';
5
- import { V as ViewStyleProps } from '../style-props.type-B1BG5TCm.js';
6
- export { D as DirectionalStyleKey, I as ImageStyleProps, S as StyleProps, T as TextStyleProps } from '../style-props.type-B1BG5TCm.js';
7
- import { S as SlotAnimation, F as FeedbackContext, a as AnimationProp, b as ResolvedAnimation } from '../pressable-feedback.type-DsvWZXWC.js';
8
- export { A as AnimationConfig, P as PressableFeedbackProps, R as RadiusStyle, c as RippleWave } from '../pressable-feedback.type-DsvWZXWC.js';
9
- import * as react_native from 'react-native';
10
- import { StyleProp, ViewStyle } from 'react-native';
11
- export { A as Axes, C as CompoundVariant, R as Recipe, b as RecipeConfig, a as ResolveArgs, d as ResolvedSelection, e as ResolvedStyles, S as Selection, f as SlotStyle, g as SlotStyles, h as StateName, i as States, j as StyleFn, T as TintArgs, V as VariantColors, k as VariantRole, l as VariantTokens, c as createRecipe } from '../create-recipe-CC3NNCqF.js';
5
+ import { S as SlotAnimation, F as FeedbackContext, a as AnimationProp, b as ResolvedAnimation, P as PressableFeedbackProps } from '../pressable-feedback.type-Bs4dQlGj.js';
6
+ export { A as AnimationConfig, R as RadiusStyle, c as RippleWave } from '../pressable-feedback.type-Bs4dQlGj.js';
7
+ import { R as RadiusKey, X as XAUITheme } from '../theme.type-C2gNHpEx.js';
8
+ import { j as StyleFn, f as SlotStyle } from '../create-recipe-C4JkINrA.js';
9
+ export { A as Axes, C as CompoundVariant, R as Recipe, b as RecipeConfig, a as ResolveArgs, d as ResolvedSelection, e as ResolvedStyles, S as Selection, g as SlotStyles, h as StateName, i as States, T as TintArgs, V as VariantColors, k as VariantRole, l as VariantTokens, c as createRecipe } from '../create-recipe-C4JkINrA.js';
10
+ export { C as CloseButtonProps } from '../close-button.type-BUYuoSt2.js';
11
+ import { b as IconProps, a as IconContextValue } from '../icon.type-Dq4_qePa.js';
12
+ export { I as IconComponentProps } from '../icon.type-Dq4_qePa.js';
13
+ import { V as ViewStyleProps } from '../style-props.type-CfnoGEP7.js';
14
+ export { D as DirectionalStyleKey, I as ImageStyleProps, S as StyleProps, T as TextStyleProps } from '../style-props.type-CfnoGEP7.js';
12
15
  import 'react-native-reanimated';
13
- import '../theme.type-C2gNHpEx.js';
14
16
 
15
17
  /**
16
18
  * The runtime half of R14. The type half lives in `system/style-props/`, and the two are
@@ -119,95 +121,6 @@ declare namespace PortalHost {
119
121
  var displayName: string;
120
122
  }
121
123
 
122
- /**
123
- * R3: the string a root should wrap in its default text slot, or `null` when it should
124
- * render its children as they are.
125
- *
126
- * The whole tree is stringified recursively rather than the first child inspected. That
127
- * is what makes `<Button>{count} items</Button>` work — children there are the array
128
- * `[3, ' items']`, and an `isValidElement` check on the first entry would call it an
129
- * element-free tree only by accident, while a check for "is the first child a string"
130
- * would miss it outright.
131
- *
132
- * `null` for an empty result as much as for a tree containing an element: in both cases
133
- * there is nothing to wrap, and a root's fallback — render the children — is right for
134
- * both. It also keeps `<Button>{false}</Button>` from mounting an empty text node.
135
- */
136
- declare function childrenToString(children: ReactNode): string | null;
137
-
138
- /**
139
- * A context a slot cannot read by accident. Every compound gets one, and it carries
140
- * **resolved** values — style references the root already computed, not tokens for the
141
- * slot to resolve again (R5).
142
- *
143
- * ```ts
144
- * const [ButtonProvider, useButton] = createSlotContext<ButtonContext>('Button')
145
- * ```
146
- *
147
- * The tuple is what lets each compound name its own hook, which R10 requires it to
148
- * export. `name` gives both halves of the error, so there is one place to spell it.
149
- */
150
- declare function createSlotContext<T>(name: string): readonly [Provider<T | null>, () => T];
151
-
152
- /** Anything React accepts as a ref, plus the absence of one. */
153
- type PossibleRef<T> = Ref<T> | undefined;
154
- /**
155
- * The props `mergeProps` knows how to combine. Deliberately loose: it merges whatever a
156
- * root hands to whatever child it was given, and neither side is knowable from here.
157
- */
158
- type MergeableProps = Record<string, unknown>;
159
- type AsChildProps = {
160
- /**
161
- * Merge this component's props into its single child instead of rendering an element
162
- * of its own — a navigation `Link` as a `Button`, a bespoke trigger as a `Select`.
163
- */
164
- asChild?: boolean;
165
- };
166
-
167
- /**
168
- * Merges a root's own props into the child it renders through `asChild` (R12). Four
169
- * rules, and the child wins wherever they do not apply — it is the more specific intent:
170
- *
171
- * - **Event handlers compose.** Both run, ours first: the component's own behaviour (the
172
- * press state that drives its styles) happens before the child's side effect (the
173
- * navigation). Replacing one with the other is the bug this exists to prevent.
174
- * - **Styles stack**, ours under the child's, so the child can override.
175
- * - **`ref`s merge** through `mergeRefs`. React 19 passes `ref` as an ordinary prop, so
176
- * it arrives here rather than beside the props, and dropping it would sever the root's
177
- * handle on the node.
178
- * - **Everything else: the child's value wins**, and ours fills in what it left unset.
179
- */
180
- declare function mergeProps(ours: MergeableProps, theirs: MergeableProps): MergeableProps;
181
-
182
- /**
183
- * One callback that feeds several refs — what lets a root keep its own handle on a node
184
- * while still honouring the ref its caller passed (R9), and what `asChild` needs to
185
- * forward a ref into the child it merges into (R12).
186
- *
187
- * It returns nothing on purpose. React 19 reads a ref callback's return value as a
188
- * cleanup function while React 18 ignores it, and this package supports both; letting
189
- * a merged cleanup through would behave differently on each. React calls every ref with
190
- * `null` on unmount anyway, which this forwards.
191
- */
192
- declare function mergeRefs<T>(...refs: Array<PossibleRef<T>>): RefCallback<T>;
193
-
194
- type SlotProps = MergeableProps & {
195
- children?: ReactNode;
196
- };
197
- /**
198
- * The render branch behind `asChild` (R12). A root picks it instead of its own element:
199
- *
200
- * ```tsx
201
- * const Root = asChild ? Slot : Pressable
202
- * return <Root ref={ref} {...rootProps}>{children}</Root>
203
- * ```
204
- *
205
- * One line per root, which is the point — forty-seven roots each hand-rolling a
206
- * `cloneElement` and a ref merge would drift, and R12 has to hold uniformly from the
207
- * first component or the ref signature of the whole core changes later.
208
- */
209
- declare const Slot: react.ForwardRefExoticComponent<Omit<SlotProps, "ref"> & react.RefAttributes<unknown>>;
210
-
211
124
  type PressableFeedbackHighlightProps = ViewStyleProps & {
212
125
  style?: StyleProp<ViewStyle>;
213
126
  animation?: SlotAnimation;
@@ -385,7 +298,7 @@ declare function resolveSlotAnimation(override: SlotAnimation | undefined, enabl
385
298
  * off — and it is the only shape that survives `asChild`, where the caller's own element
386
299
  * is the pressable and there is no sibling for the primitive to inject.
387
300
  */
388
- declare const PressableFeedback: react.ForwardRefExoticComponent<Omit<react_native.PressableProps, "style" | "children" | "disabled"> & ViewStyleProps & {
301
+ declare const PressableFeedback: react.ForwardRefExoticComponent<Omit<react_native.PressableProps, "disabled" | "style" | "children"> & ViewStyleProps & {
389
302
  isPressed?: boolean;
390
303
  isDisabled?: boolean;
391
304
  asChild?: boolean;
@@ -397,4 +310,165 @@ declare const PressableFeedback: react.ForwardRefExoticComponent<Omit<react_nati
397
310
  Ripple: typeof PressableFeedbackRipple;
398
311
  };
399
312
 
400
- export { AnimationProp, type AsChildProps, FEEDBACK_OVERLAY, FeedbackContext, HIGHLIGHT_DURATION, HIGHLIGHT_OPACITY, Icon, IconContext, IconContextValue, IconProps, type MergeableProps, PRESS_DURATION, PRESS_SCALE, Portal, PortalContext, PortalHost, type PortalHostProps, type PortalMethods, type PortalProps, type PossibleRef, PressableFeedback, type PressableFeedbackHighlightProps, type PressableFeedbackRippleProps, RIPPLE_CONFIRM_DURATION, RIPPLE_EXPAND_DURATION, RIPPLE_FADE_IN, RIPPLE_FADE_OUT, RIPPLE_FADE_OUT_DELAY, RIPPLE_OPACITY, RIPPLE_START_SCALE, ResolvedAnimation, SCALE_REFERENCE_WIDTH, Slot, SlotAnimation, type SlotProps, ViewStyleProps, childrenToString, createSlotContext, markOverlay, mergeProps, mergeRefs, pressScaleFor, resolveAnimation, resolveSlotAnimation, rippleRadiusFor, useFeedback, useIconContext, useStyleProps };
313
+ /**
314
+ * The `radius` axis, which is the same ten lines in every component that has one — a key
315
+ * of the radius scale, applied to one slot, overriding whatever `size` chose.
316
+ *
317
+ * It is written here rather than a third time in a recipe because that is the rule §2 bis
318
+ * states: extract at the second use, and by the end of P3 this axis exists in a dozen
319
+ * components. Nothing about it is component-specific except which slot carries the corner.
320
+ *
321
+ * ```ts
322
+ * variants: { size: { … }, radius: radiusAxis('root') }
323
+ * ```
324
+ *
325
+ * The return type is a full `Record<RadiusKey, …>` rather than a partial one, so
326
+ * `createRecipe` still infers `radius="3xl"` as the axis's value union and a typo in a
327
+ * caller's `radius` is a type error rather than a silently ignored key.
328
+ */
329
+ declare function radiusAxis<Slot extends string>(slot: Slot): Record<RadiusKey, StyleFn<Slot>>;
330
+
331
+ /**
332
+ * R3: the string a root should wrap in its default text slot, or `null` when it should
333
+ * render its children as they are.
334
+ *
335
+ * The whole tree is stringified recursively rather than the first child inspected. That
336
+ * is what makes `<Button>{count} items</Button>` work — children there are the array
337
+ * `[3, ' items']`, and an `isValidElement` check on the first entry would call it an
338
+ * element-free tree only by accident, while a check for "is the first child a string"
339
+ * would miss it outright.
340
+ *
341
+ * `null` for an empty result as much as for a tree containing an element: in both cases
342
+ * there is nothing to wrap, and a root's fallback — render the children — is right for
343
+ * both. It also keeps `<Button>{false}</Button>` from mounting an empty text node.
344
+ */
345
+ declare function childrenToString(children: ReactNode): string | null;
346
+
347
+ /**
348
+ * A context a slot cannot read by accident. Every compound gets one, and it carries
349
+ * **resolved** values — style references the root already computed, not tokens for the
350
+ * slot to resolve again (R5).
351
+ *
352
+ * ```ts
353
+ * const [ButtonProvider, useButton] = createSlotContext<ButtonContext>('Button')
354
+ * ```
355
+ *
356
+ * The tuple is what lets each compound name its own hook, which R10 requires it to
357
+ * export. `name` gives both halves of the error, so there is one place to spell it.
358
+ */
359
+ declare function createSlotContext<T>(name: string): readonly [Provider<T | null>, () => T];
360
+
361
+ /** Anything React accepts as a ref, plus the absence of one. */
362
+ type PossibleRef<T> = Ref<T> | undefined;
363
+ /**
364
+ * The props `mergeProps` knows how to combine. Deliberately loose: it merges whatever a
365
+ * root hands to whatever child it was given, and neither side is knowable from here.
366
+ */
367
+ type MergeableProps = Record<string, unknown>;
368
+ type AsChildProps = {
369
+ /**
370
+ * Merge this component's props into its single child instead of rendering an element
371
+ * of its own — a navigation `Link` as a `Button`, a bespoke trigger as a `Select`.
372
+ */
373
+ asChild?: boolean;
374
+ };
375
+
376
+ /**
377
+ * Merges a root's own props into the child it renders through `asChild` (R12). Four
378
+ * rules, and the child wins wherever they do not apply — it is the more specific intent:
379
+ *
380
+ * - **Event handlers compose.** Both run, ours first: the component's own behaviour (the
381
+ * press state that drives its styles) happens before the child's side effect (the
382
+ * navigation). Replacing one with the other is the bug this exists to prevent.
383
+ * - **Styles stack**, ours under the child's, so the child can override.
384
+ * - **`ref`s merge** through `mergeRefs`. React 19 passes `ref` as an ordinary prop, so
385
+ * it arrives here rather than beside the props, and dropping it would sever the root's
386
+ * handle on the node.
387
+ * - **Everything else: the child's value wins**, and ours fills in what it left unset.
388
+ */
389
+ declare function mergeProps(ours: MergeableProps, theirs: MergeableProps): MergeableProps;
390
+
391
+ /**
392
+ * One callback that feeds several refs — what lets a root keep its own handle on a node
393
+ * while still honouring the ref its caller passed (R9), and what `asChild` needs to
394
+ * forward a ref into the child it merges into (R12).
395
+ *
396
+ * It returns nothing on purpose. React 19 reads a ref callback's return value as a
397
+ * cleanup function while React 18 ignores it, and this package supports both; letting
398
+ * a merged cleanup through would behave differently on each. React calls every ref with
399
+ * `null` on unmount anyway, which this forwards.
400
+ */
401
+ declare function mergeRefs<T>(...refs: Array<PossibleRef<T>>): RefCallback<T>;
402
+
403
+ type SlotProps = MergeableProps & {
404
+ children?: ReactNode;
405
+ };
406
+ /**
407
+ * The render branch behind `asChild` (R12). A root picks it instead of its own element:
408
+ *
409
+ * ```tsx
410
+ * const Root = asChild ? Slot : Pressable
411
+ * return <Root ref={ref} {...rootProps}>{children}</Root>
412
+ * ```
413
+ *
414
+ * One line per root, which is the point — forty-seven roots each hand-rolling a
415
+ * `cloneElement` and a ref merge would drift, and R12 has to hold uniformly from the
416
+ * first component or the ref signature of the whole core changes later.
417
+ */
418
+ declare const Slot: react.ForwardRefExoticComponent<Omit<SlotProps, "ref"> & react.RefAttributes<unknown>>;
419
+
420
+ /**
421
+ * The dismiss affordance shared by everything that can be dismissed — `Chip.Close`,
422
+ * `Alert.Close`, and the `Dialog`, `Snackbar` and `Sheet` of P5. Each of those is a
423
+ * five-line call site handing it the styles its own recipe resolved:
424
+ *
425
+ * ```tsx
426
+ * const { closeStyle, closeGlyphStyle, isDisabled } = useChip()
427
+ *
428
+ * <CloseButton
429
+ * name="Chip.Close"
430
+ * baseStyle={closeStyle}
431
+ * glyphStyle={closeGlyphStyle}
432
+ * isDisabled={isDisabled}
433
+ * />
434
+ * ```
435
+ *
436
+ * **It owns its press state**, unlike every other pressable in the library, where the
437
+ * component root owns it because its recipe resolves on it. Here the surrounding
438
+ * component is usually not a control at all, and where it is, the two are different
439
+ * targets: pressing the cross must not read as pressing the chip around it.
440
+ *
441
+ * With no children it draws its own cross from two bars a quarter turn apart, so a
442
+ * dismissible component works in a project that has installed no icon set.
443
+ */
444
+ declare const CloseButton: react.ForwardRefExoticComponent<{
445
+ name: string;
446
+ children?: react.ReactNode;
447
+ baseStyle?: react_native.StyleProp<react_native.ViewStyle>;
448
+ glyphStyle?: react_native.StyleProp<react_native.ViewStyle>;
449
+ style?: react_native.StyleProp<react_native.ViewStyle> | ((state: react_native.PressableStateCallbackType) => react_native.StyleProp<react_native.ViewStyle>);
450
+ } & Omit<PressableFeedbackProps, "isPressed" | "style" | "children"> & react.RefAttributes<View>>;
451
+
452
+ /** The two slots a component publishes for a `CloseButton`: its box and one cross bar. */
453
+ type CloseButtonSlots = {
454
+ close: SlotStyle;
455
+ closeGlyph: SlotStyle;
456
+ };
457
+ /**
458
+ * The cross's own geometry, for the `base` of any recipe that hosts a `CloseButton`:
459
+ *
460
+ * ```ts
461
+ * base: theme => ({ ...closeButtonBase(theme), root: { … } })
462
+ * ```
463
+ *
464
+ * The bar's thickness and the box's centring belong to the button rather than to the
465
+ * component around it, so they are written once here. What stays in the recipe is what is
466
+ * genuinely the component's: the size of the box and the length of the bar, both of which
467
+ * follow that component's own scale.
468
+ *
469
+ * Two bars are rendered, rotated a quarter turn apart, which is why only one is described
470
+ * and why it is positioned absolutely — they overlap at the centre of the box.
471
+ */
472
+ declare function closeButtonBase(theme: XAUITheme): CloseButtonSlots;
473
+
474
+ export { AnimationProp, type AsChildProps, CloseButton, type CloseButtonSlots, FEEDBACK_OVERLAY, FeedbackContext, HIGHLIGHT_DURATION, HIGHLIGHT_OPACITY, Icon, IconContext, IconContextValue, IconProps, type MergeableProps, PRESS_DURATION, PRESS_SCALE, Portal, PortalContext, PortalHost, type PortalHostProps, type PortalMethods, type PortalProps, type PossibleRef, PressableFeedback, type PressableFeedbackHighlightProps, PressableFeedbackProps, type PressableFeedbackRippleProps, RIPPLE_CONFIRM_DURATION, RIPPLE_EXPAND_DURATION, RIPPLE_FADE_IN, RIPPLE_FADE_OUT, RIPPLE_FADE_OUT_DELAY, RIPPLE_OPACITY, RIPPLE_START_SCALE, ResolvedAnimation, SCALE_REFERENCE_WIDTH, Slot, SlotAnimation, type SlotProps, SlotStyle, StyleFn, ViewStyleProps, childrenToString, closeButtonBase, createSlotContext, markOverlay, mergeProps, mergeRefs, pressScaleFor, radiusAxis, resolveAnimation, resolveSlotAnimation, rippleRadiusFor, useFeedback, useIconContext, useStyleProps };
@@ -2,12 +2,16 @@ import {
2
2
  Portal,
3
3
  PortalContext,
4
4
  PortalHost
5
- } from "../chunk-XHZBXYVU.js";
5
+ } from "../chunk-AKXG43S4.js";
6
+ import {
7
+ CloseButton,
8
+ closeButtonBase
9
+ } from "../chunk-ZQ3JSWRO.js";
6
10
  import {
7
11
  Icon,
8
12
  IconContext,
9
13
  useIconContext
10
- } from "../chunk-JL27KVRT.js";
14
+ } from "../chunk-FVP5FUVS.js";
11
15
  import {
12
16
  FEEDBACK_OVERLAY,
13
17
  HIGHLIGHT_DURATION,
@@ -29,10 +33,12 @@ import {
29
33
  resolveSlotAnimation,
30
34
  rippleRadiusFor,
31
35
  useFeedback
32
- } from "../chunk-IBRVMLUF.js";
36
+ } from "../chunk-KM2TI5IC.js";
33
37
  import {
34
- createRecipe
35
- } from "../chunk-N7C4UNUL.js";
38
+ createRecipe,
39
+ radiusAxis
40
+ } from "../chunk-3JATAB7S.js";
41
+ import "../chunk-A3EGFI6T.js";
36
42
  import {
37
43
  Slot,
38
44
  childrenToString,
@@ -40,10 +46,10 @@ import {
40
46
  mergeProps,
41
47
  mergeRefs,
42
48
  useStyleProps
43
- } from "../chunk-EXX6ATAS.js";
44
- import "../chunk-A3EGFI6T.js";
49
+ } from "../chunk-PMO62QK4.js";
45
50
  import "../chunk-GGW42MY4.js";
46
51
  export {
52
+ CloseButton,
47
53
  FEEDBACK_OVERLAY,
48
54
  HIGHLIGHT_DURATION,
49
55
  HIGHLIGHT_OPACITY,
@@ -65,12 +71,14 @@ export {
65
71
  SCALE_REFERENCE_WIDTH,
66
72
  Slot,
67
73
  childrenToString,
74
+ closeButtonBase,
68
75
  createRecipe,
69
76
  createSlotContext,
70
77
  markOverlay,
71
78
  mergeProps,
72
79
  mergeRefs,
73
80
  pressScaleFor,
81
+ radiusAxis,
74
82
  resolveAnimation,
75
83
  resolveSlotAnimation,
76
84
  rippleRadiusFor,