@mrmeg/expo-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 (49) hide show
  1. package/README.md +134 -2
  2. package/dist/components/Accordion.js +4 -4
  3. package/dist/components/AnimatedView.js +1 -1
  4. package/dist/components/Badge.js +3 -3
  5. package/dist/components/BottomSheet.js +4 -4
  6. package/dist/components/Button.js +31 -15
  7. package/dist/components/Card.js +4 -4
  8. package/dist/components/Checkbox.js +5 -5
  9. package/dist/components/Collapsible.js +3 -3
  10. package/dist/components/Dialog.js +6 -6
  11. package/dist/components/Drawer.js +4 -4
  12. package/dist/components/DropdownMenu.js +5 -5
  13. package/dist/components/EmptyState.js +5 -5
  14. package/dist/components/ErrorBoundary.d.ts +4 -0
  15. package/dist/components/ErrorBoundary.js +1 -9
  16. package/dist/components/Icon.js +1 -1
  17. package/dist/components/InputOTP.js +4 -4
  18. package/dist/components/Label.js +4 -4
  19. package/dist/components/MaxWidthContainer.js +1 -1
  20. package/dist/components/Notification.js +6 -6
  21. package/dist/components/Popover.js +5 -5
  22. package/dist/components/Progress.js +2 -2
  23. package/dist/components/RadioGroup.js +4 -4
  24. package/dist/components/Select.js +6 -6
  25. package/dist/components/Separator.js +2 -2
  26. package/dist/components/Skeleton.js +3 -3
  27. package/dist/components/Slider.js +4 -4
  28. package/dist/components/StatusBar.js +1 -1
  29. package/dist/components/StyledText.js +2 -2
  30. package/dist/components/Switch.js +6 -6
  31. package/dist/components/Tabs.js +4 -4
  32. package/dist/components/TextInput.js +7 -7
  33. package/dist/components/Toggle.js +5 -5
  34. package/dist/components/ToggleGroup.js +4 -4
  35. package/dist/components/Tooltip.js +5 -5
  36. package/dist/components/index.js +35 -35
  37. package/dist/constants/colors.js +5 -5
  38. package/dist/constants/fonts.js +75 -71
  39. package/dist/constants/index.js +3 -3
  40. package/dist/hooks/index.js +6 -6
  41. package/dist/hooks/useScalePress.js +1 -1
  42. package/dist/hooks/useTheme.js +3 -3
  43. package/dist/index.js +5 -5
  44. package/dist/lib/index.d.ts +0 -1
  45. package/dist/lib/index.js +2 -3
  46. package/dist/state/index.js +2 -2
  47. package/package.json +52 -34
  48. package/dist/lib/sentry.d.ts +0 -16
  49. package/dist/lib/sentry.js +0 -55
@@ -2,9 +2,9 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useEffect, useRef } from "react";
3
3
  import { View, Animated, StyleSheet } from "react-native";
4
4
  import { useReducedMotion } from "react-native-reanimated";
5
- import { useTheme } from "../hooks/useTheme";
6
- import { shouldUseNativeDriver } from "../lib/animations";
7
- import { spacing } from "../constants/spacing";
5
+ import { useTheme } from "../hooks/useTheme.js";
6
+ import { shouldUseNativeDriver } from "../lib/animations.js";
7
+ import { spacing } from "../constants/spacing.js";
8
8
  /**
9
9
  * Skeleton Component
10
10
  *
@@ -1,12 +1,12 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { palette } from "../constants/colors";
3
- import { useTheme } from "../hooks/useTheme";
4
- import { hapticLight } from "../lib/haptics";
2
+ import { palette } from "../constants/colors.js";
3
+ import { useTheme } from "../hooks/useTheme.js";
4
+ import { hapticLight } from "../lib/haptics.js";
5
5
  import { useCallback, useRef } from "react";
6
6
  import { Platform, StyleSheet, View } from "react-native";
7
7
  import { Gesture, GestureDetector } from "react-native-gesture-handler";
8
8
  import Animated, { runOnJS, useAnimatedStyle, useSharedValue, withTiming, } from "react-native-reanimated";
9
- import { StyledText } from "./StyledText";
9
+ import { StyledText } from "./StyledText.js";
10
10
  const SIZES = {
11
11
  sm: { track: 4, thumb: 16 },
12
12
  md: { track: 6, thumb: 20 },
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useEffect } from "react";
3
- import { useTheme } from "../hooks/useTheme";
3
+ import { useTheme } from "../hooks/useTheme.js";
4
4
  import { StatusBar as RNStatusBar, Platform } from "react-native";
5
5
  export const StatusBar = () => {
6
6
  const { scheme, theme } = useTheme();
@@ -2,8 +2,8 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import React, { forwardRef } from "react";
3
3
  import { Text as RNText, StyleSheet } from "react-native";
4
4
  import { useTranslation } from "react-i18next";
5
- import { useTheme } from "../hooks/useTheme";
6
- import { fontFamilies } from "../constants/fonts";
5
+ import { useTheme } from "../hooks/useTheme.js";
6
+ import { fontFamilies } from "../constants/fonts.js";
7
7
  /**
8
8
  * TextClassContext provides className context for nested text components
9
9
  * Used by @rn-primitives to apply consistent styling through the component tree
@@ -1,14 +1,14 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { palette } from "../constants/colors";
3
- import { fontFamilies } from "../constants/fonts";
4
- import { spacing } from "../constants/spacing";
5
- import { useTheme } from "../hooks/useTheme";
6
- import { hapticLight } from "../lib/haptics";
2
+ import { palette } from "../constants/colors.js";
3
+ import { fontFamilies } from "../constants/fonts.js";
4
+ import { spacing } from "../constants/spacing.js";
5
+ import { useTheme } from "../hooks/useTheme.js";
6
+ import { hapticLight } from "../lib/haptics.js";
7
7
  import * as SwitchPrimitives from "@rn-primitives/switch";
8
8
  import { useCallback, useEffect, useRef } from "react";
9
9
  import { ActivityIndicator, Platform, StyleSheet, View } from "react-native";
10
10
  import Animated, { useSharedValue, useAnimatedStyle, withTiming, interpolate, useReducedMotion, } from "react-native-reanimated";
11
- import { StyledText } from "./StyledText";
11
+ import { StyledText } from "./StyledText.js";
12
12
  const DEFAULT_HIT_SLOP = 8;
13
13
  function Switch({ variant = "default", labelOn, labelOff, size = { width: 44, height: 24 }, thumbSize = 20, loading = false, style: styleOverride, ...props }) {
14
14
  const { theme, getContrastingColor, withAlpha } = useTheme();
@@ -3,10 +3,10 @@ import * as React from "react";
3
3
  import { Platform, StyleSheet, View } from "react-native";
4
4
  import * as TabsPrimitive from "@rn-primitives/tabs";
5
5
  import Animated, { useSharedValue, useAnimatedStyle, withTiming, useReducedMotion, } from "react-native-reanimated";
6
- import { StyledText, TextClassContext, TextColorContext } from "./StyledText";
7
- import { Icon } from "./Icon";
8
- import { useTheme } from "../hooks/useTheme";
9
- import { spacing } from "../constants/spacing";
6
+ import { StyledText, TextClassContext, TextColorContext } from "./StyledText.js";
7
+ import { Icon } from "./Icon.js";
8
+ import { useTheme } from "../hooks/useTheme.js";
9
+ import { spacing } from "../constants/spacing.js";
10
10
  // ============================================================================
11
11
  // Size configs
12
12
  // ============================================================================
@@ -1,13 +1,13 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import React, { useState } from "react";
3
3
  import { StyleSheet, TextInput as RNTextInput, Platform, View, Pressable, } from "react-native";
4
- import { useTheme } from "../hooks/useTheme";
5
- import { spacing } from "../constants/spacing";
6
- import { fontFamilies } from "../constants/fonts";
7
- import { StyledText } from "./StyledText";
8
- import { Icon } from "./Icon";
9
- import { hapticLight } from "../lib/haptics";
10
- import { palette } from "../constants/colors";
4
+ import { useTheme } from "../hooks/useTheme.js";
5
+ import { spacing } from "../constants/spacing.js";
6
+ import { fontFamilies } from "../constants/fonts.js";
7
+ import { StyledText } from "./StyledText.js";
8
+ import { Icon } from "./Icon.js";
9
+ import { hapticLight } from "../lib/haptics.js";
10
+ import { palette } from "../constants/colors.js";
11
11
  const NUMERIC_REGEX = /^[0-9]*$/;
12
12
  const SIZE_CONFIGS = {
13
13
  sm: {
@@ -1,12 +1,12 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import React from "react";
3
- import { Icon } from "./Icon";
4
- import { TextClassContext, TextColorContext } from "./StyledText";
5
- import { useTheme } from "../hooks/useTheme";
6
- import { spacing } from "../constants/spacing";
3
+ import { Icon } from "./Icon.js";
4
+ import { TextClassContext, TextColorContext } from "./StyledText.js";
5
+ import { useTheme } from "../hooks/useTheme.js";
6
+ import { spacing } from "../constants/spacing.js";
7
7
  import * as TogglePrimitive from "@rn-primitives/toggle";
8
8
  import { Platform, StyleSheet, ActivityIndicator } from "react-native";
9
- import { palette } from "../constants/colors";
9
+ import { palette } from "../constants/colors.js";
10
10
  const DEFAULT_HIT_SLOP = 8;
11
11
  // Size configurations
12
12
  const TOGGLE_SIZES = {
@@ -1,8 +1,8 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { Icon } from "./Icon";
3
- import { TextClassContext, TextColorContext } from "./StyledText";
4
- import { spacing } from "../constants/spacing";
5
- import { useTheme } from "../hooks/useTheme";
2
+ import { Icon } from "./Icon.js";
3
+ import { TextClassContext, TextColorContext } from "./StyledText.js";
4
+ import { spacing } from "../constants/spacing.js";
5
+ import { useTheme } from "../hooks/useTheme.js";
6
6
  import * as ToggleGroupPrimitive from "@rn-primitives/toggle-group";
7
7
  import * as React from "react";
8
8
  import { Platform } from "react-native";
@@ -1,13 +1,13 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
3
  import { Platform, StyleSheet, View } from "react-native";
4
- import { AnimatedView } from "./AnimatedView";
5
- import { TextClassContext, TextColorContext } from "./StyledText";
6
- import { useTheme } from "../hooks/useTheme";
7
- import { spacing } from "../constants/spacing";
4
+ import { AnimatedView } from "./AnimatedView.js";
5
+ import { TextClassContext, TextColorContext } from "./StyledText.js";
6
+ import { useTheme } from "../hooks/useTheme.js";
7
+ import { spacing } from "../constants/spacing.js";
8
8
  import * as TooltipPrimitive from "@rn-primitives/tooltip";
9
9
  import { FullWindowOverlay as RNFullWindowOverlay } from "react-native-screens";
10
- import { palette } from "../constants/colors";
10
+ import { palette } from "../constants/colors.js";
11
11
  /**
12
12
  * Tooltip Trigger Component
13
13
  * The element that triggers the tooltip to appear on hover (web) or press (native)
@@ -1,35 +1,35 @@
1
- export * from "./Accordion";
2
- export * from "./Alert";
3
- export * from "./AnimatedView";
4
- export * from "./Badge";
5
- export * from "./BottomSheet";
6
- export * from "./Button";
7
- export * from "./Card";
8
- export * from "./Checkbox";
9
- export * from "./Collapsible";
10
- export * from "./Dialog";
11
- export * from "./DismissKeyboard";
12
- export * from "./Drawer";
13
- export * from "./DropdownMenu";
14
- export * from "./EmptyState";
15
- export * from "./ErrorBoundary";
16
- export * from "./Icon";
17
- export * from "./InputOTP";
18
- export * from "./Label";
19
- export * from "./MaxWidthContainer";
20
- export * from "./Notification";
21
- export * from "./Popover";
22
- export * from "./Progress";
23
- export * from "./RadioGroup";
24
- export * from "./Select";
25
- export * from "./Separator";
26
- export * from "./Skeleton";
27
- export * from "./Slider";
28
- export * from "./StatusBar";
29
- export * from "./StyledText";
30
- export * from "./Switch";
31
- export * from "./Tabs";
32
- export * from "./TextInput";
33
- export * from "./Toggle";
34
- export * from "./ToggleGroup";
35
- export * from "./Tooltip";
1
+ export * from "./Accordion.js";
2
+ export * from "./Alert.js";
3
+ export * from "./AnimatedView.js";
4
+ export * from "./Badge.js";
5
+ export * from "./BottomSheet.js";
6
+ export * from "./Button.js";
7
+ export * from "./Card.js";
8
+ export * from "./Checkbox.js";
9
+ export * from "./Collapsible.js";
10
+ export * from "./Dialog.js";
11
+ export * from "./DismissKeyboard.js";
12
+ export * from "./Drawer.js";
13
+ export * from "./DropdownMenu.js";
14
+ export * from "./EmptyState.js";
15
+ export * from "./ErrorBoundary.js";
16
+ export * from "./Icon.js";
17
+ export * from "./InputOTP.js";
18
+ export * from "./Label.js";
19
+ export * from "./MaxWidthContainer.js";
20
+ export * from "./Notification.js";
21
+ export * from "./Popover.js";
22
+ export * from "./Progress.js";
23
+ export * from "./RadioGroup.js";
24
+ export * from "./Select.js";
25
+ export * from "./Separator.js";
26
+ export * from "./Skeleton.js";
27
+ export * from "./Slider.js";
28
+ export * from "./StatusBar.js";
29
+ export * from "./StyledText.js";
30
+ export * from "./Switch.js";
31
+ export * from "./Tabs.js";
32
+ export * from "./TextInput.js";
33
+ export * from "./Toggle.js";
34
+ export * from "./ToggleGroup.js";
35
+ export * from "./Tooltip.js";
@@ -1,4 +1,4 @@
1
- import { navigationFonts } from "./fonts";
1
+ import { navigationFonts } from "./fonts.js";
2
2
  /**
3
3
  * Raw color palette - use semantic colors in components instead
4
4
  *
@@ -52,8 +52,8 @@ const lightTheme = {
52
52
  textDim: palette.gray500,
53
53
  primary: palette.gray900,
54
54
  primaryForeground: palette.gray50,
55
- secondary: palette.teal500,
56
- secondaryForeground: palette.white,
55
+ secondary: palette.gray100,
56
+ secondaryForeground: palette.gray900,
57
57
  muted: palette.gray100,
58
58
  mutedForeground: palette.gray500,
59
59
  accent: palette.teal500,
@@ -86,8 +86,8 @@ const darkTheme = {
86
86
  textDim: palette.dark400,
87
87
  primary: palette.gray50,
88
88
  primaryForeground: palette.gray900,
89
- secondary: palette.teal400,
90
- secondaryForeground: palette.black,
89
+ secondary: palette.gray800,
90
+ secondaryForeground: palette.gray50,
91
91
  muted: palette.dark700,
92
92
  mutedForeground: palette.dark400,
93
93
  accent: palette.teal400,
@@ -1,26 +1,27 @@
1
- import { Platform } from "react-native";
2
1
  // Web font stack fallback
3
2
  const WEB_FONT_STACK = "system-ui, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"";
4
- export const fontFamilies = {
5
- serif: Platform.select({
6
- ios: { regular: "Georgia", bold: "Georgia" },
7
- web: { regular: "Georgia, 'Times New Roman', serif", bold: "Georgia, 'Times New Roman', serif" },
8
- default: { regular: "serif", bold: "serif" },
9
- }),
10
- sansSerif: Platform.select({
11
- web: {
12
- regular: `"Lato", ${WEB_FONT_STACK}`,
13
- bold: `"Lato", ${WEB_FONT_STACK}`,
14
- },
15
- ios: {
3
+ const isReactNativeRuntime = typeof navigator !== "undefined" && navigator.product === "ReactNative";
4
+ const isWebRuntime = typeof document !== "undefined" && !isReactNativeRuntime;
5
+ const serifFamilies = isWebRuntime
6
+ ? { regular: "Georgia, 'Times New Roman', serif", bold: "Georgia, 'Times New Roman', serif" }
7
+ : { regular: "Georgia", bold: "Georgia" };
8
+ const sansSerifFamilies = isWebRuntime
9
+ ? {
10
+ regular: `"Lato", ${WEB_FONT_STACK}`,
11
+ bold: `"Lato", ${WEB_FONT_STACK}`,
12
+ }
13
+ : isReactNativeRuntime
14
+ ? {
16
15
  regular: "System",
17
16
  bold: "System",
18
- },
19
- default: {
17
+ }
18
+ : {
20
19
  regular: "sans-serif",
21
20
  bold: "sans-serif",
22
- },
23
- }),
21
+ };
22
+ export const fontFamilies = {
23
+ serif: serifFamilies,
24
+ sansSerif: sansSerifFamilies,
24
25
  };
25
26
  export const typography = {
26
27
  xs: { fontSize: 12, lineHeight: 16 },
@@ -32,60 +33,63 @@ export const typography = {
32
33
  "3xl": { fontSize: 30, lineHeight: 36 },
33
34
  "4xl": { fontSize: 36, lineHeight: 40 },
34
35
  };
35
- // Navigation theme fonts configuration
36
- export const navigationFonts = Platform.select({
37
- web: {
38
- regular: {
39
- fontFamily: fontFamilies.sansSerif.regular || WEB_FONT_STACK,
40
- fontWeight: "400",
41
- },
42
- medium: {
43
- fontFamily: fontFamilies.sansSerif.regular || WEB_FONT_STACK,
44
- fontWeight: "500",
45
- },
46
- bold: {
47
- fontFamily: fontFamilies.sansSerif.bold || WEB_FONT_STACK,
48
- fontWeight: "600",
49
- },
50
- heavy: {
51
- fontFamily: fontFamilies.sansSerif.bold || WEB_FONT_STACK,
52
- fontWeight: "700",
53
- },
36
+ const webNavigationFonts = {
37
+ regular: {
38
+ fontFamily: fontFamilies.sansSerif.regular || WEB_FONT_STACK,
39
+ fontWeight: "400",
40
+ },
41
+ medium: {
42
+ fontFamily: fontFamilies.sansSerif.regular || WEB_FONT_STACK,
43
+ fontWeight: "500",
44
+ },
45
+ bold: {
46
+ fontFamily: fontFamilies.sansSerif.bold || WEB_FONT_STACK,
47
+ fontWeight: "600",
48
+ },
49
+ heavy: {
50
+ fontFamily: fontFamilies.sansSerif.bold || WEB_FONT_STACK,
51
+ fontWeight: "700",
52
+ },
53
+ };
54
+ const nativeNavigationFonts = {
55
+ regular: {
56
+ fontFamily: fontFamilies.sansSerif.regular || "System",
57
+ fontWeight: "400",
54
58
  },
55
- ios: {
56
- regular: {
57
- fontFamily: fontFamilies.sansSerif.regular || "System",
58
- fontWeight: "400",
59
- },
60
- medium: {
61
- fontFamily: fontFamilies.sansSerif.regular || "System",
62
- fontWeight: "500",
63
- },
64
- bold: {
65
- fontFamily: fontFamilies.sansSerif.bold || "System",
66
- fontWeight: "600",
67
- },
68
- heavy: {
69
- fontFamily: fontFamilies.sansSerif.bold || "System",
70
- fontWeight: "700",
71
- },
59
+ medium: {
60
+ fontFamily: fontFamilies.sansSerif.regular || "System",
61
+ fontWeight: "500",
72
62
  },
73
- default: {
74
- regular: {
75
- fontFamily: fontFamilies.sansSerif.regular || "sans-serif",
76
- fontWeight: "normal",
77
- },
78
- medium: {
79
- fontFamily: fontFamilies.sansSerif.regular || "sans-serif-medium",
80
- fontWeight: "normal",
81
- },
82
- bold: {
83
- fontFamily: fontFamilies.sansSerif.bold || "sans-serif",
84
- fontWeight: "600",
85
- },
86
- heavy: {
87
- fontFamily: fontFamilies.sansSerif.bold || "sans-serif",
88
- fontWeight: "700",
89
- },
63
+ bold: {
64
+ fontFamily: fontFamilies.sansSerif.bold || "System",
65
+ fontWeight: "600",
90
66
  },
91
- });
67
+ heavy: {
68
+ fontFamily: fontFamilies.sansSerif.bold || "System",
69
+ fontWeight: "700",
70
+ },
71
+ };
72
+ const defaultNavigationFonts = {
73
+ regular: {
74
+ fontFamily: fontFamilies.sansSerif.regular || "sans-serif",
75
+ fontWeight: "normal",
76
+ },
77
+ medium: {
78
+ fontFamily: fontFamilies.sansSerif.regular || "sans-serif-medium",
79
+ fontWeight: "normal",
80
+ },
81
+ bold: {
82
+ fontFamily: fontFamilies.sansSerif.bold || "sans-serif",
83
+ fontWeight: "600",
84
+ },
85
+ heavy: {
86
+ fontFamily: fontFamilies.sansSerif.bold || "sans-serif",
87
+ fontWeight: "700",
88
+ },
89
+ };
90
+ // Navigation theme fonts configuration
91
+ export const navigationFonts = isWebRuntime
92
+ ? webNavigationFonts
93
+ : isReactNativeRuntime
94
+ ? nativeNavigationFonts
95
+ : defaultNavigationFonts;
@@ -1,3 +1,3 @@
1
- export * from "./colors";
2
- export * from "./fonts";
3
- export * from "./spacing";
1
+ export * from "./colors.js";
2
+ export * from "./fonts.js";
3
+ export * from "./spacing.js";
@@ -1,6 +1,6 @@
1
- export * from "./useDimensions";
2
- export * from "./useReduceMotion";
3
- export * from "./useResources";
4
- export * from "./useScalePress";
5
- export * from "./useStaggeredEntrance";
6
- export * from "./useTheme";
1
+ export * from "./useDimensions.js";
2
+ export * from "./useReduceMotion.js";
3
+ export * from "./useResources.js";
4
+ export * from "./useScalePress.js";
5
+ export * from "./useStaggeredEntrance.js";
6
+ export * from "./useTheme.js";
@@ -1,6 +1,6 @@
1
1
  import { useCallback } from "react";
2
2
  import { useSharedValue, useAnimatedStyle, withSpring, withTiming, useReducedMotion, } from "react-native-reanimated";
3
- import { hapticLight } from "../lib/haptics";
3
+ import { hapticLight } from "../lib/haptics.js";
4
4
  /**
5
5
  * Hook for press-feedback scale animation using Reanimated.
6
6
  *
@@ -1,8 +1,8 @@
1
1
  import { useEffect } from "react";
2
- import { colors } from "../constants/colors";
2
+ import { colors } from "../constants/colors.js";
3
3
  import { useColorScheme as useColorSchemeDefault, Platform, StyleSheet } from "react-native";
4
- import { useThemeStore } from "../state/themeStore";
5
- import { spacing as spacingConstants } from "../constants/spacing";
4
+ import { useThemeStore } from "../state/themeStore.js";
5
+ import { spacing as spacingConstants } from "../constants/spacing.js";
6
6
  // Module-level cache for contrast calculations to avoid memory leak
7
7
  // and share across components
8
8
  const contrastCache = new Map();
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
- export * from "./components";
2
- export * from "./constants";
3
- export * from "./hooks";
4
- export * from "./state";
5
- export * from "./lib";
1
+ export * from "./components/index.js";
2
+ export * from "./constants/index.js";
3
+ export * from "./hooks/index.js";
4
+ export * from "./state/index.js";
5
+ export * from "./lib/index.js";
@@ -1,3 +1,2 @@
1
1
  export * from "./animations";
2
2
  export * from "./haptics";
3
- export * from "./sentry";
package/dist/lib/index.js CHANGED
@@ -1,3 +1,2 @@
1
- export * from "./animations";
2
- export * from "./haptics";
3
- export * from "./sentry";
1
+ export * from "./animations.js";
2
+ export * from "./haptics.js";
@@ -1,2 +1,2 @@
1
- export * from "./globalUIStore";
2
- export * from "./themeStore";
1
+ export * from "./globalUIStore.js";
2
+ export * from "./themeStore.js";
package/package.json CHANGED
@@ -1,9 +1,27 @@
1
1
  {
2
2
  "name": "@mrmeg/expo-ui",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "private": false,
5
5
  "description": "Reusable Expo and React Native UI primitives for MrMeg projects.",
6
+ "keywords": [
7
+ "expo",
8
+ "react-native",
9
+ "react-native-web",
10
+ "design-system",
11
+ "ui-primitives",
12
+ "universal-ui"
13
+ ],
14
+ "author": "Matt Megenhardt",
6
15
  "license": "UNLICENSED",
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "git+https://github.com/mrmeg/expo-template.git",
19
+ "directory": "packages/ui"
20
+ },
21
+ "bugs": {
22
+ "url": "https://github.com/mrmeg/expo-template/issues"
23
+ },
24
+ "homepage": "https://github.com/mrmeg/expo-template/tree/main/packages/ui",
7
25
  "type": "module",
8
26
  "publishConfig": {
9
27
  "access": "public"
@@ -48,42 +66,42 @@
48
66
  "scripts": {
49
67
  "typecheck": "tsc --noEmit -p tsconfig.json",
50
68
  "test": "jest --config ../../jest.config.js packages/ui/src --runInBand --watchman=false",
51
- "build": "rm -rf dist && tsc -p tsconfig.build.json",
69
+ "build": "rm -rf dist && tsc -p tsconfig.build.json && node ../../scripts/fix-ui-package-esm.mjs",
52
70
  "publish:dry-run": "bun pm pack --dry-run"
53
71
  },
54
72
  "peerDependencies": {
55
- "@expo/vector-icons": "*",
56
- "@react-native-async-storage/async-storage": "*",
57
- "@rn-primitives/accordion": "*",
58
- "@rn-primitives/alert-dialog": "*",
59
- "@rn-primitives/checkbox": "*",
60
- "@rn-primitives/collapsible": "*",
61
- "@rn-primitives/dialog": "*",
62
- "@rn-primitives/dropdown-menu": "*",
63
- "@rn-primitives/label": "*",
64
- "@rn-primitives/popover": "*",
65
- "@rn-primitives/portal": "*",
66
- "@rn-primitives/radio-group": "*",
67
- "@rn-primitives/select": "*",
68
- "@rn-primitives/separator": "*",
69
- "@rn-primitives/slot": "*",
70
- "@rn-primitives/switch": "*",
71
- "@rn-primitives/tabs": "*",
72
- "@rn-primitives/toggle": "*",
73
- "@rn-primitives/toggle-group": "*",
74
- "@rn-primitives/tooltip": "*",
75
- "@rn-primitives/types": "*",
76
- "@sentry/react-native": "*",
77
- "expo": "*",
78
- "expo-font": "*",
79
- "expo-haptics": "*",
80
- "react": "*",
81
- "react-native": "*",
82
- "react-native-gesture-handler": "*",
83
- "react-native-reanimated": "*",
84
- "react-native-safe-area-context": "*",
85
- "react-native-web": "*",
86
- "zustand": "*"
73
+ "@expo/vector-icons": ">=15.0.0 <16.0.0",
74
+ "@react-native-async-storage/async-storage": ">=2.2.0 <2.3.0",
75
+ "@rn-primitives/accordion": "~1.4.0",
76
+ "@rn-primitives/alert-dialog": "~1.4.0",
77
+ "@rn-primitives/checkbox": "~1.4.0",
78
+ "@rn-primitives/collapsible": "~1.4.0",
79
+ "@rn-primitives/dialog": "~1.4.0",
80
+ "@rn-primitives/dropdown-menu": "~1.4.0",
81
+ "@rn-primitives/label": "~1.4.0",
82
+ "@rn-primitives/popover": "~1.4.0",
83
+ "@rn-primitives/portal": "~1.4.0",
84
+ "@rn-primitives/radio-group": "~1.4.0",
85
+ "@rn-primitives/select": "~1.4.0",
86
+ "@rn-primitives/separator": "~1.4.0",
87
+ "@rn-primitives/slot": "~1.4.0",
88
+ "@rn-primitives/switch": "~1.4.0",
89
+ "@rn-primitives/tabs": "~1.4.0",
90
+ "@rn-primitives/toggle": "~1.4.0",
91
+ "@rn-primitives/toggle-group": "~1.4.0",
92
+ "@rn-primitives/tooltip": "~1.4.0",
93
+ "@rn-primitives/types": "~1.4.0",
94
+ "expo": "~55.0.0",
95
+ "expo-font": "~55.0.0",
96
+ "expo-haptics": "~55.0.0",
97
+ "react": ">=19.2.0 <20.0.0",
98
+ "react-native": ">=0.83.0 <0.84.0",
99
+ "react-native-gesture-handler": "~2.30.0",
100
+ "react-native-reanimated": "~4.2.0",
101
+ "react-native-safe-area-context": "~5.6.0",
102
+ "react-native-web": ">=0.21.0 <0.22.0",
103
+ "react-native-worklets": "~0.7.0",
104
+ "zustand": ">=5.0.0 <6.0.0"
87
105
  },
88
106
  "devDependencies": {
89
107
  "@types/react": "~19.2.14",
@@ -1,16 +0,0 @@
1
- /**
2
- * Sentry error tracking wrapper.
3
- *
4
- * Zero-impact when EXPO_PUBLIC_SENTRY_DSN is not set — no network requests,
5
- * no global handlers, and no Sentry code in the entry bundle.
6
- */
7
- /**
8
- * Initialize Sentry. Call once at app startup (module scope in _layout.tsx).
9
- * No-op if sentryDsn is empty.
10
- */
11
- export declare function setupSentry(): void;
12
- /**
13
- * Capture an exception after the optional Sentry bundle has loaded.
14
- * No-op when Sentry is disabled or failed to initialize.
15
- */
16
- export declare function captureException(error: unknown, context?: Parameters<typeof import("@sentry/react-native")["captureException"]>[1]): void;