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

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 (188) hide show
  1. package/README.md +102 -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 +143 -0
  17. package/dist/components/avatar.js.map +1 -0
  18. package/dist/components/badge.d.ts +17 -0
  19. package/dist/components/badge.d.ts.map +1 -0
  20. package/dist/components/badge.js +95 -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 +85 -0
  25. package/dist/components/button.js.map +1 -0
  26. package/dist/components/callout.d.ts +25 -0
  27. package/dist/components/callout.d.ts.map +1 -0
  28. package/dist/components/callout.js +146 -0
  29. package/dist/components/callout.js.map +1 -0
  30. package/dist/components/card.d.ts +10 -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 +13 -0
  35. package/dist/components/checkbox.d.ts.map +1 -0
  36. package/dist/components/checkbox.js +116 -0
  37. package/dist/components/checkbox.js.map +1 -0
  38. package/dist/components/code.d.ts +20 -0
  39. package/dist/components/code.d.ts.map +1 -0
  40. package/dist/components/code.js +83 -0
  41. package/dist/components/code.js.map +1 -0
  42. package/dist/components/context-menu.d.ts +65 -0
  43. package/dist/components/context-menu.d.ts.map +1 -0
  44. package/dist/components/context-menu.js +441 -0
  45. package/dist/components/context-menu.js.map +1 -0
  46. package/dist/components/dialog.d.ts +49 -0
  47. package/dist/components/dialog.d.ts.map +1 -0
  48. package/dist/components/dialog.js +141 -0
  49. package/dist/components/dialog.js.map +1 -0
  50. package/dist/components/dropdown-menu.d.ts +65 -0
  51. package/dist/components/dropdown-menu.d.ts.map +1 -0
  52. package/dist/components/dropdown-menu.js +441 -0
  53. package/dist/components/dropdown-menu.js.map +1 -0
  54. package/dist/components/heading.d.ts +15 -0
  55. package/dist/components/heading.d.ts.map +1 -0
  56. package/dist/components/heading.js +8 -0
  57. package/dist/components/heading.js.map +1 -0
  58. package/dist/components/hover-card.d.ts +24 -0
  59. package/dist/components/hover-card.d.ts.map +1 -0
  60. package/dist/components/hover-card.js +49 -0
  61. package/dist/components/hover-card.js.map +1 -0
  62. package/dist/components/icon-button.d.ts +14 -0
  63. package/dist/components/icon-button.d.ts.map +1 -0
  64. package/dist/components/icon-button.js +85 -0
  65. package/dist/components/icon-button.js.map +1 -0
  66. package/dist/components/icon.d.ts +28 -0
  67. package/dist/components/icon.d.ts.map +1 -0
  68. package/dist/components/icon.js +45 -0
  69. package/dist/components/icon.js.map +1 -0
  70. package/dist/components/index.d.ts +33 -0
  71. package/dist/components/index.d.ts.map +1 -0
  72. package/dist/components/index.js +45 -0
  73. package/dist/components/index.js.map +1 -0
  74. package/dist/components/label.d.ts +8 -0
  75. package/dist/components/label.d.ts.map +1 -0
  76. package/dist/components/label.js +26 -0
  77. package/dist/components/label.js.map +1 -0
  78. package/dist/components/native-only-animated-view.d.ts +223 -0
  79. package/dist/components/native-only-animated-view.d.ts.map +1 -0
  80. package/dist/components/native-only-animated-view.js +26 -0
  81. package/dist/components/native-only-animated-view.js.map +1 -0
  82. package/dist/components/popover.d.ts +24 -0
  83. package/dist/components/popover.d.ts.map +1 -0
  84. package/dist/components/popover.js +52 -0
  85. package/dist/components/popover.js.map +1 -0
  86. package/dist/components/progress.d.ts +15 -0
  87. package/dist/components/progress.d.ts.map +1 -0
  88. package/dist/components/progress.js +68 -0
  89. package/dist/components/progress.js.map +1 -0
  90. package/dist/components/radio-group.d.ts +19 -0
  91. package/dist/components/radio-group.d.ts.map +1 -0
  92. package/dist/components/radio-group.js +138 -0
  93. package/dist/components/radio-group.js.map +1 -0
  94. package/dist/components/segmented-control.d.ts +21 -0
  95. package/dist/components/segmented-control.d.ts.map +1 -0
  96. package/dist/components/segmented-control.js +113 -0
  97. package/dist/components/segmented-control.js.map +1 -0
  98. package/dist/components/select.d.ts +58 -0
  99. package/dist/components/select.d.ts.map +1 -0
  100. package/dist/components/select.js +493 -0
  101. package/dist/components/select.js.map +1 -0
  102. package/dist/components/separator.d.ts +12 -0
  103. package/dist/components/separator.d.ts.map +1 -0
  104. package/dist/components/separator.js +64 -0
  105. package/dist/components/separator.js.map +1 -0
  106. package/dist/components/skeleton.d.ts +28 -0
  107. package/dist/components/skeleton.d.ts.map +1 -0
  108. package/dist/components/skeleton.js +153 -0
  109. package/dist/components/skeleton.js.map +1 -0
  110. package/dist/components/spinner.d.ts +17 -0
  111. package/dist/components/spinner.d.ts.map +1 -0
  112. package/dist/components/spinner.js +199 -0
  113. package/dist/components/spinner.js.map +1 -0
  114. package/dist/components/switch.d.ts +13 -0
  115. package/dist/components/switch.d.ts.map +1 -0
  116. package/dist/components/switch.js +204 -0
  117. package/dist/components/switch.js.map +1 -0
  118. package/dist/components/tabs.d.ts +25 -0
  119. package/dist/components/tabs.d.ts.map +1 -0
  120. package/dist/components/tabs.js +124 -0
  121. package/dist/components/tabs.js.map +1 -0
  122. package/dist/components/text-area.d.ts +16 -0
  123. package/dist/components/text-area.d.ts.map +1 -0
  124. package/dist/components/text-area.js +117 -0
  125. package/dist/components/text-area.js.map +1 -0
  126. package/dist/components/text-field.d.ts +35 -0
  127. package/dist/components/text-field.d.ts.map +1 -0
  128. package/dist/components/text-field.js +256 -0
  129. package/dist/components/text-field.js.map +1 -0
  130. package/dist/components/text.d.ts +23 -0
  131. package/dist/components/text.d.ts.map +1 -0
  132. package/dist/components/text.js +33 -0
  133. package/dist/components/text.js.map +1 -0
  134. package/dist/components/tooltip.d.ts +24 -0
  135. package/dist/components/tooltip.d.ts.map +1 -0
  136. package/dist/components/tooltip.js +63 -0
  137. package/dist/components/tooltip.js.map +1 -0
  138. package/dist/index.d.ts +4 -0
  139. package/dist/index.d.ts.map +1 -0
  140. package/dist/index.js +8 -0
  141. package/dist/index.js.map +1 -0
  142. package/dist/lib/button-styles.d.ts +13 -0
  143. package/dist/lib/button-styles.d.ts.map +1 -0
  144. package/dist/lib/button-styles.js +131 -0
  145. package/dist/lib/button-styles.js.map +1 -0
  146. package/dist/lib/color-utils.d.ts +21 -0
  147. package/dist/lib/color-utils.d.ts.map +1 -0
  148. package/dist/lib/color-utils.js +84 -0
  149. package/dist/lib/color-utils.js.map +1 -0
  150. package/dist/lib/dialog-styles.d.ts +42 -0
  151. package/dist/lib/dialog-styles.d.ts.map +1 -0
  152. package/dist/lib/dialog-styles.js +162 -0
  153. package/dist/lib/dialog-styles.js.map +1 -0
  154. package/dist/lib/native-colors.d.ts +8 -0
  155. package/dist/lib/native-colors.d.ts.map +1 -0
  156. package/dist/lib/native-colors.js +67 -0
  157. package/dist/lib/native-colors.js.map +1 -0
  158. package/dist/lib/panel-styles.d.ts +32 -0
  159. package/dist/lib/panel-styles.d.ts.map +1 -0
  160. package/dist/lib/panel-styles.js +96 -0
  161. package/dist/lib/panel-styles.js.map +1 -0
  162. package/dist/lib/text-input-styles.d.ts +35 -0
  163. package/dist/lib/text-input-styles.d.ts.map +1 -0
  164. package/dist/lib/text-input-styles.js +107 -0
  165. package/dist/lib/text-input-styles.js.map +1 -0
  166. package/dist/lib/theme-vars.d.ts +222 -0
  167. package/dist/lib/theme-vars.d.ts.map +1 -0
  168. package/dist/lib/theme-vars.js +173 -0
  169. package/dist/lib/theme-vars.js.map +1 -0
  170. package/dist/lib/theme.d.ts +57 -0
  171. package/dist/lib/theme.d.ts.map +1 -0
  172. package/dist/lib/theme.js +80 -0
  173. package/dist/lib/theme.js.map +1 -0
  174. package/dist/lib/types.d.ts +14 -0
  175. package/dist/lib/types.d.ts.map +1 -0
  176. package/dist/lib/types.js +2 -0
  177. package/dist/lib/types.js.map +1 -0
  178. package/dist/lib/use-theme-vars.d.ts +325 -0
  179. package/dist/lib/use-theme-vars.d.ts.map +1 -0
  180. package/dist/lib/use-theme-vars.js +17 -0
  181. package/dist/lib/use-theme-vars.js.map +1 -0
  182. package/dist/lib/utils.d.ts +3 -0
  183. package/dist/lib/utils.d.ts.map +1 -0
  184. package/dist/lib/utils.js +17 -0
  185. package/dist/lib/utils.js.map +1 -0
  186. package/global.css +1813 -0
  187. package/package.json +114 -0
  188. package/tailwind-preset.js +310 -0
@@ -0,0 +1,493 @@
1
+ import { NativeOnlyAnimatedView } from '../components/native-only-animated-view';
2
+ import { Text, TextStyleContext } from '../components/text';
3
+ import { getButtonFocusStyle, getButtonPressedFilter, getButtonShadowStyle, getButtonSizeStyle, getButtonVariantStyle, resolveAccentFromColor, } from '../lib/button-styles';
4
+ import { useThemeVars } from '../lib/use-theme-vars';
5
+ import * as SelectPrimitive from '@rn-primitives/select';
6
+ import * as React from 'react';
7
+ import { Platform, Pressable, ScrollView, StyleSheet, useWindowDimensions, View, } from 'react-native';
8
+ import { FadeIn, FadeOut } from 'react-native-reanimated';
9
+ import { useSafeAreaInsets } from 'react-native-safe-area-context';
10
+ import { FullWindowOverlay as RNFullWindowOverlay } from 'react-native-screens';
11
+ import Svg, { Path } from 'react-native-svg';
12
+ // Custom icons matching web version exactly
13
+ function SelectChevronIcon({ size, color }) {
14
+ // Chevron path scaled to fill a square viewBox
15
+ // Original web: viewBox="3.25 5.25 9.5 5.5", path="M4 6L8 10L12 6"
16
+ // Scaled to fit 0 0 12 12 viewBox while maintaining proportions
17
+ return (<Svg width={size} height={size} viewBox="0 0 12 12" fill="none">
18
+ <Path d="M2 4L6 8L10 4" stroke={color} strokeWidth={1.5} strokeLinecap="round" strokeLinejoin="round"/>
19
+ </Svg>);
20
+ }
21
+ function SelectCheckIcon({ size, color }) {
22
+ return (<Svg width={size} height={size} viewBox="0 0 9 9" fill={color}>
23
+ <Path fillRule="evenodd" clipRule="evenodd" d="M8.53547 0.62293C8.88226 0.849446 8.97976 1.3142 8.75325 1.66099L4.5083 8.1599C4.38833 8.34356 4.19397 8.4655 3.9764 8.49358C3.75883 8.52167 3.53987 8.45309 3.3772 8.30591L0.616113 5.80777C0.308959 5.52987 0.285246 5.05559 0.563148 4.74844C0.84105 4.44128 1.31533 4.41757 1.62249 4.69547L3.73256 6.60459L7.49741 0.840706C7.72393 0.493916 8.18868 0.396414 8.53547 0.62293Z"/>
24
+ </Svg>);
25
+ }
26
+ const SelectContext = React.createContext({
27
+ size: '2',
28
+ labelMap: { current: new Map() },
29
+ value: undefined,
30
+ open: false,
31
+ });
32
+ const SelectTriggerContext = React.createContext({
33
+ variant: 'surface',
34
+ color: 'gray',
35
+ disabled: false,
36
+ });
37
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
38
+ const noop = () => { };
39
+ const SelectContentContext = React.createContext({
40
+ registerItemPosition: noop,
41
+ });
42
+ function SelectRoot({ size = '2', value, onValueChange, children, ...props }) {
43
+ const labelMapRef = React.useRef(new Map());
44
+ const [open, setOpen] = React.useState(false);
45
+ // Handle open state changes
46
+ const handleOpenChange = React.useCallback((isOpen) => {
47
+ setOpen(isOpen);
48
+ props.onOpenChange?.(isOpen);
49
+ }, [props.onOpenChange]);
50
+ // Intercept onValueChange to ensure we use the correct label from our map
51
+ const handleValueChange = React.useCallback((newValue) => {
52
+ if (newValue && labelMapRef.current.has(newValue.value)) {
53
+ // Use the label from our map (web primitive doesn't pass correct label)
54
+ const label = labelMapRef.current.get(newValue.value) ?? '';
55
+ onValueChange?.({ value: newValue.value, label });
56
+ }
57
+ else {
58
+ onValueChange?.(newValue);
59
+ }
60
+ }, [onValueChange]);
61
+ // Cast types as the primitive types expect Option but we use { value, label }
62
+ const primitiveValue = value;
63
+ const primitiveOnChange = handleValueChange;
64
+ const contextValue = React.useMemo(() => ({ size, labelMap: labelMapRef, value, open }), [size, value, open]);
65
+ // Context must wrap the Root so it's available in the Portal
66
+ return (<SelectContext.Provider value={contextValue}>
67
+ <SelectPrimitive.Root {...props} value={primitiveValue} onValueChange={primitiveOnChange} onOpenChange={handleOpenChange}>
68
+ {children}
69
+ </SelectPrimitive.Root>
70
+ </SelectContext.Provider>);
71
+ }
72
+ function SelectValue({ placeholder, ...props }) {
73
+ const { size, value } = React.useContext(SelectContext);
74
+ const { variant, color, disabled } = React.useContext(SelectTriggerContext);
75
+ const { colors } = useThemeVars();
76
+ // Get text size based on select size
77
+ const textSize = size === '1' ? '1' : size === '2' ? '2' : size === '3' ? '3' : '4';
78
+ const hasValue = !!value;
79
+ const displayValue = value?.label ?? placeholder ?? '';
80
+ // Get colors based on variant (matching web)
81
+ const gray = colors.palettes.gray;
82
+ const accentColor = resolveAccentFromColor(color);
83
+ const palette = colors.palettes[accentColor] ?? gray;
84
+ // Text colors per variant:
85
+ // - surface: gray-12, placeholder: gray-a10, disabled: gray-a8
86
+ // - soft/ghost: accent-12, placeholder: accent-12 @ 0.6 opacity, disabled: gray-a8
87
+ let textColor;
88
+ if (disabled) {
89
+ textColor = gray.a8;
90
+ }
91
+ else if (variant === 'surface') {
92
+ textColor = hasValue ? gray['12'] : gray.a10;
93
+ }
94
+ else {
95
+ // soft or ghost - use accent color
96
+ textColor = palette['12'] || palette.a12;
97
+ }
98
+ return (<Text size={textSize} color="gray" style={{
99
+ color: textColor,
100
+ opacity: !disabled && !hasValue && (variant === 'soft' || variant === 'ghost') ? 0.6 : 1,
101
+ }} numberOfLines={1} ellipsizeMode="tail" {...props}>
102
+ {displayValue}
103
+ </Text>);
104
+ }
105
+ function SelectTrigger({ variant = 'surface', color = 'gray', style, disabled, children, ...props }) {
106
+ const { size, open } = React.useContext(SelectContext);
107
+ const { colors } = useThemeVars();
108
+ const [pressed, setPressed] = React.useState(false);
109
+ const [hovered, setHovered] = React.useState(false);
110
+ const [focused, setFocused] = React.useState(false);
111
+ const accentColor = resolveAccentFromColor(color);
112
+ const gray = colors.palettes.gray;
113
+ const palette = colors.palettes[accentColor] ?? gray;
114
+ // When select is open, apply pressed styles (matching web [data-state='open'])
115
+ const isPressed = pressed || open;
116
+ const sizeStyle = getButtonSizeStyle(size);
117
+ const variantStyle = getButtonVariantStyle(variant, colors, palette, gray, disabled ?? false, isPressed, hovered);
118
+ const shadowStyle = getButtonShadowStyle(variant, disabled ?? false, isPressed);
119
+ const focusStyle = getButtonFocusStyle(palette, focused, disabled ?? false);
120
+ const pressedFilter = getButtonPressedFilter(variant, isPressed, disabled ?? false);
121
+ // Get icon size based on select size
122
+ const iconSize = size === '1' ? 8 : size === '2' ? 10 : size === '3' ? 12 : 14;
123
+ // Icon color matches text color (uses currentColor on web)
124
+ // - surface: gray-12, disabled: gray-a8
125
+ // - soft/ghost: accent-12, disabled: gray-a8
126
+ const iconColor = disabled
127
+ ? gray.a8
128
+ : variant === 'surface'
129
+ ? gray['12']
130
+ : palette['12'] || palette.a12;
131
+ // Context value for SelectValue to access variant/color
132
+ const triggerContextValue = React.useMemo(() => ({ variant, color, disabled: disabled ?? false }), [variant, color, disabled]);
133
+ const triggerStyle = {
134
+ flexDirection: 'row',
135
+ alignItems: 'center',
136
+ justifyContent: 'space-between',
137
+ ...sizeStyle,
138
+ ...variantStyle,
139
+ ...shadowStyle,
140
+ ...focusStyle,
141
+ ...pressedFilter,
142
+ gap: sizeStyle.gap,
143
+ ...Platform.select({
144
+ web: {
145
+ cursor: disabled ? 'not-allowed' : 'pointer',
146
+ userSelect: 'none',
147
+ },
148
+ }),
149
+ };
150
+ const chevronContainer = {
151
+ width: iconSize,
152
+ height: iconSize,
153
+ opacity: variant === 'ghost' ? 1 : 0.9,
154
+ marginBottom: size === '2' || size === '3' || size === '4' ? (size === '2' ? -1 : -2) : 0,
155
+ };
156
+ const renderTriggerContent = () => (<>
157
+ {typeof children === 'function'
158
+ ? children({ pressed, hovered })
159
+ : children}
160
+ <View style={chevronContainer}>
161
+ <SelectChevronIcon size={iconSize} color={iconColor}/>
162
+ </View>
163
+ </>);
164
+ // On web, use View instead of Pressable to avoid touch event conflicts
165
+ // Pressable's touch handling interferes with Radix's onClick on mobile web
166
+ if (Platform.OS === 'web') {
167
+ // Web-only props that aren't in RN's ViewProps
168
+ const webProps = {
169
+ onMouseDown: () => setPressed(true),
170
+ onMouseUp: () => setPressed(false),
171
+ onMouseEnter: () => setHovered(true),
172
+ onMouseLeave: () => {
173
+ setHovered(false);
174
+ setPressed(false);
175
+ },
176
+ onFocus: (e) => {
177
+ if (e.target?.matches?.(':focus-visible')) {
178
+ setFocused(true);
179
+ }
180
+ },
181
+ onBlur: () => setFocused(false),
182
+ tabIndex: disabled ? -1 : 0,
183
+ role: 'combobox',
184
+ 'aria-disabled': disabled,
185
+ };
186
+ return (<SelectTriggerContext.Provider value={triggerContextValue}>
187
+ <SelectPrimitive.Trigger asChild disabled={disabled} {...props}>
188
+ <View style={[triggerStyle, style]} {...webProps}>
189
+ {renderTriggerContent()}
190
+ </View>
191
+ </SelectPrimitive.Trigger>
192
+ </SelectTriggerContext.Provider>);
193
+ }
194
+ // On native, use Pressable for proper touch handling
195
+ return (<SelectTriggerContext.Provider value={triggerContextValue}>
196
+ <SelectPrimitive.Trigger asChild disabled={disabled} {...props}>
197
+ <Pressable onPressIn={(e) => {
198
+ setPressed(true);
199
+ props.onPressIn?.(e);
200
+ }} onPressOut={(e) => {
201
+ setPressed(false);
202
+ props.onPressOut?.(e);
203
+ }} onFocus={(e) => {
204
+ props.onFocus?.(e);
205
+ }} onBlur={(e) => {
206
+ setFocused(false);
207
+ props.onBlur?.(e);
208
+ }} onHoverIn={(e) => {
209
+ setHovered(true);
210
+ props.onHoverIn?.(e);
211
+ }} onHoverOut={(e) => {
212
+ setHovered(false);
213
+ props.onHoverOut?.(e);
214
+ }} style={[triggerStyle, style]} disabled={disabled}>
215
+ {renderTriggerContent()}
216
+ </Pressable>
217
+ </SelectPrimitive.Trigger>
218
+ </SelectTriggerContext.Provider>);
219
+ }
220
+ // ============================================================================
221
+ // Select.Content
222
+ // ============================================================================
223
+ const FullWindowOverlay = Platform.OS === 'ios' ? RNFullWindowOverlay : React.Fragment;
224
+ function SelectContent({ portalHost, position = 'popper', ...props }) {
225
+ // Get context values before portal (context is lost in portal on native)
226
+ const selectContext = React.useContext(SelectContext);
227
+ const { size, labelMap, value, open } = selectContext;
228
+ const { colors, isDark } = useThemeVars();
229
+ const { height: windowHeight } = useWindowDimensions();
230
+ const safeAreaInsets = useSafeAreaInsets();
231
+ // ScrollView ref and item positions for scroll-to-selected on native
232
+ const scrollViewRef = React.useRef(null);
233
+ const itemPositionsRef = React.useRef(new Map());
234
+ const hasScrolledRef = React.useRef(false);
235
+ // Content padding based on size
236
+ const contentPadding = size === '1' ? 4 : size === '2' ? 4 : size === '3' ? 4 : 4;
237
+ // Border radius based on size
238
+ const borderRadius = size === '1' ? 8 : size === '2' ? 10 : size === '3' ? 12 : 14;
239
+ // Calculate available height for native - account for safe areas and some padding
240
+ // Leave extra space for trigger (~60px) and visual breathing room (~40px)
241
+ const nativeMaxHeight = Math.max(150, windowHeight - safeAreaInsets.top - safeAreaInsets.bottom - 100);
242
+ // Insets for the primitive's collision detection
243
+ const contentInsets = {
244
+ top: safeAreaInsets.top + 8,
245
+ bottom: safeAreaInsets.bottom + 8,
246
+ left: safeAreaInsets.left + 8,
247
+ right: safeAreaInsets.right + 8,
248
+ };
249
+ // Register item position callback for native scroll-to-selected
250
+ const registerItemPosition = React.useCallback((itemValue, y) => {
251
+ itemPositionsRef.current.set(itemValue, y);
252
+ // Scroll to selected item once positions are registered (native only)
253
+ if (Platform.OS !== 'web' && !hasScrolledRef.current && value?.value === itemValue) {
254
+ hasScrolledRef.current = true;
255
+ // Use requestAnimationFrame to ensure ScrollView is mounted
256
+ requestAnimationFrame(() => {
257
+ scrollViewRef.current?.scrollTo({ y, animated: false });
258
+ });
259
+ }
260
+ }, [value?.value]);
261
+ // Reset scroll flag when content closes
262
+ React.useEffect(() => {
263
+ if (!open) {
264
+ hasScrolledRef.current = false;
265
+ }
266
+ }, [open]);
267
+ // Content context value for item position registration
268
+ const contentContextValue = React.useMemo(() => ({ registerItemPosition }), [registerItemPosition]);
269
+ // Re-create context value to provide inside portal
270
+ const contextValue = React.useMemo(() => ({ size, labelMap, value, open }), [size, labelMap, value, open]);
271
+ return (<SelectPrimitive.Portal hostName={portalHost}>
272
+ <FullWindowOverlay>
273
+ <SelectPrimitive.Overlay style={Platform.select({ native: StyleSheet.absoluteFill })}>
274
+ {/* Re-provide context inside portal since it's lost on native */}
275
+ <SelectContext.Provider value={contextValue}>
276
+ <SelectContentContext.Provider value={contentContextValue}>
277
+ <TextStyleContext.Provider value={{ size: '2', weight: 'regular', color: 'gray' }}>
278
+ <NativeOnlyAnimatedView entering={FadeIn} exiting={FadeOut}>
279
+ <SelectPrimitive.Content position={position} sideOffset={4} insets={Platform.OS !== 'web' ? contentInsets : undefined} style={{
280
+ backgroundColor: colors.panelSolid,
281
+ borderRadius,
282
+ minWidth: 128,
283
+ // Constrain max height on native to prevent overflow
284
+ ...Platform.select({
285
+ web: {
286
+ // Shadow-5 from web: border + two shadow layers
287
+ // Light: 0 0 0 1px gray-a5, 0 12px 60px black-a3, 0 12px 32px -16px gray-a5
288
+ // Dark: 0 0 0 1px gray-a6, 0 12px 60px black-a5, 0 12px 32px -16px black-a7
289
+ boxShadow: isDark
290
+ ? `0 0 0 1px ${colors.palettes.gray.a6}, 0 12px 60px ${colors.palettes.black.a5}, 0 12px 32px -16px ${colors.palettes.black.a7}`
291
+ : `0 0 0 1px ${colors.palettes.gray.a5}, 0 12px 60px ${colors.palettes.black.a3}, 0 12px 32px -16px ${colors.palettes.gray.a5}`,
292
+ overflow: 'hidden',
293
+ },
294
+ default: {
295
+ // Native approximation - can't do multiple shadows
296
+ // Note: overflow: 'hidden' clips shadows on iOS, so we don't use it here
297
+ maxHeight: nativeMaxHeight,
298
+ borderWidth: 1,
299
+ borderColor: isDark ? colors.palettes.gray.a6 : colors.palettes.gray.a5,
300
+ shadowColor: '#000000',
301
+ shadowOpacity: isDark ? 0.3 : 0.15,
302
+ shadowOffset: { width: 0, height: 12 },
303
+ shadowRadius: 30,
304
+ elevation: 12,
305
+ },
306
+ }),
307
+ }} {...props}>
308
+ <SelectPrimitive.Viewport style={{
309
+ width: 'auto',
310
+ borderRadius,
311
+ // On web, Radix calculates available height dynamically via CSS variable
312
+ ...Platform.select({
313
+ web: {
314
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- CSS variable not in ViewStyle type
315
+ maxHeight: 'var(--radix-select-content-available-height)',
316
+ overflow: 'auto',
317
+ },
318
+ default: {
319
+ overflow: 'hidden',
320
+ },
321
+ }),
322
+ }}>
323
+ {Platform.OS === 'web' ? (<View style={{ padding: contentPadding }}>{props.children}</View>) : (<ScrollView ref={scrollViewRef} style={{ maxHeight: nativeMaxHeight - contentPadding * 2 - 2 }} // Account for padding and border
324
+ contentContainerStyle={{ padding: contentPadding }} showsVerticalScrollIndicator bounces={false}>
325
+ {props.children}
326
+ </ScrollView>)}
327
+ </SelectPrimitive.Viewport>
328
+ </SelectPrimitive.Content>
329
+ </NativeOnlyAnimatedView>
330
+ </TextStyleContext.Provider>
331
+ </SelectContentContext.Provider>
332
+ </SelectContext.Provider>
333
+ </SelectPrimitive.Overlay>
334
+ </FullWindowOverlay>
335
+ </SelectPrimitive.Portal>);
336
+ }
337
+ function SelectItem({ children, disabled, label, value, ...props }) {
338
+ const { size, labelMap } = React.useContext(SelectContext);
339
+ const { registerItemPosition } = React.useContext(SelectContentContext);
340
+ const { colors } = useThemeVars();
341
+ const [pressed, setPressed] = React.useState(false);
342
+ const [hovered, setHovered] = React.useState(false);
343
+ const [focused, setFocused] = React.useState(false);
344
+ // Register label in the map when component mounts/updates
345
+ React.useEffect(() => {
346
+ labelMap.current.set(value, label);
347
+ return () => {
348
+ labelMap.current.delete(value);
349
+ };
350
+ }, [value, label, labelMap]);
351
+ // Register item position for native scroll-to-selected
352
+ const handleLayout = React.useCallback((e) => {
353
+ if (Platform.OS !== 'web') {
354
+ registerItemPosition(value, e.nativeEvent.layout.y);
355
+ }
356
+ }, [value, registerItemPosition]);
357
+ // Calculate sizes based on context size - memoize to ensure updates
358
+ const itemStyles = React.useMemo(() => {
359
+ const itemHeight = size === '1' ? 24 : size === '2' ? 32 : size === '3' ? 40 : 48;
360
+ const itemIndicatorWidth = itemHeight / 1.2;
361
+ const borderRadius = size === '1' ? 4 : size === '2' ? 6 : size === '3' ? 8 : 10;
362
+ return { itemHeight, itemIndicatorWidth, borderRadius };
363
+ }, [size]);
364
+ // Extract colors from theme - these will update when theme changes
365
+ const highlightColor = colors.palettes.gray.a4;
366
+ const textColor = disabled ? colors.palettes.gray.a8 : colors.palettes.gray['12'];
367
+ // Use gray background for hover, press, and keyboard focus
368
+ const isHighlighted = hovered || pressed || focused;
369
+ // Memoize style to include current theme colors
370
+ const itemStyle = React.useMemo(() => ({
371
+ flexDirection: 'row',
372
+ alignItems: 'center',
373
+ height: itemStyles.itemHeight,
374
+ paddingLeft: itemStyles.itemIndicatorWidth,
375
+ paddingRight: itemStyles.itemIndicatorWidth,
376
+ position: 'relative',
377
+ borderRadius: itemStyles.borderRadius,
378
+ backgroundColor: isHighlighted ? highlightColor : undefined,
379
+ ...Platform.select({
380
+ web: {
381
+ cursor: disabled ? 'not-allowed' : 'default',
382
+ userSelect: 'none',
383
+ outline: 'none',
384
+ },
385
+ }),
386
+ }), [itemStyles, isHighlighted, highlightColor, disabled]);
387
+ // Handle focus - only track keyboard focus (focus-visible) on web
388
+ const handleFocus = React.useCallback(
389
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- cross-platform event type
390
+ (e) => {
391
+ if (Platform.OS === 'web') {
392
+ const target = e.target;
393
+ if (target?.matches?.(':focus-visible')) {
394
+ setFocused(true);
395
+ }
396
+ }
397
+ props.onFocus?.(e);
398
+ }, [props.onFocus]);
399
+ const handleBlur = React.useCallback(
400
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- cross-platform event type
401
+ (e) => {
402
+ setFocused(false);
403
+ props.onBlur?.(e);
404
+ }, [props.onBlur]);
405
+ // Web-specific hover handlers using native DOM events (more reliable after re-renders)
406
+ const webHoverProps = Platform.OS === 'web'
407
+ ? {
408
+ onMouseEnter: () => setHovered(true),
409
+ onMouseLeave: () => setHovered(false),
410
+ }
411
+ : {};
412
+ return (<SelectPrimitive.Item disabled={disabled} value={value} label={label} onLayout={handleLayout} onHoverIn={Platform.OS !== 'web' ? () => setHovered(true) : undefined} onHoverOut={Platform.OS !== 'web' ? () => setHovered(false) : undefined} onPressIn={() => setPressed(true)} onPressOut={() => setPressed(false)} onFocus={handleFocus} onBlur={handleBlur} style={itemStyle} {...webHoverProps} {...props}>
413
+ <SelectPrimitive.ItemIndicator style={{
414
+ position: 'absolute',
415
+ left: 0,
416
+ top: 0,
417
+ height: itemStyles.itemHeight,
418
+ width: itemStyles.itemIndicatorWidth,
419
+ alignItems: 'center',
420
+ justifyContent: 'center',
421
+ }}>
422
+ <SelectCheckIcon size={size === '1' ? 8 : size === '2' ? 10 : size === '3' ? 12 : 14} color={textColor}/>
423
+ </SelectPrimitive.ItemIndicator>
424
+ <View style={{ justifyContent: 'center', minHeight: itemStyles.itemHeight }}>
425
+ <Text size={size === '1' ? '1' : size === '2' ? '2' : size === '3' ? '3' : '4'} color="gray" style={{
426
+ color: textColor,
427
+ ...(Platform.OS === 'web' ? { whiteSpace: 'nowrap' } : {}),
428
+ }}>
429
+ {children}
430
+ </Text>
431
+ </View>
432
+ </SelectPrimitive.Item>);
433
+ }
434
+ function SelectLabel({ children, ...props }) {
435
+ const { size } = React.useContext(SelectContext);
436
+ const { colors } = useThemeVars();
437
+ const itemHeight = size === '1' ? 24 : size === '2' ? 32 : size === '3' ? 40 : 48;
438
+ const itemIndicatorWidth = itemHeight / 1.2;
439
+ return (<View style={{
440
+ flexDirection: 'row',
441
+ alignItems: 'center',
442
+ height: itemHeight,
443
+ paddingLeft: itemIndicatorWidth,
444
+ paddingRight: itemIndicatorWidth,
445
+ ...Platform.select({
446
+ web: {
447
+ cursor: 'default',
448
+ userSelect: 'none',
449
+ },
450
+ }),
451
+ }}>
452
+ <Text size={size === '1' ? '0' : size === '2' ? '1' : size === '3' ? '2' : '3'} weight="semi-bold" color="gray" style={{ color: colors.palettes.gray.a10 }} {...props}>
453
+ {children}
454
+ </Text>
455
+ </View>);
456
+ }
457
+ function SelectSeparator({ ...props }) {
458
+ const { size } = React.useContext(SelectContext);
459
+ const { colors } = useThemeVars();
460
+ const contentPadding = size === '1' ? 4 : size === '2' ? 4 : size === '3' ? 4 : 4;
461
+ return (<SelectPrimitive.Separator style={{
462
+ height: 1,
463
+ marginTop: 4,
464
+ marginBottom: 4,
465
+ marginLeft: -contentPadding + 1,
466
+ marginRight: -contentPadding + 1,
467
+ backgroundColor: colors.palettes.gray.a6,
468
+ ...Platform.select({
469
+ web: {
470
+ pointerEvents: 'none',
471
+ },
472
+ }),
473
+ }} {...props}/>);
474
+ }
475
+ // ============================================================================
476
+ // Select.Group
477
+ // ============================================================================
478
+ const SelectGroup = SelectPrimitive.Group;
479
+ // ============================================================================
480
+ // Export composite component
481
+ // ============================================================================
482
+ const Select = {
483
+ Root: SelectRoot,
484
+ Trigger: SelectTrigger,
485
+ Value: SelectValue,
486
+ Content: SelectContent,
487
+ Item: SelectItem,
488
+ Label: SelectLabel,
489
+ Separator: SelectSeparator,
490
+ Group: SelectGroup,
491
+ };
492
+ export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectRoot, SelectSeparator, SelectTrigger, SelectValue, };
493
+ //# sourceMappingURL=select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.js","sourceRoot":"","sources":["../../src/components/select.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { Color } from '../lib/types';
2
+ import * as SeparatorPrimitive from '@rn-primitives/separator';
3
+ declare const separatorSizes: readonly ["1", "2", "3", "4"];
4
+ type SeparatorSize = (typeof separatorSizes)[number];
5
+ type SeparatorProps = Omit<SeparatorPrimitive.RootProps, 'className'> & {
6
+ size?: SeparatorSize;
7
+ color?: Color;
8
+ };
9
+ declare function Separator({ size, color, orientation, decorative, style, ...props }: SeparatorProps): import("react").JSX.Element;
10
+ export { Separator, separatorSizes };
11
+ export type { SeparatorProps, SeparatorSize };
12
+ //# sourceMappingURL=separator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"separator.d.ts","sourceRoot":"","sources":["../../src/components/separator.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,KAAK,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,KAAK,kBAAkB,MAAM,0BAA0B,CAAC;AAG/D,QAAA,MAAM,cAAc,+BAAgC,CAAC;AAErD,KAAK,aAAa,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAoCrD,KAAK,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG;IACtE,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CAAC;AAEF,iBAAS,SAAS,CAAC,EACjB,IAAU,EACV,KAAc,EACd,WAA0B,EAC1B,UAAiB,EACjB,KAAK,EACL,GAAG,KAAK,EACT,EAAE,cAAc,+BAuChB;AAED,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;AACrC,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,64 @@
1
+ import { useThemeVars } from '../lib/use-theme-vars';
2
+ import * as SeparatorPrimitive from '@rn-primitives/separator';
3
+ const separatorSizes = ['1', '2', '3', '4'];
4
+ function resolveAccentFromColor(color) {
5
+ if (!color)
6
+ return 'gray';
7
+ switch (color) {
8
+ case 'danger':
9
+ return 'red';
10
+ case 'warning':
11
+ return 'amber';
12
+ case 'success':
13
+ return 'green';
14
+ case 'info':
15
+ return 'blue';
16
+ default:
17
+ return color;
18
+ }
19
+ }
20
+ // Size mapping from CSS:
21
+ // Size 1: var(--space-4) = 16px
22
+ // Size 2: var(--space-6) = 32px
23
+ // Size 3: var(--space-9) = 64px
24
+ // Size 4: 100%
25
+ function getSeparatorSize(size) {
26
+ switch (size) {
27
+ case '1':
28
+ return 16;
29
+ case '2':
30
+ return 32;
31
+ case '3':
32
+ return 64;
33
+ case '4':
34
+ return '100%';
35
+ }
36
+ }
37
+ function Separator({ size = '1', color = 'gray', orientation = 'horizontal', decorative = true, style, ...props }) {
38
+ const { colors } = useThemeVars();
39
+ const accentColor = resolveAccentFromColor(color);
40
+ const palette = colors.palettes[accentColor];
41
+ const separatorSize = getSeparatorSize(size);
42
+ // Base style - thickness is always 1px
43
+ const baseStyle = {
44
+ backgroundColor: palette.a6,
45
+ flexShrink: 0,
46
+ };
47
+ // Orientation-based sizing
48
+ const orientationStyle = orientation === 'horizontal'
49
+ ? {
50
+ height: 1,
51
+ width: separatorSize,
52
+ }
53
+ : {
54
+ width: 1,
55
+ height: separatorSize,
56
+ };
57
+ const combinedStyle = {
58
+ ...baseStyle,
59
+ ...orientationStyle,
60
+ };
61
+ return (<SeparatorPrimitive.Root decorative={decorative} orientation={orientation} style={[combinedStyle, style]} {...props}/>);
62
+ }
63
+ export { Separator, separatorSizes };
64
+ //# sourceMappingURL=separator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"separator.js","sourceRoot":"","sources":["../../src/components/separator.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,kBAAkB,MAAM,0BAA0B,CAAC;AAG/D,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAC;AAIrD,SAAS,sBAAsB,CAAC,KAAa;IAC3C,IAAI,CAAC,KAAK;QAAE,OAAO,MAAM,CAAC;IAC1B,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,QAAQ;YACX,OAAO,KAAK,CAAC;QACf,KAAK,SAAS;YACZ,OAAO,OAAO,CAAC;QACjB,KAAK,SAAS;YACZ,OAAO,OAAO,CAAC;QACjB,KAAK,MAAM;YACT,OAAO,MAAM,CAAC;QAChB;YACE,OAAO,KAAoB,CAAC;IAChC,CAAC;AACH,CAAC;AAED,yBAAyB;AACzB,gCAAgC;AAChC,gCAAgC;AAChC,gCAAgC;AAChC,eAAe;AACf,SAAS,gBAAgB,CAAC,IAAmB;IAC3C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,GAAG;YACN,OAAO,EAAE,CAAC;QACZ,KAAK,GAAG;YACN,OAAO,EAAE,CAAC;QACZ,KAAK,GAAG;YACN,OAAO,EAAE,CAAC;QACZ,KAAK,GAAG;YACN,OAAO,MAAM,CAAC;IAClB,CAAC;AACH,CAAC;AAOD,SAAS,SAAS,CAAC,EACjB,IAAI,GAAG,GAAG,EACV,KAAK,GAAG,MAAM,EACd,WAAW,GAAG,YAAY,EAC1B,UAAU,GAAG,IAAI,EACjB,KAAK,EACL,GAAG,KAAK,EACO;IACf,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,CAAC;IAElC,MAAM,WAAW,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAE7C,MAAM,aAAa,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAE7C,uCAAuC;IACvC,MAAM,SAAS,GAAc;QAC3B,eAAe,EAAE,OAAO,CAAC,EAAE;QAC3B,UAAU,EAAE,CAAC;KACd,CAAC;IAEF,2BAA2B;IAC3B,MAAM,gBAAgB,GACpB,WAAW,KAAK,YAAY;QAC1B,CAAC,CAAC;YACE,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,aAAa;SACrB;QACH,CAAC,CAAC;YACE,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,aAAa;SACtB,CAAC;IAER,MAAM,aAAa,GAAc;QAC/B,GAAG,SAAS;QACZ,GAAG,gBAAgB;KACpB,CAAC;IAEF,OAAO,CACL,CAAC,kBAAkB,CAAC,IAAI,CACtB,UAAU,CAAC,CAAC,UAAU,CAAC,CACvB,WAAW,CAAC,CAAC,WAAW,CAAC,CACzB,KAAK,CAAC,CAAC,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAC9B,IAAI,KAAK,CAAC,EACV,CACH,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { type AvatarShape, type AvatarSize } from '../components/avatar';
2
+ import type { TextSize } from '../components/text';
3
+ import type { Color } from '../lib/types';
4
+ import * as React from 'react';
5
+ import { type ViewProps } from 'react-native';
6
+ type SkeletonAvatarProps = ViewProps & {
7
+ size?: AvatarSize;
8
+ shape?: AvatarShape;
9
+ color?: Color;
10
+ };
11
+ declare function SkeletonAvatar({ size, shape, color, style, ...props }: SkeletonAvatarProps): React.JSX.Element;
12
+ type SkeletonTextProps = ViewProps & {
13
+ size?: TextSize;
14
+ color?: Color;
15
+ };
16
+ declare function SkeletonText({ size, color, style, ...props }: SkeletonTextProps): React.JSX.Element;
17
+ type SkeletonRectProps = ViewProps & {
18
+ color?: Color;
19
+ };
20
+ declare function SkeletonRect({ color, style, ...props }: SkeletonRectProps): React.JSX.Element;
21
+ declare const Skeleton: {
22
+ Avatar: typeof SkeletonAvatar;
23
+ Text: typeof SkeletonText;
24
+ Rect: typeof SkeletonRect;
25
+ };
26
+ export { Skeleton, SkeletonAvatar, SkeletonRect, SkeletonText };
27
+ export type { SkeletonAvatarProps, SkeletonRectProps, SkeletonTextProps };
28
+ //# sourceMappingURL=skeleton.d.ts.map