@blinkdotnew/mobile-ui 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/dist/index.js +76 -142
  2. package/dist/index.mjs +57 -143
  3. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -3,18 +3,37 @@
3
3
  var React29 = require('react');
4
4
  var reactNative = require('react-native');
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
+ var LucideIcons = require('lucide-react-native');
6
7
  var reactNativeSafeAreaContext = require('react-native-safe-area-context');
8
+ var native = require('@react-navigation/native');
9
+ var expoBlur = require('expo-blur');
10
+ var _ActionSheetPkg = require('react-native-actions-sheet');
7
11
 
8
12
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
9
13
 
14
+ function _interopNamespace(e) {
15
+ if (e && e.__esModule) return e;
16
+ var n = Object.create(null);
17
+ if (e) {
18
+ Object.keys(e).forEach(function (k) {
19
+ if (k !== 'default') {
20
+ var d = Object.getOwnPropertyDescriptor(e, k);
21
+ Object.defineProperty(n, k, d.get ? d : {
22
+ enumerable: true,
23
+ get: function () { return e[k]; }
24
+ });
25
+ }
26
+ });
27
+ }
28
+ n.default = e;
29
+ return Object.freeze(n);
30
+ }
31
+
10
32
  var React29__default = /*#__PURE__*/_interopDefault(React29);
33
+ var LucideIcons__namespace = /*#__PURE__*/_interopNamespace(LucideIcons);
34
+ var _ActionSheetPkg__default = /*#__PURE__*/_interopDefault(_ActionSheetPkg);
11
35
 
12
- var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
13
- get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
14
- }) : x)(function(x) {
15
- if (typeof require !== "undefined") return require.apply(this, arguments);
16
- throw Error('Dynamic require of "' + x + '" is not supported');
17
- });
36
+ // src/provider/BlinkMobileUIProvider.tsx
18
37
 
19
38
  // src/theme/palettes.ts
20
39
  var baseSpacing = { xs: 4, sm: 8, md: 16, lg: 24, xl: 32, xxl: 48, xxxl: 64 };
@@ -874,13 +893,7 @@ var styles6 = reactNative.StyleSheet.create({
874
893
  function Icon({ name, size = 20, color, strokeWidth = 2 }) {
875
894
  const colors = useThemeColors();
876
895
  const resolvedColor = color ?? colors.text;
877
- let LucideIcon = null;
878
- try {
879
- const icons = __require("lucide-react-native");
880
- LucideIcon = icons[name] ?? null;
881
- } catch {
882
- return null;
883
- }
896
+ const LucideIcon = LucideIcons__namespace[name];
884
897
  if (!LucideIcon) return null;
885
898
  return /* @__PURE__ */ jsxRuntime.jsx(LucideIcon, { size, color: resolvedColor, strokeWidth });
886
899
  }
@@ -1109,12 +1122,7 @@ function BlinkPressable({
1109
1122
  }
1110
1123
  ) });
1111
1124
  }
1112
- var SafeAreaView;
1113
- try {
1114
- SafeAreaView = __require("react-native-safe-area-context").SafeAreaView;
1115
- } catch {
1116
- SafeAreaView = __require("react-native").SafeAreaView;
1117
- }
1125
+ var SafeAreaView = reactNativeSafeAreaContext.SafeAreaView ?? reactNative.SafeAreaView;
1118
1126
  function SafeWrapper({ children, avoidKeyboard = false, style }) {
1119
1127
  const colors = useThemeColors();
1120
1128
  const safeStyle = {
@@ -1138,11 +1146,7 @@ function SafeWrapper({ children, avoidKeyboard = false, style }) {
1138
1146
  var styles11 = reactNative.StyleSheet.create({
1139
1147
  flex: { flex: 1 }
1140
1148
  });
1141
- var useIsFocused = null;
1142
- try {
1143
- useIsFocused = __require("@react-navigation/native").useIsFocused;
1144
- } catch {
1145
- }
1149
+ var useIsFocused = native.useIsFocused ?? null;
1146
1150
  var propsAreEqual = (prev, next) => {
1147
1151
  if (__DEV__) return false;
1148
1152
  return prev.animation === next.animation && prev.duration === next.duration && prev.delay === next.delay && prev.easing === next.easing && prev.shouldResetAnimation === next.shouldResetAnimation && prev.children === next.children && prev.style === next.style;
@@ -2663,24 +2667,6 @@ var styles24 = reactNative.StyleSheet.create({
2663
2667
  flex: 1
2664
2668
  }
2665
2669
  });
2666
- var useSharedValue = null;
2667
- var useAnimatedStyle = null;
2668
- var withSpring = null;
2669
- var PanGestureHandler = null;
2670
- var GestureHandlerRootView = null;
2671
- try {
2672
- const rnr = __require("react-native-reanimated");
2673
- useSharedValue = rnr.useSharedValue;
2674
- useAnimatedStyle = rnr.useAnimatedStyle;
2675
- withSpring = rnr.withSpring;
2676
- } catch {
2677
- }
2678
- try {
2679
- const gh = __require("react-native-gesture-handler");
2680
- PanGestureHandler = gh.PanGestureHandler;
2681
- GestureHandlerRootView = gh.GestureHandlerRootView;
2682
- } catch {
2683
- }
2684
2670
  var { width: SCREEN_WIDTH3 } = reactNative.Dimensions.get("window");
2685
2671
  function SwipeDeckPanResponder({
2686
2672
  data,
@@ -2884,7 +2870,7 @@ function SwipeCard({
2884
2870
  style
2885
2871
  }) {
2886
2872
  const colors = useThemeColors();
2887
- return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: [styles27.card, { backgroundColor: colors.card }, style], children: [
2873
+ return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: [styles27.card, { backgroundColor: colors.card, borderColor: colors.border }, style], children: [
2888
2874
  children,
2889
2875
  /* @__PURE__ */ jsxRuntime.jsx(SwipeOverlay, { direction: swipeDirection, intensity: swipeIntensity })
2890
2876
  ] });
@@ -2894,20 +2880,50 @@ var styles27 = reactNative.StyleSheet.create({
2894
2880
  flex: 1,
2895
2881
  borderRadius: 16,
2896
2882
  overflow: "hidden",
2883
+ borderWidth: reactNative.StyleSheet.hairlineWidth,
2897
2884
  elevation: 4,
2898
2885
  shadowColor: "#000",
2899
- shadowOffset: { width: 0, height: 2 },
2900
- shadowOpacity: 0.2,
2886
+ shadowOffset: { width: 0, height: 4 },
2887
+ shadowOpacity: 0.15,
2901
2888
  shadowRadius: 8
2902
2889
  }
2903
2890
  });
2891
+ function ActionButton({
2892
+ onPress,
2893
+ label,
2894
+ size,
2895
+ bg,
2896
+ textColor
2897
+ }) {
2898
+ return /* @__PURE__ */ jsxRuntime.jsx(
2899
+ reactNative.Pressable,
2900
+ {
2901
+ onPress,
2902
+ style: [
2903
+ styles28.btn,
2904
+ {
2905
+ width: size,
2906
+ height: size,
2907
+ borderRadius: size / 2,
2908
+ backgroundColor: bg,
2909
+ elevation: 3,
2910
+ shadowColor: "#000",
2911
+ shadowOffset: { width: 0, height: 2 },
2912
+ shadowOpacity: 0.15,
2913
+ shadowRadius: 4
2914
+ }
2915
+ ],
2916
+ children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles28.btnText, { color: textColor, fontSize: size * 0.38 }], children: label })
2917
+ }
2918
+ );
2919
+ }
2904
2920
  function SwipeActions({ onNope, onLike, onSuperLike, onRewind, style }) {
2905
2921
  const colors = useThemeColors();
2906
2922
  return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: [styles28.row, style], children: [
2907
- onRewind && /* @__PURE__ */ jsxRuntime.jsx(reactNative.Pressable, { onPress: onRewind, style: [styles28.btn, styles28.small, { borderColor: colors.warning }], children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles28.icon, { color: colors.warning }], children: "\u21A9" }) }),
2908
- onNope && /* @__PURE__ */ jsxRuntime.jsx(reactNative.Pressable, { onPress: onNope, style: [styles28.btn, styles28.large, { borderColor: colors.error }], children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles28.icon, { color: colors.error }], children: "\u2715" }) }),
2909
- onSuperLike && /* @__PURE__ */ jsxRuntime.jsx(reactNative.Pressable, { onPress: onSuperLike, style: [styles28.btn, styles28.medium, { borderColor: "#4FC3F7" }], children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles28.icon, { color: "#4FC3F7" }], children: "\u2605" }) }),
2910
- onLike && /* @__PURE__ */ jsxRuntime.jsx(reactNative.Pressable, { onPress: onLike, style: [styles28.btn, styles28.large, { borderColor: colors.success }], children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles28.icon, { color: colors.success }], children: "\u2665" }) })
2923
+ onRewind && /* @__PURE__ */ jsxRuntime.jsx(ActionButton, { onPress: onRewind, label: "\u21A9", size: 44, bg: colors.surface, textColor: colors.warning }),
2924
+ onNope && /* @__PURE__ */ jsxRuntime.jsx(ActionButton, { onPress: onNope, label: "\u2715", size: 60, bg: colors.surface, textColor: colors.error }),
2925
+ onSuperLike && /* @__PURE__ */ jsxRuntime.jsx(ActionButton, { onPress: onSuperLike, label: "\u2605", size: 52, bg: colors.surface, textColor: "#4FC3F7" }),
2926
+ onLike && /* @__PURE__ */ jsxRuntime.jsx(ActionButton, { onPress: onLike, label: "\u2665", size: 60, bg: colors.surface, textColor: colors.success })
2911
2927
  ] });
2912
2928
  }
2913
2929
  var styles28 = reactNative.StyleSheet.create({
@@ -2915,22 +2931,14 @@ var styles28 = reactNative.StyleSheet.create({
2915
2931
  flexDirection: "row",
2916
2932
  alignItems: "center",
2917
2933
  justifyContent: "center",
2918
- gap: 16,
2919
- paddingVertical: 16
2934
+ gap: 16
2920
2935
  },
2921
2936
  btn: {
2922
- borderWidth: 2,
2923
- borderRadius: 100,
2924
2937
  alignItems: "center",
2925
- justifyContent: "center",
2926
- backgroundColor: "transparent"
2938
+ justifyContent: "center"
2927
2939
  },
2928
- small: { width: 44, height: 44 },
2929
- medium: { width: 52, height: 52 },
2930
- large: { width: 64, height: 64 },
2931
- icon: {
2932
- fontSize: 24,
2933
- fontWeight: "600"
2940
+ btnText: {
2941
+ fontWeight: "700"
2934
2942
  }
2935
2943
  });
2936
2944
  var { height: WINDOW_HEIGHT } = reactNative.Dimensions.get("window");
@@ -3086,11 +3094,7 @@ var styles31 = reactNative.StyleSheet.create({
3086
3094
  textShadowRadius: 2
3087
3095
  }
3088
3096
  });
3089
- var BlurView = null;
3090
- try {
3091
- BlurView = __require("expo-blur").BlurView;
3092
- } catch {
3093
- }
3097
+ var BlurView = expoBlur.BlurView ?? null;
3094
3098
  function GlassView({
3095
3099
  children,
3096
3100
  intensity = 40,
@@ -3157,11 +3161,7 @@ var styles33 = reactNative.StyleSheet.create({
3157
3161
  overflow: "hidden"
3158
3162
  }
3159
3163
  });
3160
- var useSafeAreaInsets = null;
3161
- try {
3162
- useSafeAreaInsets = __require("react-native-safe-area-context").useSafeAreaInsets;
3163
- } catch {
3164
- }
3164
+ var useSafeAreaInsets = reactNativeSafeAreaContext.useSafeAreaInsets ?? (() => ({ top: 0, bottom: 0, left: 0, right: 0 }));
3165
3165
  function GlassHeader({ title, left, right, intensity = 50, style }) {
3166
3166
  const colors = useThemeColors();
3167
3167
  const insets = useSafeAreaInsets ? useSafeAreaInsets() : { top: reactNative.Platform.OS === "ios" ? 44 : 24 };
@@ -3211,11 +3211,7 @@ var styles34 = reactNative.StyleSheet.create({
3211
3211
  fontWeight: "600"
3212
3212
  }
3213
3213
  });
3214
- var useSafeAreaInsets2 = null;
3215
- try {
3216
- useSafeAreaInsets2 = __require("react-native-safe-area-context").useSafeAreaInsets;
3217
- } catch {
3218
- }
3214
+ var useSafeAreaInsets2 = reactNativeSafeAreaContext.useSafeAreaInsets ?? (() => ({ top: 0, bottom: 0, left: 0, right: 0 }));
3219
3215
  var { height: WINDOW_HEIGHT3 } = reactNative.Dimensions.get("window");
3220
3216
  function GlassSheet({
3221
3217
  children,
@@ -3316,11 +3312,7 @@ var styles35 = reactNative.StyleSheet.create({
3316
3312
  fontSize: 18
3317
3313
  }
3318
3314
  });
3319
- var useSafeAreaInsets3 = null;
3320
- try {
3321
- useSafeAreaInsets3 = __require("react-native-safe-area-context").useSafeAreaInsets;
3322
- } catch {
3323
- }
3315
+ var useSafeAreaInsets3 = reactNativeSafeAreaContext.useSafeAreaInsets ?? (() => ({ top: 0, bottom: 0, left: 0, right: 0 }));
3324
3316
  function GlassTabBar({ tabs, activeKey, onChange, intensity = 50, style }) {
3325
3317
  const colors = useThemeColors();
3326
3318
  const insets = useSafeAreaInsets3 ? useSafeAreaInsets3() : { bottom: reactNative.Platform.OS === "ios" ? 34 : 0 };
@@ -4260,11 +4252,6 @@ var BlinkSwitch = ({
4260
4252
  )
4261
4253
  ] });
4262
4254
  };
4263
- var RNSlider;
4264
- try {
4265
- RNSlider = __require("@react-native-community/slider").default;
4266
- } catch {
4267
- }
4268
4255
  var Slider = ({
4269
4256
  value,
4270
4257
  onValueChange,
@@ -4301,28 +4288,6 @@ var Slider = ({
4301
4288
  }
4302
4289
  });
4303
4290
  const fillPercent = (value - min) / (max - min) * 100;
4304
- if (RNSlider) {
4305
- return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: [styles41.container, style], children: [
4306
- showValue && /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: styles41.valueRow, children: [
4307
- /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles41.valueText, children: min }),
4308
- /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles41.valueText, children: value.toFixed(2) }),
4309
- /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles41.valueText, children: max })
4310
- ] }),
4311
- /* @__PURE__ */ jsxRuntime.jsx(
4312
- RNSlider,
4313
- {
4314
- value,
4315
- onValueChange,
4316
- minimumValue: min,
4317
- maximumValue: max,
4318
- step,
4319
- minimumTrackTintColor: colors.primary,
4320
- maximumTrackTintColor: colors.border,
4321
- thumbTintColor: colors.primary
4322
- }
4323
- )
4324
- ] });
4325
- }
4326
4291
  return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: [styles41.container, style], children: [
4327
4292
  showValue && /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: styles41.valueRow, children: [
4328
4293
  /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles41.valueText, children: min }),
@@ -4332,14 +4297,7 @@ var Slider = ({
4332
4297
  /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles41.fallbackTrack, children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: [styles41.fallbackFill, { width: `${fillPercent}%` }] }) })
4333
4298
  ] });
4334
4299
  };
4335
- var ActionSheet;
4336
- var SheetManager;
4337
- try {
4338
- const pkg = __require("react-native-actions-sheet");
4339
- ActionSheet = pkg.default;
4340
- SheetManager = pkg.SheetManager;
4341
- } catch {
4342
- }
4300
+ _ActionSheetPkg__default.default?.default ?? _ActionSheetPkg__default.default ?? null;
4343
4301
  var Select = ({
4344
4302
  options,
4345
4303
  value,
@@ -4451,11 +4409,6 @@ var Select = ({
4451
4409
  ] }) }) })
4452
4410
  ] });
4453
4411
  };
4454
- var RNDateTimePicker;
4455
- try {
4456
- RNDateTimePicker = __require("@react-native-community/datetimepicker").default;
4457
- } catch {
4458
- }
4459
4412
  var DatePicker = ({
4460
4413
  value,
4461
4414
  onChange,
@@ -4555,16 +4508,7 @@ var DatePicker = ({
4555
4508
  }
4556
4509
  )
4557
4510
  ] }),
4558
- RNDateTimePicker ? /* @__PURE__ */ jsxRuntime.jsx(
4559
- RNDateTimePicker,
4560
- {
4561
- style: styles41.nativePicker,
4562
- value: tempDate,
4563
- mode,
4564
- display: "spinner",
4565
- onChange: (_, d) => d && setTempDate(d)
4566
- }
4567
- ) : /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles41.fallbackText, children: "Install @react-native-community/datetimepicker for native date picker." })
4511
+ /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles41.fallbackText, children: "Install @react-native-community/datetimepicker for native date picker." })
4568
4512
  ] }) }) })
4569
4513
  ] });
4570
4514
  };
@@ -4655,11 +4599,7 @@ var Counter = ({
4655
4599
  )
4656
4600
  ] });
4657
4601
  };
4658
- var BlurView2;
4659
- try {
4660
- BlurView2 = __require("expo-blur").BlurView;
4661
- } catch {
4662
- }
4602
+ var BlurView2 = expoBlur.BlurView ?? null;
4663
4603
  var Header = ({
4664
4604
  title,
4665
4605
  subtitle,
@@ -4909,12 +4849,6 @@ var SegmentedControl = ({
4909
4849
  ) }, seg.value))
4910
4850
  ] });
4911
4851
  };
4912
- var ActionSheet2;
4913
- try {
4914
- const pkg = __require("react-native-actions-sheet");
4915
- ActionSheet2 = pkg.default;
4916
- } catch {
4917
- }
4918
4852
  var BottomSheetFallback = React29__default.default.forwardRef(
4919
4853
  ({ children, title, style }, ref) => {
4920
4854
  const colors = useThemeColors();
package/dist/index.mjs CHANGED
@@ -1,14 +1,13 @@
1
1
  import React29, { createContext, memo, useRef, useState, useEffect, useContext, Children, isValidElement, useCallback } from 'react';
2
2
  import { Platform, Dimensions, StyleSheet, Animated, Modal, Pressable, View, Text as Text$1, InteractionManager, Easing, useColorScheme, TouchableOpacity, ActivityIndicator, Image, Switch, KeyboardAvoidingView, SafeAreaView as SafeAreaView$1, ScrollView, FlatList, TextInput, RefreshControl, PanResponder } from 'react-native';
3
3
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
4
- import { useSafeAreaInsets as useSafeAreaInsets$1 } from 'react-native-safe-area-context';
4
+ import * as LucideIcons from 'lucide-react-native';
5
+ import { useSafeAreaInsets as useSafeAreaInsets$1, SafeAreaView as SafeAreaView$2 } from 'react-native-safe-area-context';
6
+ import { useIsFocused as useIsFocused$1 } from '@react-navigation/native';
7
+ import { BlurView as BlurView$1 } from 'expo-blur';
8
+ import _ActionSheetPkg from 'react-native-actions-sheet';
5
9
 
6
- var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
7
- get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
8
- }) : x)(function(x) {
9
- if (typeof require !== "undefined") return require.apply(this, arguments);
10
- throw Error('Dynamic require of "' + x + '" is not supported');
11
- });
10
+ // src/provider/BlinkMobileUIProvider.tsx
12
11
 
13
12
  // src/theme/palettes.ts
14
13
  var baseSpacing = { xs: 4, sm: 8, md: 16, lg: 24, xl: 32, xxl: 48, xxxl: 64 };
@@ -868,13 +867,7 @@ var styles6 = StyleSheet.create({
868
867
  function Icon({ name, size = 20, color, strokeWidth = 2 }) {
869
868
  const colors = useThemeColors();
870
869
  const resolvedColor = color ?? colors.text;
871
- let LucideIcon = null;
872
- try {
873
- const icons = __require("lucide-react-native");
874
- LucideIcon = icons[name] ?? null;
875
- } catch {
876
- return null;
877
- }
870
+ const LucideIcon = LucideIcons[name];
878
871
  if (!LucideIcon) return null;
879
872
  return /* @__PURE__ */ jsx(LucideIcon, { size, color: resolvedColor, strokeWidth });
880
873
  }
@@ -1103,12 +1096,7 @@ function BlinkPressable({
1103
1096
  }
1104
1097
  ) });
1105
1098
  }
1106
- var SafeAreaView;
1107
- try {
1108
- SafeAreaView = __require("react-native-safe-area-context").SafeAreaView;
1109
- } catch {
1110
- SafeAreaView = __require("react-native").SafeAreaView;
1111
- }
1099
+ var SafeAreaView = SafeAreaView$2 ?? SafeAreaView$1;
1112
1100
  function SafeWrapper({ children, avoidKeyboard = false, style }) {
1113
1101
  const colors = useThemeColors();
1114
1102
  const safeStyle = {
@@ -1132,11 +1120,7 @@ function SafeWrapper({ children, avoidKeyboard = false, style }) {
1132
1120
  var styles11 = StyleSheet.create({
1133
1121
  flex: { flex: 1 }
1134
1122
  });
1135
- var useIsFocused = null;
1136
- try {
1137
- useIsFocused = __require("@react-navigation/native").useIsFocused;
1138
- } catch {
1139
- }
1123
+ var useIsFocused = useIsFocused$1 ?? null;
1140
1124
  var propsAreEqual = (prev, next) => {
1141
1125
  if (__DEV__) return false;
1142
1126
  return prev.animation === next.animation && prev.duration === next.duration && prev.delay === next.delay && prev.easing === next.easing && prev.shouldResetAnimation === next.shouldResetAnimation && prev.children === next.children && prev.style === next.style;
@@ -2657,24 +2641,6 @@ var styles24 = StyleSheet.create({
2657
2641
  flex: 1
2658
2642
  }
2659
2643
  });
2660
- var useSharedValue = null;
2661
- var useAnimatedStyle = null;
2662
- var withSpring = null;
2663
- var PanGestureHandler = null;
2664
- var GestureHandlerRootView = null;
2665
- try {
2666
- const rnr = __require("react-native-reanimated");
2667
- useSharedValue = rnr.useSharedValue;
2668
- useAnimatedStyle = rnr.useAnimatedStyle;
2669
- withSpring = rnr.withSpring;
2670
- } catch {
2671
- }
2672
- try {
2673
- const gh = __require("react-native-gesture-handler");
2674
- PanGestureHandler = gh.PanGestureHandler;
2675
- GestureHandlerRootView = gh.GestureHandlerRootView;
2676
- } catch {
2677
- }
2678
2644
  var { width: SCREEN_WIDTH3 } = Dimensions.get("window");
2679
2645
  function SwipeDeckPanResponder({
2680
2646
  data,
@@ -2878,7 +2844,7 @@ function SwipeCard({
2878
2844
  style
2879
2845
  }) {
2880
2846
  const colors = useThemeColors();
2881
- return /* @__PURE__ */ jsxs(View, { style: [styles27.card, { backgroundColor: colors.card }, style], children: [
2847
+ return /* @__PURE__ */ jsxs(View, { style: [styles27.card, { backgroundColor: colors.card, borderColor: colors.border }, style], children: [
2882
2848
  children,
2883
2849
  /* @__PURE__ */ jsx(SwipeOverlay, { direction: swipeDirection, intensity: swipeIntensity })
2884
2850
  ] });
@@ -2888,20 +2854,50 @@ var styles27 = StyleSheet.create({
2888
2854
  flex: 1,
2889
2855
  borderRadius: 16,
2890
2856
  overflow: "hidden",
2857
+ borderWidth: StyleSheet.hairlineWidth,
2891
2858
  elevation: 4,
2892
2859
  shadowColor: "#000",
2893
- shadowOffset: { width: 0, height: 2 },
2894
- shadowOpacity: 0.2,
2860
+ shadowOffset: { width: 0, height: 4 },
2861
+ shadowOpacity: 0.15,
2895
2862
  shadowRadius: 8
2896
2863
  }
2897
2864
  });
2865
+ function ActionButton({
2866
+ onPress,
2867
+ label,
2868
+ size,
2869
+ bg,
2870
+ textColor
2871
+ }) {
2872
+ return /* @__PURE__ */ jsx(
2873
+ Pressable,
2874
+ {
2875
+ onPress,
2876
+ style: [
2877
+ styles28.btn,
2878
+ {
2879
+ width: size,
2880
+ height: size,
2881
+ borderRadius: size / 2,
2882
+ backgroundColor: bg,
2883
+ elevation: 3,
2884
+ shadowColor: "#000",
2885
+ shadowOffset: { width: 0, height: 2 },
2886
+ shadowOpacity: 0.15,
2887
+ shadowRadius: 4
2888
+ }
2889
+ ],
2890
+ children: /* @__PURE__ */ jsx(Text$1, { style: [styles28.btnText, { color: textColor, fontSize: size * 0.38 }], children: label })
2891
+ }
2892
+ );
2893
+ }
2898
2894
  function SwipeActions({ onNope, onLike, onSuperLike, onRewind, style }) {
2899
2895
  const colors = useThemeColors();
2900
2896
  return /* @__PURE__ */ jsxs(View, { style: [styles28.row, style], children: [
2901
- onRewind && /* @__PURE__ */ jsx(Pressable, { onPress: onRewind, style: [styles28.btn, styles28.small, { borderColor: colors.warning }], children: /* @__PURE__ */ jsx(Text$1, { style: [styles28.icon, { color: colors.warning }], children: "\u21A9" }) }),
2902
- onNope && /* @__PURE__ */ jsx(Pressable, { onPress: onNope, style: [styles28.btn, styles28.large, { borderColor: colors.error }], children: /* @__PURE__ */ jsx(Text$1, { style: [styles28.icon, { color: colors.error }], children: "\u2715" }) }),
2903
- onSuperLike && /* @__PURE__ */ jsx(Pressable, { onPress: onSuperLike, style: [styles28.btn, styles28.medium, { borderColor: "#4FC3F7" }], children: /* @__PURE__ */ jsx(Text$1, { style: [styles28.icon, { color: "#4FC3F7" }], children: "\u2605" }) }),
2904
- onLike && /* @__PURE__ */ jsx(Pressable, { onPress: onLike, style: [styles28.btn, styles28.large, { borderColor: colors.success }], children: /* @__PURE__ */ jsx(Text$1, { style: [styles28.icon, { color: colors.success }], children: "\u2665" }) })
2897
+ onRewind && /* @__PURE__ */ jsx(ActionButton, { onPress: onRewind, label: "\u21A9", size: 44, bg: colors.surface, textColor: colors.warning }),
2898
+ onNope && /* @__PURE__ */ jsx(ActionButton, { onPress: onNope, label: "\u2715", size: 60, bg: colors.surface, textColor: colors.error }),
2899
+ onSuperLike && /* @__PURE__ */ jsx(ActionButton, { onPress: onSuperLike, label: "\u2605", size: 52, bg: colors.surface, textColor: "#4FC3F7" }),
2900
+ onLike && /* @__PURE__ */ jsx(ActionButton, { onPress: onLike, label: "\u2665", size: 60, bg: colors.surface, textColor: colors.success })
2905
2901
  ] });
2906
2902
  }
2907
2903
  var styles28 = StyleSheet.create({
@@ -2909,22 +2905,14 @@ var styles28 = StyleSheet.create({
2909
2905
  flexDirection: "row",
2910
2906
  alignItems: "center",
2911
2907
  justifyContent: "center",
2912
- gap: 16,
2913
- paddingVertical: 16
2908
+ gap: 16
2914
2909
  },
2915
2910
  btn: {
2916
- borderWidth: 2,
2917
- borderRadius: 100,
2918
2911
  alignItems: "center",
2919
- justifyContent: "center",
2920
- backgroundColor: "transparent"
2912
+ justifyContent: "center"
2921
2913
  },
2922
- small: { width: 44, height: 44 },
2923
- medium: { width: 52, height: 52 },
2924
- large: { width: 64, height: 64 },
2925
- icon: {
2926
- fontSize: 24,
2927
- fontWeight: "600"
2914
+ btnText: {
2915
+ fontWeight: "700"
2928
2916
  }
2929
2917
  });
2930
2918
  var { height: WINDOW_HEIGHT } = Dimensions.get("window");
@@ -3080,11 +3068,7 @@ var styles31 = StyleSheet.create({
3080
3068
  textShadowRadius: 2
3081
3069
  }
3082
3070
  });
3083
- var BlurView = null;
3084
- try {
3085
- BlurView = __require("expo-blur").BlurView;
3086
- } catch {
3087
- }
3071
+ var BlurView = BlurView$1 ?? null;
3088
3072
  function GlassView({
3089
3073
  children,
3090
3074
  intensity = 40,
@@ -3151,11 +3135,7 @@ var styles33 = StyleSheet.create({
3151
3135
  overflow: "hidden"
3152
3136
  }
3153
3137
  });
3154
- var useSafeAreaInsets = null;
3155
- try {
3156
- useSafeAreaInsets = __require("react-native-safe-area-context").useSafeAreaInsets;
3157
- } catch {
3158
- }
3138
+ var useSafeAreaInsets = useSafeAreaInsets$1 ?? (() => ({ top: 0, bottom: 0, left: 0, right: 0 }));
3159
3139
  function GlassHeader({ title, left, right, intensity = 50, style }) {
3160
3140
  const colors = useThemeColors();
3161
3141
  const insets = useSafeAreaInsets ? useSafeAreaInsets() : { top: Platform.OS === "ios" ? 44 : 24 };
@@ -3205,11 +3185,7 @@ var styles34 = StyleSheet.create({
3205
3185
  fontWeight: "600"
3206
3186
  }
3207
3187
  });
3208
- var useSafeAreaInsets2 = null;
3209
- try {
3210
- useSafeAreaInsets2 = __require("react-native-safe-area-context").useSafeAreaInsets;
3211
- } catch {
3212
- }
3188
+ var useSafeAreaInsets2 = useSafeAreaInsets$1 ?? (() => ({ top: 0, bottom: 0, left: 0, right: 0 }));
3213
3189
  var { height: WINDOW_HEIGHT3 } = Dimensions.get("window");
3214
3190
  function GlassSheet({
3215
3191
  children,
@@ -3310,11 +3286,7 @@ var styles35 = StyleSheet.create({
3310
3286
  fontSize: 18
3311
3287
  }
3312
3288
  });
3313
- var useSafeAreaInsets3 = null;
3314
- try {
3315
- useSafeAreaInsets3 = __require("react-native-safe-area-context").useSafeAreaInsets;
3316
- } catch {
3317
- }
3289
+ var useSafeAreaInsets3 = useSafeAreaInsets$1 ?? (() => ({ top: 0, bottom: 0, left: 0, right: 0 }));
3318
3290
  function GlassTabBar({ tabs, activeKey, onChange, intensity = 50, style }) {
3319
3291
  const colors = useThemeColors();
3320
3292
  const insets = useSafeAreaInsets3 ? useSafeAreaInsets3() : { bottom: Platform.OS === "ios" ? 34 : 0 };
@@ -4254,11 +4226,6 @@ var BlinkSwitch = ({
4254
4226
  )
4255
4227
  ] });
4256
4228
  };
4257
- var RNSlider;
4258
- try {
4259
- RNSlider = __require("@react-native-community/slider").default;
4260
- } catch {
4261
- }
4262
4229
  var Slider = ({
4263
4230
  value,
4264
4231
  onValueChange,
@@ -4295,28 +4262,6 @@ var Slider = ({
4295
4262
  }
4296
4263
  });
4297
4264
  const fillPercent = (value - min) / (max - min) * 100;
4298
- if (RNSlider) {
4299
- return /* @__PURE__ */ jsxs(View, { style: [styles41.container, style], children: [
4300
- showValue && /* @__PURE__ */ jsxs(View, { style: styles41.valueRow, children: [
4301
- /* @__PURE__ */ jsx(Text$1, { style: styles41.valueText, children: min }),
4302
- /* @__PURE__ */ jsx(Text$1, { style: styles41.valueText, children: value.toFixed(2) }),
4303
- /* @__PURE__ */ jsx(Text$1, { style: styles41.valueText, children: max })
4304
- ] }),
4305
- /* @__PURE__ */ jsx(
4306
- RNSlider,
4307
- {
4308
- value,
4309
- onValueChange,
4310
- minimumValue: min,
4311
- maximumValue: max,
4312
- step,
4313
- minimumTrackTintColor: colors.primary,
4314
- maximumTrackTintColor: colors.border,
4315
- thumbTintColor: colors.primary
4316
- }
4317
- )
4318
- ] });
4319
- }
4320
4265
  return /* @__PURE__ */ jsxs(View, { style: [styles41.container, style], children: [
4321
4266
  showValue && /* @__PURE__ */ jsxs(View, { style: styles41.valueRow, children: [
4322
4267
  /* @__PURE__ */ jsx(Text$1, { style: styles41.valueText, children: min }),
@@ -4326,14 +4271,7 @@ var Slider = ({
4326
4271
  /* @__PURE__ */ jsx(View, { style: styles41.fallbackTrack, children: /* @__PURE__ */ jsx(View, { style: [styles41.fallbackFill, { width: `${fillPercent}%` }] }) })
4327
4272
  ] });
4328
4273
  };
4329
- var ActionSheet;
4330
- var SheetManager;
4331
- try {
4332
- const pkg = __require("react-native-actions-sheet");
4333
- ActionSheet = pkg.default;
4334
- SheetManager = pkg.SheetManager;
4335
- } catch {
4336
- }
4274
+ _ActionSheetPkg?.default ?? _ActionSheetPkg ?? null;
4337
4275
  var Select = ({
4338
4276
  options,
4339
4277
  value,
@@ -4445,11 +4383,6 @@ var Select = ({
4445
4383
  ] }) }) })
4446
4384
  ] });
4447
4385
  };
4448
- var RNDateTimePicker;
4449
- try {
4450
- RNDateTimePicker = __require("@react-native-community/datetimepicker").default;
4451
- } catch {
4452
- }
4453
4386
  var DatePicker = ({
4454
4387
  value,
4455
4388
  onChange,
@@ -4549,16 +4482,7 @@ var DatePicker = ({
4549
4482
  }
4550
4483
  )
4551
4484
  ] }),
4552
- RNDateTimePicker ? /* @__PURE__ */ jsx(
4553
- RNDateTimePicker,
4554
- {
4555
- style: styles41.nativePicker,
4556
- value: tempDate,
4557
- mode,
4558
- display: "spinner",
4559
- onChange: (_, d) => d && setTempDate(d)
4560
- }
4561
- ) : /* @__PURE__ */ jsx(Text$1, { style: styles41.fallbackText, children: "Install @react-native-community/datetimepicker for native date picker." })
4485
+ /* @__PURE__ */ jsx(Text$1, { style: styles41.fallbackText, children: "Install @react-native-community/datetimepicker for native date picker." })
4562
4486
  ] }) }) })
4563
4487
  ] });
4564
4488
  };
@@ -4649,11 +4573,7 @@ var Counter = ({
4649
4573
  )
4650
4574
  ] });
4651
4575
  };
4652
- var BlurView2;
4653
- try {
4654
- BlurView2 = __require("expo-blur").BlurView;
4655
- } catch {
4656
- }
4576
+ var BlurView2 = BlurView$1 ?? null;
4657
4577
  var Header = ({
4658
4578
  title,
4659
4579
  subtitle,
@@ -4903,12 +4823,6 @@ var SegmentedControl = ({
4903
4823
  ) }, seg.value))
4904
4824
  ] });
4905
4825
  };
4906
- var ActionSheet2;
4907
- try {
4908
- const pkg = __require("react-native-actions-sheet");
4909
- ActionSheet2 = pkg.default;
4910
- } catch {
4911
- }
4912
4826
  var BottomSheetFallback = React29.forwardRef(
4913
4827
  ({ children, title, style }, ref) => {
4914
4828
  const colors = useThemeColors();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blinkdotnew/mobile-ui",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Blink Mobile UI SDK — production-quality React Native / Expo component library",
5
5
  "keywords": [
6
6
  "blink",