@oxyhq/bloom 0.26.1 → 0.28.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 (300) 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/avatar/Avatar.js +67 -96
  6. package/lib/commonjs/avatar/Avatar.js.map +1 -1
  7. package/lib/commonjs/avatar/AvatarRing.js +183 -0
  8. package/lib/commonjs/avatar/AvatarRing.js.map +1 -0
  9. package/lib/commonjs/avatar/index.js.map +1 -1
  10. package/lib/commonjs/avatar/squircle-path.js +14 -0
  11. package/lib/commonjs/avatar/squircle-path.js.map +1 -0
  12. package/lib/commonjs/avatar/svg-module.js +15 -0
  13. package/lib/commonjs/avatar/svg-module.js.map +1 -0
  14. package/lib/commonjs/dialog/placement.js +9 -7
  15. package/lib/commonjs/dialog/placement.js.map +1 -1
  16. package/lib/commonjs/fill/index.js.map +1 -1
  17. package/lib/commonjs/hooks/index.js +20 -0
  18. package/lib/commonjs/hooks/index.js.map +1 -1
  19. package/lib/commonjs/hooks/useGutters.js +106 -0
  20. package/lib/commonjs/hooks/useGutters.js.map +1 -0
  21. package/lib/commonjs/hooks/useHaptics.js +69 -0
  22. package/lib/commonjs/hooks/useHaptics.js.map +1 -0
  23. package/lib/commonjs/hooks/useInteractionState.js +8 -2
  24. package/lib/commonjs/hooks/useInteractionState.js.map +1 -1
  25. package/lib/commonjs/index.js +155 -63
  26. package/lib/commonjs/index.js.map +1 -1
  27. package/lib/commonjs/index.web.js +155 -63
  28. package/lib/commonjs/index.web.js.map +1 -1
  29. package/lib/commonjs/media-inset-border/MediaInsetBorder.js +50 -0
  30. package/lib/commonjs/media-inset-border/MediaInsetBorder.js.map +1 -0
  31. package/lib/commonjs/media-inset-border/index.js +13 -0
  32. package/lib/commonjs/media-inset-border/index.js.map +1 -0
  33. package/lib/commonjs/motion/ScreenTransition.js +46 -0
  34. package/lib/commonjs/motion/ScreenTransition.js.map +1 -0
  35. package/lib/commonjs/motion/index.js +32 -0
  36. package/lib/commonjs/motion/index.js.map +1 -0
  37. package/lib/commonjs/motion/motion.js +93 -0
  38. package/lib/commonjs/motion/motion.js.map +1 -0
  39. package/lib/commonjs/pressable-scale/PressableScale.js +75 -0
  40. package/lib/commonjs/pressable-scale/PressableScale.js.map +1 -0
  41. package/lib/commonjs/pressable-scale/index.js +13 -0
  42. package/lib/commonjs/pressable-scale/index.js.map +1 -0
  43. package/lib/commonjs/pressable-with-hover/PressableWithHover.js +36 -0
  44. package/lib/commonjs/pressable-with-hover/PressableWithHover.js.map +1 -0
  45. package/lib/commonjs/pressable-with-hover/index.js +13 -0
  46. package/lib/commonjs/pressable-with-hover/index.js.map +1 -0
  47. package/lib/commonjs/styles/breakpoints.js +24 -0
  48. package/lib/commonjs/styles/breakpoints.js.map +1 -0
  49. package/lib/commonjs/styles/index.js +7 -0
  50. package/lib/commonjs/styles/index.js.map +1 -1
  51. package/lib/commonjs/subtle-hover/SubtleHover.js +69 -0
  52. package/lib/commonjs/subtle-hover/SubtleHover.js.map +1 -0
  53. package/lib/commonjs/subtle-hover/index.js +13 -0
  54. package/lib/commonjs/subtle-hover/index.js.map +1 -0
  55. package/lib/commonjs/theme/build-theme.js +2 -0
  56. package/lib/commonjs/theme/build-theme.js.map +1 -1
  57. package/lib/commonjs/theme/gradients.js +39 -0
  58. package/lib/commonjs/theme/gradients.js.map +1 -0
  59. package/lib/commonjs/theme/index.js +7 -0
  60. package/lib/commonjs/theme/index.js.map +1 -1
  61. package/lib/module/animated-check/AnimatedCheck.js +157 -0
  62. package/lib/module/animated-check/AnimatedCheck.js.map +1 -0
  63. package/lib/module/animated-check/index.js +4 -0
  64. package/lib/module/animated-check/index.js.map +1 -0
  65. package/lib/module/avatar/Avatar.js +66 -96
  66. package/lib/module/avatar/Avatar.js.map +1 -1
  67. package/lib/module/avatar/AvatarRing.js +177 -0
  68. package/lib/module/avatar/AvatarRing.js.map +1 -0
  69. package/lib/module/avatar/index.js.map +1 -1
  70. package/lib/module/avatar/squircle-path.js +10 -0
  71. package/lib/module/avatar/squircle-path.js.map +1 -0
  72. package/lib/module/avatar/svg-module.js +11 -0
  73. package/lib/module/avatar/svg-module.js.map +1 -0
  74. package/lib/module/dialog/placement.js +9 -7
  75. package/lib/module/dialog/placement.js.map +1 -1
  76. package/lib/module/fill/index.js.map +1 -1
  77. package/lib/module/hooks/index.js +2 -0
  78. package/lib/module/hooks/index.js.map +1 -1
  79. package/lib/module/hooks/useGutters.js +103 -0
  80. package/lib/module/hooks/useGutters.js.map +1 -0
  81. package/lib/module/hooks/useHaptics.js +65 -0
  82. package/lib/module/hooks/useHaptics.js.map +1 -0
  83. package/lib/module/hooks/useInteractionState.js +10 -3
  84. package/lib/module/hooks/useInteractionState.js.map +1 -1
  85. package/lib/module/index.js +10 -1
  86. package/lib/module/index.js.map +1 -1
  87. package/lib/module/index.web.js +10 -1
  88. package/lib/module/index.web.js.map +1 -1
  89. package/lib/module/media-inset-border/MediaInsetBorder.js +47 -0
  90. package/lib/module/media-inset-border/MediaInsetBorder.js.map +1 -0
  91. package/lib/module/media-inset-border/index.js +4 -0
  92. package/lib/module/media-inset-border/index.js.map +1 -0
  93. package/lib/module/motion/ScreenTransition.js +40 -0
  94. package/lib/module/motion/ScreenTransition.js.map +1 -0
  95. package/lib/module/motion/index.js +5 -0
  96. package/lib/module/motion/index.js.map +1 -0
  97. package/lib/module/motion/motion.js +87 -0
  98. package/lib/module/motion/motion.js.map +1 -0
  99. package/lib/module/pressable-scale/PressableScale.js +72 -0
  100. package/lib/module/pressable-scale/PressableScale.js.map +1 -0
  101. package/lib/module/pressable-scale/index.js +4 -0
  102. package/lib/module/pressable-scale/index.js.map +1 -0
  103. package/lib/module/pressable-with-hover/PressableWithHover.js +31 -0
  104. package/lib/module/pressable-with-hover/PressableWithHover.js.map +1 -0
  105. package/lib/module/pressable-with-hover/index.js +4 -0
  106. package/lib/module/pressable-with-hover/index.js.map +1 -0
  107. package/lib/module/styles/breakpoints.js +20 -0
  108. package/lib/module/styles/breakpoints.js.map +1 -0
  109. package/lib/module/styles/index.js +1 -0
  110. package/lib/module/styles/index.js.map +1 -1
  111. package/lib/module/subtle-hover/SubtleHover.js +66 -0
  112. package/lib/module/subtle-hover/SubtleHover.js.map +1 -0
  113. package/lib/module/subtle-hover/index.js +4 -0
  114. package/lib/module/subtle-hover/index.js.map +1 -0
  115. package/lib/module/theme/build-theme.js +2 -0
  116. package/lib/module/theme/build-theme.js.map +1 -1
  117. package/lib/module/theme/gradients.js +35 -0
  118. package/lib/module/theme/gradients.js.map +1 -0
  119. package/lib/module/theme/index.js +1 -0
  120. package/lib/module/theme/index.js.map +1 -1
  121. package/lib/typescript/commonjs/animated-check/AnimatedCheck.d.ts +18 -0
  122. package/lib/typescript/commonjs/animated-check/AnimatedCheck.d.ts.map +1 -0
  123. package/lib/typescript/commonjs/animated-check/index.d.ts +3 -0
  124. package/lib/typescript/commonjs/animated-check/index.d.ts.map +1 -0
  125. package/lib/typescript/commonjs/avatar/Avatar.d.ts.map +1 -1
  126. package/lib/typescript/commonjs/avatar/AvatarRing.d.ts +27 -0
  127. package/lib/typescript/commonjs/avatar/AvatarRing.d.ts.map +1 -0
  128. package/lib/typescript/commonjs/avatar/index.d.ts +1 -1
  129. package/lib/typescript/commonjs/avatar/index.d.ts.map +1 -1
  130. package/lib/typescript/commonjs/avatar/squircle-path.d.ts +8 -0
  131. package/lib/typescript/commonjs/avatar/squircle-path.d.ts.map +1 -0
  132. package/lib/typescript/commonjs/avatar/svg-module.d.ts +8 -0
  133. package/lib/typescript/commonjs/avatar/svg-module.d.ts.map +1 -0
  134. package/lib/typescript/commonjs/avatar/types.d.ts +30 -0
  135. package/lib/typescript/commonjs/avatar/types.d.ts.map +1 -1
  136. package/lib/typescript/commonjs/dialog/placement.d.ts +8 -7
  137. package/lib/typescript/commonjs/dialog/placement.d.ts.map +1 -1
  138. package/lib/typescript/commonjs/fill/index.d.ts +2 -2
  139. package/lib/typescript/commonjs/fill/index.d.ts.map +1 -1
  140. package/lib/typescript/commonjs/hooks/index.d.ts +4 -0
  141. package/lib/typescript/commonjs/hooks/index.d.ts.map +1 -1
  142. package/lib/typescript/commonjs/hooks/useGutters.d.ts +32 -0
  143. package/lib/typescript/commonjs/hooks/useGutters.d.ts.map +1 -0
  144. package/lib/typescript/commonjs/hooks/useHaptics.d.ts +28 -0
  145. package/lib/typescript/commonjs/hooks/useHaptics.d.ts.map +1 -0
  146. package/lib/typescript/commonjs/hooks/useInteractionState.d.ts +6 -0
  147. package/lib/typescript/commonjs/hooks/useInteractionState.d.ts.map +1 -1
  148. package/lib/typescript/commonjs/index.d.ts +16 -0
  149. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  150. package/lib/typescript/commonjs/index.web.d.ts +16 -0
  151. package/lib/typescript/commonjs/index.web.d.ts.map +1 -1
  152. package/lib/typescript/commonjs/media-inset-border/MediaInsetBorder.d.ts +26 -0
  153. package/lib/typescript/commonjs/media-inset-border/MediaInsetBorder.d.ts.map +1 -0
  154. package/lib/typescript/commonjs/media-inset-border/index.d.ts +3 -0
  155. package/lib/typescript/commonjs/media-inset-border/index.d.ts.map +1 -0
  156. package/lib/typescript/commonjs/motion/ScreenTransition.d.ts +33 -0
  157. package/lib/typescript/commonjs/motion/ScreenTransition.d.ts.map +1 -0
  158. package/lib/typescript/commonjs/motion/index.d.ts +4 -0
  159. package/lib/typescript/commonjs/motion/index.d.ts.map +1 -0
  160. package/lib/typescript/commonjs/motion/motion.d.ts +24 -0
  161. package/lib/typescript/commonjs/motion/motion.d.ts.map +1 -0
  162. package/lib/typescript/commonjs/pressable-scale/PressableScale.d.ts +21 -0
  163. package/lib/typescript/commonjs/pressable-scale/PressableScale.d.ts.map +1 -0
  164. package/lib/typescript/commonjs/pressable-scale/index.d.ts +3 -0
  165. package/lib/typescript/commonjs/pressable-scale/index.d.ts.map +1 -0
  166. package/lib/typescript/commonjs/pressable-with-hover/PressableWithHover.d.ts +18 -0
  167. package/lib/typescript/commonjs/pressable-with-hover/PressableWithHover.d.ts.map +1 -0
  168. package/lib/typescript/commonjs/pressable-with-hover/index.d.ts +3 -0
  169. package/lib/typescript/commonjs/pressable-with-hover/index.d.ts.map +1 -0
  170. package/lib/typescript/commonjs/styles/breakpoints.d.ts +18 -0
  171. package/lib/typescript/commonjs/styles/breakpoints.d.ts.map +1 -0
  172. package/lib/typescript/commonjs/styles/index.d.ts +2 -0
  173. package/lib/typescript/commonjs/styles/index.d.ts.map +1 -1
  174. package/lib/typescript/commonjs/subtle-hover/SubtleHover.d.ts +32 -0
  175. package/lib/typescript/commonjs/subtle-hover/SubtleHover.d.ts.map +1 -0
  176. package/lib/typescript/commonjs/subtle-hover/index.d.ts +3 -0
  177. package/lib/typescript/commonjs/subtle-hover/index.d.ts.map +1 -0
  178. package/lib/typescript/commonjs/theme/build-theme.d.ts.map +1 -1
  179. package/lib/typescript/commonjs/theme/gradients.d.ts +12 -0
  180. package/lib/typescript/commonjs/theme/gradients.d.ts.map +1 -0
  181. package/lib/typescript/commonjs/theme/index.d.ts +2 -1
  182. package/lib/typescript/commonjs/theme/index.d.ts.map +1 -1
  183. package/lib/typescript/commonjs/theme/types.d.ts +11 -0
  184. package/lib/typescript/commonjs/theme/types.d.ts.map +1 -1
  185. package/lib/typescript/module/animated-check/AnimatedCheck.d.ts +18 -0
  186. package/lib/typescript/module/animated-check/AnimatedCheck.d.ts.map +1 -0
  187. package/lib/typescript/module/animated-check/index.d.ts +3 -0
  188. package/lib/typescript/module/animated-check/index.d.ts.map +1 -0
  189. package/lib/typescript/module/avatar/Avatar.d.ts.map +1 -1
  190. package/lib/typescript/module/avatar/AvatarRing.d.ts +27 -0
  191. package/lib/typescript/module/avatar/AvatarRing.d.ts.map +1 -0
  192. package/lib/typescript/module/avatar/index.d.ts +1 -1
  193. package/lib/typescript/module/avatar/index.d.ts.map +1 -1
  194. package/lib/typescript/module/avatar/squircle-path.d.ts +8 -0
  195. package/lib/typescript/module/avatar/squircle-path.d.ts.map +1 -0
  196. package/lib/typescript/module/avatar/svg-module.d.ts +8 -0
  197. package/lib/typescript/module/avatar/svg-module.d.ts.map +1 -0
  198. package/lib/typescript/module/avatar/types.d.ts +30 -0
  199. package/lib/typescript/module/avatar/types.d.ts.map +1 -1
  200. package/lib/typescript/module/dialog/placement.d.ts +8 -7
  201. package/lib/typescript/module/dialog/placement.d.ts.map +1 -1
  202. package/lib/typescript/module/fill/index.d.ts +2 -2
  203. package/lib/typescript/module/fill/index.d.ts.map +1 -1
  204. package/lib/typescript/module/hooks/index.d.ts +4 -0
  205. package/lib/typescript/module/hooks/index.d.ts.map +1 -1
  206. package/lib/typescript/module/hooks/useGutters.d.ts +32 -0
  207. package/lib/typescript/module/hooks/useGutters.d.ts.map +1 -0
  208. package/lib/typescript/module/hooks/useHaptics.d.ts +28 -0
  209. package/lib/typescript/module/hooks/useHaptics.d.ts.map +1 -0
  210. package/lib/typescript/module/hooks/useInteractionState.d.ts +6 -0
  211. package/lib/typescript/module/hooks/useInteractionState.d.ts.map +1 -1
  212. package/lib/typescript/module/index.d.ts +16 -0
  213. package/lib/typescript/module/index.d.ts.map +1 -1
  214. package/lib/typescript/module/index.web.d.ts +16 -0
  215. package/lib/typescript/module/index.web.d.ts.map +1 -1
  216. package/lib/typescript/module/media-inset-border/MediaInsetBorder.d.ts +26 -0
  217. package/lib/typescript/module/media-inset-border/MediaInsetBorder.d.ts.map +1 -0
  218. package/lib/typescript/module/media-inset-border/index.d.ts +3 -0
  219. package/lib/typescript/module/media-inset-border/index.d.ts.map +1 -0
  220. package/lib/typescript/module/motion/ScreenTransition.d.ts +33 -0
  221. package/lib/typescript/module/motion/ScreenTransition.d.ts.map +1 -0
  222. package/lib/typescript/module/motion/index.d.ts +4 -0
  223. package/lib/typescript/module/motion/index.d.ts.map +1 -0
  224. package/lib/typescript/module/motion/motion.d.ts +24 -0
  225. package/lib/typescript/module/motion/motion.d.ts.map +1 -0
  226. package/lib/typescript/module/pressable-scale/PressableScale.d.ts +21 -0
  227. package/lib/typescript/module/pressable-scale/PressableScale.d.ts.map +1 -0
  228. package/lib/typescript/module/pressable-scale/index.d.ts +3 -0
  229. package/lib/typescript/module/pressable-scale/index.d.ts.map +1 -0
  230. package/lib/typescript/module/pressable-with-hover/PressableWithHover.d.ts +18 -0
  231. package/lib/typescript/module/pressable-with-hover/PressableWithHover.d.ts.map +1 -0
  232. package/lib/typescript/module/pressable-with-hover/index.d.ts +3 -0
  233. package/lib/typescript/module/pressable-with-hover/index.d.ts.map +1 -0
  234. package/lib/typescript/module/styles/breakpoints.d.ts +18 -0
  235. package/lib/typescript/module/styles/breakpoints.d.ts.map +1 -0
  236. package/lib/typescript/module/styles/index.d.ts +2 -0
  237. package/lib/typescript/module/styles/index.d.ts.map +1 -1
  238. package/lib/typescript/module/subtle-hover/SubtleHover.d.ts +32 -0
  239. package/lib/typescript/module/subtle-hover/SubtleHover.d.ts.map +1 -0
  240. package/lib/typescript/module/subtle-hover/index.d.ts +3 -0
  241. package/lib/typescript/module/subtle-hover/index.d.ts.map +1 -0
  242. package/lib/typescript/module/theme/build-theme.d.ts.map +1 -1
  243. package/lib/typescript/module/theme/gradients.d.ts +12 -0
  244. package/lib/typescript/module/theme/gradients.d.ts.map +1 -0
  245. package/lib/typescript/module/theme/index.d.ts +2 -1
  246. package/lib/typescript/module/theme/index.d.ts.map +1 -1
  247. package/lib/typescript/module/theme/types.d.ts +11 -0
  248. package/lib/typescript/module/theme/types.d.ts.map +1 -1
  249. package/package.json +73 -1
  250. package/src/__tests__/AnimatedCheck.test.tsx +31 -0
  251. package/src/__tests__/MediaInsetBorder.test.tsx +36 -0
  252. package/src/__tests__/Motion.test.tsx +58 -0
  253. package/src/__tests__/PressableScale.test.tsx +29 -0
  254. package/src/__tests__/PressableWithHover.test.tsx +48 -0
  255. package/src/__tests__/SubtleHover.test.tsx +42 -0
  256. package/src/__tests__/theme-gradients.test.ts +31 -0
  257. package/src/__tests__/theme.test.ts +3 -0
  258. package/src/__tests__/useGutters.test.ts +58 -0
  259. package/src/__tests__/useHaptics.test.tsx +58 -0
  260. package/src/__tests__/useInteractionState.test.ts +27 -0
  261. package/src/animated-check/AnimatedCheck.stories.tsx +60 -0
  262. package/src/animated-check/AnimatedCheck.tsx +173 -0
  263. package/src/animated-check/index.ts +2 -0
  264. package/src/avatar/Avatar.stories.tsx +95 -0
  265. package/src/avatar/Avatar.tsx +61 -110
  266. package/src/avatar/AvatarRing.tsx +170 -0
  267. package/src/avatar/index.ts +6 -1
  268. package/src/avatar/squircle-path.ts +11 -0
  269. package/src/avatar/svg-module.ts +11 -0
  270. package/src/avatar/types.ts +32 -0
  271. package/src/dialog/placement.ts +10 -7
  272. package/src/fill/index.tsx +2 -2
  273. package/src/hooks/index.ts +4 -0
  274. package/src/hooks/useGutters.ts +99 -0
  275. package/src/hooks/useHaptics.tsx +69 -0
  276. package/src/hooks/useInteractionState.ts +8 -2
  277. package/src/index.ts +20 -0
  278. package/src/index.web.ts +20 -0
  279. package/src/media-inset-border/MediaInsetBorder.stories.tsx +60 -0
  280. package/src/media-inset-border/MediaInsetBorder.tsx +72 -0
  281. package/src/media-inset-border/index.ts +2 -0
  282. package/src/motion/Motion.stories.tsx +99 -0
  283. package/src/motion/ScreenTransition.tsx +71 -0
  284. package/src/motion/index.ts +3 -0
  285. package/src/motion/motion.ts +75 -0
  286. package/src/pressable-scale/PressableScale.stories.tsx +71 -0
  287. package/src/pressable-scale/PressableScale.tsx +103 -0
  288. package/src/pressable-scale/index.ts +2 -0
  289. package/src/pressable-with-hover/PressableWithHover.stories.tsx +43 -0
  290. package/src/pressable-with-hover/PressableWithHover.tsx +43 -0
  291. package/src/pressable-with-hover/index.ts +2 -0
  292. package/src/styles/breakpoints.ts +18 -0
  293. package/src/styles/index.ts +2 -0
  294. package/src/subtle-hover/SubtleHover.stories.tsx +72 -0
  295. package/src/subtle-hover/SubtleHover.tsx +90 -0
  296. package/src/subtle-hover/index.ts +2 -0
  297. package/src/theme/build-theme.ts +2 -0
  298. package/src/theme/gradients.ts +61 -0
  299. package/src/theme/index.ts +2 -1
  300. package/src/theme/types.ts +13 -0
@@ -0,0 +1,177 @@
1
+ "use strict";
2
+
3
+ import React, { memo, useMemo } from 'react';
4
+ import { View, StyleSheet } from 'react-native';
5
+ import { Z_INDEX } from "../styles/z-index.js";
6
+ import { getSvgModule } from "./svg-module.js";
7
+ import { SQUIRCLE_PATH } from "./squircle-path.js";
8
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
+ // Module counter for unique gradient element ids — mirrors the `clipIdCounter`
10
+ // pattern in `Avatar.tsx`. Deterministic (no `Math.random()`) so ids are stable
11
+ // per mounted instance.
12
+ let ringGradientIdCounter = 0;
13
+
14
+ /**
15
+ * Size of the box the ring occupies. With `gap === 0` the ring overlays the
16
+ * avatar edge and the box equals the avatar size (footprint unchanged). With
17
+ * `gap > 0` the ring sits OUTSIDE the avatar, so the box grows and the avatar is
18
+ * centered inside it. Exported so `Avatar` reserves the same footprint with a
19
+ * single source for the geometry formula.
20
+ */
21
+ export function getRingOuterSize(size, width, gap) {
22
+ return gap > 0 ? size + 2 * (width + gap) : size;
23
+ }
24
+ function gradientCoords(direction) {
25
+ switch (direction) {
26
+ case 'horizontal':
27
+ return {
28
+ x1: '0',
29
+ y1: '0',
30
+ x2: '1',
31
+ y2: '0'
32
+ };
33
+ case 'vertical':
34
+ return {
35
+ x1: '0',
36
+ y1: '0',
37
+ x2: '0',
38
+ y2: '1'
39
+ };
40
+ case 'diagonal':
41
+ default:
42
+ return {
43
+ x1: '0',
44
+ y1: '0',
45
+ x2: '1',
46
+ y2: '1'
47
+ };
48
+ }
49
+ }
50
+
51
+ /**
52
+ * Single ring primitive shared by the `live` indicator and the public `ring`
53
+ * prop. Renders either a solid or a gradient ring, for both `circle` and
54
+ * `squircle` avatars.
55
+ *
56
+ * - Solid circle → a plain bordered `<View>` (no `react-native-svg` needed).
57
+ * - Solid squircle → an SVG `<Path>` stroking the squircle outline.
58
+ * - Gradient (either shape) → an SVG `<LinearGradient>` stroke; degrades to a
59
+ * solid ring of the first color when `react-native-svg` is unavailable (a
60
+ * squircle then degrades to a circle border, matching the avatar's own no-SVG
61
+ * circle fallback).
62
+ *
63
+ * Internal to the avatar family — not exported from the package.
64
+ */
65
+ const AvatarRingComponent = ({
66
+ size,
67
+ shape,
68
+ colors,
69
+ width,
70
+ gap,
71
+ gradientDirection
72
+ }) => {
73
+ const gradientId = useMemo(() => `bloom-ring-grad${ringGradientIdCounter++}`, []);
74
+ const colorList = Array.isArray(colors) ? colors : [colors];
75
+ const wantsGradient = colorList.length >= 2;
76
+ const solidColor = colorList[0] ?? '#000000';
77
+ const outer = getRingOuterSize(size, width, gap);
78
+ // The ring's visible band is always the outermost `width` px inside the outer
79
+ // box; when it degrades to a circle border it is a full circle → radius
80
+ // `outer / 2`.
81
+ const ringRadius = outer / 2;
82
+
83
+ // `react-native-svg` is required for gradients (both shapes) and for the
84
+ // squircle outline. A solid circle ring is a plain border and never needs it.
85
+ const needsSvg = wantsGradient || shape === 'squircle';
86
+ const svg = needsSvg ? getSvgModule() : null;
87
+
88
+ // No SVG available (or a solid circle, which never needs SVG): draw a plain
89
+ // bordered View. A gradient degrades to its first color; a squircle degrades
90
+ // to a circle border.
91
+ if (!svg) {
92
+ return /*#__PURE__*/_jsx(View, {
93
+ pointerEvents: "none",
94
+ style: {
95
+ position: 'absolute',
96
+ top: 0,
97
+ left: 0,
98
+ width: outer,
99
+ height: outer,
100
+ borderRadius: ringRadius,
101
+ borderColor: solidColor,
102
+ borderWidth: width,
103
+ zIndex: gap > 0 ? Z_INDEX.base : Z_INDEX.raised
104
+ }
105
+ });
106
+ }
107
+ const {
108
+ default: Svg,
109
+ Defs,
110
+ LinearGradient,
111
+ Stop,
112
+ Circle,
113
+ Path
114
+ } = svg;
115
+ const stroke = wantsGradient ? `url(#${gradientId})` : solidColor;
116
+ const coords = gradientCoords(gradientDirection);
117
+ const gradientDefs = wantsGradient ? /*#__PURE__*/_jsx(Defs, {
118
+ children: /*#__PURE__*/_jsx(LinearGradient, {
119
+ id: gradientId,
120
+ x1: coords.x1,
121
+ y1: coords.y1,
122
+ x2: coords.x2,
123
+ y2: coords.y2,
124
+ children: colorList.map((color, index) => /*#__PURE__*/_jsx(Stop, {
125
+ offset: colorList.length === 1 ? 0 : index / (colorList.length - 1),
126
+ stopColor: color
127
+ }, `${gradientId}-${index}`))
128
+ })
129
+ }) : null;
130
+
131
+ // The overlay fills its parent; the SVG within is sized to the ring box so a
132
+ // `gap === 0` ring overlays the avatar edge exactly and a `gap > 0` ring sits
133
+ // on the reserved outer perimeter.
134
+ const overlayStyle = [StyleSheet.absoluteFill, {
135
+ zIndex: gap > 0 ? Z_INDEX.base : Z_INDEX.raised
136
+ }];
137
+ if (shape === 'squircle') {
138
+ // The path lives in 0–1 space, so the stroke width is expressed in the same
139
+ // units; center-stroking it and letting the viewport clip the outer half
140
+ // yields a ~`width`-px band on the inner edge of the outer box.
141
+ return /*#__PURE__*/_jsx(View, {
142
+ pointerEvents: "none",
143
+ style: overlayStyle,
144
+ children: /*#__PURE__*/_jsxs(Svg, {
145
+ width: outer,
146
+ height: outer,
147
+ viewBox: "0 0 1 1",
148
+ children: [gradientDefs, /*#__PURE__*/_jsx(Path, {
149
+ d: SQUIRCLE_PATH,
150
+ fill: "none",
151
+ stroke: stroke,
152
+ strokeWidth: width / outer * 2
153
+ })]
154
+ })
155
+ });
156
+ }
157
+ return /*#__PURE__*/_jsx(View, {
158
+ pointerEvents: "none",
159
+ style: overlayStyle,
160
+ children: /*#__PURE__*/_jsxs(Svg, {
161
+ width: outer,
162
+ height: outer,
163
+ viewBox: `0 0 ${outer} ${outer}`,
164
+ children: [gradientDefs, /*#__PURE__*/_jsx(Circle, {
165
+ cx: outer / 2,
166
+ cy: outer / 2,
167
+ r: (outer - width) / 2,
168
+ fill: "none",
169
+ stroke: stroke,
170
+ strokeWidth: width
171
+ })]
172
+ })
173
+ });
174
+ };
175
+ export const AvatarRing = /*#__PURE__*/memo(AvatarRingComponent);
176
+ AvatarRing.displayName = 'AvatarRing';
177
+ //# sourceMappingURL=AvatarRing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","memo","useMemo","View","StyleSheet","Z_INDEX","getSvgModule","SQUIRCLE_PATH","jsx","_jsx","jsxs","_jsxs","ringGradientIdCounter","getRingOuterSize","size","width","gap","gradientCoords","direction","x1","y1","x2","y2","AvatarRingComponent","shape","colors","gradientDirection","gradientId","colorList","Array","isArray","wantsGradient","length","solidColor","outer","ringRadius","needsSvg","svg","pointerEvents","style","position","top","left","height","borderRadius","borderColor","borderWidth","zIndex","base","raised","default","Svg","Defs","LinearGradient","Stop","Circle","Path","stroke","coords","gradientDefs","children","id","map","color","index","offset","stopColor","overlayStyle","absoluteFill","viewBox","d","fill","strokeWidth","cx","cy","r","AvatarRing","displayName"],"sourceRoot":"../../../src","sources":["avatar/AvatarRing.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["Avatar","AvatarPlaceholderProvider","defaultAvatar","defaultAvatarSource"],"sourceRoot":"../../../src","sources":["avatar/index.ts"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,aAAU;AACjC,SAASC,yBAAyB,QAAQ,0BAAuB;AAIjE;AACA;AACA,OAAOC,aAAa,MAAM,qBAAkB;;AAE5C;AACA,OAAO,MAAMC,mBAAmB,GAAGD,aAAa","ignoreList":[]}
1
+ {"version":3,"names":["Avatar","AvatarPlaceholderProvider","defaultAvatar","defaultAvatarSource"],"sourceRoot":"../../../src","sources":["avatar/index.ts"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,aAAU;AACjC,SAASC,yBAAyB,QAAQ,0BAAuB;AASjE;AACA;AACA,OAAOC,aAAa,MAAM,qBAAkB;;AAE5C;AACA,OAAO,MAAMC,mBAAmB,GAAGD,aAAa","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Squircle clip/outline path normalized to a 0–1 coordinate space
5
+ * (viewBox="0 0 1 1"). Shared by the squircle avatar image clip in `Avatar.tsx`
6
+ * and the squircle outline in `AvatarRing.tsx` so the geometry has a single
7
+ * source of truth.
8
+ */
9
+ export const SQUIRCLE_PATH = 'M0 0.5 L0.00122 0.31674 L0.00489 0.25123 L0.01103 0.20331 L0.01969 0.16478 L0.03097 0.13257 L0.04495 0.10518 L0.0618 0.08177 L0.08177 0.0618 L0.10518 0.04495 L0.13257 0.03097 L0.16478 0.01969 L0.20331 0.01103 L0.25123 0.00489 L0.31674 0.00122 L0.5 0' + ' L0.68895 0.0014 L0.7564 0.00561 L0.80559 0.01267 L0.84499 0.02264 L0.87771 0.03564 L0.9053 0.05181 L0.92862 0.07138 L0.94819 0.0947 L0.96436 0.12228 L0.97736 0.15501 L0.98733 0.19441 L0.99439 0.2436 L0.9986 0.31105 L1 0.5' + ' L0.9986 0.68895 L0.99439 0.7564 L0.98733 0.80559 L0.97736 0.84499 L0.96436 0.87771 L0.94819 0.9053 L0.92862 0.92862 L0.9053 0.94819 L0.87771 0.96436 L0.84499 0.97736 L0.80559 0.98733 L0.7564 0.99439 L0.68895 0.9986 L0.5 1' + ' L0.31105 0.9986 L0.2436 0.99439 L0.19441 0.98733 L0.15501 0.97736 L0.12228 0.96436 L0.0947 0.94819 L0.07138 0.92862 L0.05181 0.9053 L0.03564 0.87771 L0.02264 0.84499 L0.01267 0.80559 L0.00561 0.7564 L0.0014 0.68895 L0 0.5Z';
10
+ //# sourceMappingURL=squircle-path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["SQUIRCLE_PATH"],"sourceRoot":"../../../src","sources":["avatar/squircle-path.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMA,aAAa,GACxB,2PAA2P,GAC3P,gOAAgO,GAChO,gOAAgO,GAChO,iOAAiO","ignoreList":[]}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ import { lazyRequire } from "../utils/lazy-require.js";
4
+ /**
5
+ * Lazily loads `react-native-svg`, returning `null` when it is not installed
6
+ * (e.g. a web bundle that does not ship the optional peer). Shared by the
7
+ * squircle avatar image clip in `Avatar.tsx` and the `AvatarRing` so there is a
8
+ * single loader rather than one per call site.
9
+ */
10
+ export const getSvgModule = lazyRequire('react-native-svg');
11
+ //# sourceMappingURL=svg-module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["lazyRequire","getSvgModule"],"sourceRoot":"../../../src","sources":["avatar/svg-module.ts"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,0BAAuB;AAInD;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,YAAY,GAAGD,WAAW,CAAgB,kBAAkB,CAAC","ignoreList":[]}
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { useMemo } from 'react';
4
4
  import { useWindowDimensions } from 'react-native';
5
+ import { BREAKPOINTS } from "../styles/breakpoints.js";
5
6
 
6
7
  /**
7
8
  * Anchor a `<Dialog>` can render against.
@@ -23,14 +24,15 @@ import { useWindowDimensions } from 'react-native';
23
24
  */
24
25
 
25
26
  /**
26
- * Tailwind-default breakpoints (px). A responsive `placement` map resolves to
27
- * the value for the largest key whose min-width is `<=` the current viewport
28
- * 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`.
29
31
  */
30
- export const BREAKPOINT_SM = 640;
31
- export const BREAKPOINT_MD = 768;
32
- export const BREAKPOINT_LG = 1024;
33
- export const BREAKPOINT_XL = 1280;
32
+ export const BREAKPOINT_SM = BREAKPOINTS.sm;
33
+ export const BREAKPOINT_MD = BREAKPOINTS.md;
34
+ export const BREAKPOINT_LG = BREAKPOINTS.lg;
35
+ export const BREAKPOINT_XL = BREAKPOINTS.xl;
34
36
 
35
37
  /** Ordered breakpoint table, widest first, so the first match wins. */
36
38
  const RESPONSIVE_KEYS = [['xl', BREAKPOINT_XL], ['lg', BREAKPOINT_LG], ['md', BREAKPOINT_MD], ['sm', BREAKPOINT_SM]];
@@ -1 +1 @@
1
- {"version":3,"names":["useMemo","useWindowDimensions","BREAKPOINT_SM","BREAKPOINT_MD","BREAKPOINT_LG","BREAKPOINT_XL","RESPONSIVE_KEYS","DEFAULT_SIDE_WIDTH","DEFAULT_CENTER_MAX_WIDTH","DEFAULT_MAX_HEIGHT_RATIO","PANEL_RADIUS","DEFAULT_DIALOG_CONTENT_PADDING","ANIMATION_DURATION","CENTER_FADE_OUT_DURATION","EASE_OUT","SHEET_BACKDROP_OPACITY","DIALOG_SHEET_BACKDROP_TESTID","HANDLE_WIDTH","HANDLE_HEIGHT","HANDLE_RADIUS","SIDE_SHEET_MIN_GUTTER","useResolvedPlacement","placement","width","undefined","key","minWidth","value","base"],"sourceRoot":"../../../src","sources":["dialog/placement.ts"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,OAAO;AAC/B,SAASC,mBAAmB,QAAQ,cAAc;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAWA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,aAAa,GAAG,GAAG;AAChC,OAAO,MAAMC,aAAa,GAAG,GAAG;AAChC,OAAO,MAAMC,aAAa,GAAG,IAAI;AACjC,OAAO,MAAMC,aAAa,GAAG,IAAI;;AAEjC;AACA,MAAMC,eAAe,GAAG,CACtB,CAAC,IAAI,EAAED,aAAa,CAAC,EACrB,CAAC,IAAI,EAAED,aAAa,CAAC,EACrB,CAAC,IAAI,EAAED,aAAa,CAAC,EACrB,CAAC,IAAI,EAAED,aAAa,CAAC,CACb;;AAEV;AACA,OAAO,MAAMK,kBAAkB,GAAG,GAAG;;AAErC;AACA,OAAO,MAAMC,wBAAwB,GAAG,GAAG;;AAE3C;AACA,OAAO,MAAMC,wBAAwB,GAAG,GAAG;;AAE3C;AACA,OAAO,MAAMC,YAAY,GAAG,EAAE;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,8BAA8B,GAAG,EAAE;;AAEhD;AACA,OAAO,MAAMC,kBAAkB,GAAG,GAAG;;AAErC;AACA,OAAO,MAAMC,wBAAwB,GAAG,GAAG;;AAE3C;AACA,OAAO,MAAMC,QAAQ,GAAG,gCAAgC;;AAExD;AACA,OAAO,MAAMC,sBAAsB,GAAG,GAAG;;AAEzC;AACA,OAAO,MAAMC,4BAA4B,GAAG,6BAA6B;;AAEzE;AACA,OAAO,MAAMC,YAAY,GAAG,EAAE;AAC9B,OAAO,MAAMC,aAAa,GAAG,CAAC;AAC9B,OAAO,MAAMC,aAAa,GAAG,CAAC;;AAE9B;AACA;AACA;AACA;AACA,OAAO,MAAMC,qBAAqB,GAAG,EAAE;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,oBAAoBA,CAClCC,SAAgD,EAC/B;EACjB,MAAM;IAAEC;EAAM,CAAC,GAAGtB,mBAAmB,CAAC,CAAC;EAEvC,OAAOD,OAAO,CAAkB,MAAM;IACpC,IAAIsB,SAAS,KAAKE,SAAS,EAAE,OAAO,QAAQ;IAC5C,IAAI,OAAOF,SAAS,KAAK,QAAQ,EAAE,OAAOA,SAAS;IACnD,KAAK,MAAM,CAACG,GAAG,EAAEC,QAAQ,CAAC,IAAIpB,eAAe,EAAE;MAC7C,IAAIiB,KAAK,IAAIG,QAAQ,EAAE;QACrB,MAAMC,KAAK,GAAGL,SAAS,CAACG,GAAG,CAAC;QAC5B,IAAIE,KAAK,KAAKH,SAAS,EAAE,OAAOG,KAAK;MACvC;IACF;IACA,OAAOL,SAAS,CAACM,IAAI;EACvB,CAAC,EAAE,CAACN,SAAS,EAAEC,KAAK,CAAC,CAAC;AACxB","ignoreList":[]}
1
+ {"version":3,"names":["useMemo","useWindowDimensions","BREAKPOINTS","BREAKPOINT_SM","sm","BREAKPOINT_MD","md","BREAKPOINT_LG","lg","BREAKPOINT_XL","xl","RESPONSIVE_KEYS","DEFAULT_SIDE_WIDTH","DEFAULT_CENTER_MAX_WIDTH","DEFAULT_MAX_HEIGHT_RATIO","PANEL_RADIUS","DEFAULT_DIALOG_CONTENT_PADDING","ANIMATION_DURATION","CENTER_FADE_OUT_DURATION","EASE_OUT","SHEET_BACKDROP_OPACITY","DIALOG_SHEET_BACKDROP_TESTID","HANDLE_WIDTH","HANDLE_HEIGHT","HANDLE_RADIUS","SIDE_SHEET_MIN_GUTTER","useResolvedPlacement","placement","width","undefined","key","minWidth","value","base"],"sourceRoot":"../../../src","sources":["dialog/placement.ts"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,OAAO;AAC/B,SAASC,mBAAmB,QAAQ,cAAc;AAElD,SAASC,WAAW,QAAQ,0BAAuB;;AAEnD;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAWA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,aAAa,GAAGD,WAAW,CAACE,EAAE;AAC3C,OAAO,MAAMC,aAAa,GAAGH,WAAW,CAACI,EAAE;AAC3C,OAAO,MAAMC,aAAa,GAAGL,WAAW,CAACM,EAAE;AAC3C,OAAO,MAAMC,aAAa,GAAGP,WAAW,CAACQ,EAAE;;AAE3C;AACA,MAAMC,eAAe,GAAG,CACtB,CAAC,IAAI,EAAEF,aAAa,CAAC,EACrB,CAAC,IAAI,EAAEF,aAAa,CAAC,EACrB,CAAC,IAAI,EAAEF,aAAa,CAAC,EACrB,CAAC,IAAI,EAAEF,aAAa,CAAC,CACb;;AAEV;AACA,OAAO,MAAMS,kBAAkB,GAAG,GAAG;;AAErC;AACA,OAAO,MAAMC,wBAAwB,GAAG,GAAG;;AAE3C;AACA,OAAO,MAAMC,wBAAwB,GAAG,GAAG;;AAE3C;AACA,OAAO,MAAMC,YAAY,GAAG,EAAE;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,8BAA8B,GAAG,EAAE;;AAEhD;AACA,OAAO,MAAMC,kBAAkB,GAAG,GAAG;;AAErC;AACA,OAAO,MAAMC,wBAAwB,GAAG,GAAG;;AAE3C;AACA,OAAO,MAAMC,QAAQ,GAAG,gCAAgC;;AAExD;AACA,OAAO,MAAMC,sBAAsB,GAAG,GAAG;;AAEzC;AACA,OAAO,MAAMC,4BAA4B,GAAG,6BAA6B;;AAEzE;AACA,OAAO,MAAMC,YAAY,GAAG,EAAE;AAC9B,OAAO,MAAMC,aAAa,GAAG,CAAC;AAC9B,OAAO,MAAMC,aAAa,GAAG,CAAC;;AAE9B;AACA;AACA;AACA;AACA,OAAO,MAAMC,qBAAqB,GAAG,EAAE;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,oBAAoBA,CAClCC,SAAgD,EAC/B;EACjB,MAAM;IAAEC;EAAM,CAAC,GAAG3B,mBAAmB,CAAC,CAAC;EAEvC,OAAOD,OAAO,CAAkB,MAAM;IACpC,IAAI2B,SAAS,KAAKE,SAAS,EAAE,OAAO,QAAQ;IAC5C,IAAI,OAAOF,SAAS,KAAK,QAAQ,EAAE,OAAOA,SAAS;IACnD,KAAK,MAAM,CAACG,GAAG,EAAEC,QAAQ,CAAC,IAAIpB,eAAe,EAAE;MAC7C,IAAIiB,KAAK,IAAIG,QAAQ,EAAE;QACrB,MAAMC,KAAK,GAAGL,SAAS,CAACG,GAAG,CAAC;QAC5B,IAAIE,KAAK,KAAKH,SAAS,EAAE,OAAOG,KAAK;MACvC;IACF;IACA,OAAOL,SAAS,CAACM,IAAI;EACvB,CAAC,EAAE,CAACN,SAAS,EAAEC,KAAK,CAAC,CAAC;AACxB","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["React","memo","StyleSheet","View","jsx","_jsx","FillComponent","Fill","children","style","fillStyles","base","displayName","create","position","top","right","bottom","left"],"sourceRoot":"../../../src","sources":["fill/index.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,IAAI,QAAQ,OAAO;AACnC,SAASC,UAAU,EAAEC,IAAI,QAAwB,cAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEhE,MAAMC,aAAa,GAAG,SAASC,IAAIA,CAAC;EAClCC,QAAQ;EACRC;AAIF,CAAC,EAAE;EACD,oBACEJ,IAAA,CAACF,IAAI;IAACM,KAAK,EAAE,CAACC,UAAU,CAACC,IAAI,EAAEF,KAAK,CAAE;IAAAD,QAAA,EACnCA;EAAQ,CACL,CAAC;AAEX,CAAC;AAED,OAAO,MAAMD,IAAI,gBAAGN,IAAI,CAACK,aAAa,CAAC;AACvCC,IAAI,CAACK,WAAW,GAAG,MAAM;AAEzB,MAAMF,UAAU,GAAGR,UAAU,CAACW,MAAM,CAAC;EACnCF,IAAI,EAAE;IACJG,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,CAAC;IACNC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE,CAAC;IACTC,IAAI,EAAE;EACR;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","memo","StyleSheet","View","jsx","_jsx","FillComponent","Fill","children","style","fillStyles","base","displayName","create","position","top","right","bottom","left"],"sourceRoot":"../../../src","sources":["fill/index.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,IAAI,QAAQ,OAAO;AACnC,SAASC,UAAU,EAAEC,IAAI,QAAwC,cAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEhF,MAAMC,aAAa,GAAG,SAASC,IAAIA,CAAC;EAClCC,QAAQ;EACRC;AAIF,CAAC,EAAE;EACD,oBACEJ,IAAA,CAACF,IAAI;IAACM,KAAK,EAAE,CAACC,UAAU,CAACC,IAAI,EAAEF,KAAK,CAAE;IAAAD,QAAA,EACnCA;EAAQ,CACL,CAAC;AAEX,CAAC;AAED,OAAO,MAAMD,IAAI,gBAAGN,IAAI,CAACK,aAAa,CAAC;AACvCC,IAAI,CAACK,WAAW,GAAG,MAAM;AAEzB,MAAMF,UAAU,GAAGR,UAAU,CAACW,MAAM,CAAC;EACnCF,IAAI,EAAE;IACJG,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,CAAC;IACNC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE,CAAC;IACTC,IAAI,EAAE;EACR;AACF,CAAC,CAAC","ignoreList":[]}
@@ -5,4 +5,6 @@ export { useDelayedLoading } from "./useDelayedLoading.js";
5
5
  export { useThrottledValue } from "./useThrottledValue.js";
6
6
  export { usePressAnimation } from "./usePressAnimation.js";
7
7
  export { mergeRefs } from "./mergeRefs.js";
8
+ export { useHaptics, BloomHapticsProvider } from "./useHaptics.js";
9
+ export { useGutters } from "./useGutters.js";
8
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useInteractionState","useInteractionStates","useDelayedLoading","useThrottledValue","usePressAnimation","mergeRefs"],"sourceRoot":"../../../src","sources":["hooks/index.ts"],"mappings":";;AAAA,SAASA,mBAAmB,EAAEC,oBAAoB,QAAQ,0BAAuB;AACjF,SAASC,iBAAiB,QAAQ,wBAAqB;AACvD,SAASC,iBAAiB,QAAQ,wBAAqB;AACvD,SAASC,iBAAiB,QAAQ,wBAAqB;AACvD,SAASC,SAAS,QAAQ,gBAAa","ignoreList":[]}
1
+ {"version":3,"names":["useInteractionState","useInteractionStates","useDelayedLoading","useThrottledValue","usePressAnimation","mergeRefs","useHaptics","BloomHapticsProvider","useGutters"],"sourceRoot":"../../../src","sources":["hooks/index.ts"],"mappings":";;AAAA,SAASA,mBAAmB,EAAEC,oBAAoB,QAAQ,0BAAuB;AACjF,SAASC,iBAAiB,QAAQ,wBAAqB;AACvD,SAASC,iBAAiB,QAAQ,wBAAqB;AACvD,SAASC,iBAAiB,QAAQ,wBAAqB;AACvD,SAASC,SAAS,QAAQ,gBAAa;AACvC,SAASC,UAAU,EAAEC,oBAAoB,QAAQ,iBAAc;AAE/D,SAASC,UAAU,QAAQ,iBAAc","ignoreList":[]}
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+
3
+ import { useMemo } from 'react';
4
+ import { useWindowDimensions } from 'react-native';
5
+ import { BREAKPOINTS } from "../styles/breakpoints.js";
6
+ import { space } from "../styles/tokens.js";
7
+
8
+ /**
9
+ * A named gutter size, or `0` for no padding on that edge.
10
+ *
11
+ * - `'compact'` — tight gutter (dense lists, chips).
12
+ * - `'base'` — the default page gutter.
13
+ * - `'wide'` — roomy gutter (marketing / hero surfaces).
14
+ */
15
+
16
+ /** Resolved edge padding in px — one value per side, ready to spread onto a style. */
17
+
18
+ /** The active viewport tier: the widest matched breakpoint, or `'base'` below `sm`. */
19
+
20
+ /**
21
+ * Per-size gutter padding (px) at each viewport tier. Padding steps up around
22
+ * tablet width (`md`), mirroring the design-system scale: phones get a tighter
23
+ * gutter, wider screens a roomier one. Values come from the shared `space`
24
+ * tokens so gutters stay on the spacing grid.
25
+ */
26
+ const GUTTER_SCALE = {
27
+ compact: {
28
+ base: space.sm,
29
+ sm: space.sm,
30
+ md: space.md,
31
+ lg: space.md,
32
+ xl: space.md
33
+ },
34
+ base: {
35
+ base: space.lg,
36
+ sm: space.lg,
37
+ md: space.xl,
38
+ lg: space.xl,
39
+ xl: space.xl
40
+ },
41
+ wide: {
42
+ base: space.xl,
43
+ sm: space.xl,
44
+ md: space._3xl,
45
+ lg: space._3xl,
46
+ xl: space._3xl
47
+ }
48
+ };
49
+
50
+ /** Widest-first breakpoint table so the first match wins. */
51
+ const TIERS = [['xl', BREAKPOINTS.xl], ['lg', BREAKPOINTS.lg], ['md', BREAKPOINTS.md], ['sm', BREAKPOINTS.sm]];
52
+ function resolveTier(width) {
53
+ for (const [tier, minWidth] of TIERS) {
54
+ if (width >= minWidth) return tier;
55
+ }
56
+ return 'base';
57
+ }
58
+ function resolveEdge(size, tier) {
59
+ return size === 0 ? 0 : GUTTER_SCALE[size][tier];
60
+ }
61
+
62
+ /**
63
+ * Expand a 1/2/4-arg CSS-shorthand gutter list into `[top, right, bottom, left]`.
64
+ * `??` (not `||`) so an explicit `0` is preserved rather than falling through.
65
+ */
66
+ function normalizeShorthand(gutters) {
67
+ const top = gutters[0] ?? 0;
68
+ const right = gutters[1] ?? top;
69
+ const bottom = gutters[2] ?? top;
70
+ const left = gutters[3] ?? right;
71
+ return [top, right, bottom, left];
72
+ }
73
+
74
+ /**
75
+ * Breakpoint-aware gutter padding. Give it CSS-shorthand gutter sizes and it
76
+ * returns resolved `padding*` values for the current viewport width, recomputed
77
+ * as the window crosses a breakpoint.
78
+ *
79
+ * @example
80
+ * ```tsx
81
+ * const gutters = useGutters(['base']); // uniform
82
+ * const gutters = useGutters([0, 'wide']); // no vertical, wide horizontal
83
+ * const gutters = useGutters(['compact', 'base', 0, 'base']); // t / r / b / l
84
+ * <View style={gutters} />
85
+ * ```
86
+ */
87
+
88
+ export function useGutters(gutters) {
89
+ const {
90
+ width
91
+ } = useWindowDimensions();
92
+ const [top, right, bottom, left] = normalizeShorthand(gutters);
93
+ return useMemo(() => {
94
+ const tier = resolveTier(width);
95
+ return {
96
+ paddingTop: resolveEdge(top, tier),
97
+ paddingRight: resolveEdge(right, tier),
98
+ paddingBottom: resolveEdge(bottom, tier),
99
+ paddingLeft: resolveEdge(left, tier)
100
+ };
101
+ }, [width, top, right, bottom, left]);
102
+ }
103
+ //# sourceMappingURL=useGutters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useMemo","useWindowDimensions","BREAKPOINTS","space","GUTTER_SCALE","compact","base","sm","md","lg","xl","wide","_3xl","TIERS","resolveTier","width","tier","minWidth","resolveEdge","size","normalizeShorthand","gutters","top","right","bottom","left","useGutters","paddingTop","paddingRight","paddingBottom","paddingLeft"],"sourceRoot":"../../../src","sources":["hooks/useGutters.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+
3
+ import React, { createContext, useCallback, useContext, useMemo } from 'react';
4
+ import { Platform } from 'react-native';
5
+ import { lazyRequire } from "../utils/lazy-require.js";
6
+
7
+ /**
8
+ * Lazily loads `expo-haptics`, returning `null` when it is not installed. The
9
+ * dependency is an optional peer, so calls degrade to a no-op when absent.
10
+ */
11
+ import { jsx as _jsx } from "react/jsx-runtime";
12
+ const getHapticsModule = lazyRequire('expo-haptics');
13
+
14
+ /** Impact strength requested by a caller. */
15
+
16
+ const BloomHapticsContext = /*#__PURE__*/createContext({
17
+ enabled: true
18
+ });
19
+ /**
20
+ * Optional provider that toggles haptic feedback for its subtree — e.g. to honour
21
+ * a user "reduce haptics" preference. `useHaptics` defaults to enabled when no
22
+ * provider is present.
23
+ */
24
+ export function BloomHapticsProvider({
25
+ enabled = true,
26
+ children
27
+ }) {
28
+ const value = useMemo(() => ({
29
+ enabled
30
+ }), [enabled]);
31
+ return /*#__PURE__*/_jsx(BloomHapticsContext.Provider, {
32
+ value: value,
33
+ children: children
34
+ });
35
+ }
36
+ BloomHapticsProvider.displayName = 'BloomHapticsProvider';
37
+
38
+ /**
39
+ * Returns a function that fires a haptic impact. The returned callback no-ops on
40
+ * web, when haptics are disabled via {@link BloomHapticsProvider}, or when the
41
+ * optional `expo-haptics` peer is not installed.
42
+ *
43
+ * `strength` defaults to `'light'`. Android is clamped to the light impact style
44
+ * regardless of `strength` — its medium/heavy motors read as too strong for UI
45
+ * feedback (tuned to match iOS perceived intensity).
46
+ */
47
+ export function useHaptics() {
48
+ const {
49
+ enabled
50
+ } = useContext(BloomHapticsContext);
51
+ return useCallback((strength = 'light') => {
52
+ if (!enabled || Platform.OS === 'web') return;
53
+ const haptics = getHapticsModule();
54
+ if (!haptics) return;
55
+ const {
56
+ ImpactFeedbackStyle
57
+ } = haptics;
58
+ let style = ImpactFeedbackStyle.Light;
59
+ if (Platform.OS !== 'android') {
60
+ if (strength === 'medium') style = ImpactFeedbackStyle.Medium;else if (strength === 'heavy') style = ImpactFeedbackStyle.Heavy;
61
+ }
62
+ void haptics.impactAsync(style);
63
+ }, [enabled]);
64
+ }
65
+ //# sourceMappingURL=useHaptics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","createContext","useCallback","useContext","useMemo","Platform","lazyRequire","jsx","_jsx","getHapticsModule","BloomHapticsContext","enabled","BloomHapticsProvider","children","value","Provider","displayName","useHaptics","strength","OS","haptics","ImpactFeedbackStyle","style","Light","Medium","Heavy","impactAsync"],"sourceRoot":"../../../src","sources":["hooks/useHaptics.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,aAAa,EAAEC,WAAW,EAAEC,UAAU,EAAEC,OAAO,QAAQ,OAAO;AAC9E,SAASC,QAAQ,QAAQ,cAAc;AAEvC,SAASC,WAAW,QAAQ,0BAAuB;;AAEnD;AACA;AACA;AACA;AAHA,SAAAC,GAAA,IAAAC,IAAA;AAIA,MAAMC,gBAAgB,GAAGH,WAAW,CAAgC,cAAc,CAAC;;AAEnF;;AAOA,MAAMI,mBAAmB,gBAAGT,aAAa,CAA2B;EAAEU,OAAO,EAAE;AAAK,CAAC,CAAC;AAQtF;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,oBAAoBA,CAAC;EAAED,OAAO,GAAG,IAAI;EAAEE;AAAoC,CAAC,EAAE;EAC5F,MAAMC,KAAK,GAAGV,OAAO,CAAC,OAAO;IAAEO;EAAQ,CAAC,CAAC,EAAE,CAACA,OAAO,CAAC,CAAC;EACrD,oBAAOH,IAAA,CAACE,mBAAmB,CAACK,QAAQ;IAACD,KAAK,EAAEA,KAAM;IAAAD,QAAA,EAAEA;EAAQ,CAA+B,CAAC;AAC9F;AAEAD,oBAAoB,CAACI,WAAW,GAAG,sBAAsB;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,UAAUA,CAAA,EAAwC;EAChE,MAAM;IAAEN;EAAQ,CAAC,GAAGR,UAAU,CAACO,mBAAmB,CAAC;EAEnD,OAAOR,WAAW,CAChB,CAACgB,QAAwB,GAAG,OAAO,KAAK;IACtC,IAAI,CAACP,OAAO,IAAIN,QAAQ,CAACc,EAAE,KAAK,KAAK,EAAE;IAEvC,MAAMC,OAAO,GAAGX,gBAAgB,CAAC,CAAC;IAClC,IAAI,CAACW,OAAO,EAAE;IAEd,MAAM;MAAEC;IAAoB,CAAC,GAAGD,OAAO;IACvC,IAAIE,KAAK,GAAGD,mBAAmB,CAACE,KAAK;IACrC,IAAIlB,QAAQ,CAACc,EAAE,KAAK,SAAS,EAAE;MAC7B,IAAID,QAAQ,KAAK,QAAQ,EAAEI,KAAK,GAAGD,mBAAmB,CAACG,MAAM,CAAC,KACzD,IAAIN,QAAQ,KAAK,OAAO,EAAEI,KAAK,GAAGD,mBAAmB,CAACI,KAAK;IAClE;IAEA,KAAKL,OAAO,CAACM,WAAW,CAACJ,KAAK,CAAC;EACjC,CAAC,EACD,CAACX,OAAO,CACV,CAAC;AACH","ignoreList":[]}
@@ -1,6 +1,13 @@
1
1
  "use strict";
2
2
 
3
- import { useCallback, useState } from 'react';
3
+ import { useCallback, useMemo, useState } from 'react';
4
+
5
+ /**
6
+ * Tracks a single boolean interaction flag (hovered / focused / pressed).
7
+ *
8
+ * Returns a memoized `{ state, onIn, onOut }` with stable handler identities,
9
+ * suitable for spreading onto Pressable-like components.
10
+ */
4
11
  export function useInteractionState() {
5
12
  const [state, setState] = useState(false);
6
13
  const onIn = useCallback(() => {
@@ -9,11 +16,11 @@ export function useInteractionState() {
9
16
  const onOut = useCallback(() => {
10
17
  setState(false);
11
18
  }, []);
12
- return {
19
+ return useMemo(() => ({
13
20
  state,
14
21
  onIn,
15
22
  onOut
16
- };
23
+ }), [state, onIn, onOut]);
17
24
  }
18
25
 
19
26
  /**
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useState","useInteractionState","state","setState","onIn","onOut","useInteractionStates","hovered","onHoverIn","onHoverOut","focused","onFocus","onBlur","pressed","onPressIn","onPressOut","hoverHandlers","focusHandlers","pressHandlers"],"sourceRoot":"../../../src","sources":["hooks/useInteractionState.ts"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,QAAQ,QAAQ,OAAO;AAE7C,OAAO,SAASC,mBAAmBA,CAAA,EAAG;EACpC,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAGH,QAAQ,CAAC,KAAK,CAAC;EAEzC,MAAMI,IAAI,GAAGL,WAAW,CAAC,MAAM;IAC7BI,QAAQ,CAAC,IAAI,CAAC;EAChB,CAAC,EAAE,EAAE,CAAC;EACN,MAAME,KAAK,GAAGN,WAAW,CAAC,MAAM;IAC9BI,QAAQ,CAAC,KAAK,CAAC;EACjB,CAAC,EAAE,EAAE,CAAC;EAEN,OAAO;IAAED,KAAK;IAAEE,IAAI;IAAEC;EAAM,CAAC;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,oBAAoBA,CAAA,EAAG;EACrC,MAAM;IAAEJ,KAAK,EAAEK,OAAO;IAAEH,IAAI,EAAEI,SAAS;IAAEH,KAAK,EAAEI;EAAW,CAAC,GAAGR,mBAAmB,CAAC,CAAC;EACpF,MAAM;IAAEC,KAAK,EAAEQ,OAAO;IAAEN,IAAI,EAAEO,OAAO;IAAEN,KAAK,EAAEO;EAAO,CAAC,GAAGX,mBAAmB,CAAC,CAAC;EAC9E,MAAM;IAAEC,KAAK,EAAEW,OAAO;IAAET,IAAI,EAAEU,SAAS;IAAET,KAAK,EAAEU;EAAW,CAAC,GAAGd,mBAAmB,CAAC,CAAC;EAEpF,OAAO;IACLM,OAAO;IACPG,OAAO;IACPG,OAAO;IACPG,aAAa,EAAE;MAAER,SAAS;MAAEC;IAAW,CAAU;IACjDQ,aAAa,EAAE;MAAEN,OAAO;MAAEC;IAAO,CAAU;IAC3CM,aAAa,EAAE;MAAEJ,SAAS;MAAEC;IAAW;EACzC,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","useMemo","useState","useInteractionState","state","setState","onIn","onOut","useInteractionStates","hovered","onHoverIn","onHoverOut","focused","onFocus","onBlur","pressed","onPressIn","onPressOut","hoverHandlers","focusHandlers","pressHandlers"],"sourceRoot":"../../../src","sources":["hooks/useInteractionState.ts"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,OAAO;;AAEtD;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,mBAAmBA,CAAA,EAAG;EACpC,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAGH,QAAQ,CAAC,KAAK,CAAC;EAEzC,MAAMI,IAAI,GAAGN,WAAW,CAAC,MAAM;IAC7BK,QAAQ,CAAC,IAAI,CAAC;EAChB,CAAC,EAAE,EAAE,CAAC;EACN,MAAME,KAAK,GAAGP,WAAW,CAAC,MAAM;IAC9BK,QAAQ,CAAC,KAAK,CAAC;EACjB,CAAC,EAAE,EAAE,CAAC;EAEN,OAAOJ,OAAO,CAAC,OAAO;IAAEG,KAAK;IAAEE,IAAI;IAAEC;EAAM,CAAC,CAAC,EAAE,CAACH,KAAK,EAAEE,IAAI,EAAEC,KAAK,CAAC,CAAC;AACtE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,oBAAoBA,CAAA,EAAG;EACrC,MAAM;IAAEJ,KAAK,EAAEK,OAAO;IAAEH,IAAI,EAAEI,SAAS;IAAEH,KAAK,EAAEI;EAAW,CAAC,GAAGR,mBAAmB,CAAC,CAAC;EACpF,MAAM;IAAEC,KAAK,EAAEQ,OAAO;IAAEN,IAAI,EAAEO,OAAO;IAAEN,KAAK,EAAEO;EAAO,CAAC,GAAGX,mBAAmB,CAAC,CAAC;EAC9E,MAAM;IAAEC,KAAK,EAAEW,OAAO;IAAET,IAAI,EAAEU,SAAS;IAAET,KAAK,EAAEU;EAAW,CAAC,GAAGd,mBAAmB,CAAC,CAAC;EAEpF,OAAO;IACLM,OAAO;IACPG,OAAO;IACPG,OAAO;IACPG,aAAa,EAAE;MAAER,SAAS;MAAEC;IAAW,CAAU;IACjDQ,aAAa,EAAE;MAAEN,OAAO;MAAEC;IAAO,CAAU;IAC3CM,aAAa,EAAE;MAAEJ,SAAS;MAAEC;IAAW;EACzC,CAAC;AACH","ignoreList":[]}
@@ -16,7 +16,8 @@ export { bloomTailwindPreset, bloomThemeCss, bloomThemeBlock, FILL_ROLES, TEXT_R
16
16
  export { useInteractionState } from "./hooks/useInteractionState.js";
17
17
  export { useDelayedLoading } from "./hooks/useDelayedLoading.js";
18
18
  export { useThrottledValue } from "./hooks/useThrottledValue.js";
19
-
19
+ export { useHaptics, BloomHapticsProvider } from "./hooks/useHaptics.js";
20
+ export { useGutters } from "./hooks/useGutters.js";
20
21
  // Icons
21
22
  export * as Icons from "./icons/index.js";
22
23
  export { sizes as iconSizes, useCommonSVGProps } from "./icons/common.js";
@@ -46,9 +47,17 @@ export * as Typography from "./typography/index.js";
46
47
  export * as Skeleton from "./skeleton/index.js";
47
48
  export * as Grid from "./grid/index.js";
48
49
  export { Fill } from "./fill/index.js";
50
+ export { MediaInsetBorder } from "./media-inset-border/index.js";
49
51
  export { IconCircle } from "./icon-circle/index.js";
50
52
  export { ConnectionDots } from './connection-dots';
51
53
  export { BenefitRow, BenefitList } from "./benefit-list/index.js";
54
+ // Interaction primitives
55
+ export { PressableScale } from "./pressable-scale/index.js";
56
+ export { PressableWithHover } from "./pressable-with-hover/index.js";
57
+ export { SubtleHover } from "./subtle-hover/index.js";
58
+ // Motion presets (Reanimated enter/exit + directional screen transition)
59
+ export { ScaleAndFadeIn, ScaleAndFadeOut, ShrinkAndPop, ScreenTransition } from "./motion/index.js";
60
+ export { AnimatedCheck } from "./animated-check/index.js";
52
61
  // Form components
53
62
  export * from "./text-field/index.js";
54
63
  export * from "./segmented-control/index.js";
@@ -1 +1 @@
1
- {"version":3,"names":["atoms","flatten","Z_INDEX","zIndex","tokens","web","native","ios","android","platform","select","bloomTailwindPreset","bloomThemeCss","bloomThemeBlock","FILL_ROLES","TEXT_ROLES","BORDER_ROLES","SPACING","RADIUS","BORDER_WIDTH","TYPOGRAPHY","FONT_FAMILY_VARS","SHADOW_BOX","bloomShadowStyle","useInteractionState","useDelayedLoading","useThrottledValue","Icons","sizes","iconSizes","useCommonSVGProps","Dialog","DIALOG_SHEET_BACKDROP_TESTID","BloomDialogProvider","alert","useDialogContext","useDialogControl","Fab","ErrorBoundary","AvatarGroup","UserHoverCard","toast","Typography","Skeleton","Grid","Fill","IconCircle","ConnectionDots","BenefitRow","BenefitList","SearchInput","Label","Field","InputGroup","Slider","Combobox","BottomSheet","LinkPreviewCard","Item","Kbd","AlertDialog","AlertDialogHost","confirm","Command","Code","Fonts"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA;AACA,cAAc,kBAAS;;AAEvB;AACA,SAASA,KAAK,EAAEC,OAAO,EAAEC,OAAO,EAAEC,MAAM,QAAQ,mBAAU;AAE1D,OAAO,KAAKC,MAAM,MAAM,oBAAiB;AACzC,SAASC,GAAG,EAAEC,MAAM,EAAEC,GAAG,EAAEC,OAAO,EAAEC,QAAQ,EAAEC,MAAM,QAAQ,sBAAmB;;AAE/E;AACA;AACA;AACA,SACEC,mBAAmB,EACnBC,aAAa,EACbC,eAAe,EACfC,UAAU,EACVC,UAAU,EACVC,YAAY,EACZC,OAAO,EACPC,MAAM,EACNC,YAAY,EACZC,UAAU,EACVC,gBAAgB,EAChBC,UAAU,EACVC,gBAAgB,QACX,0BAAiB;AAYxB;AACA,SAASC,mBAAmB,QAAQ,gCAA6B;AACjE,SAASC,iBAAiB,QAAQ,8BAA2B;AAC7D,SAASC,iBAAiB,QAAQ,8BAA2B;;AAE7D;AACA,OAAO,KAAKC,KAAK,MAAM,kBAAS;AAChC,SAAkCC,KAAK,IAAIC,SAAS,EAAEC,iBAAiB,QAAQ,mBAAgB;;AAE/F;AACA,cAAc,UAAU;AACxB,SACEC,MAAM,EACNC,4BAA4B,EAC5BC,mBAAmB,EACnBC,KAAK,EACLC,gBAAgB,EAChBC,gBAAgB,QACX,UAAU;AAajB,cAAc,UAAU;AACxB,SAASC,GAAG,QAAQ,OAAO;AAE3B,cAAc,4BAAmB;AACjC,cAAc,oBAAW;AACzB,cAAc,4BAAmB;AACjC,cAAc,wBAAe;AAC7B,SAASC,aAAa,QAAQ,2BAAkB;AAMhD,cAAc,mBAAU;AACxB,SAASC,WAAW,QAAQ,yBAAgB;AAE5C,SAASC,aAAa,QAAQ,4BAAmB;AAEjD,cAAc,WAAW;AACzB,cAAc,yBAAgB;AAC9B,cAAc,mBAAU;AACxB,SAASC,KAAK,QAAoB,SAAS;;AAE3C;AACA,OAAO,KAAKC,UAAU,MAAM,uBAAc;;AAE1C;AACA,OAAO,KAAKC,QAAQ,MAAM,qBAAY;AACtC,OAAO,KAAKC,IAAI,MAAM,iBAAQ;AAC9B,SAASC,IAAI,QAAQ,iBAAQ;AAC7B,SAASC,UAAU,QAAQ,wBAAe;AAC1C,SAASC,cAAc,QAAQ,mBAAmB;AAElD,SAASC,UAAU,EAAEC,WAAW,QAAQ,yBAAgB;AAGxD;AACA,cAAc,uBAAc;AAC5B,cAAc,8BAAqB;AACnC,SAASC,WAAW,QAAQ,yBAAgB;AAC5C,SAASC,KAAK,QAAQ,kBAAS;AAE/B,SAASC,KAAK,QAAQ,kBAAS;AAE/B,SAASC,UAAU,QAAQ,wBAAe;AAE1C,SAASC,MAAM,QAAQ,mBAAU;AAEjC,SAASC,QAAQ,QAAQ,YAAY;AAGrC;AACA,SAASC,WAAW,QAAQ,yBAAgB;AAG5C;AACA,cAAc,iBAAQ;AACtB,cAAc,kBAAS;AACvB,cAAc,iBAAQ;AACtB,cAAc,iBAAQ;AACtB,cAAc,qBAAY;AAC1B,cAAc,sBAAa;AAC3B,SAASC,eAAe,QAAQ,yBAAgB;AAGhD;AACA,cAAc,0BAAiB;AAC/B,SAASC,IAAI,QAAQ,iBAAQ;AAE7B,SAASC,GAAG,QAAQ,gBAAO;AAG3B;AACA,cAAc,uBAAc;AAC5B,cAAc,QAAQ;AACtB,cAAc,WAAW;AACzB,cAAc,UAAU;AACxB,cAAc,gBAAgB;AAC9B,cAAc,WAAW;AACzB,SAASC,WAAW,EAAEC,eAAe,EAAEC,OAAO,QAAQ,gBAAgB;AAMtE,SAASC,OAAO,QAAQ,WAAW;AAGnC;AACA,OAAO,KAAKC,IAAI,MAAM,iBAAQ;;AAE9B;AACA,OAAO,KAAKC,KAAK,MAAM,SAAS","ignoreList":[]}
1
+ {"version":3,"names":["atoms","flatten","Z_INDEX","zIndex","tokens","web","native","ios","android","platform","select","bloomTailwindPreset","bloomThemeCss","bloomThemeBlock","FILL_ROLES","TEXT_ROLES","BORDER_ROLES","SPACING","RADIUS","BORDER_WIDTH","TYPOGRAPHY","FONT_FAMILY_VARS","SHADOW_BOX","bloomShadowStyle","useInteractionState","useDelayedLoading","useThrottledValue","useHaptics","BloomHapticsProvider","useGutters","Icons","sizes","iconSizes","useCommonSVGProps","Dialog","DIALOG_SHEET_BACKDROP_TESTID","BloomDialogProvider","alert","useDialogContext","useDialogControl","Fab","ErrorBoundary","AvatarGroup","UserHoverCard","toast","Typography","Skeleton","Grid","Fill","MediaInsetBorder","IconCircle","ConnectionDots","BenefitRow","BenefitList","PressableScale","PressableWithHover","SubtleHover","ScaleAndFadeIn","ScaleAndFadeOut","ShrinkAndPop","ScreenTransition","AnimatedCheck","SearchInput","Label","Field","InputGroup","Slider","Combobox","BottomSheet","LinkPreviewCard","Item","Kbd","AlertDialog","AlertDialogHost","confirm","Command","Code","Fonts"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}
@@ -21,7 +21,8 @@ export { bloomTailwindPreset, bloomThemeCss, bloomThemeBlock, FILL_ROLES, TEXT_R
21
21
  export { useInteractionState } from "./hooks/useInteractionState.js";
22
22
  export { useDelayedLoading } from "./hooks/useDelayedLoading.js";
23
23
  export { useThrottledValue } from "./hooks/useThrottledValue.js";
24
-
24
+ export { useHaptics, BloomHapticsProvider } from "./hooks/useHaptics.js";
25
+ export { useGutters } from "./hooks/useGutters.js";
25
26
  // Icons
26
27
  export * as Icons from "./icons/index.js";
27
28
  export { sizes as iconSizes, useCommonSVGProps } from "./icons/common.js";
@@ -51,9 +52,17 @@ export * as Typography from "./typography/index.js";
51
52
  export * as Skeleton from "./skeleton/index.js";
52
53
  export * as Grid from "./grid/index.js";
53
54
  export { Fill } from "./fill/index.js";
55
+ export { MediaInsetBorder } from "./media-inset-border/index.js";
54
56
  export { IconCircle } from "./icon-circle/index.js";
55
57
  export { ConnectionDots } from "./connection-dots/index.web.js";
56
58
  export { BenefitRow, BenefitList } from "./benefit-list/index.js";
59
+ // Interaction primitives
60
+ export { PressableScale } from "./pressable-scale/index.js";
61
+ export { PressableWithHover } from "./pressable-with-hover/index.js";
62
+ export { SubtleHover } from "./subtle-hover/index.js";
63
+ // Motion presets (Reanimated enter/exit + directional screen transition)
64
+ export { ScaleAndFadeIn, ScaleAndFadeOut, ShrinkAndPop, ScreenTransition } from "./motion/index.js";
65
+ export { AnimatedCheck } from "./animated-check/index.js";
57
66
  // Form components
58
67
  export * from "./text-field/index.js";
59
68
  export * from "./segmented-control/index.js";
@@ -1 +1 @@
1
- {"version":3,"names":["atoms","flatten","Z_INDEX","zIndex","tokens","web","native","ios","android","platform","select","bloomTailwindPreset","bloomThemeCss","bloomThemeBlock","FILL_ROLES","TEXT_ROLES","BORDER_ROLES","SPACING","RADIUS","BORDER_WIDTH","TYPOGRAPHY","FONT_FAMILY_VARS","SHADOW_BOX","bloomShadowStyle","useInteractionState","useDelayedLoading","useThrottledValue","Icons","sizes","iconSizes","useCommonSVGProps","Dialog","DIALOG_SHEET_BACKDROP_TESTID","BloomDialogProvider","alert","useDialogContext","useDialogControl","Fab","ErrorBoundary","AvatarGroup","UserHoverCard","toast","Typography","Skeleton","Grid","Fill","IconCircle","ConnectionDots","BenefitRow","BenefitList","SearchInput","Label","Field","InputGroup","Slider","Combobox","BottomSheet","LinkPreviewCard","Item","Kbd","AlertDialog","AlertDialogHost","confirm","Command","Code","Fonts"],"sourceRoot":"../../src","sources":["index.web.ts"],"mappings":";;AAAA;AACA;AACA;AACA;;AAEA;AACA,cAAc,kBAAS;;AAEvB;AACA,SAASA,KAAK,EAAEC,OAAO,EAAEC,OAAO,EAAEC,MAAM,QAAQ,mBAAU;AAE1D,OAAO,KAAKC,MAAM,MAAM,oBAAiB;AACzC,SAASC,GAAG,EAAEC,MAAM,EAAEC,GAAG,EAAEC,OAAO,EAAEC,QAAQ,EAAEC,MAAM,QAAQ,sBAAmB;;AAE/E;AACA;AACA;AACA,SACEC,mBAAmB,EACnBC,aAAa,EACbC,eAAe,EACfC,UAAU,EACVC,UAAU,EACVC,YAAY,EACZC,OAAO,EACPC,MAAM,EACNC,YAAY,EACZC,UAAU,EACVC,gBAAgB,EAChBC,UAAU,EACVC,gBAAgB,QACX,0BAAiB;AAYxB;AACA,SAASC,mBAAmB,QAAQ,gCAA6B;AACjE,SAASC,iBAAiB,QAAQ,8BAA2B;AAC7D,SAASC,iBAAiB,QAAQ,8BAA2B;;AAE7D;AACA,OAAO,KAAKC,KAAK,MAAM,kBAAS;AAChC,SAAkCC,KAAK,IAAIC,SAAS,EAAEC,iBAAiB,QAAQ,mBAAgB;;AAE/F;AACA,cAAc,uBAAoB;AAClC,SACEC,MAAM,EACNC,4BAA4B,EAC5BC,mBAAmB,EACnBC,KAAK,EACLC,gBAAgB,EAChBC,gBAAgB,QACX,uBAAoB;AAa3B,cAAc,uBAAoB;AAClC,SAASC,GAAG,QAAQ,oBAAiB;AAErC,cAAc,4BAAmB;AACjC,cAAc,oBAAW;AACzB,cAAc,4BAAmB;AACjC,cAAc,wBAAe;AAC7B,SAASC,aAAa,QAAQ,2BAAkB;AAMhD,cAAc,mBAAU;AACxB,SAASC,WAAW,QAAQ,6BAA0B;AAEtD,SAASC,aAAa,QAAQ,4BAAmB;AAEjD,cAAc,wBAAqB;AACnC,cAAc,yBAAgB;AAC9B,cAAc,mBAAU;AACxB,SAASC,KAAK,QAAoB,sBAAmB;;AAErD;AACA,OAAO,KAAKC,UAAU,MAAM,uBAAc;;AAE1C;AACA,OAAO,KAAKC,QAAQ,MAAM,qBAAY;AACtC,OAAO,KAAKC,IAAI,MAAM,iBAAQ;AAC9B,SAASC,IAAI,QAAQ,iBAAQ;AAC7B,SAASC,UAAU,QAAQ,wBAAe;AAC1C,SAASC,cAAc,QAAQ,gCAA6B;AAE5D,SAASC,UAAU,EAAEC,WAAW,QAAQ,yBAAgB;AAGxD;AACA,cAAc,uBAAc;AAC5B,cAAc,8BAAqB;AACnC,SAASC,WAAW,QAAQ,yBAAgB;AAC5C,SAASC,KAAK,QAAQ,kBAAS;AAE/B,SAASC,KAAK,QAAQ,kBAAS;AAE/B,SAASC,UAAU,QAAQ,wBAAe;AAE1C,SAASC,MAAM,QAAQ,mBAAU;AAEjC,SAASC,QAAQ,QAAQ,yBAAsB;AAG/C;AACA,SAASC,WAAW,QAAQ,yBAAgB;AAG5C;AACA,cAAc,iBAAQ;AACtB,cAAc,kBAAS;AACvB,cAAc,iBAAQ;AACtB,cAAc,iBAAQ;AACtB,cAAc,qBAAY;AAC1B,cAAc,sBAAa;AAC3B,SAASC,eAAe,QAAQ,yBAAgB;AAGhD;AACA,cAAc,0BAAiB;AAC/B,SAASC,IAAI,QAAQ,iBAAQ;AAE7B,SAASC,GAAG,QAAQ,gBAAO;AAG3B;AACA,cAAc,uBAAc;AAC5B,cAAc,qBAAkB;AAChC,cAAc,wBAAqB;AACnC,cAAc,uBAAoB;AAClC,cAAc,6BAA0B;AACxC,cAAc,wBAAqB;AACnC,SAASC,WAAW,EAAEC,eAAe,EAAEC,OAAO,QAAQ,6BAA0B;AAMhF,SAASC,OAAO,QAAQ,wBAAqB;AAG7C;AACA,OAAO,KAAKC,IAAI,MAAM,iBAAQ;;AAE9B;AACA,OAAO,KAAKC,KAAK,MAAM,sBAAmB","ignoreList":[]}
1
+ {"version":3,"names":["atoms","flatten","Z_INDEX","zIndex","tokens","web","native","ios","android","platform","select","bloomTailwindPreset","bloomThemeCss","bloomThemeBlock","FILL_ROLES","TEXT_ROLES","BORDER_ROLES","SPACING","RADIUS","BORDER_WIDTH","TYPOGRAPHY","FONT_FAMILY_VARS","SHADOW_BOX","bloomShadowStyle","useInteractionState","useDelayedLoading","useThrottledValue","useHaptics","BloomHapticsProvider","useGutters","Icons","sizes","iconSizes","useCommonSVGProps","Dialog","DIALOG_SHEET_BACKDROP_TESTID","BloomDialogProvider","alert","useDialogContext","useDialogControl","Fab","ErrorBoundary","AvatarGroup","UserHoverCard","toast","Typography","Skeleton","Grid","Fill","MediaInsetBorder","IconCircle","ConnectionDots","BenefitRow","BenefitList","PressableScale","PressableWithHover","SubtleHover","ScaleAndFadeIn","ScaleAndFadeOut","ShrinkAndPop","ScreenTransition","AnimatedCheck","SearchInput","Label","Field","InputGroup","Slider","Combobox","BottomSheet","LinkPreviewCard","Item","Kbd","AlertDialog","AlertDialogHost","confirm","Command","Code","Fonts"],"sourceRoot":"../../src","sources":["index.web.ts"],"mappings":"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","ignoreList":[]}