@retray-dev/ui-kit 12.1.0 → 13.0.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 (282) hide show
  1. package/COMPONENTS.md +183 -147
  2. package/CONSUMER.md +2 -2
  3. package/DESIGN.md +2 -2
  4. package/README.md +13 -8
  5. package/dist/Accordion.d.mts +6 -0
  6. package/dist/Accordion.d.ts +6 -0
  7. package/dist/Accordion.js +62 -208
  8. package/dist/Accordion.mjs +6 -5
  9. package/dist/AlertBanner.js +29 -151
  10. package/dist/AlertBanner.mjs +3 -3
  11. package/dist/AppHeader.js +37 -233
  12. package/dist/AppHeader.mjs +6 -7
  13. package/dist/Avatar.d.mts +17 -1
  14. package/dist/Avatar.d.ts +17 -1
  15. package/dist/Avatar.js +80 -113
  16. package/dist/Avatar.mjs +2 -2
  17. package/dist/Badge.js +24 -147
  18. package/dist/Badge.mjs +3 -3
  19. package/dist/Button.js +86 -274
  20. package/dist/Button.mjs +6 -6
  21. package/dist/Card.js +15 -198
  22. package/dist/Card.mjs +4 -5
  23. package/dist/CategoryStrip.d.mts +0 -5
  24. package/dist/CategoryStrip.d.ts +0 -5
  25. package/dist/CategoryStrip.js +47 -263
  26. package/dist/CategoryStrip.mjs +6 -6
  27. package/dist/Checkbox.js +15 -198
  28. package/dist/Checkbox.mjs +5 -5
  29. package/dist/Chip.js +44 -234
  30. package/dist/Chip.mjs +7 -6
  31. package/dist/ConfirmDialog.js +100 -296
  32. package/dist/ConfirmDialog.mjs +7 -7
  33. package/dist/CurrencyDisplay.js +1 -112
  34. package/dist/CurrencyDisplay.mjs +2 -2
  35. package/dist/CurrencyInput.js +35 -160
  36. package/dist/CurrencyInput.mjs +5 -5
  37. package/dist/DetailRow.js +25 -148
  38. package/dist/DetailRow.mjs +3 -3
  39. package/dist/EmptyState.js +87 -275
  40. package/dist/EmptyState.mjs +7 -7
  41. package/dist/ErrorBoundary.js +32 -197
  42. package/dist/ErrorBoundary.mjs +4 -4
  43. package/dist/Form.js +1 -112
  44. package/dist/Form.mjs +2 -2
  45. package/dist/HolographicCard.d.mts +0 -28
  46. package/dist/HolographicCard.d.ts +0 -28
  47. package/dist/HolographicCard.js +20 -130
  48. package/dist/HolographicCard.mjs +9 -32
  49. package/dist/IconButton.js +36 -232
  50. package/dist/IconButton.mjs +5 -6
  51. package/dist/IconPicker.js +222 -927
  52. package/dist/IconPicker.mjs +5 -5
  53. package/dist/ImageUpload.d.mts +5 -1
  54. package/dist/ImageUpload.d.ts +5 -1
  55. package/dist/ImageUpload.js +32 -215
  56. package/dist/ImageUpload.mjs +5 -6
  57. package/dist/ImageViewer.js +75 -264
  58. package/dist/ImageViewer.mjs +8 -8
  59. package/dist/Input.d.mts +1 -1
  60. package/dist/Input.d.ts +1 -1
  61. package/dist/Input.js +35 -160
  62. package/dist/Input.mjs +4 -4
  63. package/dist/LabelValue.js +24 -147
  64. package/dist/LabelValue.mjs +3 -3
  65. package/dist/ListGroup.js +1 -112
  66. package/dist/ListGroup.mjs +2 -2
  67. package/dist/ListItem.js +38 -233
  68. package/dist/ListItem.mjs +5 -6
  69. package/dist/MediaCard.d.mts +0 -14
  70. package/dist/MediaCard.d.ts +0 -14
  71. package/dist/MediaCard.js +69 -313
  72. package/dist/MediaCard.mjs +5 -6
  73. package/dist/MenuGroup.js +1 -112
  74. package/dist/MenuGroup.mjs +2 -2
  75. package/dist/MenuItem.js +36 -232
  76. package/dist/MenuItem.mjs +5 -6
  77. package/dist/MonthPicker.js +8 -161
  78. package/dist/MonthPicker.mjs +3 -3
  79. package/dist/NumberStepper.js +40 -236
  80. package/dist/NumberStepper.mjs +5 -6
  81. package/dist/PagerDots.d.mts +1 -1
  82. package/dist/PagerDots.d.ts +1 -1
  83. package/dist/PagerDots.js +69 -222
  84. package/dist/PagerDots.mjs +6 -5
  85. package/dist/Pressable.js +14 -85
  86. package/dist/Pressable.mjs +4 -4
  87. package/dist/PricingCard.js +94 -279
  88. package/dist/PricingCard.mjs +8 -8
  89. package/dist/Progress.js +3 -121
  90. package/dist/Progress.mjs +3 -3
  91. package/dist/RadioGroup.js +52 -263
  92. package/dist/RadioGroup.mjs +5 -5
  93. package/dist/RetrayProvider.d.mts +1 -1
  94. package/dist/RetrayProvider.d.ts +1 -1
  95. package/dist/RetrayProvider.js +5 -6
  96. package/dist/RetrayProvider.mjs +3 -3
  97. package/dist/Select.d.mts +2 -1
  98. package/dist/Select.d.ts +2 -1
  99. package/dist/Select.js +24 -230
  100. package/dist/Select.mjs +4 -5
  101. package/dist/SelectableCard.d.mts +27 -0
  102. package/dist/SelectableCard.d.ts +27 -0
  103. package/dist/SelectableCard.js +335 -0
  104. package/dist/SelectableCard.mjs +8 -0
  105. package/dist/SelectableGrid.d.mts +0 -21
  106. package/dist/SelectableGrid.d.ts +0 -21
  107. package/dist/SelectableGrid.js +49 -269
  108. package/dist/SelectableGrid.mjs +5 -6
  109. package/dist/Separator.js +1 -112
  110. package/dist/Separator.mjs +2 -2
  111. package/dist/Sheet.js +16 -163
  112. package/dist/Sheet.mjs +3 -3
  113. package/dist/SheetSelect.js +39 -234
  114. package/dist/SheetSelect.mjs +6 -6
  115. package/dist/Skeleton.d.mts +3 -1
  116. package/dist/Skeleton.d.ts +3 -1
  117. package/dist/Skeleton.js +7 -124
  118. package/dist/Skeleton.mjs +3 -3
  119. package/dist/Slider.js +6 -159
  120. package/dist/Slider.mjs +3 -3
  121. package/dist/Spinner.js +3 -114
  122. package/dist/Spinner.mjs +2 -2
  123. package/dist/Stats.d.mts +4 -1
  124. package/dist/Stats.d.ts +4 -1
  125. package/dist/Stats.js +60 -234
  126. package/dist/Stats.mjs +5 -6
  127. package/dist/Switch.js +24 -173
  128. package/dist/Switch.mjs +5 -4
  129. package/dist/TabBar.js +43 -198
  130. package/dist/TabBar.mjs +5 -4
  131. package/dist/Tabs.js +15 -197
  132. package/dist/Tabs.mjs +5 -5
  133. package/dist/Text.js +9 -128
  134. package/dist/Text.mjs +2 -2
  135. package/dist/Textarea.d.mts +2 -1
  136. package/dist/Textarea.d.ts +2 -1
  137. package/dist/Textarea.js +71 -217
  138. package/dist/Textarea.mjs +4 -4
  139. package/dist/Toast.js +1 -112
  140. package/dist/Toast.mjs +2 -2
  141. package/dist/Toggle.js +39 -234
  142. package/dist/Toggle.mjs +6 -6
  143. package/dist/{chunk-FFTYLPSB.mjs → chunk-2QOHHBJC.mjs} +13 -7
  144. package/dist/{chunk-BCWEHE34.mjs → chunk-2VIDP72N.mjs} +3 -3
  145. package/dist/{chunk-PGERH3P7.mjs → chunk-4NQFTHN3.mjs} +13 -7
  146. package/dist/{chunk-3N2M3WZL.mjs → chunk-4ZO5PTKF.mjs} +4 -4
  147. package/dist/{chunk-MYZ2EDYU.mjs → chunk-5MYNAAFE.mjs} +13 -17
  148. package/dist/{chunk-E7NEHHXV.mjs → chunk-62BBSSUF.mjs} +3 -3
  149. package/dist/{chunk-ISY26JQJ.mjs → chunk-6CR4S6W2.mjs} +3 -3
  150. package/dist/{chunk-FUVYSVGR.mjs → chunk-6QLBHUEG.mjs} +8 -7
  151. package/dist/chunk-ARONDO7M.mjs +40 -0
  152. package/dist/{chunk-3UYAZ7I4.mjs → chunk-AZV7KNJI.mjs} +3 -3
  153. package/dist/{chunk-HLMPMUK2.mjs → chunk-BTUW5LSG.mjs} +11 -8
  154. package/dist/chunk-BULKGOIZ.mjs +235 -0
  155. package/dist/{chunk-265G6A46.mjs → chunk-CBIZLRYH.mjs} +29 -12
  156. package/dist/chunk-CM2DG4MR.mjs +142 -0
  157. package/dist/{chunk-2I2AYECM.mjs → chunk-DBHSUUKU.mjs} +2 -2
  158. package/dist/{chunk-P64WHW4A.mjs → chunk-DE25XTVQ.mjs} +3 -3
  159. package/dist/{chunk-DI7CBDL6.mjs → chunk-E4EQSCKR.mjs} +5 -5
  160. package/dist/{chunk-357YO24D.mjs → chunk-EHGBHFMH.mjs} +9 -17
  161. package/dist/{chunk-GK4VRMNE.mjs → chunk-EROPDCB5.mjs} +24 -27
  162. package/dist/{chunk-XBAGGKLW.mjs → chunk-ERWJPVX7.mjs} +2 -2
  163. package/dist/{chunk-LRM4AVYY.mjs → chunk-ESQDPO5E.mjs} +7 -7
  164. package/dist/{chunk-EFLFRAHD.mjs → chunk-EW2FIDSM.mjs} +1 -1
  165. package/dist/{chunk-7HSILTC4.mjs → chunk-FTTI6T5Q.mjs} +4 -4
  166. package/dist/{chunk-X26S5EVZ.mjs → chunk-HUSSF6TF.mjs} +1 -1
  167. package/dist/chunk-IFYMBOEN.mjs +14 -0
  168. package/dist/{chunk-S3KJCPEJ.mjs → chunk-IGU223UM.mjs} +80 -4
  169. package/dist/chunk-IJCMPVW5.mjs +121 -0
  170. package/dist/{chunk-I4V5XZPS.mjs → chunk-ITG4JQM3.mjs} +4 -4
  171. package/dist/{chunk-F4V6XLP4.mjs → chunk-K3QX2M26.mjs} +11 -8
  172. package/dist/{chunk-V6NFJXKO.mjs → chunk-K7TKID3V.mjs} +8 -7
  173. package/dist/{chunk-ZHMSAYLT.mjs → chunk-KAGADD2O.mjs} +4 -4
  174. package/dist/{chunk-3GEYJ7I5.mjs → chunk-KC5QDYGZ.mjs} +4 -4
  175. package/dist/{chunk-HJ46DTJE.mjs → chunk-KPTY7UYQ.mjs} +1 -1
  176. package/dist/{chunk-EMUWGDWC.mjs → chunk-KSSVIFYR.mjs} +11 -12
  177. package/dist/chunk-L3YKPTJQ.mjs +119 -0
  178. package/dist/chunk-M53LC4Q7.mjs +35 -0
  179. package/dist/{chunk-NXI4YDZ2.mjs → chunk-MP7GLMIR.mjs} +17 -25
  180. package/dist/chunk-MZ6WRTD2.mjs +40 -0
  181. package/dist/chunk-NGEN2EES.mjs +581 -0
  182. package/dist/{chunk-JULSIZDM.mjs → chunk-OBV72JD4.mjs} +1 -1
  183. package/dist/{chunk-2A2LEFZG.mjs → chunk-PGQ6FMXS.mjs} +6 -5
  184. package/dist/{chunk-BQZE3HAW.mjs → chunk-PI6RULJX.mjs} +1 -1
  185. package/dist/{chunk-FA2KMTH5.mjs → chunk-RA6SAAFE.mjs} +9 -8
  186. package/dist/{chunk-FVTVCJAH.mjs → chunk-RRKM4MKB.mjs} +7 -7
  187. package/dist/{chunk-AKM4EPOT.mjs → chunk-S2VGME7X.mjs} +1 -1
  188. package/dist/{chunk-OULVKTWL.mjs → chunk-S44XWTTC.mjs} +35 -25
  189. package/dist/{chunk-QSFV2P7O.mjs → chunk-SZEKQAOY.mjs} +1 -1
  190. package/dist/{chunk-N4ZPVCJH.mjs → chunk-TETMEKZE.mjs} +9 -9
  191. package/dist/{chunk-2CBQKU7H.mjs → chunk-TMH263OK.mjs} +5 -4
  192. package/dist/{chunk-D3Y2T42P.mjs → chunk-U6DEBYU5.mjs} +10 -9
  193. package/dist/{chunk-4WFMPFZB.mjs → chunk-UOKFSFNJ.mjs} +2 -2
  194. package/dist/{chunk-WOEWGSTU.mjs → chunk-URIH43IJ.mjs} +13 -21
  195. package/dist/{chunk-JCZQOY4O.mjs → chunk-V2ZB2XNS.mjs} +16 -10
  196. package/dist/{chunk-P73V2EKS.mjs → chunk-WIPEDNSD.mjs} +7 -7
  197. package/dist/{chunk-BOVUP27T.mjs → chunk-XCIG6HT2.mjs} +6 -5
  198. package/dist/chunk-Y6YS33GM.mjs +131 -0
  199. package/dist/{chunk-5OLNXP3S.mjs → chunk-ZKDKKQCE.mjs} +29 -7
  200. package/dist/{chunk-DF6DU42P.mjs → chunk-ZTPYUU5C.mjs} +5 -5
  201. package/dist/{index-wt-orHUi.d.ts → index-CY34hxPN.d.mts} +1 -0
  202. package/dist/{index-wt-orHUi.d.mts → index-CY34hxPN.d.ts} +1 -0
  203. package/dist/index.d.mts +15 -74
  204. package/dist/index.d.ts +15 -74
  205. package/dist/index.js +1055 -1562
  206. package/dist/index.mjs +81 -84
  207. package/package.json +8 -10
  208. package/src/components/Accordion/Accordion.tsx +32 -9
  209. package/src/components/AlertBanner/AlertBanner.tsx +7 -6
  210. package/src/components/AppHeader/AppHeader.tsx +1 -1
  211. package/src/components/Avatar/Avatar.tsx +92 -1
  212. package/src/components/Avatar/index.ts +2 -2
  213. package/src/components/Badge/Badge.tsx +2 -2
  214. package/src/components/Button/Button.tsx +64 -57
  215. package/src/components/Card/Card.tsx +1 -0
  216. package/src/components/CategoryStrip/CategoryStrip.tsx +36 -49
  217. package/src/components/Chip/Chip.tsx +5 -4
  218. package/src/components/ConfirmDialog/ConfirmDialog.tsx +13 -6
  219. package/src/components/DetailRow/DetailRow.tsx +3 -3
  220. package/src/components/EmptyState/EmptyState.tsx +2 -2
  221. package/src/components/ErrorBoundary/ErrorBoundary.tsx +6 -6
  222. package/src/components/HolographicCard/HolographicCard.tsx +14 -95
  223. package/src/components/IconButton/IconButton.tsx +2 -2
  224. package/src/components/IconPicker/IconPicker.tsx +13 -12
  225. package/src/components/ImageUpload/ImageUpload.tsx +24 -28
  226. package/src/components/ImageViewer/ImageViewer.tsx +3 -3
  227. package/src/components/Input/Input.tsx +11 -5
  228. package/src/components/LabelValue/LabelValue.tsx +2 -2
  229. package/src/components/ListItem/ListItem.tsx +4 -4
  230. package/src/components/MediaCard/MediaCard.tsx +21 -59
  231. package/src/components/MenuItem/MenuItem.tsx +2 -2
  232. package/src/components/MonthPicker/MonthPicker.tsx +2 -2
  233. package/src/components/NumberStepper/NumberStepper.tsx +6 -6
  234. package/src/components/PagerDots/PagerDots.tsx +38 -28
  235. package/src/components/PricingCard/PricingCard.tsx +6 -6
  236. package/src/components/RadioGroup/RadioGroup.tsx +18 -31
  237. package/src/components/Select/Select.tsx +32 -39
  238. package/src/components/SelectableCard/SelectableCard.tsx +302 -0
  239. package/src/components/SelectableCard/index.ts +1 -0
  240. package/src/components/SelectableGrid/SelectableGrid.tsx +38 -72
  241. package/src/components/Sheet/Sheet.tsx +11 -4
  242. package/src/components/SheetSelect/SheetSelect.tsx +3 -3
  243. package/src/components/Skeleton/Skeleton.tsx +6 -3
  244. package/src/components/Spinner/Spinner.tsx +2 -2
  245. package/src/components/Stats/Stats.tsx +36 -8
  246. package/src/components/Switch/Switch.tsx +9 -6
  247. package/src/components/TabBar/TabBar.tsx +9 -8
  248. package/src/components/Text/Text.tsx +12 -1
  249. package/src/components/Textarea/Textarea.tsx +18 -32
  250. package/src/components/Toggle/Toggle.tsx +3 -3
  251. package/src/hooks/useConfirmDialog.ts +31 -42
  252. package/src/index.ts +4 -4
  253. package/src/theme/ThemeProvider.tsx +1 -4
  254. package/src/theme/colorUtils.ts +1 -72
  255. package/src/theme/colors.ts +47 -1
  256. package/src/theme/types.ts +6 -3
  257. package/src/utils/animations.ts +0 -47
  258. package/src/utils/curatedIcons.ts +93 -801
  259. package/src/utils/haptics.ts +13 -208
  260. package/src/utils/icons.ts +27 -91
  261. package/src/utils/pressable.ts +10 -61
  262. package/dist/VirtualList.d.mts +0 -19
  263. package/dist/VirtualList.d.ts +0 -19
  264. package/dist/VirtualList.js +0 -38
  265. package/dist/VirtualList.mjs +0 -2
  266. package/dist/chunk-3DKJ2GIC.mjs +0 -30
  267. package/dist/chunk-AQEVCEXV.mjs +0 -164
  268. package/dist/chunk-DOGIPOF5.mjs +0 -131
  269. package/dist/chunk-DVK4G2GT.mjs +0 -59
  270. package/dist/chunk-EJ7ZPXOH.mjs +0 -163
  271. package/dist/chunk-J6Q2YJEV.mjs +0 -134
  272. package/dist/chunk-JNVAIDLK.mjs +0 -136
  273. package/dist/chunk-KA7LTET3.mjs +0 -71
  274. package/dist/chunk-KHYX4IOM.mjs +0 -1114
  275. package/dist/chunk-NC5ZTR2Y.mjs +0 -32
  276. package/dist/chunk-YNROWHQJ.mjs +0 -46
  277. package/src/components/VirtualList/VirtualList.tsx +0 -60
  278. package/src/components/VirtualList/index.ts +0 -1
  279. package/src/utils/fontGuard.ts +0 -35
  280. package/src/utils/hover.ts +0 -25
  281. package/src/utils/useColorTransition.ts +0 -40
  282. package/src/utils/usePressScale.ts +0 -75
@@ -4,80 +4,29 @@ var React = require('react');
4
4
  var reactNative = require('react-native');
5
5
  var reactNativeSkia = require('@shopify/react-native-skia');
6
6
  var Animated = require('react-native-reanimated');
7
+ var pressto = require('pressto');
7
8
 
8
9
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
9
10
 
10
11
  var React__default = /*#__PURE__*/_interopDefault(React);
11
12
  var Animated__default = /*#__PURE__*/_interopDefault(Animated);
12
13
 
13
- var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
14
- get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
15
- }) : x)(function(x) {
16
- if (typeof require !== "undefined") return require.apply(this, arguments);
17
- throw Error('Dynamic require of "' + x + '" is not supported');
18
- });
19
- var SPRINGS = {
20
- /** Tight, premium press feel — Buttons, Toggle, Tabs triggers. */
21
- pressIn: { stiffness: 600, damping: 35, mass: 0.8 },
22
- pressOut: { stiffness: 280, damping: 22, mass: 0.8 }};
23
- ({
24
- /** Material-style ease-out — natural deceleration for state changes. */
25
- standard: Animated.Easing.bezier(0.2, 0, 0, 1),
26
- /** Strong ease-out for expanding surfaces (Accordion open). */
27
- expand: Animated.Easing.bezier(0.23, 1, 0.32, 1),
28
- /** Quick ease-in for collapsing. */
29
- collapse: Animated.Easing.in(Animated.Easing.ease)
14
+ // src/components/HolographicCard/HolographicCard.tsx
15
+ var makePressable = (scale) => pressto.createAnimatedPressable((progress) => {
16
+ "worklet";
17
+ return { transform: [{ scale: 1 - (1 - scale) * progress }] };
30
18
  });
31
- var PRESS_SCALE = {
32
- button: 0.95,
33
- card: 0.98};
34
- function useHover() {
35
- const [hovered, setHovered] = React.useState(false);
36
- const onMouseEnter = React.useCallback(() => setHovered(true), []);
37
- const onMouseLeave = React.useCallback(() => setHovered(false), []);
38
- if (reactNative.Platform.OS !== "web") {
39
- return { hovered: false, hoverHandlers: {} };
40
- }
41
- return { hovered, hoverHandlers: { onMouseEnter, onMouseLeave } };
42
- }
43
-
44
- // src/utils/usePressScale.ts
45
- function usePressScale({
46
- pressScale = PRESS_SCALE.button,
47
- hoverScale = 1.02,
48
- pressInSpring = SPRINGS.pressIn,
49
- pressOutSpring = SPRINGS.pressOut,
50
- disabled = false
51
- } = {}) {
52
- const scale = Animated.useSharedValue(1);
53
- const { hovered, hoverHandlers } = useHover();
54
- const onPressIn = React.useCallback(() => {
55
- if (disabled) return;
56
- scale.value = Animated.withSpring(pressScale, pressInSpring);
57
- }, [disabled, pressScale, pressInSpring, scale]);
58
- const onPressOut = React.useCallback(() => {
59
- if (disabled) return;
60
- scale.value = Animated.withSpring(1, pressOutSpring);
61
- }, [disabled, pressOutSpring, scale]);
62
- const hoverActive = reactNative.Platform.OS === "web" && hovered && hoverScale !== 1 && !disabled;
63
- const animatedStyle = Animated.useAnimatedStyle(() => ({
64
- transform: [
65
- { scale: scale.value * (hoverActive ? hoverScale : 1) }
66
- ]
67
- }));
68
- return {
69
- animatedStyle,
70
- onPressIn,
71
- onPressOut,
72
- hoverHandlers
73
- };
74
- }
19
+ makePressable(0.95);
20
+ var PressableCard = makePressable(0.98);
21
+ makePressable(0.97);
22
+ makePressable(0.94);
23
+ makePressable(0.95);
75
24
  var _haptics = null;
76
- var _hapticsLoaded = false;
25
+ var _loaded = false;
77
26
  async function getHaptics() {
78
27
  if (reactNative.Platform.OS === "web") return null;
79
- if (!_hapticsLoaded) {
80
- _hapticsLoaded = true;
28
+ if (!_loaded) {
29
+ _loaded = true;
81
30
  try {
82
31
  _haptics = await import('expo-haptics');
83
32
  } catch {
@@ -86,45 +35,8 @@ async function getHaptics() {
86
35
  }
87
36
  return _haptics;
88
37
  }
89
- var _pulsar = null;
90
- var _pulsarChecked = false;
91
- var _pulsarAvailable = false;
92
- function isPulsarNativeRegistered() {
93
- try {
94
- const g = globalThis;
95
- if (typeof g.__turboModuleProxy === "function") {
96
- return g.__turboModuleProxy("RNPulsar") != null;
97
- }
98
- return reactNative.NativeModules?.RNPulsar != null;
99
- } catch {
100
- return false;
101
- }
102
- }
103
- function getPulsar() {
104
- if (reactNative.Platform.OS === "web") return null;
105
- if (!_pulsarChecked) {
106
- _pulsarChecked = true;
107
- try {
108
- if (isPulsarNativeRegistered()) {
109
- _pulsar = __require("react-native-pulsar");
110
- _pulsarAvailable = true;
111
- }
112
- } catch {
113
- _pulsar = null;
114
- _pulsarAvailable = false;
115
- }
116
- }
117
- return _pulsarAvailable ? _pulsar : null;
118
- }
119
38
  function impactLight() {
120
- if (reactNative.Platform.OS === "web") return;
121
- getHaptics().then((h) => {
122
- if (h) {
123
- h.impactAsync(h.ImpactFeedbackStyle.Light);
124
- } else {
125
- getPulsar()?.Presets.System.impactLight();
126
- }
127
- });
39
+ getHaptics().then((h) => h?.impactAsync(h.ImpactFeedbackStyle.Light));
128
40
  }
129
41
 
130
42
  // src/tokens.ts
@@ -133,7 +45,6 @@ var RADIUS = {
133
45
 
134
46
  // src/components/HolographicCard/HolographicCard.tsx
135
47
  var FOIL_PRESETS = {
136
- // Classic holographic rainbow
137
48
  rainbow: [
138
49
  "rgba(255, 0, 128, 0.45)",
139
50
  "rgba(255, 200, 0, 0.40)",
@@ -141,7 +52,6 @@ var FOIL_PRESETS = {
141
52
  "rgba(0, 170, 255, 0.45)",
142
53
  "rgba(180, 0, 255, 0.45)"
143
54
  ],
144
- // Premium gold foil
145
55
  gold: [
146
56
  "rgba(255, 215, 0, 0.50)",
147
57
  "rgba(255, 180, 0, 0.45)",
@@ -149,7 +59,6 @@ var FOIL_PRESETS = {
149
59
  "rgba(255, 223, 128, 0.50)",
150
60
  "rgba(184, 134, 11, 0.45)"
151
61
  ],
152
- // Chrome silver foil
153
62
  silver: [
154
63
  "rgba(192, 192, 192, 0.50)",
155
64
  "rgba(220, 220, 220, 0.45)",
@@ -157,7 +66,6 @@ var FOIL_PRESETS = {
157
66
  "rgba(240, 240, 240, 0.50)",
158
67
  "rgba(128, 128, 128, 0.45)"
159
68
  ],
160
- // Deep space cosmic
161
69
  cosmic: [
162
70
  "rgba(75, 0, 130, 0.50)",
163
71
  "rgba(138, 43, 226, 0.45)",
@@ -165,7 +73,6 @@ var FOIL_PRESETS = {
165
73
  "rgba(0, 191, 255, 0.45)",
166
74
  "rgba(148, 0, 211, 0.50)"
167
75
  ],
168
- // Emerald green luxury
169
76
  emerald: [
170
77
  "rgba(0, 201, 87, 0.50)",
171
78
  "rgba(46, 139, 87, 0.45)",
@@ -173,7 +80,6 @@ var FOIL_PRESETS = {
173
80
  "rgba(60, 179, 113, 0.45)",
174
81
  "rgba(0, 128, 0, 0.50)"
175
82
  ],
176
- // Rose gold / pink
177
83
  rose: [
178
84
  "rgba(255, 105, 180, 0.50)",
179
85
  "rgba(255, 182, 193, 0.45)",
@@ -181,7 +87,6 @@ var FOIL_PRESETS = {
181
87
  "rgba(255, 20, 147, 0.45)",
182
88
  "rgba(199, 21, 133, 0.50)"
183
89
  ],
184
- // Deep ocean blue
185
90
  ocean: [
186
91
  "rgba(0, 119, 190, 0.50)",
187
92
  "rgba(0, 180, 216, 0.45)",
@@ -189,7 +94,6 @@ var FOIL_PRESETS = {
189
94
  "rgba(144, 224, 239, 0.45)",
190
95
  "rgba(0, 150, 199, 0.50)"
191
96
  ],
192
- // Hot fire gradient
193
97
  fire: [
194
98
  "rgba(255, 69, 0, 0.50)",
195
99
  "rgba(255, 140, 0, 0.45)",
@@ -197,7 +101,6 @@ var FOIL_PRESETS = {
197
101
  "rgba(255, 99, 71, 0.45)",
198
102
  "rgba(220, 20, 60, 0.50)"
199
103
  ],
200
- // Aurora borealis
201
104
  aurora: [
202
105
  "rgba(0, 255, 127, 0.45)",
203
106
  "rgba(127, 255, 212, 0.40)",
@@ -205,7 +108,6 @@ var FOIL_PRESETS = {
205
108
  "rgba(138, 43, 226, 0.40)",
206
109
  "rgba(255, 20, 147, 0.45)"
207
110
  ],
208
- // Neon cyberpunk
209
111
  neon: [
210
112
  "rgba(255, 0, 255, 0.55)",
211
113
  "rgba(0, 255, 255, 0.50)",
@@ -226,7 +128,6 @@ function HolographicCard({
226
128
  intensity = 1,
227
129
  onPress,
228
130
  style,
229
- // New customization props
230
131
  foilPreset = "rainbow",
231
132
  foilColors,
232
133
  maxTiltDegrees = DEFAULT_TILT_DEG,
@@ -271,10 +172,6 @@ function HolographicCard({
271
172
  remove?.();
272
173
  };
273
174
  }, [enableTilt, tiltX, tiltY, normFactor, tiltAnimationDuration]);
274
- const { animatedStyle: pressStyle, onPressIn, onPressOut, hoverHandlers } = usePressScale({
275
- pressScale: PRESS_SCALE.card,
276
- disabled: !onPress
277
- });
278
175
  const tiltStyle = Animated.useAnimatedStyle(() => ({
279
176
  transform: [
280
177
  { perspective: clampedPerspective },
@@ -288,29 +185,22 @@ function HolographicCard({
288
185
  const canvas = /* @__PURE__ */ React__default.default.createElement(reactNativeSkia.Canvas, { style: { width, height: h } }, image ? /* @__PURE__ */ React__default.default.createElement(reactNativeSkia.Group, { clip: { rect: rrct, rx: borderRadius, ry: borderRadius } }, /* @__PURE__ */ React__default.default.createElement(reactNativeSkia.Image, { image, x: 0, y: 0, width, height: h, fit: "cover" })) : null, /* @__PURE__ */ React__default.default.createElement(reactNativeSkia.RoundedRect, { x: 0, y: 0, width, height: h, r: borderRadius, opacity: intensity, blendMode }, /* @__PURE__ */ React__default.default.createElement(reactNativeSkia.LinearGradient, { start, end, colors: resolvedFoilColors })));
289
186
  const card = /* @__PURE__ */ React__default.default.createElement(Animated__default.default.View, { style: [{ width, height: h }, tiltStyle, style] }, canvas);
290
187
  if (!onPress) return card;
291
- return /* @__PURE__ */ React__default.default.createElement(Animated__default.default.View, { style: pressStyle }, /* @__PURE__ */ React__default.default.createElement(
292
- reactNative.TouchableOpacity,
188
+ return /* @__PURE__ */ React__default.default.createElement(
189
+ PressableCard,
293
190
  {
294
191
  onPress: () => {
295
192
  impactLight();
296
193
  onPress();
297
194
  },
298
- onPressIn,
299
- onPressOut,
300
- activeOpacity: 1,
195
+ enabled: true,
196
+ rippleColor: "transparent",
301
197
  touchSoundDisabled: true,
302
198
  accessibilityRole: "imagebutton",
303
- ...hoverHandlers,
304
- style: styles.touch
199
+ style: { alignSelf: "flex-start" }
305
200
  },
306
201
  card
307
- ));
202
+ );
308
203
  }
309
- var styles = reactNative.StyleSheet.create({
310
- touch: {
311
- alignSelf: "flex-start"
312
- }
313
- });
314
204
 
315
205
  exports.FOIL_PRESETS = FOIL_PRESETS;
316
206
  exports.HolographicCard = HolographicCard;
@@ -1,15 +1,13 @@
1
- import { usePressScale } from './chunk-YNROWHQJ.mjs';
2
- import { impactLight } from './chunk-EJ7ZPXOH.mjs';
3
- import { PRESS_SCALE } from './chunk-DVK4G2GT.mjs';
1
+ import { PressableCard } from './chunk-IFYMBOEN.mjs';
2
+ import { impactLight } from './chunk-ARONDO7M.mjs';
4
3
  import { RADIUS } from './chunk-QY3X2UYR.mjs';
5
4
  import './chunk-Y6FXYEAI.mjs';
6
5
  import React, { useMemo, useEffect } from 'react';
7
- import { StyleSheet, Platform, TouchableOpacity } from 'react-native';
6
+ import { Platform } from 'react-native';
8
7
  import { useImage, vec, Canvas, Group, Image, RoundedRect, LinearGradient } from '@shopify/react-native-skia';
9
8
  import Animated, { useSharedValue, withTiming, useAnimatedStyle, useDerivedValue } from 'react-native-reanimated';
10
9
 
11
10
  var FOIL_PRESETS = {
12
- // Classic holographic rainbow
13
11
  rainbow: [
14
12
  "rgba(255, 0, 128, 0.45)",
15
13
  "rgba(255, 200, 0, 0.40)",
@@ -17,7 +15,6 @@ var FOIL_PRESETS = {
17
15
  "rgba(0, 170, 255, 0.45)",
18
16
  "rgba(180, 0, 255, 0.45)"
19
17
  ],
20
- // Premium gold foil
21
18
  gold: [
22
19
  "rgba(255, 215, 0, 0.50)",
23
20
  "rgba(255, 180, 0, 0.45)",
@@ -25,7 +22,6 @@ var FOIL_PRESETS = {
25
22
  "rgba(255, 223, 128, 0.50)",
26
23
  "rgba(184, 134, 11, 0.45)"
27
24
  ],
28
- // Chrome silver foil
29
25
  silver: [
30
26
  "rgba(192, 192, 192, 0.50)",
31
27
  "rgba(220, 220, 220, 0.45)",
@@ -33,7 +29,6 @@ var FOIL_PRESETS = {
33
29
  "rgba(240, 240, 240, 0.50)",
34
30
  "rgba(128, 128, 128, 0.45)"
35
31
  ],
36
- // Deep space cosmic
37
32
  cosmic: [
38
33
  "rgba(75, 0, 130, 0.50)",
39
34
  "rgba(138, 43, 226, 0.45)",
@@ -41,7 +36,6 @@ var FOIL_PRESETS = {
41
36
  "rgba(0, 191, 255, 0.45)",
42
37
  "rgba(148, 0, 211, 0.50)"
43
38
  ],
44
- // Emerald green luxury
45
39
  emerald: [
46
40
  "rgba(0, 201, 87, 0.50)",
47
41
  "rgba(46, 139, 87, 0.45)",
@@ -49,7 +43,6 @@ var FOIL_PRESETS = {
49
43
  "rgba(60, 179, 113, 0.45)",
50
44
  "rgba(0, 128, 0, 0.50)"
51
45
  ],
52
- // Rose gold / pink
53
46
  rose: [
54
47
  "rgba(255, 105, 180, 0.50)",
55
48
  "rgba(255, 182, 193, 0.45)",
@@ -57,7 +50,6 @@ var FOIL_PRESETS = {
57
50
  "rgba(255, 20, 147, 0.45)",
58
51
  "rgba(199, 21, 133, 0.50)"
59
52
  ],
60
- // Deep ocean blue
61
53
  ocean: [
62
54
  "rgba(0, 119, 190, 0.50)",
63
55
  "rgba(0, 180, 216, 0.45)",
@@ -65,7 +57,6 @@ var FOIL_PRESETS = {
65
57
  "rgba(144, 224, 239, 0.45)",
66
58
  "rgba(0, 150, 199, 0.50)"
67
59
  ],
68
- // Hot fire gradient
69
60
  fire: [
70
61
  "rgba(255, 69, 0, 0.50)",
71
62
  "rgba(255, 140, 0, 0.45)",
@@ -73,7 +64,6 @@ var FOIL_PRESETS = {
73
64
  "rgba(255, 99, 71, 0.45)",
74
65
  "rgba(220, 20, 60, 0.50)"
75
66
  ],
76
- // Aurora borealis
77
67
  aurora: [
78
68
  "rgba(0, 255, 127, 0.45)",
79
69
  "rgba(127, 255, 212, 0.40)",
@@ -81,7 +71,6 @@ var FOIL_PRESETS = {
81
71
  "rgba(138, 43, 226, 0.40)",
82
72
  "rgba(255, 20, 147, 0.45)"
83
73
  ],
84
- // Neon cyberpunk
85
74
  neon: [
86
75
  "rgba(255, 0, 255, 0.55)",
87
76
  "rgba(0, 255, 255, 0.50)",
@@ -102,7 +91,6 @@ function HolographicCard({
102
91
  intensity = 1,
103
92
  onPress,
104
93
  style,
105
- // New customization props
106
94
  foilPreset = "rainbow",
107
95
  foilColors,
108
96
  maxTiltDegrees = DEFAULT_TILT_DEG,
@@ -147,10 +135,6 @@ function HolographicCard({
147
135
  remove?.();
148
136
  };
149
137
  }, [enableTilt, tiltX, tiltY, normFactor, tiltAnimationDuration]);
150
- const { animatedStyle: pressStyle, onPressIn, onPressOut, hoverHandlers } = usePressScale({
151
- pressScale: PRESS_SCALE.card,
152
- disabled: !onPress
153
- });
154
138
  const tiltStyle = useAnimatedStyle(() => ({
155
139
  transform: [
156
140
  { perspective: clampedPerspective },
@@ -164,28 +148,21 @@ function HolographicCard({
164
148
  const canvas = /* @__PURE__ */ React.createElement(Canvas, { style: { width, height: h } }, image ? /* @__PURE__ */ React.createElement(Group, { clip: { rect: rrct, rx: borderRadius, ry: borderRadius } }, /* @__PURE__ */ React.createElement(Image, { image, x: 0, y: 0, width, height: h, fit: "cover" })) : null, /* @__PURE__ */ React.createElement(RoundedRect, { x: 0, y: 0, width, height: h, r: borderRadius, opacity: intensity, blendMode }, /* @__PURE__ */ React.createElement(LinearGradient, { start, end, colors: resolvedFoilColors })));
165
149
  const card = /* @__PURE__ */ React.createElement(Animated.View, { style: [{ width, height: h }, tiltStyle, style] }, canvas);
166
150
  if (!onPress) return card;
167
- return /* @__PURE__ */ React.createElement(Animated.View, { style: pressStyle }, /* @__PURE__ */ React.createElement(
168
- TouchableOpacity,
151
+ return /* @__PURE__ */ React.createElement(
152
+ PressableCard,
169
153
  {
170
154
  onPress: () => {
171
155
  impactLight();
172
156
  onPress();
173
157
  },
174
- onPressIn,
175
- onPressOut,
176
- activeOpacity: 1,
158
+ enabled: true,
159
+ rippleColor: "transparent",
177
160
  touchSoundDisabled: true,
178
161
  accessibilityRole: "imagebutton",
179
- ...hoverHandlers,
180
- style: styles.touch
162
+ style: { alignSelf: "flex-start" }
181
163
  },
182
164
  card
183
- ));
165
+ );
184
166
  }
185
- var styles = StyleSheet.create({
186
- touch: {
187
- alignSelf: "flex-start"
188
- }
189
- });
190
167
 
191
168
  export { FOIL_PRESETS, HolographicCard };