@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.
- package/README.md +102 -0
- package/dist/components/accordion.d.ts +21 -0
- package/dist/components/accordion.d.ts.map +1 -0
- package/dist/components/accordion.js +94 -0
- package/dist/components/accordion.js.map +1 -0
- package/dist/components/alert-dialog.d.ts +67 -0
- package/dist/components/alert-dialog.d.ts.map +1 -0
- package/dist/components/alert-dialog.js +170 -0
- package/dist/components/alert-dialog.js.map +1 -0
- package/dist/components/aspect-ratio.d.ts +4 -0
- package/dist/components/aspect-ratio.d.ts.map +1 -0
- package/dist/components/aspect-ratio.js +4 -0
- package/dist/components/aspect-ratio.js.map +1 -0
- package/dist/components/avatar.d.ts +23 -0
- package/dist/components/avatar.d.ts.map +1 -0
- package/dist/components/avatar.js +143 -0
- package/dist/components/avatar.js.map +1 -0
- package/dist/components/badge.d.ts +17 -0
- package/dist/components/badge.d.ts.map +1 -0
- package/dist/components/badge.js +95 -0
- package/dist/components/badge.js.map +1 -0
- package/dist/components/button.d.ts +14 -0
- package/dist/components/button.d.ts.map +1 -0
- package/dist/components/button.js +85 -0
- package/dist/components/button.js.map +1 -0
- package/dist/components/callout.d.ts +25 -0
- package/dist/components/callout.d.ts.map +1 -0
- package/dist/components/callout.js +146 -0
- package/dist/components/callout.js.map +1 -0
- package/dist/components/card.d.ts +10 -0
- package/dist/components/card.d.ts.map +1 -0
- package/dist/components/card.js +41 -0
- package/dist/components/card.js.map +1 -0
- package/dist/components/checkbox.d.ts +13 -0
- package/dist/components/checkbox.d.ts.map +1 -0
- package/dist/components/checkbox.js +116 -0
- package/dist/components/checkbox.js.map +1 -0
- package/dist/components/code.d.ts +20 -0
- package/dist/components/code.d.ts.map +1 -0
- package/dist/components/code.js +83 -0
- package/dist/components/code.js.map +1 -0
- package/dist/components/context-menu.d.ts +65 -0
- package/dist/components/context-menu.d.ts.map +1 -0
- package/dist/components/context-menu.js +441 -0
- package/dist/components/context-menu.js.map +1 -0
- package/dist/components/dialog.d.ts +49 -0
- package/dist/components/dialog.d.ts.map +1 -0
- package/dist/components/dialog.js +141 -0
- package/dist/components/dialog.js.map +1 -0
- package/dist/components/dropdown-menu.d.ts +65 -0
- package/dist/components/dropdown-menu.d.ts.map +1 -0
- package/dist/components/dropdown-menu.js +441 -0
- package/dist/components/dropdown-menu.js.map +1 -0
- package/dist/components/heading.d.ts +15 -0
- package/dist/components/heading.d.ts.map +1 -0
- package/dist/components/heading.js +8 -0
- package/dist/components/heading.js.map +1 -0
- package/dist/components/hover-card.d.ts +24 -0
- package/dist/components/hover-card.d.ts.map +1 -0
- package/dist/components/hover-card.js +49 -0
- package/dist/components/hover-card.js.map +1 -0
- package/dist/components/icon-button.d.ts +14 -0
- package/dist/components/icon-button.d.ts.map +1 -0
- package/dist/components/icon-button.js +85 -0
- package/dist/components/icon-button.js.map +1 -0
- package/dist/components/icon.d.ts +28 -0
- package/dist/components/icon.d.ts.map +1 -0
- package/dist/components/icon.js +45 -0
- package/dist/components/icon.js.map +1 -0
- package/dist/components/index.d.ts +33 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +45 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/label.d.ts +8 -0
- package/dist/components/label.d.ts.map +1 -0
- package/dist/components/label.js +26 -0
- package/dist/components/label.js.map +1 -0
- package/dist/components/native-only-animated-view.d.ts +223 -0
- package/dist/components/native-only-animated-view.d.ts.map +1 -0
- package/dist/components/native-only-animated-view.js +26 -0
- package/dist/components/native-only-animated-view.js.map +1 -0
- package/dist/components/popover.d.ts +24 -0
- package/dist/components/popover.d.ts.map +1 -0
- package/dist/components/popover.js +52 -0
- package/dist/components/popover.js.map +1 -0
- package/dist/components/progress.d.ts +15 -0
- package/dist/components/progress.d.ts.map +1 -0
- package/dist/components/progress.js +68 -0
- package/dist/components/progress.js.map +1 -0
- package/dist/components/radio-group.d.ts +19 -0
- package/dist/components/radio-group.d.ts.map +1 -0
- package/dist/components/radio-group.js +138 -0
- package/dist/components/radio-group.js.map +1 -0
- package/dist/components/segmented-control.d.ts +21 -0
- package/dist/components/segmented-control.d.ts.map +1 -0
- package/dist/components/segmented-control.js +113 -0
- package/dist/components/segmented-control.js.map +1 -0
- package/dist/components/select.d.ts +58 -0
- package/dist/components/select.d.ts.map +1 -0
- package/dist/components/select.js +493 -0
- package/dist/components/select.js.map +1 -0
- package/dist/components/separator.d.ts +12 -0
- package/dist/components/separator.d.ts.map +1 -0
- package/dist/components/separator.js +64 -0
- package/dist/components/separator.js.map +1 -0
- package/dist/components/skeleton.d.ts +28 -0
- package/dist/components/skeleton.d.ts.map +1 -0
- package/dist/components/skeleton.js +153 -0
- package/dist/components/skeleton.js.map +1 -0
- package/dist/components/spinner.d.ts +17 -0
- package/dist/components/spinner.d.ts.map +1 -0
- package/dist/components/spinner.js +199 -0
- package/dist/components/spinner.js.map +1 -0
- package/dist/components/switch.d.ts +13 -0
- package/dist/components/switch.d.ts.map +1 -0
- package/dist/components/switch.js +204 -0
- package/dist/components/switch.js.map +1 -0
- package/dist/components/tabs.d.ts +25 -0
- package/dist/components/tabs.d.ts.map +1 -0
- package/dist/components/tabs.js +124 -0
- package/dist/components/tabs.js.map +1 -0
- package/dist/components/text-area.d.ts +16 -0
- package/dist/components/text-area.d.ts.map +1 -0
- package/dist/components/text-area.js +117 -0
- package/dist/components/text-area.js.map +1 -0
- package/dist/components/text-field.d.ts +35 -0
- package/dist/components/text-field.d.ts.map +1 -0
- package/dist/components/text-field.js +256 -0
- package/dist/components/text-field.js.map +1 -0
- package/dist/components/text.d.ts +23 -0
- package/dist/components/text.d.ts.map +1 -0
- package/dist/components/text.js +33 -0
- package/dist/components/text.js.map +1 -0
- package/dist/components/tooltip.d.ts +24 -0
- package/dist/components/tooltip.d.ts.map +1 -0
- package/dist/components/tooltip.js +63 -0
- package/dist/components/tooltip.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/button-styles.d.ts +13 -0
- package/dist/lib/button-styles.d.ts.map +1 -0
- package/dist/lib/button-styles.js +131 -0
- package/dist/lib/button-styles.js.map +1 -0
- package/dist/lib/color-utils.d.ts +21 -0
- package/dist/lib/color-utils.d.ts.map +1 -0
- package/dist/lib/color-utils.js +84 -0
- package/dist/lib/color-utils.js.map +1 -0
- package/dist/lib/dialog-styles.d.ts +42 -0
- package/dist/lib/dialog-styles.d.ts.map +1 -0
- package/dist/lib/dialog-styles.js +162 -0
- package/dist/lib/dialog-styles.js.map +1 -0
- package/dist/lib/native-colors.d.ts +8 -0
- package/dist/lib/native-colors.d.ts.map +1 -0
- package/dist/lib/native-colors.js +67 -0
- package/dist/lib/native-colors.js.map +1 -0
- package/dist/lib/panel-styles.d.ts +32 -0
- package/dist/lib/panel-styles.d.ts.map +1 -0
- package/dist/lib/panel-styles.js +96 -0
- package/dist/lib/panel-styles.js.map +1 -0
- package/dist/lib/text-input-styles.d.ts +35 -0
- package/dist/lib/text-input-styles.d.ts.map +1 -0
- package/dist/lib/text-input-styles.js +107 -0
- package/dist/lib/text-input-styles.js.map +1 -0
- package/dist/lib/theme-vars.d.ts +222 -0
- package/dist/lib/theme-vars.d.ts.map +1 -0
- package/dist/lib/theme-vars.js +173 -0
- package/dist/lib/theme-vars.js.map +1 -0
- package/dist/lib/theme.d.ts +57 -0
- package/dist/lib/theme.d.ts.map +1 -0
- package/dist/lib/theme.js +80 -0
- package/dist/lib/theme.js.map +1 -0
- package/dist/lib/types.d.ts +14 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +2 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/lib/use-theme-vars.d.ts +325 -0
- package/dist/lib/use-theme-vars.d.ts.map +1 -0
- package/dist/lib/use-theme-vars.js +17 -0
- package/dist/lib/use-theme-vars.js.map +1 -0
- package/dist/lib/utils.d.ts +3 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +17 -0
- package/dist/lib/utils.js.map +1 -0
- package/global.css +1813 -0
- package/package.json +114 -0
- 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"}
|