@jjlmoya/utils-diy 1.1.0 → 1.2.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/package.json +1 -1
- package/src/tool/drillCalculator/component.astro +5 -3
- package/src/tool/drillSharpener/i18n/es.ts +2 -2
- package/src/tool/mortarCalculator/i18n/es.ts +1 -1
- package/src/tool/stairCalculator/bibliography.astro +10 -49
- package/src/tool/stairCalculator/component.astro +30 -5
- package/src/tool/stairCalculator/seo.astro +11 -208
- package/src/tool/thermalExpansionCalculator/component.astro +1 -1
package/package.json
CHANGED
|
@@ -416,9 +416,7 @@ const t = (ui ?? {}) as DrillCalculatorUI;
|
|
|
416
416
|
--dc-border: rgba(255, 255, 255, 0.1);
|
|
417
417
|
}
|
|
418
418
|
|
|
419
|
-
|
|
420
|
-
display: none;
|
|
421
|
-
}
|
|
419
|
+
|
|
422
420
|
|
|
423
421
|
.dc-root {
|
|
424
422
|
width: 100%;
|
|
@@ -1207,4 +1205,8 @@ const t = (ui ?? {}) as DrillCalculatorUI;
|
|
|
1207
1205
|
font-size: 3.5rem;
|
|
1208
1206
|
}
|
|
1209
1207
|
}
|
|
1208
|
+
|
|
1209
|
+
:global(.hidden) {
|
|
1210
|
+
display: none;
|
|
1211
|
+
}
|
|
1210
1212
|
</style>
|
|
@@ -2,8 +2,8 @@ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'sche
|
|
|
2
2
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
3
|
import type { DrillSharpenerUI } from '../ui';
|
|
4
4
|
|
|
5
|
-
const slug = '
|
|
6
|
-
const title = '
|
|
5
|
+
const slug = 'afilado-maestro-brocas';
|
|
6
|
+
const title = 'Afilado Maestro de Brocas: Galga de Precisión';
|
|
7
7
|
const description = 'Guía interactiva para afilar brocas HSS. Galga digital en pantalla para verificar ángulos de 118° y 135°. Calcula RPM y diagnostica errores de corte.';
|
|
8
8
|
|
|
9
9
|
const faqData = [
|
|
@@ -2,7 +2,7 @@ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'sche
|
|
|
2
2
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
3
|
import type { MortarCalculatorUI } from '../ui';
|
|
4
4
|
|
|
5
|
-
const slug = 'morteros
|
|
5
|
+
const slug = 'morteros';
|
|
6
6
|
const title = 'Proporciones Morteros de Cal Tradicionales: Enfoscados y Revocos';
|
|
7
7
|
const description =
|
|
8
8
|
'Calculadora gratuita para morteros de cal y arena. Obtén las proporciones exactas para enfoscados, revocos y enlucidos según métodos tradicionales (Vitruvio)';
|
|
@@ -1,52 +1,13 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
2
|
+
import { Bibliography as SharedBibliography } from '@jjlmoya/utils-shared';
|
|
3
|
+
import { stairCalculator } from './index';
|
|
4
|
+
import type { KnownLocale } from '../../types';
|
|
3
5
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
</a>
|
|
11
|
-
</li>
|
|
12
|
-
<li>
|
|
13
|
-
<a href="https://es.wikipedia.org/wiki/Escalera" target="_blank" rel="noopener noreferrer">
|
|
14
|
-
Ergonomía de la Escalera - Wikipedia
|
|
15
|
-
</a>
|
|
16
|
-
</li>
|
|
17
|
-
<li>
|
|
18
|
-
<a href="https://www.idae.es/" target="_blank" rel="noopener noreferrer">
|
|
19
|
-
Instituto para la Diversificación y Ahorro de la Energía (IDAE)
|
|
20
|
-
</a>
|
|
21
|
-
</li>
|
|
22
|
-
</ul>
|
|
23
|
-
</div>
|
|
6
|
+
interface Props {
|
|
7
|
+
locale?: KnownLocale;
|
|
8
|
+
}
|
|
9
|
+
const { locale = 'es' } = Astro.props;
|
|
10
|
+
const content = await stairCalculator.i18n[locale]?.();
|
|
11
|
+
---
|
|
24
12
|
|
|
25
|
-
<
|
|
26
|
-
.sc-bibliography {
|
|
27
|
-
max-width: 900px;
|
|
28
|
-
margin: 2rem auto;
|
|
29
|
-
padding: 1.5rem;
|
|
30
|
-
}
|
|
31
|
-
.sc-bibliography h3 {
|
|
32
|
-
font-size: 1.25rem;
|
|
33
|
-
font-weight: 700;
|
|
34
|
-
margin-bottom: 1rem;
|
|
35
|
-
color: #1e293b;
|
|
36
|
-
}
|
|
37
|
-
.sc-bibliography ul {
|
|
38
|
-
list-style: none;
|
|
39
|
-
padding: 0;
|
|
40
|
-
}
|
|
41
|
-
.sc-bibliography li {
|
|
42
|
-
margin-bottom: 0.75rem;
|
|
43
|
-
}
|
|
44
|
-
.sc-bibliography a {
|
|
45
|
-
color: #4f46e5;
|
|
46
|
-
text-decoration: none;
|
|
47
|
-
font-weight: 600;
|
|
48
|
-
}
|
|
49
|
-
.sc-bibliography a:hover {
|
|
50
|
-
text-decoration: underline;
|
|
51
|
-
}
|
|
52
|
-
</style>
|
|
13
|
+
{content && <SharedBibliography links={content.bibliography} />}
|
|
@@ -457,9 +457,13 @@ const t = (ui ?? {}) as StairCalculatorUI;
|
|
|
457
457
|
display: flex;
|
|
458
458
|
align-items: center;
|
|
459
459
|
background: rgba(255, 255, 255, 0.5);
|
|
460
|
-
border-radius:
|
|
460
|
+
border-radius: 1.25rem;
|
|
461
461
|
border: 2px solid var(--sc-border);
|
|
462
462
|
transition: all 0.2s ease;
|
|
463
|
+
padding: 3px;
|
|
464
|
+
gap: 2px;
|
|
465
|
+
width: 100%;
|
|
466
|
+
box-sizing: border-box;
|
|
463
467
|
}
|
|
464
468
|
|
|
465
469
|
:global(.theme-dark) .sc-stepper {
|
|
@@ -480,9 +484,12 @@ const t = (ui ?? {}) as StairCalculatorUI;
|
|
|
480
484
|
background: none;
|
|
481
485
|
border: none;
|
|
482
486
|
color: var(--sc-neutral-light);
|
|
483
|
-
font-size: 1.
|
|
487
|
+
font-size: 1.6rem;
|
|
488
|
+
font-weight: 800;
|
|
484
489
|
cursor: pointer;
|
|
485
|
-
border-radius: 0.
|
|
490
|
+
border-radius: 0.85rem;
|
|
491
|
+
transition: all 0.2s ease;
|
|
492
|
+
flex-shrink: 0;
|
|
486
493
|
}
|
|
487
494
|
|
|
488
495
|
.sc-step-btn:hover {
|
|
@@ -492,6 +499,7 @@ const t = (ui ?? {}) as StairCalculatorUI;
|
|
|
492
499
|
|
|
493
500
|
.sc-stepper input {
|
|
494
501
|
flex: 1;
|
|
502
|
+
min-width: 0;
|
|
495
503
|
background: none;
|
|
496
504
|
border: none;
|
|
497
505
|
color: var(--sc-neutral);
|
|
@@ -511,7 +519,7 @@ const t = (ui ?? {}) as StairCalculatorUI;
|
|
|
511
519
|
|
|
512
520
|
.sc-select {
|
|
513
521
|
width: 100%;
|
|
514
|
-
padding: 0.8rem;
|
|
522
|
+
padding: 0.8rem 2.8rem 0.8rem 1rem;
|
|
515
523
|
border-radius: 1rem;
|
|
516
524
|
border: 2px solid var(--sc-border);
|
|
517
525
|
background: rgba(255, 255, 255, 0.5);
|
|
@@ -520,10 +528,27 @@ const t = (ui ?? {}) as StairCalculatorUI;
|
|
|
520
528
|
color: var(--sc-neutral);
|
|
521
529
|
outline: none;
|
|
522
530
|
transition: all 0.2s ease;
|
|
531
|
+
appearance: none;
|
|
532
|
+
-webkit-appearance: none;
|
|
533
|
+
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='%236366f1' d='M7.41 8.58L12 13.17l4.59-4.59L18 10l-6 6l-6-6l1.41-1.42Z'/%3E%3C/svg%3E");
|
|
534
|
+
background-repeat: no-repeat;
|
|
535
|
+
background-position: right 1rem center;
|
|
536
|
+
cursor: pointer;
|
|
523
537
|
}
|
|
524
538
|
|
|
525
539
|
:global(.theme-dark) .sc-select {
|
|
526
|
-
background:
|
|
540
|
+
background-color: #0f172a;
|
|
541
|
+
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='%23818cf8' d='M7.41 8.58L12 13.17l4.59-4.59L18 10l-6 6l-6-6l1.41-1.42Z'/%3E%3C/svg%3E");
|
|
542
|
+
}
|
|
543
|
+
|
|
544
|
+
.sc-select option {
|
|
545
|
+
background: white;
|
|
546
|
+
color: #1e293b;
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
:global(.theme-dark) .sc-select option {
|
|
550
|
+
background: #1e293b;
|
|
551
|
+
color: #f1f5f9;
|
|
527
552
|
}
|
|
528
553
|
|
|
529
554
|
.sc-optimize-btn {
|
|
@@ -1,211 +1,14 @@
|
|
|
1
1
|
---
|
|
2
|
+
import { SEORenderer } from '@jjlmoya/utils-shared';
|
|
3
|
+
import { stairCalculator } from './index';
|
|
4
|
+
import type { KnownLocale } from '../../types';
|
|
5
|
+
|
|
6
|
+
interface Props {
|
|
7
|
+
locale?: KnownLocale;
|
|
8
|
+
}
|
|
9
|
+
const { locale = 'es' } = Astro.props;
|
|
10
|
+
const content = await stairCalculator.i18n[locale]?.();
|
|
11
|
+
if (!content) return null;
|
|
2
12
|
---
|
|
3
13
|
|
|
4
|
-
<
|
|
5
|
-
<h2>Calculadora de Escaleras: Diseño y Ejecución en Obra</h2>
|
|
6
|
-
|
|
7
|
-
<p>
|
|
8
|
-
Diseñar una escalera no es solo una cuestión estética; es un desafío de ingeniería y ergonomía. Nuestra herramienta avanzada permite calcular desde la <strong>geometría básica</strong> hasta la <strong>cubicación de hormigón</strong>, integrando factores críticos de obra como el espesor de la losa y los materiales de acabado.
|
|
9
|
-
</p>
|
|
10
|
-
|
|
11
|
-
<div class="sc-seo-summary">
|
|
12
|
-
<h3>Capacidades de la Herramienta</h3>
|
|
13
|
-
<ul>
|
|
14
|
-
<li>Relación de <strong>Blondel (2CH + H)</strong> optimizada.</li>
|
|
15
|
-
<li>Cálculo de <strong>volumen de hormigón</strong> real (peldaños + losa).</li>
|
|
16
|
-
<li>Compensación por <strong>espesor de acabado</strong> (mármol, madera).</li>
|
|
17
|
-
<li>Guía de <strong>replanteo acumulado</strong> para evitar errores métricos.</li>
|
|
18
|
-
</ul>
|
|
19
|
-
</div>
|
|
20
|
-
|
|
21
|
-
<h3>Fundamentos Técnicos: La Ley de Blondel</h3>
|
|
22
|
-
|
|
23
|
-
<p>
|
|
24
|
-
La comodidad de una escalera depende de la longitud del paso humano. El estándar internacional establece que la suma de dos contrahuellas y una huella debe estar en el rango de <strong>62 a 64 cm</strong>.
|
|
25
|
-
</p>
|
|
26
|
-
|
|
27
|
-
<div class="sc-seo-tip">
|
|
28
|
-
<h4>Optimización de Peldaños</h4>
|
|
29
|
-
<p>
|
|
30
|
-
Una contrahuella de <strong>18 cm</strong> es el estándar de confort en viviendas. Si tienes dudas sobre cuántos peldaños usar, nuestra calculadora incluye un botón de optimización automática que ajusta el número de niveles para acercarse a esta medida ideal.
|
|
31
|
-
</p>
|
|
32
|
-
</div>
|
|
33
|
-
|
|
34
|
-
<h3>Control de Estructura y Materiales</h3>
|
|
35
|
-
|
|
36
|
-
<p>
|
|
37
|
-
Para una ejecución profesional, es vital considerar la <strong>losa de hormigón</strong> (el plano inclinado que sostiene los escalones). Ignorar este volumen resultaría en un pedido de hormigón insuficiente.
|
|
38
|
-
</p>
|
|
39
|
-
|
|
40
|
-
<div class="sc-seo-stats">
|
|
41
|
-
<div class="sc-stat">
|
|
42
|
-
<span class="sc-stat-label">Losa Estándar</span>
|
|
43
|
-
<span class="sc-stat-value">15</span>
|
|
44
|
-
<span class="sc-stat-unit">cm</span>
|
|
45
|
-
</div>
|
|
46
|
-
<div class="sc-stat">
|
|
47
|
-
<span class="sc-stat-label">CH Vivienda</span>
|
|
48
|
-
<span class="sc-stat-value">17.5</span>
|
|
49
|
-
<span class="sc-stat-unit">cm</span>
|
|
50
|
-
</div>
|
|
51
|
-
<div class="sc-stat">
|
|
52
|
-
<span class="sc-stat-label">Ángulo Ideal</span>
|
|
53
|
-
<span class="sc-stat-value">32</span>
|
|
54
|
-
<span class="sc-stat-unit">º</span>
|
|
55
|
-
</div>
|
|
56
|
-
</div>
|
|
57
|
-
|
|
58
|
-
<h3>Replanteo y Trazado: El Error Acumulado</h3>
|
|
59
|
-
|
|
60
|
-
<p>
|
|
61
|
-
En la construcción de escaleras, el mayor enemigo es el error milimétrico. Si mides cada escalón por separado, la suma de pequeños errores puede dejar el último peldaño con una altura peligrosa (el famoso 'escalón cojo').
|
|
62
|
-
</p>
|
|
63
|
-
|
|
64
|
-
<table class="sc-seo-table">
|
|
65
|
-
<thead>
|
|
66
|
-
<tr>
|
|
67
|
-
<th>Método</th>
|
|
68
|
-
<th>Precisión</th>
|
|
69
|
-
<th>Resultado en Obra</th>
|
|
70
|
-
</tr>
|
|
71
|
-
</thead>
|
|
72
|
-
<tbody>
|
|
73
|
-
<tr>
|
|
74
|
-
<td>Medición Individual</td>
|
|
75
|
-
<td>Baja</td>
|
|
76
|
-
<td>Riesgo de tropiezos por desigualdad.</td>
|
|
77
|
-
</tr>
|
|
78
|
-
<tr>
|
|
79
|
-
<td><strong>Trazado Acumulado</strong></td>
|
|
80
|
-
<td><strong>Alta</strong></td>
|
|
81
|
-
<td><strong>Peldaños idénticos y seguros.</strong></td>
|
|
82
|
-
</tr>
|
|
83
|
-
</tbody>
|
|
84
|
-
</table>
|
|
85
|
-
|
|
86
|
-
<h3>Previsión de Acabados Finales</h3>
|
|
87
|
-
|
|
88
|
-
<p>
|
|
89
|
-
¿Vas a instalar peldaños de granito de 3 cm? Este dato es fundamental. Si no se prevé, el primer peldaño quedará 3 cm más alto y el último 3 cm más bajo respecto al suelo terminado. Nuestra calculadora ajusta estos niveles para que, tras la colocación del material, la escalera sea perfecta de principio a fin.
|
|
90
|
-
</p>
|
|
91
|
-
|
|
92
|
-
<pre class="sc-seo-code"><code>
|
|
93
|
-
# Ejemplo de Cálculo Total
|
|
94
|
-
Desnivel: 300 cm
|
|
95
|
-
Peldaños: 17 (CH = 17.6 cm)
|
|
96
|
-
Espesor Rampa: 15 cm
|
|
97
|
-
# Vol. Hormigón = Vol. Triángulos + Vol. Rampa
|
|
98
|
-
</code></pre>
|
|
99
|
-
</article>
|
|
100
|
-
|
|
101
|
-
<style>
|
|
102
|
-
.sc-seo-article {
|
|
103
|
-
max-width: 900px;
|
|
104
|
-
margin: 2rem auto;
|
|
105
|
-
padding: 0 1.5rem;
|
|
106
|
-
color: #1e293b;
|
|
107
|
-
line-height: 1.6;
|
|
108
|
-
}
|
|
109
|
-
.sc-seo-article h2 {
|
|
110
|
-
font-size: 1.875rem;
|
|
111
|
-
font-weight: 800;
|
|
112
|
-
margin: 1.5rem 0 1rem;
|
|
113
|
-
color: #0f172a;
|
|
114
|
-
}
|
|
115
|
-
.sc-seo-article h3 {
|
|
116
|
-
font-size: 1.25rem;
|
|
117
|
-
font-weight: 700;
|
|
118
|
-
margin: 1.5rem 0 0.75rem;
|
|
119
|
-
color: #1e293b;
|
|
120
|
-
}
|
|
121
|
-
.sc-seo-article h4 {
|
|
122
|
-
font-size: 1rem;
|
|
123
|
-
font-weight: 700;
|
|
124
|
-
margin: 0.75rem 0 0.5rem;
|
|
125
|
-
}
|
|
126
|
-
.sc-seo-article p {
|
|
127
|
-
margin-bottom: 1rem;
|
|
128
|
-
}
|
|
129
|
-
.sc-seo-summary {
|
|
130
|
-
background: #f0f9ff;
|
|
131
|
-
border-left: 4px solid #4f46e5;
|
|
132
|
-
padding: 1.25rem;
|
|
133
|
-
border-radius: 0.5rem;
|
|
134
|
-
margin: 1.25rem 0;
|
|
135
|
-
}
|
|
136
|
-
.sc-seo-summary ul {
|
|
137
|
-
margin: 0.75rem 0 0;
|
|
138
|
-
padding-left: 1.5rem;
|
|
139
|
-
}
|
|
140
|
-
.sc-seo-summary li {
|
|
141
|
-
margin-bottom: 0.5rem;
|
|
142
|
-
}
|
|
143
|
-
.sc-seo-tip {
|
|
144
|
-
background: #fef9c3;
|
|
145
|
-
border-left: 4px solid #f59e0b;
|
|
146
|
-
padding: 1.25rem;
|
|
147
|
-
border-radius: 0.5rem;
|
|
148
|
-
margin: 1.25rem 0;
|
|
149
|
-
}
|
|
150
|
-
.sc-seo-tip p {
|
|
151
|
-
margin: 0;
|
|
152
|
-
}
|
|
153
|
-
.sc-seo-stats {
|
|
154
|
-
display: grid;
|
|
155
|
-
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
|
|
156
|
-
gap: 1rem;
|
|
157
|
-
margin: 1.25rem 0;
|
|
158
|
-
}
|
|
159
|
-
.sc-stat {
|
|
160
|
-
background: #fff;
|
|
161
|
-
border: 1px solid #e2e8f0;
|
|
162
|
-
border-radius: 0.75rem;
|
|
163
|
-
padding: 1rem;
|
|
164
|
-
text-align: center;
|
|
165
|
-
}
|
|
166
|
-
.sc-stat-label {
|
|
167
|
-
display: block;
|
|
168
|
-
font-size: 0.8rem;
|
|
169
|
-
color: #64748b;
|
|
170
|
-
margin-bottom: 0.5rem;
|
|
171
|
-
font-weight: 600;
|
|
172
|
-
}
|
|
173
|
-
.sc-stat-value {
|
|
174
|
-
display: block;
|
|
175
|
-
font-size: 1.875rem;
|
|
176
|
-
font-weight: 800;
|
|
177
|
-
color: #4f46e5;
|
|
178
|
-
}
|
|
179
|
-
.sc-stat-unit {
|
|
180
|
-
display: block;
|
|
181
|
-
font-size: 0.75rem;
|
|
182
|
-
color: #64748b;
|
|
183
|
-
margin-top: 0.25rem;
|
|
184
|
-
}
|
|
185
|
-
.sc-seo-table {
|
|
186
|
-
width: 100%;
|
|
187
|
-
border-collapse: collapse;
|
|
188
|
-
margin: 1.25rem 0;
|
|
189
|
-
border: 1px solid #e2e8f0;
|
|
190
|
-
}
|
|
191
|
-
.sc-seo-table th {
|
|
192
|
-
background: #f1f5f9;
|
|
193
|
-
padding: 0.75rem;
|
|
194
|
-
text-align: left;
|
|
195
|
-
font-weight: 700;
|
|
196
|
-
border-bottom: 2px solid #e2e8f0;
|
|
197
|
-
}
|
|
198
|
-
.sc-seo-table td {
|
|
199
|
-
padding: 0.75rem;
|
|
200
|
-
border-bottom: 1px solid #e2e8f0;
|
|
201
|
-
}
|
|
202
|
-
.sc-seo-code {
|
|
203
|
-
background: #1e293b;
|
|
204
|
-
color: #e2e8f0;
|
|
205
|
-
padding: 1.25rem;
|
|
206
|
-
border-radius: 0.75rem;
|
|
207
|
-
overflow-x: auto;
|
|
208
|
-
margin: 1.25rem 0;
|
|
209
|
-
font-size: 0.9rem;
|
|
210
|
-
}
|
|
211
|
-
</style>
|
|
14
|
+
<SEORenderer content={{ locale: locale as string, sections: content.seo }} />
|
|
@@ -410,7 +410,7 @@ const t = (ui ?? {}) as ThermalExpansionCalculatorUI;
|
|
|
410
410
|
:global(.theme-dark) .te-input {
|
|
411
411
|
background: rgba(0, 0, 0, 0.25);
|
|
412
412
|
border-color: rgba(255, 255, 255, 0.1);
|
|
413
|
-
color:
|
|
413
|
+
color: #f9fafb;
|
|
414
414
|
}
|
|
415
415
|
|
|
416
416
|
:global(.theme-dark) .te-input:focus {
|