@oxyhq/bloom 0.27.0 → 0.29.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 (253) hide show
  1. package/lib/commonjs/animated-check/AnimatedCheck.js +162 -0
  2. package/lib/commonjs/animated-check/AnimatedCheck.js.map +1 -0
  3. package/lib/commonjs/animated-check/index.js +13 -0
  4. package/lib/commonjs/animated-check/index.js.map +1 -0
  5. package/lib/commonjs/dialog/placement.js +9 -7
  6. package/lib/commonjs/dialog/placement.js.map +1 -1
  7. package/lib/commonjs/fill/index.js.map +1 -1
  8. package/lib/commonjs/hooks/index.js +20 -0
  9. package/lib/commonjs/hooks/index.js.map +1 -1
  10. package/lib/commonjs/hooks/useGutters.js +106 -0
  11. package/lib/commonjs/hooks/useGutters.js.map +1 -0
  12. package/lib/commonjs/hooks/useHaptics.js +69 -0
  13. package/lib/commonjs/hooks/useHaptics.js.map +1 -0
  14. package/lib/commonjs/hooks/useInteractionState.js +8 -2
  15. package/lib/commonjs/hooks/useInteractionState.js.map +1 -1
  16. package/lib/commonjs/index.js +155 -63
  17. package/lib/commonjs/index.js.map +1 -1
  18. package/lib/commonjs/index.web.js +155 -63
  19. package/lib/commonjs/index.web.js.map +1 -1
  20. package/lib/commonjs/media-inset-border/MediaInsetBorder.js +50 -0
  21. package/lib/commonjs/media-inset-border/MediaInsetBorder.js.map +1 -0
  22. package/lib/commonjs/media-inset-border/index.js +13 -0
  23. package/lib/commonjs/media-inset-border/index.js.map +1 -0
  24. package/lib/commonjs/motion/ScreenTransition.js +46 -0
  25. package/lib/commonjs/motion/ScreenTransition.js.map +1 -0
  26. package/lib/commonjs/motion/index.js +32 -0
  27. package/lib/commonjs/motion/index.js.map +1 -0
  28. package/lib/commonjs/motion/motion.js +93 -0
  29. package/lib/commonjs/motion/motion.js.map +1 -0
  30. package/lib/commonjs/pressable-scale/PressableScale.js +78 -0
  31. package/lib/commonjs/pressable-scale/PressableScale.js.map +1 -0
  32. package/lib/commonjs/pressable-scale/index.js +13 -0
  33. package/lib/commonjs/pressable-scale/index.js.map +1 -0
  34. package/lib/commonjs/pressable-with-hover/PressableWithHover.js +36 -0
  35. package/lib/commonjs/pressable-with-hover/PressableWithHover.js.map +1 -0
  36. package/lib/commonjs/pressable-with-hover/index.js +13 -0
  37. package/lib/commonjs/pressable-with-hover/index.js.map +1 -0
  38. package/lib/commonjs/styles/breakpoints.js +24 -0
  39. package/lib/commonjs/styles/breakpoints.js.map +1 -0
  40. package/lib/commonjs/styles/index.js +7 -0
  41. package/lib/commonjs/styles/index.js.map +1 -1
  42. package/lib/commonjs/subtle-hover/SubtleHover.js +74 -0
  43. package/lib/commonjs/subtle-hover/SubtleHover.js.map +1 -0
  44. package/lib/commonjs/subtle-hover/index.js +13 -0
  45. package/lib/commonjs/subtle-hover/index.js.map +1 -0
  46. package/lib/commonjs/theme/build-theme.js +2 -0
  47. package/lib/commonjs/theme/build-theme.js.map +1 -1
  48. package/lib/commonjs/theme/gradients.js +39 -0
  49. package/lib/commonjs/theme/gradients.js.map +1 -0
  50. package/lib/commonjs/theme/index.js +7 -0
  51. package/lib/commonjs/theme/index.js.map +1 -1
  52. package/lib/module/animated-check/AnimatedCheck.js +157 -0
  53. package/lib/module/animated-check/AnimatedCheck.js.map +1 -0
  54. package/lib/module/animated-check/index.js +4 -0
  55. package/lib/module/animated-check/index.js.map +1 -0
  56. package/lib/module/dialog/placement.js +9 -7
  57. package/lib/module/dialog/placement.js.map +1 -1
  58. package/lib/module/fill/index.js.map +1 -1
  59. package/lib/module/hooks/index.js +2 -0
  60. package/lib/module/hooks/index.js.map +1 -1
  61. package/lib/module/hooks/useGutters.js +103 -0
  62. package/lib/module/hooks/useGutters.js.map +1 -0
  63. package/lib/module/hooks/useHaptics.js +65 -0
  64. package/lib/module/hooks/useHaptics.js.map +1 -0
  65. package/lib/module/hooks/useInteractionState.js +10 -3
  66. package/lib/module/hooks/useInteractionState.js.map +1 -1
  67. package/lib/module/index.js +10 -1
  68. package/lib/module/index.js.map +1 -1
  69. package/lib/module/index.web.js +10 -1
  70. package/lib/module/index.web.js.map +1 -1
  71. package/lib/module/media-inset-border/MediaInsetBorder.js +47 -0
  72. package/lib/module/media-inset-border/MediaInsetBorder.js.map +1 -0
  73. package/lib/module/media-inset-border/index.js +4 -0
  74. package/lib/module/media-inset-border/index.js.map +1 -0
  75. package/lib/module/motion/ScreenTransition.js +40 -0
  76. package/lib/module/motion/ScreenTransition.js.map +1 -0
  77. package/lib/module/motion/index.js +5 -0
  78. package/lib/module/motion/index.js.map +1 -0
  79. package/lib/module/motion/motion.js +87 -0
  80. package/lib/module/motion/motion.js.map +1 -0
  81. package/lib/module/pressable-scale/PressableScale.js +75 -0
  82. package/lib/module/pressable-scale/PressableScale.js.map +1 -0
  83. package/lib/module/pressable-scale/index.js +4 -0
  84. package/lib/module/pressable-scale/index.js.map +1 -0
  85. package/lib/module/pressable-with-hover/PressableWithHover.js +31 -0
  86. package/lib/module/pressable-with-hover/PressableWithHover.js.map +1 -0
  87. package/lib/module/pressable-with-hover/index.js +4 -0
  88. package/lib/module/pressable-with-hover/index.js.map +1 -0
  89. package/lib/module/styles/breakpoints.js +20 -0
  90. package/lib/module/styles/breakpoints.js.map +1 -0
  91. package/lib/module/styles/index.js +1 -0
  92. package/lib/module/styles/index.js.map +1 -1
  93. package/lib/module/subtle-hover/SubtleHover.js +71 -0
  94. package/lib/module/subtle-hover/SubtleHover.js.map +1 -0
  95. package/lib/module/subtle-hover/index.js +4 -0
  96. package/lib/module/subtle-hover/index.js.map +1 -0
  97. package/lib/module/theme/build-theme.js +2 -0
  98. package/lib/module/theme/build-theme.js.map +1 -1
  99. package/lib/module/theme/gradients.js +35 -0
  100. package/lib/module/theme/gradients.js.map +1 -0
  101. package/lib/module/theme/index.js +1 -0
  102. package/lib/module/theme/index.js.map +1 -1
  103. package/lib/typescript/commonjs/animated-check/AnimatedCheck.d.ts +18 -0
  104. package/lib/typescript/commonjs/animated-check/AnimatedCheck.d.ts.map +1 -0
  105. package/lib/typescript/commonjs/animated-check/index.d.ts +3 -0
  106. package/lib/typescript/commonjs/animated-check/index.d.ts.map +1 -0
  107. package/lib/typescript/commonjs/dialog/placement.d.ts +8 -7
  108. package/lib/typescript/commonjs/dialog/placement.d.ts.map +1 -1
  109. package/lib/typescript/commonjs/fill/index.d.ts +2 -2
  110. package/lib/typescript/commonjs/fill/index.d.ts.map +1 -1
  111. package/lib/typescript/commonjs/hooks/index.d.ts +4 -0
  112. package/lib/typescript/commonjs/hooks/index.d.ts.map +1 -1
  113. package/lib/typescript/commonjs/hooks/useGutters.d.ts +32 -0
  114. package/lib/typescript/commonjs/hooks/useGutters.d.ts.map +1 -0
  115. package/lib/typescript/commonjs/hooks/useHaptics.d.ts +28 -0
  116. package/lib/typescript/commonjs/hooks/useHaptics.d.ts.map +1 -0
  117. package/lib/typescript/commonjs/hooks/useInteractionState.d.ts +6 -0
  118. package/lib/typescript/commonjs/hooks/useInteractionState.d.ts.map +1 -1
  119. package/lib/typescript/commonjs/index.d.ts +16 -0
  120. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  121. package/lib/typescript/commonjs/index.web.d.ts +16 -0
  122. package/lib/typescript/commonjs/index.web.d.ts.map +1 -1
  123. package/lib/typescript/commonjs/media-inset-border/MediaInsetBorder.d.ts +26 -0
  124. package/lib/typescript/commonjs/media-inset-border/MediaInsetBorder.d.ts.map +1 -0
  125. package/lib/typescript/commonjs/media-inset-border/index.d.ts +3 -0
  126. package/lib/typescript/commonjs/media-inset-border/index.d.ts.map +1 -0
  127. package/lib/typescript/commonjs/motion/ScreenTransition.d.ts +33 -0
  128. package/lib/typescript/commonjs/motion/ScreenTransition.d.ts.map +1 -0
  129. package/lib/typescript/commonjs/motion/index.d.ts +4 -0
  130. package/lib/typescript/commonjs/motion/index.d.ts.map +1 -0
  131. package/lib/typescript/commonjs/motion/motion.d.ts +24 -0
  132. package/lib/typescript/commonjs/motion/motion.d.ts.map +1 -0
  133. package/lib/typescript/commonjs/pressable-scale/PressableScale.d.ts +21 -0
  134. package/lib/typescript/commonjs/pressable-scale/PressableScale.d.ts.map +1 -0
  135. package/lib/typescript/commonjs/pressable-scale/index.d.ts +3 -0
  136. package/lib/typescript/commonjs/pressable-scale/index.d.ts.map +1 -0
  137. package/lib/typescript/commonjs/pressable-with-hover/PressableWithHover.d.ts +18 -0
  138. package/lib/typescript/commonjs/pressable-with-hover/PressableWithHover.d.ts.map +1 -0
  139. package/lib/typescript/commonjs/pressable-with-hover/index.d.ts +3 -0
  140. package/lib/typescript/commonjs/pressable-with-hover/index.d.ts.map +1 -0
  141. package/lib/typescript/commonjs/styles/breakpoints.d.ts +18 -0
  142. package/lib/typescript/commonjs/styles/breakpoints.d.ts.map +1 -0
  143. package/lib/typescript/commonjs/styles/index.d.ts +2 -0
  144. package/lib/typescript/commonjs/styles/index.d.ts.map +1 -1
  145. package/lib/typescript/commonjs/subtle-hover/SubtleHover.d.ts +37 -0
  146. package/lib/typescript/commonjs/subtle-hover/SubtleHover.d.ts.map +1 -0
  147. package/lib/typescript/commonjs/subtle-hover/index.d.ts +3 -0
  148. package/lib/typescript/commonjs/subtle-hover/index.d.ts.map +1 -0
  149. package/lib/typescript/commonjs/theme/build-theme.d.ts.map +1 -1
  150. package/lib/typescript/commonjs/theme/gradients.d.ts +12 -0
  151. package/lib/typescript/commonjs/theme/gradients.d.ts.map +1 -0
  152. package/lib/typescript/commonjs/theme/index.d.ts +2 -1
  153. package/lib/typescript/commonjs/theme/index.d.ts.map +1 -1
  154. package/lib/typescript/commonjs/theme/types.d.ts +11 -0
  155. package/lib/typescript/commonjs/theme/types.d.ts.map +1 -1
  156. package/lib/typescript/module/animated-check/AnimatedCheck.d.ts +18 -0
  157. package/lib/typescript/module/animated-check/AnimatedCheck.d.ts.map +1 -0
  158. package/lib/typescript/module/animated-check/index.d.ts +3 -0
  159. package/lib/typescript/module/animated-check/index.d.ts.map +1 -0
  160. package/lib/typescript/module/dialog/placement.d.ts +8 -7
  161. package/lib/typescript/module/dialog/placement.d.ts.map +1 -1
  162. package/lib/typescript/module/fill/index.d.ts +2 -2
  163. package/lib/typescript/module/fill/index.d.ts.map +1 -1
  164. package/lib/typescript/module/hooks/index.d.ts +4 -0
  165. package/lib/typescript/module/hooks/index.d.ts.map +1 -1
  166. package/lib/typescript/module/hooks/useGutters.d.ts +32 -0
  167. package/lib/typescript/module/hooks/useGutters.d.ts.map +1 -0
  168. package/lib/typescript/module/hooks/useHaptics.d.ts +28 -0
  169. package/lib/typescript/module/hooks/useHaptics.d.ts.map +1 -0
  170. package/lib/typescript/module/hooks/useInteractionState.d.ts +6 -0
  171. package/lib/typescript/module/hooks/useInteractionState.d.ts.map +1 -1
  172. package/lib/typescript/module/index.d.ts +16 -0
  173. package/lib/typescript/module/index.d.ts.map +1 -1
  174. package/lib/typescript/module/index.web.d.ts +16 -0
  175. package/lib/typescript/module/index.web.d.ts.map +1 -1
  176. package/lib/typescript/module/media-inset-border/MediaInsetBorder.d.ts +26 -0
  177. package/lib/typescript/module/media-inset-border/MediaInsetBorder.d.ts.map +1 -0
  178. package/lib/typescript/module/media-inset-border/index.d.ts +3 -0
  179. package/lib/typescript/module/media-inset-border/index.d.ts.map +1 -0
  180. package/lib/typescript/module/motion/ScreenTransition.d.ts +33 -0
  181. package/lib/typescript/module/motion/ScreenTransition.d.ts.map +1 -0
  182. package/lib/typescript/module/motion/index.d.ts +4 -0
  183. package/lib/typescript/module/motion/index.d.ts.map +1 -0
  184. package/lib/typescript/module/motion/motion.d.ts +24 -0
  185. package/lib/typescript/module/motion/motion.d.ts.map +1 -0
  186. package/lib/typescript/module/pressable-scale/PressableScale.d.ts +21 -0
  187. package/lib/typescript/module/pressable-scale/PressableScale.d.ts.map +1 -0
  188. package/lib/typescript/module/pressable-scale/index.d.ts +3 -0
  189. package/lib/typescript/module/pressable-scale/index.d.ts.map +1 -0
  190. package/lib/typescript/module/pressable-with-hover/PressableWithHover.d.ts +18 -0
  191. package/lib/typescript/module/pressable-with-hover/PressableWithHover.d.ts.map +1 -0
  192. package/lib/typescript/module/pressable-with-hover/index.d.ts +3 -0
  193. package/lib/typescript/module/pressable-with-hover/index.d.ts.map +1 -0
  194. package/lib/typescript/module/styles/breakpoints.d.ts +18 -0
  195. package/lib/typescript/module/styles/breakpoints.d.ts.map +1 -0
  196. package/lib/typescript/module/styles/index.d.ts +2 -0
  197. package/lib/typescript/module/styles/index.d.ts.map +1 -1
  198. package/lib/typescript/module/subtle-hover/SubtleHover.d.ts +37 -0
  199. package/lib/typescript/module/subtle-hover/SubtleHover.d.ts.map +1 -0
  200. package/lib/typescript/module/subtle-hover/index.d.ts +3 -0
  201. package/lib/typescript/module/subtle-hover/index.d.ts.map +1 -0
  202. package/lib/typescript/module/theme/build-theme.d.ts.map +1 -1
  203. package/lib/typescript/module/theme/gradients.d.ts +12 -0
  204. package/lib/typescript/module/theme/gradients.d.ts.map +1 -0
  205. package/lib/typescript/module/theme/index.d.ts +2 -1
  206. package/lib/typescript/module/theme/index.d.ts.map +1 -1
  207. package/lib/typescript/module/theme/types.d.ts +11 -0
  208. package/lib/typescript/module/theme/types.d.ts.map +1 -1
  209. package/package.json +72 -1
  210. package/src/__tests__/AnimatedCheck.test.tsx +31 -0
  211. package/src/__tests__/MediaInsetBorder.test.tsx +36 -0
  212. package/src/__tests__/Motion.test.tsx +58 -0
  213. package/src/__tests__/PressableScale.test.tsx +38 -0
  214. package/src/__tests__/PressableWithHover.test.tsx +48 -0
  215. package/src/__tests__/SubtleHover.test.tsx +50 -0
  216. package/src/__tests__/theme-gradients.test.ts +31 -0
  217. package/src/__tests__/theme.test.ts +3 -0
  218. package/src/__tests__/useGutters.test.ts +58 -0
  219. package/src/__tests__/useHaptics.test.tsx +58 -0
  220. package/src/__tests__/useInteractionState.test.ts +27 -0
  221. package/src/animated-check/AnimatedCheck.stories.tsx +60 -0
  222. package/src/animated-check/AnimatedCheck.tsx +173 -0
  223. package/src/animated-check/index.ts +2 -0
  224. package/src/dialog/placement.ts +10 -7
  225. package/src/fill/index.tsx +2 -2
  226. package/src/hooks/index.ts +4 -0
  227. package/src/hooks/useGutters.ts +99 -0
  228. package/src/hooks/useHaptics.tsx +69 -0
  229. package/src/hooks/useInteractionState.ts +8 -2
  230. package/src/index.ts +20 -0
  231. package/src/index.web.ts +20 -0
  232. package/src/media-inset-border/MediaInsetBorder.stories.tsx +60 -0
  233. package/src/media-inset-border/MediaInsetBorder.tsx +72 -0
  234. package/src/media-inset-border/index.ts +2 -0
  235. package/src/motion/Motion.stories.tsx +99 -0
  236. package/src/motion/ScreenTransition.tsx +71 -0
  237. package/src/motion/index.ts +3 -0
  238. package/src/motion/motion.ts +75 -0
  239. package/src/pressable-scale/PressableScale.stories.tsx +92 -0
  240. package/src/pressable-scale/PressableScale.tsx +93 -0
  241. package/src/pressable-scale/index.ts +2 -0
  242. package/src/pressable-with-hover/PressableWithHover.stories.tsx +43 -0
  243. package/src/pressable-with-hover/PressableWithHover.tsx +43 -0
  244. package/src/pressable-with-hover/index.ts +2 -0
  245. package/src/styles/breakpoints.ts +18 -0
  246. package/src/styles/index.ts +2 -0
  247. package/src/subtle-hover/SubtleHover.stories.tsx +85 -0
  248. package/src/subtle-hover/SubtleHover.tsx +98 -0
  249. package/src/subtle-hover/index.ts +2 -0
  250. package/src/theme/build-theme.ts +2 -0
  251. package/src/theme/gradients.ts +61 -0
  252. package/src/theme/index.ts +2 -1
  253. package/src/theme/types.ts +13 -0
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+
3
+ import React from 'react';
4
+ import { Platform } from 'react-native';
5
+ import Animated, { Easing, FadeIn, FadeOut, SlideInLeft, SlideInRight } from 'react-native-reanimated';
6
+
7
+ /** Direction the incoming screen travels. */
8
+ import { jsx as _jsx } from "react/jsx-runtime";
9
+ /** CSS-smooth deceleration for the native slide. */
10
+ const SLIDE_EASING = Easing.out(Easing.exp);
11
+ /** Web cross-fade duration (ms) — "totally vibes based", per the Bluesky original. */
12
+ const WEB_FADE_DURATION = 90;
13
+
14
+ /**
15
+ * Wraps `children` in a Reanimated layout-animated view that slides in
16
+ * directionally on native and (optionally) cross-fades on web. Ported from
17
+ * Bluesky's `ScreenTransition`.
18
+ *
19
+ * On web the slide is intentionally dropped: layout animations there are
20
+ * unreliable, so `enabledWeb` gates a simple fade and the default is no
21
+ * transition at all.
22
+ */
23
+ export function ScreenTransition({
24
+ direction,
25
+ enabledWeb,
26
+ style,
27
+ children
28
+ }) {
29
+ const isWeb = Platform.OS === 'web';
30
+ const entering = isWeb ? enabledWeb ? FadeIn.duration(WEB_FADE_DURATION) : undefined : (direction === 'forward' ? SlideInRight : SlideInLeft).easing(SLIDE_EASING);
31
+ const exiting = isWeb ? enabledWeb ? FadeOut.duration(WEB_FADE_DURATION) : undefined : FadeOut.duration(WEB_FADE_DURATION);
32
+ return /*#__PURE__*/_jsx(Animated.View, {
33
+ entering: entering,
34
+ exiting: exiting,
35
+ style: style,
36
+ children: children
37
+ });
38
+ }
39
+ ScreenTransition.displayName = 'ScreenTransition';
40
+ //# sourceMappingURL=ScreenTransition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Platform","Animated","Easing","FadeIn","FadeOut","SlideInLeft","SlideInRight","jsx","_jsx","SLIDE_EASING","out","exp","WEB_FADE_DURATION","ScreenTransition","direction","enabledWeb","style","children","isWeb","OS","entering","duration","undefined","easing","exiting","View","displayName"],"sourceRoot":"../../../src","sources":["motion/ScreenTransition.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,QAAQ,QAAwC,cAAc;AACvE,OAAOC,QAAQ,IACbC,MAAM,EACNC,MAAM,EACNC,OAAO,EACPC,WAAW,EACXC,YAAY,QACP,yBAAyB;;AAEhC;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAmBA;AACA,MAAMC,YAAY,GAAGP,MAAM,CAACQ,GAAG,CAACR,MAAM,CAACS,GAAG,CAAC;AAC3C;AACA,MAAMC,iBAAiB,GAAG,EAAE;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAAC;EAC/BC,SAAS;EACTC,UAAU;EACVC,KAAK;EACLC;AACqB,CAAC,EAAE;EACxB,MAAMC,KAAK,GAAGlB,QAAQ,CAACmB,EAAE,KAAK,KAAK;EAEnC,MAAMC,QAAQ,GAAGF,KAAK,GAClBH,UAAU,GACRZ,MAAM,CAACkB,QAAQ,CAACT,iBAAiB,CAAC,GAClCU,SAAS,GACX,CAACR,SAAS,KAAK,SAAS,GAAGR,YAAY,GAAGD,WAAW,EAAEkB,MAAM,CAACd,YAAY,CAAC;EAE/E,MAAMe,OAAO,GAAGN,KAAK,GACjBH,UAAU,GACRX,OAAO,CAACiB,QAAQ,CAACT,iBAAiB,CAAC,GACnCU,SAAS,GACXlB,OAAO,CAACiB,QAAQ,CAACT,iBAAiB,CAAC;EAEvC,oBACEJ,IAAA,CAACP,QAAQ,CAACwB,IAAI;IAACL,QAAQ,EAAEA,QAAS;IAACI,OAAO,EAAEA,OAAQ;IAACR,KAAK,EAAEA,KAAM;IAAAC,QAAA,EAC/DA;EAAQ,CACI,CAAC;AAEpB;AAEAJ,gBAAgB,CAACa,WAAW,GAAG,kBAAkB","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ export { ScaleAndFadeIn, ScaleAndFadeOut, ShrinkAndPop } from "./motion.js";
4
+ export { ScreenTransition } from "./ScreenTransition.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ScaleAndFadeIn","ScaleAndFadeOut","ShrinkAndPop","ScreenTransition"],"sourceRoot":"../../../src","sources":["motion/index.ts"],"mappings":";;AAAA,SAASA,cAAc,EAAEC,eAAe,EAAEC,YAAY,QAAQ,aAAU;AACxE,SAASC,gBAAgB,QAAQ,uBAAoB","ignoreList":[]}
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+
3
+ import { withDelay, withSequence, withTiming } from 'react-native-reanimated';
4
+
5
+ /**
6
+ * Reanimated custom layout-animation presets. Each is a worklet builder
7
+ * compatible with an `Animated.View`'s `entering` / `exiting` prop:
8
+ *
9
+ * ```tsx
10
+ * <Animated.View entering={ScaleAndFadeIn} exiting={ScaleAndFadeOut} />
11
+ * ```
12
+ *
13
+ * Ported from Bluesky's custom-animation set. The `'worklet'` directive is
14
+ * preserved through Bloom's build; the consuming app's Metro + reanimated Babel
15
+ * plugin transforms it so the animation runs on the UI thread (same path the
16
+ * existing `bottom-sheet` gesture worklets rely on).
17
+ */
18
+
19
+ /** Entering: fade in while growing from 70% to full size. */
20
+ export const ScaleAndFadeIn = () => {
21
+ 'worklet';
22
+
23
+ return {
24
+ animations: {
25
+ opacity: withTiming(1),
26
+ transform: [{
27
+ scale: withTiming(1)
28
+ }]
29
+ },
30
+ initialValues: {
31
+ opacity: 0,
32
+ transform: [{
33
+ scale: 0.7
34
+ }]
35
+ }
36
+ };
37
+ };
38
+
39
+ /** Exiting counterpart to {@link ScaleAndFadeIn}: fade out while shrinking to 70%. */
40
+ export const ScaleAndFadeOut = () => {
41
+ 'worklet';
42
+
43
+ return {
44
+ animations: {
45
+ opacity: withTiming(0),
46
+ transform: [{
47
+ scale: withTiming(0.7)
48
+ }]
49
+ },
50
+ initialValues: {
51
+ opacity: 1,
52
+ transform: [{
53
+ scale: 1
54
+ }]
55
+ }
56
+ };
57
+ };
58
+
59
+ /**
60
+ * Exiting with a brief "pop": the scale dips to 70%, overshoots to 110%, and the
61
+ * element fades out. Good for confirming a tapped or removed item.
62
+ */
63
+ export const ShrinkAndPop = () => {
64
+ 'worklet';
65
+
66
+ return {
67
+ animations: {
68
+ opacity: withDelay(125, withTiming(0, {
69
+ duration: 125
70
+ })),
71
+ transform: [{
72
+ scale: withSequence(withTiming(0.7, {
73
+ duration: 75
74
+ }), withTiming(1.1, {
75
+ duration: 150
76
+ }))
77
+ }]
78
+ },
79
+ initialValues: {
80
+ opacity: 1,
81
+ transform: [{
82
+ scale: 1
83
+ }]
84
+ }
85
+ };
86
+ };
87
+ //# sourceMappingURL=motion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["withDelay","withSequence","withTiming","ScaleAndFadeIn","animations","opacity","transform","scale","initialValues","ScaleAndFadeOut","ShrinkAndPop","duration"],"sourceRoot":"../../../src","sources":["motion/motion.ts"],"mappings":";;AAAA,SACEA,SAAS,EACTC,YAAY,EACZC,UAAU,QAEL,yBAAyB;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO,MAAMC,cAAqC,GAAGA,CAAA,KAAM;EACzD,SAAS;;EACT,OAAO;IACLC,UAAU,EAAE;MACVC,OAAO,EAAEH,UAAU,CAAC,CAAC,CAAC;MACtBI,SAAS,EAAE,CAAC;QAAEC,KAAK,EAAEL,UAAU,CAAC,CAAC;MAAE,CAAC;IACtC,CAAC;IACDM,aAAa,EAAE;MACbH,OAAO,EAAE,CAAC;MACVC,SAAS,EAAE,CAAC;QAAEC,KAAK,EAAE;MAAI,CAAC;IAC5B;EACF,CAAC;AACH,CAAC;;AAED;AACA,OAAO,MAAME,eAAsC,GAAGA,CAAA,KAAM;EAC1D,SAAS;;EACT,OAAO;IACLL,UAAU,EAAE;MACVC,OAAO,EAAEH,UAAU,CAAC,CAAC,CAAC;MACtBI,SAAS,EAAE,CAAC;QAAEC,KAAK,EAAEL,UAAU,CAAC,GAAG;MAAE,CAAC;IACxC,CAAC;IACDM,aAAa,EAAE;MACbH,OAAO,EAAE,CAAC;MACVC,SAAS,EAAE,CAAC;QAAEC,KAAK,EAAE;MAAE,CAAC;IAC1B;EACF,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,MAAMG,YAAmC,GAAGA,CAAA,KAAM;EACvD,SAAS;;EACT,OAAO;IACLN,UAAU,EAAE;MACVC,OAAO,EAAEL,SAAS,CAAC,GAAG,EAAEE,UAAU,CAAC,CAAC,EAAE;QAAES,QAAQ,EAAE;MAAI,CAAC,CAAC,CAAC;MACzDL,SAAS,EAAE,CACT;QACEC,KAAK,EAAEN,YAAY,CACjBC,UAAU,CAAC,GAAG,EAAE;UAAES,QAAQ,EAAE;QAAG,CAAC,CAAC,EACjCT,UAAU,CAAC,GAAG,EAAE;UAAES,QAAQ,EAAE;QAAI,CAAC,CACnC;MACF,CAAC;IAEL,CAAC;IACDH,aAAa,EAAE;MACbH,OAAO,EAAE,CAAC;MACVC,SAAS,EAAE,CAAC;QAAEC,KAAK,EAAE;MAAE,CAAC;IAC1B;EACF,CAAC;AACH,CAAC","ignoreList":[]}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+
3
+ import React, { forwardRef } from 'react';
4
+ import { Platform, Pressable } from 'react-native';
5
+ import Animated, { cancelAnimation, useAnimatedStyle, useReducedMotion, useSharedValue, withTiming } from 'react-native-reanimated';
6
+
7
+ /** Press-in / press-out timing, in ms. */
8
+ import { jsx as _jsx } from "react/jsx-runtime";
9
+ const DURATION = 100;
10
+
11
+ /**
12
+ * True on touch-capable web browsers (coarse pointer). The press-scale
13
+ * affordance only makes sense where a finger obscures the element — with a
14
+ * mouse it reads as jitter — so it is disabled on non-touch web, matching the
15
+ * native / web-touch behaviour.
16
+ */
17
+ const IS_WEB_TOUCH_DEVICE = Platform.OS === 'web' && typeof window !== 'undefined' && typeof window.matchMedia === 'function' && window.matchMedia('(pointer: coarse)').matches;
18
+ const SCALE_SUPPORTED = Platform.OS !== 'web' || IS_WEB_TOUCH_DEVICE;
19
+
20
+ /**
21
+ * A single animated `Pressable`, built once at module scope so the animated
22
+ * node identity is stable across renders.
23
+ */
24
+ const AnimatedPressable = Animated.createAnimatedComponent(Pressable);
25
+ /**
26
+ * A drop-in {@link Pressable} that springs to a smaller scale on press-in and
27
+ * back on release. The scale is applied to the pressable node itself, so a
28
+ * consumer's `className` / layout styles (e.g. `flex-row items-center`) land on
29
+ * the same node that animates.
30
+ *
31
+ * The touch target scales with the content — acceptable at the default ~0.98
32
+ * (the earlier two-node touch-target-preservation was dropped for simplicity).
33
+ * Honours the OS "reduce motion" setting and disables the effect on non-touch
34
+ * web pointers.
35
+ */
36
+ export const PressableScale = /*#__PURE__*/forwardRef(function PressableScale({
37
+ targetScale = 0.98,
38
+ style,
39
+ onPressIn,
40
+ onPressOut,
41
+ ...rest
42
+ }, ref) {
43
+ const reducedMotion = useReducedMotion();
44
+ const animate = SCALE_SUPPORTED && !reducedMotion;
45
+ const scale = useSharedValue(1);
46
+ const animatedStyle = useAnimatedStyle(() => ({
47
+ transform: [{
48
+ scale: scale.value
49
+ }]
50
+ }));
51
+ return /*#__PURE__*/_jsx(AnimatedPressable, {
52
+ ref: ref,
53
+ accessibilityRole: "button",
54
+ onPressIn: e => {
55
+ onPressIn?.(e);
56
+ if (!animate) return;
57
+ cancelAnimation(scale);
58
+ scale.value = withTiming(targetScale, {
59
+ duration: DURATION
60
+ });
61
+ },
62
+ onPressOut: e => {
63
+ onPressOut?.(e);
64
+ if (!animate) return;
65
+ cancelAnimation(scale);
66
+ scale.value = withTiming(1, {
67
+ duration: DURATION
68
+ });
69
+ },
70
+ style: [animate ? animatedStyle : null, style],
71
+ ...rest
72
+ });
73
+ });
74
+ PressableScale.displayName = 'PressableScale';
75
+ //# sourceMappingURL=PressableScale.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","forwardRef","Platform","Pressable","Animated","cancelAnimation","useAnimatedStyle","useReducedMotion","useSharedValue","withTiming","jsx","_jsx","DURATION","IS_WEB_TOUCH_DEVICE","OS","window","matchMedia","matches","SCALE_SUPPORTED","AnimatedPressable","createAnimatedComponent","PressableScale","targetScale","style","onPressIn","onPressOut","rest","ref","reducedMotion","animate","scale","animatedStyle","transform","value","accessibilityRole","e","duration","displayName"],"sourceRoot":"../../../src","sources":["pressable-scale/PressableScale.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,UAAU,QAAQ,OAAO;AACzC,SACEC,QAAQ,EACRC,SAAS,QAKJ,cAAc;AACrB,OAAOC,QAAQ,IACbC,eAAe,EACfC,gBAAgB,EAChBC,gBAAgB,EAChBC,cAAc,EACdC,UAAU,QACL,yBAAyB;;AAEhC;AAAA,SAAAC,GAAA,IAAAC,IAAA;AACA,MAAMC,QAAQ,GAAG,GAAG;;AAEpB;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,mBAAmB,GACvBX,QAAQ,CAACY,EAAE,KAAK,KAAK,IACrB,OAAOC,MAAM,KAAK,WAAW,IAC7B,OAAOA,MAAM,CAACC,UAAU,KAAK,UAAU,IACvCD,MAAM,CAACC,UAAU,CAAC,mBAAmB,CAAC,CAACC,OAAO;AAEhD,MAAMC,eAAe,GAAGhB,QAAQ,CAACY,EAAE,KAAK,KAAK,IAAID,mBAAmB;;AAEpE;AACA;AACA;AACA;AACA,MAAMM,iBAAiB,GAAGf,QAAQ,CAACgB,uBAAuB,CAACjB,SAAS,CAAC;AASrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMkB,cAAc,gBAAGpB,UAAU,CACtC,SAASoB,cAAcA,CAAC;EAAEC,WAAW,GAAG,IAAI;EAAEC,KAAK;EAAEC,SAAS;EAAEC,UAAU;EAAE,GAAGC;AAAK,CAAC,EAAEC,GAAG,EAAE;EAC1F,MAAMC,aAAa,GAAGrB,gBAAgB,CAAC,CAAC;EACxC,MAAMsB,OAAO,GAAGX,eAAe,IAAI,CAACU,aAAa;EAEjD,MAAME,KAAK,GAAGtB,cAAc,CAAC,CAAC,CAAC;EAE/B,MAAMuB,aAAa,GAAGzB,gBAAgB,CAAC,OAAO;IAC5C0B,SAAS,EAAE,CAAC;MAAEF,KAAK,EAAEA,KAAK,CAACG;IAAM,CAAC;EACpC,CAAC,CAAC,CAAC;EAEH,oBACEtB,IAAA,CAACQ,iBAAiB;IAChBQ,GAAG,EAAEA,GAAI;IACTO,iBAAiB,EAAC,QAAQ;IAC1BV,SAAS,EAAGW,CAAC,IAAK;MAChBX,SAAS,GAAGW,CAAC,CAAC;MACd,IAAI,CAACN,OAAO,EAAE;MACdxB,eAAe,CAACyB,KAAK,CAAC;MACtBA,KAAK,CAACG,KAAK,GAAGxB,UAAU,CAACa,WAAW,EAAE;QAAEc,QAAQ,EAAExB;MAAS,CAAC,CAAC;IAC/D,CAAE;IACFa,UAAU,EAAGU,CAAC,IAAK;MACjBV,UAAU,GAAGU,CAAC,CAAC;MACf,IAAI,CAACN,OAAO,EAAE;MACdxB,eAAe,CAACyB,KAAK,CAAC;MACtBA,KAAK,CAACG,KAAK,GAAGxB,UAAU,CAAC,CAAC,EAAE;QAAE2B,QAAQ,EAAExB;MAAS,CAAC,CAAC;IACrD,CAAE;IACFW,KAAK,EAAE,CAACM,OAAO,GAAGE,aAAa,GAAG,IAAI,EAAER,KAAK,CAAE;IAAA,GAC3CG;EAAI,CACT,CAAC;AAEN,CACF,CAAC;AAEDL,cAAc,CAACgB,WAAW,GAAG,gBAAgB","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export { PressableScale } from "./PressableScale.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["PressableScale"],"sourceRoot":"../../../src","sources":["pressable-scale/index.ts"],"mappings":";;AAAA,SAASA,cAAc,QAAQ,qBAAkB","ignoreList":[]}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ import React, { forwardRef } from 'react';
4
+ import { Pressable } from 'react-native';
5
+ import { useInteractionState } from "../hooks/useInteractionState.js";
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ /**
8
+ * A {@link Pressable} that merges `hoverStyle` on top of `style` while hovered.
9
+ * Hover is a web-only affordance (native platforms have no pointer hover), so
10
+ * this behaves like a plain `Pressable` on touch devices.
11
+ */
12
+ export const PressableWithHover = /*#__PURE__*/forwardRef(function PressableWithHover({
13
+ style,
14
+ hoverStyle,
15
+ ...props
16
+ }, ref) {
17
+ const {
18
+ state: hovered,
19
+ onIn: onHoverIn,
20
+ onOut: onHoverOut
21
+ } = useInteractionState();
22
+ return /*#__PURE__*/_jsx(Pressable, {
23
+ ...props,
24
+ ref: ref,
25
+ onHoverIn: onHoverIn,
26
+ onHoverOut: onHoverOut,
27
+ style: hovered ? [style, hoverStyle] : style
28
+ });
29
+ });
30
+ PressableWithHover.displayName = 'PressableWithHover';
31
+ //# sourceMappingURL=PressableWithHover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","forwardRef","Pressable","useInteractionState","jsx","_jsx","PressableWithHover","style","hoverStyle","props","ref","state","hovered","onIn","onHoverIn","onOut","onHoverOut","displayName"],"sourceRoot":"../../../src","sources":["pressable-with-hover/PressableWithHover.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,UAAU,QAAQ,OAAO;AACzC,SACEC,SAAS,QAKJ,cAAc;AAErB,SAASC,mBAAmB,QAAQ,iCAA8B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAYnE;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,kBAAkB,gBAAGL,UAAU,CAC1C,SAASK,kBAAkBA,CAAC;EAAEC,KAAK;EAAEC,UAAU;EAAE,GAAGC;AAAM,CAAC,EAAEC,GAAG,EAAE;EAChE,MAAM;IAAEC,KAAK,EAAEC,OAAO;IAAEC,IAAI,EAAEC,SAAS;IAAEC,KAAK,EAAEC;EAAW,CAAC,GAAGb,mBAAmB,CAAC,CAAC;EAEpF,oBACEE,IAAA,CAACH,SAAS;IAAA,GACJO,KAAK;IACTC,GAAG,EAAEA,GAAI;IACTI,SAAS,EAAEA,SAAU;IACrBE,UAAU,EAAEA,UAAW;IACvBT,KAAK,EAAEK,OAAO,GAAG,CAACL,KAAK,EAAEC,UAAU,CAAC,GAAGD;EAAM,CAC9C,CAAC;AAEN,CACF,CAAC;AAEDD,kBAAkB,CAACW,WAAW,GAAG,oBAAoB","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export { PressableWithHover } from "./PressableWithHover.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["PressableWithHover"],"sourceRoot":"../../../src","sources":["pressable-with-hover/index.ts"],"mappings":";;AAAA,SAASA,kBAAkB,QAAQ,yBAAsB","ignoreList":[]}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Bloom's responsive breakpoint min-widths (px), matching the Tailwind /
5
+ * NativeWind defaults used across the design system.
6
+ *
7
+ * This is the SINGLE SOURCE OF TRUTH for breakpoint values. Anything that
8
+ * branches on viewport width — the `<Dialog>` responsive `placement` resolver,
9
+ * the `useGutters` hook — reads from here rather than hardcoding its own
10
+ * numbers, so a change here propagates everywhere.
11
+ */
12
+ export const BREAKPOINTS = {
13
+ sm: 640,
14
+ md: 768,
15
+ lg: 1024,
16
+ xl: 1280
17
+ };
18
+
19
+ /** A named responsive breakpoint tier. */
20
+ //# sourceMappingURL=breakpoints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["BREAKPOINTS","sm","md","lg","xl"],"sourceRoot":"../../../src","sources":["styles/breakpoints.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMA,WAAW,GAAG;EACzBC,EAAE,EAAE,GAAG;EACPC,EAAE,EAAE,GAAG;EACPC,EAAE,EAAE,IAAI;EACRC,EAAE,EAAE;AACN,CAAU;;AAEV","ignoreList":[]}
@@ -2,6 +2,7 @@
2
2
 
3
3
  export { atoms, flatten } from "./atoms.js";
4
4
  export * as tokens from "./tokens.js";
5
+ export { BREAKPOINTS } from "./breakpoints.js";
5
6
  export { Z_INDEX, zIndex } from "./z-index.js";
6
7
  export { web, native, ios, android, platform, select } from "./platform.js";
7
8
  export { SUPPORTS_NATIVE_DRIVER } from "./native-driver.js";
@@ -1 +1 @@
1
- {"version":3,"names":["atoms","flatten","tokens","Z_INDEX","zIndex","web","native","ios","android","platform","select","SUPPORTS_NATIVE_DRIVER"],"sourceRoot":"../../../src","sources":["styles/index.ts"],"mappings":";;AAAA,SAASA,KAAK,EAAEC,OAAO,QAAQ,YAAS;AAExC,OAAO,KAAKC,MAAM,MAAM,aAAU;AAClC,SAASC,OAAO,EAAEC,MAAM,QAAQ,cAAW;AAC3C,SAASC,GAAG,EAAEC,MAAM,EAAEC,GAAG,EAAEC,OAAO,EAAEC,QAAQ,EAAEC,MAAM,QAAQ,eAAY;AACxE,SAASC,sBAAsB,QAAQ,oBAAiB","ignoreList":[]}
1
+ {"version":3,"names":["atoms","flatten","tokens","BREAKPOINTS","Z_INDEX","zIndex","web","native","ios","android","platform","select","SUPPORTS_NATIVE_DRIVER"],"sourceRoot":"../../../src","sources":["styles/index.ts"],"mappings":";;AAAA,SAASA,KAAK,EAAEC,OAAO,QAAQ,YAAS;AAExC,OAAO,KAAKC,MAAM,MAAM,aAAU;AAClC,SAASC,WAAW,QAAQ,kBAAe;AAE3C,SAASC,OAAO,EAAEC,MAAM,QAAQ,cAAW;AAC3C,SAASC,GAAG,EAAEC,MAAM,EAAEC,GAAG,EAAEC,OAAO,EAAEC,QAAQ,EAAEC,MAAM,QAAQ,eAAY;AACxE,SAASC,sBAAsB,QAAQ,oBAAiB","ignoreList":[]}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+
3
+ import React from 'react';
4
+ import { Platform, StyleSheet, View } from 'react-native';
5
+ import { useTheme } from "../theme/index.js";
6
+
7
+ /**
8
+ * True on touch-capable web browsers (coarse pointer). The CSS `group-hover`
9
+ * wash only makes sense with a hovering pointer, so it is suppressed on touch
10
+ * web to match native (which has no hover at all).
11
+ */
12
+ import { jsx as _jsx } from "react/jsx-runtime";
13
+ const IS_WEB_TOUCH_DEVICE = Platform.OS === 'web' && typeof window !== 'undefined' && typeof window.matchMedia === 'function' && window.matchMedia('(pointer: coarse)').matches;
14
+ /**
15
+ * An absolutely-positioned, non-interactive contrast wash. Two modes:
16
+ *
17
+ * - **CSS `group-hover`** (`active` omitted): the wash fades in on hover purely
18
+ * through NativeWind classes — no React state. The parent must carry
19
+ * `className="group"`. Web-only (native and touch-web have no hover).
20
+ * - **JS `active`**: the wash opacity follows the boolean, so several elements
21
+ * can light up together (e.g. every post of a thread). Web always; native
22
+ * only when `native` is set.
23
+ *
24
+ * The wash color comes from the theme's `contrast50` token so it tracks the
25
+ * active preset and light/dark mode. The web cross-fade is a NativeWind
26
+ * `transition-opacity` class — no manual `willChange` / web-style casts.
27
+ */
28
+ export function SubtleHover({
29
+ active,
30
+ style,
31
+ native = false
32
+ }) {
33
+ const theme = useTheme();
34
+ const isWeb = Platform.OS === 'web';
35
+
36
+ // Full literal class strings (never concatenated fragments) so NativeWind's
37
+ // compiler statically extracts every variant.
38
+ if (active === undefined) {
39
+ // CSS group-hover: a web pointer affordance. Native has no hover, and
40
+ // neither does touch web — render nothing there.
41
+ if (!isWeb || IS_WEB_TOUCH_DEVICE) return null;
42
+ return /*#__PURE__*/_jsx(View, {
43
+ className: 'opacity-0 group-hover:opacity-50 dark:group-hover:opacity-40 transition-opacity duration-150',
44
+ style: [styles.overlay, {
45
+ backgroundColor: theme.colors.contrast50
46
+ }, style]
47
+ });
48
+ }
49
+
50
+ // JS-driven coordinated mode: web always; native only when opted in.
51
+ if (!isWeb && !native) return null;
52
+ return /*#__PURE__*/_jsx(View, {
53
+ className: 'transition-opacity duration-150',
54
+ style: [styles.overlay, {
55
+ backgroundColor: theme.colors.contrast50,
56
+ opacity: active ? theme.isDark ? 0.4 : 0.5 : 0
57
+ }, style]
58
+ });
59
+ }
60
+ SubtleHover.displayName = 'SubtleHover';
61
+ const styles = StyleSheet.create({
62
+ overlay: {
63
+ position: 'absolute',
64
+ top: 0,
65
+ left: 0,
66
+ right: 0,
67
+ bottom: 0,
68
+ pointerEvents: 'none'
69
+ }
70
+ });
71
+ //# sourceMappingURL=SubtleHover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Platform","StyleSheet","View","useTheme","jsx","_jsx","IS_WEB_TOUCH_DEVICE","OS","window","matchMedia","matches","SubtleHover","active","style","native","theme","isWeb","undefined","className","styles","overlay","backgroundColor","colors","contrast50","opacity","isDark","displayName","create","position","top","left","right","bottom","pointerEvents"],"sourceRoot":"../../../src","sources":["subtle-hover/SubtleHover.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,QAAQ,EAAEC,UAAU,EAAEC,IAAI,QAAwC,cAAc;AAEzF,SAASC,QAAQ,QAAQ,mBAAU;;AAEnC;AACA;AACA;AACA;AACA;AAJA,SAAAC,GAAA,IAAAC,IAAA;AAKA,MAAMC,mBAAmB,GACvBN,QAAQ,CAACO,EAAE,KAAK,KAAK,IACrB,OAAOC,MAAM,KAAK,WAAW,IAC7B,OAAOA,MAAM,CAACC,UAAU,KAAK,UAAU,IACvCD,MAAM,CAACC,UAAU,CAAC,mBAAmB,CAAC,CAACC,OAAO;AAoBhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,WAAWA,CAAC;EAAEC,MAAM;EAAEC,KAAK;EAAEC,MAAM,GAAG;AAAwB,CAAC,EAAE;EAC/E,MAAMC,KAAK,GAAGZ,QAAQ,CAAC,CAAC;EACxB,MAAMa,KAAK,GAAGhB,QAAQ,CAACO,EAAE,KAAK,KAAK;;EAEnC;EACA;EACA,IAAIK,MAAM,KAAKK,SAAS,EAAE;IACxB;IACA;IACA,IAAI,CAACD,KAAK,IAAIV,mBAAmB,EAAE,OAAO,IAAI;IAC9C,oBACED,IAAA,CAACH,IAAI;MAEDgB,SAAS,EACP,8FAA8F;MAElGL,KAAK,EAAE,CAACM,MAAM,CAACC,OAAO,EAAE;QAAEC,eAAe,EAAEN,KAAK,CAACO,MAAM,CAACC;MAAW,CAAC,EAAEV,KAAK;IAAE,CAC9E,CAAC;EAEN;;EAEA;EACA,IAAI,CAACG,KAAK,IAAI,CAACF,MAAM,EAAE,OAAO,IAAI;EAClC,oBACET,IAAA,CAACH,IAAI;IACIgB,SAAS,EAAE,iCAAiC;IACnDL,KAAK,EAAE,CACLM,MAAM,CAACC,OAAO,EACd;MACEC,eAAe,EAAEN,KAAK,CAACO,MAAM,CAACC,UAAU;MACxCC,OAAO,EAAEZ,MAAM,GAAIG,KAAK,CAACU,MAAM,GAAG,GAAG,GAAG,GAAG,GAAI;IACjD,CAAC,EACDZ,KAAK;EACL,CACH,CAAC;AAEN;AAEAF,WAAW,CAACe,WAAW,GAAG,aAAa;AAEvC,MAAMP,MAAM,GAAGlB,UAAU,CAAC0B,MAAM,CAAC;EAC/BP,OAAO,EAAE;IACPQ,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE,CAAC;IACTC,aAAa,EAAE;EACjB;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export { SubtleHover } from "./SubtleHover.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["SubtleHover"],"sourceRoot":"../../../src","sources":["subtle-hover/index.ts"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,kBAAe","ignoreList":[]}
@@ -4,6 +4,7 @@ import { Platform } from 'react-native';
4
4
  import { APP_COLOR_PRESETS } from "./color-presets.js";
5
5
  import { getAdaptiveColors } from "./adaptive-colors.js";
6
6
  import { getResolvedTokens, hslToSrgb } from "./token-registry.js";
7
+ import { THEME_GRADIENTS } from "./gradients.js";
7
8
  /**
8
9
  * Status colors used across the design system. Independent of the accent
9
10
  * preset so semantic intent stays stable across themes.
@@ -102,6 +103,7 @@ export function buildTheme(preset, resolved, isAdaptive = false) {
102
103
  return {
103
104
  mode: resolved,
104
105
  colors,
106
+ gradients: THEME_GRADIENTS,
105
107
  isDark: resolved === 'dark',
106
108
  isLight: resolved === 'light'
107
109
  };
@@ -1 +1 @@
1
- {"version":3,"names":["Platform","APP_COLOR_PRESETS","getAdaptiveColors","getResolvedTokens","hslToSrgb","STATUS_COLORS","success","error","warning","info","extractHue","triple","first","split","replace","hue","parseInt","Number","isFinite","buildColorsFromPreset","preset","resolved","t","isDark","g","k","hslRgb","h","s","l","presetTokens","dark","light","pHue","dHue","background","backgroundSecondary","backgroundTertiary","text","textSecondary","textTertiary","border","borderLight","primary","primaryForeground","primaryLight","primaryDark","secondary","tint","icon","iconActive","primarySubtle","primarySubtleForeground","negative","negativeForeground","negativeSubtle","negativeSubtleForeground","contrast50","card","shadow","overlay","buildTheme","isAdaptive","adaptive","OS","undefined","colors","mode","isLight"],"sourceRoot":"../../../src","sources":["theme/build-theme.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Platform","APP_COLOR_PRESETS","getAdaptiveColors","getResolvedTokens","hslToSrgb","THEME_GRADIENTS","STATUS_COLORS","success","error","warning","info","extractHue","triple","first","split","replace","hue","parseInt","Number","isFinite","buildColorsFromPreset","preset","resolved","t","isDark","g","k","hslRgb","h","s","l","presetTokens","dark","light","pHue","dHue","background","backgroundSecondary","backgroundTertiary","text","textSecondary","textTertiary","border","borderLight","primary","primaryForeground","primaryLight","primaryDark","secondary","tint","icon","iconActive","primarySubtle","primarySubtleForeground","negative","negativeForeground","negativeSubtle","negativeSubtleForeground","contrast50","card","shadow","overlay","buildTheme","isAdaptive","adaptive","OS","undefined","colors","mode","gradients","isLight"],"sourceRoot":"../../../src","sources":["theme/build-theme.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Brand-neutral named linear-gradient palettes shared across the design system —
5
+ * decorative avatar rings, hero surfaces, empty-state art, and similar accents.
6
+ *
7
+ * Each entry lists ordered `[offset, color]` stops where `offset` is a `0–1`
8
+ * position along the gradient axis. These are intentionally theme-agnostic (the
9
+ * same values are exposed in light and dark mode) and not tied to any single
10
+ * app's brand, so components can reference them by a stable, descriptive name.
11
+ */
12
+ export const THEME_GRADIENTS = {
13
+ sky: {
14
+ values: [[0, '#0A7AFF'], [1, '#59B9FF']]
15
+ },
16
+ midnight: {
17
+ values: [[0, '#022C5E'], [1, '#4079BC']]
18
+ },
19
+ sunrise: {
20
+ values: [[0, '#4E90AE'], [0.4, '#AEA3AB'], [0.8, '#E6A98F'], [1, '#F3A84C']]
21
+ },
22
+ sunset: {
23
+ values: [[0, '#6772AF'], [0.6, '#B88BB6'], [1, '#FFA6AC']]
24
+ },
25
+ summer: {
26
+ values: [[0, '#FF6A56'], [0.3, '#FF9156'], [1, '#FFDD87']]
27
+ },
28
+ nordic: {
29
+ values: [[0, '#083367'], [1, '#9EE8C1']]
30
+ },
31
+ bonfire: {
32
+ values: [[0, '#203E4E'], [0.4, '#755B62'], [0.8, '#CD7765'], [1, '#EF956E']]
33
+ }
34
+ };
35
+ //# sourceMappingURL=gradients.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["THEME_GRADIENTS","sky","values","midnight","sunrise","sunset","summer","nordic","bonfire"],"sourceRoot":"../../../src","sources":["theme/gradients.ts"],"mappings":";;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMA,eAA+B,GAAG;EAC7CC,GAAG,EAAE;IACHC,MAAM,EAAE,CACN,CAAC,CAAC,EAAE,SAAS,CAAC,EACd,CAAC,CAAC,EAAE,SAAS,CAAC;EAElB,CAAC;EACDC,QAAQ,EAAE;IACRD,MAAM,EAAE,CACN,CAAC,CAAC,EAAE,SAAS,CAAC,EACd,CAAC,CAAC,EAAE,SAAS,CAAC;EAElB,CAAC;EACDE,OAAO,EAAE;IACPF,MAAM,EAAE,CACN,CAAC,CAAC,EAAE,SAAS,CAAC,EACd,CAAC,GAAG,EAAE,SAAS,CAAC,EAChB,CAAC,GAAG,EAAE,SAAS,CAAC,EAChB,CAAC,CAAC,EAAE,SAAS,CAAC;EAElB,CAAC;EACDG,MAAM,EAAE;IACNH,MAAM,EAAE,CACN,CAAC,CAAC,EAAE,SAAS,CAAC,EACd,CAAC,GAAG,EAAE,SAAS,CAAC,EAChB,CAAC,CAAC,EAAE,SAAS,CAAC;EAElB,CAAC;EACDI,MAAM,EAAE;IACNJ,MAAM,EAAE,CACN,CAAC,CAAC,EAAE,SAAS,CAAC,EACd,CAAC,GAAG,EAAE,SAAS,CAAC,EAChB,CAAC,CAAC,EAAE,SAAS,CAAC;EAElB,CAAC;EACDK,MAAM,EAAE;IACNL,MAAM,EAAE,CACN,CAAC,CAAC,EAAE,SAAS,CAAC,EACd,CAAC,CAAC,EAAE,SAAS,CAAC;EAElB,CAAC;EACDM,OAAO,EAAE;IACPN,MAAM,EAAE,CACN,CAAC,CAAC,EAAE,SAAS,CAAC,EACd,CAAC,GAAG,EAAE,SAAS,CAAC,EAChB,CAAC,GAAG,EAAE,SAAS,CAAC,EAChB,CAAC,CAAC,EAAE,SAAS,CAAC;EAElB;AACF,CAAC","ignoreList":[]}
@@ -3,6 +3,7 @@
3
3
  export { BloomThemeProvider } from "./BloomThemeProvider.js";
4
4
  export { BloomColorScope, useColorScopeStyle } from './color-scope';
5
5
  export { buildTheme, STATUS_COLORS } from "./build-theme.js";
6
+ export { THEME_GRADIENTS } from "./gradients.js";
6
7
  export { useTheme, useThemeColor, useBloomTheme } from "./use-theme.js";
7
8
  export { useNavigationTheme } from "./use-navigation-theme.js";
8
9
  export { APP_COLOR_NAMES, PREMIUM_COLOR_NAMES, APP_COLOR_PRESETS, HEX_TO_APP_COLOR, hexToAppColorName } from "./color-presets.js";
@@ -1 +1 @@
1
- {"version":3,"names":["BloomThemeProvider","BloomColorScope","useColorScopeStyle","buildTheme","STATUS_COLORS","useTheme","useThemeColor","useBloomTheme","useNavigationTheme","APP_COLOR_NAMES","PREMIUM_COLOR_NAMES","APP_COLOR_PRESETS","HEX_TO_APP_COLOR","hexToAppColorName","getPresetVars","applyPresetVarsToDocument","applyDarkClass","setColorSchemeSafe","initCssInteropDarkMode","webLocalStorage"],"sourceRoot":"../../../src","sources":["theme/index.ts"],"mappings":";;AAAA,SAASA,kBAAkB,QAAQ,yBAAsB;AAKzD,SAASC,eAAe,EAAEC,kBAAkB,QAAQ,eAAe;AAEnE,SAASC,UAAU,EAAEC,aAAa,QAAQ,kBAAe;AACzD,SAASC,QAAQ,EAAEC,aAAa,EAAEC,aAAa,QAAQ,gBAAa;AACpE,SAASC,kBAAkB,QAAQ,2BAAwB;AAI3D,SACEC,eAAe,EACfC,mBAAmB,EACnBC,iBAAiB,EACjBC,gBAAgB,EAChBC,iBAAiB,QACZ,oBAAiB;AACxB,SAASC,aAAa,EAAEC,yBAAyB,QAAQ,kBAAe;AACxE,SAASC,cAAc,QAAQ,uBAAoB;AACnD,SAASC,kBAAkB,QAAQ,4BAAyB;AAC5D,SAASC,sBAAsB,QAAQ,uBAAoB;AAE3D,SAASC,eAAe,QAAQ,kBAAe","ignoreList":[]}
1
+ {"version":3,"names":["BloomThemeProvider","BloomColorScope","useColorScopeStyle","buildTheme","STATUS_COLORS","THEME_GRADIENTS","useTheme","useThemeColor","useBloomTheme","useNavigationTheme","APP_COLOR_NAMES","PREMIUM_COLOR_NAMES","APP_COLOR_PRESETS","HEX_TO_APP_COLOR","hexToAppColorName","getPresetVars","applyPresetVarsToDocument","applyDarkClass","setColorSchemeSafe","initCssInteropDarkMode","webLocalStorage"],"sourceRoot":"../../../src","sources":["theme/index.ts"],"mappings":";;AAAA,SAASA,kBAAkB,QAAQ,yBAAsB;AAKzD,SAASC,eAAe,EAAEC,kBAAkB,QAAQ,eAAe;AAEnE,SAASC,UAAU,EAAEC,aAAa,QAAQ,kBAAe;AACzD,SAASC,eAAe,QAAQ,gBAAa;AAC7C,SAASC,QAAQ,EAAEC,aAAa,EAAEC,aAAa,QAAQ,gBAAa;AACpE,SAASC,kBAAkB,QAAQ,2BAAwB;AAI3D,SACEC,eAAe,EACfC,mBAAmB,EACnBC,iBAAiB,EACjBC,gBAAgB,EAChBC,iBAAiB,QACZ,oBAAiB;AACxB,SAASC,aAAa,EAAEC,yBAAyB,QAAQ,kBAAe;AACxE,SAASC,cAAc,QAAQ,uBAAoB;AACnD,SAASC,kBAAkB,QAAQ,4BAAyB;AAC5D,SAASC,sBAAsB,QAAQ,uBAAoB;AAE3D,SAASC,eAAe,QAAQ,kBAAe","ignoreList":[]}
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ export interface AnimatedCheckRef {
3
+ /** Replays the draw-on animation from the start. */
4
+ play: () => void;
5
+ }
6
+ export interface AnimatedCheckProps {
7
+ /** Width and height in px. Defaults to `24`. */
8
+ size?: number;
9
+ /** Stroke color of the ring and check. Defaults to the theme success color. */
10
+ color?: string;
11
+ }
12
+ /**
13
+ * A draw-on checkmark: a ring strokes on, then the check strokes in. Expose a
14
+ * ref and call `ref.current?.play()` to (re)play — e.g. on a successful submit.
15
+ * Ported from Bluesky's `AnimatedCheck`.
16
+ */
17
+ export declare const AnimatedCheck: React.ForwardRefExoticComponent<AnimatedCheckProps & React.RefAttributes<AnimatedCheckRef>>;
18
+ //# sourceMappingURL=AnimatedCheck.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnimatedCheck.d.ts","sourceRoot":"","sources":["../../../../src/animated-check/AnimatedCheck.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgE,MAAM,OAAO,CAAC;AAgCrF,MAAM,WAAW,gBAAgB;IAC/B,oDAAoD;IACpD,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,gDAAgD;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAyGD;;;;GAIG;AACH,eAAO,MAAM,aAAa,6FAWzB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { AnimatedCheck } from './AnimatedCheck';
2
+ export type { AnimatedCheckProps, AnimatedCheckRef } from './AnimatedCheck';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/animated-check/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -24,14 +24,15 @@ export type ResponsiveDialogPlacement = DialogPlacement | {
24
24
  xl?: DialogPlacement;
25
25
  };
26
26
  /**
27
- * Tailwind-default breakpoints (px). A responsive `placement` map resolves to
28
- * the value for the largest key whose min-width is `<=` the current viewport
29
- * width, falling back to `base`.
27
+ * Tailwind-default breakpoints (px), re-exported from the canonical
28
+ * {@link BREAKPOINTS} source. A responsive `placement` map resolves to the value
29
+ * for the largest key whose min-width is `<=` the current viewport width,
30
+ * falling back to `base`.
30
31
  */
31
- export declare const BREAKPOINT_SM = 640;
32
- export declare const BREAKPOINT_MD = 768;
33
- export declare const BREAKPOINT_LG = 1024;
34
- export declare const BREAKPOINT_XL = 1280;
32
+ export declare const BREAKPOINT_SM: 640;
33
+ export declare const BREAKPOINT_MD: 768;
34
+ export declare const BREAKPOINT_LG: 1024;
35
+ export declare const BREAKPOINT_XL: 1280;
35
36
  /** Default side-sheet width (px) on wide screens. */
36
37
  export declare const DEFAULT_SIDE_WIDTH = 460;
37
38
  /** Default centered-card max width (px). Matches the legacy `maxWidth: 480`. */
@@ -1 +1 @@
1
- {"version":3,"file":"placement.d.ts","sourceRoot":"","sources":["../../../../src/dialog/placement.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAErE;;;;;;;;;GASG;AACH,MAAM,MAAM,yBAAyB,GACjC,eAAe,GACf;IACE,IAAI,EAAE,eAAe,CAAC;IACtB,EAAE,CAAC,EAAE,eAAe,CAAC;IACrB,EAAE,CAAC,EAAE,eAAe,CAAC;IACrB,EAAE,CAAC,EAAE,eAAe,CAAC;IACrB,EAAE,CAAC,EAAE,eAAe,CAAC;CACtB,CAAC;AAEN;;;;GAIG;AACH,eAAO,MAAM,aAAa,MAAM,CAAC;AACjC,eAAO,MAAM,aAAa,MAAM,CAAC;AACjC,eAAO,MAAM,aAAa,OAAO,CAAC;AAClC,eAAO,MAAM,aAAa,OAAO,CAAC;AAUlC,qDAAqD;AACrD,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC,gFAAgF;AAChF,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAE5C,4EAA4E;AAC5E,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAE5C,6EAA6E;AAC7E,eAAO,MAAM,YAAY,KAAK,CAAC;AAE/B;;;;;;;;GAQG;AACH,eAAO,MAAM,8BAA8B,KAAK,CAAC;AAEjD,yEAAyE;AACzE,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC,0EAA0E;AAC1E,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAE5C,oEAAoE;AACpE,eAAO,MAAM,QAAQ,mCAAmC,CAAC;AAEzD,qEAAqE;AACrE,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAE1C,+EAA+E;AAC/E,eAAO,MAAM,4BAA4B,gCAAgC,CAAC;AAE1E,sDAAsD;AACtD,eAAO,MAAM,YAAY,KAAK,CAAC;AAC/B,eAAO,MAAM,aAAa,IAAI,CAAC;AAC/B,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B;;;GAGG;AACH,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,yBAAyB,GAAG,SAAS,GAC/C,eAAe,CAcjB"}
1
+ {"version":3,"file":"placement.d.ts","sourceRoot":"","sources":["../../../../src/dialog/placement.ts"],"names":[],"mappings":"AAKA;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAErE;;;;;;;;;GASG;AACH,MAAM,MAAM,yBAAyB,GACjC,eAAe,GACf;IACE,IAAI,EAAE,eAAe,CAAC;IACtB,EAAE,CAAC,EAAE,eAAe,CAAC;IACrB,EAAE,CAAC,EAAE,eAAe,CAAC;IACrB,EAAE,CAAC,EAAE,eAAe,CAAC;IACrB,EAAE,CAAC,EAAE,eAAe,CAAC;CACtB,CAAC;AAEN;;;;;GAKG;AACH,eAAO,MAAM,aAAa,KAAiB,CAAC;AAC5C,eAAO,MAAM,aAAa,KAAiB,CAAC;AAC5C,eAAO,MAAM,aAAa,MAAiB,CAAC;AAC5C,eAAO,MAAM,aAAa,MAAiB,CAAC;AAU5C,qDAAqD;AACrD,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC,gFAAgF;AAChF,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAE5C,4EAA4E;AAC5E,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAE5C,6EAA6E;AAC7E,eAAO,MAAM,YAAY,KAAK,CAAC;AAE/B;;;;;;;;GAQG;AACH,eAAO,MAAM,8BAA8B,KAAK,CAAC;AAEjD,yEAAyE;AACzE,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC,0EAA0E;AAC1E,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAE5C,oEAAoE;AACpE,eAAO,MAAM,QAAQ,mCAAmC,CAAC;AAEzD,qEAAqE;AACrE,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAE1C,+EAA+E;AAC/E,eAAO,MAAM,4BAA4B,gCAAgC,CAAC;AAE1E,sDAAsD;AACtD,eAAO,MAAM,YAAY,KAAK,CAAC;AAC/B,eAAO,MAAM,aAAa,IAAI,CAAC;AAC/B,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B;;;GAGG;AACH,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,yBAAyB,GAAG,SAAS,GAC/C,eAAe,CAcjB"}
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
- import { type ViewStyle } from 'react-native';
2
+ import { type StyleProp, type ViewStyle } from 'react-native';
3
3
  export declare const Fill: React.MemoExoticComponent<({ children, style, }: {
4
4
  children?: React.ReactNode;
5
- style?: ViewStyle | ViewStyle[];
5
+ style?: StyleProp<ViewStyle>;
6
6
  }) => import("react/jsx-runtime").JSX.Element>;
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/fill/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAC;AACpC,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAgBhE,eAAO,MAAM,IAAI,mDAXd;IACD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,SAAS,GAAG,SAAS,EAAE,CAAC;CACjC,6CAQsC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/fill/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAC;AACpC,OAAO,EAAoB,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAgBhF,eAAO,MAAM,IAAI,mDAXd;IACD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,6CAQsC,CAAC"}
@@ -3,4 +3,8 @@ export { useDelayedLoading } from './useDelayedLoading';
3
3
  export { useThrottledValue } from './useThrottledValue';
4
4
  export { usePressAnimation } from './usePressAnimation';
5
5
  export { mergeRefs } from './mergeRefs';
6
+ export { useHaptics, BloomHapticsProvider } from './useHaptics';
7
+ export type { HapticStrength, BloomHapticsProviderProps } from './useHaptics';
8
+ export { useGutters } from './useGutters';
9
+ export type { Gutter, Gutters } from './useGutters';
6
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAChE,YAAY,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}