@scripso-homepad/ui 0.3.6 → 0.3.7
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 +232 -78
- package/dist/index.cjs +1128 -85
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +322 -18
- package/dist/index.d.ts +322 -18
- package/dist/index.js +1107 -89
- package/dist/index.js.map +1 -1
- package/package.json +18 -6
- package/src/components/Button.stories.tsx +77 -57
- package/src/components/Button.tsx +146 -124
- package/src/components/CountryCodeSelector.stories.tsx +61 -0
- package/src/components/CountryCodeSelector.tsx +273 -0
- package/src/components/Input.stories.tsx +117 -0
- package/src/components/Input.tsx +177 -0
- package/src/components/Label.tsx +56 -0
- package/src/components/PhoneInput.stories.tsx +85 -0
- package/src/components/PhoneInput.tsx +172 -0
- package/src/data/countries.ts +98 -0
- package/src/icons/ArrowUpRightIcon.tsx +29 -0
- package/src/icons/ArrowUpRightIcon.web.tsx +35 -0
- package/src/icons/ChevronDownIcon.tsx +29 -0
- package/src/icons/ChevronDownIcon.web.tsx +35 -0
- package/src/icons/EyeIcon.tsx +48 -0
- package/src/icons/KeyIcon.tsx +36 -0
- package/src/icons/KeyIcon.web.tsx +42 -0
- package/src/icons/arrowUpRightPath.ts +2 -0
- package/src/icons/chevronDownPath.ts +1 -0
- package/src/icons/keyIconPaths.ts +5 -0
- package/src/index.ts +42 -0
- package/src/theme/input.ts +139 -0
- package/src/theme/tokens.ts +272 -0
- package/src/utils/countryDropdownScrollStyles.ts +52 -0
- package/src/utils/countryFlag.ts +9 -0
- package/src/utils/useApplyWebClassName.ts +3 -2
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import Svg, { Path } from "react-native-svg";
|
|
2
|
+
import { ARROW_UP_RIGHT_PATH } from "./arrowUpRightPath";
|
|
3
|
+
|
|
4
|
+
export { ARROW_UP_RIGHT_PATH } from "./arrowUpRightPath";
|
|
5
|
+
|
|
6
|
+
interface ArrowUpRightIconProps {
|
|
7
|
+
size?: number;
|
|
8
|
+
color?: string;
|
|
9
|
+
strokeWidth?: number;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/** Native — react-native-svg (peer dependency). */
|
|
13
|
+
export function ArrowUpRightIcon({
|
|
14
|
+
size = 20,
|
|
15
|
+
color = "#08275d",
|
|
16
|
+
strokeWidth = 2,
|
|
17
|
+
}: ArrowUpRightIconProps) {
|
|
18
|
+
return (
|
|
19
|
+
<Svg width={size} height={size} viewBox="0 0 20 20" fill="none">
|
|
20
|
+
<Path
|
|
21
|
+
d={ARROW_UP_RIGHT_PATH}
|
|
22
|
+
stroke={color}
|
|
23
|
+
strokeWidth={strokeWidth}
|
|
24
|
+
strokeLinecap="round"
|
|
25
|
+
strokeLinejoin="round"
|
|
26
|
+
/>
|
|
27
|
+
</Svg>
|
|
28
|
+
);
|
|
29
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { ARROW_UP_RIGHT_PATH } from "./arrowUpRightPath";
|
|
2
|
+
|
|
3
|
+
interface ArrowUpRightIconProps {
|
|
4
|
+
size?: number;
|
|
5
|
+
color?: string;
|
|
6
|
+
strokeWidth?: number;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/** Web / Storybook — plain SVG (no react-native-svg). */
|
|
10
|
+
export function ArrowUpRightIcon({
|
|
11
|
+
size = 20,
|
|
12
|
+
color = "#08275d",
|
|
13
|
+
strokeWidth = 2,
|
|
14
|
+
}: ArrowUpRightIconProps) {
|
|
15
|
+
return (
|
|
16
|
+
<svg
|
|
17
|
+
width={size}
|
|
18
|
+
height={size}
|
|
19
|
+
viewBox="0 0 20 20"
|
|
20
|
+
fill="none"
|
|
21
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
22
|
+
aria-hidden
|
|
23
|
+
>
|
|
24
|
+
<path
|
|
25
|
+
d={ARROW_UP_RIGHT_PATH}
|
|
26
|
+
stroke={color}
|
|
27
|
+
strokeWidth={strokeWidth}
|
|
28
|
+
strokeLinecap="round"
|
|
29
|
+
strokeLinejoin="round"
|
|
30
|
+
/>
|
|
31
|
+
</svg>
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export { ARROW_UP_RIGHT_PATH } from "./arrowUpRightPath";
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import Svg, { Path } from "react-native-svg";
|
|
2
|
+
import { CHEVRON_DOWN_PATH } from "./chevronDownPath";
|
|
3
|
+
|
|
4
|
+
export { CHEVRON_DOWN_PATH } from "./chevronDownPath";
|
|
5
|
+
|
|
6
|
+
interface ChevronDownIconProps {
|
|
7
|
+
size?: number;
|
|
8
|
+
color?: string;
|
|
9
|
+
strokeWidth?: number;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/** Native — react-native-svg (peer dependency). */
|
|
13
|
+
export function ChevronDownIcon({
|
|
14
|
+
size = 16,
|
|
15
|
+
color = "#dadde0",
|
|
16
|
+
strokeWidth = 2,
|
|
17
|
+
}: ChevronDownIconProps) {
|
|
18
|
+
return (
|
|
19
|
+
<Svg width={size} height={size} viewBox="0 0 16 16" fill="none">
|
|
20
|
+
<Path
|
|
21
|
+
d={CHEVRON_DOWN_PATH}
|
|
22
|
+
stroke={color}
|
|
23
|
+
strokeWidth={strokeWidth}
|
|
24
|
+
strokeLinecap="round"
|
|
25
|
+
strokeLinejoin="round"
|
|
26
|
+
/>
|
|
27
|
+
</Svg>
|
|
28
|
+
);
|
|
29
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { CHEVRON_DOWN_PATH } from "./chevronDownPath";
|
|
2
|
+
|
|
3
|
+
interface ChevronDownIconProps {
|
|
4
|
+
size?: number;
|
|
5
|
+
color?: string;
|
|
6
|
+
strokeWidth?: number;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/** Web / Storybook — plain SVG (no react-native-svg). */
|
|
10
|
+
export function ChevronDownIcon({
|
|
11
|
+
size = 16,
|
|
12
|
+
color = "#dadde0",
|
|
13
|
+
strokeWidth = 2,
|
|
14
|
+
}: ChevronDownIconProps) {
|
|
15
|
+
return (
|
|
16
|
+
<svg
|
|
17
|
+
width={size}
|
|
18
|
+
height={size}
|
|
19
|
+
viewBox="0 0 16 16"
|
|
20
|
+
fill="none"
|
|
21
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
22
|
+
aria-hidden
|
|
23
|
+
>
|
|
24
|
+
<path
|
|
25
|
+
d={CHEVRON_DOWN_PATH}
|
|
26
|
+
stroke={color}
|
|
27
|
+
strokeWidth={strokeWidth}
|
|
28
|
+
strokeLinecap="round"
|
|
29
|
+
strokeLinejoin="round"
|
|
30
|
+
/>
|
|
31
|
+
</svg>
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export { CHEVRON_DOWN_PATH } from "./chevronDownPath";
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { StyleSheet, View } from "react-native";
|
|
2
|
+
|
|
3
|
+
interface EyeIconProps {
|
|
4
|
+
size?: number;
|
|
5
|
+
color?: string;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
/** Minimal eye icon for input fields (no SVG dependency). */
|
|
9
|
+
export function EyeIcon({ size = 20, color = "#c7cdd1" }: EyeIconProps) {
|
|
10
|
+
const stroke = Math.max(1.5, size * 0.1);
|
|
11
|
+
const eyeWidth = size * 0.78;
|
|
12
|
+
const eyeHeight = size * 0.44;
|
|
13
|
+
|
|
14
|
+
return (
|
|
15
|
+
<View style={[styles.root, { width: size, height: size }]}>
|
|
16
|
+
<View
|
|
17
|
+
style={{
|
|
18
|
+
position: "absolute",
|
|
19
|
+
left: (size - eyeWidth) / 2,
|
|
20
|
+
top: (size - eyeHeight) / 2,
|
|
21
|
+
width: eyeWidth,
|
|
22
|
+
height: eyeHeight,
|
|
23
|
+
borderRadius: eyeHeight / 2,
|
|
24
|
+
borderWidth: stroke,
|
|
25
|
+
borderColor: color,
|
|
26
|
+
}}
|
|
27
|
+
/>
|
|
28
|
+
<View
|
|
29
|
+
style={{
|
|
30
|
+
position: "absolute",
|
|
31
|
+
left: size / 2 - size * 0.14,
|
|
32
|
+
top: size / 2 - size * 0.14,
|
|
33
|
+
width: size * 0.28,
|
|
34
|
+
height: size * 0.28,
|
|
35
|
+
borderRadius: size * 0.14,
|
|
36
|
+
borderWidth: stroke,
|
|
37
|
+
borderColor: color,
|
|
38
|
+
}}
|
|
39
|
+
/>
|
|
40
|
+
</View>
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const styles = StyleSheet.create({
|
|
45
|
+
root: {
|
|
46
|
+
position: "relative",
|
|
47
|
+
},
|
|
48
|
+
});
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import Svg, { Path } from "react-native-svg";
|
|
2
|
+
import { KEY_ICON_BODY_PATH, KEY_ICON_DOT_PATH } from "./keyIconPaths";
|
|
3
|
+
|
|
4
|
+
export { KEY_ICON_BODY_PATH, KEY_ICON_DOT_PATH } from "./keyIconPaths";
|
|
5
|
+
|
|
6
|
+
interface KeyIconProps {
|
|
7
|
+
size?: number;
|
|
8
|
+
color?: string;
|
|
9
|
+
strokeWidth?: number;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/** Native — react-native-svg (peer dependency). */
|
|
13
|
+
export function KeyIcon({
|
|
14
|
+
size = 20,
|
|
15
|
+
color = "#c7cdd1",
|
|
16
|
+
strokeWidth = 2,
|
|
17
|
+
}: KeyIconProps) {
|
|
18
|
+
return (
|
|
19
|
+
<Svg width={size} height={size} viewBox="0 0 19 19" fill="none">
|
|
20
|
+
<Path
|
|
21
|
+
d={KEY_ICON_BODY_PATH}
|
|
22
|
+
stroke={color}
|
|
23
|
+
strokeWidth={strokeWidth}
|
|
24
|
+
strokeLinecap="round"
|
|
25
|
+
strokeLinejoin="round"
|
|
26
|
+
/>
|
|
27
|
+
<Path
|
|
28
|
+
d={KEY_ICON_DOT_PATH}
|
|
29
|
+
stroke={color}
|
|
30
|
+
strokeWidth={strokeWidth}
|
|
31
|
+
strokeLinecap="round"
|
|
32
|
+
strokeLinejoin="round"
|
|
33
|
+
/>
|
|
34
|
+
</Svg>
|
|
35
|
+
);
|
|
36
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { KEY_ICON_BODY_PATH, KEY_ICON_DOT_PATH } from "./keyIconPaths";
|
|
2
|
+
|
|
3
|
+
interface KeyIconProps {
|
|
4
|
+
size?: number;
|
|
5
|
+
color?: string;
|
|
6
|
+
strokeWidth?: number;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/** Web / Storybook — plain SVG (no react-native-svg). */
|
|
10
|
+
export function KeyIcon({
|
|
11
|
+
size = 20,
|
|
12
|
+
color = "#c7cdd1",
|
|
13
|
+
strokeWidth = 2,
|
|
14
|
+
}: KeyIconProps) {
|
|
15
|
+
return (
|
|
16
|
+
<svg
|
|
17
|
+
width={size}
|
|
18
|
+
height={size}
|
|
19
|
+
viewBox="0 0 19 19"
|
|
20
|
+
fill="none"
|
|
21
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
22
|
+
aria-hidden
|
|
23
|
+
>
|
|
24
|
+
<path
|
|
25
|
+
d={KEY_ICON_BODY_PATH}
|
|
26
|
+
stroke={color}
|
|
27
|
+
strokeWidth={strokeWidth}
|
|
28
|
+
strokeLinecap="round"
|
|
29
|
+
strokeLinejoin="round"
|
|
30
|
+
/>
|
|
31
|
+
<path
|
|
32
|
+
d={KEY_ICON_DOT_PATH}
|
|
33
|
+
stroke={color}
|
|
34
|
+
strokeWidth={strokeWidth}
|
|
35
|
+
strokeLinecap="round"
|
|
36
|
+
strokeLinejoin="round"
|
|
37
|
+
/>
|
|
38
|
+
</svg>
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export { KEY_ICON_BODY_PATH, KEY_ICON_DOT_PATH } from "./keyIconPaths";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const CHEVRON_DOWN_PATH = "M4 6L8 10L12 6";
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export const KEY_ICON_BODY_PATH =
|
|
2
|
+
"M1.48833 13.8769C1.17575 14.1894 1.00009 14.6132 1 15.0552V16.8652C1 17.0862 1.0878 17.2982 1.24408 17.4545C1.40036 17.6107 1.61232 17.6985 1.83333 17.6985H4.33333C4.55435 17.6985 4.76631 17.6107 4.92259 17.4545C5.07887 17.2982 5.16667 17.0862 5.16667 16.8652V16.0319C5.16667 15.8109 5.25446 15.5989 5.41074 15.4426C5.56702 15.2863 5.77899 15.1985 6 15.1985H6.83333C7.05435 15.1985 7.26631 15.1107 7.42259 14.9545C7.57887 14.7982 7.66667 14.5862 7.66667 14.3652V13.5319C7.66667 13.3109 7.75446 13.0989 7.91074 12.9426C8.06702 12.7863 8.27899 12.6985 8.5 12.6985H8.64333C9.08532 12.6984 9.50918 12.5228 9.82167 12.2102L10.5 11.5319C11.6582 11.9353 12.919 11.9338 14.0762 11.5275C15.2334 11.1212 16.2185 10.3342 16.8703 9.29531C17.5221 8.25638 17.802 7.02702 17.6643 5.80832C17.5265 4.58962 16.9793 3.45375 16.112 2.58651C15.2448 1.71928 14.1089 1.17202 12.8902 1.03428C11.6715 0.896534 10.4422 1.17645 9.40323 1.82824C8.3643 2.48003 7.57733 3.4651 7.17104 4.6223C6.76475 5.77951 6.76321 7.04034 7.16667 8.19854L1.48833 13.8769Z";
|
|
3
|
+
|
|
4
|
+
export const KEY_ICON_DOT_PATH =
|
|
5
|
+
"M13.0833 6.03187C13.3135 6.03187 13.5 5.84532 13.5 5.61521C13.5 5.38509 13.3135 5.19854 13.0833 5.19854C12.8532 5.19854 12.6667 5.38509 12.6667 5.61521C12.6667 5.84532 12.8532 6.03187 13.0833 6.03187Z";
|
package/src/index.ts
CHANGED
|
@@ -4,3 +4,45 @@ export type {
|
|
|
4
4
|
ButtonSize,
|
|
5
5
|
ButtonVariant,
|
|
6
6
|
} from "./components/Button";
|
|
7
|
+
|
|
8
|
+
export { Input } from "./components/Input";
|
|
9
|
+
export type { InputProps } from "./components/Input";
|
|
10
|
+
|
|
11
|
+
export { PhoneInput } from "./components/PhoneInput";
|
|
12
|
+
export type { PhoneInputProps } from "./components/PhoneInput";
|
|
13
|
+
|
|
14
|
+
export { CountryCodeSelector } from "./components/CountryCodeSelector";
|
|
15
|
+
export type { CountryCodeSelectorProps } from "./components/CountryCodeSelector";
|
|
16
|
+
|
|
17
|
+
export {
|
|
18
|
+
countries,
|
|
19
|
+
defaultCountry,
|
|
20
|
+
findCountry,
|
|
21
|
+
} from "./data/countries";
|
|
22
|
+
export type { Country } from "./data/countries";
|
|
23
|
+
|
|
24
|
+
export { Label } from "./components/Label";
|
|
25
|
+
export type { LabelProps } from "./components/Label";
|
|
26
|
+
|
|
27
|
+
export {
|
|
28
|
+
colors,
|
|
29
|
+
brand,
|
|
30
|
+
emeraldGreen,
|
|
31
|
+
navy,
|
|
32
|
+
rubyRed,
|
|
33
|
+
stormGray,
|
|
34
|
+
buttonTypography,
|
|
35
|
+
labelTypography,
|
|
36
|
+
fonts,
|
|
37
|
+
fontSize,
|
|
38
|
+
fontWeight,
|
|
39
|
+
radii,
|
|
40
|
+
shadows,
|
|
41
|
+
spacing,
|
|
42
|
+
} from "./theme/tokens";
|
|
43
|
+
export type {
|
|
44
|
+
EmeraldGreenStep,
|
|
45
|
+
NavyStep,
|
|
46
|
+
RubyRedStep,
|
|
47
|
+
StormGrayStep,
|
|
48
|
+
} from "./theme/tokens";
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { Platform, StyleSheet, type TextStyle, type ViewStyle } from "react-native";
|
|
2
|
+
import { colors, fonts, fontSize, fontWeight, radii } from "./tokens";
|
|
3
|
+
|
|
4
|
+
export const INPUT_HEIGHT = 52;
|
|
5
|
+
export const INPUT_ICON_SIZE = 20;
|
|
6
|
+
export const INPUT_ICON_GAP = 10;
|
|
7
|
+
export const INPUT_OUTLINE_WIDTH = 2;
|
|
8
|
+
|
|
9
|
+
export type InputVisualState =
|
|
10
|
+
| "default"
|
|
11
|
+
| "focused"
|
|
12
|
+
| "error"
|
|
13
|
+
| "disabled";
|
|
14
|
+
|
|
15
|
+
export interface InputStateFlags {
|
|
16
|
+
focused?: boolean;
|
|
17
|
+
error?: boolean;
|
|
18
|
+
disabled?: boolean;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export function resolveInputVisualState({
|
|
22
|
+
focused = false,
|
|
23
|
+
error = false,
|
|
24
|
+
disabled = false,
|
|
25
|
+
}: InputStateFlags): InputVisualState {
|
|
26
|
+
if (disabled) return "disabled";
|
|
27
|
+
if (error) return "error";
|
|
28
|
+
if (focused) return "focused";
|
|
29
|
+
return "default";
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
interface FieldStyleSet {
|
|
33
|
+
container: ViewStyle;
|
|
34
|
+
outline: ViewStyle;
|
|
35
|
+
text: TextStyle;
|
|
36
|
+
placeholder: string;
|
|
37
|
+
icon: string;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export function getInputFieldStyles(state: InputVisualState): FieldStyleSet {
|
|
41
|
+
const outlineBase: ViewStyle = {
|
|
42
|
+
borderRadius: radii.lg + INPUT_OUTLINE_WIDTH,
|
|
43
|
+
padding: INPUT_OUTLINE_WIDTH,
|
|
44
|
+
backgroundColor: colors.transparent,
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
switch (state) {
|
|
48
|
+
case "disabled":
|
|
49
|
+
return {
|
|
50
|
+
outline: outlineBase,
|
|
51
|
+
container: {
|
|
52
|
+
borderWidth: 1,
|
|
53
|
+
borderColor: colors.stormGray50,
|
|
54
|
+
backgroundColor: colors.stormGray50,
|
|
55
|
+
},
|
|
56
|
+
text: { color: colors.stormGray300 },
|
|
57
|
+
placeholder: colors.stormGray300,
|
|
58
|
+
icon: colors.stormGray150,
|
|
59
|
+
};
|
|
60
|
+
case "error":
|
|
61
|
+
return {
|
|
62
|
+
outline: {
|
|
63
|
+
...outlineBase,
|
|
64
|
+
backgroundColor: colors.inputOutlineError,
|
|
65
|
+
},
|
|
66
|
+
container: {
|
|
67
|
+
borderWidth: 1,
|
|
68
|
+
borderColor: colors.inputError,
|
|
69
|
+
backgroundColor: colors.white,
|
|
70
|
+
},
|
|
71
|
+
text: { color: colors.inputError },
|
|
72
|
+
placeholder: colors.stormGray200,
|
|
73
|
+
icon: colors.inputError,
|
|
74
|
+
};
|
|
75
|
+
case "focused":
|
|
76
|
+
return {
|
|
77
|
+
outline: {
|
|
78
|
+
...outlineBase,
|
|
79
|
+
backgroundColor: colors.inputOutlineFocus,
|
|
80
|
+
},
|
|
81
|
+
container: {
|
|
82
|
+
borderWidth: 1,
|
|
83
|
+
borderColor: colors.navy,
|
|
84
|
+
backgroundColor: colors.white,
|
|
85
|
+
},
|
|
86
|
+
text: { color: colors.slateBlue },
|
|
87
|
+
placeholder: colors.stormGray200,
|
|
88
|
+
icon: colors.navy,
|
|
89
|
+
};
|
|
90
|
+
default:
|
|
91
|
+
return {
|
|
92
|
+
outline: outlineBase,
|
|
93
|
+
container: {
|
|
94
|
+
borderWidth: 1,
|
|
95
|
+
borderColor: colors.stormGray50,
|
|
96
|
+
backgroundColor: colors.white,
|
|
97
|
+
},
|
|
98
|
+
text: { color: colors.slateBlue },
|
|
99
|
+
placeholder: colors.stormGray200,
|
|
100
|
+
icon: colors.stormGray150,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export const inputFieldMetrics = StyleSheet.create({
|
|
106
|
+
container: {
|
|
107
|
+
flexDirection: "row",
|
|
108
|
+
alignItems: "center",
|
|
109
|
+
height: INPUT_HEIGHT,
|
|
110
|
+
minHeight: INPUT_HEIGHT,
|
|
111
|
+
maxHeight: INPUT_HEIGHT,
|
|
112
|
+
borderRadius: radii.lg,
|
|
113
|
+
padding: 16,
|
|
114
|
+
gap: INPUT_ICON_GAP,
|
|
115
|
+
...(Platform.OS === "web"
|
|
116
|
+
? ({ boxSizing: "border-box" } as ViewStyle)
|
|
117
|
+
: null),
|
|
118
|
+
},
|
|
119
|
+
input: {
|
|
120
|
+
flex: 1,
|
|
121
|
+
alignSelf: "stretch",
|
|
122
|
+
fontFamily: fonts.sans,
|
|
123
|
+
fontSize: fontSize.md,
|
|
124
|
+
fontWeight: fontWeight.medium,
|
|
125
|
+
lineHeight: fontSize.md,
|
|
126
|
+
paddingVertical: 0,
|
|
127
|
+
paddingHorizontal: 0,
|
|
128
|
+
margin: 0,
|
|
129
|
+
borderWidth: 0,
|
|
130
|
+
backgroundColor: colors.transparent,
|
|
131
|
+
...(Platform.OS === "web"
|
|
132
|
+
? ({
|
|
133
|
+
height: "100%",
|
|
134
|
+
minHeight: 0,
|
|
135
|
+
outlineStyle: "none",
|
|
136
|
+
} as TextStyle)
|
|
137
|
+
: null),
|
|
138
|
+
},
|
|
139
|
+
});
|