@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 @@
1
+ {"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../src/components/tabs.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,QAAA,MAAM,SAAS,qBAAsB,CAAC;AAEtC,KAAK,QAAQ,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AA8C3C,KAAK,aAAa,GAAG,aAAa,CAAC,SAAS,GAAG;IAC7C,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB,CAAC;AAEF,iBAAS,QAAQ,CAAC,EAAE,IAAU,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,qBAUxF;AAED,KAAK,aAAa,GAAG,aAAa,CAAC,SAAS,CAAC;AAE7C,iBAAS,QAAQ,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,qBAoBtD;AAgED,KAAK,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,UAAU,CAAC,GAAG;IACrE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AAEF,iBAAS,WAAW,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,qBAcnE;AAED,KAAK,gBAAgB,GAAG,aAAa,CAAC,YAAY,CAAC;AAEnD,iBAAS,WAAW,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,qBAElD;AAED,QAAA,MAAM,IAAI;;;;;CAKT,CAAC;AAEF,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;AAC9D,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,124 @@
1
+ import { Text, TextStyleContext } from '../components/text';
2
+ import { useThemeVars } from '../lib/use-theme-vars';
3
+ import * as TabsPrimitive from '@rn-primitives/tabs';
4
+ import * as React from 'react';
5
+ import { View } from 'react-native';
6
+ const tabsSizes = ['1', '2'];
7
+ const TabsContext = React.createContext({
8
+ size: '2',
9
+ value: undefined,
10
+ });
11
+ // Size styles from CSS:
12
+ // Size 1: height: 36px, font-size-1
13
+ // Size 2: height: var(--space-7) = 40px, font-size-2
14
+ function getListHeight(size) {
15
+ switch (size) {
16
+ case '1':
17
+ return 36;
18
+ case '2':
19
+ return 40;
20
+ }
21
+ }
22
+ function getTextSize(size) {
23
+ switch (size) {
24
+ case '1':
25
+ return '1';
26
+ case '2':
27
+ return '2';
28
+ }
29
+ }
30
+ function getTriggerPadding(size) {
31
+ switch (size) {
32
+ case '1':
33
+ return { paddingX: 4, innerPaddingX: 6, innerPaddingY: 4 }; // space-1 = 4px
34
+ case '2':
35
+ return { paddingX: 4, innerPaddingX: 10, innerPaddingY: 4 }; // 1.25 * space-2 = 10px
36
+ }
37
+ }
38
+ function TabsRoot({ size = '2', value, onValueChange, children, ...props }) {
39
+ const contextValue = React.useMemo(() => ({ size, value }), [size, value]);
40
+ return (<TabsContext.Provider value={contextValue}>
41
+ <TabsPrimitive.Root value={value} onValueChange={onValueChange} {...props}>
42
+ {children}
43
+ </TabsPrimitive.Root>
44
+ </TabsContext.Provider>);
45
+ }
46
+ function TabsList({ children, ...props }) {
47
+ const { size } = React.useContext(TabsContext);
48
+ const { colors } = useThemeVars();
49
+ const gray = colors.palettes.gray;
50
+ const height = getListHeight(size);
51
+ const listStyle = {
52
+ flexDirection: 'row',
53
+ height,
54
+ borderBottomWidth: 1,
55
+ borderBottomColor: gray.a5,
56
+ alignItems: 'stretch',
57
+ };
58
+ return (<TabsPrimitive.List {...props}>
59
+ <View style={listStyle}>{children}</View>
60
+ </TabsPrimitive.List>);
61
+ }
62
+ function TabsTriggerInner({ value, hovered, children }) {
63
+ const { size, value: activeValue } = React.useContext(TabsContext);
64
+ const { colors } = useThemeVars();
65
+ const gray = colors.palettes.gray;
66
+ const accent = colors.palettes.blue; // Default accent
67
+ const isActive = value === activeValue;
68
+ const { paddingX, innerPaddingX, innerPaddingY } = getTriggerPadding(size);
69
+ const textSize = getTextSize(size);
70
+ // Text color - gray-12 on hover or active, gray-a11 otherwise
71
+ const textColor = isActive || hovered ? gray['12'] : gray.a11;
72
+ // Trigger wrapper style - stretch to full height
73
+ const triggerStyle = {
74
+ paddingHorizontal: paddingX,
75
+ flexShrink: 0,
76
+ justifyContent: 'center',
77
+ alignItems: 'center',
78
+ position: 'relative',
79
+ height: '100%',
80
+ };
81
+ // Inner content style with hover background
82
+ const innerStyle = {
83
+ paddingHorizontal: innerPaddingX,
84
+ paddingVertical: innerPaddingY,
85
+ borderRadius: size === '1' ? 4 : 6, // radius-2 or radius-3
86
+ backgroundColor: hovered ? gray.a3 : undefined,
87
+ };
88
+ // Active indicator (bottom border)
89
+ const activeIndicatorStyle = {
90
+ position: 'absolute',
91
+ bottom: -1,
92
+ left: 0,
93
+ right: 0,
94
+ height: 2,
95
+ backgroundColor: accent['10'],
96
+ };
97
+ // Wrap string children in Text component
98
+ const content = typeof children === 'string' ? <Text>{children}</Text> : children;
99
+ return (<TextStyleContext.Provider value={{ size: textSize, weight: isActive ? 'medium' : 'regular', color: textColor }}>
100
+ <View style={triggerStyle}>
101
+ <View style={innerStyle}>{content}</View>
102
+ {isActive && <View style={activeIndicatorStyle}/>}
103
+ </View>
104
+ </TextStyleContext.Provider>);
105
+ }
106
+ function TabsTrigger({ value, children, ...props }) {
107
+ const [hovered, setHovered] = React.useState(false);
108
+ return (<TabsPrimitive.Trigger value={value} onHoverIn={() => setHovered(true)} onHoverOut={() => setHovered(false)} {...props}>
109
+ <TabsTriggerInner value={value} hovered={hovered}>
110
+ {children}
111
+ </TabsTriggerInner>
112
+ </TabsPrimitive.Trigger>);
113
+ }
114
+ function TabsContent({ ...props }) {
115
+ return <TabsPrimitive.Content {...props}/>;
116
+ }
117
+ const Tabs = {
118
+ Root: TabsRoot,
119
+ List: TabsList,
120
+ Trigger: TabsTrigger,
121
+ Content: TabsContent,
122
+ };
123
+ export { Tabs, TabsContent, TabsList, TabsRoot, TabsTrigger };
124
+ //# sourceMappingURL=tabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../src/components/tabs.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { type TextInputSize, type TextInputVariant } from '../lib/text-input-styles';
2
+ import type { Color } from '../lib/types';
3
+ import * as React from 'react';
4
+ import { type TextInputProps, type TextStyle } from 'react-native';
5
+ type TextAreaSize = TextInputSize;
6
+ type TextAreaVariant = TextInputVariant;
7
+ interface TextAreaProps extends Omit<TextInputProps, 'style'> {
8
+ size?: TextAreaSize;
9
+ variant?: TextAreaVariant;
10
+ color?: Color;
11
+ style?: TextStyle;
12
+ }
13
+ declare function TextArea({ size, variant, color, style, editable, ...props }: TextAreaProps): React.JSX.Element;
14
+ export { TextArea };
15
+ export type { TextAreaProps, TextAreaSize, TextAreaVariant };
16
+ //# sourceMappingURL=text-area.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-area.d.ts","sourceRoot":"","sources":["../../src/components/text-area.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,SAAS,EAEf,MAAM,cAAc,CAAC;AAMtB,KAAK,YAAY,GAAG,aAAa,CAAC;AAClC,KAAK,eAAe,GAAG,gBAAgB,CAAC;AA0DxC,UAAU,aAAc,SAAQ,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC;IAC3D,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED,iBAAS,QAAQ,CAAC,EAChB,IAAU,EACV,OAAmB,EACnB,KAAc,EACd,KAAK,EACL,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,aAAa,qBA4Ff;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC;AACpB,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC"}
@@ -0,0 +1,117 @@
1
+ import { getDisabledSoftStyle, getDisabledSurfaceStyle, getSoftVariantStyle, getSurfaceVariantStyle, getTextInputColors, resolveAccentFromColor, } from '../lib/text-input-styles';
2
+ import { useThemeVars } from '../lib/use-theme-vars';
3
+ import * as React from 'react';
4
+ import { Platform, TextInput, View, } from 'react-native';
5
+ // ============================================================================
6
+ // Size helpers
7
+ // ============================================================================
8
+ function getTextAreaSizeStyle(size) {
9
+ switch (size) {
10
+ case '1':
11
+ return {
12
+ minHeight: 32, // space-8
13
+ fontSize: 12,
14
+ lineHeight: 16,
15
+ borderRadius: 6,
16
+ paddingVertical: 3, // space-1 - border
17
+ paddingHorizontal: 6, // space-1.5 - border
18
+ };
19
+ case '2':
20
+ return {
21
+ minHeight: 36, // space-9
22
+ fontSize: 14,
23
+ lineHeight: 20,
24
+ borderRadius: 8,
25
+ paddingVertical: 6, // space-1.5 - border
26
+ paddingHorizontal: 8, // space-2 - border
27
+ };
28
+ case '3':
29
+ return {
30
+ minHeight: 80,
31
+ fontSize: 16,
32
+ lineHeight: 24,
33
+ borderRadius: 10,
34
+ paddingVertical: 8, // space-2 - border
35
+ paddingHorizontal: 12, // space-3 - border
36
+ };
37
+ case '4':
38
+ return {
39
+ minHeight: 96,
40
+ fontSize: 18,
41
+ lineHeight: 28,
42
+ borderRadius: 14,
43
+ paddingVertical: 12, // space-3 - border
44
+ paddingHorizontal: 16, // space-4 - border
45
+ };
46
+ }
47
+ }
48
+ function TextArea({ size = '2', variant = 'surface', color = 'gray', style, editable, ...props }) {
49
+ const { colors } = useThemeVars();
50
+ const accentColor = resolveAccentFromColor(color);
51
+ const sizeStyle = getTextAreaSizeStyle(size);
52
+ const disabled = editable === false;
53
+ const [focused, setFocused] = React.useState(false);
54
+ // Variant styles
55
+ let variantStyle = variant === 'surface'
56
+ ? getSurfaceVariantStyle(colors)
57
+ : getSoftVariantStyle(colors, accentColor);
58
+ // Apply disabled styles (surface keeps border, soft replaces background)
59
+ if (disabled) {
60
+ if (variant === 'surface') {
61
+ // Surface: keep border, replace background
62
+ variantStyle = {
63
+ ...variantStyle,
64
+ ...getDisabledSurfaceStyle(colors),
65
+ };
66
+ }
67
+ else {
68
+ // Soft: replace background completely
69
+ variantStyle = getDisabledSoftStyle(colors);
70
+ }
71
+ }
72
+ // Focus outline (web only)
73
+ const focusStyle = focused && !disabled && Platform.OS === 'web'
74
+ ? {
75
+ outline: `2px solid ${colors.palettes[accentColor].a8}`,
76
+ outlineOffset: -1,
77
+ }
78
+ : undefined;
79
+ // Text and placeholder colors
80
+ const { textColor, placeholderColor } = getTextInputColors(variant, colors, accentColor, disabled);
81
+ const rootStyle = {
82
+ flexDirection: 'column',
83
+ minHeight: sizeStyle.minHeight,
84
+ borderRadius: sizeStyle.borderRadius,
85
+ ...variantStyle,
86
+ ...focusStyle,
87
+ };
88
+ const inputStyle = {
89
+ flex: 1,
90
+ fontSize: sizeStyle.fontSize,
91
+ lineHeight: sizeStyle.lineHeight,
92
+ color: textColor,
93
+ paddingVertical: sizeStyle.paddingVertical,
94
+ paddingHorizontal: sizeStyle.paddingHorizontal,
95
+ textAlignVertical: 'top',
96
+ ...(Platform.OS === 'web'
97
+ ? {
98
+ outline: 'none',
99
+ backgroundColor: 'transparent',
100
+ resize: 'none',
101
+ }
102
+ : {}),
103
+ };
104
+ const handleFocus = (e) => {
105
+ setFocused(true);
106
+ props.onFocus?.(e);
107
+ };
108
+ const handleBlur = (e) => {
109
+ setFocused(false);
110
+ props.onBlur?.(e);
111
+ };
112
+ return (<View style={rootStyle}>
113
+ <TextInput style={[inputStyle, style]} placeholderTextColor={placeholderColor} editable={editable} multiline onFocus={handleFocus} onBlur={handleBlur} {...props}/>
114
+ </View>);
115
+ }
116
+ export { TextArea };
117
+ //# sourceMappingURL=text-area.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-area.js","sourceRoot":"","sources":["../../src/components/text-area.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import { type TextInputSize, type TextInputVariant } from '../lib/text-input-styles';
2
+ import type { Color } from '../lib/types';
3
+ import * as React from 'react';
4
+ import { TextInput, type TextInputProps, type TextStyle, type ViewProps } from 'react-native';
5
+ type TextFieldSize = TextInputSize;
6
+ type TextFieldVariant = TextInputVariant;
7
+ interface TextFieldRootProps extends ViewProps {
8
+ size?: TextFieldSize;
9
+ variant?: TextFieldVariant;
10
+ color?: Color;
11
+ disabled?: boolean;
12
+ focused?: boolean;
13
+ children: React.ReactNode;
14
+ }
15
+ declare function TextFieldRoot({ size, variant, color, disabled, focused: focusedProp, style, children, ...props }: TextFieldRootProps): React.JSX.Element;
16
+ interface TextFieldSlotProps extends ViewProps {
17
+ color?: Color;
18
+ children?: React.ReactNode;
19
+ }
20
+ declare function TextFieldSlot({ color, style, children, ...props }: TextFieldSlotProps): React.JSX.Element | null;
21
+ interface TextFieldInputProps extends Omit<TextInputProps, 'style'> {
22
+ size?: TextFieldSize;
23
+ variant?: TextFieldVariant;
24
+ color?: Color;
25
+ style?: TextStyle;
26
+ }
27
+ declare const TextFieldInput: React.ForwardRefExoticComponent<TextFieldInputProps & React.RefAttributes<TextInput>>;
28
+ declare const TextField: {
29
+ Root: typeof TextFieldRoot;
30
+ Slot: typeof TextFieldSlot;
31
+ Input: React.ForwardRefExoticComponent<TextFieldInputProps & React.RefAttributes<TextInput>>;
32
+ };
33
+ export { TextField, TextFieldInput, TextFieldRoot, TextFieldSlot };
34
+ export type { TextFieldInputProps, TextFieldRootProps, TextFieldSize, TextFieldSlotProps, TextFieldVariant, };
35
+ //# sourceMappingURL=text-field.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-field.d.ts","sourceRoot":"","sources":["../../src/components/text-field.tsx"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAEL,SAAS,EAGT,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,SAAS,EAEf,MAAM,cAAc,CAAC;AAMtB,KAAK,aAAa,GAAG,aAAa,CAAC;AACnC,KAAK,gBAAgB,GAAG,gBAAgB,CAAC;AAwDzC,UAAU,kBAAmB,SAAQ,SAAS;IAC5C,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,iBAAS,aAAa,CAAC,EACrB,IAAU,EACV,OAAmB,EACnB,KAAc,EACd,QAAgB,EAChB,OAAO,EAAE,WAAW,EACpB,KAAK,EACL,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,kBAAkB,qBAwIpB;AAMD,UAAU,kBAAmB,SAAQ,SAAS;IAC5C,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,iBAAS,aAAa,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,kBAAkB,4BAkC9E;AAMD,UAAU,mBAAoB,SAAQ,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC;IACjE,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED,QAAA,MAAM,cAAc,uFAsHnB,CAAC;AAOF,QAAA,MAAM,SAAS;;;;CAId,CAAC;AAEF,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC;AACnE,YAAY,EACV,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,kBAAkB,EAClB,gBAAgB,GACjB,CAAC"}
@@ -0,0 +1,256 @@
1
+ import { getDisabledSoftStyle, getDisabledSurfaceStyle, getSoftVariantStyle, getSurfaceVariantStyle, getTextInputColors, hexToRgba, resolveAccentFromColor, } from '../lib/text-input-styles';
2
+ import { useThemeVars } from '../lib/use-theme-vars';
3
+ import * as React from 'react';
4
+ import { Platform, TextInput, View, } from 'react-native';
5
+ const TextFieldContext = React.createContext(undefined);
6
+ // ============================================================================
7
+ // Size helpers
8
+ // ============================================================================
9
+ function getSizeStyle(size) {
10
+ switch (size) {
11
+ case '1':
12
+ return { height: 24, fontSize: 12, borderRadius: 6, paddingHorizontal: 6 }; // space-5
13
+ case '2':
14
+ return { height: 32, fontSize: 14, borderRadius: 8, paddingHorizontal: 8 }; // space-6
15
+ case '3':
16
+ return { height: 40, fontSize: 16, borderRadius: 10, paddingHorizontal: 12 }; // space-7
17
+ case '4':
18
+ return { height: 48, fontSize: 18, borderRadius: 14, paddingHorizontal: 12 }; // space-8
19
+ }
20
+ }
21
+ function getSlotPadding(size) {
22
+ switch (size) {
23
+ case '1':
24
+ case '2':
25
+ return 8;
26
+ case '3':
27
+ return 10;
28
+ case '4':
29
+ return 12;
30
+ }
31
+ }
32
+ function TextFieldRoot({ size = '2', variant = 'surface', color = 'gray', disabled = false, focused: focusedProp, style, children, ...props }) {
33
+ const { colors } = useThemeVars();
34
+ const accentColor = resolveAccentFromColor(color);
35
+ const [internalFocused, setInternalFocused] = React.useState(false);
36
+ const focused = focusedProp !== undefined ? focusedProp : internalFocused;
37
+ const inputRef = React.useRef(null);
38
+ const sizeStyle = getSizeStyle(size);
39
+ // Background and border based on variant
40
+ let variantStyle = variant === 'surface'
41
+ ? getSurfaceVariantStyle(colors)
42
+ : getSoftVariantStyle(colors, accentColor);
43
+ // Apply disabled styles (surface keeps border, soft replaces background)
44
+ if (disabled) {
45
+ if (variant === 'surface') {
46
+ // Surface: keep border, replace background
47
+ variantStyle = {
48
+ ...variantStyle,
49
+ ...getDisabledSurfaceStyle(colors),
50
+ };
51
+ }
52
+ else {
53
+ // Soft: replace background completely
54
+ variantStyle = getDisabledSoftStyle(colors);
55
+ }
56
+ }
57
+ // Focus outline (web only)
58
+ const focusStyle = focused && !disabled && Platform.OS === 'web'
59
+ ? {
60
+ outline: `2px solid ${colors.palettes[accentColor].a8}`,
61
+ outlineOffset: -1,
62
+ }
63
+ : undefined;
64
+ const rootStyle = {
65
+ flexDirection: 'row',
66
+ alignItems: 'center',
67
+ borderRadius: sizeStyle.borderRadius,
68
+ ...variantStyle,
69
+ ...focusStyle,
70
+ };
71
+ // Handle pointer/touch events to focus input when clicking on non-button elements
72
+ const handlePointerDown = React.useCallback((event) => {
73
+ if (disabled || !inputRef.current)
74
+ return;
75
+ // On web, we can access the DOM target
76
+ if (Platform.OS === 'web') {
77
+ // Access the native DOM event
78
+ // On React Native Web, the event structure may vary, so we check both
79
+ const eventAny = event;
80
+ const nativeEvent = eventAny.nativeEvent || eventAny;
81
+ const target = nativeEvent.target;
82
+ if (!target)
83
+ return;
84
+ // If clicking on input, button, or anchor, don't focus (let them handle it)
85
+ if (target.closest('input, button, a'))
86
+ return;
87
+ // Focus the input
88
+ requestAnimationFrame(() => {
89
+ inputRef.current?.focus();
90
+ });
91
+ }
92
+ }, [disabled]);
93
+ // Handle native touch events (iOS/Android)
94
+ const handleStartShouldSetResponder = React.useCallback((event) => {
95
+ if (disabled || !inputRef.current)
96
+ return false;
97
+ // Check if the touch target is a button-like component
98
+ // On native, we check the component type from the event
99
+ const target = event.target;
100
+ if (!target)
101
+ return false;
102
+ // Check if target is the TextInput itself - don't focus in that case
103
+ // We can't directly compare refs, but we can check if it's an input
104
+ const targetType = target.constructor?.name || '';
105
+ const isInput = targetType.includes('TextInput') || targetType.includes('RCTTextInput');
106
+ if (isInput) {
107
+ return false; // Let the input handle it
108
+ }
109
+ // Check if target is a button-like component
110
+ // Buttons (Pressable, TouchableOpacity) typically have these in their name
111
+ const isButtonLike = targetType.includes('Touchable') ||
112
+ targetType.includes('Pressable') ||
113
+ targetType.includes('Button');
114
+ if (isButtonLike) {
115
+ return false; // Let the button handle it
116
+ }
117
+ // Focus the input for other touches (like icons in slots)
118
+ requestAnimationFrame(() => {
119
+ inputRef.current?.focus();
120
+ });
121
+ return false; // Don't capture the responder, let the event bubble
122
+ }, [disabled]);
123
+ return (<TextFieldContext.Provider value={{
124
+ size,
125
+ variant,
126
+ color: accentColor,
127
+ disabled,
128
+ inputRef,
129
+ onFocus: () => setInternalFocused(true),
130
+ onBlur: () => setInternalFocused(false),
131
+ }}>
132
+ <View style={[rootStyle, style]} {...(Platform.OS === 'web'
133
+ ? { onPointerDown: handlePointerDown }
134
+ : { onStartShouldSetResponder: handleStartShouldSetResponder })} {...props}>
135
+ {children}
136
+ </View>
137
+ </TextFieldContext.Provider>);
138
+ }
139
+ function TextFieldSlot({ color, style, children, ...props }) {
140
+ const context = React.useContext(TextFieldContext);
141
+ const { colors } = useThemeVars();
142
+ const accentColor = color ? resolveAccentFromColor(color) : undefined;
143
+ const slotColor = accentColor ? colors.palettes[accentColor].a11 : colors.palettes.gray.a11;
144
+ const padding = getSlotPadding(context?.size ?? '2');
145
+ const slotStyle = {
146
+ flexShrink: 0,
147
+ flexGrow: 0, // Slots should not grow, only maintain their size
148
+ flexDirection: 'row',
149
+ alignItems: 'center',
150
+ height: '100%',
151
+ gap: padding,
152
+ paddingHorizontal: padding,
153
+ };
154
+ if (!children)
155
+ return null;
156
+ return (<View style={[slotStyle, { opacity: 1 }, style]} {...props}>
157
+ {React.Children.map(children, (child) => {
158
+ if (React.isValidElement(child)) {
159
+ // Pass color to icon children if they accept it
160
+ return React.cloneElement(child, {
161
+ color: slotColor,
162
+ });
163
+ }
164
+ return child;
165
+ })}
166
+ </View>);
167
+ }
168
+ const TextFieldInput = React.forwardRef(({ size: sizeProp, variant: variantProp, color: colorProp, style, editable, ...props }, forwardedRef) => {
169
+ const context = React.useContext(TextFieldContext);
170
+ const { colors } = useThemeVars();
171
+ const size = sizeProp ?? context?.size ?? '2';
172
+ const variant = variantProp ?? context?.variant ?? 'surface';
173
+ const color = colorProp ? resolveAccentFromColor(colorProp) : (context?.color ?? 'gray');
174
+ const disabled = editable === false || context?.disabled;
175
+ // Create a callback ref that sets all necessary refs
176
+ const setRefs = React.useCallback((instance) => {
177
+ // Set context ref if it exists
178
+ if (context?.inputRef) {
179
+ context.inputRef.current = instance;
180
+ }
181
+ // Set forwarded ref if it exists
182
+ if (forwardedRef) {
183
+ if (typeof forwardedRef === 'function') {
184
+ forwardedRef(instance);
185
+ }
186
+ else {
187
+ forwardedRef.current = instance;
188
+ }
189
+ }
190
+ }, [context?.inputRef, forwardedRef]);
191
+ const sizeStyle = getSizeStyle(size);
192
+ // Text and placeholder colors based on variant and disabled state
193
+ // TextField uses 0.6 opacity for soft variant placeholder (TextArea uses 0.65)
194
+ const { textColor, placeholderColor: basePlaceholderColor } = getTextInputColors(variant, colors, color, disabled);
195
+ const placeholderColor = variant === 'soft' && !disabled
196
+ ? hexToRgba(colors.palettes[color]['12'], 0.6)
197
+ : basePlaceholderColor;
198
+ // Account for border height: surface variant has 1px border top and bottom (2px total)
199
+ const inputHeight = variant === 'surface' ? sizeStyle.height - 2 : sizeStyle.height;
200
+ const inputStyle = {
201
+ flex: 1,
202
+ minWidth: 0, // Allow input to shrink below content width
203
+ height: inputHeight,
204
+ fontSize: sizeStyle.fontSize,
205
+ color: textColor,
206
+ paddingHorizontal: sizeStyle.paddingHorizontal,
207
+ // Remove default styling
208
+ ...(Platform.OS === 'web'
209
+ ? {
210
+ outline: 'none',
211
+ backgroundColor: 'transparent',
212
+ }
213
+ : {}),
214
+ };
215
+ // If no context (no Root), wrap in Root
216
+ const hasRoot = context !== undefined;
217
+ // When no root, manage focus state locally and pass to Root
218
+ const [localFocused, setLocalFocused] = React.useState(false);
219
+ const handleFocus = (e) => {
220
+ if (hasRoot) {
221
+ context?.onFocus?.();
222
+ }
223
+ else {
224
+ setLocalFocused(true);
225
+ }
226
+ props.onFocus?.(e);
227
+ };
228
+ const handleBlur = (e) => {
229
+ if (hasRoot) {
230
+ context?.onBlur?.();
231
+ }
232
+ else {
233
+ setLocalFocused(false);
234
+ }
235
+ props.onBlur?.(e);
236
+ };
237
+ const input = (<TextInput ref={setRefs} style={[inputStyle, style]} placeholderTextColor={placeholderColor} editable={editable} onFocus={handleFocus} onBlur={handleBlur} {...props}/>);
238
+ if (hasRoot) {
239
+ return input;
240
+ }
241
+ // When no root, create one with focus state management
242
+ return (<TextFieldRoot size={size} variant={variant} color={color} disabled={disabled} focused={localFocused}>
243
+ {input}
244
+ </TextFieldRoot>);
245
+ });
246
+ TextFieldInput.displayName = 'TextFieldInput';
247
+ // ============================================================================
248
+ // Export composite component
249
+ // ============================================================================
250
+ const TextField = {
251
+ Root: TextFieldRoot,
252
+ Slot: TextFieldSlot,
253
+ Input: TextFieldInput,
254
+ };
255
+ export { TextField, TextFieldInput, TextFieldRoot, TextFieldSlot };
256
+ //# sourceMappingURL=text-field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-field.js","sourceRoot":"","sources":["../../src/components/text-field.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { themeVars } from '../lib/theme-vars';
2
+ import type { AccentColor } from '../lib/types';
3
+ import * as React from 'react';
4
+ import { Text as RNText } from 'react-native';
5
+ type TextSize = keyof typeof themeVars.typography;
6
+ type TextWeight = keyof typeof themeVars.fontWeights;
7
+ type TextProps = Omit<React.ComponentProps<typeof RNText>, 'size' | 'weight' | 'color'> & {
8
+ asChild?: boolean;
9
+ size?: TextSize;
10
+ weight?: TextWeight;
11
+ color?: AccentColor;
12
+ };
13
+ declare const TextClassContext: React.Context<string | undefined>;
14
+ type TextStyleContextValue = {
15
+ size?: TextSize;
16
+ weight?: TextWeight;
17
+ color?: string;
18
+ };
19
+ declare const TextStyleContext: React.Context<TextStyleContextValue | undefined>;
20
+ declare function Text({ className, asChild, size, weight, color, role, style, ...props }: TextProps): React.JSX.Element;
21
+ export { Text, TextClassContext, TextStyleContext };
22
+ export type { TextProps, TextSize };
23
+ //# sourceMappingURL=text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/components/text.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,cAAc,CAAC;AAE9C,KAAK,QAAQ,GAAG,MAAM,OAAO,SAAS,CAAC,UAAU,CAAC;AAClD,KAAK,UAAU,GAAG,MAAM,OAAO,SAAS,CAAC,WAAW,CAAC;AAErD,KAAK,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,GAAG;IACxF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF,QAAA,MAAM,gBAAgB,mCAAqD,CAAC;AAC5E,KAAK,qBAAqB,GAAG;IAC3B,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,QAAA,MAAM,gBAAgB,kDAAoE,CAAC;AAE3F,iBAAS,IAAI,CAAC,EACZ,SAAS,EACT,OAAe,EACf,IAAI,EACJ,MAAM,EACN,KAAK,EACL,IAAI,EACJ,KAAK,EACL,GAAG,KAAK,EACT,EAAE,SAAS,qBAqCX;AAED,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;AACpD,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC"}