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 +32 -0
- package/README.md +119 -0
- package/package.json +51 -0
- package/src/components/atoms/Button.astro +79 -0
- package/src/env.d.ts +1 -0
- package/src/fonts/manrope-variable.woff2 +0 -0
- package/src/index.ts +30 -0
- package/src/tokens/colors.css +14 -0
- package/src/tokens/fonts/manrope-variable.woff2 +0 -0
- package/src/tokens/typography.css +307 -0
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
|
+
}
|