@mrmeg/expo-ui 0.1.0 → 0.1.2

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 +275 -3
  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 +63 -34
  48. package/dist/lib/sentry.d.ts +0 -16
  49. package/dist/lib/sentry.js +0 -55
@@ -2,10 +2,10 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import React, { useRef, useState, useCallback } from "react";
3
3
  import { View, TextInput as RNTextInput, Pressable, StyleSheet, Platform, } from "react-native";
4
4
  import Animated, { useSharedValue, useAnimatedStyle, withTiming, useReducedMotion, } from "react-native-reanimated";
5
- import { useTheme } from "../hooks/useTheme";
6
- import { spacing } from "../constants/spacing";
7
- import { fontFamilies } from "../constants/fonts";
8
- import { StyledText } from "./StyledText";
5
+ import { useTheme } from "../hooks/useTheme.js";
6
+ import { spacing } from "../constants/spacing.js";
7
+ import { fontFamilies } from "../constants/fonts.js";
8
+ import { StyledText } from "./StyledText.js";
9
9
  const CELL_WIDTH = 36;
10
10
  const CELL_HEIGHT = 40;
11
11
  const CELL_FONT_SIZE = 20;
@@ -1,10 +1,10 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { StyleSheet, Platform } from "react-native";
3
3
  import * as LabelPrimitive from "@rn-primitives/label";
4
- import { useTheme } from "../hooks/useTheme";
5
- import { spacing } from "../constants/spacing";
6
- import { fontFamilies } from "../constants/fonts";
7
- import { StyledText } from "./StyledText";
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
8
  const SIZE_CONFIGS = {
9
9
  sm: { fontSize: 12 },
10
10
  md: { fontSize: 14 },
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { View, StyleSheet, Platform } from "react-native";
3
- import { useDimensions } from "../hooks/useDimensions";
3
+ import { useDimensions } from "../hooks/useDimensions.js";
4
4
  const MAX_WIDTH_PRESETS = {
5
5
  sm: 640,
6
6
  md: 768,
@@ -4,12 +4,12 @@ import { StyleSheet, View, ActivityIndicator, Pressable, Platform } from "react-
4
4
  import Animated, { useSharedValue, useAnimatedStyle, withTiming, runOnJS, useReducedMotion, Easing, } from "react-native-reanimated";
5
5
  import { useTranslation } from "react-i18next";
6
6
  import { SafeAreaInsetsContext } from "react-native-safe-area-context";
7
- import { fontFamilies } from "../constants/fonts";
8
- import { Icon } from "./Icon";
9
- import { useTheme } from "../hooks/useTheme";
10
- import { spacing } from "../constants/spacing";
11
- import { StyledText } from "./StyledText";
12
- import { globalUIStore } from "../state/globalUIStore";
7
+ import { fontFamilies } from "../constants/fonts.js";
8
+ import { Icon } from "./Icon.js";
9
+ import { useTheme } from "../hooks/useTheme.js";
10
+ import { spacing } from "../constants/spacing.js";
11
+ import { StyledText } from "./StyledText.js";
12
+ import { globalUIStore } from "../state/globalUIStore.js";
13
13
  /**
14
14
  * Notification
15
15
  *
@@ -1,13 +1,13 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { AnimatedView } from "./AnimatedView";
3
- import { TextClassContext, TextColorContext } from "./StyledText";
4
- import { useTheme } from "../hooks/useTheme";
5
- import { spacing } from "../constants/spacing";
2
+ import { AnimatedView } from "./AnimatedView.js";
3
+ import { TextClassContext, TextColorContext } from "./StyledText.js";
4
+ import { useTheme } from "../hooks/useTheme.js";
5
+ import { spacing } from "../constants/spacing.js";
6
6
  import * as PopoverPrimitive from "@rn-primitives/popover";
7
7
  import * as React from "react";
8
8
  import { Platform, StyleSheet, View } from "react-native";
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
  * Popover Trigger Component
13
13
  * The element that triggers the popover to open/close
@@ -2,8 +2,8 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useEffect, useRef, useState } from "react";
3
3
  import { Animated, StyleSheet, View } from "react-native";
4
4
  import Reanimated, { useSharedValue, useAnimatedStyle, withTiming, useReducedMotion, } from "react-native-reanimated";
5
- import { useTheme } from "../hooks/useTheme";
6
- import { shouldUseNativeDriver } from "../lib/animations";
5
+ import { useTheme } from "../hooks/useTheme.js";
6
+ import { shouldUseNativeDriver } from "../lib/animations.js";
7
7
  // ============================================================================
8
8
  // Constants
9
9
  // ============================================================================
@@ -2,10 +2,10 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { createContext, useContext, useEffect } from "react";
3
3
  import { View, StyleSheet, Pressable } from "react-native";
4
4
  import Animated, { useSharedValue, useAnimatedStyle, withTiming, useReducedMotion, } from "react-native-reanimated";
5
- import { StyledText } from "./StyledText";
6
- import { useTheme } from "../hooks/useTheme";
7
- import { spacing } from "../constants/spacing";
8
- import { hapticLight } from "../lib/haptics";
5
+ import { StyledText } from "./StyledText.js";
6
+ import { useTheme } from "../hooks/useTheme.js";
7
+ import { spacing } from "../constants/spacing.js";
8
+ import { hapticLight } from "../lib/haptics.js";
9
9
  import * as RadioGroupPrimitive from "@rn-primitives/radio-group";
10
10
  const DEFAULT_HIT_SLOP = 8;
11
11
  const SIZE_CONFIGS = {
@@ -1,12 +1,12 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
3
  import { Platform, StyleSheet, View } from "react-native";
4
- import { Icon } from "./Icon";
5
- import { AnimatedView } from "./AnimatedView";
6
- import { TextClassContext, TextColorContext } from "./StyledText";
7
- import { useTheme } from "../hooks/useTheme";
8
- import { spacing } from "../constants/spacing";
9
- import { palette } from "../constants/colors";
4
+ import { Icon } from "./Icon.js";
5
+ import { AnimatedView } from "./AnimatedView.js";
6
+ import { TextClassContext, TextColorContext } from "./StyledText.js";
7
+ import { useTheme } from "../hooks/useTheme.js";
8
+ import { spacing } from "../constants/spacing.js";
9
+ import { palette } from "../constants/colors.js";
10
10
  import * as SelectPrimitive from "@rn-primitives/select";
11
11
  import { FullWindowOverlay as RNFullWindowOverlay } from "react-native-screens";
12
12
  import { useSafeAreaInsets } from "react-native-safe-area-context";
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { StyleSheet } from "react-native";
3
- import { useTheme } from "../hooks/useTheme";
4
- import { spacing } from "../constants/spacing";
3
+ import { useTheme } from "../hooks/useTheme.js";
4
+ import { spacing } from "../constants/spacing.js";
5
5
  import * as SeparatorPrimitive from "@rn-primitives/separator";
6
6
  const SIZE_CONFIGS = {
7
7
  sm: 1,
@@ -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";