@cyberkaidev/ui 0.1.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/LICENSE +20 -0
- package/README.md +721 -0
- package/lib/module/ThemeProvider.js +84 -0
- package/lib/module/ThemeProvider.js.map +1 -0
- package/lib/module/components/AppBar.js +185 -0
- package/lib/module/components/AppBar.js.map +1 -0
- package/lib/module/components/BounceEffect.js +50 -0
- package/lib/module/components/BounceEffect.js.map +1 -0
- package/lib/module/components/Button.js +48 -0
- package/lib/module/components/Button.js.map +1 -0
- package/lib/module/components/Chips.js +94 -0
- package/lib/module/components/Chips.js.map +1 -0
- package/lib/module/components/IconButton.js +71 -0
- package/lib/module/components/IconButton.js.map +1 -0
- package/lib/module/components/InforList.js +92 -0
- package/lib/module/components/InforList.js.map +1 -0
- package/lib/module/components/LoadingApp.js +58 -0
- package/lib/module/components/LoadingApp.js.map +1 -0
- package/lib/module/components/Overlays.js +20 -0
- package/lib/module/components/Overlays.js.map +1 -0
- package/lib/module/components/RippleEffect.js +178 -0
- package/lib/module/components/RippleEffect.js.map +1 -0
- package/lib/module/components/Scaffold.js +172 -0
- package/lib/module/components/Scaffold.js.map +1 -0
- package/lib/module/components/SearchBar.js +161 -0
- package/lib/module/components/SearchBar.js.map +1 -0
- package/lib/module/components/SegmentedButton.js +151 -0
- package/lib/module/components/SegmentedButton.js.map +1 -0
- package/lib/module/components/ShapedButton.js +58 -0
- package/lib/module/components/ShapedButton.js.map +1 -0
- package/lib/module/components/SlideModal.js +196 -0
- package/lib/module/components/SlideModal.js.map +1 -0
- package/lib/module/components/TabBar.js +107 -0
- package/lib/module/components/TabBar.js.map +1 -0
- package/lib/module/components/Text.js +47 -0
- package/lib/module/components/Text.js.map +1 -0
- package/lib/module/components/TextButton.js +53 -0
- package/lib/module/components/TextButton.js.map +1 -0
- package/lib/module/components/TextInput.js +83 -0
- package/lib/module/components/TextInput.js.map +1 -0
- package/lib/module/components/Toast.js +101 -0
- package/lib/module/components/Toast.js.map +1 -0
- package/lib/module/hooks/useAppBarScroll.js +20 -0
- package/lib/module/hooks/useAppBarScroll.js.map +1 -0
- package/lib/module/hooks/usePressAndHoldRepeat.js +71 -0
- package/lib/module/hooks/usePressAndHoldRepeat.js.map +1 -0
- package/lib/module/icons/Icon.js +85 -0
- package/lib/module/icons/Icon.js.map +1 -0
- package/lib/module/index.js +42 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/responsive.js +28 -0
- package/lib/module/responsive.js.map +1 -0
- package/lib/module/stores/useLoadingApp.js +14 -0
- package/lib/module/stores/useLoadingApp.js.map +1 -0
- package/lib/module/stores/useToast.js +24 -0
- package/lib/module/stores/useToast.js.map +1 -0
- package/lib/module/theme.js +86 -0
- package/lib/module/theme.js.map +1 -0
- package/lib/module/types.js +2 -0
- package/lib/module/types.js.map +1 -0
- package/lib/typescript/jest.setup.d.ts +2 -0
- package/lib/typescript/jest.setup.d.ts.map +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/ThemeProvider.d.ts +39 -0
- package/lib/typescript/src/ThemeProvider.d.ts.map +1 -0
- package/lib/typescript/src/components/AppBar.d.ts +33 -0
- package/lib/typescript/src/components/AppBar.d.ts.map +1 -0
- package/lib/typescript/src/components/BounceEffect.d.ts +12 -0
- package/lib/typescript/src/components/BounceEffect.d.ts.map +1 -0
- package/lib/typescript/src/components/Button.d.ts +24 -0
- package/lib/typescript/src/components/Button.d.ts.map +1 -0
- package/lib/typescript/src/components/Chips.d.ts +23 -0
- package/lib/typescript/src/components/Chips.d.ts.map +1 -0
- package/lib/typescript/src/components/IconButton.d.ts +14 -0
- package/lib/typescript/src/components/IconButton.d.ts.map +1 -0
- package/lib/typescript/src/components/InforList.d.ts +28 -0
- package/lib/typescript/src/components/InforList.d.ts.map +1 -0
- package/lib/typescript/src/components/LoadingApp.d.ts +8 -0
- package/lib/typescript/src/components/LoadingApp.d.ts.map +1 -0
- package/lib/typescript/src/components/Overlays.d.ts +12 -0
- package/lib/typescript/src/components/Overlays.d.ts.map +1 -0
- package/lib/typescript/src/components/RippleEffect.d.ts +18 -0
- package/lib/typescript/src/components/RippleEffect.d.ts.map +1 -0
- package/lib/typescript/src/components/Scaffold.d.ts +62 -0
- package/lib/typescript/src/components/Scaffold.d.ts.map +1 -0
- package/lib/typescript/src/components/SearchBar.d.ts +20 -0
- package/lib/typescript/src/components/SearchBar.d.ts.map +1 -0
- package/lib/typescript/src/components/SegmentedButton.d.ts +37 -0
- package/lib/typescript/src/components/SegmentedButton.d.ts.map +1 -0
- package/lib/typescript/src/components/ShapedButton.d.ts +18 -0
- package/lib/typescript/src/components/ShapedButton.d.ts.map +1 -0
- package/lib/typescript/src/components/SlideModal.d.ts +15 -0
- package/lib/typescript/src/components/SlideModal.d.ts.map +1 -0
- package/lib/typescript/src/components/TabBar.d.ts +20 -0
- package/lib/typescript/src/components/TabBar.d.ts.map +1 -0
- package/lib/typescript/src/components/Text.d.ts +26 -0
- package/lib/typescript/src/components/Text.d.ts.map +1 -0
- package/lib/typescript/src/components/TextButton.d.ts +15 -0
- package/lib/typescript/src/components/TextButton.d.ts.map +1 -0
- package/lib/typescript/src/components/TextInput.d.ts +22 -0
- package/lib/typescript/src/components/TextInput.d.ts.map +1 -0
- package/lib/typescript/src/components/Toast.d.ts +4 -0
- package/lib/typescript/src/components/Toast.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useAppBarScroll.d.ts +10 -0
- package/lib/typescript/src/hooks/useAppBarScroll.d.ts.map +1 -0
- package/lib/typescript/src/hooks/usePressAndHoldRepeat.d.ts +21 -0
- package/lib/typescript/src/hooks/usePressAndHoldRepeat.d.ts.map +1 -0
- package/lib/typescript/src/icons/Icon.d.ts +64 -0
- package/lib/typescript/src/icons/Icon.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +30 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/responsive.d.ts +15 -0
- package/lib/typescript/src/responsive.d.ts.map +1 -0
- package/lib/typescript/src/stores/useLoadingApp.d.ts +14 -0
- package/lib/typescript/src/stores/useLoadingApp.d.ts.map +1 -0
- package/lib/typescript/src/stores/useToast.d.ts +25 -0
- package/lib/typescript/src/stores/useToast.d.ts.map +1 -0
- package/lib/typescript/src/theme.d.ts +51 -0
- package/lib/typescript/src/theme.d.ts.map +1 -0
- package/lib/typescript/src/types.d.ts +26 -0
- package/lib/typescript/src/types.d.ts.map +1 -0
- package/package.json +189 -0
- package/src/ThemeProvider.tsx +108 -0
- package/src/components/AppBar.tsx +226 -0
- package/src/components/BounceEffect.tsx +53 -0
- package/src/components/Button.tsx +70 -0
- package/src/components/Chips.tsx +115 -0
- package/src/components/IconButton.tsx +84 -0
- package/src/components/InforList.tsx +110 -0
- package/src/components/LoadingApp.tsx +55 -0
- package/src/components/Overlays.tsx +21 -0
- package/src/components/RippleEffect.tsx +244 -0
- package/src/components/Scaffold.tsx +219 -0
- package/src/components/SearchBar.tsx +166 -0
- package/src/components/SegmentedButton.tsx +206 -0
- package/src/components/ShapedButton.tsx +74 -0
- package/src/components/SlideModal.tsx +232 -0
- package/src/components/TabBar.tsx +122 -0
- package/src/components/Text.tsx +70 -0
- package/src/components/TextButton.tsx +57 -0
- package/src/components/TextInput.tsx +108 -0
- package/src/components/Toast.tsx +95 -0
- package/src/hooks/useAppBarScroll.ts +19 -0
- package/src/hooks/usePressAndHoldRepeat.ts +85 -0
- package/src/icons/Icon.tsx +51 -0
- package/src/index.tsx +64 -0
- package/src/responsive.ts +32 -0
- package/src/stores/useLoadingApp.ts +19 -0
- package/src/stores/useToast.ts +36 -0
- package/src/theme.ts +125 -0
- package/src/types.ts +27 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","StyleSheet","View","useTheme","useThemedStyles","heightDP","Button","Text","jsx","_jsx","jsxs","_jsxs","Title","children","color","weight","Content","onPress","styles","makeStyles","isInteractive","disabled","style","content","Container","marginB","marginT","colors","items","Children","toArray","container","marginTop","marginBottom","backgroundColor","surface","borderColor","border","map","child","index","Fragment","length","line","InforList","t","create","width","alignItems","borderRadius","radius_20","overflow","borderWidth","flexDirection","justifyContent","height","paddingHorizontal","spaces","horizontal","l","flex","marginLeft"],"sourceRoot":"../../../src","sources":["components/InforList.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { ActivityIndicator, Modal, StyleSheet, View } from 'react-native';
|
|
4
|
+
import { useTheme } from "../ThemeProvider.js";
|
|
5
|
+
import { useLoadingApp } from "../stores/useLoadingApp.js";
|
|
6
|
+
import { Text } from "./Text.js";
|
|
7
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
|
+
/** Blocking full-screen loading overlay. Drive it with `useLoadingApp().setLoadingVisible(...)`. */
|
|
9
|
+
export function LoadingApp({
|
|
10
|
+
label
|
|
11
|
+
}) {
|
|
12
|
+
const {
|
|
13
|
+
colors,
|
|
14
|
+
spaces
|
|
15
|
+
} = useTheme();
|
|
16
|
+
const {
|
|
17
|
+
visible
|
|
18
|
+
} = useLoadingApp();
|
|
19
|
+
return /*#__PURE__*/_jsx(Modal, {
|
|
20
|
+
visible: visible,
|
|
21
|
+
transparent: true,
|
|
22
|
+
statusBarTranslucent: true,
|
|
23
|
+
animationType: "fade",
|
|
24
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
25
|
+
style: [styles.background, {
|
|
26
|
+
backgroundColor: colors.background_60
|
|
27
|
+
}],
|
|
28
|
+
children: /*#__PURE__*/_jsxs(View, {
|
|
29
|
+
style: styles.content,
|
|
30
|
+
children: [/*#__PURE__*/_jsx(ActivityIndicator, {
|
|
31
|
+
color: colors.text,
|
|
32
|
+
size: "small"
|
|
33
|
+
}), label ? /*#__PURE__*/_jsx(Text, {
|
|
34
|
+
marginL: spaces.horizontal.s,
|
|
35
|
+
weight: "medium",
|
|
36
|
+
children: label
|
|
37
|
+
}) : null]
|
|
38
|
+
})
|
|
39
|
+
})
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
const styles = StyleSheet.create({
|
|
43
|
+
background: {
|
|
44
|
+
position: 'absolute',
|
|
45
|
+
top: 0,
|
|
46
|
+
left: 0,
|
|
47
|
+
right: 0,
|
|
48
|
+
bottom: 0,
|
|
49
|
+
justifyContent: 'center',
|
|
50
|
+
alignItems: 'center'
|
|
51
|
+
},
|
|
52
|
+
content: {
|
|
53
|
+
flexDirection: 'row',
|
|
54
|
+
justifyContent: 'center',
|
|
55
|
+
alignItems: 'center'
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
//# sourceMappingURL=LoadingApp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ActivityIndicator","Modal","StyleSheet","View","useTheme","useLoadingApp","Text","jsx","_jsx","jsxs","_jsxs","LoadingApp","label","colors","spaces","visible","transparent","statusBarTranslucent","animationType","children","style","styles","background","backgroundColor","background_60","content","color","text","size","marginL","horizontal","s","weight","create","position","top","left","right","bottom","justifyContent","alignItems","flexDirection"],"sourceRoot":"../../../src","sources":["components/LoadingApp.tsx"],"mappings":";;AAAA,SAASA,iBAAiB,EAAEC,KAAK,EAAEC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAEzE,SAASC,QAAQ,QAAQ,qBAAkB;AAC3C,SAASC,aAAa,QAAQ,4BAAyB;AACvD,SAASC,IAAI,QAAQ,WAAQ;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAO9B;AACA,OAAO,SAASC,UAAUA,CAAC;EAAEC;AAAa,CAAC,EAAE;EAC3C,MAAM;IAAEC,MAAM;IAAEC;EAAO,CAAC,GAAGV,QAAQ,CAAC,CAAC;EACrC,MAAM;IAAEW;EAAQ,CAAC,GAAGV,aAAa,CAAC,CAAC;EAEnC,oBACEG,IAAA,CAACP,KAAK;IACJc,OAAO,EAAEA,OAAQ;IACjBC,WAAW;IACXC,oBAAoB;IACpBC,aAAa,EAAC,MAAM;IAAAC,QAAA,eAEpBX,IAAA,CAACL,IAAI;MACHiB,KAAK,EAAE,CAACC,MAAM,CAACC,UAAU,EAAE;QAAEC,eAAe,EAAEV,MAAM,CAACW;MAAc,CAAC,CAAE;MAAAL,QAAA,eAEtET,KAAA,CAACP,IAAI;QAACiB,KAAK,EAAEC,MAAM,CAACI,OAAQ;QAAAN,QAAA,gBAC1BX,IAAA,CAACR,iBAAiB;UAAC0B,KAAK,EAAEb,MAAM,CAACc,IAAK;UAACC,IAAI,EAAC;QAAO,CAAE,CAAC,EACrDhB,KAAK,gBACJJ,IAAA,CAACF,IAAI;UAACuB,OAAO,EAAEf,MAAM,CAACgB,UAAU,CAACC,CAAE;UAACC,MAAM,EAAC,QAAQ;UAAAb,QAAA,EAChDP;QAAK,CACF,CAAC,GACL,IAAI;MAAA,CACJ;IAAC,CACH;EAAC,CACF,CAAC;AAEZ;AAEA,MAAMS,MAAM,GAAGnB,UAAU,CAAC+B,MAAM,CAAC;EAC/BX,UAAU,EAAE;IACVY,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE,CAAC;IACTC,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE;EACd,CAAC;EACDf,OAAO,EAAE;IACPgB,aAAa,EAAE,KAAK;IACpBF,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE;EACd;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { LoadingApp } from "./LoadingApp.js";
|
|
4
|
+
import { Toast } from "./Toast.js";
|
|
5
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
6
|
+
/**
|
|
7
|
+
* App-wide overlays (`Toast` + `LoadingApp`). Mount **once** at the root of the
|
|
8
|
+
* app — inside `ThemeProvider`, as a sibling of your navigator. They render
|
|
9
|
+
* above everything and are driven from anywhere via `useToast` / `useLoadingApp`.
|
|
10
|
+
*/
|
|
11
|
+
export function Overlays({
|
|
12
|
+
loadingLabel
|
|
13
|
+
}) {
|
|
14
|
+
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
15
|
+
children: [/*#__PURE__*/_jsx(Toast, {}), /*#__PURE__*/_jsx(LoadingApp, {
|
|
16
|
+
label: loadingLabel
|
|
17
|
+
})]
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=Overlays.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["LoadingApp","Toast","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","Overlays","loadingLabel","children","label"],"sourceRoot":"../../../src","sources":["components/Overlays.tsx"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,iBAAc;AACzC,SAASC,KAAK,QAAQ,YAAS;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA,EAAAC,IAAA,IAAAC,KAAA;AAOhC;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,QAAQA,CAAC;EAAEC;AAAoB,CAAC,EAAE;EAChD,oBACEF,KAAA,CAAAF,SAAA;IAAAK,QAAA,gBACEP,IAAA,CAACF,KAAK,IAAE,CAAC,eACTE,IAAA,CAACH,UAAU;MAACW,KAAK,EAAEF;IAAa,CAAE,CAAC;EAAA,CACnC,CAAC;AAEP","ignoreList":[]}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { Animated, Easing, I18nManager, Pressable, StyleSheet, View } from 'react-native';
|
|
5
|
+
import { useColors } from "../ThemeProvider.js";
|
|
6
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
|
+
const CIRCLE_RADIUS = 10;
|
|
8
|
+
const RELEASE_GROW_DURATION = 150;
|
|
9
|
+
const RELEASE_FADE_DURATION = 250;
|
|
10
|
+
const PRESS_FADE_IN_DURATION = 75;
|
|
11
|
+
|
|
12
|
+
/** Wraps a child and paints a touch ripple at the press location. */
|
|
13
|
+
export function RippleEffect({
|
|
14
|
+
children,
|
|
15
|
+
rippleColor,
|
|
16
|
+
rippleOpacity = 0.3,
|
|
17
|
+
rippleDuration = 400,
|
|
18
|
+
rippleSize = 0,
|
|
19
|
+
rippleContainerBorderRadius = 0,
|
|
20
|
+
rippleCentered = false,
|
|
21
|
+
rippleSequential = false,
|
|
22
|
+
rippleFades = true,
|
|
23
|
+
disabled = false,
|
|
24
|
+
onLayout,
|
|
25
|
+
onPressIn,
|
|
26
|
+
onPressOut,
|
|
27
|
+
...pressableProps
|
|
28
|
+
}) {
|
|
29
|
+
const colors = useColors();
|
|
30
|
+
const color = rippleColor ?? colors.text;
|
|
31
|
+
const [layout, setLayout] = React.useState({
|
|
32
|
+
width: 0,
|
|
33
|
+
height: 0
|
|
34
|
+
});
|
|
35
|
+
const [rippleIds, setRippleIds] = React.useState([]);
|
|
36
|
+
const ripplesRef = React.useRef(new Map());
|
|
37
|
+
const activeRippleRef = React.useRef(null);
|
|
38
|
+
const uniqueRef = React.useRef(0);
|
|
39
|
+
const handleLayout = event => {
|
|
40
|
+
const {
|
|
41
|
+
width,
|
|
42
|
+
height
|
|
43
|
+
} = event.nativeEvent.layout;
|
|
44
|
+
setLayout({
|
|
45
|
+
width,
|
|
46
|
+
height
|
|
47
|
+
});
|
|
48
|
+
onLayout?.(event);
|
|
49
|
+
};
|
|
50
|
+
const handlePressIn = React.useCallback(event => {
|
|
51
|
+
onPressIn?.(event);
|
|
52
|
+
if (rippleSequential && ripplesRef.current.size) return;
|
|
53
|
+
const w2 = 0.5 * layout.width;
|
|
54
|
+
const h2 = 0.5 * layout.height;
|
|
55
|
+
|
|
56
|
+
// Fall back to the center when the gesture carries no coordinates.
|
|
57
|
+
const {
|
|
58
|
+
locationX,
|
|
59
|
+
locationY
|
|
60
|
+
} = rippleCentered || !event?.nativeEvent ? {
|
|
61
|
+
locationX: w2,
|
|
62
|
+
locationY: h2
|
|
63
|
+
} : event.nativeEvent;
|
|
64
|
+
const offsetX = Math.abs(w2 - locationX);
|
|
65
|
+
const offsetY = Math.abs(h2 - locationY);
|
|
66
|
+
const radius = rippleSize > 0 ? 0.5 * rippleSize : Math.sqrt((w2 + offsetX) ** 2 + (h2 + offsetY) ** 2);
|
|
67
|
+
const ripple = {
|
|
68
|
+
unique: uniqueRef.current++,
|
|
69
|
+
locationX,
|
|
70
|
+
locationY,
|
|
71
|
+
radius,
|
|
72
|
+
scale: new Animated.Value(0),
|
|
73
|
+
opacity: new Animated.Value(0)
|
|
74
|
+
};
|
|
75
|
+
ripplesRef.current.set(ripple.unique, ripple);
|
|
76
|
+
activeRippleRef.current = ripple.unique;
|
|
77
|
+
Animated.timing(ripple.scale, {
|
|
78
|
+
toValue: 1,
|
|
79
|
+
duration: rippleDuration,
|
|
80
|
+
easing: Easing.out(Easing.ease),
|
|
81
|
+
useNativeDriver: true
|
|
82
|
+
}).start();
|
|
83
|
+
Animated.timing(ripple.opacity, {
|
|
84
|
+
toValue: rippleOpacity,
|
|
85
|
+
duration: Math.min(rippleDuration, PRESS_FADE_IN_DURATION),
|
|
86
|
+
useNativeDriver: true
|
|
87
|
+
}).start();
|
|
88
|
+
setRippleIds(current => current.concat(ripple.unique));
|
|
89
|
+
}, [layout.width, layout.height, onPressIn, rippleCentered, rippleDuration, rippleOpacity, rippleSequential, rippleSize]);
|
|
90
|
+
const handlePressOut = React.useCallback(event => {
|
|
91
|
+
onPressOut?.(event);
|
|
92
|
+
const releasedUnique = activeRippleRef.current;
|
|
93
|
+
activeRippleRef.current = null;
|
|
94
|
+
if (releasedUnique === null) return;
|
|
95
|
+
const ripple = ripplesRef.current.get(releasedUnique);
|
|
96
|
+
if (!ripple) return;
|
|
97
|
+
const removeRipple = () => {
|
|
98
|
+
ripplesRef.current.delete(releasedUnique);
|
|
99
|
+
setRippleIds(current => current.filter(id => id !== releasedUnique));
|
|
100
|
+
};
|
|
101
|
+
if (!rippleFades) {
|
|
102
|
+
removeRipple();
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
Animated.parallel([Animated.timing(ripple.scale, {
|
|
106
|
+
toValue: 1,
|
|
107
|
+
duration: RELEASE_GROW_DURATION,
|
|
108
|
+
useNativeDriver: true
|
|
109
|
+
}), Animated.timing(ripple.opacity, {
|
|
110
|
+
toValue: 0,
|
|
111
|
+
duration: RELEASE_FADE_DURATION,
|
|
112
|
+
useNativeDriver: true
|
|
113
|
+
})]).start(removeRipple);
|
|
114
|
+
}, [onPressOut, rippleFades]);
|
|
115
|
+
return /*#__PURE__*/_jsxs(Pressable, {
|
|
116
|
+
...pressableProps,
|
|
117
|
+
disabled: disabled,
|
|
118
|
+
onLayout: handleLayout,
|
|
119
|
+
onPressIn: handlePressIn,
|
|
120
|
+
onPressOut: handlePressOut,
|
|
121
|
+
children: [children, /*#__PURE__*/_jsx(View, {
|
|
122
|
+
pointerEvents: "none",
|
|
123
|
+
style: [styles.container, {
|
|
124
|
+
borderRadius: rippleContainerBorderRadius
|
|
125
|
+
}],
|
|
126
|
+
children: rippleIds.map(id => {
|
|
127
|
+
const ripple = ripplesRef.current.get(id);
|
|
128
|
+
if (!ripple) return null;
|
|
129
|
+
return /*#__PURE__*/_jsx(RippleCircle, {
|
|
130
|
+
ripple: ripple,
|
|
131
|
+
color: color
|
|
132
|
+
}, id);
|
|
133
|
+
})
|
|
134
|
+
})]
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
function RippleCircleComponent({
|
|
138
|
+
ripple,
|
|
139
|
+
color
|
|
140
|
+
}) {
|
|
141
|
+
const {
|
|
142
|
+
locationX,
|
|
143
|
+
locationY,
|
|
144
|
+
radius,
|
|
145
|
+
scale,
|
|
146
|
+
opacity
|
|
147
|
+
} = ripple;
|
|
148
|
+
const rippleStyle = {
|
|
149
|
+
top: locationY - CIRCLE_RADIUS,
|
|
150
|
+
[I18nManager.isRTL ? 'right' : 'left']: locationX - CIRCLE_RADIUS,
|
|
151
|
+
backgroundColor: color,
|
|
152
|
+
opacity,
|
|
153
|
+
transform: [{
|
|
154
|
+
scale: scale.interpolate({
|
|
155
|
+
inputRange: [0, 1],
|
|
156
|
+
outputRange: [0.5 / CIRCLE_RADIUS, radius / CIRCLE_RADIUS]
|
|
157
|
+
})
|
|
158
|
+
}]
|
|
159
|
+
};
|
|
160
|
+
return /*#__PURE__*/_jsx(Animated.View, {
|
|
161
|
+
style: [styles.circle, rippleStyle]
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
const RippleCircle = /*#__PURE__*/React.memo(RippleCircleComponent);
|
|
165
|
+
const styles = StyleSheet.create({
|
|
166
|
+
container: {
|
|
167
|
+
...StyleSheet.absoluteFillObject,
|
|
168
|
+
overflow: 'hidden'
|
|
169
|
+
},
|
|
170
|
+
circle: {
|
|
171
|
+
width: CIRCLE_RADIUS * 2,
|
|
172
|
+
height: CIRCLE_RADIUS * 2,
|
|
173
|
+
borderRadius: CIRCLE_RADIUS,
|
|
174
|
+
overflow: 'hidden',
|
|
175
|
+
position: 'absolute'
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
//# sourceMappingURL=RippleEffect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Animated","Easing","I18nManager","Pressable","StyleSheet","View","useColors","jsx","_jsx","jsxs","_jsxs","CIRCLE_RADIUS","RELEASE_GROW_DURATION","RELEASE_FADE_DURATION","PRESS_FADE_IN_DURATION","RippleEffect","children","rippleColor","rippleOpacity","rippleDuration","rippleSize","rippleContainerBorderRadius","rippleCentered","rippleSequential","rippleFades","disabled","onLayout","onPressIn","onPressOut","pressableProps","colors","color","text","layout","setLayout","useState","width","height","rippleIds","setRippleIds","ripplesRef","useRef","Map","activeRippleRef","uniqueRef","handleLayout","event","nativeEvent","handlePressIn","useCallback","current","size","w2","h2","locationX","locationY","offsetX","Math","abs","offsetY","radius","sqrt","ripple","unique","scale","Value","opacity","set","timing","toValue","duration","easing","out","ease","useNativeDriver","start","min","concat","handlePressOut","releasedUnique","get","removeRipple","delete","filter","id","parallel","pointerEvents","style","styles","container","borderRadius","map","RippleCircle","RippleCircleComponent","rippleStyle","top","isRTL","backgroundColor","transform","interpolate","inputRange","outputRange","circle","memo","create","absoluteFillObject","overflow","position"],"sourceRoot":"../../../src","sources":["components/RippleEffect.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { FlashList } from '@shopify/flash-list';
|
|
4
|
+
import React from 'react';
|
|
5
|
+
import { View as RNView, StyleSheet } from 'react-native';
|
|
6
|
+
import Animated from 'react-native-reanimated';
|
|
7
|
+
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
8
|
+
import { useTheme } from "../ThemeProvider.js";
|
|
9
|
+
import { APP_BAR_HEIGHT, APP_BAR_LARGE_HEIGHT } from "./AppBar.js";
|
|
10
|
+
import { useTabBarHeight } from "./TabBar.js";
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Which top bar the screen renders, so the scrolling region can reserve the
|
|
14
|
+
* matching top inset: `large` = collapsing `AppBar` (`large`), `small` = fixed
|
|
15
|
+
* `AppBar`/`SearchBar`, `none` = no top bar (just the page inset).
|
|
16
|
+
*/
|
|
17
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
18
|
+
const AnimatedFlashList = Animated.createAnimatedComponent(FlashList);
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Resolves the top/bottom content insets from the declared bars. `useTabBarHeight`
|
|
22
|
+
* already includes the bottom safe-area inset.
|
|
23
|
+
*/
|
|
24
|
+
function useBarSpace(spaceTopBar, spaceBottomBar) {
|
|
25
|
+
const {
|
|
26
|
+
pageSpacing
|
|
27
|
+
} = useTheme();
|
|
28
|
+
const {
|
|
29
|
+
bottom: safeBottom
|
|
30
|
+
} = useSafeAreaInsets();
|
|
31
|
+
const tabBarHeight = useTabBarHeight();
|
|
32
|
+
let top;
|
|
33
|
+
if (spaceTopBar === 'large') {
|
|
34
|
+
top = APP_BAR_LARGE_HEIGHT;
|
|
35
|
+
} else if (spaceTopBar === 'small') {
|
|
36
|
+
top = APP_BAR_HEIGHT;
|
|
37
|
+
} else {
|
|
38
|
+
top = pageSpacing.top;
|
|
39
|
+
}
|
|
40
|
+
const bottom = spaceBottomBar ? tabBarHeight + pageSpacing.bottom : pageSpacing.bottom + safeBottom;
|
|
41
|
+
return {
|
|
42
|
+
top,
|
|
43
|
+
bottom,
|
|
44
|
+
safeBottom
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/** Full-screen page container. */
|
|
49
|
+
function Body({
|
|
50
|
+
children,
|
|
51
|
+
surface,
|
|
52
|
+
testID
|
|
53
|
+
}) {
|
|
54
|
+
const {
|
|
55
|
+
colors
|
|
56
|
+
} = useTheme();
|
|
57
|
+
const backgroundColor = surface ? colors.surface : colors.background;
|
|
58
|
+
return /*#__PURE__*/_jsx(RNView, {
|
|
59
|
+
testID: testID,
|
|
60
|
+
style: [styles.body, {
|
|
61
|
+
backgroundColor
|
|
62
|
+
}],
|
|
63
|
+
children: children
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Non-scrolling content region with standard page insets. Content does not
|
|
69
|
+
* scroll under the fixed bars, so this takes no `spaceTopBar` / `spaceBottomBar`
|
|
70
|
+
* — pass an explicit `paddingTop` when a top bar covers it.
|
|
71
|
+
*/
|
|
72
|
+
function View({
|
|
73
|
+
children,
|
|
74
|
+
paddingHorizontal,
|
|
75
|
+
paddingTop,
|
|
76
|
+
testID
|
|
77
|
+
}) {
|
|
78
|
+
const {
|
|
79
|
+
pageSpacing
|
|
80
|
+
} = useTheme();
|
|
81
|
+
return /*#__PURE__*/_jsx(RNView, {
|
|
82
|
+
testID: testID,
|
|
83
|
+
style: {
|
|
84
|
+
paddingHorizontal: paddingHorizontal ?? pageSpacing.horizontal,
|
|
85
|
+
paddingTop: paddingTop ?? pageSpacing.top
|
|
86
|
+
},
|
|
87
|
+
children: children
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/** Scrolling content region with standard page insets. */
|
|
92
|
+
function ScrollView({
|
|
93
|
+
children,
|
|
94
|
+
spaceTopBar,
|
|
95
|
+
spaceBottomBar,
|
|
96
|
+
paddingHorizontal,
|
|
97
|
+
paddingTop,
|
|
98
|
+
paddingBottom,
|
|
99
|
+
onScroll,
|
|
100
|
+
testID
|
|
101
|
+
}) {
|
|
102
|
+
const {
|
|
103
|
+
pageSpacing
|
|
104
|
+
} = useTheme();
|
|
105
|
+
const bar = useBarSpace(spaceTopBar, spaceBottomBar);
|
|
106
|
+
const hPad = paddingHorizontal ?? pageSpacing.horizontal;
|
|
107
|
+
const tPad = paddingTop ?? bar.top;
|
|
108
|
+
const bPad = paddingBottom != null ? paddingBottom + bar.safeBottom : bar.bottom;
|
|
109
|
+
const contentContainerStyle = React.useMemo(() => ({
|
|
110
|
+
paddingHorizontal: hPad,
|
|
111
|
+
paddingTop: tPad,
|
|
112
|
+
paddingBottom: bPad
|
|
113
|
+
}), [hPad, tPad, bPad]);
|
|
114
|
+
return /*#__PURE__*/_jsx(Animated.ScrollView, {
|
|
115
|
+
testID: testID,
|
|
116
|
+
contentContainerStyle: contentContainerStyle,
|
|
117
|
+
showsVerticalScrollIndicator: false,
|
|
118
|
+
contentInsetAdjustmentBehavior: "never",
|
|
119
|
+
keyboardDismissMode: "interactive",
|
|
120
|
+
onScroll: onScroll,
|
|
121
|
+
scrollEventThrottle: onScroll ? 16 : undefined,
|
|
122
|
+
children: children
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/** Virtualized list region with standard page insets. */
|
|
127
|
+
function FlashListSection({
|
|
128
|
+
spaceTopBar,
|
|
129
|
+
spaceBottomBar,
|
|
130
|
+
paddingHorizontal,
|
|
131
|
+
paddingTop,
|
|
132
|
+
paddingBottom,
|
|
133
|
+
onScroll,
|
|
134
|
+
drawDistance = 250,
|
|
135
|
+
...rest
|
|
136
|
+
}) {
|
|
137
|
+
const {
|
|
138
|
+
pageSpacing
|
|
139
|
+
} = useTheme();
|
|
140
|
+
const bar = useBarSpace(spaceTopBar, spaceBottomBar);
|
|
141
|
+
const hPad = paddingHorizontal ?? pageSpacing.horizontal;
|
|
142
|
+
const tPad = paddingTop ?? bar.top;
|
|
143
|
+
const bPad = paddingBottom != null ? paddingBottom + bar.safeBottom : bar.bottom;
|
|
144
|
+
const contentContainerStyle = React.useMemo(() => ({
|
|
145
|
+
paddingHorizontal: hPad,
|
|
146
|
+
paddingTop: tPad,
|
|
147
|
+
paddingBottom: bPad
|
|
148
|
+
}), [hPad, tPad, bPad]);
|
|
149
|
+
const List = AnimatedFlashList;
|
|
150
|
+
return /*#__PURE__*/_jsx(List, {
|
|
151
|
+
contentContainerStyle: contentContainerStyle,
|
|
152
|
+
showsVerticalScrollIndicator: false,
|
|
153
|
+
contentInsetAdjustmentBehavior: "never",
|
|
154
|
+
keyboardDismissMode: "interactive",
|
|
155
|
+
onScroll: onScroll,
|
|
156
|
+
scrollEventThrottle: onScroll ? 16 : undefined,
|
|
157
|
+
drawDistance: drawDistance,
|
|
158
|
+
...rest
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
export const Scaffold = {
|
|
162
|
+
Body,
|
|
163
|
+
View,
|
|
164
|
+
ScrollView,
|
|
165
|
+
FlashList: FlashListSection
|
|
166
|
+
};
|
|
167
|
+
const styles = StyleSheet.create({
|
|
168
|
+
body: {
|
|
169
|
+
flex: 1
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
//# sourceMappingURL=Scaffold.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["FlashList","React","View","RNView","StyleSheet","Animated","useSafeAreaInsets","useTheme","APP_BAR_HEIGHT","APP_BAR_LARGE_HEIGHT","useTabBarHeight","jsx","_jsx","AnimatedFlashList","createAnimatedComponent","useBarSpace","spaceTopBar","spaceBottomBar","pageSpacing","bottom","safeBottom","tabBarHeight","top","Body","children","surface","testID","colors","backgroundColor","background","style","styles","body","paddingHorizontal","paddingTop","horizontal","ScrollView","paddingBottom","onScroll","bar","hPad","tPad","bPad","contentContainerStyle","useMemo","showsVerticalScrollIndicator","contentInsetAdjustmentBehavior","keyboardDismissMode","scrollEventThrottle","undefined","FlashListSection","drawDistance","rest","List","Scaffold","create","flex"],"sourceRoot":"../../../src","sources":["components/Scaffold.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { BlurView } from 'expo-blur';
|
|
4
|
+
import Constants from 'expo-constants';
|
|
5
|
+
import React from 'react';
|
|
6
|
+
import { Platform, StyleSheet, TextInput, View } from 'react-native';
|
|
7
|
+
import { Icon } from "../icons/Icon.js";
|
|
8
|
+
import { useTheme, useThemedStyles } from "../ThemeProvider.js";
|
|
9
|
+
import { pageSpacing } from "../theme.js";
|
|
10
|
+
import { heightDP } from "../responsive.js";
|
|
11
|
+
import { Button } from "./Button.js";
|
|
12
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
|
+
const CONTENT_HEIGHT = heightDP(7);
|
|
14
|
+
const IS_IOS = Platform.OS === 'ios';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Total height of the fixed search bar, including the status bar. Uses the
|
|
18
|
+
* default `pageSpacing.top` — a themed override is not reflected here.
|
|
19
|
+
*/
|
|
20
|
+
export const SEARCH_BAR_HEIGHT = Constants.statusBarHeight + CONTENT_HEIGHT + pageSpacing.top;
|
|
21
|
+
/** Fixed top search bar with a back control and a text field. */
|
|
22
|
+
export function SearchBar({
|
|
23
|
+
placeholder,
|
|
24
|
+
onEnter,
|
|
25
|
+
onBack,
|
|
26
|
+
editable,
|
|
27
|
+
autoFocus
|
|
28
|
+
}) {
|
|
29
|
+
const {
|
|
30
|
+
colors,
|
|
31
|
+
iconSize
|
|
32
|
+
} = useTheme();
|
|
33
|
+
const styles = useThemedStyles(makeStyles);
|
|
34
|
+
const inputRef = React.useRef(null);
|
|
35
|
+
const [value, setValue] = React.useState('');
|
|
36
|
+
const [isFocused, setIsFocused] = React.useState(false);
|
|
37
|
+
function handleSubmit() {
|
|
38
|
+
inputRef.current?.blur();
|
|
39
|
+
onEnter(value.trim());
|
|
40
|
+
}
|
|
41
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
42
|
+
style: [styles.container, {
|
|
43
|
+
backgroundColor: colors.surface_90,
|
|
44
|
+
borderBottomColor: colors.border
|
|
45
|
+
}],
|
|
46
|
+
children: [IS_IOS && /*#__PURE__*/_jsx(BlurView, {
|
|
47
|
+
style: styles.blur,
|
|
48
|
+
tint: "dark",
|
|
49
|
+
intensity: 20
|
|
50
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
51
|
+
style: styles.content,
|
|
52
|
+
children: [/*#__PURE__*/_jsx(View, {
|
|
53
|
+
style: styles.radiusOverflow,
|
|
54
|
+
children: /*#__PURE__*/_jsx(Button, {
|
|
55
|
+
testID: "search-bar-back-button",
|
|
56
|
+
hitSlop: {
|
|
57
|
+
top: 20,
|
|
58
|
+
bottom: 20,
|
|
59
|
+
left: 25,
|
|
60
|
+
right: 15
|
|
61
|
+
},
|
|
62
|
+
onPress: onBack,
|
|
63
|
+
style: styles.iconButton,
|
|
64
|
+
children: /*#__PURE__*/_jsx(Icon, {
|
|
65
|
+
name: "arrow_back",
|
|
66
|
+
color: colors.text
|
|
67
|
+
})
|
|
68
|
+
})
|
|
69
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
70
|
+
style: styles.inputWrapper,
|
|
71
|
+
children: [/*#__PURE__*/_jsx(View, {
|
|
72
|
+
style: styles.icon,
|
|
73
|
+
pointerEvents: "none",
|
|
74
|
+
children: /*#__PURE__*/_jsx(Icon, {
|
|
75
|
+
name: "search",
|
|
76
|
+
size: iconSize.s,
|
|
77
|
+
color: colors.text
|
|
78
|
+
})
|
|
79
|
+
}), /*#__PURE__*/_jsx(TextInput, {
|
|
80
|
+
ref: inputRef,
|
|
81
|
+
testID: "search-bar-input",
|
|
82
|
+
style: [styles.input, {
|
|
83
|
+
borderColor: isFocused ? colors.primary : colors.border,
|
|
84
|
+
color: colors.text
|
|
85
|
+
}],
|
|
86
|
+
placeholder: placeholder,
|
|
87
|
+
placeholderTextColor: colors.text,
|
|
88
|
+
autoFocus: autoFocus,
|
|
89
|
+
autoCapitalize: "words",
|
|
90
|
+
autoCorrect: false,
|
|
91
|
+
autoComplete: "off",
|
|
92
|
+
cursorColor: colors.primary,
|
|
93
|
+
onChangeText: setValue,
|
|
94
|
+
value: value,
|
|
95
|
+
onSubmitEditing: handleSubmit,
|
|
96
|
+
onFocus: () => setIsFocused(true),
|
|
97
|
+
onBlur: () => setIsFocused(false),
|
|
98
|
+
returnKeyType: "search",
|
|
99
|
+
editable: editable
|
|
100
|
+
})]
|
|
101
|
+
})]
|
|
102
|
+
})]
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
function makeStyles(t) {
|
|
106
|
+
return StyleSheet.create({
|
|
107
|
+
container: {
|
|
108
|
+
position: 'absolute',
|
|
109
|
+
top: 0,
|
|
110
|
+
left: 0,
|
|
111
|
+
right: 0,
|
|
112
|
+
zIndex: 10,
|
|
113
|
+
width: '100%',
|
|
114
|
+
borderStyle: 'solid',
|
|
115
|
+
borderBottomWidth: 1
|
|
116
|
+
},
|
|
117
|
+
content: {
|
|
118
|
+
width: '100%',
|
|
119
|
+
height: CONTENT_HEIGHT,
|
|
120
|
+
flexDirection: 'row',
|
|
121
|
+
alignItems: 'center',
|
|
122
|
+
gap: t.spaces.horizontal.s,
|
|
123
|
+
marginTop: Constants.statusBarHeight,
|
|
124
|
+
paddingHorizontal: t.spaces.horizontal.xs
|
|
125
|
+
},
|
|
126
|
+
inputWrapper: {
|
|
127
|
+
position: 'relative',
|
|
128
|
+
flex: 1
|
|
129
|
+
},
|
|
130
|
+
input: {
|
|
131
|
+
height: heightDP(5.5),
|
|
132
|
+
borderWidth: 1,
|
|
133
|
+
borderRadius: t.borderRadius.radius_15,
|
|
134
|
+
paddingLeft: t.spaces.horizontal.l * 1.7 + t.iconSize.s,
|
|
135
|
+
fontSize: t.fontSizes.s
|
|
136
|
+
},
|
|
137
|
+
icon: {
|
|
138
|
+
position: 'absolute',
|
|
139
|
+
top: 0,
|
|
140
|
+
bottom: 0,
|
|
141
|
+
left: t.spaces.horizontal.l,
|
|
142
|
+
justifyContent: 'center',
|
|
143
|
+
zIndex: 2
|
|
144
|
+
},
|
|
145
|
+
iconButton: {
|
|
146
|
+
padding: t.spaces.horizontal.xs
|
|
147
|
+
},
|
|
148
|
+
radiusOverflow: {
|
|
149
|
+
borderRadius: t.borderRadius.radius_100,
|
|
150
|
+
overflow: 'hidden'
|
|
151
|
+
},
|
|
152
|
+
blur: {
|
|
153
|
+
position: 'absolute',
|
|
154
|
+
top: 0,
|
|
155
|
+
left: 0,
|
|
156
|
+
bottom: 0,
|
|
157
|
+
right: 0
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=SearchBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["BlurView","Constants","React","Platform","StyleSheet","TextInput","View","Icon","useTheme","useThemedStyles","pageSpacing","heightDP","Button","jsx","_jsx","jsxs","_jsxs","CONTENT_HEIGHT","IS_IOS","OS","SEARCH_BAR_HEIGHT","statusBarHeight","top","SearchBar","placeholder","onEnter","onBack","editable","autoFocus","colors","iconSize","styles","makeStyles","inputRef","useRef","value","setValue","useState","isFocused","setIsFocused","handleSubmit","current","blur","trim","style","container","backgroundColor","surface_90","borderBottomColor","border","children","tint","intensity","content","radiusOverflow","testID","hitSlop","bottom","left","right","onPress","iconButton","name","color","text","inputWrapper","icon","pointerEvents","size","s","ref","input","borderColor","primary","placeholderTextColor","autoCapitalize","autoCorrect","autoComplete","cursorColor","onChangeText","onSubmitEditing","onFocus","onBlur","returnKeyType","t","create","position","zIndex","width","borderStyle","borderBottomWidth","height","flexDirection","alignItems","gap","spaces","horizontal","marginTop","paddingHorizontal","xs","flex","borderWidth","borderRadius","radius_15","paddingLeft","l","fontSize","fontSizes","justifyContent","padding","radius_100","overflow"],"sourceRoot":"../../../src","sources":["components/SearchBar.tsx"],"mappings":"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","ignoreList":[]}
|