@retray-dev/ui-kit 10.2.0 → 12.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. package/COMPONENTS.md +287 -37
  2. package/README.md +11 -2
  3. package/dist/Accordion.mjs +2 -2
  4. package/dist/AlertBanner.mjs +2 -2
  5. package/dist/AppHeader.mjs +3 -3
  6. package/dist/Avatar.mjs +2 -2
  7. package/dist/Badge.mjs +2 -2
  8. package/dist/Button.mjs +2 -2
  9. package/dist/Card.mjs +2 -2
  10. package/dist/CategoryStrip.mjs +2 -2
  11. package/dist/Checkbox.mjs +2 -2
  12. package/dist/Chip.mjs +2 -2
  13. package/dist/ConfirmDialog.d.mts +1 -6
  14. package/dist/ConfirmDialog.d.ts +1 -6
  15. package/dist/ConfirmDialog.js +29 -23
  16. package/dist/ConfirmDialog.mjs +3 -3
  17. package/dist/CurrencyDisplay.mjs +2 -2
  18. package/dist/CurrencyInput.d.mts +3 -8
  19. package/dist/CurrencyInput.d.ts +3 -8
  20. package/dist/CurrencyInput.js +3 -1
  21. package/dist/CurrencyInput.mjs +3 -3
  22. package/dist/DetailRow.mjs +2 -2
  23. package/dist/EmptyState.mjs +3 -3
  24. package/dist/ErrorBoundary.mjs +2 -2
  25. package/dist/Form.mjs +2 -2
  26. package/dist/IconButton.mjs +2 -2
  27. package/dist/IconPicker.js +675 -248
  28. package/dist/IconPicker.mjs +3 -2
  29. package/dist/ImageUpload.mjs +3 -3
  30. package/dist/ImageViewer.mjs +4 -4
  31. package/dist/Input.mjs +2 -2
  32. package/dist/LabelValue.mjs +2 -2
  33. package/dist/ListGroup.mjs +2 -2
  34. package/dist/ListItem.d.mts +7 -7
  35. package/dist/ListItem.d.ts +7 -7
  36. package/dist/ListItem.js +12 -7
  37. package/dist/ListItem.mjs +2 -2
  38. package/dist/MediaCard.mjs +2 -2
  39. package/dist/MenuGroup.mjs +2 -2
  40. package/dist/MenuItem.mjs +2 -2
  41. package/dist/MonthPicker.mjs +2 -2
  42. package/dist/NumberStepper.mjs +2 -2
  43. package/dist/PagerDots.mjs +2 -2
  44. package/dist/Pressable.d.mts +15 -7
  45. package/dist/Pressable.d.ts +15 -7
  46. package/dist/Pressable.js +7 -3
  47. package/dist/Pressable.mjs +1 -1
  48. package/dist/PricingCard.mjs +4 -4
  49. package/dist/Progress.mjs +2 -2
  50. package/dist/RadioGroup.mjs +2 -2
  51. package/dist/RetrayProvider.mjs +3 -3
  52. package/dist/Select.mjs +2 -2
  53. package/dist/SelectableGrid.mjs +2 -2
  54. package/dist/Separator.mjs +2 -2
  55. package/dist/Sheet.d.mts +4 -46
  56. package/dist/Sheet.d.ts +4 -46
  57. package/dist/Sheet.js +46 -114
  58. package/dist/Sheet.mjs +2 -3
  59. package/dist/SheetSelect.mjs +2 -2
  60. package/dist/Skeleton.mjs +2 -2
  61. package/dist/Slider.mjs +2 -2
  62. package/dist/Spinner.mjs +2 -2
  63. package/dist/Stats.d.mts +30 -0
  64. package/dist/Stats.d.ts +30 -0
  65. package/dist/Stats.js +429 -0
  66. package/dist/Stats.mjs +9 -0
  67. package/dist/Switch.mjs +2 -2
  68. package/dist/TabBar.mjs +2 -2
  69. package/dist/Tabs.mjs +2 -2
  70. package/dist/Text.d.mts +3 -1
  71. package/dist/Text.d.ts +3 -1
  72. package/dist/Text.js +3 -3
  73. package/dist/Text.mjs +2 -2
  74. package/dist/Textarea.mjs +2 -2
  75. package/dist/Toast.mjs +2 -2
  76. package/dist/Toggle.mjs +2 -2
  77. package/dist/{chunk-YJ7I257J.mjs → chunk-265G6A46.mjs} +1 -1
  78. package/dist/{chunk-ELXBDILQ.mjs → chunk-2A2LEFZG.mjs} +2 -2
  79. package/dist/{chunk-ID72TK46.mjs → chunk-2CBQKU7H.mjs} +1 -1
  80. package/dist/{chunk-OB4JUQ3O.mjs → chunk-2I2AYECM.mjs} +1 -1
  81. package/dist/{chunk-WJLKJMKR.mjs → chunk-357YO24D.mjs} +4 -4
  82. package/dist/{chunk-GQYFLP3D.mjs → chunk-3GEYJ7I5.mjs} +1 -1
  83. package/dist/{chunk-AV4EMIRH.mjs → chunk-3N2M3WZL.mjs} +1 -1
  84. package/dist/{chunk-VF2ATYN3.mjs → chunk-3UYAZ7I4.mjs} +1 -1
  85. package/dist/{chunk-JMOZEC77.mjs → chunk-4WFMPFZB.mjs} +1 -1
  86. package/dist/chunk-5OLNXP3S.mjs +144 -0
  87. package/dist/{chunk-6SECQ2ZF.mjs → chunk-7HSILTC4.mjs} +2 -2
  88. package/dist/{chunk-IRRY3CRZ.mjs → chunk-AKM4EPOT.mjs} +1 -1
  89. package/dist/{chunk-IX3NYLYQ.mjs → chunk-AQEVCEXV.mjs} +1 -1
  90. package/dist/{chunk-WBOOUHSS.mjs → chunk-BCWEHE34.mjs} +1 -1
  91. package/dist/{chunk-AJ7ZDNBT.mjs → chunk-BOVUP27T.mjs} +1 -1
  92. package/dist/{chunk-BRKYVJVV.mjs → chunk-BQZE3HAW.mjs} +1 -1
  93. package/dist/{chunk-Z6SFHN6T.mjs → chunk-D3Y2T42P.mjs} +1 -1
  94. package/dist/{chunk-T2KCAHOS.mjs → chunk-DF6DU42P.mjs} +1 -1
  95. package/dist/{chunk-TB6SD2FT.mjs → chunk-DI7CBDL6.mjs} +1 -1
  96. package/dist/{chunk-HTHGSXFG.mjs → chunk-DOGIPOF5.mjs} +1 -1
  97. package/dist/{chunk-MBMXYJJV.mjs → chunk-E7NEHHXV.mjs} +7 -3
  98. package/dist/{chunk-MX6HRKMI.mjs → chunk-EFLFRAHD.mjs} +1 -1
  99. package/dist/{chunk-SOYNZDVY.mjs → chunk-EMUWGDWC.mjs} +6 -1
  100. package/dist/{chunk-AJRVDP2H.mjs → chunk-F4V6XLP4.mjs} +3 -3
  101. package/dist/{chunk-DYT7BG5I.mjs → chunk-FA2KMTH5.mjs} +1 -1
  102. package/dist/{chunk-Y2NS74WS.mjs → chunk-FFTYLPSB.mjs} +46 -98
  103. package/dist/{chunk-VKID2D2I.mjs → chunk-FUVYSVGR.mjs} +13 -8
  104. package/dist/{chunk-7LWRKMF5.mjs → chunk-FVTVCJAH.mjs} +1 -1
  105. package/dist/{chunk-TZDGAP5N.mjs → chunk-GK4VRMNE.mjs} +2 -2
  106. package/dist/{chunk-6Q64UFIA.mjs → chunk-HJ46DTJE.mjs} +1 -1
  107. package/dist/{chunk-WF2XDFRK.mjs → chunk-HLMPMUK2.mjs} +1 -1
  108. package/dist/{chunk-GD6KXMG5.mjs → chunk-I4V5XZPS.mjs} +1 -1
  109. package/dist/{chunk-TBNZHU6C.mjs → chunk-ISY26JQJ.mjs} +2 -2
  110. package/dist/{chunk-X4G6APW6.mjs → chunk-J6Q2YJEV.mjs} +1 -1
  111. package/dist/{chunk-WYEUNUTP.mjs → chunk-JCZQOY4O.mjs} +31 -24
  112. package/dist/{chunk-U2XJFYED.mjs → chunk-JNVAIDLK.mjs} +1 -1
  113. package/dist/{chunk-SOA2Z4RB.mjs → chunk-JULSIZDM.mjs} +1 -1
  114. package/dist/chunk-KHYX4IOM.mjs +1114 -0
  115. package/dist/{chunk-RYZC432S.mjs → chunk-LRM4AVYY.mjs} +1 -1
  116. package/dist/{chunk-6L4G6PBT.mjs → chunk-MYZ2EDYU.mjs} +1 -1
  117. package/dist/{chunk-BUMAMSTZ.mjs → chunk-N4ZPVCJH.mjs} +1 -1
  118. package/dist/{chunk-Z4VHZ7B5.mjs → chunk-NXI4YDZ2.mjs} +1 -1
  119. package/dist/{chunk-ZZ2R6KZ3.mjs → chunk-OULVKTWL.mjs} +1 -1
  120. package/dist/{chunk-FCSSQK3L.mjs → chunk-P64WHW4A.mjs} +1 -1
  121. package/dist/{chunk-KOO4WITD.mjs → chunk-P73V2EKS.mjs} +1 -1
  122. package/dist/{chunk-SXLKNTA4.mjs → chunk-PGERH3P7.mjs} +1 -1
  123. package/dist/{chunk-2UYENBLV.mjs → chunk-QSFV2P7O.mjs} +1 -1
  124. package/dist/{chunk-JT7HKXRB.mjs → chunk-S3KJCPEJ.mjs} +1 -1
  125. package/dist/{chunk-BEMIQXXU.mjs → chunk-V6NFJXKO.mjs} +1 -1
  126. package/dist/{chunk-A3A6KNQN.mjs → chunk-WOEWGSTU.mjs} +1 -1
  127. package/dist/{chunk-NMU5FMQJ.mjs → chunk-X26S5EVZ.mjs} +4 -2
  128. package/dist/{chunk-YFZ3ELX5.mjs → chunk-XBAGGKLW.mjs} +2 -2
  129. package/dist/{chunk-S2R7UVOE.mjs → chunk-ZHMSAYLT.mjs} +1 -1
  130. package/dist/fonts.d.mts +1 -7
  131. package/dist/fonts.d.ts +1 -7
  132. package/dist/fonts.js +0 -2
  133. package/dist/fonts.mjs +1 -2
  134. package/dist/index.d.mts +4 -1
  135. package/dist/index.d.ts +4 -1
  136. package/dist/index.js +1184 -708
  137. package/dist/index.mjs +53 -52
  138. package/package.json +3 -3
  139. package/src/components/ConfirmDialog/ConfirmDialog.tsx +39 -30
  140. package/src/components/CurrencyInput/CurrencyInput.tsx +4 -7
  141. package/src/components/IconPicker/IconPicker.tsx +124 -112
  142. package/src/components/ListItem/ListItem.tsx +43 -28
  143. package/src/components/Pressable/Pressable.tsx +20 -8
  144. package/src/components/Sheet/Sheet.tsx +64 -172
  145. package/src/components/Stats/Stats.tsx +226 -0
  146. package/src/components/Stats/index.ts +2 -0
  147. package/src/components/Text/Text.tsx +4 -2
  148. package/src/fonts.ts +0 -7
  149. package/src/index.ts +4 -0
  150. package/src/theme/colorUtils.ts +9 -0
  151. package/src/utils/curatedIcons.ts +698 -135
  152. package/src/utils/fontGuard.ts +2 -1
  153. package/dist/chunk-53Z3NYGE.mjs +0 -742
@@ -1,7 +1,8 @@
1
- export { IconPicker } from './chunk-53Z3NYGE.mjs';
1
+ export { IconPicker } from './chunk-KHYX4IOM.mjs';
2
+ import './chunk-BCWEHE34.mjs';
2
3
  import './chunk-EJ7ZPXOH.mjs';
3
4
  import './chunk-QY3X2UYR.mjs';
4
5
  import './chunk-KA7LTET3.mjs';
5
- import './chunk-SOYNZDVY.mjs';
6
+ import './chunk-EMUWGDWC.mjs';
6
7
  import './chunk-2CE3TQVY.mjs';
7
8
  import './chunk-Y6FXYEAI.mjs';
@@ -1,9 +1,9 @@
1
- export { ImageUpload } from './chunk-TZDGAP5N.mjs';
2
- import './chunk-WBOOUHSS.mjs';
1
+ export { ImageUpload } from './chunk-GK4VRMNE.mjs';
2
+ import './chunk-BCWEHE34.mjs';
3
3
  import './chunk-3DKJ2GIC.mjs';
4
4
  import './chunk-EJ7ZPXOH.mjs';
5
5
  import './chunk-DVK4G2GT.mjs';
6
6
  import './chunk-QY3X2UYR.mjs';
7
- import './chunk-SOYNZDVY.mjs';
7
+ import './chunk-EMUWGDWC.mjs';
8
8
  import './chunk-2CE3TQVY.mjs';
9
9
  import './chunk-Y6FXYEAI.mjs';
@@ -1,10 +1,10 @@
1
- export { ImageViewer } from './chunk-ELXBDILQ.mjs';
2
- import './chunk-ZZ2R6KZ3.mjs';
3
- import './chunk-T2KCAHOS.mjs';
1
+ export { ImageViewer } from './chunk-2A2LEFZG.mjs';
2
+ import './chunk-OULVKTWL.mjs';
3
+ import './chunk-DF6DU42P.mjs';
4
4
  import './chunk-3DKJ2GIC.mjs';
5
5
  import './chunk-EJ7ZPXOH.mjs';
6
6
  import './chunk-DVK4G2GT.mjs';
7
7
  import './chunk-KA7LTET3.mjs';
8
- import './chunk-SOYNZDVY.mjs';
8
+ import './chunk-EMUWGDWC.mjs';
9
9
  import './chunk-2CE3TQVY.mjs';
10
10
  import './chunk-Y6FXYEAI.mjs';
package/dist/Input.mjs CHANGED
@@ -1,6 +1,6 @@
1
- export { Input } from './chunk-SXLKNTA4.mjs';
1
+ export { Input } from './chunk-PGERH3P7.mjs';
2
2
  import './chunk-DVK4G2GT.mjs';
3
3
  import './chunk-KA7LTET3.mjs';
4
- import './chunk-SOYNZDVY.mjs';
4
+ import './chunk-EMUWGDWC.mjs';
5
5
  import './chunk-2CE3TQVY.mjs';
6
6
  import './chunk-Y6FXYEAI.mjs';
@@ -1,5 +1,5 @@
1
- export { LabelValue } from './chunk-FCSSQK3L.mjs';
1
+ export { LabelValue } from './chunk-P64WHW4A.mjs';
2
2
  import './chunk-KA7LTET3.mjs';
3
- import './chunk-SOYNZDVY.mjs';
3
+ import './chunk-EMUWGDWC.mjs';
4
4
  import './chunk-2CE3TQVY.mjs';
5
5
  import './chunk-Y6FXYEAI.mjs';
@@ -1,5 +1,5 @@
1
- export { ListGroup, ListGroupFooter, ListGroupHeader } from './chunk-SOA2Z4RB.mjs';
1
+ export { ListGroup, ListGroupFooter, ListGroupHeader } from './chunk-JULSIZDM.mjs';
2
2
  import './chunk-QY3X2UYR.mjs';
3
- import './chunk-SOYNZDVY.mjs';
3
+ import './chunk-EMUWGDWC.mjs';
4
4
  import './chunk-2CE3TQVY.mjs';
5
5
  import './chunk-Y6FXYEAI.mjs';
@@ -15,13 +15,13 @@ interface ListItemProps {
15
15
  leftRender?: React.ReactNode;
16
16
  /**
17
17
  * Arbitrary content rendered on the right (badge, price, chevron, switch, etc.).
18
- * Replaces the old `trailing` prop (still accepted as an alias).
19
18
  */
20
19
  rightRender?: React.ReactNode | string;
21
- /** @deprecated Use `rightRender` instead. */
22
- trailing?: React.ReactNode | string;
23
- /** @deprecated Use `leftRender` instead. */
24
- icon?: React.ReactNode;
20
+ /**
21
+ * Multiple action buttons rendered on the right with automatic gap.
22
+ * Takes precedence over `rightRender` and `showChevron`.
23
+ */
24
+ rightActions?: React.ReactNode[];
25
25
  /**
26
26
  * Icon name from `@expo/vector-icons` rendered in the left slot.
27
27
  * See https://icons.expo.fyi. Takes precedence over `leftRender`.
@@ -46,7 +46,7 @@ interface ListItemProps {
46
46
  * - `card`: standalone surface with background, border and shadow.
47
47
  */
48
48
  variant?: ListItemVariant;
49
- /** Show a right-pointing chevron on the far right. Ignored when `rightRender` / `trailing` is set. */
49
+ /** Show a right-pointing chevron on the far right. Ignored when `rightRender` / `rightActions` / `rightIcon` is set. */
50
50
  showChevron?: boolean;
51
51
  /** Visual separator line at the bottom of the item. Useful when rendering multiple plain items in a list. */
52
52
  showSeparator?: boolean;
@@ -65,7 +65,7 @@ interface ListItemProps {
65
65
  /** Accessibility label override. Defaults to the title. */
66
66
  accessibilityLabel?: string;
67
67
  }
68
- declare function ListItemBase({ imageSource, leftRender, rightRender, trailing, icon, leftIcon, rightIcon, leftIconColor, rightIconColor, title, subtitle, caption, variant, showChevron, showSeparator, onPress, disabled, style, titleStyle, subtitleStyle, subtitleNumberOfLines, captionStyle, accessibilityLabel, }: ListItemProps): React.JSX.Element;
68
+ declare function ListItemBase({ imageSource, leftRender, rightRender, rightActions, leftIcon, rightIcon, leftIconColor, rightIconColor, title, subtitle, caption, variant, showChevron, showSeparator, onPress, disabled, style, titleStyle, subtitleStyle, subtitleNumberOfLines, captionStyle, accessibilityLabel, }: ListItemProps): React.JSX.Element;
69
69
  declare const ListItem: React.MemoExoticComponent<typeof ListItemBase>;
70
70
 
71
71
  export { ListItem, type ListItemProps };
@@ -15,13 +15,13 @@ interface ListItemProps {
15
15
  leftRender?: React.ReactNode;
16
16
  /**
17
17
  * Arbitrary content rendered on the right (badge, price, chevron, switch, etc.).
18
- * Replaces the old `trailing` prop (still accepted as an alias).
19
18
  */
20
19
  rightRender?: React.ReactNode | string;
21
- /** @deprecated Use `rightRender` instead. */
22
- trailing?: React.ReactNode | string;
23
- /** @deprecated Use `leftRender` instead. */
24
- icon?: React.ReactNode;
20
+ /**
21
+ * Multiple action buttons rendered on the right with automatic gap.
22
+ * Takes precedence over `rightRender` and `showChevron`.
23
+ */
24
+ rightActions?: React.ReactNode[];
25
25
  /**
26
26
  * Icon name from `@expo/vector-icons` rendered in the left slot.
27
27
  * See https://icons.expo.fyi. Takes precedence over `leftRender`.
@@ -46,7 +46,7 @@ interface ListItemProps {
46
46
  * - `card`: standalone surface with background, border and shadow.
47
47
  */
48
48
  variant?: ListItemVariant;
49
- /** Show a right-pointing chevron on the far right. Ignored when `rightRender` / `trailing` is set. */
49
+ /** Show a right-pointing chevron on the far right. Ignored when `rightRender` / `rightActions` / `rightIcon` is set. */
50
50
  showChevron?: boolean;
51
51
  /** Visual separator line at the bottom of the item. Useful when rendering multiple plain items in a list. */
52
52
  showSeparator?: boolean;
@@ -65,7 +65,7 @@ interface ListItemProps {
65
65
  /** Accessibility label override. Defaults to the title. */
66
66
  accessibilityLabel?: string;
67
67
  }
68
- declare function ListItemBase({ imageSource, leftRender, rightRender, trailing, icon, leftIcon, rightIcon, leftIconColor, rightIconColor, title, subtitle, caption, variant, showChevron, showSeparator, onPress, disabled, style, titleStyle, subtitleStyle, subtitleNumberOfLines, captionStyle, accessibilityLabel, }: ListItemProps): React.JSX.Element;
68
+ declare function ListItemBase({ imageSource, leftRender, rightRender, rightActions, leftIcon, rightIcon, leftIconColor, rightIconColor, title, subtitle, caption, variant, showChevron, showSeparator, onPress, disabled, style, titleStyle, subtitleStyle, subtitleNumberOfLines, captionStyle, accessibilityLabel, }: ListItemProps): React.JSX.Element;
69
69
  declare const ListItem: React.MemoExoticComponent<typeof ListItemBase>;
70
70
 
71
71
  export { ListItem, type ListItemProps };
package/dist/ListItem.js CHANGED
@@ -297,8 +297,7 @@ function ListItemBase({
297
297
  imageSource,
298
298
  leftRender,
299
299
  rightRender,
300
- trailing,
301
- icon,
300
+ rightActions,
302
301
  leftIcon,
303
302
  rightIcon,
304
303
  leftIconColor,
@@ -323,8 +322,8 @@ function ListItemBase({
323
322
  selectionAsync();
324
323
  onPress?.();
325
324
  };
326
- const effectiveLeft = imageSource ? /* @__PURE__ */ React3__default.default.createElement(reactNative.Image, { source: imageSource, style: styles.image }) : leftIcon ? renderIcon(leftIcon, 24, leftIconColor ?? colors.foreground) : leftRender ?? icon;
327
- const effectiveRight = rightIcon ? renderIcon(rightIcon, 24, rightIconColor ?? colors.foregroundMuted) : rightRender ?? trailing;
325
+ const effectiveLeft = imageSource ? /* @__PURE__ */ React3__default.default.createElement(reactNative.Image, { source: imageSource, style: styles.image }) : leftIcon ? renderIcon(leftIcon, 24, leftIconColor ?? colors.foreground) : leftRender;
326
+ const hasRightContent = !!(rightIcon || rightActions && rightActions.length > 0 || rightRender !== void 0 || showChevron);
328
327
  const cardStyle = variant === "card" ? {
329
328
  backgroundColor: colors.card,
330
329
  borderRadius: RADIUS.md,
@@ -361,14 +360,14 @@ function ListItemBase({
361
360
  allowFontScaling: true
362
361
  },
363
362
  caption
364
- ) : null), effectiveRight !== void 0 ? /* @__PURE__ */ React3__default.default.createElement(reactNative.View, { style: styles.rightContainer }, typeof effectiveRight === "string" ? /* @__PURE__ */ React3__default.default.createElement(
363
+ ) : null), hasRightContent ? rightIcon ? /* @__PURE__ */ React3__default.default.createElement(reactNative.View, { style: styles.rightContainer }, renderIcon(rightIcon, 24, rightIconColor ?? colors.foregroundMuted)) : rightActions && rightActions.length > 0 ? /* @__PURE__ */ React3__default.default.createElement(reactNative.View, { style: styles.rightActionsContainer }, rightActions.map((action, i) => /* @__PURE__ */ React3__default.default.createElement(React3__default.default.Fragment, { key: i }, action))) : rightRender !== void 0 ? /* @__PURE__ */ React3__default.default.createElement(reactNative.View, { style: styles.rightContainer }, typeof rightRender === "string" ? /* @__PURE__ */ React3__default.default.createElement(
365
364
  reactNative.Text,
366
365
  {
367
366
  style: [styles.rightText, { color: colors.foregroundMuted }],
368
367
  allowFontScaling: true
369
368
  },
370
- effectiveRight
371
- ) : effectiveRight) : showChevron ? /* @__PURE__ */ React3__default.default.createElement(vectorIcons.Entypo, { name: "chevron-with-circle-right", size: 20, color: colors.foregroundMuted }) : null);
369
+ rightRender
370
+ ) : rightRender) : showChevron ? /* @__PURE__ */ React3__default.default.createElement(vectorIcons.Entypo, { name: "chevron-with-circle-right", size: 20, color: colors.foregroundMuted }) : null : null);
372
371
  if (onPress) {
373
372
  return /* @__PURE__ */ React3__default.default.createElement(reactNative.View, { style: disabled && styles.disabled }, /* @__PURE__ */ React3__default.default.createElement(
374
373
  PressableRow,
@@ -435,6 +434,12 @@ var styles = reactNative.StyleSheet.create({
435
434
  flexShrink: 0,
436
435
  maxWidth: s(160)
437
436
  },
437
+ rightActionsContainer: {
438
+ flexDirection: "row",
439
+ alignItems: "center",
440
+ gap: s(8),
441
+ flexShrink: 0
442
+ },
438
443
  rightText: {
439
444
  fontFamily: "Sohne-Regular",
440
445
  fontSize: ms(14)
package/dist/ListItem.mjs CHANGED
@@ -1,9 +1,9 @@
1
- export { ListItem } from './chunk-VKID2D2I.mjs';
1
+ export { ListItem } from './chunk-FUVYSVGR.mjs';
2
2
  import './chunk-3DKJ2GIC.mjs';
3
3
  import './chunk-EJ7ZPXOH.mjs';
4
4
  import './chunk-DVK4G2GT.mjs';
5
5
  import './chunk-QY3X2UYR.mjs';
6
6
  import './chunk-KA7LTET3.mjs';
7
- import './chunk-SOYNZDVY.mjs';
7
+ import './chunk-EMUWGDWC.mjs';
8
8
  import './chunk-2CE3TQVY.mjs';
9
9
  import './chunk-Y6FXYEAI.mjs';
@@ -1,9 +1,9 @@
1
- export { MediaCard } from './chunk-IX3NYLYQ.mjs';
1
+ export { MediaCard } from './chunk-AQEVCEXV.mjs';
2
2
  import './chunk-YNROWHQJ.mjs';
3
3
  import './chunk-EJ7ZPXOH.mjs';
4
4
  import './chunk-DVK4G2GT.mjs';
5
5
  import './chunk-QY3X2UYR.mjs';
6
6
  import './chunk-KA7LTET3.mjs';
7
- import './chunk-SOYNZDVY.mjs';
7
+ import './chunk-EMUWGDWC.mjs';
8
8
  import './chunk-2CE3TQVY.mjs';
9
9
  import './chunk-Y6FXYEAI.mjs';
@@ -1,5 +1,5 @@
1
- export { MenuGroup, MenuGroupFooter, MenuGroupHeader } from './chunk-IRRY3CRZ.mjs';
1
+ export { MenuGroup, MenuGroupFooter, MenuGroupHeader } from './chunk-AKM4EPOT.mjs';
2
2
  import './chunk-QY3X2UYR.mjs';
3
- import './chunk-SOYNZDVY.mjs';
3
+ import './chunk-EMUWGDWC.mjs';
4
4
  import './chunk-2CE3TQVY.mjs';
5
5
  import './chunk-Y6FXYEAI.mjs';
package/dist/MenuItem.mjs CHANGED
@@ -1,9 +1,9 @@
1
- export { MenuItem } from './chunk-TB6SD2FT.mjs';
1
+ export { MenuItem } from './chunk-DI7CBDL6.mjs';
2
2
  import './chunk-3DKJ2GIC.mjs';
3
3
  import './chunk-EJ7ZPXOH.mjs';
4
4
  import './chunk-DVK4G2GT.mjs';
5
5
  import './chunk-QY3X2UYR.mjs';
6
6
  import './chunk-KA7LTET3.mjs';
7
- import './chunk-SOYNZDVY.mjs';
7
+ import './chunk-EMUWGDWC.mjs';
8
8
  import './chunk-2CE3TQVY.mjs';
9
9
  import './chunk-Y6FXYEAI.mjs';
@@ -1,5 +1,5 @@
1
- export { MonthPicker, dateToMonthPickerValue, monthPickerValueToDate } from './chunk-GD6KXMG5.mjs';
1
+ export { MonthPicker, dateToMonthPickerValue, monthPickerValueToDate } from './chunk-I4V5XZPS.mjs';
2
2
  import './chunk-EJ7ZPXOH.mjs';
3
- import './chunk-SOYNZDVY.mjs';
3
+ import './chunk-EMUWGDWC.mjs';
4
4
  import './chunk-2CE3TQVY.mjs';
5
5
  import './chunk-Y6FXYEAI.mjs';
@@ -1,9 +1,9 @@
1
- export { NumberStepper } from './chunk-BUMAMSTZ.mjs';
1
+ export { NumberStepper } from './chunk-N4ZPVCJH.mjs';
2
2
  import './chunk-3DKJ2GIC.mjs';
3
3
  import './chunk-EJ7ZPXOH.mjs';
4
4
  import './chunk-DVK4G2GT.mjs';
5
5
  import './chunk-QY3X2UYR.mjs';
6
6
  import './chunk-KA7LTET3.mjs';
7
- import './chunk-SOYNZDVY.mjs';
7
+ import './chunk-EMUWGDWC.mjs';
8
8
  import './chunk-2CE3TQVY.mjs';
9
9
  import './chunk-Y6FXYEAI.mjs';
@@ -1,7 +1,7 @@
1
- export { PagerDots } from './chunk-ZZ2R6KZ3.mjs';
1
+ export { PagerDots } from './chunk-OULVKTWL.mjs';
2
2
  import './chunk-EJ7ZPXOH.mjs';
3
3
  import './chunk-DVK4G2GT.mjs';
4
4
  import './chunk-KA7LTET3.mjs';
5
- import './chunk-SOYNZDVY.mjs';
5
+ import './chunk-EMUWGDWC.mjs';
6
6
  import './chunk-2CE3TQVY.mjs';
7
7
  import './chunk-Y6FXYEAI.mjs';
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { ViewStyle } from 'react-native';
2
+ import { ViewStyle, AccessibilityRole } from 'react-native';
3
3
 
4
4
  interface PressableProps {
5
5
  /** Children content to render inside the pressable. */
@@ -8,11 +8,6 @@ interface PressableProps {
8
8
  onPress?: () => void;
9
9
  /** Scale value on press. Defaults to `0.98` (MediaCard-style). */
10
10
  pressScale?: number;
11
- /**
12
- * @deprecated Use Reanimated spring config via `pressOutSpring` instead. Ignored.
13
- * Kept for backwards compatibility with v6.x consumers.
14
- */
15
- bounciness?: number;
16
11
  /** Enable haptic feedback on press. Defaults to `true`. */
17
12
  haptics?: boolean;
18
13
  /** Additional style for the wrapper. */
@@ -21,6 +16,19 @@ interface PressableProps {
21
16
  disabled?: boolean;
22
17
  /** Hover scale (web only). Defaults to `1.02`. Set to `1` to disable. */
23
18
  hoverScale?: number;
19
+ /**
20
+ * Accessibility role for the pressable element.
21
+ * Defaults to `"button"`.
22
+ */
23
+ accessibilityRole?: AccessibilityRole;
24
+ /**
25
+ * Accessibility state for screen readers.
26
+ * Used to communicate states like `selected`, `expanded`, `checked`, etc.
27
+ * Defaults to `{ disabled: !!disabled }`.
28
+ */
29
+ accessibilityState?: Record<string, unknown>;
30
+ /** Accessibility label for screen readers. */
31
+ accessibilityLabel?: string;
24
32
  }
25
33
  /**
26
34
  * Generic pressable with a calibrated spring bounce — Apple HIG / Airbnb feel.
@@ -29,6 +37,6 @@ interface PressableProps {
29
37
  * Use this for any custom pressable surface that needs consistent press feel
30
38
  * (cards, list rows, image tiles, etc).
31
39
  */
32
- declare function Pressable({ children, onPress, pressScale: _pressScale, haptics, style, disabled, hoverScale: _hoverScale, }: PressableProps): React.JSX.Element;
40
+ declare function Pressable({ children, onPress, pressScale: _pressScale, haptics, style, disabled, hoverScale: _hoverScale, accessibilityRole, accessibilityState, accessibilityLabel, }: PressableProps): React.JSX.Element;
33
41
 
34
42
  export { Pressable, type PressableProps };
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { ViewStyle } from 'react-native';
2
+ import { ViewStyle, AccessibilityRole } from 'react-native';
3
3
 
4
4
  interface PressableProps {
5
5
  /** Children content to render inside the pressable. */
@@ -8,11 +8,6 @@ interface PressableProps {
8
8
  onPress?: () => void;
9
9
  /** Scale value on press. Defaults to `0.98` (MediaCard-style). */
10
10
  pressScale?: number;
11
- /**
12
- * @deprecated Use Reanimated spring config via `pressOutSpring` instead. Ignored.
13
- * Kept for backwards compatibility with v6.x consumers.
14
- */
15
- bounciness?: number;
16
11
  /** Enable haptic feedback on press. Defaults to `true`. */
17
12
  haptics?: boolean;
18
13
  /** Additional style for the wrapper. */
@@ -21,6 +16,19 @@ interface PressableProps {
21
16
  disabled?: boolean;
22
17
  /** Hover scale (web only). Defaults to `1.02`. Set to `1` to disable. */
23
18
  hoverScale?: number;
19
+ /**
20
+ * Accessibility role for the pressable element.
21
+ * Defaults to `"button"`.
22
+ */
23
+ accessibilityRole?: AccessibilityRole;
24
+ /**
25
+ * Accessibility state for screen readers.
26
+ * Used to communicate states like `selected`, `expanded`, `checked`, etc.
27
+ * Defaults to `{ disabled: !!disabled }`.
28
+ */
29
+ accessibilityState?: Record<string, unknown>;
30
+ /** Accessibility label for screen readers. */
31
+ accessibilityLabel?: string;
24
32
  }
25
33
  /**
26
34
  * Generic pressable with a calibrated spring bounce — Apple HIG / Airbnb feel.
@@ -29,6 +37,6 @@ interface PressableProps {
29
37
  * Use this for any custom pressable surface that needs consistent press feel
30
38
  * (cards, list rows, image tiles, etc).
31
39
  */
32
- declare function Pressable({ children, onPress, pressScale: _pressScale, haptics, style, disabled, hoverScale: _hoverScale, }: PressableProps): React.JSX.Element;
40
+ declare function Pressable({ children, onPress, pressScale: _pressScale, haptics, style, disabled, hoverScale: _hoverScale, accessibilityRole, accessibilityState, accessibilityLabel, }: PressableProps): React.JSX.Element;
33
41
 
34
42
  export { Pressable, type PressableProps };
package/dist/Pressable.js CHANGED
@@ -117,7 +117,10 @@ function Pressable({
117
117
  haptics = true,
118
118
  style,
119
119
  disabled,
120
- hoverScale: _hoverScale = 1.02
120
+ hoverScale: _hoverScale = 1.02,
121
+ accessibilityRole,
122
+ accessibilityState,
123
+ accessibilityLabel
121
124
  }) {
122
125
  const handlePress = () => {
123
126
  if (disabled || !onPress) return;
@@ -133,8 +136,9 @@ function Pressable({
133
136
  rippleColor: "transparent",
134
137
  touchSoundDisabled: true,
135
138
  activateOnHover: true,
136
- accessibilityRole: "button",
137
- accessibilityState: { disabled: !!disabled }
139
+ accessibilityRole: accessibilityRole ?? "button",
140
+ accessibilityState: accessibilityState ?? { disabled: !!disabled },
141
+ accessibilityLabel
138
142
  },
139
143
  children
140
144
  );
@@ -1,4 +1,4 @@
1
- export { Pressable } from './chunk-MBMXYJJV.mjs';
1
+ export { Pressable } from './chunk-E7NEHHXV.mjs';
2
2
  import './chunk-3DKJ2GIC.mjs';
3
3
  import './chunk-EJ7ZPXOH.mjs';
4
4
  import './chunk-DVK4G2GT.mjs';
@@ -1,11 +1,11 @@
1
- export { PricingCard } from './chunk-AJRVDP2H.mjs';
2
- import './chunk-VF2ATYN3.mjs';
3
- import './chunk-HTHGSXFG.mjs';
1
+ export { PricingCard } from './chunk-F4V6XLP4.mjs';
2
+ import './chunk-3UYAZ7I4.mjs';
3
+ import './chunk-DOGIPOF5.mjs';
4
4
  import './chunk-3DKJ2GIC.mjs';
5
5
  import './chunk-EJ7ZPXOH.mjs';
6
6
  import './chunk-DVK4G2GT.mjs';
7
7
  import './chunk-QY3X2UYR.mjs';
8
8
  import './chunk-KA7LTET3.mjs';
9
- import './chunk-SOYNZDVY.mjs';
9
+ import './chunk-EMUWGDWC.mjs';
10
10
  import './chunk-2CE3TQVY.mjs';
11
11
  import './chunk-Y6FXYEAI.mjs';
package/dist/Progress.mjs CHANGED
@@ -1,5 +1,5 @@
1
- export { Progress } from './chunk-OB4JUQ3O.mjs';
1
+ export { Progress } from './chunk-2I2AYECM.mjs';
2
2
  import './chunk-DVK4G2GT.mjs';
3
- import './chunk-SOYNZDVY.mjs';
3
+ import './chunk-EMUWGDWC.mjs';
4
4
  import './chunk-2CE3TQVY.mjs';
5
5
  import './chunk-Y6FXYEAI.mjs';
@@ -1,7 +1,7 @@
1
- export { RadioGroup } from './chunk-X4G6APW6.mjs';
1
+ export { RadioGroup } from './chunk-J6Q2YJEV.mjs';
2
2
  import './chunk-YNROWHQJ.mjs';
3
3
  import './chunk-EJ7ZPXOH.mjs';
4
4
  import './chunk-DVK4G2GT.mjs';
5
- import './chunk-SOYNZDVY.mjs';
5
+ import './chunk-EMUWGDWC.mjs';
6
6
  import './chunk-2CE3TQVY.mjs';
7
7
  import './chunk-Y6FXYEAI.mjs';
@@ -1,5 +1,5 @@
1
- export { RetrayProvider } from './chunk-YFZ3ELX5.mjs';
2
- import './chunk-2UYENBLV.mjs';
3
- import './chunk-SOYNZDVY.mjs';
1
+ export { RetrayProvider } from './chunk-XBAGGKLW.mjs';
2
+ import './chunk-QSFV2P7O.mjs';
3
+ import './chunk-EMUWGDWC.mjs';
4
4
  import './chunk-2CE3TQVY.mjs';
5
5
  import './chunk-Y6FXYEAI.mjs';
package/dist/Select.mjs CHANGED
@@ -1,7 +1,7 @@
1
- export { Select } from './chunk-A3A6KNQN.mjs';
1
+ export { Select } from './chunk-WOEWGSTU.mjs';
2
2
  import './chunk-YNROWHQJ.mjs';
3
3
  import './chunk-EJ7ZPXOH.mjs';
4
4
  import './chunk-DVK4G2GT.mjs';
5
- import './chunk-SOYNZDVY.mjs';
5
+ import './chunk-EMUWGDWC.mjs';
6
6
  import './chunk-2CE3TQVY.mjs';
7
7
  import './chunk-Y6FXYEAI.mjs';
@@ -1,9 +1,9 @@
1
- export { SelectableGrid } from './chunk-Z4VHZ7B5.mjs';
1
+ export { SelectableGrid } from './chunk-NXI4YDZ2.mjs';
2
2
  import './chunk-YNROWHQJ.mjs';
3
3
  import './chunk-EJ7ZPXOH.mjs';
4
4
  import './chunk-DVK4G2GT.mjs';
5
5
  import './chunk-QY3X2UYR.mjs';
6
6
  import './chunk-KA7LTET3.mjs';
7
- import './chunk-SOYNZDVY.mjs';
7
+ import './chunk-EMUWGDWC.mjs';
8
8
  import './chunk-2CE3TQVY.mjs';
9
9
  import './chunk-Y6FXYEAI.mjs';
@@ -1,3 +1,3 @@
1
- export { Separator } from './chunk-MX6HRKMI.mjs';
2
- import './chunk-SOYNZDVY.mjs';
1
+ export { Separator } from './chunk-EFLFRAHD.mjs';
2
+ import './chunk-EMUWGDWC.mjs';
3
3
  import './chunk-Y6FXYEAI.mjs';
package/dist/Sheet.d.mts CHANGED
@@ -18,72 +18,30 @@ interface SheetProps {
18
18
  open: boolean;
19
19
  onClose: () => void;
20
20
  title?: string;
21
- /** Secondary text below title. */
22
21
  subtitle?: string;
23
- /** @deprecated Use `subtitle` instead. */
24
- description?: string;
25
- /** Show an X close button in the header. */
26
22
  showCloseButton?: boolean;
27
23
  children?: React.ReactNode;
28
- /** Style for the inner content container. */
29
24
  style?: ViewStyle;
30
- /** Style for the content wrapper (outside the scroll container). */
31
25
  contentStyle?: ViewStyle;
32
- /** Render children inside BottomSheetScrollView. */
26
+ /** Render children inside BottomSheetScrollView instead of BottomSheetView. */
33
27
  scrollable?: boolean;
34
- /** Cap sheet height (dp). Children scroll when content exceeds this value. */
28
+ /** Cap sheet height (dp). Content scrolls when exceeding this value. Requires `scrollable`. */
35
29
  maxHeight?: number;
36
- /**
37
- * Keyboard behavior — how the sheet responds to keyboard appearance.
38
- * - 'interactive': offset sheet by keyboard size (default, works on both platforms)
39
- * - 'fillParent': extend sheet to fill parent view (can cause restore issues with dynamic sizing)
40
- * - 'extend': extend sheet to maximum snap point
41
- *
42
- * Default: 'interactive' on both platforms.
43
- */
44
30
  keyboardBehavior?: 'extend' | 'fillParent' | 'interactive';
45
- /**
46
- * Keyboard blur behavior — what happens when keyboard dismisses.
47
- * - 'none': do nothing
48
- * - 'restore': restore sheet to previous position (default)
49
- */
50
31
  keyboardBlurBehavior?: 'none' | 'restore';
51
- /**
52
- * Blur keyboard when user starts dragging the sheet down.
53
- * Default: true (recommended for better UX)
54
- */
55
32
  enableBlurKeyboardOnGesture?: boolean;
56
- /**
57
- * Android-only: defines keyboard input mode.
58
- * - 'adjustPan': pan the sheet content (default, fixes restore issues with dynamic sizing)
59
- * - 'adjustResize': resize the sheet container (can cause transparent gap on dismiss)
60
- */
61
33
  android_keyboardInputMode?: 'adjustPan' | 'adjustResize';
62
- /** Sticky footer rendered below the scroll area. */
63
34
  footer?: React.ReactNode;
64
35
  /**
65
- * Array of snap points for the sheet (e.g., ['50%', '85%'] or [200, 500]).
36
+ * Array of snap points (e.g., ['50%', '85%'] or [200, 500]).
66
37
  * When provided, disables enableDynamicSizing.
67
- * When omitted, sheet uses dynamic sizing (auto-fits content).
68
38
  */
69
39
  snapPoints?: (string | number)[];
70
- /**
71
- * When true, render as a centered modal dialog on wide screens (width ≥
72
- * `BREAKPOINTS.wide`) instead of a bottom sheet. On narrow screens it stays a
73
- * bottom sheet. Use for store/category/picker dialogs that should feel native
74
- * on tablets and web.
75
- *
76
- * Note: the centered-dialog path uses a plain RN `Modal`, so `SheetTextInput`
77
- * is not required there — use a regular `TextInput`.
78
- */
79
- responsive?: boolean;
80
- /** Max width of the centered dialog (dp). Only applies when `responsive`. Defaults to 480. */
81
- dialogMaxWidth?: number;
82
40
  }
83
41
  declare function SheetHeader({ children, style }: SheetHeaderProps): React.JSX.Element;
84
42
  declare function SheetContent({ children, style }: SheetContentProps): React.JSX.Element;
85
43
  declare function SheetFooter({ children, style }: SheetFooterProps): React.JSX.Element;
86
- declare function Sheet({ open, onClose, title, subtitle, description, showCloseButton, children, style, contentStyle, scrollable, maxHeight, keyboardBehavior, keyboardBlurBehavior, enableBlurKeyboardOnGesture, android_keyboardInputMode, footer, snapPoints, responsive, dialogMaxWidth, }: SheetProps): React.JSX.Element;
44
+ declare function Sheet({ open, onClose, title, subtitle, showCloseButton, children, style, contentStyle, scrollable, maxHeight, keyboardBehavior, keyboardBlurBehavior, enableBlurKeyboardOnGesture, android_keyboardInputMode, footer, snapPoints, }: SheetProps): React.JSX.Element;
87
45
  declare namespace Sheet {
88
46
  var Header: typeof SheetHeader;
89
47
  var Content: typeof SheetContent;
package/dist/Sheet.d.ts CHANGED
@@ -18,72 +18,30 @@ interface SheetProps {
18
18
  open: boolean;
19
19
  onClose: () => void;
20
20
  title?: string;
21
- /** Secondary text below title. */
22
21
  subtitle?: string;
23
- /** @deprecated Use `subtitle` instead. */
24
- description?: string;
25
- /** Show an X close button in the header. */
26
22
  showCloseButton?: boolean;
27
23
  children?: React.ReactNode;
28
- /** Style for the inner content container. */
29
24
  style?: ViewStyle;
30
- /** Style for the content wrapper (outside the scroll container). */
31
25
  contentStyle?: ViewStyle;
32
- /** Render children inside BottomSheetScrollView. */
26
+ /** Render children inside BottomSheetScrollView instead of BottomSheetView. */
33
27
  scrollable?: boolean;
34
- /** Cap sheet height (dp). Children scroll when content exceeds this value. */
28
+ /** Cap sheet height (dp). Content scrolls when exceeding this value. Requires `scrollable`. */
35
29
  maxHeight?: number;
36
- /**
37
- * Keyboard behavior — how the sheet responds to keyboard appearance.
38
- * - 'interactive': offset sheet by keyboard size (default, works on both platforms)
39
- * - 'fillParent': extend sheet to fill parent view (can cause restore issues with dynamic sizing)
40
- * - 'extend': extend sheet to maximum snap point
41
- *
42
- * Default: 'interactive' on both platforms.
43
- */
44
30
  keyboardBehavior?: 'extend' | 'fillParent' | 'interactive';
45
- /**
46
- * Keyboard blur behavior — what happens when keyboard dismisses.
47
- * - 'none': do nothing
48
- * - 'restore': restore sheet to previous position (default)
49
- */
50
31
  keyboardBlurBehavior?: 'none' | 'restore';
51
- /**
52
- * Blur keyboard when user starts dragging the sheet down.
53
- * Default: true (recommended for better UX)
54
- */
55
32
  enableBlurKeyboardOnGesture?: boolean;
56
- /**
57
- * Android-only: defines keyboard input mode.
58
- * - 'adjustPan': pan the sheet content (default, fixes restore issues with dynamic sizing)
59
- * - 'adjustResize': resize the sheet container (can cause transparent gap on dismiss)
60
- */
61
33
  android_keyboardInputMode?: 'adjustPan' | 'adjustResize';
62
- /** Sticky footer rendered below the scroll area. */
63
34
  footer?: React.ReactNode;
64
35
  /**
65
- * Array of snap points for the sheet (e.g., ['50%', '85%'] or [200, 500]).
36
+ * Array of snap points (e.g., ['50%', '85%'] or [200, 500]).
66
37
  * When provided, disables enableDynamicSizing.
67
- * When omitted, sheet uses dynamic sizing (auto-fits content).
68
38
  */
69
39
  snapPoints?: (string | number)[];
70
- /**
71
- * When true, render as a centered modal dialog on wide screens (width ≥
72
- * `BREAKPOINTS.wide`) instead of a bottom sheet. On narrow screens it stays a
73
- * bottom sheet. Use for store/category/picker dialogs that should feel native
74
- * on tablets and web.
75
- *
76
- * Note: the centered-dialog path uses a plain RN `Modal`, so `SheetTextInput`
77
- * is not required there — use a regular `TextInput`.
78
- */
79
- responsive?: boolean;
80
- /** Max width of the centered dialog (dp). Only applies when `responsive`. Defaults to 480. */
81
- dialogMaxWidth?: number;
82
40
  }
83
41
  declare function SheetHeader({ children, style }: SheetHeaderProps): React.JSX.Element;
84
42
  declare function SheetContent({ children, style }: SheetContentProps): React.JSX.Element;
85
43
  declare function SheetFooter({ children, style }: SheetFooterProps): React.JSX.Element;
86
- declare function Sheet({ open, onClose, title, subtitle, description, showCloseButton, children, style, contentStyle, scrollable, maxHeight, keyboardBehavior, keyboardBlurBehavior, enableBlurKeyboardOnGesture, android_keyboardInputMode, footer, snapPoints, responsive, dialogMaxWidth, }: SheetProps): React.JSX.Element;
44
+ declare function Sheet({ open, onClose, title, subtitle, showCloseButton, children, style, contentStyle, scrollable, maxHeight, keyboardBehavior, keyboardBlurBehavior, enableBlurKeyboardOnGesture, android_keyboardInputMode, footer, snapPoints, }: SheetProps): React.JSX.Element;
87
45
  declare namespace Sheet {
88
46
  var Header: typeof SheetHeader;
89
47
  var Content: typeof SheetContent;