athlefi-ui 0.1.0

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/LICENSE ADDED
@@ -0,0 +1,32 @@
1
+ Business Source License 1.1
2
+
3
+ Licensor: Grupo DedSec S.A. de C.V.
4
+
5
+ Product: athlefi_home_webpage
6
+
7
+ Additional Use Grant: None
8
+
9
+ Change Date: Indefinido (esta licencia no se convertirá automáticamente en una licencia de software libre)
10
+
11
+ Change License: No aplica
12
+
13
+ Effective Date: 30 de Junio de 2025
14
+
15
+ Licencia:
16
+
17
+ El uso de este código fuente está sujeto a los términos de la Business Source License 1.1 (la "Licencia"). Tal como se usa en esta Licencia, el "Producto" se refiere al conjunto de archivos de código fuente contenidos en este repositorio, identificado como athlefi_home_webpage, propiedad de Grupo DedSec S.A. de C.V.
18
+
19
+ Durante el período previo a cualquier cambio de licencia (que en este caso no está programado), solo se permite el uso no comercial del Producto. Se prohíbe expresamente:
20
+
21
+ El uso comercial sin autorización escrita del Licenciante.
22
+ La modificación, redistribución, sublicenciamiento o derivación del código con fines comerciales.
23
+
24
+ Uso comercial se define como cualquier uso con intención directa o indirecta de beneficio económico, incluyendo ofrecer servicios, productos o soluciones que incluyan este código o sus derivados.
25
+
26
+ Para solicitar una licencia de uso comercial, comunícate a: admin@dedsec.com.mx
27
+
28
+ SIN GARANTÍA:
29
+ Este software se proporciona “tal cual” y sin garantía expresa o implícita. El uso corre por cuenta del usuario.
30
+
31
+ Para más detalles sobre la Business Source License 1.1, consulta:
32
+ https://mariadb.com/bsl11/
package/README.md ADDED
@@ -0,0 +1,119 @@
1
+ <!-- AI-CONTEXT: Repositorio oficial de la librería UI del ecosistema AthleFi. Basada en Componentes Astro, TypeScript y Design Tokens. Se utiliza como fuente única de verdad visual para todas las aplicaciones del ecosistema. Este archivo README está optimizado para IA y servirá como prompt contextual. -->
2
+ 📌 CONTEXTO
3
+
4
+ Este repositorio pertenece al ecosistema AthleFi, una plataforma compuesta por múltiples aplicaciones y microservicios.
5
+ Estas apps comparten estilos, colores y patrones de diseño, pero viven en repositorios independientes.
6
+
7
+ Para evitar duplicación, inconsistencias visuales y deuda técnica, se creó este proyecto:
8
+
9
+ ➡️ Una librería UI centralizada para el ecosistema AthleFi.
10
+ ➡️ Basada en Componentes Astro + TypeScript.
11
+ ➡️ Consumida por todos los microfrontends Astro del ecosistema.
12
+
13
+ 🎯 OBJETIVO DEL REPOSITORIO
14
+
15
+ Ser la fuente única de verdad visual del ecosistema AthleFi.
16
+
17
+ Unificar colores, tipografías, tamaños, layouts y componentes.
18
+
19
+ Funcionar en cualquier aplicación sin depender de un framework.
20
+
21
+ Servir como base para microfrontends modulares.
22
+
23
+ Permitir actualizaciones controladas mediante versionado semántico.
24
+
25
+ 📦 TECNOLOGÍAS CLAVE
26
+
27
+ Astro Components (.astro)
28
+
29
+ TypeScript
30
+
31
+ Scoped Styles para aislamiento
32
+
33
+ Design Tokens (colors.css, typography.css)
34
+
35
+ Bundling con Vite (integrado en Astro)
36
+
37
+ 🗂️ ESTRUCTURA DEL PROYECTO
38
+ athlefi-ui/
39
+ └── src/
40
+ ├── tokens/ # Design Tokens globales
41
+ │ ├── colors.css
42
+ │ └── typography.css
43
+
44
+ ├── components/ # Componentes Astro reutilizables
45
+ │ ├── atoms/ # Átomos (Button, Input, etc.)
46
+ │ ├── molecules/ # Moléculas (SearchBar, Card, etc.)
47
+ │ ├── organisms/ # Organismos (Header, Footer, etc.)
48
+ │ └── templates/ # Templates (Layouts)
49
+
50
+ └── index.ts # Entry point que exporta componentes
51
+
52
+ package.json
53
+ tsconfig.json
54
+
55
+ 🚀 USO EN MICROFRONTENDS ASTRO
56
+
57
+ Instalar:
58
+
59
+ npm install @athlefi/ui
60
+
61
+
62
+ Importar componentes:
63
+
64
+ ---
65
+ import { Button } from "@athlefi/ui";
66
+ ---
67
+
68
+ <Button variant="primary">Invertir ahora</Button>
69
+
70
+ 🧩 FILOSOFÍA DE DISEÑO
71
+
72
+ Componentes Astro nativos para todos los microfrontends.
73
+
74
+ Atomic Design: tokens → átomos → moléculas → organismos → templates.
75
+
76
+ UI sin lógica de negocio.
77
+
78
+ Scoped Styles para evitar conflictos.
79
+
80
+ Tokens globales como fuente de verdad visual.
81
+
82
+ TypeScript para type-safety en props.
83
+
84
+ 📘 GLOSARIO (para IA y desarrolladores)
85
+ Término Definición
86
+ AthleFi Plataforma de inversión y análisis para atletas.
87
+ UI Library Conjunto de componentes Astro reutilizables.
88
+ Componente Astro Archivo .astro con markup, scripts y estilos.
89
+ Design Token Variable de diseño (color, espaciado, fuente).
90
+ Microfrontend App Astro independiente que consume esta librería.
91
+ Atomic Design Metodología de diseño (átomos → moléculas → organismos).
92
+ 🛠️ BUILD
93
+
94
+ Generar build:
95
+
96
+ npm run build
97
+
98
+
99
+ Salida en dist/:
100
+
101
+ define.mjs (ESM)
102
+
103
+ define.cjs (CJS)
104
+
105
+ Tipos .d.ts
106
+
107
+ 👥 CONTRIBUIR
108
+
109
+ Crear rama feature
110
+
111
+ Añadir nuevo token o componente
112
+
113
+ Documentarlo
114
+
115
+ Abrir Pull Request
116
+
117
+ Mantener consistencia con Atomic Design
118
+
119
+ Nunca incluir lógica de negocio
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "athlefi-ui",
3
+ "version": "0.1.0",
4
+ "description": "Librería UI centralizada del ecosistema AthleFi basada en Componentes Astro",
5
+ "type": "module",
6
+ "main": "./src/index.ts",
7
+ "types": "./src/index.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./src/index.ts",
11
+ "default": "./src/index.ts"
12
+ },
13
+ "./tokens/colors.css": "./src/tokens/colors.css",
14
+ "./tokens/typography.css": "./src/tokens/typography.css",
15
+ "./components/*": "./src/components/*.astro"
16
+ },
17
+ "files": [
18
+ "src"
19
+ ],
20
+ "scripts": {
21
+ "dev": "astro check --watch",
22
+ "typecheck": "astro check",
23
+ "prepublishOnly": "npm run typecheck"
24
+ },
25
+ "keywords": [
26
+ "astro-component",
27
+ "withastro",
28
+ "ui-library",
29
+ "design-system",
30
+ "athlefi",
31
+ "css"
32
+ ],
33
+ "author": "Grupo DedSec S.A. de C.V.",
34
+ "license": "BUSL-1.1",
35
+ "peerDependencies": {
36
+ "astro": "^4.0.0"
37
+ },
38
+ "devDependencies": {
39
+ "@astrojs/check": "^0.9.6",
40
+ "astro": "^4.16.19",
41
+ "typescript": "^5.3.3"
42
+ },
43
+ "publishConfig": {
44
+ "access": "public"
45
+ },
46
+ "repository": {
47
+ "type": "git",
48
+ "url": "https://github.com/athlefi/athlefi-ui.git"
49
+ },
50
+ "homepage": "https://github.com/athlefi/athlefi-ui#readme"
51
+ }
@@ -0,0 +1,79 @@
1
+ ---
2
+ interface Props {
3
+ variant?: 'primary' | 'secondary' | 'tertiary';
4
+ size?: 's' | 'm' | 'l';
5
+ disabled?: boolean;
6
+ }
7
+
8
+ const {
9
+ variant = 'primary',
10
+ size = 'm',
11
+ disabled = false
12
+ } = Astro.props;
13
+ ---
14
+
15
+ <button
16
+ class={`btn btn--${variant} btn--${size}`}
17
+ disabled={disabled}
18
+ >
19
+ <slot />
20
+ </button>
21
+
22
+ <style>
23
+ .btn {
24
+ font-family: var(--font-family-manrope);
25
+ border: none;
26
+ cursor: pointer;
27
+ transition: all 0.3s ease;
28
+ border-radius: 8px;
29
+ }
30
+
31
+ /* Variantes */
32
+ .btn--primary {
33
+ background-color: var(--color-primary-60);
34
+ color: var(--color-white);
35
+ }
36
+
37
+ .btn--primary:hover:not(:disabled) {
38
+ background-color: var(--color-primary-30);
39
+ }
40
+
41
+ .btn--secondary {
42
+ background-color: var(--color-gray-light);
43
+ color: var(--color-primary-90);
44
+ }
45
+
46
+ .btn--tertiary {
47
+ background-color: transparent;
48
+ color: var(--color-primary-60);
49
+ border: 2px solid var(--color-primary-60);
50
+ }
51
+
52
+ /* Tamaños */
53
+ .btn--s {
54
+ font-size: var(--font-size-button-s);
55
+ font-weight: var(--font-weight-button-s);
56
+ padding: 8px 16px;
57
+ }
58
+
59
+ .btn--m {
60
+ font-size: var(--font-size-button-m);
61
+ font-weight: var(--font-weight-button-m);
62
+ padding: 12px 24px;
63
+ }
64
+
65
+ .btn--l {
66
+ font-size: var(--font-size-button-l);
67
+ font-weight: var(--font-weight-button-l);
68
+ padding: 16px 32px;
69
+ }
70
+
71
+ /* Disabled */
72
+ .btn:disabled {
73
+ opacity: 0.5;
74
+ cursor: not-allowed;
75
+ }
76
+ </style>
77
+
78
+
79
+
package/src/env.d.ts ADDED
@@ -0,0 +1 @@
1
+ /// <reference path="../.astro/types.d.ts" />
Binary file
package/src/index.ts ADDED
@@ -0,0 +1,30 @@
1
+ // Entry point de @athlefi/ui
2
+ // Exporta todos los componentes Astro del ecosistema
3
+
4
+ // ============================================
5
+ // ÁTOMOS
6
+ // ============================================
7
+ export { default as Button } from "./components/atoms/Button.astro";
8
+ // export { default as Input } from "./components/atoms/Input.astro";
9
+ // export { default as Label } from "./components/atoms/Label.astro";
10
+
11
+ // ============================================
12
+ // MOLÉCULAS
13
+ // ============================================
14
+ // export { default as SearchBar } from "./components/molecules/SearchBar.astro";
15
+ // export { default as Card } from "./components/molecules/Card.astro";
16
+
17
+ // ============================================
18
+ // ORGANISMOS
19
+ // ============================================
20
+ // export { default as Header } from "./components/organisms/Header.astro";
21
+ // export { default as Footer } from "./components/organisms/Footer.astro";
22
+
23
+ // ============================================
24
+ // TEMPLATES
25
+ // ============================================
26
+ // export { default as MainLayout } from "./components/templates/MainLayout.astro";
27
+
28
+ // Nota: Los exports están comentados porque aún no hemos creado los componentes.
29
+ // Una vez creados, descomentar estas líneas según los componentes disponibles.
30
+
@@ -0,0 +1,14 @@
1
+ @theme {
2
+ --color-primary-90: #06080e;
3
+ --color-primary-60: #01eac7;
4
+ --color-primary-30: #0890d1;
5
+
6
+ --color-white: #ffffff;
7
+ --color-gray-medium: #d9d9d9;
8
+ --color-gray-light: #f2f2f2;
9
+
10
+ /* Colores semánticos */
11
+ --color-success: #25a249;
12
+ --color-warning: #f1c21b;
13
+ --color-error: #da1e28;
14
+ }
File without changes
@@ -0,0 +1,307 @@
1
+ @theme {
2
+ /* Familia de fuentes */
3
+ --font-family-manrope: "Manrope", sans-serif;
4
+
5
+ /* ======================
6
+ HEADINGS
7
+ ====================== */
8
+ /* Heading 1 */
9
+ --font-size-h1: 4.6875rem; /* 75px */
10
+ --font-weight-h1: 700; /* Bold */
11
+ --line-height-h1: 1.1; /* 80% */
12
+ --letter-spacing-h1: 0; /* 0px */
13
+
14
+ /* Heading 2 */
15
+ --font-size-h2: 2.625rem; /* 42px */
16
+ --font-weight-h2: 700; /* Bold */
17
+ --line-height-h2: normal; /* Auto */
18
+ --letter-spacing-h2: 0; /* 0px */
19
+
20
+ /* Heading 3 */
21
+ --font-size-h3: 2rem; /* 32px */
22
+ --font-weight-h3: 700; /* Bold */
23
+ --line-height-h3: normal; /* Auto */
24
+ --letter-spacing-h3: 0; /* 0px */
25
+
26
+ /* Heading 4 */
27
+ --font-size-h4: 1.5rem; /* 24px */
28
+ --font-weight-h4: 700; /* Bold */
29
+ --line-height-h4: normal; /* Auto */
30
+ --letter-spacing-h4: 0; /* 0px */
31
+
32
+ /* Heading 5 */
33
+ --font-size-h5: 1.25rem; /* 20px */
34
+ --font-weight-h5: 700; /* Bold */
35
+ --line-height-h5: normal; /* Auto */
36
+ --letter-spacing-h5: 0; /* 0px */
37
+
38
+ /* Heading 6 */
39
+ --font-size-h6: 1.125rem; /* 18px */
40
+ --font-weight-h6: 700; /* Bold */
41
+ --line-height-h6: normal; /* Auto */
42
+ --letter-spacing-h6: 0; /* 0px */
43
+
44
+ /* ======================
45
+ SUBTITLES
46
+ ====================== */
47
+ /* Subtitle Medium */
48
+ --font-size-subtitle-m: 1rem; /* 16px */
49
+ --font-weight-subtitle-m: 500; /* Medium */
50
+ --line-height-subtitle-m: normal; /* Auto */
51
+ --letter-spacing-subtitle-m: 0; /* 0px */
52
+
53
+ /* Subtitle Small */
54
+ --font-size-subtitle-s: 0.875rem; /* 14px */
55
+ --font-weight-subtitle-s: 500; /* Medium */
56
+ --line-height-subtitle-s: normal; /* Auto */
57
+ --letter-spacing-subtitle-s: 0; /* 0px */
58
+
59
+ /* ======================
60
+ BODY TEXT
61
+ ====================== */
62
+ /* Body Large */
63
+ --font-size-body-l: 1.125rem; /* 18px */
64
+ --font-weight-body-l: 400; /* Regular */
65
+ --line-height-body-l: normal; /* Auto */
66
+ --letter-spacing-body-l: 0; /* 0px */
67
+
68
+ /* Body Medium */
69
+ --font-size-body-m: 1rem; /* 16px */
70
+ --font-weight-body-m: 400; /* Regular */
71
+ --line-height-body-m: normal; /* Auto */
72
+ --letter-spacing-body-m: 0; /* 0px */
73
+
74
+ /* Body Small */
75
+ --font-size-body-s: 0.875rem; /* 14px */
76
+ --font-weight-body-s: 400; /* Regular */
77
+ --line-height-body-s: normal; /* Auto */
78
+ --letter-spacing-body-s: 0; /* 0px */
79
+
80
+ /* Body Extra Small */
81
+ --font-size-body-xs: 0.75rem; /* 12px */
82
+ --font-weight-body-xs: 400; /* Regular */
83
+ --line-height-body-xs: normal; /* Auto */
84
+ --letter-spacing-body-xs: 0; /* 0px */
85
+
86
+ /* Body Extra Extra Small */
87
+ --font-size-body-xxs: 0.625rem; /* 10px */
88
+ --font-weight-body-xxs: 400; /* Regular */
89
+ --line-height-body-xxs: normal; /* Auto */
90
+ --letter-spacing-body-xxs: 0; /* 0px */
91
+
92
+ /* ======================
93
+ UI ELEMENTS
94
+ ====================== */
95
+ /* Caption */
96
+ --font-size-caption: 1.25rem; /* 20px */
97
+ --font-weight-caption: 700; /* Bold */
98
+ --line-height-caption: normal; /* Auto */
99
+ --letter-spacing-caption: 0; /* 0px */
100
+
101
+ /* Button Large */
102
+ --font-size-button-l: 1.25rem; /* 20px */
103
+ --font-weight-button-l: 500; /* Medium */
104
+ --line-height-button-l: normal; /* Auto */
105
+ --letter-spacing-button-l: 0; /* 0px */
106
+
107
+ /* Button Medium */
108
+ --font-size-button-m: 1rem; /* 16px */
109
+ --font-weight-button-m: 500; /* Medium */
110
+ --line-height-button-m: normal; /* Auto */
111
+ --letter-spacing-button-m: 0; /* 0px */
112
+
113
+ /* Button Small */
114
+ --font-size-button-s: 0.875rem; /* 14px */
115
+ --font-weight-button-s: 500; /* Medium */
116
+ --line-height-button-s: normal; /* Auto */
117
+ --letter-spacing-button-s: 0; /* 0px */
118
+
119
+ /* Menu & Tabs */
120
+ --font-size-menu: 1rem; /* 16px */
121
+ --font-weight-menu: 500; /* Medium */
122
+ --line-height-menu: normal; /* Auto */
123
+ --letter-spacing-menu: 0; /* 0px */
124
+
125
+ /* ======================
126
+ UTILITY CLASSES
127
+ ====================== */
128
+ /* Pesos de fuente */
129
+ --font-weight-regular: 400;
130
+ --font-weight-medium: 500;
131
+ --font-weight-bold: 700;
132
+
133
+ /* Tamaños base para flexibilidad */
134
+ --font-size-xs: 0.75rem; /* 12px */
135
+ --font-size-sm: 0.875rem; /* 14px */
136
+ --font-size-base: 1rem; /* 16px */
137
+ --font-size-lg: 1.125rem; /* 18px */
138
+ --font-size-xl: 1.25rem; /* 20px */
139
+ --font-size-2xl: 1.5rem; /* 24px */
140
+ --font-size-3xl: 2rem; /* 32px */
141
+ --font-size-4xl: 2.625rem; /* 42px */
142
+ --font-size-5xl: 4.6875rem; /* 75px */
143
+ }
144
+
145
+ @font-face {
146
+ font-family: "Manrope";
147
+ src: url("../fonts/manrope-variable.woff2") format("woff2-variations");
148
+ font-weight: 100 900;
149
+ font-style: normal;
150
+ font-display: swap;
151
+ }
152
+
153
+ /* ======================
154
+ CLASES COMPUESTAS
155
+ ====================== */
156
+ .h1-style {
157
+ font-family: var(--font-family-manrope);
158
+ font-size: var(--font-size-h1);
159
+ font-weight: var(--font-weight-h1);
160
+ line-height: var(--line-height-h1);
161
+ letter-spacing: var(--letter-spacing-h1);
162
+ }
163
+
164
+ .h2-style {
165
+ font-family: var(--font-family-manrope);
166
+ font-size: var(--font-size-h2);
167
+ font-weight: var(--font-weight-h2);
168
+ line-height: var(--line-height-h2);
169
+ letter-spacing: var(--letter-spacing-h2);
170
+ }
171
+
172
+ .h3-style {
173
+ font-family: var(--font-family-manrope);
174
+ font-size: var(--font-size-h3);
175
+ font-weight: var(--font-weight-h3);
176
+ line-height: var(--line-height-h3);
177
+ letter-spacing: var(--letter-spacing-h3);
178
+ }
179
+
180
+ .h4-style {
181
+ font-family: var(--font-family-manrope);
182
+ font-size: var(--font-size-h4);
183
+ font-weight: var(--font-weight-h4);
184
+ line-height: var(--line-height-h4);
185
+ letter-spacing: var(--letter-spacing-h4);
186
+ }
187
+
188
+ .h5-style {
189
+ font-family: var(--font-family-manrope);
190
+ font-size: var(--font-size-h5);
191
+ font-weight: var(--font-weight-h5);
192
+ line-height: var(--line-height-h5);
193
+ letter-spacing: var(--letter-spacing-h5);
194
+ }
195
+
196
+ .h6-style {
197
+ font-family: var(--font-family-manrope);
198
+ font-size: var(--font-size-h6);
199
+ font-weight: var(--font-weight-h6);
200
+ line-height: var(--line-height-h6);
201
+ letter-spacing: var(--letter-spacing-h6);
202
+ }
203
+
204
+ /* ======================
205
+ SUBTÍTULOS
206
+ ====================== */
207
+ .subtitle-m-style {
208
+ font-family: var(--font-family-manrope);
209
+ font-size: var(--font-size-subtitle-m);
210
+ font-weight: var(--font-weight-subtitle-m);
211
+ line-height: var(--line-height-subtitle-m);
212
+ letter-spacing: var(--letter-spacing-subtitle-m);
213
+ }
214
+
215
+ .subtitle-s-style {
216
+ font-family: var(--font-family-manrope);
217
+ font-size: var(--font-size-subtitle-s);
218
+ font-weight: var(--font-weight-subtitle-s);
219
+ line-height: var(--line-height-subtitle-s);
220
+ letter-spacing: var(--letter-spacing-subtitle-s);
221
+ }
222
+
223
+ /* ======================
224
+ TEXTO CORPO
225
+ ====================== */
226
+ .body-l-style {
227
+ font-family: var(--font-family-manrope);
228
+ font-size: var(--font-size-body-l);
229
+ font-weight: var(--font-weight-body-l);
230
+ line-height: var(--line-height-body-l);
231
+ letter-spacing: var(--letter-spacing-body-l);
232
+ }
233
+
234
+ .body-m-style {
235
+ font-family: var(--font-family-manrope);
236
+ font-size: var(--font-size-body-m);
237
+ font-weight: var(--font-weight-body-m);
238
+ line-height: var(--line-height-body-m);
239
+ letter-spacing: var(--letter-spacing-body-m);
240
+ }
241
+
242
+ .body-s-style {
243
+ font-family: var(--font-family-manrope);
244
+ font-size: var(--font-size-body-s);
245
+ font-weight: var(--font-weight-body-s);
246
+ line-height: var(--line-height-body-s);
247
+ letter-spacing: var(--letter-spacing-body-s);
248
+ }
249
+
250
+ .body-xs-style {
251
+ font-family: var(--font-family-manrope);
252
+ font-size: var(--font-size-body-xs);
253
+ font-weight: var(--font-weight-body-xs);
254
+ line-height: var(--line-height-body-xs);
255
+ letter-spacing: var(--letter-spacing-body-xs);
256
+ }
257
+
258
+ .body-xxs-style {
259
+ font-family: var(--font-family-manrope);
260
+ font-size: var(--font-size-body-xxs);
261
+ font-weight: var(--font-weight-body-xxs);
262
+ line-height: var(--line-height-body-xxs);
263
+ letter-spacing: var(--letter-spacing-body-xxs);
264
+ }
265
+
266
+ /* ======================
267
+ ELEMENTOS UI
268
+ ====================== */
269
+ .caption-style {
270
+ font-family: var(--font-family-manrope);
271
+ font-size: var(--font-size-caption);
272
+ font-weight: var(--font-weight-caption);
273
+ line-height: var(--line-height-caption);
274
+ letter-spacing: var(--letter-spacing-caption);
275
+ }
276
+
277
+ .button-l-style {
278
+ font-family: var(--font-family-manrope);
279
+ font-size: var(--font-size-button-l);
280
+ font-weight: var(--font-weight-button-l);
281
+ line-height: var(--line-height-button-l);
282
+ letter-spacing: var(--letter-spacing-button-l);
283
+ }
284
+
285
+ .button-m-style {
286
+ font-family: var(--font-family-manrope);
287
+ font-size: var(--font-size-button-m);
288
+ font-weight: var(--font-weight-button-m);
289
+ line-height: var(--line-height-button-m);
290
+ letter-spacing: var(--letter-spacing-button-m);
291
+ }
292
+
293
+ .button-s-style {
294
+ font-family: var(--font-family-manrope);
295
+ font-size: var(--font-size-button-s);
296
+ font-weight: var(--font-weight-button-s);
297
+ line-height: var(--line-height-button-s);
298
+ letter-spacing: var(--letter-spacing-button-s);
299
+ }
300
+
301
+ .menu-style {
302
+ font-family: var(--font-family-manrope);
303
+ font-size: var(--font-size-menu);
304
+ font-weight: var(--font-weight-menu);
305
+ line-height: var(--line-height-menu);
306
+ letter-spacing: var(--letter-spacing-menu);
307
+ }