@ecohouse/ui 0.1.0 → 0.1.2

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 (99) hide show
  1. package/README.md +239 -36
  2. package/dist/index.cjs +649 -314
  3. package/dist/index.cjs.map +1 -1
  4. package/dist/index.d.cts +181 -258
  5. package/dist/index.d.ts +181 -258
  6. package/dist/index.js +626 -304
  7. package/dist/index.js.map +1 -1
  8. package/package.json +5 -7
  9. package/src/components/Button/Button.stories.tsx +98 -0
  10. package/src/components/{Button.tsx → Button/Button.tsx} +39 -71
  11. package/src/components/Button/index.ts +2 -0
  12. package/src/components/Input/Input.stories.tsx +118 -0
  13. package/src/components/Input/Input.tsx +327 -0
  14. package/src/components/Input/index.ts +2 -0
  15. package/src/components/index.ts +5 -0
  16. package/src/icons/{ArrowUpRightIcon.tsx → ArrowRight/ArrowRightIcon.tsx} +8 -7
  17. package/src/icons/{ArrowUpRightIcon.web.tsx → ArrowRight/ArrowRightIcon.web.tsx} +8 -7
  18. package/src/icons/ArrowRight/arrowRightPath.ts +2 -0
  19. package/src/icons/ArrowRight/index.ts +1 -0
  20. package/src/icons/Bag/BagIcon.tsx +20 -0
  21. package/src/icons/Bag/BagIcon.web.tsx +26 -0
  22. package/src/icons/Bag/bagPath.ts +2 -0
  23. package/src/icons/Bag/index.ts +1 -0
  24. package/src/icons/Bell/BellIcon.tsx +20 -0
  25. package/src/icons/Bell/BellIcon.web.tsx +26 -0
  26. package/src/icons/Bell/bellPath.ts +2 -0
  27. package/src/icons/Bell/index.ts +1 -0
  28. package/src/icons/Building/BuildingIcon.tsx +20 -0
  29. package/src/icons/Building/BuildingIcon.web.tsx +26 -0
  30. package/src/icons/Building/buildingPath.ts +2 -0
  31. package/src/icons/Building/index.ts +1 -0
  32. package/src/icons/Camera/CameraIcon.tsx +20 -0
  33. package/src/icons/Camera/CameraIcon.web.tsx +26 -0
  34. package/src/icons/Camera/cameraPath.ts +2 -0
  35. package/src/icons/Camera/index.ts +1 -0
  36. package/src/icons/CheckBadge/CheckBadgeIcon.tsx +20 -0
  37. package/src/icons/CheckBadge/CheckBadgeIcon.web.tsx +26 -0
  38. package/src/icons/CheckBadge/checkBadgePath.ts +2 -0
  39. package/src/icons/CheckBadge/index.ts +1 -0
  40. package/src/icons/Clock/ClockIcon.tsx +20 -0
  41. package/src/icons/Clock/ClockIcon.web.tsx +26 -0
  42. package/src/icons/Clock/clockPath.ts +2 -0
  43. package/src/icons/Clock/index.ts +1 -0
  44. package/src/icons/Facebook/FacebookIcon.tsx +14 -0
  45. package/src/icons/Facebook/FacebookIcon.web.tsx +20 -0
  46. package/src/icons/Facebook/facebookPath.ts +2 -0
  47. package/src/icons/Facebook/index.ts +1 -0
  48. package/src/icons/Home/HomeIcon.tsx +20 -0
  49. package/src/icons/Home/HomeIcon.web.tsx +26 -0
  50. package/src/icons/Home/homePath.ts +2 -0
  51. package/src/icons/Home/index.ts +1 -0
  52. package/src/icons/Icon.tsx +11 -0
  53. package/src/icons/Icons.stories.tsx +174 -0
  54. package/src/icons/Instagram/InstagramIcon.tsx +14 -0
  55. package/src/icons/Instagram/InstagramIcon.web.tsx +20 -0
  56. package/src/icons/Instagram/index.ts +1 -0
  57. package/src/icons/Instagram/instagramPath.ts +2 -0
  58. package/src/icons/Key/KeyIcon.tsx +20 -0
  59. package/src/icons/Key/KeyIcon.web.tsx +26 -0
  60. package/src/icons/Key/index.ts +1 -0
  61. package/src/icons/Key/keyPath.ts +2 -0
  62. package/src/icons/LinkedIn/LinkedInIcon.tsx +14 -0
  63. package/src/icons/LinkedIn/LinkedInIcon.web.tsx +20 -0
  64. package/src/icons/LinkedIn/index.ts +1 -0
  65. package/src/icons/LinkedIn/linkedinPath.ts +2 -0
  66. package/src/icons/Mail/MailIcon.tsx +20 -0
  67. package/src/icons/Mail/MailIcon.web.tsx +26 -0
  68. package/src/icons/Mail/index.ts +1 -0
  69. package/src/icons/Mail/mailPath.ts +2 -0
  70. package/src/icons/Navigate/NavigateIcon.tsx +20 -0
  71. package/src/icons/Navigate/NavigateIcon.web.tsx +26 -0
  72. package/src/icons/Navigate/index.ts +1 -0
  73. package/src/icons/Navigate/navigatePath.ts +2 -0
  74. package/src/icons/Phone/PhoneIcon.tsx +20 -0
  75. package/src/icons/Phone/PhoneIcon.web.tsx +26 -0
  76. package/src/icons/Phone/index.ts +1 -0
  77. package/src/icons/Phone/phonePath.ts +2 -0
  78. package/src/icons/Show/ShowIcon.tsx +33 -0
  79. package/src/icons/Show/ShowIcon.web.tsx +39 -0
  80. package/src/icons/Show/index.ts +1 -0
  81. package/src/icons/Show/showPath.ts +6 -0
  82. package/src/icons/User/UserIcon.tsx +26 -0
  83. package/src/icons/User/UserIcon.web.tsx +32 -0
  84. package/src/icons/User/index.ts +1 -0
  85. package/src/icons/User/userPath.ts +3 -0
  86. package/src/icons/index.ts +24 -0
  87. package/src/icons/registry.ts +58 -0
  88. package/src/icons/types.ts +9 -0
  89. package/src/index.ts +37 -21
  90. package/src/theme/colors.test.ts +12 -0
  91. package/src/theme/colors.ts +46 -0
  92. package/src/theme/index.ts +4 -0
  93. package/src/theme/typography.ts +46 -0
  94. package/src/web/styles/fonts.css +1 -0
  95. package/src/web/styles/typography.css +14 -92
  96. package/src/components/Button.stories.tsx +0 -135
  97. package/src/icons/arrowUpRightPath.ts +0 -1
  98. package/src/theme/tokens.test.ts +0 -10
  99. package/src/theme/tokens.ts +0 -286
@@ -1,99 +1,21 @@
1
- @layer components {
2
- .typography-12 {
3
- font-family: var(--font-sans, "Noto Sans Armenian", ui-sans-serif, system-ui, sans-serif);
4
- font-size: 12px;
5
- line-height: 16px;
6
- letter-spacing: 0;
7
- }
8
-
9
- .typography-14 {
10
- font-family: var(--font-sans, "Noto Sans Armenian", ui-sans-serif, system-ui, sans-serif);
11
- font-size: 14px;
12
- line-height: 19px;
13
- letter-spacing: 0;
14
- }
15
-
16
- .typography-18 {
17
- font-family: var(--font-sans, "Noto Sans Armenian", ui-sans-serif, system-ui, sans-serif);
18
- font-size: 18px;
19
- line-height: 24px;
20
- letter-spacing: 0;
21
- }
22
-
23
- .typography-20 {
24
- font-family: var(--font-sans, "Noto Sans Armenian", ui-sans-serif, system-ui, sans-serif);
25
- font-size: 20px;
26
- line-height: 27px;
27
- letter-spacing: 0;
28
- }
29
-
30
- .typography-24 {
31
- font-family: var(--font-sans, "Noto Sans Armenian", ui-sans-serif, system-ui, sans-serif);
32
- font-size: 24px;
33
- line-height: 25px;
34
- letter-spacing: 0;
35
- }
36
-
37
- .typography-32 {
38
- font-family: var(--font-sans, "Noto Sans Armenian", ui-sans-serif, system-ui, sans-serif);
39
- font-size: 32px;
40
- line-height: 34px;
41
- letter-spacing: 0;
42
- }
43
-
44
- .typography-body {
45
- font-family: var(--font-sans, "Noto Sans Armenian", ui-sans-serif, system-ui, sans-serif);
46
- font-size: 14px;
47
- line-height: 19px;
48
- letter-spacing: 0;
49
- font-weight: 400;
50
- }
1
+ :root {
2
+ --font-sans: "Noto Sans Armenian", ui-sans-serif, system-ui, sans-serif;
3
+ }
51
4
 
52
- .typography-body-medium {
53
- font-family: var(--font-sans, "Noto Sans Armenian", ui-sans-serif, system-ui, sans-serif);
5
+ @layer components {
6
+ .typography-button-lg {
7
+ font-family: var(--font-sans);
54
8
  font-size: 14px;
55
- line-height: 19px;
56
- letter-spacing: 0;
57
- font-weight: 500;
9
+ font-weight: 600;
10
+ line-height: 100%;
11
+ letter-spacing: 0.03em;
58
12
  }
59
13
 
60
- .typography-caption {
61
- font-family: var(--font-sans, "Noto Sans Armenian", ui-sans-serif, system-ui, sans-serif);
14
+ .typography-button-sm {
15
+ font-family: var(--font-sans);
62
16
  font-size: 12px;
63
- line-height: 16px;
64
- letter-spacing: 0;
65
- font-weight: 400;
66
- }
67
-
68
- .typography-title-sm {
69
- font-family: var(--font-sans, "Noto Sans Armenian", ui-sans-serif, system-ui, sans-serif);
70
- font-size: 18px;
71
- line-height: 24px;
72
- letter-spacing: 0;
73
- font-weight: 700;
74
- }
75
-
76
- .typography-title {
77
- font-family: var(--font-sans, "Noto Sans Armenian", ui-sans-serif, system-ui, sans-serif);
78
- font-size: 20px;
79
- line-height: 27px;
80
- letter-spacing: 0;
81
- font-weight: 700;
82
- }
83
-
84
- .typography-title-lg {
85
- font-family: var(--font-sans, "Noto Sans Armenian", ui-sans-serif, system-ui, sans-serif);
86
- font-size: 24px;
87
- line-height: 25px;
88
- letter-spacing: 0;
89
- font-weight: 700;
90
- }
91
-
92
- .typography-display {
93
- font-family: var(--font-sans, "Noto Sans Armenian", ui-sans-serif, system-ui, sans-serif);
94
- font-size: 32px;
95
- line-height: 34px;
96
- letter-spacing: 0;
97
- font-weight: 700;
17
+ font-weight: 600;
18
+ line-height: 100%;
19
+ letter-spacing: 0.03em;
98
20
  }
99
21
  }
@@ -1,135 +0,0 @@
1
- import type { Meta, StoryObj } from "@storybook/react";
2
- import { fn } from "@storybook/test";
3
- import { View, StyleSheet, Text } from "react-native";
4
- import { Button } from "./Button";
5
-
6
- const meta = {
7
- title: "Components/Button",
8
- component: Button,
9
- args: {
10
- title: "Button",
11
- onPress: fn(),
12
- disabled: false,
13
- variant: "primary",
14
- size: "lg",
15
- showIcon: false,
16
- },
17
- argTypes: {
18
- onPress: { action: "pressed" },
19
- variant: {
20
- control: "select",
21
- options: ["white", "primary", "green", "gray"],
22
- },
23
- size: {
24
- control: "select",
25
- options: ["lg", "sm"],
26
- },
27
- },
28
- } satisfies Meta<typeof Button>;
29
-
30
- export default meta;
31
- type Story = StoryObj<typeof meta>;
32
-
33
- export const Default: Story = {};
34
-
35
- export const WithIcon: Story = {
36
- args: { showIcon: true, className: "w-full" },
37
- };
38
-
39
- export const WithCustomIcon: Story = {
40
- args: {
41
- title: "Custom icon",
42
- showIcon: true,
43
- icon: <Text style={{ fontSize: 16 }}>★</Text>,
44
- className: "w-full",
45
- },
46
- };
47
-
48
- export const WithClassName: Story = {
49
- args: {
50
- showIcon: true,
51
- className: "w-full max-w-md",
52
- },
53
- };
54
-
55
- export const AllVariants: Story = {
56
- render: () => (
57
- <View style={storyStyles.column}>
58
- <Button title="Button" variant="gray" onPress={fn()} />
59
- <Button title="Button" variant="white" onPress={fn()} />
60
- <Button title="Button" variant="primary" onPress={fn()} />
61
- <Button title="Button" variant="green" onPress={fn()} />
62
- </View>
63
- ),
64
- };
65
-
66
- export const AllVariantsWithIcon: Story = {
67
- render: () => (
68
- <View style={storyStyles.column}>
69
- <Button title="Button" variant="gray" showIcon onPress={fn()} />
70
- <Button title="Button" variant="white" showIcon onPress={fn()} />
71
- <Button title="Button" variant="primary" showIcon onPress={fn()} />
72
- <Button title="Button" variant="green" showIcon onPress={fn()} />
73
- </View>
74
- ),
75
- };
76
-
77
- export const Disabled: Story = {
78
- render: () => (
79
- <View style={storyStyles.grid}>
80
- <View style={storyStyles.column}>
81
- <Button title="Button" variant="gray" onPress={fn()} />
82
- <Button title="Button" variant="white" onPress={fn()} />
83
- <Button title="Button" variant="primary" onPress={fn()} />
84
- <Button title="Button" variant="green" onPress={fn()} />
85
- </View>
86
- <View style={storyStyles.column}>
87
- <Button title="Button" variant="gray" disabled onPress={fn()} />
88
- <Button title="Button" variant="white" disabled onPress={fn()} />
89
- <Button title="Button" variant="primary" disabled onPress={fn()} />
90
- <Button title="Button" variant="green" disabled onPress={fn()} />
91
- </View>
92
- </View>
93
- ),
94
- };
95
-
96
- export const DisabledWithIcon: Story = {
97
- render: () => (
98
- <View style={storyStyles.grid}>
99
- <View style={storyStyles.column}>
100
- <Button title="Button" variant="gray" showIcon onPress={fn()} />
101
- <Button title="Button" variant="white" showIcon onPress={fn()} />
102
- <Button title="Button" variant="primary" showIcon onPress={fn()} />
103
- <Button title="Button" variant="green" showIcon onPress={fn()} />
104
- </View>
105
- <View style={storyStyles.column}>
106
- <Button title="Button" variant="gray" showIcon disabled onPress={fn()} />
107
- <Button title="Button" variant="white" showIcon disabled onPress={fn()} />
108
- <Button title="Button" variant="primary" showIcon disabled onPress={fn()} />
109
- <Button title="Button" variant="green" showIcon disabled onPress={fn()} />
110
- </View>
111
- </View>
112
- ),
113
- };
114
-
115
- export const Sizes: Story = {
116
- render: () => (
117
- <View style={storyStyles.column}>
118
- <Button title="Large" size="lg" showIcon onPress={fn()} />
119
- <Button title="Small" size="sm" showIcon onPress={fn()} />
120
- <Button title="Large" size="lg" onPress={fn()} />
121
- <Button title="Small" size="sm" onPress={fn()} />
122
- </View>
123
- ),
124
- };
125
-
126
- const storyStyles = StyleSheet.create({
127
- column: {
128
- gap: 12,
129
- width: 320,
130
- },
131
- grid: {
132
- flexDirection: "row",
133
- gap: 24,
134
- },
135
- });
@@ -1 +0,0 @@
1
- export const ARROW_UP_RIGHT_PATH = "M14.1667 14.1668V5.8335H5.83333M14.1667 5.8335L5.83333 14.1668";
@@ -1,10 +0,0 @@
1
- import { describe, expect, it } from "vitest";
2
- import { buttonTypography, colors } from "../theme/tokens";
3
-
4
- describe("design tokens", () => {
5
- it("exposes navy and button typography used by Button", () => {
6
- expect(colors.navy).toMatch(/^#/);
7
- expect(buttonTypography.lg.fontSize).toBe(14);
8
- expect(buttonTypography.sm.fontSize).toBe(12);
9
- });
10
- });
@@ -1,286 +0,0 @@
1
- /**
2
- * EcoHouse design tokens — aligned with the shared design system
3
- * (navy / storm gray / slate-blue palette).
4
- */
5
-
6
- /** Storm Gray scale — Figma steps 0 → 8.5 */
7
- export const stormGray = {
8
- "0": "#fbfcfc",
9
- "0.5": "#eceef0",
10
- "1": "#dadde0",
11
- "1.5": "#c7cdd1",
12
- "2": "#b5bcc1",
13
- "3": "#8f9aa3",
14
- "4": "#6a7984",
15
- "5": "#455765",
16
- "6": "#374651",
17
- "7": "#29343d",
18
- "8": "#1c2328",
19
- "8.5": "#151a1e",
20
- } as const;
21
-
22
- export type StormGrayStep = keyof typeof stormGray;
23
-
24
- /** Navy scale — Figma steps 0 → 8.5 */
25
- export const navy = {
26
- "0": "#f6fafe",
27
- "0.5": "#dee5eb",
28
- "1": "#c6d0d8",
29
- "1.5": "#afbac5",
30
- "2": "#97a5b2",
31
- "3": "#677b8c",
32
- "4": "#385066",
33
- "5": "#082640",
34
- "6": "#061e33",
35
- "7": "#051726",
36
- "8": "#030f1a",
37
- "8.5": "#020b13",
38
- } as const;
39
-
40
- export type NavyStep = keyof typeof navy;
41
-
42
- /** Ruby Red scale — Figma steps 0 → 8.5 */
43
- export const rubyRed = {
44
- "0": "#fff5f6",
45
- "0.5": "#f7dddf",
46
- "1": "#efc4c8",
47
- "1.5": "#e7acb1",
48
- "2": "#df939a",
49
- "3": "#ce626d",
50
- "4": "#be313f",
51
- "5": "#ae0011",
52
- "6": "#8b000e",
53
- "7": "#68000a",
54
- "8": "#460007",
55
- "8.5": "#340005",
56
- } as const;
57
-
58
- export type RubyRedStep = keyof typeof rubyRed;
59
-
60
- /** Emerald Green scale — Figma steps 0 → 8.5 */
61
- export const emeraldGreen = {
62
- "0": "#f0fbf5",
63
- "0.5": "#dcf2e5",
64
- "1": "#c8e8d5",
65
- "1.5": "#b4dfc5",
66
- "2": "#a0d5b5",
67
- "3": "#77c394",
68
- "4": "#4fb074",
69
- "5": "#279d54",
70
- "6": "#1f7e43",
71
- "7": "#175e32",
72
- "8": "#103f22",
73
- "8.5": "#0c2f19",
74
- } as const;
75
-
76
- export type EmeraldGreenStep = keyof typeof emeraldGreen;
77
-
78
- /** Figma brand palette — primary swatch per color family */
79
- export const brand = {
80
- slateBlue: "#182e3c",
81
- stormGray: stormGray["5"],
82
- navy: navy["5"],
83
- rubyRed: rubyRed["5"],
84
- emeraldGreen: emeraldGreen["5"],
85
- } as const;
86
-
87
- export const colors = {
88
- // Brand colors
89
- slateBlue: brand.slateBlue,
90
-
91
- // Emerald Green — Figma scale + brand swatch
92
- emeraldGreen0: emeraldGreen["0"],
93
- emeraldGreen50: emeraldGreen["0.5"],
94
- emeraldGreen100: emeraldGreen["1"],
95
- emeraldGreen150: emeraldGreen["1.5"],
96
- emeraldGreen200: emeraldGreen["2"],
97
- emeraldGreen300: emeraldGreen["3"],
98
- emeraldGreen400: emeraldGreen["4"],
99
- emeraldGreen500: emeraldGreen["5"],
100
- emeraldGreen600: emeraldGreen["6"],
101
- emeraldGreen700: emeraldGreen["7"],
102
- emeraldGreen800: emeraldGreen["8"],
103
- emeraldGreen850: emeraldGreen["8.5"],
104
-
105
- /** Primary brand emerald green — Figma Emerald Green 5 */
106
- emeraldGreen: brand.emeraldGreen,
107
-
108
- // Ruby Red — Figma scale + brand swatch
109
- rubyRed0: rubyRed["0"],
110
- rubyRed50: rubyRed["0.5"],
111
- rubyRed100: rubyRed["1"],
112
- rubyRed150: rubyRed["1.5"],
113
- rubyRed200: rubyRed["2"],
114
- rubyRed300: rubyRed["3"],
115
- rubyRed400: rubyRed["4"],
116
- rubyRed500: rubyRed["5"],
117
- rubyRed600: rubyRed["6"],
118
- rubyRed700: rubyRed["7"],
119
- rubyRed800: rubyRed["8"],
120
- rubyRed850: rubyRed["8.5"],
121
-
122
- /** Primary brand ruby red — Figma Ruby Red 5 */
123
- rubyRed: brand.rubyRed,
124
-
125
- // Navy — Figma scale + brand swatch
126
- navy0: navy["0"],
127
- navy50: navy["0.5"],
128
- navy100: navy["1"],
129
- navy150: navy["1.5"],
130
- navy200: navy["2"],
131
- navy300: navy["3"],
132
- navy400: navy["4"],
133
- navy500: navy["5"],
134
- navy600: navy["6"],
135
- navy700: navy["7"],
136
- navy800: navy["8"],
137
- navy850: navy["8.5"],
138
-
139
- /** Primary brand navy — Figma Navy 5 */
140
- navy: brand.navy,
141
-
142
- // Storm Gray — Figma scale + brand swatch
143
- stormGray0: stormGray["0"],
144
- stormGray50: stormGray["0.5"],
145
- stormGray100: stormGray["1"],
146
- stormGray150: stormGray["1.5"],
147
- stormGray200: stormGray["2"],
148
- stormGray300: stormGray["3"],
149
- stormGray400: stormGray["4"],
150
- stormGray500: stormGray["5"],
151
- /** Figma brand swatch "Storm Gray" — same as `stormGray500` */
152
- stormGrayBrand: brand.stormGray,
153
- stormGray600: stormGray["6"],
154
- stormGray700: stormGray["7"],
155
- stormGray800: stormGray["8"],
156
- stormGray850: stormGray["8.5"],
157
-
158
- /** @deprecated Use `stormGray0` */
159
- storm0: stormGray["0"],
160
- /** @deprecated Use `stormGray50` */
161
- storm50: stormGray["0.5"],
162
- /** @deprecated Use `stormGray200` */
163
- storm200: stormGray["2"],
164
- /** @deprecated Use `stormGray300` */
165
- storm300: stormGray["3"],
166
- /** @deprecated Use `stormGray500` */
167
- storm500: stormGray["5"],
168
- /** @deprecated Use `stormGray700` */
169
- storm700: stormGray["7"],
170
- /** @deprecated Use `stormGray850` */
171
- storm900: stormGray["8.5"],
172
-
173
- countrySelectorSelectedBg: `${stormGray["0.5"]}99`,
174
-
175
- white: "#ffffff",
176
- error: "#dc2626",
177
- errorDark: "#b3261e",
178
- errorLight: "#fee2e2",
179
- /** @deprecated Use `rubyRed` */
180
- inputError: brand.rubyRed,
181
- inputOutlineFocus: navy["0.5"],
182
- inputOutlineError: rubyRed["0.5"],
183
- warning: "#92400e",
184
- warningBg: "#fef3c7",
185
- success: "#28a745",
186
- successMuted: "#9fd4a8",
187
- /** @deprecated Use `emeraldGreen` */
188
- green: brand.emeraldGreen,
189
- transparent: "transparent",
190
- } as const;
191
-
192
- export const radii = {
193
- sm: 8,
194
- md: 12,
195
- lg: 16,
196
- xl: 20,
197
- full: 9999,
198
- } as const;
199
-
200
- export const spacing = {
201
- xs: 4,
202
- sm: 8,
203
- md: 12,
204
- lg: 16,
205
- xl: 24,
206
- xxl: 32,
207
- } as const;
208
-
209
- export const fontSize = {
210
- xs: 11,
211
- sm: 12,
212
- md: 14,
213
- base: 16,
214
- lg: 18,
215
- xl: 24,
216
- xxl: 32,
217
- } as const;
218
-
219
- /**
220
- * Canonical Homepad type scale (matches `.typography-*` in `src/web/styles/typography.css`).
221
- * font-size / line-height pairs:
222
- * 12/16 · 14/19 · 18/24 · 20/27 · 24/25 · 32/34
223
- */
224
- export const typographyScale = {
225
- 12: { fontSize: 12, lineHeight: 16 },
226
- 14: { fontSize: 14, lineHeight: 19 },
227
- 18: { fontSize: 18, lineHeight: 24 },
228
- 20: { fontSize: 20, lineHeight: 27 },
229
- 24: { fontSize: 24, lineHeight: 25 },
230
- 32: { fontSize: 32, lineHeight: 34 },
231
- } as const;
232
-
233
- export const fontWeight = {
234
- regular: "400" as const,
235
- medium: "500" as const,
236
- semibold: "600" as const,
237
- bold: "700" as const,
238
- };
239
-
240
- export const fonts = {
241
- sans: "Noto Sans Armenian",
242
- } as const;
243
-
244
- /** Input label typography — Medium, typography-12 scale. */
245
- export const labelTypography = {
246
- fontFamily: fonts.sans,
247
- fontSize: typographyScale[12].fontSize,
248
- fontWeight: fontWeight.medium,
249
- lineHeight: typographyScale[12].lineHeight,
250
- letterSpacing: 0,
251
- } as const;
252
-
253
- /** Button label typography — SemiBold. */
254
- export const buttonTypography = {
255
- lg: {
256
- fontFamily: fonts.sans,
257
- fontSize: typographyScale[14].fontSize,
258
- fontWeight: fontWeight.semibold,
259
- lineHeight: typographyScale[14].lineHeight,
260
- letterSpacing: 0,
261
- },
262
- sm: {
263
- fontFamily: fonts.sans,
264
- fontSize: typographyScale[12].fontSize,
265
- fontWeight: fontWeight.semibold,
266
- lineHeight: typographyScale[12].lineHeight,
267
- letterSpacing: 0,
268
- },
269
- } as const;
270
-
271
- export const shadows = {
272
- card: {
273
- shadowColor: colors.navy,
274
- shadowOffset: { width: 0, height: 4 },
275
- shadowOpacity: 0.05,
276
- shadowRadius: 20,
277
- elevation: 2,
278
- },
279
- cardLg: {
280
- shadowColor: colors.navy,
281
- shadowOffset: { width: 0, height: 4 },
282
- shadowOpacity: 0.1,
283
- shadowRadius: 20,
284
- elevation: 4,
285
- },
286
- } as const;