Mavidart commited on
Commit
27ac2b3
·
verified ·
1 Parent(s): 33ebfd0

podrían el header y el footer ser más: Header

Browse files

Concepto: Elegante, minimalista, con un toque de sofisticación tipográfica que recuerde a una imprenta antigua pero con un diseño moderno.

Estructura HTML:
html

<header class="header">
<div class="header-container">
<!-- Logo y nombre -->
<div class="logo">
<a href="index.html" class="logo-link">
<h1 class="logo-text">La Fragua del Logos</h1>
<span class="logo-subtitle">Forjando Palabras, Creando Sentido</span>
</a>
</div>

<!-- Navegación principal -->
<nav class="main-nav">
<ul class="nav-list">
<li class="nav-item"><a href="index.html" class="nav-link">Inicio</a></li>
<li class="nav-item"><a href="servicios.html" class="nav-link">Servicios</a></li>
<li class="nav-item"><a href="blog.html" class="nav-link">Blog</a></li>
<li class="nav-item"><a href="contacto.html" class="nav-link">Contacto</a></li>
<!-- Sobre Mí discreto -->
<li class="nav-item subtle">
<a href="sobre-mi.html" class="nav-link subtle-link">Sobre Mí</a>
</li>
</ul>
</nav>

<!-- Selector de idiomas -->
<div class="language-selector">
<button class="language-btn" id="languageToggle">
<span class="flag">🇪🇸</span>
<span class="language-code">ES</span>
</button>
<div class="language-dropdown" id="languageDropdown">
<a href="#" data-lang="es" class="lang-option">🇪🇸 Español</a>
<a href="#" data-lang="en" class="lang-option">🇬🇧 English</a>
<a href="#" data-lang="fr" class="lang-option">🇫🇷 Français</a>
</div>
</div>

<!-- Menú móvil -->
<button class="mobile-menu-btn" id="mobileMenuToggle">
<span></span>
<span></span>
<span></span>
</button>
</div>
</header>

Estilos CSS:
css

/* Header Styles */
.header {
background: rgba(26, 26, 26, 0.95);
backdrop-filter: blur(10px);
border-bottom: 1px solid rgba(184, 134, 11, 0.3);
position: fixed;
top: 0;
width: 100%;
z-index: 1000;
padding: 1rem 0;
}

.header-container {
max-width: 1200px;
margin: 0 auto;
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 2rem;
}

/* Logo */
.logo-text {
font-family: 'Playfair Display', serif;
font-size: 1.8rem;
font-weight: 700;
color: #f4f4f4;
margin: 0;
letter-spacing: -0.5px;
}

.logo-subtitle {
font-family: 'Lato', sans-serif;
font-size: 0.7rem;
color: #b8860b;
letter-spacing: 1.5px;
text-transform: uppercase;
display: block;
margin-top: -2px;
}

.logo-link {
text-decoration: none;
transition: all 0.3s ease;
}

.logo-link:hover {
opacity: 0.8;
}

/* Navegación principal */
.nav-list {
display: flex;
list-style: none;
margin: 0;
padding: 0;
gap: 2rem;
}

.nav-link {
font-family: 'Lato', sans-serif;
color: #e0e0e0;
text-decoration: none;
font-size: 1rem;
font-weight: 400;
transition: all 0.3s ease;
position: relative;
padding: 0.5rem 0;
}

.nav-link:hover {
color: #b8860b;
}

.nav-link::after {
content: '';
position: absolute;
bottom: 0;
left: 0;
width: 0;
height: 2px;
background: #b8860b;
transition: width 0.3s ease;
}

.nav-link:hover::after {
width: 100%;
}

/* Sobre Mí discreto */
.nav-item.subtle {
margin-left: 1rem;
position: relative;
}

.nav-item.subtle::before {
content: '•';
color: #666;
margin-right: 1rem;
}

.subtle-link {
font-size: 0.9rem;
color: #999 !important;
}

.subtle-link:hover {
color: #b8860b !important;
}

/* Selector de idiomas */
.language-selector {
position: relative;
}

.language-btn {
background: rgba(184, 134, 11, 0.1);
border: 1px solid rgba(184, 134, 11, 0.3);
border-radius: 4px;
padding: 0.5rem 1rem;
color: #e0e0e0;
cursor: pointer;
display: flex;
align-items: center;
gap: 0.5rem;
transition: all 0.3s ease;
}

.language-btn:hover {
background: rgba(184, 134, 11, 0.2);
}

.language-dropdown {
position: absolute;
top: 100%;
right: 0;
background: #1a1a1a;
border: 1px solid rgba(184, 134, 11, 0.3);
border-radius: 4px;
padding: 0.5rem;
min-width: 150px;
display: none;
margin-top: 0.5rem;
}

.language-dropdown.show {
display: block;
}

.lang-option {
display: block;
padding: 0.5rem 1rem;
color: #e0e0e0;
text-decoration: none;
transition: all 0.3s ease;
border-radius: 2px;
}

.lang-option:hover {
background: rgba(184, 134, 11, 0.1);
color: #b8860b;
}

/* Menú móvil */
.mobile-menu-btn {
display: none;
flex-direction: column;
background: none;
border: none;
cursor: pointer;
padding: 0.5rem;
}

.mobile-menu-btn span {
width: 25px;
height: 2px;
background: #e0e0e0;
margin: 3px 0;
transition: 0.3s;
}

/* Responsive */


@media
(max-width: 768px) {
.header-container {
padding: 0 1rem;
}

.main-nav, .language-selector {
display: none;
}

.mobile-menu-btn {
display: flex;
}

.logo-text {
font-size: 1.4rem;
}

.logo-subtitle {
font-size: 0.6rem;
}
}

Diseño para el Footer

Concepto: Sólido, elegante y con información de contacto clara, manteniendo la estética del header pero con un tono más terroso y estable.

Estructura HTML:
html

<footer class="footer">
<div class="footer-container">
<!-- Columna 1: Logo y descripción -->
<div class="footer-column">
<div class="footer-logo">
<h3 class="footer-logo-text">La Fragua del Logos</h3>
<p class="footer-tagline">Forjando significado a través de las palabras y el pensamiento.</p>
</div>
<div class="social-links">
<a href="#" class="social-link" aria-label="LinkedIn">
<svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
<path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/>
</svg>
</a>
<a href="#" class="social-link" aria-label="Twitter">
<svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
<path d="M23.953 4.57a10 10 0 01-2.825.775 4.958 4.958 0 002.163-2.723 10.016 10.016 0 01-3.127 1.184 4.92 4.92 0 00-8.384 4.482C7.69 8.095 4.067 6.13 1.64 3.162a4.822 4.822 0 00-.666 2.475c0 1.71.87 3.213 2.188 4.096a4.904 4.904 0 01-2.228-.616v.06a4.923 4.923 0 003.946 4.827 4.996 4.996 0 01-2.212.085 4.936 4.936 0 004.604 3.417 9.867 9.867 0 01-6.102 2.105c-.39 0-.779-.023-1.17-.067a13.995 13.995 0 007.557 2.209c9.053 0 13.998-7.496 13.998-13.985 0-.21 0-.42-.015-.63A9.935 9.935 0 0024 4.59z"/>
</svg>
</a>
<a href="#" class="social-link" aria-label="GitHub">
<svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
<path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/>
</svg>
</a>
</div>
</div>

<!-- Columna 2: Enlaces rápidos -->
<div class="footer-column">
<h4 class="footer-title">Navegación</h4>
<ul class="footer-links">
<li><a href="index.html" class="footer-link">Inicio</a></li>
<li><a href="servicios.html" class="footer-link">Servicios</a></li>
<li><a href="blog.html" class="footer-link">Blog</a></li>
<li><a href="contacto.html" class="footer-link">Contacto</a></li>
<li><a href="sobre-mi.html" class="footer-link subtle-link">Sobre Mí</a></li>
</ul>
</div>

<!-- Columna 3: Servicios -->
<div class="footer-column">
<h4 class="footer-title">Servicios</h4>
<ul class="footer-links">
<li><a href="servicios.html#traduccion" class="footer-link">Traducción</a></li>
<li><a href="servicios.html#transcripcion" class="footer-link">Transcripción</a></li>
<li><a href="servicios.html#subtitulacion" class="footer-link">Subtitulación</a></li>
</ul>
</div>

<!-- Columna 4: Contacto -->
<div class="footer-column">
<h4 class="footer-title">Contacto</h4>
<div class="contact-info">
<p class="contact-item">
<svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" class="contact-icon">
<path d="M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z"/>

Files changed (4) hide show
  1. components/footer.js +246 -68
  2. components/header.js +275 -0
  3. index.html +5 -8
  4. scripts/languages.js +36 -9
components/footer.js CHANGED
@@ -1,72 +1,250 @@
1
  class CustomFooter extends HTMLElement {
2
- connectedCallback() {
3
- this.attachShadow({ mode: 'open' });
4
- this.shadowRoot.innerHTML = `
5
- <style>
6
- footer {
7
- background-color: #111827;
8
- }
9
-
10
- .social-icon {
11
- transition: all 0.3s ease;
12
- }
13
-
14
- .social-icon:hover {
15
- transform: translateY(-3px);
16
- color: #b45309;
17
- }
18
- </style>
19
-
20
- <footer class="py-12 px-6 md:px-12 text-amber-100">
21
- <div class="max-w-7xl mx-auto">
22
- <div class="grid grid-cols-1 md:grid-cols-3 gap-8">
23
- <div>
24
- <h3 class="text-xl font-playfair font-bold mb-4" data-i18n="footer_about">About La Fragua</h3>
25
- <p class="mb-4" data-i18n="footer_about_text">A linguistic workshop where words are forged with precision and passion.</p>
26
- <a href="about.html" class="text-amber-300 hover:text-amber-200 inline-flex items-center" data-i18n="footer_learnmore">
27
- Learn more about me
28
- <i data-feather="arrow-right" class="ml-2 w-4 h-4"></i>
29
- </a>
30
- </div>
31
-
32
- <div>
33
- <h3 class="text-xl font-playfair font-bold mb-4" data-i18n="footer_quicklinks">Quick Links</h3>
34
- <ul class="space-y-2">
35
- <li><a href="index.html" class="hover:text-amber-300 transition duration-300" data-i18n="nav_home">Home</a></li>
36
- <li><a href="#services" class="hover:text-amber-300 transition duration-300" data-i18n="nav_services">Services</a></li>
37
- <li><a href="blog.html" class="hover:text-amber-300 transition duration-300" data-i18n="nav_blog">Blog</a></li>
38
- <li><a href="#contact" class="hover:text-amber-300 transition duration-300" data-i18n="nav_contact">Contact</a></li>
39
- </ul>
40
- </div>
41
-
42
- <div>
43
- <h3 class="text-xl font-playfair font-bold mb-4" data-i18n="footer_connect">Connect</h3>
44
- <div class="flex space-x-4 mb-4">
45
- <a href="#" class="social-icon">
46
- <i data-feather="twitter" class="w-5 h-5"></i>
47
- </a>
48
- <a href="#" class="social-icon">
49
- <i data-feather="linkedin" class="w-5 h-5"></i>
50
- </a>
51
- <a href="#" class="social-icon">
52
- <i data-feather="instagram" class="w-5 h-5"></i>
53
- </a>
54
- </div>
55
- <p data-i18n="footer_email">Email: info@lafraguadelogos.com</p>
56
- </div>
57
- </div>
58
-
59
- <div class="border-t border-gray-700 mt-12 pt-8 text-center">
60
- <p data-i18n="footer_copyright">© ${new Date().getFullYear()} La Fragua del Logos. Forged with words and ideas.</p>
61
- </div>
62
- </div>
63
- </footer>
64
-
65
- <script>
66
- feather.replace();
67
- </script>
68
- `;
69
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70
  }
71
 
72
  customElements.define('custom-footer', CustomFooter);
 
1
  class CustomFooter extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ footer {
7
+ background: #1a1a1a;
8
+ border-top: 1px solid rgba(184, 134, 11, 0.3);
9
+ color: #e0e0e0;
10
+ }
11
+
12
+ .footer-container {
13
+ max-width: 1200px;
14
+ margin: 0 auto;
15
+ padding: 3rem 2rem;
16
+ display: grid;
17
+ grid-template-columns: 2fr 1fr 1fr 1.5fr;
18
+ gap: 3rem;
19
+ }
20
+
21
+ .footer-column {
22
+ display: flex;
23
+ flex-direction: column;
24
+ gap: 1.5rem;
25
+ }
26
+
27
+ .footer-logo-text {
28
+ font-family: 'Playfair Display', serif;
29
+ font-size: 1.5rem;
30
+ color: #f4f4f4;
31
+ margin: 0;
32
+ }
33
+
34
+ .footer-tagline {
35
+ font-family: 'Lato', sans-serif;
36
+ font-size: 0.9rem;
37
+ color: #999;
38
+ line-height: 1.5;
39
+ margin: 0;
40
+ }
41
+
42
+ .footer-title {
43
+ font-family: 'Lato', sans-serif;
44
+ font-size: 1.1rem;
45
+ color: #b8860b;
46
+ margin: 0 0 1rem 0;
47
+ text-transform: uppercase;
48
+ letter-spacing: 1px;
49
+ }
50
+
51
+ .footer-links {
52
+ list-style: none;
53
+ margin: 0;
54
+ padding: 0;
55
+ display: flex;
56
+ flex-direction: column;
57
+ gap: 0.8rem;
58
+ }
59
+
60
+ .footer-link {
61
+ font-family: 'Lato', sans-serif;
62
+ color: #e0e0e0;
63
+ text-decoration: none;
64
+ font-size: 0.95rem;
65
+ transition: all 0.3s ease;
66
+ }
67
+
68
+ .footer-link:hover {
69
+ color: #b8860b;
70
+ padding-left: 5px;
71
+ }
72
+
73
+ .social-links {
74
+ display: flex;
75
+ gap: 1rem;
76
+ }
77
+
78
+ .social-link {
79
+ color: #999;
80
+ transition: all 0.3s ease;
81
+ padding: 0.5rem;
82
+ border-radius: 4px;
83
+ }
84
+
85
+ .social-link:hover {
86
+ color: #b8860b;
87
+ background: rgba(184, 134, 11, 0.1);
88
+ }
89
+
90
+ .contact-info {
91
+ display: flex;
92
+ flex-direction: column;
93
+ gap: 1rem;
94
+ }
95
+
96
+ .contact-item {
97
+ display: flex;
98
+ align-items: center;
99
+ gap: 0.8rem;
100
+ margin: 0;
101
+ font-size: 0.95rem;
102
+ }
103
+
104
+ .contact-icon {
105
+ color: #b8860b;
106
+ flex-shrink: 0;
107
+ }
108
+
109
+ .footer-bottom {
110
+ border-top: 1px solid #333;
111
+ padding: 1.5rem 0;
112
+ }
113
+
114
+ .footer-bottom-container {
115
+ max-width: 1200px;
116
+ margin: 0 auto;
117
+ padding: 0 2rem;
118
+ display: flex;
119
+ justify-content: space-between;
120
+ align-items: center;
121
+ }
122
+
123
+ .copyright {
124
+ font-family: 'Lato', sans-serif;
125
+ font-size: 0.9rem;
126
+ color: #999;
127
+ margin: 0;
128
+ }
129
+
130
+ .legal-links {
131
+ display: flex;
132
+ gap: 1.5rem;
133
+ }
134
+
135
+ .legal-link {
136
+ font-family: 'Lato', sans-serif;
137
+ font-size: 0.8rem;
138
+ color: #666;
139
+ text-decoration: none;
140
+ transition: color 0.3s ease;
141
+ }
142
+
143
+ .legal-link:hover {
144
+ color: #b8860b;
145
+ }
146
+
147
+ @media (max-width: 968px) {
148
+ .footer-container {
149
+ grid-template-columns: 1fr 1fr;
150
+ gap: 2rem;
151
+ }
152
+ }
153
+
154
+ @media (max-width: 768px) {
155
+ .footer-container {
156
+ grid-template-columns: 1fr;
157
+ gap: 2rem;
158
+ padding: 2rem 1rem;
159
+ }
160
+
161
+ .footer-bottom-container {
162
+ flex-direction: column;
163
+ gap: 1rem;
164
+ text-align: center;
165
+ }
166
+
167
+ .legal-links {
168
+ justify-content: center;
169
+ }
170
+ }
171
+ </style>
172
+
173
+ <footer class="footer">
174
+ <div class="footer-container">
175
+ <div class="footer-column">
176
+ <div class="footer-logo">
177
+ <h3 class="footer-logo-text" data-i18n="site_title">La Fragua del Logos</h3>
178
+ <p class="footer-tagline" data-i18n="footer_tagline">Forjando significado a través de las palabras y el pensamiento.</p>
179
+ </div>
180
+ <div class="social-links">
181
+ <a href="#" class="social-link" aria-label="LinkedIn">
182
+ <i data-feather="linkedin" class="w-5 h-5"></i>
183
+ </a>
184
+ <a href="#" class="social-link" aria-label="Twitter">
185
+ <i data-feather="twitter" class="w-5 h-5"></i>
186
+ </a>
187
+ <a href="#" class="social-link" aria-label="GitHub">
188
+ <i data-feather="github" class="w-5 h-5"></i>
189
+ </a>
190
+ </div>
191
+ </div>
192
+
193
+ <div class="footer-column">
194
+ <h4 class="footer-title" data-i18n="footer_navigation">Navegación</h4>
195
+ <ul class="footer-links">
196
+ <li><a href="index.html" class="footer-link" data-i18n="nav_home">Inicio</a></li>
197
+ <li><a href="#services" class="footer-link" data-i18n="nav_services">Servicios</a></li>
198
+ <li><a href="blog.html" class="footer-link" data-i18n="nav_blog">Blog</a></li>
199
+ <li><a href="#contact" class="footer-link" data-i18n="nav_contact">Contacto</a></li>
200
+ <li><a href="about.html" class="footer-link subtle-link" data-i18n="nav_about">Sobre Mí</a></li>
201
+ </ul>
202
+ </div>
203
+
204
+ <div class="footer-column">
205
+ <h4 class="footer-title" data-i18n="footer_services">Servicios</h4>
206
+ <ul class="footer-links">
207
+ <li><a href="#services" class="footer-link" data-i18n="service1_title">Traducción</a></li>
208
+ <li><a href="#services" class="footer-link" data-i18n="service2_title">Transcripción</a></li>
209
+ <li><a href="#services" class="footer-link" data-i18n="service3_title">Subtitulación</a></li>
210
+ </ul>
211
+ </div>
212
+
213
+ <div class="footer-column">
214
+ <h4 class="footer-title" data-i18n="footer_contact">Contacto</h4>
215
+ <div class="contact-info">
216
+ <p class="contact-item">
217
+ <i data-feather="mail" class="contact-icon w-4 h-4"></i>
218
+ <a href="mailto:info@lafraguadelogos.com" class="footer-link">info@lafraguadelogos.com</a>
219
+ </p>
220
+ <p class="contact-item">
221
+ <i data-feather="phone" class="contact-icon w-4 h-4"></i>
222
+ <a href="tel:+34123456789" class="footer-link">+34 123 456 789</a>
223
+ </p>
224
+ </div>
225
+ </div>
226
+ </div>
227
+
228
+ <div class="footer-bottom">
229
+ <div class="footer-bottom-container">
230
+ <p class="copyright">
231
+ &copy; <span id="currentYear"></span> <span data-i18n="footer_copyright">La Fragua del Logos. Todos los derechos reservados.</span>
232
+ </p>
233
+ <div class="legal-links">
234
+ <a href="privacy.html" class="legal-link" data-i18n="footer_privacy">Política de Privacidad</a>
235
+ <a href="terms.html" class="legal-link" data-i18n="footer_terms">Términos</a>
236
+ <a href="cookies.html" class="legal-link" data-i18n="footer_cookies">Cookies</a>
237
+ </div>
238
+ </div>
239
+ </div>
240
+ </footer>
241
+
242
+ <script>
243
+ document.getElementById('currentYear').textContent = new Date().getFullYear();
244
+ feather.replace();
245
+ </script>
246
+ `;
247
+ }
248
  }
249
 
250
  customElements.define('custom-footer', CustomFooter);
components/header.js ADDED
@@ -0,0 +1,275 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomHeader extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ header {
7
+ background: rgba(26, 26, 26, 0.95);
8
+ backdrop-filter: blur(10px);
9
+ border-bottom: 1px solid rgba(184, 134, 11, 0.3);
10
+ position: fixed;
11
+ top: 0;
12
+ width: 100%;
13
+ z-index: 1000;
14
+ padding: 1rem 0;
15
+ }
16
+
17
+ .header-container {
18
+ max-width: 1200px;
19
+ margin: 0 auto;
20
+ display: flex;
21
+ align-items: center;
22
+ justify-content: space-between;
23
+ padding: 0 2rem;
24
+ }
25
+
26
+ .logo-text {
27
+ font-family: 'Playfair Display', serif;
28
+ font-size: 1.8rem;
29
+ font-weight: 700;
30
+ color: #f4f4f4;
31
+ margin: 0;
32
+ letter-spacing: -0.5px;
33
+ }
34
+
35
+ .logo-subtitle {
36
+ font-family: 'Lato', sans-serif;
37
+ font-size: 0.7rem;
38
+ color: #b8860b;
39
+ letter-spacing: 1.5px;
40
+ text-transform: uppercase;
41
+ display: block;
42
+ margin-top: -2px;
43
+ }
44
+
45
+ .logo-link {
46
+ text-decoration: none;
47
+ transition: all 0.3s ease;
48
+ }
49
+
50
+ .logo-link:hover {
51
+ opacity: 0.8;
52
+ }
53
+
54
+ .nav-list {
55
+ display: flex;
56
+ list-style: none;
57
+ margin: 0;
58
+ padding: 0;
59
+ gap: 2rem;
60
+ }
61
+
62
+ .nav-link {
63
+ font-family: 'Lato', sans-serif;
64
+ color: #e0e0e0;
65
+ text-decoration: none;
66
+ font-size: 1rem;
67
+ font-weight: 400;
68
+ transition: all 0.3s ease;
69
+ position: relative;
70
+ padding: 0.5rem 0;
71
+ }
72
+
73
+ .nav-link:hover {
74
+ color: #b8860b;
75
+ }
76
+
77
+ .nav-link::after {
78
+ content: '';
79
+ position: absolute;
80
+ bottom: 0;
81
+ left: 0;
82
+ width: 0;
83
+ height: 2px;
84
+ background: #b8860b;
85
+ transition: width 0.3s ease;
86
+ }
87
+
88
+ .nav-link:hover::after {
89
+ width: 100%;
90
+ }
91
+
92
+ .nav-item.subtle {
93
+ margin-left: 1rem;
94
+ position: relative;
95
+ }
96
+
97
+ .nav-item.subtle::before {
98
+ content: '•';
99
+ color: #666;
100
+ margin-right: 1rem;
101
+ }
102
+
103
+ .subtle-link {
104
+ font-size: 0.9rem;
105
+ color: #999 !important;
106
+ }
107
+
108
+ .subtle-link:hover {
109
+ color: #b8860b !important;
110
+ }
111
+
112
+ .language-selector {
113
+ position: relative;
114
+ }
115
+
116
+ .language-btn {
117
+ background: rgba(184, 134, 11, 0.1);
118
+ border: 1px solid rgba(184, 134, 11, 0.3);
119
+ border-radius: 4px;
120
+ padding: 0.5rem 1rem;
121
+ color: #e0e0e0;
122
+ cursor: pointer;
123
+ display: flex;
124
+ align-items: center;
125
+ gap: 0.5rem;
126
+ transition: all 0.3s ease;
127
+ }
128
+
129
+ .language-btn:hover {
130
+ background: rgba(184, 134, 11, 0.2);
131
+ }
132
+
133
+ .language-dropdown {
134
+ position: absolute;
135
+ top: 100%;
136
+ right: 0;
137
+ background: #1a1a1a;
138
+ border: 1px solid rgba(184, 134, 11, 0.3);
139
+ border-radius: 4px;
140
+ padding: 0.5rem;
141
+ min-width: 150px;
142
+ display: none;
143
+ margin-top: 0.5rem;
144
+ }
145
+
146
+ .language-dropdown.show {
147
+ display: block;
148
+ }
149
+
150
+ .lang-option {
151
+ display: block;
152
+ padding: 0.5rem 1rem;
153
+ color: #e0e0e0;
154
+ text-decoration: none;
155
+ transition: all 0.3s ease;
156
+ border-radius: 2px;
157
+ }
158
+
159
+ .lang-option:hover {
160
+ background: rgba(184, 134, 11, 0.1);
161
+ color: #b8860b;
162
+ }
163
+
164
+ .mobile-menu-btn {
165
+ display: none;
166
+ flex-direction: column;
167
+ background: none;
168
+ border: none;
169
+ cursor: pointer;
170
+ padding: 0.5rem;
171
+ }
172
+
173
+ .mobile-menu-btn span {
174
+ width: 25px;
175
+ height: 2px;
176
+ background: #e0e0e0;
177
+ margin: 3px 0;
178
+ transition: 0.3s;
179
+ }
180
+
181
+ @media (max-width: 768px) {
182
+ .header-container {
183
+ padding: 0 1rem;
184
+ }
185
+
186
+ .main-nav, .language-selector {
187
+ display: none;
188
+ }
189
+
190
+ .mobile-menu-btn {
191
+ display: flex;
192
+ }
193
+
194
+ .logo-text {
195
+ font-size: 1.4rem;
196
+ }
197
+
198
+ .logo-subtitle {
199
+ font-size: 0.6rem;
200
+ }
201
+ }
202
+ </style>
203
+
204
+ <header class="header">
205
+ <div class="header-container">
206
+ <div class="logo">
207
+ <a href="index.html" class="logo-link">
208
+ <h1 class="logo-text" data-i18n="site_title">La Fragua del Logos</h1>
209
+ <span class="logo-subtitle" data-i18n="site_subtitle">Forjando Palabras, Creando Sentido</span>
210
+ </a>
211
+ </div>
212
+
213
+ <nav class="main-nav">
214
+ <ul class="nav-list">
215
+ <li class="nav-item"><a href="index.html" class="nav-link" data-i18n="nav_home">Inicio</a></li>
216
+ <li class="nav-item"><a href="#services" class="nav-link" data-i18n="nav_services">Servicios</a></li>
217
+ <li class="nav-item"><a href="blog.html" class="nav-link" data-i18n="nav_blog">Blog</a></li>
218
+ <li class="nav-item"><a href="#contact" class="nav-link" data-i18n="nav_contact">Contacto</a></li>
219
+ <li class="nav-item subtle">
220
+ <a href="about.html" class="nav-link subtle-link" data-i18n="nav_about">Sobre Mí</a>
221
+ </li>
222
+ </ul>
223
+ </nav>
224
+
225
+ <div class="language-selector">
226
+ <button class="language-btn" id="languageToggle">
227
+ <span class="flag">🇪🇸</span>
228
+ <span class="language-code">ES</span>
229
+ </button>
230
+ <div class="language-dropdown" id="languageDropdown">
231
+ <a href="#" data-lang="es" class="lang-option">🇪🇸 Español</a>
232
+ <a href="#" data-lang="en" class="lang-option">🇬🇧 English</a>
233
+ <a href="#" data-lang="fr" class="lang-option">🇫🇷 Français</a>
234
+ </div>
235
+ </div>
236
+
237
+ <button class="mobile-menu-btn" id="mobileMenuToggle">
238
+ <span></span>
239
+ <span></span>
240
+ <span></span>
241
+ </button>
242
+ </div>
243
+ </header>
244
+
245
+ <script>
246
+ document.addEventListener('DOMContentLoaded', function() {
247
+ const languageToggle = this.shadowRoot.getElementById('languageToggle');
248
+ const languageDropdown = this.shadowRoot.getElementById('languageDropdown');
249
+
250
+ languageToggle.addEventListener('click', function() {
251
+ languageDropdown.classList.toggle('show');
252
+ });
253
+
254
+ // Close dropdown when clicking outside
255
+ document.addEventListener('click', function(event) {
256
+ if (!event.target.closest('.language-selector')) {
257
+ languageDropdown.classList.remove('show');
258
+ }
259
+ });
260
+
261
+ // Mobile menu toggle
262
+ const mobileMenuToggle = this.shadowRoot.getElementById('mobileMenuToggle');
263
+ const mainNav = this.shadowRoot.querySelector('.main-nav');
264
+
265
+ mobileMenuToggle.addEventListener('click', function() {
266
+ mainNav.style.display = mainNav.style.display === 'none' ? 'block' : 'none';
267
+ languageDropdown.style.display = languageDropdown.style.display === 'none' ? 'block' : 'none';
268
+ });
269
+ });
270
+ </script>
271
+ `;
272
+ }
273
+ }
274
+
275
+ customElements.define('custom-header', CustomHeader);
index.html CHANGED
@@ -8,18 +8,17 @@
8
  <script src="https://cdn.tailwindcss.com"></script>
9
  <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
10
  <script src="https://unpkg.com/feather-icons"></script>
11
- <script src="components/navbar.js"></script>
12
  <script src="components/footer.js"></script>
13
- <script src="scripts/languages.js"></script>
14
  <script src="script.js"></script>
15
  <style>
16
  @import url('https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;700&family=Lato:wght@300;400;700&display=swap');
17
  </style>
18
  </head>
19
  <body class="bg-amber-50 text-gray-900 font-lato">
20
- <custom-navbar></custom-navbar>
21
-
22
- <main>
23
  <!-- Hero Section -->
24
  <section class="relative h-screen flex items-center justify-center bg-gradient-to-b from-gray-900 to-amber-900 overflow-hidden">
25
  <div class="absolute inset-0 bg-[url('http://static.photos/education/1200x630/1')] opacity-20 bg-cover bg-center"></div>
@@ -234,10 +233,8 @@
234
  </div>
235
  </section>
236
  </main>
237
-
238
  <custom-footer></custom-footer>
239
-
240
- <script>
241
  feather.replace();
242
  </script>
243
  <script src="https://huggingface.co/deepsite/deepsite-badge.js"></script>
 
8
  <script src="https://cdn.tailwindcss.com"></script>
9
  <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
10
  <script src="https://unpkg.com/feather-icons"></script>
11
+ <script src="components/header.js"></script>
12
  <script src="components/footer.js"></script>
13
+ <script src="scripts/languages.js"></script>
14
  <script src="script.js"></script>
15
  <style>
16
  @import url('https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;700&family=Lato:wght@300;400;700&display=swap');
17
  </style>
18
  </head>
19
  <body class="bg-amber-50 text-gray-900 font-lato">
20
+ <custom-header></custom-header>
21
+ <main>
 
22
  <!-- Hero Section -->
23
  <section class="relative h-screen flex items-center justify-center bg-gradient-to-b from-gray-900 to-amber-900 overflow-hidden">
24
  <div class="absolute inset-0 bg-[url('http://static.photos/education/1200x630/1')] opacity-20 bg-cover bg-center"></div>
 
233
  </div>
234
  </section>
235
  </main>
 
236
  <custom-footer></custom-footer>
237
+ <script>
 
238
  feather.replace();
239
  </script>
240
  <script src="https://huggingface.co/deepsite/deepsite-badge.js"></script>
scripts/languages.js CHANGED
@@ -1,7 +1,9 @@
1
  const translations = {
2
  'es': {
 
 
3
  'hero_title': 'Donde las palabras se forjan en ideas',
4
- 'hero_subtitle': 'Y las ideas en significado en el yunque del lenguaje',
5
  'hero_button': 'Descubre mi oficio',
6
  'services_title': 'Mi Artesanía Lingüística',
7
  'service1_title': 'Traducción',
@@ -50,11 +52,20 @@ const translations = {
50
  'footer_quicklinks': 'Enlaces Rápidos',
51
  'footer_connect': 'Conectar',
52
  'footer_email': 'Email: info@lafraguadelogos.com',
53
- 'footer_copyright': '© {currentYear} La Fragua del Logos. Forjado con palabras e ideas.'
54
- },
 
 
 
 
 
 
 
55
  'en': {
 
 
56
  'hero_title': 'Where words are forged into ideas',
57
- 'hero_subtitle': 'And ideas into meaning at the anvil of language',
58
  'hero_button': 'Discover my craft',
59
  'services_title': 'My Linguistic Craftsmanship',
60
  'service1_title': 'Translation',
@@ -104,11 +115,20 @@ const translations = {
104
  'footer_quicklinks': 'Quick Links',
105
  'footer_connect': 'Connect',
106
  'footer_email': 'Email: info@lafraguadelogos.com',
107
- 'footer_copyright': '© {currentYear} La Fragua del Logos. Forged with words and ideas.'
108
- },
 
 
 
 
 
 
 
109
  'fr': {
 
 
110
  'hero_title': 'Où les mots sont forgés en idées',
111
- 'hero_subtitle': 'Et les idées en sens sur l\'enclume du langage',
112
  'hero_button': 'Découvrez mon métier',
113
  'services_title': 'Mon Artisanat Linguistique',
114
  'service1_title': 'Traduction',
@@ -157,6 +177,13 @@ const translations = {
157
  'footer_quicklinks': 'Liens Rapides',
158
  'footer_connect': 'Se Connecter',
159
  'footer_email': 'Email: info@lafraguadelogos.com',
160
- 'footer_copyright': '© {currentYear} La Fragua del Logos. Forgé avec des mots et des idées.'
161
- }
 
 
 
 
 
 
 
162
  };
 
1
  const translations = {
2
  'es': {
3
+ 'site_title': 'La Fragua del Logos',
4
+ 'site_subtitle': 'Forjando Palabras, Creando Sentido',
5
  'hero_title': 'Donde las palabras se forjan en ideas',
6
+ 'hero_subtitle': 'Y las ideas en significado en el yunque del lenguaje',
7
  'hero_button': 'Descubre mi oficio',
8
  'services_title': 'Mi Artesanía Lingüística',
9
  'service1_title': 'Traducción',
 
52
  'footer_quicklinks': 'Enlaces Rápidos',
53
  'footer_connect': 'Conectar',
54
  'footer_email': 'Email: info@lafraguadelogos.com',
55
+ 'footer_copyright': '© {currentYear} La Fragua del Logos. Todos los derechos reservados.',
56
+ 'footer_tagline': 'Forjando significado a través de las palabras y el pensamiento',
57
+ 'footer_navigation': 'Navegación',
58
+ 'footer_services': 'Servicios',
59
+ 'footer_contact': 'Contacto',
60
+ 'footer_privacy': 'Política de Privacidad',
61
+ 'footer_terms': 'Términos',
62
+ 'footer_cookies': 'Cookies'
63
+ },
64
  'en': {
65
+ 'site_title': 'La Fragua del Logos',
66
+ 'site_subtitle': 'Forging Words, Creating Meaning',
67
  'hero_title': 'Where words are forged into ideas',
68
+ 'hero_subtitle': 'And ideas into meaning at the anvil of language',
69
  'hero_button': 'Discover my craft',
70
  'services_title': 'My Linguistic Craftsmanship',
71
  'service1_title': 'Translation',
 
115
  'footer_quicklinks': 'Quick Links',
116
  'footer_connect': 'Connect',
117
  'footer_email': 'Email: info@lafraguadelogos.com',
118
+ 'footer_copyright': '© {currentYear} La Fragua del Logos. All rights reserved.',
119
+ 'footer_tagline': 'Forging meaning through words and thought',
120
+ 'footer_navigation': 'Navigation',
121
+ 'footer_services': 'Services',
122
+ 'footer_contact': 'Contact',
123
+ 'footer_privacy': 'Privacy Policy',
124
+ 'footer_terms': 'Terms',
125
+ 'footer_cookies': 'Cookies'
126
+ },
127
  'fr': {
128
+ 'site_title': 'La Fragua del Logos',
129
+ 'site_subtitle': 'Forger des Mots, Créer du Sens',
130
  'hero_title': 'Où les mots sont forgés en idées',
131
+ 'hero_subtitle': 'Et les idées en sens sur l\'enclume du langage',
132
  'hero_button': 'Découvrez mon métier',
133
  'services_title': 'Mon Artisanat Linguistique',
134
  'service1_title': 'Traduction',
 
177
  'footer_quicklinks': 'Liens Rapides',
178
  'footer_connect': 'Se Connecter',
179
  'footer_email': 'Email: info@lafraguadelogos.com',
180
+ 'footer_copyright': '© {currentYear} La Fragua del Logos. Tous droits réservés.',
181
+ 'footer_tagline': 'Forger du sens à travers les mots et la pensée',
182
+ 'footer_navigation': 'Navigation',
183
+ 'footer_services': 'Services',
184
+ 'footer_contact': 'Contact',
185
+ 'footer_privacy': 'Politique de Confidentialité',
186
+ 'footer_terms': 'Conditions',
187
+ 'footer_cookies': 'Cookies'
188
+ }
189
  };