@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.
- package/lib/commonjs/animated-check/AnimatedCheck.js +162 -0
- package/lib/commonjs/animated-check/AnimatedCheck.js.map +1 -0
- package/lib/commonjs/animated-check/index.js +13 -0
- package/lib/commonjs/animated-check/index.js.map +1 -0
- package/lib/commonjs/avatar/Avatar.js +67 -96
- package/lib/commonjs/avatar/Avatar.js.map +1 -1
- package/lib/commonjs/avatar/AvatarRing.js +183 -0
- package/lib/commonjs/avatar/AvatarRing.js.map +1 -0
- package/lib/commonjs/avatar/index.js.map +1 -1
- package/lib/commonjs/avatar/squircle-path.js +14 -0
- package/lib/commonjs/avatar/squircle-path.js.map +1 -0
- package/lib/commonjs/avatar/svg-module.js +15 -0
- package/lib/commonjs/avatar/svg-module.js.map +1 -0
- package/lib/commonjs/dialog/placement.js +9 -7
- package/lib/commonjs/dialog/placement.js.map +1 -1
- package/lib/commonjs/fill/index.js.map +1 -1
- package/lib/commonjs/hooks/index.js +20 -0
- package/lib/commonjs/hooks/index.js.map +1 -1
- package/lib/commonjs/hooks/useGutters.js +106 -0
- package/lib/commonjs/hooks/useGutters.js.map +1 -0
- package/lib/commonjs/hooks/useHaptics.js +69 -0
- package/lib/commonjs/hooks/useHaptics.js.map +1 -0
- package/lib/commonjs/hooks/useInteractionState.js +8 -2
- package/lib/commonjs/hooks/useInteractionState.js.map +1 -1
- package/lib/commonjs/index.js +155 -63
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/index.web.js +155 -63
- package/lib/commonjs/index.web.js.map +1 -1
- package/lib/commonjs/media-inset-border/MediaInsetBorder.js +50 -0
- package/lib/commonjs/media-inset-border/MediaInsetBorder.js.map +1 -0
- package/lib/commonjs/media-inset-border/index.js +13 -0
- package/lib/commonjs/media-inset-border/index.js.map +1 -0
- package/lib/commonjs/motion/ScreenTransition.js +46 -0
- package/lib/commonjs/motion/ScreenTransition.js.map +1 -0
- package/lib/commonjs/motion/index.js +32 -0
- package/lib/commonjs/motion/index.js.map +1 -0
- package/lib/commonjs/motion/motion.js +93 -0
- package/lib/commonjs/motion/motion.js.map +1 -0
- package/lib/commonjs/pressable-scale/PressableScale.js +75 -0
- package/lib/commonjs/pressable-scale/PressableScale.js.map +1 -0
- package/lib/commonjs/pressable-scale/index.js +13 -0
- package/lib/commonjs/pressable-scale/index.js.map +1 -0
- package/lib/commonjs/pressable-with-hover/PressableWithHover.js +36 -0
- package/lib/commonjs/pressable-with-hover/PressableWithHover.js.map +1 -0
- package/lib/commonjs/pressable-with-hover/index.js +13 -0
- package/lib/commonjs/pressable-with-hover/index.js.map +1 -0
- package/lib/commonjs/styles/breakpoints.js +24 -0
- package/lib/commonjs/styles/breakpoints.js.map +1 -0
- package/lib/commonjs/styles/index.js +7 -0
- package/lib/commonjs/styles/index.js.map +1 -1
- package/lib/commonjs/subtle-hover/SubtleHover.js +69 -0
- package/lib/commonjs/subtle-hover/SubtleHover.js.map +1 -0
- package/lib/commonjs/subtle-hover/index.js +13 -0
- package/lib/commonjs/subtle-hover/index.js.map +1 -0
- package/lib/commonjs/theme/build-theme.js +2 -0
- package/lib/commonjs/theme/build-theme.js.map +1 -1
- package/lib/commonjs/theme/gradients.js +39 -0
- package/lib/commonjs/theme/gradients.js.map +1 -0
- package/lib/commonjs/theme/index.js +7 -0
- package/lib/commonjs/theme/index.js.map +1 -1
- package/lib/module/animated-check/AnimatedCheck.js +157 -0
- package/lib/module/animated-check/AnimatedCheck.js.map +1 -0
- package/lib/module/animated-check/index.js +4 -0
- package/lib/module/animated-check/index.js.map +1 -0
- package/lib/module/avatar/Avatar.js +66 -96
- package/lib/module/avatar/Avatar.js.map +1 -1
- package/lib/module/avatar/AvatarRing.js +177 -0
- package/lib/module/avatar/AvatarRing.js.map +1 -0
- package/lib/module/avatar/index.js.map +1 -1
- package/lib/module/avatar/squircle-path.js +10 -0
- package/lib/module/avatar/squircle-path.js.map +1 -0
- package/lib/module/avatar/svg-module.js +11 -0
- package/lib/module/avatar/svg-module.js.map +1 -0
- package/lib/module/dialog/placement.js +9 -7
- package/lib/module/dialog/placement.js.map +1 -1
- package/lib/module/fill/index.js.map +1 -1
- package/lib/module/hooks/index.js +2 -0
- package/lib/module/hooks/index.js.map +1 -1
- package/lib/module/hooks/useGutters.js +103 -0
- package/lib/module/hooks/useGutters.js.map +1 -0
- package/lib/module/hooks/useHaptics.js +65 -0
- package/lib/module/hooks/useHaptics.js.map +1 -0
- package/lib/module/hooks/useInteractionState.js +10 -3
- package/lib/module/hooks/useInteractionState.js.map +1 -1
- package/lib/module/index.js +10 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/index.web.js +10 -1
- package/lib/module/index.web.js.map +1 -1
- package/lib/module/media-inset-border/MediaInsetBorder.js +47 -0
- package/lib/module/media-inset-border/MediaInsetBorder.js.map +1 -0
- package/lib/module/media-inset-border/index.js +4 -0
- package/lib/module/media-inset-border/index.js.map +1 -0
- package/lib/module/motion/ScreenTransition.js +40 -0
- package/lib/module/motion/ScreenTransition.js.map +1 -0
- package/lib/module/motion/index.js +5 -0
- package/lib/module/motion/index.js.map +1 -0
- package/lib/module/motion/motion.js +87 -0
- package/lib/module/motion/motion.js.map +1 -0
- package/lib/module/pressable-scale/PressableScale.js +72 -0
- package/lib/module/pressable-scale/PressableScale.js.map +1 -0
- package/lib/module/pressable-scale/index.js +4 -0
- package/lib/module/pressable-scale/index.js.map +1 -0
- package/lib/module/pressable-with-hover/PressableWithHover.js +31 -0
- package/lib/module/pressable-with-hover/PressableWithHover.js.map +1 -0
- package/lib/module/pressable-with-hover/index.js +4 -0
- package/lib/module/pressable-with-hover/index.js.map +1 -0
- package/lib/module/styles/breakpoints.js +20 -0
- package/lib/module/styles/breakpoints.js.map +1 -0
- package/lib/module/styles/index.js +1 -0
- package/lib/module/styles/index.js.map +1 -1
- package/lib/module/subtle-hover/SubtleHover.js +66 -0
- package/lib/module/subtle-hover/SubtleHover.js.map +1 -0
- package/lib/module/subtle-hover/index.js +4 -0
- package/lib/module/subtle-hover/index.js.map +1 -0
- package/lib/module/theme/build-theme.js +2 -0
- package/lib/module/theme/build-theme.js.map +1 -1
- package/lib/module/theme/gradients.js +35 -0
- package/lib/module/theme/gradients.js.map +1 -0
- package/lib/module/theme/index.js +1 -0
- package/lib/module/theme/index.js.map +1 -1
- package/lib/typescript/commonjs/animated-check/AnimatedCheck.d.ts +18 -0
- package/lib/typescript/commonjs/animated-check/AnimatedCheck.d.ts.map +1 -0
- package/lib/typescript/commonjs/animated-check/index.d.ts +3 -0
- package/lib/typescript/commonjs/animated-check/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/avatar/Avatar.d.ts.map +1 -1
- package/lib/typescript/commonjs/avatar/AvatarRing.d.ts +27 -0
- package/lib/typescript/commonjs/avatar/AvatarRing.d.ts.map +1 -0
- package/lib/typescript/commonjs/avatar/index.d.ts +1 -1
- package/lib/typescript/commonjs/avatar/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/avatar/squircle-path.d.ts +8 -0
- package/lib/typescript/commonjs/avatar/squircle-path.d.ts.map +1 -0
- package/lib/typescript/commonjs/avatar/svg-module.d.ts +8 -0
- package/lib/typescript/commonjs/avatar/svg-module.d.ts.map +1 -0
- package/lib/typescript/commonjs/avatar/types.d.ts +30 -0
- package/lib/typescript/commonjs/avatar/types.d.ts.map +1 -1
- package/lib/typescript/commonjs/dialog/placement.d.ts +8 -7
- package/lib/typescript/commonjs/dialog/placement.d.ts.map +1 -1
- package/lib/typescript/commonjs/fill/index.d.ts +2 -2
- package/lib/typescript/commonjs/fill/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/hooks/index.d.ts +4 -0
- package/lib/typescript/commonjs/hooks/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/hooks/useGutters.d.ts +32 -0
- package/lib/typescript/commonjs/hooks/useGutters.d.ts.map +1 -0
- package/lib/typescript/commonjs/hooks/useHaptics.d.ts +28 -0
- package/lib/typescript/commonjs/hooks/useHaptics.d.ts.map +1 -0
- package/lib/typescript/commonjs/hooks/useInteractionState.d.ts +6 -0
- package/lib/typescript/commonjs/hooks/useInteractionState.d.ts.map +1 -1
- package/lib/typescript/commonjs/index.d.ts +16 -0
- package/lib/typescript/commonjs/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/index.web.d.ts +16 -0
- package/lib/typescript/commonjs/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/media-inset-border/MediaInsetBorder.d.ts +26 -0
- package/lib/typescript/commonjs/media-inset-border/MediaInsetBorder.d.ts.map +1 -0
- package/lib/typescript/commonjs/media-inset-border/index.d.ts +3 -0
- package/lib/typescript/commonjs/media-inset-border/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/motion/ScreenTransition.d.ts +33 -0
- package/lib/typescript/commonjs/motion/ScreenTransition.d.ts.map +1 -0
- package/lib/typescript/commonjs/motion/index.d.ts +4 -0
- package/lib/typescript/commonjs/motion/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/motion/motion.d.ts +24 -0
- package/lib/typescript/commonjs/motion/motion.d.ts.map +1 -0
- package/lib/typescript/commonjs/pressable-scale/PressableScale.d.ts +21 -0
- package/lib/typescript/commonjs/pressable-scale/PressableScale.d.ts.map +1 -0
- package/lib/typescript/commonjs/pressable-scale/index.d.ts +3 -0
- package/lib/typescript/commonjs/pressable-scale/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/pressable-with-hover/PressableWithHover.d.ts +18 -0
- package/lib/typescript/commonjs/pressable-with-hover/PressableWithHover.d.ts.map +1 -0
- package/lib/typescript/commonjs/pressable-with-hover/index.d.ts +3 -0
- package/lib/typescript/commonjs/pressable-with-hover/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/styles/breakpoints.d.ts +18 -0
- package/lib/typescript/commonjs/styles/breakpoints.d.ts.map +1 -0
- package/lib/typescript/commonjs/styles/index.d.ts +2 -0
- package/lib/typescript/commonjs/styles/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/subtle-hover/SubtleHover.d.ts +32 -0
- package/lib/typescript/commonjs/subtle-hover/SubtleHover.d.ts.map +1 -0
- package/lib/typescript/commonjs/subtle-hover/index.d.ts +3 -0
- package/lib/typescript/commonjs/subtle-hover/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/theme/build-theme.d.ts.map +1 -1
- package/lib/typescript/commonjs/theme/gradients.d.ts +12 -0
- package/lib/typescript/commonjs/theme/gradients.d.ts.map +1 -0
- package/lib/typescript/commonjs/theme/index.d.ts +2 -1
- package/lib/typescript/commonjs/theme/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/theme/types.d.ts +11 -0
- package/lib/typescript/commonjs/theme/types.d.ts.map +1 -1
- package/lib/typescript/module/animated-check/AnimatedCheck.d.ts +18 -0
- package/lib/typescript/module/animated-check/AnimatedCheck.d.ts.map +1 -0
- package/lib/typescript/module/animated-check/index.d.ts +3 -0
- package/lib/typescript/module/animated-check/index.d.ts.map +1 -0
- package/lib/typescript/module/avatar/Avatar.d.ts.map +1 -1
- package/lib/typescript/module/avatar/AvatarRing.d.ts +27 -0
- package/lib/typescript/module/avatar/AvatarRing.d.ts.map +1 -0
- package/lib/typescript/module/avatar/index.d.ts +1 -1
- package/lib/typescript/module/avatar/index.d.ts.map +1 -1
- package/lib/typescript/module/avatar/squircle-path.d.ts +8 -0
- package/lib/typescript/module/avatar/squircle-path.d.ts.map +1 -0
- package/lib/typescript/module/avatar/svg-module.d.ts +8 -0
- package/lib/typescript/module/avatar/svg-module.d.ts.map +1 -0
- package/lib/typescript/module/avatar/types.d.ts +30 -0
- package/lib/typescript/module/avatar/types.d.ts.map +1 -1
- package/lib/typescript/module/dialog/placement.d.ts +8 -7
- package/lib/typescript/module/dialog/placement.d.ts.map +1 -1
- package/lib/typescript/module/fill/index.d.ts +2 -2
- package/lib/typescript/module/fill/index.d.ts.map +1 -1
- package/lib/typescript/module/hooks/index.d.ts +4 -0
- package/lib/typescript/module/hooks/index.d.ts.map +1 -1
- package/lib/typescript/module/hooks/useGutters.d.ts +32 -0
- package/lib/typescript/module/hooks/useGutters.d.ts.map +1 -0
- package/lib/typescript/module/hooks/useHaptics.d.ts +28 -0
- package/lib/typescript/module/hooks/useHaptics.d.ts.map +1 -0
- package/lib/typescript/module/hooks/useInteractionState.d.ts +6 -0
- package/lib/typescript/module/hooks/useInteractionState.d.ts.map +1 -1
- package/lib/typescript/module/index.d.ts +16 -0
- package/lib/typescript/module/index.d.ts.map +1 -1
- package/lib/typescript/module/index.web.d.ts +16 -0
- package/lib/typescript/module/index.web.d.ts.map +1 -1
- package/lib/typescript/module/media-inset-border/MediaInsetBorder.d.ts +26 -0
- package/lib/typescript/module/media-inset-border/MediaInsetBorder.d.ts.map +1 -0
- package/lib/typescript/module/media-inset-border/index.d.ts +3 -0
- package/lib/typescript/module/media-inset-border/index.d.ts.map +1 -0
- package/lib/typescript/module/motion/ScreenTransition.d.ts +33 -0
- package/lib/typescript/module/motion/ScreenTransition.d.ts.map +1 -0
- package/lib/typescript/module/motion/index.d.ts +4 -0
- package/lib/typescript/module/motion/index.d.ts.map +1 -0
- package/lib/typescript/module/motion/motion.d.ts +24 -0
- package/lib/typescript/module/motion/motion.d.ts.map +1 -0
- package/lib/typescript/module/pressable-scale/PressableScale.d.ts +21 -0
- package/lib/typescript/module/pressable-scale/PressableScale.d.ts.map +1 -0
- package/lib/typescript/module/pressable-scale/index.d.ts +3 -0
- package/lib/typescript/module/pressable-scale/index.d.ts.map +1 -0
- package/lib/typescript/module/pressable-with-hover/PressableWithHover.d.ts +18 -0
- package/lib/typescript/module/pressable-with-hover/PressableWithHover.d.ts.map +1 -0
- package/lib/typescript/module/pressable-with-hover/index.d.ts +3 -0
- package/lib/typescript/module/pressable-with-hover/index.d.ts.map +1 -0
- package/lib/typescript/module/styles/breakpoints.d.ts +18 -0
- package/lib/typescript/module/styles/breakpoints.d.ts.map +1 -0
- package/lib/typescript/module/styles/index.d.ts +2 -0
- package/lib/typescript/module/styles/index.d.ts.map +1 -1
- package/lib/typescript/module/subtle-hover/SubtleHover.d.ts +32 -0
- package/lib/typescript/module/subtle-hover/SubtleHover.d.ts.map +1 -0
- package/lib/typescript/module/subtle-hover/index.d.ts +3 -0
- package/lib/typescript/module/subtle-hover/index.d.ts.map +1 -0
- package/lib/typescript/module/theme/build-theme.d.ts.map +1 -1
- package/lib/typescript/module/theme/gradients.d.ts +12 -0
- package/lib/typescript/module/theme/gradients.d.ts.map +1 -0
- package/lib/typescript/module/theme/index.d.ts +2 -1
- package/lib/typescript/module/theme/index.d.ts.map +1 -1
- package/lib/typescript/module/theme/types.d.ts +11 -0
- package/lib/typescript/module/theme/types.d.ts.map +1 -1
- package/package.json +73 -1
- package/src/__tests__/AnimatedCheck.test.tsx +31 -0
- package/src/__tests__/MediaInsetBorder.test.tsx +36 -0
- package/src/__tests__/Motion.test.tsx +58 -0
- package/src/__tests__/PressableScale.test.tsx +29 -0
- package/src/__tests__/PressableWithHover.test.tsx +48 -0
- package/src/__tests__/SubtleHover.test.tsx +42 -0
- package/src/__tests__/theme-gradients.test.ts +31 -0
- package/src/__tests__/theme.test.ts +3 -0
- package/src/__tests__/useGutters.test.ts +58 -0
- package/src/__tests__/useHaptics.test.tsx +58 -0
- package/src/__tests__/useInteractionState.test.ts +27 -0
- package/src/animated-check/AnimatedCheck.stories.tsx +60 -0
- package/src/animated-check/AnimatedCheck.tsx +173 -0
- package/src/animated-check/index.ts +2 -0
- package/src/avatar/Avatar.stories.tsx +95 -0
- package/src/avatar/Avatar.tsx +61 -110
- package/src/avatar/AvatarRing.tsx +170 -0
- package/src/avatar/index.ts +6 -1
- package/src/avatar/squircle-path.ts +11 -0
- package/src/avatar/svg-module.ts +11 -0
- package/src/avatar/types.ts +32 -0
- package/src/dialog/placement.ts +10 -7
- package/src/fill/index.tsx +2 -2
- package/src/hooks/index.ts +4 -0
- package/src/hooks/useGutters.ts +99 -0
- package/src/hooks/useHaptics.tsx +69 -0
- package/src/hooks/useInteractionState.ts +8 -2
- package/src/index.ts +20 -0
- package/src/index.web.ts +20 -0
- package/src/media-inset-border/MediaInsetBorder.stories.tsx +60 -0
- package/src/media-inset-border/MediaInsetBorder.tsx +72 -0
- package/src/media-inset-border/index.ts +2 -0
- package/src/motion/Motion.stories.tsx +99 -0
- package/src/motion/ScreenTransition.tsx +71 -0
- package/src/motion/index.ts +3 -0
- package/src/motion/motion.ts +75 -0
- package/src/pressable-scale/PressableScale.stories.tsx +71 -0
- package/src/pressable-scale/PressableScale.tsx +103 -0
- package/src/pressable-scale/index.ts +2 -0
- package/src/pressable-with-hover/PressableWithHover.stories.tsx +43 -0
- package/src/pressable-with-hover/PressableWithHover.tsx +43 -0
- package/src/pressable-with-hover/index.ts +2 -0
- package/src/styles/breakpoints.ts +18 -0
- package/src/styles/index.ts +2 -0
- package/src/subtle-hover/SubtleHover.stories.tsx +72 -0
- package/src/subtle-hover/SubtleHover.tsx +90 -0
- package/src/subtle-hover/index.ts +2 -0
- package/src/theme/build-theme.ts +2 -0
- package/src/theme/gradients.ts +61 -0
- package/src/theme/index.ts +2 -1
- package/src/theme/types.ts +13 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MediaInsetBorder.d.ts","sourceRoot":"","sources":["../../../../src/media-inset-border/MediaInsetBorder.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AActB,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,qBAAqB,2CAelF;yBAfe,gBAAgB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/media-inset-border/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type StyleProp, type ViewStyle } from 'react-native';
|
|
3
|
+
/** Direction the incoming screen travels. */
|
|
4
|
+
export type ScreenTransitionDirection = 'forward' | 'backward';
|
|
5
|
+
export interface ScreenTransitionProps {
|
|
6
|
+
/**
|
|
7
|
+
* `'forward'` slides the new screen in from the right, `'backward'` from the
|
|
8
|
+
* left — matching a push / pop navigation gesture.
|
|
9
|
+
*/
|
|
10
|
+
direction: ScreenTransitionDirection;
|
|
11
|
+
/**
|
|
12
|
+
* Enable the transition on web. Off by default: Reanimated layout animations
|
|
13
|
+
* are fragile across web bundlers, so web opts in explicitly and gets a
|
|
14
|
+
* lightweight cross-fade rather than a slide.
|
|
15
|
+
*/
|
|
16
|
+
enabledWeb?: boolean;
|
|
17
|
+
style?: StyleProp<ViewStyle>;
|
|
18
|
+
children?: React.ReactNode;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Wraps `children` in a Reanimated layout-animated view that slides in
|
|
22
|
+
* directionally on native and (optionally) cross-fades on web. Ported from
|
|
23
|
+
* Bluesky's `ScreenTransition`.
|
|
24
|
+
*
|
|
25
|
+
* On web the slide is intentionally dropped: layout animations there are
|
|
26
|
+
* unreliable, so `enabledWeb` gates a simple fade and the default is no
|
|
27
|
+
* transition at all.
|
|
28
|
+
*/
|
|
29
|
+
export declare function ScreenTransition({ direction, enabledWeb, style, children, }: ScreenTransitionProps): import("react/jsx-runtime").JSX.Element;
|
|
30
|
+
export declare namespace ScreenTransition {
|
|
31
|
+
var displayName: string;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=ScreenTransition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScreenTransition.d.ts","sourceRoot":"","sources":["../../../../src/motion/ScreenTransition.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAY,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AASxE,6CAA6C;AAC7C,MAAM,MAAM,yBAAyB,GAAG,SAAS,GAAG,UAAU,CAAC;AAE/D,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,SAAS,EAAE,yBAAyB,CAAC;IACrC;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAOD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,SAAS,EACT,UAAU,EACV,KAAK,EACL,QAAQ,GACT,EAAE,qBAAqB,2CAoBvB;yBAzBe,gBAAgB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/motion/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type LayoutAnimation } from 'react-native-reanimated';
|
|
2
|
+
/**
|
|
3
|
+
* Reanimated custom layout-animation presets. Each is a worklet builder
|
|
4
|
+
* compatible with an `Animated.View`'s `entering` / `exiting` prop:
|
|
5
|
+
*
|
|
6
|
+
* ```tsx
|
|
7
|
+
* <Animated.View entering={ScaleAndFadeIn} exiting={ScaleAndFadeOut} />
|
|
8
|
+
* ```
|
|
9
|
+
*
|
|
10
|
+
* Ported from Bluesky's custom-animation set. The `'worklet'` directive is
|
|
11
|
+
* preserved through Bloom's build; the consuming app's Metro + reanimated Babel
|
|
12
|
+
* plugin transforms it so the animation runs on the UI thread (same path the
|
|
13
|
+
* existing `bottom-sheet` gesture worklets rely on).
|
|
14
|
+
*/
|
|
15
|
+
/** Entering: fade in while growing from 70% to full size. */
|
|
16
|
+
export declare const ScaleAndFadeIn: () => LayoutAnimation;
|
|
17
|
+
/** Exiting counterpart to {@link ScaleAndFadeIn}: fade out while shrinking to 70%. */
|
|
18
|
+
export declare const ScaleAndFadeOut: () => LayoutAnimation;
|
|
19
|
+
/**
|
|
20
|
+
* Exiting with a brief "pop": the scale dips to 70%, overshoots to 110%, and the
|
|
21
|
+
* element fades out. Good for confirming a tapped or removed item.
|
|
22
|
+
*/
|
|
23
|
+
export declare const ShrinkAndPop: () => LayoutAnimation;
|
|
24
|
+
//# sourceMappingURL=motion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"motion.d.ts","sourceRoot":"","sources":["../../../../src/motion/motion.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,yBAAyB,CAAC;AAEjC;;;;;;;;;;;;GAYG;AAEH,6DAA6D;AAC7D,eAAO,MAAM,cAAc,EAAE,MAAM,eAYlC,CAAC;AAEF,sFAAsF;AACtF,eAAO,MAAM,eAAe,EAAE,MAAM,eAYnC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,eAmBhC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type PressableProps, type StyleProp, type View, type ViewStyle } from 'react-native';
|
|
3
|
+
export interface PressableScaleProps extends Omit<PressableProps, 'children' | 'style'> {
|
|
4
|
+
/** Scale applied while pressed. Defaults to `0.98`. */
|
|
5
|
+
targetScale?: number;
|
|
6
|
+
/** Style for the outer, full-size touch target (stays put while pressing). */
|
|
7
|
+
style?: StyleProp<ViewStyle>;
|
|
8
|
+
/** Style for the inner content wrapper that actually scales. */
|
|
9
|
+
contentContainerStyle?: StyleProp<ViewStyle>;
|
|
10
|
+
children?: React.ReactNode;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* A drop-in {@link Pressable} whose content springs to a smaller scale on
|
|
14
|
+
* press-in and back on release. The outer pressable stays full size (so the
|
|
15
|
+
* touch target never shrinks) while an inner wrapper scales.
|
|
16
|
+
*
|
|
17
|
+
* Honours the OS "reduce motion" setting and disables the effect on non-touch
|
|
18
|
+
* web pointers.
|
|
19
|
+
*/
|
|
20
|
+
export declare const PressableScale: React.ForwardRefExoticComponent<PressableScaleProps & React.RefAttributes<View>>;
|
|
21
|
+
//# sourceMappingURL=PressableScale.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PressableScale.d.ts","sourceRoot":"","sources":["../../../../src/pressable-scale/PressableScale.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAC1C,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,IAAI,EACT,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AA0BtB,MAAM,WAAW,mBACf,SAAQ,IAAI,CAAC,cAAc,EAAE,UAAU,GAAG,OAAO,CAAC;IAClD,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,gEAAgE;IAChE,qBAAqB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7C,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,kFA+C1B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/pressable-scale/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type PressableProps, type StyleProp, type View, type ViewStyle } from 'react-native';
|
|
3
|
+
export interface PressableWithHoverProps extends Omit<PressableProps, 'style'> {
|
|
4
|
+
/** Base style; `hoverStyle` is merged on top while the pointer is over it. */
|
|
5
|
+
style?: StyleProp<ViewStyle>;
|
|
6
|
+
/**
|
|
7
|
+
* Style merged over `style` while hovered. Web-only: react-native-web fires
|
|
8
|
+
* `onHoverIn`/`onHoverOut`, so on touch platforms this is simply never applied.
|
|
9
|
+
*/
|
|
10
|
+
hoverStyle: StyleProp<ViewStyle>;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* A {@link Pressable} that merges `hoverStyle` on top of `style` while hovered.
|
|
14
|
+
* Hover is a web-only affordance (native platforms have no pointer hover), so
|
|
15
|
+
* this behaves like a plain `Pressable` on touch devices.
|
|
16
|
+
*/
|
|
17
|
+
export declare const PressableWithHover: React.ForwardRefExoticComponent<PressableWithHoverProps & React.RefAttributes<View>>;
|
|
18
|
+
//# sourceMappingURL=PressableWithHover.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PressableWithHover.d.ts","sourceRoot":"","sources":["../../../../src/pressable-with-hover/PressableWithHover.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAC1C,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,IAAI,EACT,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAItB,MAAM,WAAW,uBAAwB,SAAQ,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC;IAC5E,8EAA8E;IAC9E,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B;;;OAGG;IACH,UAAU,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAClC;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,sFAc9B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/pressable-with-hover/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bloom's responsive breakpoint min-widths (px), matching the Tailwind /
|
|
3
|
+
* NativeWind defaults used across the design system.
|
|
4
|
+
*
|
|
5
|
+
* This is the SINGLE SOURCE OF TRUTH for breakpoint values. Anything that
|
|
6
|
+
* branches on viewport width — the `<Dialog>` responsive `placement` resolver,
|
|
7
|
+
* the `useGutters` hook — reads from here rather than hardcoding its own
|
|
8
|
+
* numbers, so a change here propagates everywhere.
|
|
9
|
+
*/
|
|
10
|
+
export declare const BREAKPOINTS: {
|
|
11
|
+
readonly sm: 640;
|
|
12
|
+
readonly md: 768;
|
|
13
|
+
readonly lg: 1024;
|
|
14
|
+
readonly xl: 1280;
|
|
15
|
+
};
|
|
16
|
+
/** A named responsive breakpoint tier. */
|
|
17
|
+
export type Breakpoint = keyof typeof BREAKPOINTS;
|
|
18
|
+
//# sourceMappingURL=breakpoints.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"breakpoints.d.ts","sourceRoot":"","sources":["../../../../src/styles/breakpoints.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW;;;;;CAKd,CAAC;AAEX,0CAA0C;AAC1C,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,WAAW,CAAC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export { atoms, flatten } from './atoms';
|
|
2
2
|
export type { ViewStyleProp, TextStyleProp } from './atoms';
|
|
3
3
|
export * as tokens from './tokens';
|
|
4
|
+
export { BREAKPOINTS } from './breakpoints';
|
|
5
|
+
export type { Breakpoint } from './breakpoints';
|
|
4
6
|
export { Z_INDEX, zIndex } from './z-index';
|
|
5
7
|
export { web, native, ios, android, platform, select } from './platform';
|
|
6
8
|
export { SUPPORTS_NATIVE_DRIVER } from './native-driver';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/styles/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACzC,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/styles/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACzC,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type StyleProp, type ViewStyle } from 'react-native';
|
|
2
|
+
export interface SubtleHoverProps {
|
|
3
|
+
/** Whether the parent is currently hovered. Drives the overlay opacity. */
|
|
4
|
+
hover: boolean;
|
|
5
|
+
/**
|
|
6
|
+
* Overlay opacity when hovered. Defaults to a mode-tuned value (0.4 dark /
|
|
7
|
+
* 0.5 light) that reads as a gentle contrast wash.
|
|
8
|
+
*/
|
|
9
|
+
opacity?: number;
|
|
10
|
+
/** Extra style merged last — e.g. `borderRadius` to match the parent. */
|
|
11
|
+
style?: StyleProp<ViewStyle>;
|
|
12
|
+
/**
|
|
13
|
+
* Opt in to rendering on native. Off by default: hover is a pointer
|
|
14
|
+
* affordance, so this is a web-only overlay unless a native surface wants the
|
|
15
|
+
* same wash driven by another interaction (e.g. press).
|
|
16
|
+
*/
|
|
17
|
+
native?: boolean;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* An absolutely-positioned, non-interactive contrast wash that fades in while
|
|
21
|
+
* its parent is hovered. Ported from Bluesky's `SubtleHover`. Pairs naturally
|
|
22
|
+
* with {@link useInteractionState} — pass its `state` as `hover`.
|
|
23
|
+
*
|
|
24
|
+
* Renders nothing on touch-web (no hovering pointer) and on native unless
|
|
25
|
+
* `native` is set. Color comes from the theme's `contrast50` token so the wash
|
|
26
|
+
* tracks the active preset and light/dark mode.
|
|
27
|
+
*/
|
|
28
|
+
export declare function SubtleHover({ hover, opacity, style, native }: SubtleHoverProps): import("react/jsx-runtime").JSX.Element | null;
|
|
29
|
+
export declare namespace SubtleHover {
|
|
30
|
+
var displayName: string;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=SubtleHover.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SubtleHover.d.ts","sourceRoot":"","sources":["../../../../src/subtle-hover/SubtleHover.tsx"],"names":[],"mappings":"AACA,OAAO,EAA8B,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AA4B1F,MAAM,WAAW,gBAAgB;IAC/B,2EAA2E;IAC3E,KAAK,EAAE,OAAO,CAAC;IACf;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAc,EAAE,EAAE,gBAAgB,kDAoBtF;yBApBe,WAAW"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/subtle-hover/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-theme.d.ts","sourceRoot":"","sources":["../../../../src/theme/build-theme.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"build-theme.d.ts","sourceRoot":"","sources":["../../../../src/theme/build-theme.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAIvE,OAAO,KAAK,EAAE,KAAK,EAAe,MAAM,SAAS,CAAC;AAElD;;;GAGG;AACH,eAAO,MAAM,aAAa;;;;;CAKhB,CAAC;AAyFX;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,OAAO,GAAG,MAAM,EAC1B,UAAU,GAAE,OAAe,GAC1B,KAAK,CAWP"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ThemeGradients } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Brand-neutral named linear-gradient palettes shared across the design system —
|
|
4
|
+
* decorative avatar rings, hero surfaces, empty-state art, and similar accents.
|
|
5
|
+
*
|
|
6
|
+
* Each entry lists ordered `[offset, color]` stops where `offset` is a `0–1`
|
|
7
|
+
* position along the gradient axis. These are intentionally theme-agnostic (the
|
|
8
|
+
* same values are exposed in light and dark mode) and not tied to any single
|
|
9
|
+
* app's brand, so components can reference them by a stable, descriptive name.
|
|
10
|
+
*/
|
|
11
|
+
export declare const THEME_GRADIENTS: ThemeGradients;
|
|
12
|
+
//# sourceMappingURL=gradients.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gradients.d.ts","sourceRoot":"","sources":["../../../../src/theme/gradients.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,EAAE,cAiD7B,CAAC"}
|
|
@@ -3,10 +3,11 @@ export type { BloomThemeProviderProps, BloomThemeContextValue, } from './BloomTh
|
|
|
3
3
|
export { BloomColorScope, useColorScopeStyle } from './color-scope';
|
|
4
4
|
export type { BloomColorScopeProps } from './color-scope';
|
|
5
5
|
export { buildTheme, STATUS_COLORS } from './build-theme';
|
|
6
|
+
export { THEME_GRADIENTS } from './gradients';
|
|
6
7
|
export { useTheme, useThemeColor, useBloomTheme } from './use-theme';
|
|
7
8
|
export { useNavigationTheme } from './use-navigation-theme';
|
|
8
9
|
export type { NavigationTheme, NavigationThemeFont } from './use-navigation-theme';
|
|
9
|
-
export type { Theme, ThemeColors, ThemeMode } from './types';
|
|
10
|
+
export type { Theme, ThemeColors, ThemeMode, ThemeGradient, ThemeGradients } from './types';
|
|
10
11
|
export type { AppColorName, AppColorPreset, PresetTokens } from './color-presets';
|
|
11
12
|
export { APP_COLOR_NAMES, PREMIUM_COLOR_NAMES, APP_COLOR_PRESETS, HEX_TO_APP_COLOR, hexToAppColorName, } from './color-presets';
|
|
12
13
|
export { getPresetVars, applyPresetVarsToDocument } from './preset-vars';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EACV,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACpE,YAAY,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AACnF,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EACV,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACpE,YAAY,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AACnF,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC5F,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -34,9 +34,20 @@ export interface ThemeColors {
|
|
|
34
34
|
shadow: string;
|
|
35
35
|
overlay: string;
|
|
36
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* A single named gradient: an ordered list of `[offset, color]` stops where
|
|
39
|
+
* `offset` runs 0–1 along the gradient axis and `color` is any RN/CSS color.
|
|
40
|
+
*/
|
|
41
|
+
export interface ThemeGradient {
|
|
42
|
+
values: Array<[number, string]>;
|
|
43
|
+
}
|
|
44
|
+
/** Map of named gradients exposed on the theme (`theme.gradients`). */
|
|
45
|
+
export type ThemeGradients = Record<string, ThemeGradient>;
|
|
37
46
|
export interface Theme {
|
|
38
47
|
mode: 'light' | 'dark';
|
|
39
48
|
colors: ThemeColors;
|
|
49
|
+
/** Brand-neutral named linear-gradient palettes. Theme-agnostic (same in light/dark). */
|
|
50
|
+
gradients: ThemeGradients;
|
|
40
51
|
isDark: boolean;
|
|
41
52
|
isLight: boolean;
|
|
42
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/theme/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEjE,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAE3B,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IAErB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IAEpB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,6EAA6E;IAC7E,YAAY,EAAE,MAAM,CAAC;IACrB,8EAA8E;IAC9E,WAAW,EAAE,MAAM,CAAC;IAEpB,iFAAiF;IACjF,SAAS,EAAE,MAAM,CAAC;IAElB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IAEnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IAEb,aAAa,EAAE,MAAM,CAAC;IACtB,uBAAuB,EAAE,MAAM,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,wBAAwB,EAAE,MAAM,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;IAEnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/theme/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEjE,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAE3B,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IAErB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IAEpB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,6EAA6E;IAC7E,YAAY,EAAE,MAAM,CAAC;IACrB,8EAA8E;IAC9E,WAAW,EAAE,MAAM,CAAC;IAEpB,iFAAiF;IACjF,SAAS,EAAE,MAAM,CAAC;IAElB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IAEnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IAEb,aAAa,EAAE,MAAM,CAAC;IACtB,uBAAuB,EAAE,MAAM,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,wBAAwB,EAAE,MAAM,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;IAEnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACjC;AAED,uEAAuE;AACvE,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAE3D,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,MAAM,EAAE,WAAW,CAAC;IACpB,yFAAyF;IACzF,SAAS,EAAE,cAAc,CAAC;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oxyhq/bloom",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.28.0",
|
|
4
4
|
"description": "Bloom UI — Oxy ecosystem component library for React Native + Expo + Web",
|
|
5
5
|
"main": "lib/commonjs/index.js",
|
|
6
6
|
"module": "lib/module/index.js",
|
|
@@ -371,6 +371,72 @@
|
|
|
371
371
|
"default": "./lib/commonjs/fill/index.js"
|
|
372
372
|
}
|
|
373
373
|
},
|
|
374
|
+
"./media-inset-border": {
|
|
375
|
+
"react-native": "./src/media-inset-border/index.ts",
|
|
376
|
+
"import": {
|
|
377
|
+
"types": "./lib/typescript/module/media-inset-border/index.d.ts",
|
|
378
|
+
"default": "./lib/module/media-inset-border/index.js"
|
|
379
|
+
},
|
|
380
|
+
"require": {
|
|
381
|
+
"types": "./lib/typescript/commonjs/media-inset-border/index.d.ts",
|
|
382
|
+
"default": "./lib/commonjs/media-inset-border/index.js"
|
|
383
|
+
}
|
|
384
|
+
},
|
|
385
|
+
"./pressable-scale": {
|
|
386
|
+
"react-native": "./src/pressable-scale/index.ts",
|
|
387
|
+
"import": {
|
|
388
|
+
"types": "./lib/typescript/module/pressable-scale/index.d.ts",
|
|
389
|
+
"default": "./lib/module/pressable-scale/index.js"
|
|
390
|
+
},
|
|
391
|
+
"require": {
|
|
392
|
+
"types": "./lib/typescript/commonjs/pressable-scale/index.d.ts",
|
|
393
|
+
"default": "./lib/commonjs/pressable-scale/index.js"
|
|
394
|
+
}
|
|
395
|
+
},
|
|
396
|
+
"./pressable-with-hover": {
|
|
397
|
+
"react-native": "./src/pressable-with-hover/index.ts",
|
|
398
|
+
"import": {
|
|
399
|
+
"types": "./lib/typescript/module/pressable-with-hover/index.d.ts",
|
|
400
|
+
"default": "./lib/module/pressable-with-hover/index.js"
|
|
401
|
+
},
|
|
402
|
+
"require": {
|
|
403
|
+
"types": "./lib/typescript/commonjs/pressable-with-hover/index.d.ts",
|
|
404
|
+
"default": "./lib/commonjs/pressable-with-hover/index.js"
|
|
405
|
+
}
|
|
406
|
+
},
|
|
407
|
+
"./subtle-hover": {
|
|
408
|
+
"react-native": "./src/subtle-hover/index.ts",
|
|
409
|
+
"import": {
|
|
410
|
+
"types": "./lib/typescript/module/subtle-hover/index.d.ts",
|
|
411
|
+
"default": "./lib/module/subtle-hover/index.js"
|
|
412
|
+
},
|
|
413
|
+
"require": {
|
|
414
|
+
"types": "./lib/typescript/commonjs/subtle-hover/index.d.ts",
|
|
415
|
+
"default": "./lib/commonjs/subtle-hover/index.js"
|
|
416
|
+
}
|
|
417
|
+
},
|
|
418
|
+
"./motion": {
|
|
419
|
+
"react-native": "./src/motion/index.ts",
|
|
420
|
+
"import": {
|
|
421
|
+
"types": "./lib/typescript/module/motion/index.d.ts",
|
|
422
|
+
"default": "./lib/module/motion/index.js"
|
|
423
|
+
},
|
|
424
|
+
"require": {
|
|
425
|
+
"types": "./lib/typescript/commonjs/motion/index.d.ts",
|
|
426
|
+
"default": "./lib/commonjs/motion/index.js"
|
|
427
|
+
}
|
|
428
|
+
},
|
|
429
|
+
"./animated-check": {
|
|
430
|
+
"react-native": "./src/animated-check/index.ts",
|
|
431
|
+
"import": {
|
|
432
|
+
"types": "./lib/typescript/module/animated-check/index.d.ts",
|
|
433
|
+
"default": "./lib/module/animated-check/index.js"
|
|
434
|
+
},
|
|
435
|
+
"require": {
|
|
436
|
+
"types": "./lib/typescript/commonjs/animated-check/index.d.ts",
|
|
437
|
+
"default": "./lib/commonjs/animated-check/index.js"
|
|
438
|
+
}
|
|
439
|
+
},
|
|
374
440
|
"./icon-circle": {
|
|
375
441
|
"react-native": "./src/icon-circle/index.tsx",
|
|
376
442
|
"import": {
|
|
@@ -895,6 +961,7 @@
|
|
|
895
961
|
"typescript": "tsc --noEmit",
|
|
896
962
|
"pretypescript": "node scripts/generate-font-data.mjs",
|
|
897
963
|
"clean": "rm -rf lib",
|
|
964
|
+
"prepack": "bun run clean && bunx bob build",
|
|
898
965
|
"prepare": "bob build || true",
|
|
899
966
|
"release": "rm -rf lib && bun run build && release-it",
|
|
900
967
|
"storybook": "storybook dev -p 6006 --no-open",
|
|
@@ -926,6 +993,7 @@
|
|
|
926
993
|
"@types/react-native": "*",
|
|
927
994
|
"@vitejs/plugin-react": "^6.0.2",
|
|
928
995
|
"expo-font": "^56.0.5",
|
|
996
|
+
"expo-haptics": "~56.0.3",
|
|
929
997
|
"expo-router": "^56.0.0",
|
|
930
998
|
"jest": "^30.3.0",
|
|
931
999
|
"jest-environment-jsdom": "^30.4.1",
|
|
@@ -950,6 +1018,7 @@
|
|
|
950
1018
|
"peerDependencies": {
|
|
951
1019
|
"expo": "*",
|
|
952
1020
|
"expo-font": "*",
|
|
1021
|
+
"expo-haptics": "*",
|
|
953
1022
|
"expo-router": ">=3.0.0",
|
|
954
1023
|
"react": ">=18.0.0",
|
|
955
1024
|
"react-dom": ">=18.0.0",
|
|
@@ -968,6 +1037,9 @@
|
|
|
968
1037
|
"expo-font": {
|
|
969
1038
|
"optional": true
|
|
970
1039
|
},
|
|
1040
|
+
"expo-haptics": {
|
|
1041
|
+
"optional": true
|
|
1042
|
+
},
|
|
971
1043
|
"expo-router": {
|
|
972
1044
|
"optional": true
|
|
973
1045
|
},
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { act, render } from '@testing-library/react-native';
|
|
3
|
+
|
|
4
|
+
import { BloomThemeProvider } from '../theme/BloomThemeProvider';
|
|
5
|
+
import { AnimatedCheck, type AnimatedCheckRef } from '../animated-check';
|
|
6
|
+
|
|
7
|
+
function renderWithTheme(ui: React.ReactElement) {
|
|
8
|
+
return render(
|
|
9
|
+
<BloomThemeProvider mode="light" colorPreset="teal">
|
|
10
|
+
{ui}
|
|
11
|
+
</BloomThemeProvider>,
|
|
12
|
+
);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
describe('AnimatedCheck', () => {
|
|
16
|
+
it('carries a displayName', () => {
|
|
17
|
+
expect(AnimatedCheck.displayName).toBe('AnimatedCheck');
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
it('renders the animated SVG when react-native-svg is available', () => {
|
|
21
|
+
const { toJSON } = renderWithTheme(<AnimatedCheck size={48} />);
|
|
22
|
+
expect(toJSON()).not.toBeNull();
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it('exposes an imperative play() that runs without throwing', () => {
|
|
26
|
+
const ref = React.createRef<AnimatedCheckRef>();
|
|
27
|
+
renderWithTheme(<AnimatedCheck ref={ref} size={48} color="#6366f1" />);
|
|
28
|
+
expect(ref.current).not.toBeNull();
|
|
29
|
+
expect(() => act(() => ref.current?.play())).not.toThrow();
|
|
30
|
+
});
|
|
31
|
+
});
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { render } from '@testing-library/react-native';
|
|
3
|
+
|
|
4
|
+
import { BloomThemeProvider } from '../theme/BloomThemeProvider';
|
|
5
|
+
import { MediaInsetBorder } from '../media-inset-border';
|
|
6
|
+
|
|
7
|
+
function renderWithTheme(ui: React.ReactElement) {
|
|
8
|
+
return render(
|
|
9
|
+
<BloomThemeProvider mode="light" colorPreset="teal">
|
|
10
|
+
{ui}
|
|
11
|
+
</BloomThemeProvider>,
|
|
12
|
+
);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
describe('MediaInsetBorder', () => {
|
|
16
|
+
it('carries a displayName', () => {
|
|
17
|
+
expect(MediaInsetBorder.displayName).toBe('MediaInsetBorder');
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
it('renders the softened border by default', () => {
|
|
21
|
+
const { UNSAFE_root } = renderWithTheme(<MediaInsetBorder />);
|
|
22
|
+
expect(UNSAFE_root).toBeTruthy();
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it('renders the opaque variant', () => {
|
|
26
|
+
const { UNSAFE_root } = renderWithTheme(<MediaInsetBorder opaque />);
|
|
27
|
+
expect(UNSAFE_root).toBeTruthy();
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
it('accepts a style override for borderRadius', () => {
|
|
31
|
+
const { UNSAFE_root } = renderWithTheme(
|
|
32
|
+
<MediaInsetBorder style={{ borderRadius: 999 }} />,
|
|
33
|
+
);
|
|
34
|
+
expect(UNSAFE_root).toBeTruthy();
|
|
35
|
+
});
|
|
36
|
+
});
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Text } from 'react-native';
|
|
3
|
+
import { render } from '@testing-library/react-native';
|
|
4
|
+
|
|
5
|
+
import {
|
|
6
|
+
ScaleAndFadeIn,
|
|
7
|
+
ScaleAndFadeOut,
|
|
8
|
+
ScreenTransition,
|
|
9
|
+
ShrinkAndPop,
|
|
10
|
+
} from '../motion';
|
|
11
|
+
|
|
12
|
+
// The reanimated mock resolves `withTiming(v)` -> v, `withDelay(d, v)` -> v and
|
|
13
|
+
// `withSequence(...v)` -> last, so the builder output is deterministic.
|
|
14
|
+
|
|
15
|
+
describe('motion presets', () => {
|
|
16
|
+
it('ScaleAndFadeIn enters from 70% scale and transparent', () => {
|
|
17
|
+
const { initialValues, animations } = ScaleAndFadeIn();
|
|
18
|
+
expect(initialValues).toEqual({ opacity: 0, transform: [{ scale: 0.7 }] });
|
|
19
|
+
expect(animations).toEqual({ opacity: 1, transform: [{ scale: 1 }] });
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
it('ScaleAndFadeOut exits to 70% scale and transparent', () => {
|
|
23
|
+
const { initialValues, animations } = ScaleAndFadeOut();
|
|
24
|
+
expect(initialValues).toEqual({ opacity: 1, transform: [{ scale: 1 }] });
|
|
25
|
+
expect(animations).toEqual({ opacity: 0, transform: [{ scale: 0.7 }] });
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
it('ShrinkAndPop overshoots to 110% before leaving', () => {
|
|
29
|
+
const { initialValues, animations } = ShrinkAndPop();
|
|
30
|
+
expect(initialValues).toEqual({ opacity: 1, transform: [{ scale: 1 }] });
|
|
31
|
+
// withSequence resolves to its final keyframe (the 1.1 overshoot) in the mock.
|
|
32
|
+
expect(animations.transform).toEqual([{ scale: 1.1 }]);
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
describe('ScreenTransition', () => {
|
|
37
|
+
it('carries a displayName', () => {
|
|
38
|
+
expect(ScreenTransition.displayName).toBe('ScreenTransition');
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
it('renders its children for a forward transition', () => {
|
|
42
|
+
const { getByText } = render(
|
|
43
|
+
<ScreenTransition direction="forward">
|
|
44
|
+
<Text>Screen body</Text>
|
|
45
|
+
</ScreenTransition>,
|
|
46
|
+
);
|
|
47
|
+
expect(getByText('Screen body')).toBeTruthy();
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
it('renders its children for a backward transition', () => {
|
|
51
|
+
const { getByText } = render(
|
|
52
|
+
<ScreenTransition direction="backward" enabledWeb>
|
|
53
|
+
<Text>Back</Text>
|
|
54
|
+
</ScreenTransition>,
|
|
55
|
+
);
|
|
56
|
+
expect(getByText('Back')).toBeTruthy();
|
|
57
|
+
});
|
|
58
|
+
});
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Text } from 'react-native';
|
|
3
|
+
import { render } from '@testing-library/react-native';
|
|
4
|
+
|
|
5
|
+
import { PressableScale } from '../pressable-scale';
|
|
6
|
+
|
|
7
|
+
describe('PressableScale', () => {
|
|
8
|
+
it('carries a displayName', () => {
|
|
9
|
+
expect(PressableScale.displayName).toBe('PressableScale');
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
it('renders its children', () => {
|
|
13
|
+
const { getByText } = render(
|
|
14
|
+
<PressableScale accessibilityLabel="Press me">
|
|
15
|
+
<Text>Tap target</Text>
|
|
16
|
+
</PressableScale>,
|
|
17
|
+
);
|
|
18
|
+
expect(getByText('Tap target')).toBeTruthy();
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
it('renders with a custom target scale', () => {
|
|
22
|
+
const { getByText } = render(
|
|
23
|
+
<PressableScale targetScale={0.9} accessibilityLabel="Press me">
|
|
24
|
+
<Text>Scaled</Text>
|
|
25
|
+
</PressableScale>,
|
|
26
|
+
);
|
|
27
|
+
expect(getByText('Scaled')).toBeTruthy();
|
|
28
|
+
});
|
|
29
|
+
});
|