@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,143 @@
1
+ import { Text } from '../components/text';
2
+ import { useThemeVars } from '../lib/use-theme-vars';
3
+ import * as React from 'react';
4
+ import { Image, View } from 'react-native';
5
+ const avatarSizes = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
6
+ const avatarShapes = ['circle', 'square'];
7
+ function resolveAccentFromColor(color) {
8
+ if (!color)
9
+ return 'gray';
10
+ switch (color) {
11
+ case 'danger':
12
+ return 'red';
13
+ case 'warning':
14
+ return 'amber';
15
+ case 'success':
16
+ return 'green';
17
+ case 'info':
18
+ return 'blue';
19
+ default:
20
+ return color;
21
+ }
22
+ }
23
+ // Size styles from CSS:
24
+ // Size 0: 16px, Size 1: 24px, Size 2: 32px, Size 3: 40px (default)
25
+ // Size 4: 48px, Size 5: 64px, Size 6: 80px, Size 7: 96px, Size 8: 128px, Size 9: 160px
26
+ function getAvatarSize(size) {
27
+ switch (size) {
28
+ case '0':
29
+ return 16;
30
+ case '1':
31
+ return 24;
32
+ case '2':
33
+ return 32;
34
+ case '3':
35
+ return 40;
36
+ case '4':
37
+ return 48;
38
+ case '5':
39
+ return 64;
40
+ case '6':
41
+ return 80;
42
+ case '7':
43
+ return 96;
44
+ case '8':
45
+ return 128;
46
+ case '9':
47
+ return 160;
48
+ }
49
+ }
50
+ // Font size based on avatar size (approximating cqw units)
51
+ function getFallbackFontSize(avatarSize, letterCount) {
52
+ // 45cqw for 1 letter, 40cqw for 2 letters
53
+ const percentage = letterCount === 1 ? 0.45 : 0.4;
54
+ return Math.round(avatarSize * percentage);
55
+ }
56
+ function getInitials(name) {
57
+ const parts = name.trim().split(/\s+/);
58
+ if (parts.length === 1) {
59
+ return parts[0].charAt(0).toUpperCase();
60
+ }
61
+ return (parts[0].charAt(0) + parts[parts.length - 1].charAt(0)).toUpperCase();
62
+ }
63
+ function Avatar({ src, fallback, size = '3', shape = 'circle', color }) {
64
+ const { colors } = useThemeVars();
65
+ const [imageStatus, setImageStatus] = React.useState('loading');
66
+ const accentColor = resolveAccentFromColor(color);
67
+ const palette = colors.palettes[accentColor];
68
+ const gray = colors.palettes.gray;
69
+ const avatarSize = getAvatarSize(size);
70
+ const borderRadius = shape === 'circle' ? avatarSize / 2 : Math.max(avatarSize * 0.25, 8);
71
+ // Process fallback - convert string to initials
72
+ const fallbackContent = React.useMemo(() => {
73
+ if (typeof fallback === 'string') {
74
+ return getInitials(fallback);
75
+ }
76
+ return fallback;
77
+ }, [fallback]);
78
+ const showImage = src && imageStatus === 'loaded';
79
+ const showFallback = !src || imageStatus === 'error' || imageStatus === 'loading';
80
+ // Base style
81
+ const baseStyle = {
82
+ width: avatarSize,
83
+ height: avatarSize,
84
+ borderRadius,
85
+ alignItems: 'center',
86
+ justifyContent: 'center',
87
+ overflow: 'hidden',
88
+ flexShrink: 0,
89
+ };
90
+ // State-based styles
91
+ let stateStyle;
92
+ if (showImage) {
93
+ // Image loaded - gray border
94
+ stateStyle = {
95
+ borderWidth: 1,
96
+ borderColor: gray.a5,
97
+ };
98
+ }
99
+ else {
100
+ // Fallback state - accent background and border
101
+ stateStyle = {
102
+ backgroundColor: palette.a3,
103
+ borderWidth: 1,
104
+ borderColor: palette.a5,
105
+ };
106
+ }
107
+ const combinedStyle = { ...baseStyle, ...stateStyle };
108
+ // Image style
109
+ const imageStyle = {
110
+ width: avatarSize,
111
+ height: avatarSize,
112
+ borderRadius,
113
+ };
114
+ // Fallback styles
115
+ const isTextFallback = typeof fallbackContent === 'string';
116
+ const letterCount = isTextFallback ? (fallbackContent.length === 1 ? 1 : 2) : 1;
117
+ const fontSize = getFallbackFontSize(avatarSize, letterCount);
118
+ const fallbackContainerStyle = {
119
+ width: '100%',
120
+ height: '100%',
121
+ alignItems: 'center',
122
+ justifyContent: 'center',
123
+ position: 'absolute',
124
+ };
125
+ const textStyle = {
126
+ fontSize,
127
+ fontWeight: '500',
128
+ color: palette.a11,
129
+ textTransform: 'uppercase',
130
+ letterSpacing: fontSize * 0.05,
131
+ };
132
+ return (<View style={combinedStyle}>
133
+ {/* Fallback - always rendered underneath, hidden when image loads */}
134
+ {showFallback && (<View style={fallbackContainerStyle}>
135
+ {isTextFallback ? <Text style={textStyle}>{fallbackContent}</Text> : fallbackContent}
136
+ </View>)}
137
+
138
+ {/* Image - loads on top of fallback */}
139
+ {src && (<Image source={{ uri: src }} style={imageStyle} onLoad={() => setImageStatus('loaded')} onError={() => setImageStatus('error')}/>)}
140
+ </View>);
141
+ }
142
+ export { Avatar, avatarShapes, avatarSizes, getAvatarSize };
143
+ //# sourceMappingURL=avatar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar.js","sourceRoot":"","sources":["../../src/components/avatar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { Color } from '../lib/types';
2
+ import * as React from 'react';
3
+ import { View } from 'react-native';
4
+ declare const badgeSizes: readonly ["1", "2"];
5
+ declare const badgeVariants: readonly ["solid", "soft", "surface", "outline"];
6
+ type BadgeSize = (typeof badgeSizes)[number];
7
+ type BadgeVariant = (typeof badgeVariants)[number];
8
+ type BadgeProps = React.ComponentProps<typeof View> & {
9
+ asChild?: boolean;
10
+ size?: BadgeSize;
11
+ variant?: BadgeVariant;
12
+ color?: Color;
13
+ };
14
+ declare function Badge({ variant, size, color, style, asChild, ...props }: BadgeProps): React.JSX.Element;
15
+ export { Badge };
16
+ export type { BadgeProps };
17
+ //# sourceMappingURL=badge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../src/components/badge.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAe,KAAK,EAAE,MAAM,aAAa,CAAC;AAGtD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAkB,MAAM,cAAc,CAAC;AAEpD,QAAA,MAAM,UAAU,qBAAsB,CAAC;AACvC,QAAA,MAAM,aAAa,kDAAmD,CAAC;AAEvE,KAAK,SAAS,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAC7C,KAAK,YAAY,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD,KAAK,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,GAAG;IACpD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CAAC;AAkBF,iBAAS,KAAK,CAAC,EAAE,OAAgB,EAAE,IAAU,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,UAAU,qBA+E3F;AAED,OAAO,EAAE,KAAK,EAAE,CAAC;AACjB,YAAY,EAAE,UAAU,EAAE,CAAC"}
@@ -0,0 +1,95 @@
1
+ import { TextStyleContext } from '../components/text';
2
+ import { useThemeVars } from '../lib/use-theme-vars';
3
+ import * as Slot from '@rn-primitives/slot';
4
+ import * as React from 'react';
5
+ import { View } from 'react-native';
6
+ const badgeSizes = ['1', '2'];
7
+ const badgeVariants = ['solid', 'soft', 'surface', 'outline'];
8
+ function resolveAccentFromColor(color) {
9
+ if (!color)
10
+ return 'blue';
11
+ switch (color) {
12
+ case 'danger':
13
+ return 'red';
14
+ case 'warning':
15
+ return 'amber';
16
+ case 'success':
17
+ return 'green';
18
+ case 'info':
19
+ return 'blue';
20
+ default:
21
+ return color;
22
+ }
23
+ }
24
+ function Badge({ variant = 'soft', size = '1', color, style, asChild, ...props }) {
25
+ const { colors } = useThemeVars();
26
+ const Component = asChild ? Slot.View : View;
27
+ const accentColor = resolveAccentFromColor(color);
28
+ const palette = colors.palettes[accentColor];
29
+ // Base layout (same on all platforms)
30
+ const baseStyle = {
31
+ // layout
32
+ flexDirection: 'row',
33
+ alignItems: 'center',
34
+ justifyContent: 'center',
35
+ alignSelf: 'flex-start',
36
+ };
37
+ const sizeStyle = size === '1'
38
+ ? {
39
+ height: 20,
40
+ paddingHorizontal: 8,
41
+ borderRadius: 6,
42
+ }
43
+ : {
44
+ height: 28,
45
+ paddingHorizontal: 12,
46
+ borderRadius: 8,
47
+ };
48
+ // Variant-specific background / border colors
49
+ let variantStyle = {};
50
+ switch (variant) {
51
+ case 'solid': {
52
+ variantStyle = {
53
+ backgroundColor: palette['9'],
54
+ borderWidth: 0,
55
+ };
56
+ break;
57
+ }
58
+ case 'soft': {
59
+ variantStyle = {
60
+ backgroundColor: palette.a3,
61
+ borderWidth: 0,
62
+ };
63
+ break;
64
+ }
65
+ case 'surface': {
66
+ variantStyle = {
67
+ backgroundColor: palette.a2,
68
+ borderColor: palette.a7,
69
+ borderWidth: 1,
70
+ };
71
+ break;
72
+ }
73
+ case 'outline': {
74
+ variantStyle = {
75
+ borderColor: palette.a8,
76
+ borderWidth: 1,
77
+ };
78
+ break;
79
+ }
80
+ default:
81
+ variantStyle = {};
82
+ }
83
+ const mergedStyle = [baseStyle, sizeStyle, variantStyle, style];
84
+ // Text styles for any Text rendered inside Badge
85
+ const textColor = variant === 'solid' ? palette['9-contrast'] : palette.a11 || palette['11'];
86
+ return (<TextStyleContext.Provider value={{
87
+ size: size === '1' ? '1' : '2',
88
+ weight: 'medium',
89
+ color: textColor,
90
+ }}>
91
+ <Component style={mergedStyle} {...props}/>
92
+ </TextStyleContext.Provider>);
93
+ }
94
+ export { Badge };
95
+ //# sourceMappingURL=badge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.js","sourceRoot":"","sources":["../../src/components/badge.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { type ButtonSize, type ButtonVariant } from '../lib/button-styles';
2
+ import type { Color } from '../lib/types';
3
+ import * as React from 'react';
4
+ import { Pressable, type StyleProp, type ViewStyle } from 'react-native';
5
+ type ButtonProps = Omit<React.ComponentProps<typeof Pressable>, 'style'> & {
6
+ size?: ButtonSize;
7
+ variant?: ButtonVariant;
8
+ color?: Color;
9
+ style?: StyleProp<ViewStyle>;
10
+ };
11
+ declare function Button({ className, variant, size, color, style, disabled, children, onPressIn, onPressOut, onFocus, onBlur, onHoverIn, onHoverOut, ...pressableProps }: ButtonProps): React.JSX.Element;
12
+ export { Button };
13
+ export type { ButtonProps };
14
+ //# sourceMappingURL=button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../src/components/button.tsx"],"names":[],"mappings":"AACA,OAAO,EAQL,KAAK,UAAU,EACf,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAY,SAAS,EAAQ,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzF,KAAK,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,SAAS,CAAC,EAAE,OAAO,CAAC,GAAG;IACzE,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CAAC;AAEF,iBAAS,MAAM,CAAC,EACd,SAAS,EACT,OAAmB,EACnB,IAAU,EACV,KAAK,EACL,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,UAAU,EACV,OAAO,EACP,MAAM,EACN,SAAS,EACT,UAAU,EACV,GAAG,cAAc,EAClB,EAAE,WAAW,qBAmIb;AAED,OAAO,EAAE,MAAM,EAAE,CAAC;AAClB,YAAY,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,85 @@
1
+ import { TextStyleContext } from '../components/text';
2
+ import { getButtonFocusStyle, getButtonPressedFilter, getButtonShadowStyle, getButtonSizeStyle, getButtonTextColor, getButtonVariantStyle, resolveAccentFromColor, } from '../lib/button-styles';
3
+ import { useThemeVars } from '../lib/use-theme-vars';
4
+ import { cn } from '../lib/utils';
5
+ import * as React from 'react';
6
+ import { Platform, Pressable, View } from 'react-native';
7
+ function Button({ className, variant = 'surface', size = '2', color, style, disabled, children, onPressIn, onPressOut, onFocus, onBlur, onHoverIn, onHoverOut, ...pressableProps }) {
8
+ const { colors } = useThemeVars();
9
+ const [pressed, setPressed] = React.useState(false);
10
+ const [hovered, setHovered] = React.useState(false);
11
+ const [focused, setFocused] = React.useState(false);
12
+ const accentColor = resolveAccentFromColor(color);
13
+ const gray = colors.palettes.gray;
14
+ // All AccentColors should be in palettes, but TypeScript's index signature types
15
+ // don't guarantee it with bracket notation. Fallback to gray as defensive programming.
16
+ const palette = colors.palettes[accentColor] ?? gray;
17
+ const textColor = getButtonTextColor(variant, palette, gray, disabled ?? false);
18
+ // Base layout
19
+ const baseStyle = {
20
+ flexDirection: 'row',
21
+ alignItems: 'center',
22
+ justifyContent: 'center',
23
+ cursor: disabled ? 'not-allowed' : 'pointer',
24
+ };
25
+ // Size styles (including gap between children)
26
+ const sizeStyle = getButtonSizeStyle(size, false);
27
+ // Variant background / border, including pressed state
28
+ const variantStyle = getButtonVariantStyle(variant, colors, palette, gray, disabled ?? false, pressed, hovered);
29
+ const surfaceShadow = getButtonShadowStyle(variant, disabled ?? false, pressed);
30
+ // Focus outline using accent-a8
31
+ const focusStyle = getButtonFocusStyle(palette, focused, disabled ?? false);
32
+ // Solid button pressed filter (web only): brightness(0.92) saturate(1.1)
33
+ const pressedFilter = getButtonPressedFilter(variant, pressed, disabled ?? false);
34
+ const combinedStyle = {
35
+ ...baseStyle,
36
+ ...sizeStyle,
37
+ ...variantStyle,
38
+ ...surfaceShadow,
39
+ ...focusStyle,
40
+ ...pressedFilter,
41
+ };
42
+ const handlePressIn = React.useCallback((e) => {
43
+ setPressed(true);
44
+ onPressIn?.(e);
45
+ }, [onPressIn]);
46
+ const handlePressOut = React.useCallback((e) => {
47
+ setPressed(false);
48
+ onPressOut?.(e);
49
+ }, [onPressOut]);
50
+ const handleHoverIn = React.useCallback((e) => {
51
+ setHovered(true);
52
+ onHoverIn?.(e);
53
+ }, [onHoverIn]);
54
+ const handleHoverOut = React.useCallback((e) => {
55
+ setHovered(false);
56
+ onHoverOut?.(e);
57
+ }, [onHoverOut]);
58
+ const handleFocus = React.useCallback((e) => {
59
+ // Only show focus ring on keyboard navigation (focus-visible)
60
+ if (Platform.OS === 'web') {
61
+ const target = e.target;
62
+ if (target?.matches?.(':focus-visible')) {
63
+ setFocused(true);
64
+ }
65
+ }
66
+ onFocus?.(e);
67
+ }, [onFocus]);
68
+ const handleBlur = React.useCallback((e) => {
69
+ setFocused(false);
70
+ onBlur?.(e);
71
+ }, [onBlur]);
72
+ return (<View className={cn(className)} style={style}>
73
+ <TextStyleContext.Provider value={{
74
+ size: size,
75
+ weight: 'medium',
76
+ color: textColor,
77
+ }}>
78
+ <Pressable style={combinedStyle} role="button" disabled={disabled} onPressIn={handlePressIn} onPressOut={handlePressOut} onHoverIn={handleHoverIn} onHoverOut={handleHoverOut} onFocus={handleFocus} onBlur={handleBlur} {...pressableProps}>
79
+ {children}
80
+ </Pressable>
81
+ </TextStyleContext.Provider>
82
+ </View>);
83
+ }
84
+ export { Button };
85
+ //# sourceMappingURL=button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.js","sourceRoot":"","sources":["../../src/components/button.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { Color } from '../lib/types';
2
+ import * as React from 'react';
3
+ import { type ViewProps } from 'react-native';
4
+ declare const calloutSizes: readonly ["1", "2", "3"];
5
+ declare const calloutVariants: readonly ["soft", "surface", "outline"];
6
+ type CalloutSize = (typeof calloutSizes)[number];
7
+ type CalloutVariant = (typeof calloutVariants)[number];
8
+ type CalloutRootProps = ViewProps & {
9
+ size?: CalloutSize;
10
+ variant?: CalloutVariant;
11
+ color?: Color;
12
+ };
13
+ declare function CalloutRoot({ size, variant, color, style, children, ...props }: CalloutRootProps): React.JSX.Element;
14
+ type CalloutIconProps = ViewProps;
15
+ declare function CalloutIcon({ style, children, ...props }: CalloutIconProps): React.JSX.Element;
16
+ type CalloutTextProps = ViewProps;
17
+ declare function CalloutText({ style, children, ...props }: CalloutTextProps): React.JSX.Element;
18
+ declare const Callout: {
19
+ Root: typeof CalloutRoot;
20
+ Icon: typeof CalloutIcon;
21
+ Text: typeof CalloutText;
22
+ };
23
+ export { Callout, CalloutIcon, CalloutRoot, CalloutText };
24
+ export type { CalloutIconProps, CalloutRootProps, CalloutTextProps };
25
+ //# sourceMappingURL=callout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"callout.d.ts","sourceRoot":"","sources":["../../src/components/callout.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAe,KAAK,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAQ,KAAK,SAAS,EAAkB,MAAM,cAAc,CAAC;AAEpE,QAAA,MAAM,YAAY,0BAA2B,CAAC;AAC9C,QAAA,MAAM,eAAe,yCAA0C,CAAC;AAEhE,KAAK,WAAW,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AACjD,KAAK,cAAc,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAqEvD,KAAK,gBAAgB,GAAG,SAAS,GAAG;IAClC,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CAAC;AAEF,iBAAS,WAAW,CAAC,EACnB,IAAU,EACV,OAAgB,EAChB,KAAK,EACL,KAAK,EACL,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,gBAAgB,qBA2DlB;AAED,KAAK,gBAAgB,GAAG,SAAS,CAAC;AAElC,iBAAS,WAAW,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,qBAoBnE;AAED,KAAK,gBAAgB,GAAG,SAAS,CAAC;AAElC,iBAAS,WAAW,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,qBAUnE;AAED,QAAA,MAAM,OAAO;;;;CAIZ,CAAC;AAEF,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;AAC1D,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,146 @@
1
+ import { TextStyleContext } from '../components/text';
2
+ import { useThemeVars } from '../lib/use-theme-vars';
3
+ import * as React from 'react';
4
+ import { View } from 'react-native';
5
+ const calloutSizes = ['1', '2', '3'];
6
+ const calloutVariants = ['soft', 'surface', 'outline'];
7
+ const CalloutContext = React.createContext({
8
+ size: '2',
9
+ color: 'gray',
10
+ });
11
+ function resolveAccentFromColor(color) {
12
+ if (!color)
13
+ return 'gray';
14
+ switch (color) {
15
+ case 'danger':
16
+ return 'red';
17
+ case 'warning':
18
+ return 'amber';
19
+ case 'success':
20
+ return 'green';
21
+ case 'info':
22
+ return 'blue';
23
+ default:
24
+ return color;
25
+ }
26
+ }
27
+ // Size to text size mapping (matching web version)
28
+ function getTextSize(size) {
29
+ return size === '3' ? '3' : '2';
30
+ }
31
+ // Size styles (matching web CSS)
32
+ // --space-2: 8px, --space-3: 12px, --space-4: 16px, --space-5: 20px
33
+ // --radius-5: 10px, --radius-6: 12px
34
+ function getSizeStyle(size) {
35
+ switch (size) {
36
+ case '1':
37
+ // padding: var(--space-3) var(--space-4) = 12px 16px
38
+ // column-gap: var(--space-2) = 8px
39
+ // border-radius: var(--radius-5) = 10px
40
+ return {
41
+ paddingVertical: 12,
42
+ paddingHorizontal: 16,
43
+ borderRadius: 10,
44
+ gap: 8,
45
+ };
46
+ case '2':
47
+ // padding: var(--space-4) = 16px
48
+ // column-gap: var(--space-3) = 12px
49
+ // border-radius: var(--radius-5) = 10px
50
+ return {
51
+ padding: 16,
52
+ borderRadius: 10,
53
+ gap: 12,
54
+ };
55
+ case '3':
56
+ // padding: var(--space-5) = 20px
57
+ // column-gap: var(--space-3) = 12px
58
+ // border-radius: var(--radius-6) = 12px
59
+ return {
60
+ padding: 20,
61
+ borderRadius: 12,
62
+ gap: 12,
63
+ };
64
+ }
65
+ }
66
+ function CalloutRoot({ size = '2', variant = 'soft', color, style, children, ...props }) {
67
+ const { colors } = useThemeVars();
68
+ const accentColor = resolveAccentFromColor(color);
69
+ const palette = colors.palettes[accentColor];
70
+ const baseStyle = {
71
+ flexDirection: 'row',
72
+ alignItems: 'flex-start',
73
+ };
74
+ const sizeStyle = getSizeStyle(size);
75
+ let variantStyle = {};
76
+ switch (variant) {
77
+ case 'soft':
78
+ variantStyle = {
79
+ backgroundColor: palette.a3,
80
+ };
81
+ break;
82
+ case 'surface':
83
+ variantStyle = {
84
+ backgroundColor: palette.a2,
85
+ borderColor: palette.a6,
86
+ borderWidth: 1,
87
+ };
88
+ break;
89
+ case 'outline':
90
+ variantStyle = {
91
+ borderColor: palette.a7,
92
+ borderWidth: 1,
93
+ };
94
+ break;
95
+ }
96
+ const combinedStyle = {
97
+ ...baseStyle,
98
+ ...sizeStyle,
99
+ ...variantStyle,
100
+ };
101
+ const contextValue = React.useMemo(() => ({ size, color: accentColor }), [size, accentColor]);
102
+ // Text color for children
103
+ const textColor = palette.a11 || palette['11'];
104
+ return (<CalloutContext.Provider value={contextValue}>
105
+ <TextStyleContext.Provider value={{
106
+ size: getTextSize(size),
107
+ weight: 'medium',
108
+ color: textColor,
109
+ }}>
110
+ <View style={[combinedStyle, style]} {...props}>
111
+ {children}
112
+ </View>
113
+ </TextStyleContext.Provider>
114
+ </CalloutContext.Provider>);
115
+ }
116
+ function CalloutIcon({ style, children, ...props }) {
117
+ const { size } = React.useContext(CalloutContext);
118
+ // Icon container sizing
119
+ const iconSize = size === '1' ? 16 : size === '2' ? 18 : 20;
120
+ const iconStyle = {
121
+ width: iconSize,
122
+ height: iconSize,
123
+ flexShrink: 0,
124
+ marginTop: size === '1' ? 1 : 2,
125
+ alignItems: 'center',
126
+ justifyContent: 'center',
127
+ };
128
+ return (<View style={[iconStyle, style]} {...props}>
129
+ {children}
130
+ </View>);
131
+ }
132
+ function CalloutText({ style, children, ...props }) {
133
+ const textStyle = {
134
+ flex: 1,
135
+ };
136
+ return (<View style={[textStyle, style]} {...props}>
137
+ {children}
138
+ </View>);
139
+ }
140
+ const Callout = {
141
+ Root: CalloutRoot,
142
+ Icon: CalloutIcon,
143
+ Text: CalloutText,
144
+ };
145
+ export { Callout, CalloutIcon, CalloutRoot, CalloutText };
146
+ //# sourceMappingURL=callout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"callout.js","sourceRoot":"","sources":["../../src/components/callout.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { View, type ViewProps } from 'react-native';
2
+ declare const cardVariants: readonly ["soft", "surface", "ghost"];
3
+ type CardVariant = (typeof cardVariants)[number];
4
+ type CardProps = ViewProps & React.RefAttributes<View> & {
5
+ variant?: CardVariant;
6
+ };
7
+ declare function Card({ variant, style, ...props }: CardProps): import("react").JSX.Element;
8
+ export { Card };
9
+ export type { CardProps, CardVariant };
10
+ //# sourceMappingURL=card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../src/components/card.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,KAAK,SAAS,EAAkB,MAAM,cAAc,CAAC;AAEpE,QAAA,MAAM,YAAY,uCAAwC,CAAC;AAE3D,KAAK,WAAW,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjD,KAAK,SAAS,GAAG,SAAS,GACxB,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG;IAC1B,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB,CAAC;AAEJ,iBAAS,IAAI,CAAC,EAAE,OAAmB,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,SAAS,+BAwChE;AAED,OAAO,EAAE,IAAI,EAAE,CAAC;AAChB,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,41 @@
1
+ import { useThemeVars } from '../lib/use-theme-vars';
2
+ import { View } from 'react-native';
3
+ const cardVariants = ['soft', 'surface', 'ghost'];
4
+ function Card({ variant = 'surface', style, ...props }) {
5
+ const { colors } = useThemeVars();
6
+ const gray = colors.palettes.gray;
7
+ const baseStyle = {
8
+ padding: 16,
9
+ borderRadius: 16,
10
+ };
11
+ let variantStyle = {};
12
+ switch (variant) {
13
+ case 'soft':
14
+ variantStyle = {
15
+ backgroundColor: gray.a3,
16
+ };
17
+ break;
18
+ case 'surface':
19
+ variantStyle = {
20
+ backgroundColor: colors.panelSolid,
21
+ borderWidth: 1,
22
+ borderColor: colors.stroke,
23
+ shadowColor: '#000000',
24
+ shadowOpacity: 0.05,
25
+ shadowOffset: { width: 0, height: 1 },
26
+ shadowRadius: 2,
27
+ elevation: 2,
28
+ };
29
+ break;
30
+ case 'ghost':
31
+ // No styles
32
+ break;
33
+ }
34
+ const combinedStyle = {
35
+ ...baseStyle,
36
+ ...variantStyle,
37
+ };
38
+ return <View style={[combinedStyle, style]} {...props}/>;
39
+ }
40
+ export { Card };
41
+ //# sourceMappingURL=card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.js","sourceRoot":"","sources":["../../src/components/card.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAkC,MAAM,cAAc,CAAC;AAEpE,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAU,CAAC;AAS3D,SAAS,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,EAAa;IAC/D,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;IAElC,MAAM,SAAS,GAAc;QAC3B,OAAO,EAAE,EAAE;QACX,YAAY,EAAE,EAAE;KACjB,CAAC;IAEF,IAAI,YAAY,GAAc,EAAE,CAAC;IAEjC,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,MAAM;YACT,YAAY,GAAG;gBACb,eAAe,EAAE,IAAI,CAAC,EAAE;aACzB,CAAC;YACF,MAAM;QACR,KAAK,SAAS;YACZ,YAAY,GAAG;gBACb,eAAe,EAAE,MAAM,CAAC,UAAU;gBAClC,WAAW,EAAE,CAAC;gBACd,WAAW,EAAE,MAAM,CAAC,MAAM;gBAC1B,WAAW,EAAE,SAAS;gBACtB,aAAa,EAAE,IAAI;gBACnB,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;gBACrC,YAAY,EAAE,CAAC;gBACf,SAAS,EAAE,CAAC;aACb,CAAC;YACF,MAAM;QACR,KAAK,OAAO;YACV,YAAY;YACZ,MAAM;IACV,CAAC;IAED,MAAM,aAAa,GAAc;QAC/B,GAAG,SAAS;QACZ,GAAG,YAAY;KAChB,CAAC;IAEF,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,EAAG,CAAC;AAC5D,CAAC;AAED,OAAO,EAAE,IAAI,EAAE,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { Color } from '../lib/types';
2
+ import * as CheckboxPrimitive from '@rn-primitives/checkbox';
3
+ import * as React from 'react';
4
+ declare const checkboxSizes: readonly ["1", "2", "3"];
5
+ type CheckboxSize = (typeof checkboxSizes)[number];
6
+ type CheckboxProps = Omit<CheckboxPrimitive.RootProps, 'children'> & {
7
+ size?: CheckboxSize;
8
+ color?: Color;
9
+ };
10
+ declare function Checkbox({ size, color, checked, disabled, onFocus, onBlur, ...props }: CheckboxProps): React.JSX.Element;
11
+ export { Checkbox };
12
+ export type { CheckboxProps };
13
+ //# sourceMappingURL=checkbox.d.ts.map