@oxyhq/services 6.9.29 → 6.9.30
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/ui/components/FollowButton.js +10 -7
- package/lib/commonjs/ui/components/FollowButton.js.map +1 -1
- package/lib/module/ui/components/FollowButton.js +10 -7
- package/lib/module/ui/components/FollowButton.js.map +1 -1
- package/lib/typescript/commonjs/ui/components/FollowButton.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/FollowButton.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/ui/components/FollowButton.tsx +10 -7
|
@@ -11,7 +11,7 @@ var _OxyContext = require("../context/OxyContext.js");
|
|
|
11
11
|
var _fonts = require("../styles/fonts.js");
|
|
12
12
|
var _sonner = require("../../lib/sonner");
|
|
13
13
|
var _useFollow = require("../hooks/useFollow.js");
|
|
14
|
-
var
|
|
14
|
+
var _theme2 = require("@oxyhq/bloom/theme");
|
|
15
15
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
16
16
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
17
17
|
// Create animated TouchableOpacity
|
|
@@ -41,9 +41,10 @@ const FollowButtonInner = /*#__PURE__*/(0, _react.memo)(function FollowButtonInn
|
|
|
41
41
|
disabled = false,
|
|
42
42
|
showLoadingState = true,
|
|
43
43
|
preventParentActions = true,
|
|
44
|
-
theme = 'light'
|
|
44
|
+
theme: _theme = 'light'
|
|
45
45
|
}) {
|
|
46
|
-
const
|
|
46
|
+
const bloomTheme = (0, _theme2.useTheme)();
|
|
47
|
+
const colors = bloomTheme.colors;
|
|
47
48
|
|
|
48
49
|
// Uses granular Zustand selectors — only re-renders when THIS user's data changes
|
|
49
50
|
const {
|
|
@@ -111,18 +112,20 @@ const FollowButtonInner = /*#__PURE__*/(0, _react.memo)(function FollowButtonInn
|
|
|
111
112
|
}, [isFollowing, animationProgress]);
|
|
112
113
|
|
|
113
114
|
// Animated styles
|
|
115
|
+
// When not following (progress=0): primary filled button (bg-primary, text white)
|
|
116
|
+
// When following (progress=1): outlined button (bg-background, border-border, text-foreground)
|
|
114
117
|
const animatedButtonStyle = (0, _reactNativeReanimated.useAnimatedStyle)(() => {
|
|
115
118
|
return {
|
|
116
119
|
transform: [{
|
|
117
120
|
scale: scale.value
|
|
118
121
|
}],
|
|
119
|
-
backgroundColor: (0, _reactNativeReanimated.interpolateColor)(animationProgress.value, [0, 1], [colors.
|
|
120
|
-
borderColor: (0, _reactNativeReanimated.interpolateColor)(animationProgress.value, [0, 1], [colors.
|
|
122
|
+
backgroundColor: (0, _reactNativeReanimated.interpolateColor)(animationProgress.value, [0, 1], [colors.primary, colors.background]),
|
|
123
|
+
borderColor: (0, _reactNativeReanimated.interpolateColor)(animationProgress.value, [0, 1], [colors.primary, colors.border])
|
|
121
124
|
};
|
|
122
125
|
}, [colors]);
|
|
123
126
|
const animatedTextStyle = (0, _reactNativeReanimated.useAnimatedStyle)(() => {
|
|
124
127
|
return {
|
|
125
|
-
color: (0, _reactNativeReanimated.interpolateColor)(animationProgress.value, [0, 1], [
|
|
128
|
+
color: (0, _reactNativeReanimated.interpolateColor)(animationProgress.value, [0, 1], ['#FFFFFF', colors.text])
|
|
126
129
|
};
|
|
127
130
|
}, [colors]);
|
|
128
131
|
const baseButtonStyle = getBaseButtonStyle(size, style);
|
|
@@ -134,7 +137,7 @@ const FollowButtonInner = /*#__PURE__*/(0, _react.memo)(function FollowButtonInn
|
|
|
134
137
|
activeOpacity: 0.8,
|
|
135
138
|
children: showLoadingState && isLoading ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ActivityIndicator, {
|
|
136
139
|
size: "small",
|
|
137
|
-
color: isFollowing ? '#FFFFFF'
|
|
140
|
+
color: isFollowing ? colors.text : '#FFFFFF'
|
|
138
141
|
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(AnimatedText, {
|
|
139
142
|
style: [baseTextStyle, animatedTextStyle],
|
|
140
143
|
children: isFollowing ? 'Following' : 'Follow'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeReanimated","_OxyContext","_fonts","_sonner","_useFollow","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeReanimated","_OxyContext","_fonts","_sonner","_useFollow","_theme2","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","AnimatedTouchableOpacity","Animated","createAnimatedComponent","TouchableOpacity","AnimatedText","Text","FollowButtonInner","memo","userId","oxyServices","initiallyFollowing","size","onFollowChange","style","textStyle","disabled","showLoadingState","preventParentActions","theme","_theme","bloomTheme","useTheme","colors","isFollowing","isLoading","toggleFollow","setFollowStatus","fetchStatus","useFollowForButton","animationProgress","useSharedValue","scale","handlePress","useCallback","event","preventDefault","stopPropagation","value","withTiming","duration","finished","withSpring","damping","stiffness","err","error","Error","String","toast","message","useEffect","easing","Easing","inOut","ease","animatedButtonStyle","useAnimatedStyle","transform","backgroundColor","interpolateColor","primary","background","borderColor","border","animatedTextStyle","color","text","baseButtonStyle","getBaseButtonStyle","baseTextStyle","getBaseTextStyle","jsx","onPress","activeOpacity","children","ActivityIndicator","FollowButton","props","isAuthenticated","user","currentUser","useOxy","currentUserId","id","trim","targetUserId","exports","baseStyle","flexDirection","alignItems","justifyContent","borderWidth","Platform","select","web","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","elevation","sizeStyle","paddingVertical","paddingHorizontal","minWidth","borderRadius","fontFamily","fontFamilies","interSemiBold","fontWeight","sizeTextStyle","fontSize","_default"],"sourceRoot":"../../../../src","sources":["ui/components/FollowButton.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -7,7 +7,7 @@ import { useOxy } from "../context/OxyContext.js";
|
|
|
7
7
|
import { fontFamilies } from "../styles/fonts.js";
|
|
8
8
|
import { toast } from '../../lib/sonner';
|
|
9
9
|
import { useFollowForButton } from "../hooks/useFollow.js";
|
|
10
|
-
import {
|
|
10
|
+
import { useTheme } from '@oxyhq/bloom/theme';
|
|
11
11
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
12
12
|
// Create animated TouchableOpacity
|
|
13
13
|
const AnimatedTouchableOpacity = Animated.createAnimatedComponent(TouchableOpacity);
|
|
@@ -36,9 +36,10 @@ const FollowButtonInner = /*#__PURE__*/memo(function FollowButtonInner({
|
|
|
36
36
|
disabled = false,
|
|
37
37
|
showLoadingState = true,
|
|
38
38
|
preventParentActions = true,
|
|
39
|
-
theme = 'light'
|
|
39
|
+
theme: _theme = 'light'
|
|
40
40
|
}) {
|
|
41
|
-
const
|
|
41
|
+
const bloomTheme = useTheme();
|
|
42
|
+
const colors = bloomTheme.colors;
|
|
42
43
|
|
|
43
44
|
// Uses granular Zustand selectors — only re-renders when THIS user's data changes
|
|
44
45
|
const {
|
|
@@ -106,18 +107,20 @@ const FollowButtonInner = /*#__PURE__*/memo(function FollowButtonInner({
|
|
|
106
107
|
}, [isFollowing, animationProgress]);
|
|
107
108
|
|
|
108
109
|
// Animated styles
|
|
110
|
+
// When not following (progress=0): primary filled button (bg-primary, text white)
|
|
111
|
+
// When following (progress=1): outlined button (bg-background, border-border, text-foreground)
|
|
109
112
|
const animatedButtonStyle = useAnimatedStyle(() => {
|
|
110
113
|
return {
|
|
111
114
|
transform: [{
|
|
112
115
|
scale: scale.value
|
|
113
116
|
}],
|
|
114
|
-
backgroundColor: interpolateColor(animationProgress.value, [0, 1], [colors.
|
|
115
|
-
borderColor: interpolateColor(animationProgress.value, [0, 1], [colors.
|
|
117
|
+
backgroundColor: interpolateColor(animationProgress.value, [0, 1], [colors.primary, colors.background]),
|
|
118
|
+
borderColor: interpolateColor(animationProgress.value, [0, 1], [colors.primary, colors.border])
|
|
116
119
|
};
|
|
117
120
|
}, [colors]);
|
|
118
121
|
const animatedTextStyle = useAnimatedStyle(() => {
|
|
119
122
|
return {
|
|
120
|
-
color: interpolateColor(animationProgress.value, [0, 1], [
|
|
123
|
+
color: interpolateColor(animationProgress.value, [0, 1], ['#FFFFFF', colors.text])
|
|
121
124
|
};
|
|
122
125
|
}, [colors]);
|
|
123
126
|
const baseButtonStyle = getBaseButtonStyle(size, style);
|
|
@@ -129,7 +132,7 @@ const FollowButtonInner = /*#__PURE__*/memo(function FollowButtonInner({
|
|
|
129
132
|
activeOpacity: 0.8,
|
|
130
133
|
children: showLoadingState && isLoading ? /*#__PURE__*/_jsx(ActivityIndicator, {
|
|
131
134
|
size: "small",
|
|
132
|
-
color: isFollowing ? '#FFFFFF'
|
|
135
|
+
color: isFollowing ? colors.text : '#FFFFFF'
|
|
133
136
|
}) : /*#__PURE__*/_jsx(AnimatedText, {
|
|
134
137
|
style: [baseTextStyle, animatedTextStyle],
|
|
135
138
|
children: isFollowing ? 'Following' : 'Follow'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useCallback","memo","TouchableOpacity","Text","Platform","ActivityIndicator","Animated","useSharedValue","useAnimatedStyle","withSpring","interpolateColor","Easing","withTiming","useOxy","fontFamilies","toast","useFollowForButton","
|
|
1
|
+
{"version":3,"names":["React","useEffect","useCallback","memo","TouchableOpacity","Text","Platform","ActivityIndicator","Animated","useSharedValue","useAnimatedStyle","withSpring","interpolateColor","Easing","withTiming","useOxy","fontFamilies","toast","useFollowForButton","useTheme","jsx","_jsx","AnimatedTouchableOpacity","createAnimatedComponent","AnimatedText","FollowButtonInner","userId","oxyServices","initiallyFollowing","size","onFollowChange","style","textStyle","disabled","showLoadingState","preventParentActions","theme","_theme","bloomTheme","colors","isFollowing","isLoading","toggleFollow","setFollowStatus","fetchStatus","animationProgress","scale","handlePress","event","preventDefault","stopPropagation","value","duration","finished","damping","stiffness","err","error","Error","String","message","easing","inOut","ease","animatedButtonStyle","transform","backgroundColor","primary","background","borderColor","border","animatedTextStyle","color","text","baseButtonStyle","getBaseButtonStyle","baseTextStyle","getBaseTextStyle","onPress","activeOpacity","children","FollowButton","props","isAuthenticated","user","currentUser","currentUserId","id","trim","targetUserId","baseStyle","flexDirection","alignItems","justifyContent","borderWidth","select","web","default","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","elevation","sizeStyle","paddingVertical","paddingHorizontal","minWidth","borderRadius","fontFamily","interSemiBold","fontWeight","sizeTextStyle","fontSize"],"sourceRoot":"../../../../src","sources":["ui/components/FollowButton.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FollowButton.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/FollowButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAC5D,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,SAAS,EAGf,MAAM,cAAc,CAAC;AAoBtB,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC1B;
|
|
1
|
+
{"version":3,"file":"FollowButton.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/FollowButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAC5D,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,SAAS,EAGf,MAAM,cAAc,CAAC;AAoBtB,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC1B;AA8ID;;;;;;;;;;GAUG;AACH,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAkB7C,CAAC;AAmDF,OAAO,EAAE,YAAY,EAAE,CAAC;AACxB,eAAe,YAAY,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FollowButton.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/FollowButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAC5D,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,SAAS,EAGf,MAAM,cAAc,CAAC;AAoBtB,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC1B;
|
|
1
|
+
{"version":3,"file":"FollowButton.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/FollowButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAC5D,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,SAAS,EAGf,MAAM,cAAc,CAAC;AAoBtB,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC1B;AA8ID;;;;;;;;;;GAUG;AACH,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAkB7C,CAAC;AAmDF,OAAO,EAAE,YAAY,EAAE,CAAC;AACxB,eAAe,YAAY,CAAC"}
|
package/package.json
CHANGED
|
@@ -21,7 +21,7 @@ import { useOxy } from '../context/OxyContext';
|
|
|
21
21
|
import { fontFamilies } from '../styles/fonts';
|
|
22
22
|
import { toast } from '../../lib/sonner';
|
|
23
23
|
import { useFollowForButton } from '../hooks/useFollow';
|
|
24
|
-
import {
|
|
24
|
+
import { useTheme } from '@oxyhq/bloom/theme';
|
|
25
25
|
import type { OxyServices } from '@oxyhq/core';
|
|
26
26
|
|
|
27
27
|
// Create animated TouchableOpacity
|
|
@@ -65,9 +65,10 @@ const FollowButtonInner = memo(function FollowButtonInner({
|
|
|
65
65
|
disabled = false,
|
|
66
66
|
showLoadingState = true,
|
|
67
67
|
preventParentActions = true,
|
|
68
|
-
theme = 'light',
|
|
68
|
+
theme: _theme = 'light',
|
|
69
69
|
}: FollowButtonProps & { oxyServices: OxyServices }) {
|
|
70
|
-
const
|
|
70
|
+
const bloomTheme = useTheme();
|
|
71
|
+
const colors = bloomTheme.colors;
|
|
71
72
|
|
|
72
73
|
// Uses granular Zustand selectors — only re-renders when THIS user's data changes
|
|
73
74
|
const {
|
|
@@ -128,18 +129,20 @@ const FollowButtonInner = memo(function FollowButtonInner({
|
|
|
128
129
|
}, [isFollowing, animationProgress]);
|
|
129
130
|
|
|
130
131
|
// Animated styles
|
|
132
|
+
// When not following (progress=0): primary filled button (bg-primary, text white)
|
|
133
|
+
// When following (progress=1): outlined button (bg-background, border-border, text-foreground)
|
|
131
134
|
const animatedButtonStyle = useAnimatedStyle(() => {
|
|
132
135
|
return {
|
|
133
136
|
transform: [{ scale: scale.value }],
|
|
134
137
|
backgroundColor: interpolateColor(
|
|
135
138
|
animationProgress.value,
|
|
136
139
|
[0, 1],
|
|
137
|
-
[colors.
|
|
140
|
+
[colors.primary, colors.background]
|
|
138
141
|
),
|
|
139
142
|
borderColor: interpolateColor(
|
|
140
143
|
animationProgress.value,
|
|
141
144
|
[0, 1],
|
|
142
|
-
[colors.
|
|
145
|
+
[colors.primary, colors.border]
|
|
143
146
|
),
|
|
144
147
|
};
|
|
145
148
|
}, [colors]);
|
|
@@ -149,7 +152,7 @@ const FollowButtonInner = memo(function FollowButtonInner({
|
|
|
149
152
|
color: interpolateColor(
|
|
150
153
|
animationProgress.value,
|
|
151
154
|
[0, 1],
|
|
152
|
-
[
|
|
155
|
+
['#FFFFFF', colors.text]
|
|
153
156
|
),
|
|
154
157
|
};
|
|
155
158
|
}, [colors]);
|
|
@@ -167,7 +170,7 @@ const FollowButtonInner = memo(function FollowButtonInner({
|
|
|
167
170
|
{showLoadingState && isLoading ? (
|
|
168
171
|
<ActivityIndicator
|
|
169
172
|
size="small"
|
|
170
|
-
color={isFollowing ? '#FFFFFF'
|
|
173
|
+
color={isFollowing ? colors.text : '#FFFFFF'}
|
|
171
174
|
/>
|
|
172
175
|
) : (
|
|
173
176
|
<AnimatedText style={[baseTextStyle, animatedTextStyle]}>
|