@frosted-ui/react-native 0.0.1-canary.100

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 (207) hide show
  1. package/README.md +160 -0
  2. package/dist/components/accordion.d.ts +21 -0
  3. package/dist/components/accordion.d.ts.map +1 -0
  4. package/dist/components/accordion.js +94 -0
  5. package/dist/components/accordion.js.map +1 -0
  6. package/dist/components/alert-dialog.d.ts +67 -0
  7. package/dist/components/alert-dialog.d.ts.map +1 -0
  8. package/dist/components/alert-dialog.js +170 -0
  9. package/dist/components/alert-dialog.js.map +1 -0
  10. package/dist/components/aspect-ratio.d.ts +4 -0
  11. package/dist/components/aspect-ratio.d.ts.map +1 -0
  12. package/dist/components/aspect-ratio.js +4 -0
  13. package/dist/components/aspect-ratio.js.map +1 -0
  14. package/dist/components/avatar.d.ts +23 -0
  15. package/dist/components/avatar.d.ts.map +1 -0
  16. package/dist/components/avatar.js +128 -0
  17. package/dist/components/avatar.js.map +1 -0
  18. package/dist/components/badge.d.ts +15 -0
  19. package/dist/components/badge.d.ts.map +1 -0
  20. package/dist/components/badge.js +81 -0
  21. package/dist/components/badge.js.map +1 -0
  22. package/dist/components/button.d.ts +14 -0
  23. package/dist/components/button.d.ts.map +1 -0
  24. package/dist/components/button.js +81 -0
  25. package/dist/components/button.js.map +1 -0
  26. package/dist/components/callout.d.ts +23 -0
  27. package/dist/components/callout.d.ts.map +1 -0
  28. package/dist/components/callout.js +128 -0
  29. package/dist/components/callout.js.map +1 -0
  30. package/dist/components/card.d.ts +9 -0
  31. package/dist/components/card.d.ts.map +1 -0
  32. package/dist/components/card.js +41 -0
  33. package/dist/components/card.js.map +1 -0
  34. package/dist/components/checkbox.d.ts +12 -0
  35. package/dist/components/checkbox.d.ts.map +1 -0
  36. package/dist/components/checkbox.js +100 -0
  37. package/dist/components/checkbox.js.map +1 -0
  38. package/dist/components/circular-progress.d.ts +21 -0
  39. package/dist/components/circular-progress.d.ts.map +1 -0
  40. package/dist/components/circular-progress.js +78 -0
  41. package/dist/components/circular-progress.js.map +1 -0
  42. package/dist/components/code.d.ts +18 -0
  43. package/dist/components/code.d.ts.map +1 -0
  44. package/dist/components/code.js +83 -0
  45. package/dist/components/code.js.map +1 -0
  46. package/dist/components/context-menu.d.ts +65 -0
  47. package/dist/components/context-menu.d.ts.map +1 -0
  48. package/dist/components/context-menu.js +441 -0
  49. package/dist/components/context-menu.js.map +1 -0
  50. package/dist/components/dialog.d.ts +49 -0
  51. package/dist/components/dialog.d.ts.map +1 -0
  52. package/dist/components/dialog.js +141 -0
  53. package/dist/components/dialog.js.map +1 -0
  54. package/dist/components/dropdown-menu.d.ts +65 -0
  55. package/dist/components/dropdown-menu.d.ts.map +1 -0
  56. package/dist/components/dropdown-menu.js +441 -0
  57. package/dist/components/dropdown-menu.js.map +1 -0
  58. package/dist/components/heading.d.ts +15 -0
  59. package/dist/components/heading.d.ts.map +1 -0
  60. package/dist/components/heading.js +8 -0
  61. package/dist/components/heading.js.map +1 -0
  62. package/dist/components/hover-card.d.ts +24 -0
  63. package/dist/components/hover-card.d.ts.map +1 -0
  64. package/dist/components/hover-card.js +49 -0
  65. package/dist/components/hover-card.js.map +1 -0
  66. package/dist/components/icon-button.d.ts +14 -0
  67. package/dist/components/icon-button.d.ts.map +1 -0
  68. package/dist/components/icon-button.js +81 -0
  69. package/dist/components/icon-button.js.map +1 -0
  70. package/dist/components/icon.d.ts +27 -0
  71. package/dist/components/icon.d.ts.map +1 -0
  72. package/dist/components/icon.js +30 -0
  73. package/dist/components/icon.js.map +1 -0
  74. package/dist/components/index.d.ts +37 -0
  75. package/dist/components/index.d.ts.map +1 -0
  76. package/dist/components/index.js +49 -0
  77. package/dist/components/index.js.map +1 -0
  78. package/dist/components/label.d.ts +8 -0
  79. package/dist/components/label.d.ts.map +1 -0
  80. package/dist/components/label.js +26 -0
  81. package/dist/components/label.js.map +1 -0
  82. package/dist/components/link.d.ts +19 -0
  83. package/dist/components/link.d.ts.map +1 -0
  84. package/dist/components/link.js +68 -0
  85. package/dist/components/link.js.map +1 -0
  86. package/dist/components/list.d.ts +37 -0
  87. package/dist/components/list.d.ts.map +1 -0
  88. package/dist/components/list.js +112 -0
  89. package/dist/components/list.js.map +1 -0
  90. package/dist/components/native-only-animated-view.d.ts +219 -0
  91. package/dist/components/native-only-animated-view.d.ts.map +1 -0
  92. package/dist/components/native-only-animated-view.js +26 -0
  93. package/dist/components/native-only-animated-view.js.map +1 -0
  94. package/dist/components/popover.d.ts +24 -0
  95. package/dist/components/popover.d.ts.map +1 -0
  96. package/dist/components/popover.js +52 -0
  97. package/dist/components/popover.js.map +1 -0
  98. package/dist/components/progress.d.ts +14 -0
  99. package/dist/components/progress.d.ts.map +1 -0
  100. package/dist/components/progress.js +52 -0
  101. package/dist/components/progress.js.map +1 -0
  102. package/dist/components/radio-group.d.ts +18 -0
  103. package/dist/components/radio-group.d.ts.map +1 -0
  104. package/dist/components/radio-group.js +122 -0
  105. package/dist/components/radio-group.js.map +1 -0
  106. package/dist/components/segmented-control.d.ts +21 -0
  107. package/dist/components/segmented-control.d.ts.map +1 -0
  108. package/dist/components/segmented-control.js +113 -0
  109. package/dist/components/segmented-control.js.map +1 -0
  110. package/dist/components/select.d.ts +58 -0
  111. package/dist/components/select.d.ts.map +1 -0
  112. package/dist/components/select.js +491 -0
  113. package/dist/components/select.js.map +1 -0
  114. package/dist/components/separator.d.ts +12 -0
  115. package/dist/components/separator.d.ts.map +1 -0
  116. package/dist/components/separator.js +47 -0
  117. package/dist/components/separator.js.map +1 -0
  118. package/dist/components/skeleton.d.ts +28 -0
  119. package/dist/components/skeleton.d.ts.map +1 -0
  120. package/dist/components/skeleton.js +137 -0
  121. package/dist/components/skeleton.js.map +1 -0
  122. package/dist/components/slider.d.ts +30 -0
  123. package/dist/components/slider.d.ts.map +1 -0
  124. package/dist/components/slider.js +248 -0
  125. package/dist/components/slider.js.map +1 -0
  126. package/dist/components/spinner.d.ts +17 -0
  127. package/dist/components/spinner.d.ts.map +1 -0
  128. package/dist/components/spinner.js +199 -0
  129. package/dist/components/spinner.js.map +1 -0
  130. package/dist/components/switch.d.ts +12 -0
  131. package/dist/components/switch.d.ts.map +1 -0
  132. package/dist/components/switch.js +188 -0
  133. package/dist/components/switch.js.map +1 -0
  134. package/dist/components/tabs.d.ts +26 -0
  135. package/dist/components/tabs.d.ts.map +1 -0
  136. package/dist/components/tabs.js +125 -0
  137. package/dist/components/tabs.js.map +1 -0
  138. package/dist/components/text-area.d.ts +16 -0
  139. package/dist/components/text-area.d.ts.map +1 -0
  140. package/dist/components/text-area.js +121 -0
  141. package/dist/components/text-area.js.map +1 -0
  142. package/dist/components/text-field.d.ts +35 -0
  143. package/dist/components/text-field.d.ts.map +1 -0
  144. package/dist/components/text-field.js +300 -0
  145. package/dist/components/text-field.js.map +1 -0
  146. package/dist/components/text.d.ts +23 -0
  147. package/dist/components/text.d.ts.map +1 -0
  148. package/dist/components/text.js +44 -0
  149. package/dist/components/text.js.map +1 -0
  150. package/dist/components/tooltip.d.ts +24 -0
  151. package/dist/components/tooltip.d.ts.map +1 -0
  152. package/dist/components/tooltip.js +63 -0
  153. package/dist/components/tooltip.js.map +1 -0
  154. package/dist/index.d.ts +9 -0
  155. package/dist/index.d.ts.map +1 -0
  156. package/dist/index.js +18 -0
  157. package/dist/index.js.map +1 -0
  158. package/dist/lib/button-styles.d.ts +13 -0
  159. package/dist/lib/button-styles.d.ts.map +1 -0
  160. package/dist/lib/button-styles.js +115 -0
  161. package/dist/lib/button-styles.js.map +1 -0
  162. package/dist/lib/color-utils.d.ts +26 -0
  163. package/dist/lib/color-utils.d.ts.map +1 -0
  164. package/dist/lib/color-utils.js +48 -0
  165. package/dist/lib/color-utils.js.map +1 -0
  166. package/dist/lib/dialog-styles.d.ts +42 -0
  167. package/dist/lib/dialog-styles.d.ts.map +1 -0
  168. package/dist/lib/dialog-styles.js +162 -0
  169. package/dist/lib/dialog-styles.js.map +1 -0
  170. package/dist/lib/full-window-overlay.d.ts +11 -0
  171. package/dist/lib/full-window-overlay.d.ts.map +1 -0
  172. package/dist/lib/full-window-overlay.js +16 -0
  173. package/dist/lib/full-window-overlay.js.map +1 -0
  174. package/dist/lib/panel-styles.d.ts +32 -0
  175. package/dist/lib/panel-styles.d.ts.map +1 -0
  176. package/dist/lib/panel-styles.js +96 -0
  177. package/dist/lib/panel-styles.js.map +1 -0
  178. package/dist/lib/text-input-styles.d.ts +36 -0
  179. package/dist/lib/text-input-styles.d.ts.map +1 -0
  180. package/dist/lib/text-input-styles.js +88 -0
  181. package/dist/lib/text-input-styles.js.map +1 -0
  182. package/dist/lib/theme-context.d.ts +80 -0
  183. package/dist/lib/theme-context.d.ts.map +1 -0
  184. package/dist/lib/theme-context.js +97 -0
  185. package/dist/lib/theme-context.js.map +1 -0
  186. package/dist/lib/theme-tokens.d.ts +222 -0
  187. package/dist/lib/theme-tokens.d.ts.map +1 -0
  188. package/dist/lib/theme-tokens.js +158 -0
  189. package/dist/lib/theme-tokens.js.map +1 -0
  190. package/dist/lib/theme.d.ts +40 -0
  191. package/dist/lib/theme.d.ts.map +1 -0
  192. package/dist/lib/theme.js +194 -0
  193. package/dist/lib/theme.js.map +1 -0
  194. package/dist/lib/types.d.ts +18 -0
  195. package/dist/lib/types.d.ts.map +1 -0
  196. package/dist/lib/types.js +2 -0
  197. package/dist/lib/types.js.map +1 -0
  198. package/dist/lib/use-theme-tokens.d.ts +593 -0
  199. package/dist/lib/use-theme-tokens.d.ts.map +1 -0
  200. package/dist/lib/use-theme-tokens.js +44 -0
  201. package/dist/lib/use-theme-tokens.js.map +1 -0
  202. package/docs/llm/COLOR_SYSTEM.md +799 -0
  203. package/docs/llm/COMPONENTS.md +1329 -0
  204. package/docs/llm/DESIGN_PATTERNS.md +2567 -0
  205. package/docs/llm/README.md +118 -0
  206. package/docs/llm/TYPOGRAPHY.md +516 -0
  207. package/package.json +106 -0
@@ -0,0 +1,137 @@
1
+ import { getAvatarSize } from '../components/avatar';
2
+ import { useThemeTokens } from '../lib/use-theme-tokens';
3
+ import * as React from 'react';
4
+ import { Platform, View } from 'react-native';
5
+ import Animated, { Easing, useAnimatedStyle, useSharedValue, withRepeat, withTiming, } from 'react-native-reanimated';
6
+ // Text border radius based on size
7
+ function getTextBorderRadius(size) {
8
+ switch (size) {
9
+ case '0':
10
+ case '1':
11
+ case '2':
12
+ return 4; // radius-1
13
+ case '3':
14
+ case '4':
15
+ return 6; // radius-2
16
+ case '5':
17
+ case '6':
18
+ return 8; // radius-3
19
+ case '7':
20
+ case '8':
21
+ return 10; // radius-4
22
+ case '9':
23
+ return 12; // radius-5
24
+ }
25
+ }
26
+ // Pulse animation hook using Reanimated (runs on UI thread) - native only
27
+ function usePulseAnimation() {
28
+ const opacity = useSharedValue(1);
29
+ React.useEffect(() => {
30
+ // Skip on web - we use CSS animations there
31
+ if (Platform.OS === 'web')
32
+ return;
33
+ // Use withRepeat with reverse=true for smooth looping: 1 → 0.5 → 1 → 0.5 → ...
34
+ opacity.value = withRepeat(withTiming(0.5, { duration: 1000, easing: Easing.bezier(0.4, 0, 0.6, 1) }), -1, // Infinite repeat
35
+ true // Reverse on each iteration
36
+ );
37
+ }, [opacity]);
38
+ const animatedStyle = useAnimatedStyle(() => ({
39
+ opacity: opacity.value,
40
+ }));
41
+ return animatedStyle;
42
+ }
43
+ // CSS animation style for web (GPU-accelerated)
44
+ const webPulseStyle = Platform.OS === 'web'
45
+ ? {
46
+ animationName: 'skeleton-pulse',
47
+ animationDuration: '2s',
48
+ animationTimingFunction: 'cubic-bezier(0.4, 0, 0.6, 1)',
49
+ animationIterationCount: 'infinite',
50
+ }
51
+ : undefined;
52
+ // Inject keyframes on web
53
+ if (Platform.OS === 'web' && typeof document !== 'undefined') {
54
+ const styleId = 'skeleton-pulse-keyframes';
55
+ if (!document.getElementById(styleId)) {
56
+ const style = document.createElement('style');
57
+ style.id = styleId;
58
+ style.textContent = `
59
+ @keyframes skeleton-pulse {
60
+ 0%, 100% { opacity: 1; }
61
+ 50% { opacity: 0.5; }
62
+ }
63
+ `;
64
+ document.head.appendChild(style);
65
+ }
66
+ }
67
+ function SkeletonAvatar({ size = '3', shape = 'circle', color = 'gray', style, ...props }) {
68
+ const { colors } = useThemeTokens();
69
+ const animatedStyle = usePulseAnimation();
70
+ const gray = colors.palettes.gray;
71
+ const palette = colors.palettes[color] ?? gray;
72
+ const avatarSize = getAvatarSize(size);
73
+ const borderRadius = shape === 'circle' ? avatarSize / 2 : avatarSize * 0.25;
74
+ const avatarStyle = {
75
+ width: avatarSize,
76
+ height: avatarSize,
77
+ borderRadius,
78
+ backgroundColor: palette.a3,
79
+ flexShrink: 0,
80
+ };
81
+ if (Platform.OS === 'web') {
82
+ return <View style={[avatarStyle, webPulseStyle, style]} {...props}/>;
83
+ }
84
+ return <Animated.View style={[avatarStyle, animatedStyle, style]} {...props}/>;
85
+ }
86
+ function SkeletonText({ size = '3', color = 'gray', style, ...props }) {
87
+ const { colors, typography } = useThemeTokens();
88
+ const animatedStyle = usePulseAnimation();
89
+ const gray = colors.palettes.gray;
90
+ const palette = colors.palettes[color] ?? gray;
91
+ const typo = typography[size];
92
+ const borderRadius = getTextBorderRadius(size);
93
+ // Container matches line-height, inner bar matches font-size
94
+ const containerStyle = {
95
+ height: typo.lineHeight,
96
+ justifyContent: 'center',
97
+ alignItems: 'stretch',
98
+ };
99
+ const barStyle = {
100
+ height: typo.fontSize,
101
+ borderRadius,
102
+ backgroundColor: palette.a3,
103
+ width: '100%',
104
+ };
105
+ if (Platform.OS === 'web') {
106
+ return (<View style={[containerStyle, style]} {...props}>
107
+ <View style={[barStyle, webPulseStyle]}/>
108
+ </View>);
109
+ }
110
+ return (<View style={[containerStyle, style]} {...props}>
111
+ <Animated.View style={[barStyle, animatedStyle]}/>
112
+ </View>);
113
+ }
114
+ function SkeletonRect({ color = 'gray', style, ...props }) {
115
+ const { colors } = useThemeTokens();
116
+ const animatedStyle = usePulseAnimation();
117
+ const gray = colors.palettes.gray;
118
+ const palette = colors.palettes[color] ?? gray;
119
+ const rectStyle = {
120
+ backgroundColor: palette.a3,
121
+ flexShrink: 0,
122
+ };
123
+ if (Platform.OS === 'web') {
124
+ return <View style={[rectStyle, webPulseStyle, style]} {...props}/>;
125
+ }
126
+ return <Animated.View style={[rectStyle, animatedStyle, style]} {...props}/>;
127
+ }
128
+ // ============================================================================
129
+ // Export composite component
130
+ // ============================================================================
131
+ const Skeleton = {
132
+ Avatar: SkeletonAvatar,
133
+ Text: SkeletonText,
134
+ Rect: SkeletonRect,
135
+ };
136
+ export { Skeleton, SkeletonAvatar, SkeletonRect, SkeletonText };
137
+ //# sourceMappingURL=skeleton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skeleton.js","sourceRoot":"","sources":["../../src/components/skeleton.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { Color } from '../lib/types';
2
+ import * as React from 'react';
3
+ import { type ViewStyle } from 'react-native';
4
+ type SliderSize = '1' | '2' | '3';
5
+ type SliderProps = {
6
+ /** Size of the slider track and thumb */
7
+ size?: SliderSize;
8
+ /** Accent color for the filled range */
9
+ color?: Color;
10
+ /** Current value - controlled mode */
11
+ value?: number;
12
+ /** Default value - uncontrolled mode */
13
+ defaultValue?: number;
14
+ /** Minimum value */
15
+ min?: number;
16
+ /** Maximum value */
17
+ max?: number;
18
+ /** Step increment */
19
+ step?: number;
20
+ /** Callback when value changes */
21
+ onValueChange?: (value: number) => void;
22
+ /** Whether the slider is disabled */
23
+ disabled?: boolean;
24
+ /** Container style */
25
+ style?: ViewStyle;
26
+ };
27
+ declare function Slider({ size, color, value: controlledValue, defaultValue, min, max, step, onValueChange, disabled, style, }: SliderProps): React.JSX.Element;
28
+ export { Slider };
29
+ export type { SliderProps };
30
+ //# sourceMappingURL=slider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slider.d.ts","sourceRoot":"","sources":["../../src/components/slider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAA0C,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAWtF,KAAK,UAAU,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AA8BlC,KAAK,WAAW,GAAG;IACjB,yCAAyC;IACzC,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,wCAAwC;IACxC,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oBAAoB;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,qCAAqC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sBAAsB;IACtB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,iBAAS,MAAM,CAAC,EACd,IAAU,EACV,KAAK,EACL,KAAK,EAAE,eAAe,EACtB,YAAiB,EACjB,GAAO,EACP,GAAS,EACT,IAAQ,EACR,aAAa,EACb,QAAgB,EAChB,KAAK,GACN,EAAE,WAAW,qBA4Gb;AA4PD,OAAO,EAAE,MAAM,EAAE,CAAC;AAClB,YAAY,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,248 @@
1
+ import { useThemeTokens } from '../lib/use-theme-tokens';
2
+ import * as SliderPrimitive from '@rn-primitives/slider';
3
+ import * as React from 'react';
4
+ import { Platform, View } from 'react-native';
5
+ import { Gesture, GestureDetector, GestureHandlerRootView, } from 'react-native-gesture-handler';
6
+ import Animated, { runOnJS, useAnimatedStyle, useSharedValue } from 'react-native-reanimated';
7
+ // Size styles from CSS:
8
+ // Size 1: --slider-track-size: calc(var(--space-2) * 0.75) = 6px
9
+ // Size 2: --slider-track-size: var(--space-2) = 8px
10
+ // Size 3: --slider-track-size: calc(var(--space-2) * 1.25) = 10px
11
+ // --slider-thumb-size: calc(var(--slider-track-size) + var(--space-1)) = track + 4px
12
+ function getSizeStyle(size) {
13
+ switch (size) {
14
+ case '1': {
15
+ const trackHeight = 6;
16
+ const thumbSize = trackHeight + 4; // 10
17
+ return { trackHeight, thumbSize };
18
+ }
19
+ case '2': {
20
+ const trackHeight = 8;
21
+ const thumbSize = trackHeight + 4; // 12
22
+ return { trackHeight, thumbSize };
23
+ }
24
+ case '3': {
25
+ const trackHeight = 10;
26
+ const thumbSize = trackHeight + 4; // 14
27
+ return { trackHeight, thumbSize };
28
+ }
29
+ }
30
+ }
31
+ function Slider({ size = '2', color, value: controlledValue, defaultValue = 50, min = 0, max = 100, step = 1, onValueChange, disabled = false, style, }) {
32
+ const { colors } = useThemeTokens();
33
+ // Internal state for uncontrolled mode
34
+ const [internalValue, setInternalValue] = React.useState(defaultValue);
35
+ // Use controlled value if provided, otherwise use internal state
36
+ const currentValue = controlledValue !== undefined ? controlledValue : internalValue;
37
+ const gray = colors.palettes.gray;
38
+ const palette = colors.palettes[color ?? 'accent'] ?? gray;
39
+ const { trackHeight, thumbSize } = getSizeStyle(size);
40
+ // The thumb has a visible pseudo-element that's slightly larger
41
+ const thumbVisibleSize = thumbSize + Math.floor(trackHeight * 0.5);
42
+ // Range (filled track) color
43
+ const rangeColor = disabled ? gray.a5 : palette['9'];
44
+ // Calculate range width based on value
45
+ const rangePercent = ((currentValue - min) / (max - min)) * 100;
46
+ // Update value helper
47
+ const updateValue = React.useCallback((newValue) => {
48
+ if (controlledValue === undefined) {
49
+ setInternalValue(newValue);
50
+ }
51
+ onValueChange?.(newValue);
52
+ }, [controlledValue, onValueChange]);
53
+ // Handle value changes from rn-primitives (receives array)
54
+ const handlePrimitiveValueChange = React.useCallback((newValue) => {
55
+ updateValue(newValue[0] ?? min);
56
+ }, [updateValue, min]);
57
+ // Track styles
58
+ const trackStyle = {
59
+ height: trackHeight,
60
+ borderRadius: trackHeight / 2,
61
+ backgroundColor: gray.a4,
62
+ justifyContent: 'center',
63
+ position: 'relative',
64
+ };
65
+ const rangeStyle = {
66
+ height: trackHeight,
67
+ borderRadius: trackHeight / 2,
68
+ backgroundColor: rangeColor,
69
+ position: 'absolute',
70
+ left: 0,
71
+ width: `${rangePercent}%`,
72
+ };
73
+ // Container style
74
+ const containerStyle = {
75
+ height: thumbVisibleSize + 8,
76
+ justifyContent: 'center',
77
+ opacity: disabled ? 0.5 : 1,
78
+ ...style,
79
+ };
80
+ // Web implementation using rn-primitives for accessibility (keyboard, focus)
81
+ if (Platform.OS === 'web') {
82
+ return (<WebSlider currentValue={currentValue} min={min} max={max} step={step} disabled={disabled} handlePrimitiveValueChange={handlePrimitiveValueChange} containerStyle={containerStyle} trackStyle={trackStyle} rangeStyle={rangeStyle} thumbVisibleSize={thumbVisibleSize} gray={gray} palette={palette}/>);
83
+ }
84
+ // Native implementation with Gesture Handler for proper scroll view negotiation
85
+ return (<NativeSlider {...{
86
+ currentValue,
87
+ min,
88
+ max,
89
+ step,
90
+ disabled,
91
+ updateValue,
92
+ trackHeight,
93
+ thumbVisibleSize,
94
+ gray,
95
+ rangeColor,
96
+ trackStyle,
97
+ rangeStyle,
98
+ containerStyle,
99
+ }}/>);
100
+ }
101
+ // Separate web component to track focus state with hooks
102
+ function WebSlider({ currentValue, min, max, step, disabled, handlePrimitiveValueChange, containerStyle, trackStyle, rangeStyle, thumbVisibleSize, gray, palette, }) {
103
+ const [isFocused, setIsFocused] = React.useState(false);
104
+ // Base box-shadow (always visible)
105
+ const baseBoxShadow = disabled
106
+ ? `0 0 0 1px ${gray['5']}`
107
+ : `0 0 0 1px ${gray.a3}, 0 1px 2px ${gray.a4}, 0 1px 3px -0.5px ${gray.a3}`;
108
+ // Focus box-shadow adds the light accent buffer ring
109
+ const focusBoxShadow = `${baseBoxShadow}, 0 0 0 3px ${palette['3']}`;
110
+ const webThumbStyle = {
111
+ width: thumbVisibleSize,
112
+ height: thumbVisibleSize,
113
+ borderRadius: thumbVisibleSize / 2,
114
+ backgroundColor: disabled ? gray['1'] : 'white',
115
+ boxShadow: isFocused && !disabled ? focusBoxShadow : baseBoxShadow,
116
+ cursor: disabled ? 'not-allowed' : 'grab',
117
+ // Focus outline - only show when focused
118
+ outlineStyle: isFocused && !disabled ? 'solid' : 'none',
119
+ outlineWidth: 2,
120
+ outlineOffset: 3,
121
+ outlineColor: palette['8'],
122
+ };
123
+ return (<SliderPrimitive.Root value={currentValue} min={min} max={max} step={step} onValueChange={handlePrimitiveValueChange} disabled={disabled} style={containerStyle}>
124
+ <SliderPrimitive.Track style={trackStyle}>
125
+ <SliderPrimitive.Range style={rangeStyle}/>
126
+ </SliderPrimitive.Track>
127
+ <SliderPrimitive.Thumb style={webThumbStyle} onFocus={() => setIsFocused(true)} onBlur={() => setIsFocused(false)}>
128
+ <View />
129
+ </SliderPrimitive.Thumb>
130
+ </SliderPrimitive.Root>);
131
+ }
132
+ // Separate native component to avoid hook issues with conditional rendering
133
+ function NativeSlider({ currentValue, min, max, step, disabled, updateValue, trackHeight, thumbVisibleSize, gray, rangeColor, trackStyle, rangeStyle, containerStyle, }) {
134
+ // Track dimensions
135
+ const trackWidth = useSharedValue(0);
136
+ // Animated thumb position (as percentage 0-1)
137
+ const thumbPosition = useSharedValue((currentValue - min) / (max - min));
138
+ // Update thumb position when controlled value changes
139
+ React.useEffect(() => {
140
+ thumbPosition.value = (currentValue - min) / (max - min);
141
+ }, [currentValue, min, max, thumbPosition]);
142
+ // Convert position to stepped value
143
+ const positionToValue = React.useCallback((position) => {
144
+ 'worklet';
145
+ const percent = Math.max(0, Math.min(1, position));
146
+ const rawValue = min + percent * (max - min);
147
+ // Round to step
148
+ const steppedValue = Math.round(rawValue / step) * step;
149
+ return Math.max(min, Math.min(max, steppedValue));
150
+ }, [min, max, step]);
151
+ // Handle track layout to get dimensions
152
+ const handleTrackLayout = React.useCallback((event) => {
153
+ trackWidth.value = event.nativeEvent.layout.width;
154
+ // We'll measure pageX on gesture start
155
+ }, [trackWidth]);
156
+ // Track ref for measuring
157
+ const trackRef = React.useRef(null);
158
+ // Pan gesture with proper scroll view handling
159
+ const panGesture = React.useMemo(() => Gesture.Pan()
160
+ .enabled(!disabled)
161
+ // Small horizontal threshold to claim gesture before scroll view
162
+ .activeOffsetX([-5, 5])
163
+ // Large vertical threshold - let scroll view handle vertical
164
+ .failOffsetY([-20, 20])
165
+ .onStart((event) => {
166
+ // Calculate position from touch
167
+ if (trackWidth.value > 0) {
168
+ // Use the locationX which is relative to the component
169
+ const percent = Math.max(0, Math.min(1, event.x / trackWidth.value));
170
+ thumbPosition.value = percent;
171
+ const newValue = positionToValue(percent);
172
+ runOnJS(updateValue)(newValue);
173
+ }
174
+ })
175
+ .onUpdate((event) => {
176
+ if (trackWidth.value > 0) {
177
+ const percent = Math.max(0, Math.min(1, event.x / trackWidth.value));
178
+ thumbPosition.value = percent;
179
+ const newValue = positionToValue(percent);
180
+ runOnJS(updateValue)(newValue);
181
+ }
182
+ }), [disabled, trackWidth, thumbPosition, positionToValue, updateValue]);
183
+ // Tap gesture for clicking on track
184
+ const tapGesture = React.useMemo(() => Gesture.Tap()
185
+ .enabled(!disabled)
186
+ .onStart((event) => {
187
+ if (trackWidth.value > 0) {
188
+ const percent = Math.max(0, Math.min(1, event.x / trackWidth.value));
189
+ thumbPosition.value = percent;
190
+ const newValue = positionToValue(percent);
191
+ runOnJS(updateValue)(newValue);
192
+ }
193
+ }), [disabled, trackWidth, thumbPosition, positionToValue, updateValue]);
194
+ // Combine gestures - tap and pan work together
195
+ const composedGesture = Gesture.Race(panGesture, tapGesture);
196
+ // Outer ring size (the outline effect from web's box-shadow)
197
+ const outerRingSize = thumbVisibleSize + 2;
198
+ // Animated styles for range fill
199
+ const animatedRangeStyle = useAnimatedStyle(() => {
200
+ return {
201
+ width: `${thumbPosition.value * 100}%`,
202
+ };
203
+ });
204
+ // Animated styles for thumb position
205
+ const animatedThumbStyle = useAnimatedStyle(() => {
206
+ const left = thumbPosition.value * trackWidth.value - outerRingSize / 2;
207
+ return {
208
+ transform: [{ translateX: left }],
209
+ };
210
+ });
211
+ // Outer ring style - creates the dark outline effect
212
+ const thumbOuterStyle = {
213
+ width: outerRingSize,
214
+ height: outerRingSize,
215
+ borderRadius: outerRingSize / 2,
216
+ backgroundColor: disabled ? gray['5'] : gray.a5,
217
+ position: 'absolute',
218
+ top: (trackHeight - outerRingSize) / 2,
219
+ left: 0,
220
+ alignItems: 'center',
221
+ justifyContent: 'center',
222
+ // Drop shadow
223
+ shadowColor: '#000',
224
+ shadowOpacity: disabled ? 0.08 : 0.15,
225
+ shadowOffset: { width: 0, height: 1 },
226
+ shadowRadius: 2,
227
+ elevation: disabled ? 1 : 2,
228
+ };
229
+ // Inner thumb style - the white center
230
+ const thumbInnerStyle = {
231
+ width: thumbVisibleSize,
232
+ height: thumbVisibleSize,
233
+ borderRadius: thumbVisibleSize / 2,
234
+ backgroundColor: disabled ? gray['1'] : 'white',
235
+ };
236
+ return (<GestureHandlerRootView style={containerStyle}>
237
+ <GestureDetector gesture={composedGesture}>
238
+ <View ref={trackRef} style={trackStyle} onLayout={handleTrackLayout}>
239
+ <Animated.View style={[rangeStyle, animatedRangeStyle, { backgroundColor: rangeColor }]}/>
240
+ <Animated.View style={[thumbOuterStyle, animatedThumbStyle]}>
241
+ <View style={thumbInnerStyle}/>
242
+ </Animated.View>
243
+ </View>
244
+ </GestureDetector>
245
+ </GestureHandlerRootView>);
246
+ }
247
+ export { Slider };
248
+ //# sourceMappingURL=slider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slider.js","sourceRoot":"","sources":["../../src/components/slider.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import * as React from 'react';
2
+ import { type ViewStyle } from 'react-native';
3
+ type SpinnerSize = '1' | '2' | '3' | '4' | '5' | '6';
4
+ interface SpinnerProps {
5
+ size?: SpinnerSize;
6
+ loading?: boolean;
7
+ children?: React.ReactNode;
8
+ color?: string;
9
+ style?: ViewStyle;
10
+ }
11
+ declare function Spinner({ size, loading, children, color, style }: SpinnerProps): React.JSX.Element;
12
+ declare namespace Spinner {
13
+ var displayName: string;
14
+ }
15
+ export { Spinner };
16
+ export type { SpinnerProps, SpinnerSize };
17
+ //# sourceMappingURL=spinner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../src/components/spinner.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAc9D,KAAK,WAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAErD,UAAU,YAAY;IACpB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAyKD,iBAAS,OAAO,CAAC,EAAE,IAAU,EAAE,OAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,YAAY,qBAgFpF;kBAhFQ,OAAO;;;AAoFhB,OAAO,EAAE,OAAO,EAAE,CAAC;AACnB,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC"}