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