@jjlmoya/utils-textiles 1.20.0 → 1.22.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.
Files changed (209) hide show
  1. package/package.json +1 -1
  2. package/src/category/i18n/de.ts +76 -76
  3. package/src/category/i18n/en.ts +76 -76
  4. package/src/category/i18n/es.ts +76 -76
  5. package/src/category/i18n/fr.ts +76 -76
  6. package/src/category/i18n/id.ts +76 -76
  7. package/src/category/i18n/it.ts +76 -76
  8. package/src/category/i18n/ja.ts +76 -76
  9. package/src/category/i18n/ko.ts +76 -76
  10. package/src/category/i18n/nl.ts +76 -76
  11. package/src/category/i18n/pl.ts +76 -76
  12. package/src/category/i18n/pt.ts +76 -76
  13. package/src/category/i18n/ru.ts +76 -76
  14. package/src/category/i18n/sv.ts +76 -76
  15. package/src/category/i18n/zh.ts +76 -76
  16. package/src/category/index.ts +2 -0
  17. package/src/category/seo.astro +1 -1
  18. package/src/components/PreviewNavSidebar.astro +1 -1
  19. package/src/components/PreviewToolbar.astro +1 -1
  20. package/src/data.ts +1 -1
  21. package/src/entries.ts +4 -1
  22. package/src/env.d.ts +1 -1
  23. package/src/index.ts +1 -1
  24. package/src/layouts/PreviewLayout.astro +113 -113
  25. package/src/pages/index.astro +1 -1
  26. package/src/tests/faq_count.test.ts +19 -19
  27. package/src/tests/i18n_coverage.test.ts +4 -2
  28. package/src/tests/locale_spelling.test.ts +44 -0
  29. package/src/tests/mocks/astro_mock.js +1 -1
  30. package/src/tests/no_en_dash.test.ts +70 -70
  31. package/src/tests/no_h1_in_components.test.ts +1 -1
  32. package/src/tests/seo_length.test.ts +22 -22
  33. package/src/tests/seo_translation_completeness.test.ts +69 -0
  34. package/src/tests/spanish_leakage.test.ts +175 -153
  35. package/src/tests/tool_validation.test.ts +17 -17
  36. package/src/tool/burnTest/i18n/es.ts +211 -211
  37. package/src/tool/burnTest/i18n/fr.ts +211 -211
  38. package/src/tool/burnTest/i18n/ja.ts +211 -211
  39. package/src/tool/burnTest/i18n/ko.ts +211 -211
  40. package/src/tool/burnTest/i18n/pl.ts +211 -211
  41. package/src/tool/burnTest/i18n/ru.ts +211 -211
  42. package/src/tool/burnTest/i18n/sv.ts +211 -211
  43. package/src/tool/burnTest/i18n/zh.ts +211 -211
  44. package/src/tool/burnTest/seo.astro +15 -15
  45. package/src/tool/clothingSizeConverter/i18n/de.ts +348 -348
  46. package/src/tool/clothingSizeConverter/i18n/en.ts +348 -348
  47. package/src/tool/clothingSizeConverter/i18n/fr.ts +348 -348
  48. package/src/tool/clothingSizeConverter/i18n/ja.ts +348 -348
  49. package/src/tool/clothingSizeConverter/i18n/ko.ts +348 -348
  50. package/src/tool/clothingSizeConverter/i18n/nl.ts +348 -348
  51. package/src/tool/clothingSizeConverter/i18n/pl.ts +348 -348
  52. package/src/tool/clothingSizeConverter/i18n/ru.ts +348 -348
  53. package/src/tool/clothingSizeConverter/i18n/sv.ts +348 -348
  54. package/src/tool/clothingSizeConverter/i18n/tr.ts +348 -348
  55. package/src/tool/clothingSizeConverter/i18n/zh.ts +348 -348
  56. package/src/tool/clothingSizeConverter/seo.astro +15 -15
  57. package/src/tool/embroideryStitchPricingEstimator/bibliography.astro +6 -0
  58. package/src/tool/embroideryStitchPricingEstimator/bibliography.ts +12 -0
  59. package/src/tool/embroideryStitchPricingEstimator/component.astro +111 -0
  60. package/src/tool/embroideryStitchPricingEstimator/controller.ts +111 -0
  61. package/src/tool/embroideryStitchPricingEstimator/dom-views.ts +94 -0
  62. package/src/tool/embroideryStitchPricingEstimator/embroidery-stitch-count-pricing-estimator.css +438 -0
  63. package/src/tool/embroideryStitchPricingEstimator/entry.ts +29 -0
  64. package/src/tool/embroideryStitchPricingEstimator/evaluator.ts +22 -0
  65. package/src/tool/embroideryStitchPricingEstimator/i18n/de.ts +38 -0
  66. package/src/tool/embroideryStitchPricingEstimator/i18n/en.ts +194 -0
  67. package/src/tool/embroideryStitchPricingEstimator/i18n/es.ts +38 -0
  68. package/src/tool/embroideryStitchPricingEstimator/i18n/fr.ts +38 -0
  69. package/src/tool/embroideryStitchPricingEstimator/i18n/id.ts +38 -0
  70. package/src/tool/embroideryStitchPricingEstimator/i18n/it.ts +38 -0
  71. package/src/tool/embroideryStitchPricingEstimator/i18n/ja.ts +38 -0
  72. package/src/tool/embroideryStitchPricingEstimator/i18n/ko.ts +38 -0
  73. package/src/tool/embroideryStitchPricingEstimator/i18n/nl.ts +38 -0
  74. package/src/tool/embroideryStitchPricingEstimator/i18n/pl.ts +38 -0
  75. package/src/tool/embroideryStitchPricingEstimator/i18n/pt.ts +38 -0
  76. package/src/tool/embroideryStitchPricingEstimator/i18n/ru.ts +38 -0
  77. package/src/tool/embroideryStitchPricingEstimator/i18n/sv.ts +38 -0
  78. package/src/tool/embroideryStitchPricingEstimator/i18n/tr.ts +38 -0
  79. package/src/tool/embroideryStitchPricingEstimator/i18n/zh.ts +38 -0
  80. package/src/tool/embroideryStitchPricingEstimator/index.ts +11 -0
  81. package/src/tool/embroideryStitchPricingEstimator/logic.test.ts +40 -0
  82. package/src/tool/embroideryStitchPricingEstimator/logic.ts +86 -0
  83. package/src/tool/embroideryStitchPricingEstimator/seo.astro +15 -0
  84. package/src/tool/embroideryStitchPricingEstimator/storage.ts +20 -0
  85. package/src/tool/embroideryStitchPricingEstimator/ui.ts +53 -0
  86. package/src/tool/fabricProjectCalculator/i18n/de.ts +236 -236
  87. package/src/tool/fabricProjectCalculator/i18n/ja.ts +236 -236
  88. package/src/tool/fabricProjectCalculator/i18n/ko.ts +236 -236
  89. package/src/tool/fabricProjectCalculator/i18n/nl.ts +236 -236
  90. package/src/tool/fabricProjectCalculator/i18n/pl.ts +236 -236
  91. package/src/tool/fabricProjectCalculator/i18n/ru.ts +236 -236
  92. package/src/tool/fabricProjectCalculator/i18n/sv.ts +236 -236
  93. package/src/tool/fabricProjectCalculator/i18n/tr.ts +236 -236
  94. package/src/tool/fabricProjectCalculator/i18n/zh.ts +236 -236
  95. package/src/tool/fabricProjectCalculator/seo.astro +15 -15
  96. package/src/tool/fabricTruth/i18n/de.ts +268 -268
  97. package/src/tool/fabricTruth/i18n/en.ts +268 -268
  98. package/src/tool/fabricTruth/i18n/es.ts +302 -302
  99. package/src/tool/fabricTruth/i18n/fr.ts +268 -268
  100. package/src/tool/fabricTruth/i18n/id.ts +268 -268
  101. package/src/tool/fabricTruth/i18n/it.ts +268 -268
  102. package/src/tool/fabricTruth/i18n/ja.ts +268 -268
  103. package/src/tool/fabricTruth/i18n/ko.ts +268 -268
  104. package/src/tool/fabricTruth/i18n/nl.ts +268 -268
  105. package/src/tool/fabricTruth/i18n/pl.ts +268 -268
  106. package/src/tool/fabricTruth/i18n/pt.ts +268 -268
  107. package/src/tool/fabricTruth/i18n/ru.ts +268 -268
  108. package/src/tool/fabricTruth/i18n/sv.ts +268 -268
  109. package/src/tool/fabricTruth/i18n/tr.ts +268 -268
  110. package/src/tool/fabricTruth/i18n/zh.ts +272 -272
  111. package/src/tool/fabricTruth/seo.astro +15 -15
  112. package/src/tool/fiberPrep/i18n/de.ts +215 -215
  113. package/src/tool/fiberPrep/i18n/fr.ts +215 -215
  114. package/src/tool/fiberPrep/i18n/ja.ts +215 -215
  115. package/src/tool/fiberPrep/i18n/ko.ts +215 -215
  116. package/src/tool/fiberPrep/i18n/nl.ts +215 -215
  117. package/src/tool/fiberPrep/i18n/pl.ts +215 -215
  118. package/src/tool/fiberPrep/i18n/ru.ts +215 -215
  119. package/src/tool/fiberPrep/i18n/sv.ts +215 -215
  120. package/src/tool/fiberPrep/i18n/tr.ts +215 -215
  121. package/src/tool/fiberPrep/i18n/zh.ts +215 -215
  122. package/src/tool/fiberPrep/seo.astro +15 -15
  123. package/src/tool/knittingGauge/i18n/de.ts +224 -224
  124. package/src/tool/knittingGauge/i18n/ja.ts +224 -224
  125. package/src/tool/knittingGauge/i18n/ko.ts +224 -224
  126. package/src/tool/knittingGauge/i18n/pl.ts +224 -224
  127. package/src/tool/knittingGauge/i18n/ru.ts +224 -224
  128. package/src/tool/knittingGauge/i18n/tr.ts +224 -224
  129. package/src/tool/knittingGauge/i18n/zh.ts +224 -224
  130. package/src/tool/knittingGauge/seo.astro +15 -15
  131. package/src/tool/laundryGuide/i18n/de.ts +271 -271
  132. package/src/tool/laundryGuide/i18n/en.ts +271 -271
  133. package/src/tool/laundryGuide/i18n/es.ts +271 -271
  134. package/src/tool/laundryGuide/i18n/fr.ts +255 -255
  135. package/src/tool/laundryGuide/i18n/id.ts +271 -271
  136. package/src/tool/laundryGuide/i18n/it.ts +271 -271
  137. package/src/tool/laundryGuide/i18n/ja.ts +271 -271
  138. package/src/tool/laundryGuide/i18n/ko.ts +271 -271
  139. package/src/tool/laundryGuide/i18n/nl.ts +271 -271
  140. package/src/tool/laundryGuide/i18n/pl.ts +271 -271
  141. package/src/tool/laundryGuide/i18n/pt.ts +271 -271
  142. package/src/tool/laundryGuide/i18n/ru.ts +271 -271
  143. package/src/tool/laundryGuide/i18n/sv.ts +271 -271
  144. package/src/tool/laundryGuide/i18n/tr.ts +271 -271
  145. package/src/tool/laundryGuide/i18n/zh.ts +271 -271
  146. package/src/tool/laundryGuide/seo.astro +15 -15
  147. package/src/tool/needleConverter/i18n/de.ts +202 -202
  148. package/src/tool/needleConverter/i18n/es.ts +207 -207
  149. package/src/tool/needleConverter/i18n/fr.ts +207 -207
  150. package/src/tool/needleConverter/i18n/ja.ts +202 -202
  151. package/src/tool/needleConverter/i18n/ko.ts +202 -202
  152. package/src/tool/needleConverter/i18n/nl.ts +202 -202
  153. package/src/tool/needleConverter/i18n/pl.ts +202 -202
  154. package/src/tool/needleConverter/i18n/ru.ts +202 -202
  155. package/src/tool/needleConverter/i18n/sv.ts +202 -202
  156. package/src/tool/needleConverter/i18n/tr.ts +202 -202
  157. package/src/tool/needleConverter/i18n/zh.ts +202 -202
  158. package/src/tool/needleConverter/seo.astro +15 -15
  159. package/src/tool/sewingPatternScaler/component.astro +236 -236
  160. package/src/tool/sewingPatternScaler/i18n/fr.ts +170 -170
  161. package/src/tool/sewingPatternScaler/i18n/ja.ts +114 -114
  162. package/src/tool/sewingPatternScaler/i18n/ko.ts +114 -114
  163. package/src/tool/sewingPatternScaler/i18n/nl.ts +114 -114
  164. package/src/tool/sewingPatternScaler/i18n/pl.ts +114 -114
  165. package/src/tool/sewingPatternScaler/i18n/ru.ts +114 -114
  166. package/src/tool/sewingPatternScaler/i18n/sv.ts +114 -114
  167. package/src/tool/sewingPatternScaler/i18n/tr.ts +114 -114
  168. package/src/tool/sewingPatternScaler/i18n/zh.ts +114 -114
  169. package/src/tool/sewingPatternScaler/seo.astro +15 -15
  170. package/src/tool/shoeSizeConverter/i18n/fr.ts +183 -183
  171. package/src/tool/shoeSizeConverter/i18n/ja.ts +179 -179
  172. package/src/tool/shoeSizeConverter/i18n/ko.ts +179 -179
  173. package/src/tool/shoeSizeConverter/i18n/nl.ts +179 -179
  174. package/src/tool/shoeSizeConverter/i18n/pl.ts +179 -179
  175. package/src/tool/shoeSizeConverter/i18n/ru.ts +179 -179
  176. package/src/tool/shoeSizeConverter/i18n/sv.ts +179 -179
  177. package/src/tool/shoeSizeConverter/i18n/tr.ts +179 -179
  178. package/src/tool/shoeSizeConverter/i18n/zh.ts +179 -179
  179. package/src/tool/shoeSizeConverter/seo.astro +15 -15
  180. package/src/tool/stainChemistry/bibliography.ts +16 -16
  181. package/src/tool/stainChemistry/i18n/de.ts +286 -286
  182. package/src/tool/stainChemistry/i18n/en.ts +289 -289
  183. package/src/tool/stainChemistry/i18n/es.ts +286 -286
  184. package/src/tool/stainChemistry/i18n/fr.ts +296 -296
  185. package/src/tool/stainChemistry/i18n/id.ts +286 -286
  186. package/src/tool/stainChemistry/i18n/it.ts +286 -286
  187. package/src/tool/stainChemistry/i18n/ja.ts +286 -286
  188. package/src/tool/stainChemistry/i18n/ko.ts +283 -283
  189. package/src/tool/stainChemistry/i18n/nl.ts +286 -286
  190. package/src/tool/stainChemistry/i18n/pl.ts +286 -286
  191. package/src/tool/stainChemistry/i18n/pt.ts +286 -286
  192. package/src/tool/stainChemistry/i18n/ru.ts +286 -286
  193. package/src/tool/stainChemistry/i18n/sv.ts +286 -286
  194. package/src/tool/stainChemistry/i18n/tr.ts +286 -286
  195. package/src/tool/stainChemistry/i18n/zh.ts +281 -281
  196. package/src/tool/stainChemistry/seo.astro +15 -15
  197. package/src/tool/yarnCalculator/i18n/de.ts +296 -296
  198. package/src/tool/yarnCalculator/i18n/es.ts +296 -296
  199. package/src/tool/yarnCalculator/i18n/fr.ts +296 -296
  200. package/src/tool/yarnCalculator/i18n/ja.ts +296 -296
  201. package/src/tool/yarnCalculator/i18n/ko.ts +296 -296
  202. package/src/tool/yarnCalculator/i18n/nl.ts +296 -296
  203. package/src/tool/yarnCalculator/i18n/pl.ts +296 -296
  204. package/src/tool/yarnCalculator/i18n/ru.ts +296 -296
  205. package/src/tool/yarnCalculator/i18n/sv.ts +296 -296
  206. package/src/tool/yarnCalculator/i18n/tr.ts +296 -296
  207. package/src/tool/yarnCalculator/i18n/zh.ts +295 -295
  208. package/src/tool/yarnCalculator/seo.astro +15 -15
  209. package/src/tools.ts +2 -2
@@ -1,296 +1,296 @@
1
- import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
- import type { ToolLocaleContent } from '../../../types';
3
- import { bibliography } from '../bibliography';
4
- import type { YarnCalculatorUI } from '../ui';
5
-
6
- const slug = 'calculadora-lana-tejido';
7
- const title = 'Calculadora de Lana: ¿Cuántos metros y ovillos necesito?';
8
- const description =
9
- 'Calcula con precisión métrica la cantidad de lana o hilo necesaria para tus proyectos de punto y ganchillo a partir del patrón y la talla.';
10
-
11
- const faqData = [
12
- {
13
- question: '¿Por qué el ganchillo (crochet) gasta más lana que el punto de media?',
14
- answer:
15
- 'El ganchillo se basa en la creación de nudos y bucles superpuestos, lo que genera un tejido más denso y grueso por centímetro cuadrado. Por término medio, un proyecto de ganchillo consume entre un 25% y un 35% más de hilo que el mismo proyecto tejido a dos agujas (punto liso).',
16
- },
17
- {
18
- question: '¿Qué pasa si compro lana de distintos lotes de tinte (Dye Lot)?',
19
- answer:
20
- 'Incluso si el color parece idéntico en la tienda, las variaciones químicas mínimas durante el teñido pueden crear "franjas" visibles en la prenda terminada cuando se tejen juntas. Se recomienda encarecidamente comprar toda la lana de una vez verificando que el código de lote sea el mismo.',
21
- },
22
- {
23
- question: '¿Cómo afecta la tensión (gauge) al consumo final?',
24
- answer:
25
- 'Si tejes de forma floja, cada punto consume más metros de hilo. Si tu muestra de tensión es más grande de lo que indica el patrón (ej. 13 puntos en lugar de 15), tu consumo de lana aumentará sustancialmente. Es vital realizar una muestra de tensión previa.',
26
- },
27
- {
28
- question: '¿Cómo calculo los metros si solo tengo el peso del ovillo?',
29
- answer:
30
- 'Sin el dato de metraje, es difícil. La mayoría de ovillos indican en su etiqueta los metros. Si no lo hacen, busca por el nombre de la lana en bases de datos como Ravelry para encontrar la longitud exacta por cada 50g o 100g.',
31
- },
32
- ];
33
-
34
- const howToData = [
35
- {
36
- name: 'Selecciona el proyecto',
37
- text: 'Elige entre un jersey, bufanda, gorro, calcetines o manta para cargar las bases de consumo específicas.',
38
- },
39
- {
40
- name: 'Define la talla y grosor',
41
- text: 'Indica las dimensiones finales (S, M, L, XL) y el grosor del hilo que vas a utilizar (Fingering, DK, Worsted, Bulky).',
42
- },
43
- {
44
- name: 'Activa multiplicadores',
45
- text: 'Si tu patrón tiene trenzas, ochos o texturas complejas, activa el switch de texturas para añadir el suplemento necesario.',
46
- },
47
- {
48
- name: 'Obtén la lista de compra',
49
- text: 'Escribe los metros por ovillo de tu lana elegida para ver exactamente cuántas unidades debes meter en el carrito.',
50
- },
51
- ];
52
-
53
- const faqSchema: WithContext<FAQPage> = {
54
- '@context': 'https://schema.org',
55
- '@type': 'FAQPage',
56
- mainEntity: faqData.map((item) => ({
57
- '@type': 'Question',
58
- name: item.question,
59
- acceptedAnswer: { '@type': 'Answer', text: item.answer },
60
- })),
61
- };
62
-
63
- const howToSchema: WithContext<HowTo> = {
64
- '@context': 'https://schema.org',
65
- '@type': 'HowTo',
66
- name: title,
67
- description,
68
- step: howToData.map((step) => ({
69
- '@type': 'HowToStep',
70
- name: step.name,
71
- text: step.text,
72
- })),
73
- };
74
-
75
- const appSchema: WithContext<SoftwareApplication> = {
76
- '@context': 'https://schema.org',
77
- '@type': 'SoftwareApplication',
78
- name: title,
79
- description,
80
- applicationCategory: 'UtilityApplication',
81
- operatingSystem: 'All',
82
- offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
83
- inLanguage: 'es',
84
- };
85
-
86
- export const content: ToolLocaleContent<YarnCalculatorUI> = {
87
- slug,
88
- title,
89
- description,
90
- faq: faqData,
91
- bibliography: bibliography,
92
- howTo: howToData,
93
- schemas: [faqSchema, howToSchema, appSchema],
94
- seo: [
95
- {
96
- type: 'title',
97
- text: 'Guía de Consumo de Lana: Cómo Calcular metros y ovillos para tus proyectos',
98
- level: 2,
99
- },
100
- {
101
- type: 'paragraph',
102
- html: 'Domina la logística del tejido y evita quedarte sin hilo con nuestra calculadora técnica de precisión para punto y ganchillo. Uno de los mayores miedos de cualquier persona que teje es el <strong>"Yarn Chicken"</strong>: ese momento crítico al final de un proyecto donde parece que el hilo se va a terminar antes de cerrar los últimos puntos. Esta calculadora ha sido desarrollada para ofrecerte estimaciones basadas en estándares industriales de metraje y gramaje.',
103
- },
104
- {
105
- type: 'stats',
106
- items: [
107
- { value: '+10%', label: 'Margen de Pánico', icon: 'mdi:security' },
108
- { value: 'Métrico', label: 'Cálculo en Metros', icon: 'mdi:ruler' },
109
- { value: 'Offline', label: 'Base de Datos Local', icon: 'mdi:wifi-off' },
110
- ],
111
- columns: 3,
112
- },
113
- {
114
- type: 'title',
115
- text: '¿Por qué el gramaje de los ovillos es engañoso?',
116
- level: 3,
117
- },
118
- {
119
- type: 'paragraph',
120
- html: 'Muchos principiantes cometen el error de comprar lana basándose exclusivamente en el peso (ej. "6 ovillos de 100g"). Sin embargo, el peso es una unidad de masa, no de longitud. Dos lanas que pesen 100g pueden tener longitudes radicalmente distintas: una lana tipo <strong>Bulky</strong> puede tener solo 80 metros, mientras que una <strong>Fingering / Lace</strong> puede superar los 450 metros en el mismo peso.',
121
- },
122
- {
123
- type: 'paragraph',
124
- html: 'Por ello, nuestra calculadora prioriza siempre los <strong>metros totales</strong>. Una vez que conoces la longitud necesaria para tu talla y proyecto, puedes dividirla por el metraje que indica la etiqueta de tu ovillo específico para obtener el número exacto de unidades que debes adquirir.',
125
- },
126
- {
127
- type: 'title',
128
- text: 'Tabla de Metrajes Estándar por Grosor',
129
- level: 3,
130
- },
131
- {
132
- type: 'paragraph',
133
- html: 'Si no tienes la etiqueta a mano, puedes usar estos metrajes de referencia (por cada 100g de fibra) para tus estimaciones:',
134
- },
135
- {
136
- type: 'table',
137
- headers: ['Grosor (Weight)', 'Metros aprox. / 100g', 'Uso Recomendado', 'Agujas Sugeridas'],
138
- rows: [
139
- ['<strong>Lace / 0</strong>', '600 - 900m', 'Chales de encaje, calados', '1.5 - 2.5mm'],
140
- ['<strong>Fingering / 1</strong>', '360 - 450m', 'Calcetines, ropa bebé', '2.25 - 3.25mm'],
141
- ['<strong>Sport / 2</strong>', '270 - 320m', 'Chaquetas ligeras', '3.25 - 3.75mm'],
142
- ['<strong>DK / 3</strong>', '200 - 250m', 'Jerséis, gorros', '3.75 - 4.5mm'],
143
- ['<strong>Worsted / 4</strong>', '180 - 220m', 'Mantas, abrigos', '4.5 - 5.5mm'],
144
- ['<strong>Bulky / 5</strong>', '100 - 140m', 'Bufandas XXL, mantas', '6.0 - 8.0mm'],
145
- ],
146
- },
147
- {
148
- type: 'tip',
149
- title: 'El Factor de la Tensión (Gauge)',
150
- html: '<p>Recuerda que si tejes de forma muy floja, tus puntos serán más grandes y consumirán más hilo que si tejes de forma apretada. Nuestra calculadora aplica un margen de seguridad, pero si sabes que tu tensión es extremadamente laxa, considera añadir un 5-10% adicional a los resultados para evitar sorpresas.</p>',
151
- },
152
- {
153
- type: 'title',
154
- text: 'Variables que aumentan el consumo de hilo',
155
- level: 3,
156
- },
157
- {
158
- type: 'paragraph',
159
- html: 'No todos los puntos consumen la misma cantidad de fibra. Al elegir tu diseño, ten en cuenta estos factores multiplicadores:',
160
- },
161
- {
162
- type: 'comparative',
163
- items: [
164
- {
165
- title: 'Punto Liso / Jersey',
166
- description: 'Representa el consumo base y la eficiencia máxima de hilo para cualquier prenda.',
167
- icon: 'mdi:minus-circle-outline',
168
- points: ['Ideal para principiantes', 'Caída natural del tejido'],
169
- },
170
- {
171
- title: 'Trenzas / Ocho',
172
- description: 'El cruce de fibras "acorta" la pieza, aumentando el consumo en un 25%.',
173
- icon: 'mdi:texture-box',
174
- points: ['Requiere más metros', 'Tejido más denso y pesado'],
175
- pointIcon: 'mdi:alert-circle-outline',
176
- },
177
- {
178
- title: 'Ganchillo (Crochet)',
179
- description: 'Los nudos del ganchillo usan un 30% más hilo que el punto de media.',
180
- icon: 'mdi:hook',
181
- points: ['Gasto acelerado de ovillos', 'Textura tridimensional'],
182
- pointIcon: 'mdi:alert-circle-outline',
183
- },
184
- {
185
- title: 'Punto Elástico',
186
- description: 'La estructura de derecho/revés acumula más lana por cm cuadrado.',
187
- icon: 'mdi:unfold-more-horizontal',
188
- points: ['Consumo intermedio (+15%)', 'Alta recuperación elástica'],
189
- },
190
- ],
191
- columns: 2,
192
- },
193
- {
194
- type: 'title',
195
- text: 'Glosario del Tejedor Previsor',
196
- level: 3,
197
- },
198
- {
199
- type: 'glossary',
200
- items: [
201
- {
202
- term: 'Dye Lot (Lote de Tinte)',
203
- definition:
204
- 'Número que identifica la tina de tinte en la que se tiñó la lana. Diferentes lotes pueden tener variaciones de color imperceptibles en el ovillo pero muy visibles en la prenda terminada.',
205
- },
206
- {
207
- term: 'Stash (Reserva)',
208
- definition:
209
- 'La colección personal de hilos de un tejedor. Identificar el peso de los restos de hilos sin etiqueta es vital para calcular proyectos pequeños.',
210
- },
211
- {
212
- term: 'Put-up',
213
- definition:
214
- 'La forma en la que se presenta el hilo (en madeja, en ovillo o en cono), lo que afecta a si necesita ser ovillado antes de usar.',
215
- },
216
- {
217
- term: 'Yarn Chicken',
218
- definition:
219
- 'El reto de intentar terminar una sección de tejido con una cantidad de hilo que parece insuficiente.',
220
- },
221
- ],
222
- },
223
- {
224
- type: 'title',
225
- text: 'Cómo usar los resultados de esta calculadora',
226
- level: 3,
227
- },
228
- {
229
- type: 'paragraph',
230
- html: 'Una vez que la herramienta te devuelva el número de metros y ovillos, te recomendamos realizar los siguientes pasos de verificación manual:',
231
- },
232
- {
233
- type: 'list',
234
- items: [
235
- '<strong>Comprueba el metraje de tu ovillo real:</strong> No todos los ovillos de 100g tienen 200m. Verifica este dato en la etiqueta para ajustar el cálculo final.',
236
- '<strong>Suma el metraje de los detalles:</strong> Si vas a añadir flecos a una bufanda o pompones a un gorro, suma 50-80 metros extra al total.',
237
- '<strong>Muestra de tensión:</strong> Teje un cuadrado de 10x10 cm. Pésalo en una báscula de precisión. Si pesa 20g y tu manta mide 100x100 (100 cuadrados), necesitarás exactamente 2kg de lana.',
238
- '<strong>Compra siempre del mismo lote:</strong> Si el cálculo dice 7 ovillos, compra 8 si son de lotes distintos para tener margen de maniobra o para piezas ocultas como las costuras.',
239
- ],
240
- },
241
- {
242
- type: 'summary',
243
- title: 'Consejos Estratégicos para la Compra de Lana',
244
- items: [
245
- 'Prioriza los metros sobre los gramos para asegurar la longitud necesaria.',
246
- 'El ganchillo consume sustancialmente más lana que el punto; ajusta el selector de tipo.',
247
- 'Las texturas densas (trenzas) requieren un aumento del 25% en el presupuesto de hilo.',
248
- 'Guarda siempre una etiqueta de cada lote por si necesitas pedir repuesto de color.',
249
- 'Usa el 10% de margen de seguridad para tejer la muestra de tensión obligatoria.',
250
- ],
251
- },
252
- ],
253
- ui: {
254
- sectionProject: '1. TIPO DE PROYECTO',
255
- sectionSize: '2. DIMENSIONES / TALLA',
256
- sectionWeight: '3. GROSOR DEL HILO',
257
- sectionPattern: '4. CARACTERÍSTICAS DEL PATRÓN',
258
- sectionBall: '5. DATOS DEL OVILLO',
259
- labelCables: '¿Trenzas o texturas densas?',
260
- labelGrams: 'GRAMOS / OVILLO',
261
- labelMeters: 'METROS / OVILLO',
262
- weightFine: 'Fino',
263
- weightMedium: 'Medio',
264
- weightThick: 'Grueso',
265
- weightXXL: 'XXL',
266
- projectSweater: 'JERSEY',
267
- projectScarf: 'BUFANDA',
268
- projectHat: 'GORRO',
269
- projectSocks: 'CALCETINES',
270
- projectBlanket: 'MANTA',
271
- projectCardigan: 'CHAQUETA',
272
- statPrefix: 'CONSUMO ESTIMADO TOTAL',
273
- statSuffix: 'M',
274
- statNote: 'Metraje final calculado con stock de reserva del 10%.',
275
- ballsFormatSingular: 'Compra {n} ovillo',
276
- ballsFormatPlural: 'Compra {n} ovillos',
277
- ballsDetailFormat: 'Ovillos de {w}g / {m}m cada uno.',
278
- alertTitle: 'Seguridad estratégica:',
279
- alertText:
280
- 'Este cálculo ya garantiza que no te quedarás sin hilo. Recuerda validar el número de lote (dye lot) al comprar tus ovillos para evitar saltos de color.',
281
- schemeSleeveLabel: 'Mangas',
282
- schemeSleeveEach: 'c/u',
283
- schemeBodyLabel: 'Cuerpo',
284
- schemeTotalHat: 'Total Gorro',
285
- schemeTotalFlat: 'Total Pieza',
286
- schemeTotalSocks: 'Total Par',
287
- sizeLabels: {
288
- sweater: ['S', 'M', 'L', 'XL'],
289
- cardigan: ['S', 'M', 'L', 'XL'],
290
- hat: ['Niño', 'S', 'M', 'L'],
291
- scarf: ['Mini', 'M', 'Grande', 'Maxi'],
292
- socks: ['Niño', 'Ad. S', 'Ad. M', 'Ad. L'],
293
- blanket: ['Bebé', 'Sofá', 'Cama 90', 'Cama 150'],
294
- },
295
- },
296
- };
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import { bibliography } from '../bibliography';
4
+ import type { YarnCalculatorUI } from '../ui';
5
+
6
+ const slug = 'calculadora-lana-tejido';
7
+ const title = 'Calculadora de Lana: ¿Cuántos metros y ovillos necesito?';
8
+ const description =
9
+ 'Calcula con precisión métrica la cantidad de lana o hilo necesaria para tus proyectos de punto y ganchillo a partir del patrón y la talla.';
10
+
11
+ const faqData = [
12
+ {
13
+ question: '¿Por qué el ganchillo (crochet) gasta más lana que el punto de media?',
14
+ answer:
15
+ 'El ganchillo se basa en la creación de nudos y bucles superpuestos, lo que genera un tejido más denso y grueso por centímetro cuadrado. Por término medio, un proyecto de ganchillo consume entre un 25% y un 35% más de hilo que el mismo proyecto tejido a dos agujas (punto liso).',
16
+ },
17
+ {
18
+ question: '¿Qué pasa si compro lana de distintos lotes de tinte (Dye Lot)?',
19
+ answer:
20
+ 'Incluso si el color parece idéntico en la tienda, las variaciones químicas mínimas durante el teñido pueden crear "franjas" visibles en la prenda terminada cuando se tejen juntas. Se recomienda encarecidamente comprar toda la lana de una vez verificando que el código de lote sea el mismo.',
21
+ },
22
+ {
23
+ question: '¿Cómo afecta la tensión (gauge) al consumo final?',
24
+ answer:
25
+ 'Si tejes de forma floja, cada punto consume más metros de hilo. Si tu muestra de tensión es más grande de lo que indica el patrón (ej. 13 puntos en lugar de 15), tu consumo de lana aumentará sustancialmente. Es vital realizar una muestra de tensión previa.',
26
+ },
27
+ {
28
+ question: '¿Cómo calculo los metros si solo tengo el peso del ovillo?',
29
+ answer:
30
+ 'Sin el dato de metraje, es difícil. La mayoría de ovillos indican en su etiqueta los metros. Si no lo hacen, busca por el nombre de la lana en bases de datos como Ravelry para encontrar la longitud exacta por cada 50g o 100g.',
31
+ },
32
+ ];
33
+
34
+ const howToData = [
35
+ {
36
+ name: 'Selecciona el proyecto',
37
+ text: 'Elige entre un jersey, bufanda, gorro, calcetines o manta para cargar las bases de consumo específicas.',
38
+ },
39
+ {
40
+ name: 'Define la talla y grosor',
41
+ text: 'Indica las dimensiones finales (S, M, L, XL) y el grosor del hilo que vas a utilizar (Fingering, DK, Worsted, Bulky).',
42
+ },
43
+ {
44
+ name: 'Activa multiplicadores',
45
+ text: 'Si tu patrón tiene trenzas, ochos o texturas complejas, activa el switch de texturas para añadir el suplemento necesario.',
46
+ },
47
+ {
48
+ name: 'Obtén la lista de compra',
49
+ text: 'Escribe los metros por ovillo de tu lana elegida para ver exactamente cuántas unidades debes meter en el carrito.',
50
+ },
51
+ ];
52
+
53
+ const faqSchema: WithContext<FAQPage> = {
54
+ '@context': 'https://schema.org',
55
+ '@type': 'FAQPage',
56
+ mainEntity: faqData.map((item) => ({
57
+ '@type': 'Question',
58
+ name: item.question,
59
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
60
+ })),
61
+ };
62
+
63
+ const howToSchema: WithContext<HowTo> = {
64
+ '@context': 'https://schema.org',
65
+ '@type': 'HowTo',
66
+ name: title,
67
+ description,
68
+ step: howToData.map((step) => ({
69
+ '@type': 'HowToStep',
70
+ name: step.name,
71
+ text: step.text,
72
+ })),
73
+ };
74
+
75
+ const appSchema: WithContext<SoftwareApplication> = {
76
+ '@context': 'https://schema.org',
77
+ '@type': 'SoftwareApplication',
78
+ name: title,
79
+ description,
80
+ applicationCategory: 'UtilityApplication',
81
+ operatingSystem: 'All',
82
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
83
+ inLanguage: 'es',
84
+ };
85
+
86
+ export const content: ToolLocaleContent<YarnCalculatorUI> = {
87
+ slug,
88
+ title,
89
+ description,
90
+ faq: faqData,
91
+ bibliography: bibliography,
92
+ howTo: howToData,
93
+ schemas: [faqSchema, howToSchema, appSchema],
94
+ seo: [
95
+ {
96
+ type: 'title',
97
+ text: 'Guía de Consumo de Lana: Cómo Calcular metros y ovillos para tus proyectos',
98
+ level: 2,
99
+ },
100
+ {
101
+ type: 'paragraph',
102
+ html: 'Domina la logística del tejido y evita quedarte sin hilo con nuestra calculadora técnica de precisión para punto y ganchillo. Uno de los mayores miedos de cualquier persona que teje es el <strong>"Yarn Chicken"</strong>: ese momento crítico al final de un proyecto donde parece que el hilo se va a terminar antes de cerrar los últimos puntos. Esta calculadora ha sido desarrollada para ofrecerte estimaciones basadas en estándares industriales de metraje y gramaje.',
103
+ },
104
+ {
105
+ type: 'stats',
106
+ items: [
107
+ { value: '+10%', label: 'Margen de Pánico', icon: 'mdi:security' },
108
+ { value: 'Métrico', label: 'Cálculo en Metros', icon: 'mdi:ruler' },
109
+ { value: 'Offline', label: 'Base de Datos Local', icon: 'mdi:wifi-off' },
110
+ ],
111
+ columns: 3,
112
+ },
113
+ {
114
+ type: 'title',
115
+ text: '¿Por qué el gramaje de los ovillos es engañoso?',
116
+ level: 3,
117
+ },
118
+ {
119
+ type: 'paragraph',
120
+ html: 'Muchos principiantes cometen el error de comprar lana basándose exclusivamente en el peso (ej. "6 ovillos de 100g"). Sin embargo, el peso es una unidad de masa, no de longitud. Dos lanas que pesen 100g pueden tener longitudes radicalmente distintas: una lana tipo <strong>Bulky</strong> puede tener solo 80 metros, mientras que una <strong>Fingering / Lace</strong> puede superar los 450 metros en el mismo peso.',
121
+ },
122
+ {
123
+ type: 'paragraph',
124
+ html: 'Por ello, nuestra calculadora prioriza siempre los <strong>metros totales</strong>. Una vez que conoces la longitud necesaria para tu talla y proyecto, puedes dividirla por el metraje que indica la etiqueta de tu ovillo específico para obtener el número exacto de unidades que debes adquirir.',
125
+ },
126
+ {
127
+ type: 'title',
128
+ text: 'Tabla de Metrajes Estándar por Grosor',
129
+ level: 3,
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'Si no tienes la etiqueta a mano, puedes usar estos metrajes de referencia (por cada 100g de fibra) para tus estimaciones:',
134
+ },
135
+ {
136
+ type: 'table',
137
+ headers: ['Grosor (Weight)', 'Metros aprox. / 100g', 'Uso Recomendado', 'Agujas Sugeridas'],
138
+ rows: [
139
+ ['<strong>Lace / 0</strong>', '600 - 900m', 'Chales de encaje, calados', '1.5 - 2.5mm'],
140
+ ['<strong>Fingering / 1</strong>', '360 - 450m', 'Calcetines, ropa bebé', '2.25 - 3.25mm'],
141
+ ['<strong>Sport / 2</strong>', '270 - 320m', 'Chaquetas ligeras', '3.25 - 3.75mm'],
142
+ ['<strong>DK / 3</strong>', '200 - 250m', 'Jerséis, gorros', '3.75 - 4.5mm'],
143
+ ['<strong>Worsted / 4</strong>', '180 - 220m', 'Mantas, abrigos', '4.5 - 5.5mm'],
144
+ ['<strong>Bulky / 5</strong>', '100 - 140m', 'Bufandas XXL, mantas', '6.0 - 8.0mm'],
145
+ ],
146
+ },
147
+ {
148
+ type: 'tip',
149
+ title: 'El Factor de la Tensión (Gauge)',
150
+ html: '<p>Recuerda que si tejes de forma muy floja, tus puntos serán más grandes y consumirán más hilo que si tejes de forma apretada. Nuestra calculadora aplica un margen de seguridad, pero si sabes que tu tensión es extremadamente laxa, considera añadir un 5-10% adicional a los resultados para evitar sorpresas.</p>',
151
+ },
152
+ {
153
+ type: 'title',
154
+ text: 'Variables que aumentan el consumo de hilo',
155
+ level: 3,
156
+ },
157
+ {
158
+ type: 'paragraph',
159
+ html: 'No todos los puntos consumen la misma cantidad de fibra. Al elegir tu diseño, ten en cuenta estos factores multiplicadores:',
160
+ },
161
+ {
162
+ type: 'comparative',
163
+ items: [
164
+ {
165
+ title: 'Punto Liso / Jersey',
166
+ description: 'Representa el consumo base y la eficiencia máxima de hilo para cualquier prenda.',
167
+ icon: 'mdi:minus-circle-outline',
168
+ points: ['Ideal para principiantes', 'Caída natural del tejido'],
169
+ },
170
+ {
171
+ title: 'Trenzas / Ocho',
172
+ description: 'El cruce de fibras "acorta" la pieza, aumentando el consumo en un 25%.',
173
+ icon: 'mdi:texture-box',
174
+ points: ['Requiere más metros', 'Tejido más denso y pesado'],
175
+ pointIcon: 'mdi:alert-circle-outline',
176
+ },
177
+ {
178
+ title: 'Ganchillo (Crochet)',
179
+ description: 'Los nudos del ganchillo usan un 30% más hilo que el punto de media.',
180
+ icon: 'mdi:hook',
181
+ points: ['Gasto acelerado de ovillos', 'Textura tridimensional'],
182
+ pointIcon: 'mdi:alert-circle-outline',
183
+ },
184
+ {
185
+ title: 'Punto Elástico',
186
+ description: 'La estructura de derecho/revés acumula más lana por cm cuadrado.',
187
+ icon: 'mdi:unfold-more-horizontal',
188
+ points: ['Consumo intermedio (+15%)', 'Alta recuperación elástica'],
189
+ },
190
+ ],
191
+ columns: 2,
192
+ },
193
+ {
194
+ type: 'title',
195
+ text: 'Glosario del Tejedor Previsor',
196
+ level: 3,
197
+ },
198
+ {
199
+ type: 'glossary',
200
+ items: [
201
+ {
202
+ term: 'Dye Lot (Lote de Tinte)',
203
+ definition:
204
+ 'Número que identifica la tina de tinte en la que se tiñó la lana. Diferentes lotes pueden tener variaciones de color imperceptibles en el ovillo pero muy visibles en la prenda terminada.',
205
+ },
206
+ {
207
+ term: 'Stash (Reserva)',
208
+ definition:
209
+ 'La colección personal de hilos de un tejedor. Identificar el peso de los restos de hilos sin etiqueta es vital para calcular proyectos pequeños.',
210
+ },
211
+ {
212
+ term: 'Put-up',
213
+ definition:
214
+ 'La forma en la que se presenta el hilo (en madeja, en ovillo o en cono), lo que afecta a si necesita ser ovillado antes de usar.',
215
+ },
216
+ {
217
+ term: 'Yarn Chicken',
218
+ definition:
219
+ 'El reto de intentar terminar una sección de tejido con una cantidad de hilo que parece insuficiente.',
220
+ },
221
+ ],
222
+ },
223
+ {
224
+ type: 'title',
225
+ text: 'Cómo usar los resultados de esta calculadora',
226
+ level: 3,
227
+ },
228
+ {
229
+ type: 'paragraph',
230
+ html: 'Una vez que la herramienta te devuelva el número de metros y ovillos, te recomendamos realizar los siguientes pasos de verificación manual:',
231
+ },
232
+ {
233
+ type: 'list',
234
+ items: [
235
+ '<strong>Comprueba el metraje de tu ovillo real:</strong> No todos los ovillos de 100g tienen 200m. Verifica este dato en la etiqueta para ajustar el cálculo final.',
236
+ '<strong>Suma el metraje de los detalles:</strong> Si vas a añadir flecos a una bufanda o pompones a un gorro, suma 50-80 metros extra al total.',
237
+ '<strong>Muestra de tensión:</strong> Teje un cuadrado de 10x10 cm. Pésalo en una báscula de precisión. Si pesa 20g y tu manta mide 100x100 (100 cuadrados), necesitarás exactamente 2kg de lana.',
238
+ '<strong>Compra siempre del mismo lote:</strong> Si el cálculo dice 7 ovillos, compra 8 si son de lotes distintos para tener margen de maniobra o para piezas ocultas como las costuras.',
239
+ ],
240
+ },
241
+ {
242
+ type: 'summary',
243
+ title: 'Consejos Estratégicos para la Compra de Lana',
244
+ items: [
245
+ 'Prioriza los metros sobre los gramos para asegurar la longitud necesaria.',
246
+ 'El ganchillo consume sustancialmente más lana que el punto; ajusta el selector de tipo.',
247
+ 'Las texturas densas (trenzas) requieren un aumento del 25% en el presupuesto de hilo.',
248
+ 'Guarda siempre una etiqueta de cada lote por si necesitas pedir repuesto de color.',
249
+ 'Usa el 10% de margen de seguridad para tejer la muestra de tensión obligatoria.',
250
+ ],
251
+ },
252
+ ],
253
+ ui: {
254
+ sectionProject: '1. TIPO DE PROYECTO',
255
+ sectionSize: '2. DIMENSIONES / TALLA',
256
+ sectionWeight: '3. GROSOR DEL HILO',
257
+ sectionPattern: '4. CARACTERÍSTICAS DEL PATRÓN',
258
+ sectionBall: '5. DATOS DEL OVILLO',
259
+ labelCables: '¿Trenzas o texturas densas?',
260
+ labelGrams: 'GRAMOS / OVILLO',
261
+ labelMeters: 'METROS / OVILLO',
262
+ weightFine: 'Fino',
263
+ weightMedium: 'Medio',
264
+ weightThick: 'Grueso',
265
+ weightXXL: 'XXL',
266
+ projectSweater: 'JERSEY',
267
+ projectScarf: 'BUFANDA',
268
+ projectHat: 'GORRO',
269
+ projectSocks: 'CALCETINES',
270
+ projectBlanket: 'MANTA',
271
+ projectCardigan: 'CHAQUETA',
272
+ statPrefix: 'CONSUMO ESTIMADO TOTAL',
273
+ statSuffix: 'M',
274
+ statNote: 'Metraje final calculado con stock de reserva del 10%.',
275
+ ballsFormatSingular: 'Compra {n} ovillo',
276
+ ballsFormatPlural: 'Compra {n} ovillos',
277
+ ballsDetailFormat: 'Ovillos de {w}g / {m}m cada uno.',
278
+ alertTitle: 'Seguridad estratégica:',
279
+ alertText:
280
+ 'Este cálculo ya garantiza que no te quedarás sin hilo. Recuerda validar el número de lote (dye lot) al comprar tus ovillos para evitar saltos de color.',
281
+ schemeSleeveLabel: 'Mangas',
282
+ schemeSleeveEach: 'c/u',
283
+ schemeBodyLabel: 'Cuerpo',
284
+ schemeTotalHat: 'Total Gorro',
285
+ schemeTotalFlat: 'Total Pieza',
286
+ schemeTotalSocks: 'Total Par',
287
+ sizeLabels: {
288
+ sweater: ['S', 'M', 'L', 'XL'],
289
+ cardigan: ['S', 'M', 'L', 'XL'],
290
+ hat: ['Niño', 'S', 'M', 'L'],
291
+ scarf: ['Mini', 'M', 'Grande', 'Maxi'],
292
+ socks: ['Niño', 'Ad. S', 'Ad. M', 'Ad. L'],
293
+ blanket: ['Bebé', 'Sofá', 'Cama 90', 'Cama 150'],
294
+ },
295
+ },
296
+ };