@jjlmoya/utils-textiles 1.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.
Files changed (134) hide show
  1. package/package.json +60 -0
  2. package/src/category/i18n/en.ts +76 -0
  3. package/src/category/i18n/es.ts +76 -0
  4. package/src/category/i18n/fr.ts +73 -0
  5. package/src/category/index.ts +17 -0
  6. package/src/category/seo.astro +15 -0
  7. package/src/components/PreviewNavSidebar.astro +116 -0
  8. package/src/components/PreviewToolbar.astro +143 -0
  9. package/src/data.ts +11 -0
  10. package/src/env.d.ts +5 -0
  11. package/src/index.ts +32 -0
  12. package/src/layouts/PreviewLayout.astro +117 -0
  13. package/src/pages/[locale]/[slug].astro +146 -0
  14. package/src/pages/[locale].astro +253 -0
  15. package/src/pages/index.astro +4 -0
  16. package/src/tests/faq_count.test.ts +19 -0
  17. package/src/tests/locale_completeness.test.ts +42 -0
  18. package/src/tests/mocks/astro_mock.js +2 -0
  19. package/src/tests/no_h1_in_components.test.ts +48 -0
  20. package/src/tests/seo_length.test.ts +22 -0
  21. package/src/tests/title_separators.test.ts +40 -0
  22. package/src/tests/tool_validation.test.ts +17 -0
  23. package/src/tool/burnTest/bibliography.astro +34 -0
  24. package/src/tool/burnTest/component.astro +602 -0
  25. package/src/tool/burnTest/i18n/en.ts +225 -0
  26. package/src/tool/burnTest/i18n/es.ts +225 -0
  27. package/src/tool/burnTest/i18n/fr.ts +225 -0
  28. package/src/tool/burnTest/index.ts +34 -0
  29. package/src/tool/burnTest/logic.ts +3 -0
  30. package/src/tool/burnTest/seo.astro +40 -0
  31. package/src/tool/burnTest/ui.ts +36 -0
  32. package/src/tool/clothingSizeConverter/bibliography.astro +34 -0
  33. package/src/tool/clothingSizeConverter/component.astro +1226 -0
  34. package/src/tool/clothingSizeConverter/i18n/en.ts +356 -0
  35. package/src/tool/clothingSizeConverter/i18n/es.ts +356 -0
  36. package/src/tool/clothingSizeConverter/i18n/fr.ts +356 -0
  37. package/src/tool/clothingSizeConverter/index.ts +34 -0
  38. package/src/tool/clothingSizeConverter/logic.ts +30 -0
  39. package/src/tool/clothingSizeConverter/seo.astro +40 -0
  40. package/src/tool/clothingSizeConverter/ui.ts +70 -0
  41. package/src/tool/fabricProjectCalculator/bibliography.astro +19 -0
  42. package/src/tool/fabricProjectCalculator/component.astro +914 -0
  43. package/src/tool/fabricProjectCalculator/i18n/en.ts +250 -0
  44. package/src/tool/fabricProjectCalculator/i18n/es.ts +250 -0
  45. package/src/tool/fabricProjectCalculator/i18n/fr.ts +250 -0
  46. package/src/tool/fabricProjectCalculator/index.ts +34 -0
  47. package/src/tool/fabricProjectCalculator/logic.ts +89 -0
  48. package/src/tool/fabricProjectCalculator/seo.astro +40 -0
  49. package/src/tool/fabricProjectCalculator/ui.ts +57 -0
  50. package/src/tool/fabricTruth/bibliography.astro +40 -0
  51. package/src/tool/fabricTruth/component.astro +708 -0
  52. package/src/tool/fabricTruth/i18n/en.ts +282 -0
  53. package/src/tool/fabricTruth/i18n/es.ts +316 -0
  54. package/src/tool/fabricTruth/i18n/fr.ts +282 -0
  55. package/src/tool/fabricTruth/index.ts +34 -0
  56. package/src/tool/fabricTruth/logic.ts +91 -0
  57. package/src/tool/fabricTruth/seo.astro +40 -0
  58. package/src/tool/fabricTruth/ui.ts +28 -0
  59. package/src/tool/fiberPrep/bibliography.astro +33 -0
  60. package/src/tool/fiberPrep/component.astro +987 -0
  61. package/src/tool/fiberPrep/i18n/en.ts +225 -0
  62. package/src/tool/fiberPrep/i18n/es.ts +225 -0
  63. package/src/tool/fiberPrep/i18n/fr.ts +225 -0
  64. package/src/tool/fiberPrep/index.ts +34 -0
  65. package/src/tool/fiberPrep/logic.ts +36 -0
  66. package/src/tool/fiberPrep/seo.astro +40 -0
  67. package/src/tool/fiberPrep/ui.ts +38 -0
  68. package/src/tool/knittingGauge/bibliography.astro +14 -0
  69. package/src/tool/knittingGauge/component.astro +828 -0
  70. package/src/tool/knittingGauge/i18n/en.ts +234 -0
  71. package/src/tool/knittingGauge/i18n/es.ts +234 -0
  72. package/src/tool/knittingGauge/i18n/fr.ts +234 -0
  73. package/src/tool/knittingGauge/index.ts +34 -0
  74. package/src/tool/knittingGauge/logic.ts +28 -0
  75. package/src/tool/knittingGauge/seo.astro +40 -0
  76. package/src/tool/knittingGauge/ui.ts +41 -0
  77. package/src/tool/laundryGuide/bibliography.astro +33 -0
  78. package/src/tool/laundryGuide/component.astro +486 -0
  79. package/src/tool/laundryGuide/data-en.ts +166 -0
  80. package/src/tool/laundryGuide/data-es.ts +166 -0
  81. package/src/tool/laundryGuide/data-fr.ts +103 -0
  82. package/src/tool/laundryGuide/i18n/en.ts +275 -0
  83. package/src/tool/laundryGuide/i18n/es.ts +275 -0
  84. package/src/tool/laundryGuide/i18n/fr.ts +291 -0
  85. package/src/tool/laundryGuide/index.ts +29 -0
  86. package/src/tool/laundryGuide/logic.ts +19 -0
  87. package/src/tool/laundryGuide/seo.astro +40 -0
  88. package/src/tool/needleConverter/bibliography.astro +14 -0
  89. package/src/tool/needleConverter/component.astro +518 -0
  90. package/src/tool/needleConverter/i18n/en.ts +217 -0
  91. package/src/tool/needleConverter/i18n/es.ts +217 -0
  92. package/src/tool/needleConverter/i18n/fr.ts +217 -0
  93. package/src/tool/needleConverter/index.ts +34 -0
  94. package/src/tool/needleConverter/logic.ts +31 -0
  95. package/src/tool/needleConverter/seo.astro +15 -0
  96. package/src/tool/needleConverter/ui.ts +17 -0
  97. package/src/tool/sewingPatternScaler/bibliography.astro +14 -0
  98. package/src/tool/sewingPatternScaler/component.astro +550 -0
  99. package/src/tool/sewingPatternScaler/i18n/en.ts +196 -0
  100. package/src/tool/sewingPatternScaler/i18n/es.ts +231 -0
  101. package/src/tool/sewingPatternScaler/i18n/fr.ts +187 -0
  102. package/src/tool/sewingPatternScaler/index.ts +34 -0
  103. package/src/tool/sewingPatternScaler/logic.ts +35 -0
  104. package/src/tool/sewingPatternScaler/seo.astro +49 -0
  105. package/src/tool/sewingPatternScaler/ui.ts +29 -0
  106. package/src/tool/shoeSizeConverter/bibliography.astro +34 -0
  107. package/src/tool/shoeSizeConverter/component.astro +437 -0
  108. package/src/tool/shoeSizeConverter/i18n/en.ts +188 -0
  109. package/src/tool/shoeSizeConverter/i18n/es.ts +188 -0
  110. package/src/tool/shoeSizeConverter/i18n/fr.ts +188 -0
  111. package/src/tool/shoeSizeConverter/index.ts +34 -0
  112. package/src/tool/shoeSizeConverter/logic.ts +8 -0
  113. package/src/tool/shoeSizeConverter/seo.astro +40 -0
  114. package/src/tool/shoeSizeConverter/ui.ts +21 -0
  115. package/src/tool/stainChemistry/bibliography.astro +40 -0
  116. package/src/tool/stainChemistry/component.astro +717 -0
  117. package/src/tool/stainChemistry/i18n/en.ts +303 -0
  118. package/src/tool/stainChemistry/i18n/es.ts +300 -0
  119. package/src/tool/stainChemistry/i18n/fr.ts +310 -0
  120. package/src/tool/stainChemistry/index.ts +34 -0
  121. package/src/tool/stainChemistry/logic.ts +11 -0
  122. package/src/tool/stainChemistry/seo.astro +40 -0
  123. package/src/tool/stainChemistry/ui.ts +51 -0
  124. package/src/tool/yarnCalculator/bibliography.astro +19 -0
  125. package/src/tool/yarnCalculator/component.astro +792 -0
  126. package/src/tool/yarnCalculator/i18n/en.ts +310 -0
  127. package/src/tool/yarnCalculator/i18n/es.ts +310 -0
  128. package/src/tool/yarnCalculator/i18n/fr.ts +310 -0
  129. package/src/tool/yarnCalculator/index.ts +34 -0
  130. package/src/tool/yarnCalculator/logic.ts +84 -0
  131. package/src/tool/yarnCalculator/seo.astro +14 -0
  132. package/src/tool/yarnCalculator/ui.ts +42 -0
  133. package/src/tools.ts +16 -0
  134. package/src/types.ts +72 -0
@@ -0,0 +1,250 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { FabricProjectCalculatorUI } from '../ui';
4
+
5
+ const slug = 'fabric-project-calculator';
6
+ const title = 'Fabric Consumption Calculator by Garment';
7
+ const description =
8
+ 'Easily calculate how much fabric you need to sew a skirt, trousers, a dress or a shirt. Adjust by fabric width and size for a professional cut.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'How much fabric do I need for a skirt?',
13
+ answer:
14
+ 'It depends on the fabric width. For a straight skirt in 140-150 cm fabric, 1.20 metres is usually enough. If the fabric is 90-110 cm wide, you will need 2.00 metres.',
15
+ },
16
+ {
17
+ question: 'How does fabric width affect consumption?',
18
+ answer:
19
+ 'The narrower the fabric, the less likely pattern pieces can lie side by side (in parallel), so consumption often doubles as pieces must be placed one below the other.',
20
+ },
21
+ {
22
+ question: 'Is it better to buy extra fabric?',
23
+ answer:
24
+ 'Yes, a 10% margin (about 20 cm) is recommended to compensate for shrinkage, fabric flaws, or unexpected seam allowances.',
25
+ },
26
+ {
27
+ question: 'What is the grain line and how does it affect cutting?',
28
+ answer:
29
+ 'It is the direction parallel to the selvedges of the fabric. Patterns must be aligned with this grain so the garment does not distort during wear.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Choose the garment type',
36
+ text: 'Select the style you are making (skirt, trousers, etc.) to load its base consumption table.',
37
+ },
38
+ {
39
+ name: 'Enter the fabric width',
40
+ text: 'Measure the width from selvedge to selvedge of the fabric you plan to buy (90, 115, 140 or 150 cm).',
41
+ },
42
+ {
43
+ name: 'Select the size',
44
+ text: 'Adjust the garment volume by size (XS-S, M-L, XL-XXL) to recalculate the size multiplier.',
45
+ },
46
+ {
47
+ name: 'Get the total metres',
48
+ text: 'Check the final result with and without seam allowance to know exactly how much to order at the shop.',
49
+ },
50
+ ];
51
+
52
+ const faqSchema: WithContext<FAQPage> = {
53
+ '@context': 'https://schema.org',
54
+ '@type': 'FAQPage',
55
+ mainEntity: faqData.map((item) => ({
56
+ '@type': 'Question',
57
+ name: item.question,
58
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
59
+ })),
60
+ };
61
+
62
+ const howToSchema: WithContext<HowTo> = {
63
+ '@context': 'https://schema.org',
64
+ '@type': 'HowTo',
65
+ name: title,
66
+ description,
67
+ step: howToData.map((step) => ({
68
+ '@type': 'HowToStep',
69
+ name: step.name,
70
+ text: step.text,
71
+ })),
72
+ };
73
+
74
+ const appSchema: WithContext<SoftwareApplication> = {
75
+ '@context': 'https://schema.org',
76
+ '@type': 'SoftwareApplication',
77
+ name: title,
78
+ description,
79
+ applicationCategory: 'UtilityApplication',
80
+ operatingSystem: 'All',
81
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
82
+ inLanguage: 'en',
83
+ };
84
+
85
+ export const content: ToolLocaleContent<FabricProjectCalculatorUI> = {
86
+ slug,
87
+ title,
88
+ description,
89
+ faqTitle: 'Frequently Asked Questions',
90
+ faq: faqData,
91
+ bibliographyTitle: 'Bibliography',
92
+ bibliography: [
93
+ {
94
+ name: 'Fabric Estimation Guide - Threads Magazine',
95
+ url: 'https://www.threadsmagazine.com/forum/measuring-fabric',
96
+ },
97
+ {
98
+ name: 'How much fabric do I need? - Seamwork',
99
+ url: 'https://www.seamwork.com/sewing-tutorials/the-anatomy-of-a-sewing-pattern',
100
+ },
101
+ {
102
+ name: 'Standard Fabric Consumption Charts - Textile School',
103
+ url: 'https://www.textileschool.com/209/fabric-consumption-in-garment-making/',
104
+ },
105
+ ],
106
+ howTo: howToData,
107
+ schemas: [faqSchema, howToSchema, appSchema],
108
+ seo: [
109
+ {
110
+ type: 'title',
111
+ text: 'Fabric Metres Calculator for Sewing: Consumption Guide',
112
+ level: 2,
113
+ },
114
+ {
115
+ type: 'paragraph',
116
+ html: 'One of the most frequent questions in the sewing workshop is how much fabric to buy for a specific project. Fabric consumption depends radically on three factors: the garment style, the person\'s size, and above all, the fabric width (which usually ranges between 90 cm and 150 cm). This technical calculator systematises the calculation so you do not buy too much or run short mid-cut.',
117
+ },
118
+ {
119
+ type: 'title',
120
+ text: 'How much fabric do I need for a dress or trousers?',
121
+ level: 3,
122
+ },
123
+ {
124
+ type: 'paragraph',
125
+ html: 'The traditional calculation is based on the garment length plus sleeve length, adding a margin for facings and hems. However, with narrow fabric (90-110 cm), pieces often cannot lie side by side, requiring twice the length. Our tool accounts for these variations automatically according to textile industry standards.',
126
+ },
127
+ {
128
+ type: 'title',
129
+ text: 'Estimated Consumption by Fabric Width (size M-L)',
130
+ level: 3,
131
+ },
132
+ {
133
+ type: 'list',
134
+ items: [
135
+ '<strong>Straight Skirt:</strong> 2.00 m in 90 cm fabric · 1.20 m in 140/150 cm fabric.',
136
+ '<strong>Long Trousers:</strong> 2.50 m in 90 cm fabric · 1.50 m in 140/150 cm fabric.',
137
+ '<strong>Long-Sleeve Shirt:</strong> 2.20 m in 90 cm fabric · 1.40 m in 140/150 cm fabric.',
138
+ '<strong>Basic Dress:</strong> 3.50 m in 90 cm fabric · 2.20 m in 140/150 cm fabric.',
139
+ ],
140
+ },
141
+ {
142
+ type: 'title',
143
+ text: 'Factors that Affect Fabric Consumption',
144
+ level: 3,
145
+ },
146
+ {
147
+ type: 'list',
148
+ items: [
149
+ '<strong>Print direction (Rapport):</strong> If the fabric has a directional print or plaids that must match, you will need 15-20% extra material.',
150
+ '<strong>Bias cut:</strong> Circular cuts (like circle skirts) consume significantly more fabric due to waste at the angles.',
151
+ '<strong>Nap direction:</strong> In pile fabrics like velvet or corduroy, all pieces must be cut in the same direction, limiting space optimisation.',
152
+ '<strong>Shrinkage:</strong> Many natural fibres (cotton, linen, wool) shrink after the first wash. Pre-washing the fabric before cutting is essential.',
153
+ ],
154
+ },
155
+ {
156
+ type: 'tip',
157
+ title: 'Sewer\'s Tip',
158
+ html: '<p>If you are using a fabric with a large print or plaids, do not rely solely on the standard measurement. Always add one full pattern repeat (the rapport) to the total metres calculated to ensure patterns match at the side seams.</p>',
159
+ },
160
+ {
161
+ type: 'title',
162
+ text: 'Advantages and Limitations of this Calculator',
163
+ level: 3,
164
+ },
165
+ {
166
+ type: 'list',
167
+ items: [
168
+ 'Instant calculation for multiple fabric widths with size adjustment.',
169
+ 'Includes customisable seam allowance estimation.',
170
+ 'Visual guide of pattern piece layout on the cloth.',
171
+ 'Does not replace a real pattern layout (marking). Plus sizes may require additional manual adjustments.',
172
+ ],
173
+ },
174
+ {
175
+ type: 'card',
176
+ title: 'Fabric Width',
177
+ icon: 'mdi:arrow-expand-horizontal',
178
+ html: 'The transverse measurement of the fabric from <strong>selvedge to selvedge</strong>. Determines whether pattern pieces can lie in parallel or must be placed in series.',
179
+ },
180
+ {
181
+ type: 'card',
182
+ title: 'Seam Allowance',
183
+ icon: 'mdi:tape-measure',
184
+ html: 'The distance between the edge of the pattern and the <strong>final seam line</strong>. A standard value is 1.5 cm for clothing seams.',
185
+ },
186
+ {
187
+ type: 'card',
188
+ title: 'Selvedge',
189
+ icon: 'mdi:content-cut',
190
+ html: 'The reinforced side edges of the fabric that <strong>do not fray</strong>. They indicate the grain direction and serve as a reference for cutting.',
191
+ },
192
+ ],
193
+ ui: {
194
+ sectionProject: 'Project',
195
+ sectionMaterial: 'Material',
196
+ labelGarmentType: 'Garment type',
197
+ labelSize: 'Size',
198
+ labelFabricWidth: 'Fabric width (cm)',
199
+ labelSeamAllowance: 'Seam allowance (cm)',
200
+ garmentSkirt: 'Skirt (Straight/A-line)',
201
+ garmentPants: 'Trousers',
202
+ garmentDress: 'Dress',
203
+ garmentShirt: 'Shirt / Blouse',
204
+ garmentCoat: 'Coat / Jacket',
205
+ garmentTote: 'Tote Bag',
206
+ garmentMerceria: {
207
+ skirt: '1 zip 20cm, 1 button',
208
+ pants: '1 zip 20cm, 1 button, 30cm interfacing',
209
+ dress: '1 zip 60cm, 50cm interfacing',
210
+ shirt: '7 buttons, 1m light interfacing',
211
+ coat: '3 large buttons, 1.5m interfacing, lining',
212
+ tote: '2m webbing for handles',
213
+ },
214
+ sizeXS: 'XS-S',
215
+ sizeM: 'M-L',
216
+ sizeXL: 'XL-XXL',
217
+ width90: '90 cm (Narrow)',
218
+ width115: '115 cm (Patchwork)',
219
+ width140: '140 cm (EU Standard)',
220
+ width150: '150 cm (Upholstery)',
221
+ btnClear: 'Clear',
222
+ btnShare: 'Share',
223
+ btnCopied: 'Copied!',
224
+ btnCopyList: 'Copy list',
225
+ resultLabel: 'You need:',
226
+ resultUnit: 'Metres',
227
+ shopAdviceFormat: 'Order {m}m at the shop',
228
+ boardEmpty: 'Select a project to see the layout',
229
+ boardDescFormat: 'Width: {w}cm | Length: {m}m',
230
+ merchTitle: 'Notions & Materials',
231
+ checklistThread: 'Matching thread',
232
+ warningSerialFormat: 'In {w}cm fabric, pieces for your size cannot lie in parallel. Consumption adjusted for series cutting.',
233
+ foldLabel: '⊟ fold',
234
+ pieceNames: {
235
+ front: 'Front',
236
+ back: 'Back',
237
+ waistband: 'Waistband',
238
+ waistbelt: 'Waistbelt',
239
+ sleeve: 'Sleeve',
240
+ collar: 'Collar',
241
+ cuffs: 'Cuffs',
242
+ facings: 'Facings',
243
+ lapels: 'Lapels',
244
+ pocket: 'Pocket',
245
+ body: 'Body',
246
+ handleA: 'Handle A',
247
+ handleB: 'Handle B',
248
+ },
249
+ },
250
+ };
@@ -0,0 +1,250 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { FabricProjectCalculatorUI } from '../ui';
4
+
5
+ const slug = 'calculadora-tela-proyecto';
6
+ const title = 'Calculadora de Consumo de Tela por Prenda';
7
+ const description =
8
+ 'Calcula fácilmente cuánta tela necesitas para coser una falda, un pantalón, un vestido o una camisa. Ajusta según el ancho de la tela y la talla para un corte profesional.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: '¿Cuánta tela necesito para una falda?',
13
+ answer:
14
+ 'Depende del ancho de la tela. Para una falda recta en tela de 140-150 cm suele bastar con 1.20 metros. Si la tela es de 90-110 cm, necesitarás 2.00 metros.',
15
+ },
16
+ {
17
+ question: '¿Cómo afecta el ancho de la tela al consumo?',
18
+ answer:
19
+ 'A menor ancho, las piezas del patrón no caben una junto a la otra (en paralelo), por lo que el consumo suele duplicarse al tener que colocarlas una debajo de la otra.',
20
+ },
21
+ {
22
+ question: '¿Es mejor comprar tela de más?',
23
+ answer:
24
+ 'Sí, se recomienda un margen del 10% (unos 20 cm) para compensar encogimientos, fallas en el tejido o márgenes de costura inesperados.',
25
+ },
26
+ {
27
+ question: '¿Qué es el derecho del hilo y cómo influye?',
28
+ answer:
29
+ 'Es la dirección paralela a los orillos de la tela. Los patrones deben alinearse con este hilo para que la prenda no se deforme al usarla.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Elegir el tipo de prenda',
36
+ text: 'Selecciona el modelo que vas a confeccionar (falda, pantalón, etc.) para cargar su tabla de consumo base.',
37
+ },
38
+ {
39
+ name: 'Introducir ancho de la tela',
40
+ text: 'Mide el ancho de orillo a orillo de la tela que planeas comprar (90, 115, 140 o 150 cm).',
41
+ },
42
+ {
43
+ name: 'Seleccionar la talla',
44
+ text: 'Ajusta el volumen de la prenda según la talla (XS-S, M-L, XL-XXL) para recalcular el factor multiplicativo.',
45
+ },
46
+ {
47
+ name: 'Obtener metros totales',
48
+ text: 'Revisa el resultado final con y sin margen de costura para saber exactamente cuánto pedir en la tienda.',
49
+ },
50
+ ];
51
+
52
+ const faqSchema: WithContext<FAQPage> = {
53
+ '@context': 'https://schema.org',
54
+ '@type': 'FAQPage',
55
+ mainEntity: faqData.map((item) => ({
56
+ '@type': 'Question',
57
+ name: item.question,
58
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
59
+ })),
60
+ };
61
+
62
+ const howToSchema: WithContext<HowTo> = {
63
+ '@context': 'https://schema.org',
64
+ '@type': 'HowTo',
65
+ name: title,
66
+ description,
67
+ step: howToData.map((step) => ({
68
+ '@type': 'HowToStep',
69
+ name: step.name,
70
+ text: step.text,
71
+ })),
72
+ };
73
+
74
+ const appSchema: WithContext<SoftwareApplication> = {
75
+ '@context': 'https://schema.org',
76
+ '@type': 'SoftwareApplication',
77
+ name: title,
78
+ description,
79
+ applicationCategory: 'UtilityApplication',
80
+ operatingSystem: 'All',
81
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
82
+ inLanguage: 'es',
83
+ };
84
+
85
+ export const content: ToolLocaleContent<FabricProjectCalculatorUI> = {
86
+ slug,
87
+ title,
88
+ description,
89
+ faqTitle: 'Preguntas Frecuentes',
90
+ faq: faqData,
91
+ bibliographyTitle: 'Bibliografía',
92
+ bibliography: [
93
+ {
94
+ name: 'Fabric Estimation Guide - Threads Magazine',
95
+ url: 'https://www.threadsmagazine.com/forum/measuring-fabric',
96
+ },
97
+ {
98
+ name: 'How much fabric do I need? - Seamwork',
99
+ url: 'https://www.seamwork.com/sewing-tutorials/the-anatomy-of-a-sewing-pattern',
100
+ },
101
+ {
102
+ name: 'Standard Fabric Consumption Charts - Textile School',
103
+ url: 'https://www.textileschool.com/209/fabric-consumption-in-garment-making/',
104
+ },
105
+ ],
106
+ howTo: howToData,
107
+ schemas: [faqSchema, howToSchema, appSchema],
108
+ seo: [
109
+ {
110
+ type: 'title',
111
+ text: 'Calculadora de Metros de Tela para Confección: Guía de Consumo',
112
+ level: 2,
113
+ },
114
+ {
115
+ type: 'paragraph',
116
+ html: 'Una de las dudas más frecuentes en el taller de costura es determinar cuánta tela comprar para un proyecto específico. El consumo de tejido depende radicalmente de tres factores: el modelo de la prenda, la talla de la persona y, sobre todo, el ancho de la pieza de tela (que suele oscilar entre 90 cm y 150 cm). Esta calculadora técnica sistematiza el cálculo para que no compres de más ni te quedes corto en mitad del corte.',
117
+ },
118
+ {
119
+ type: 'title',
120
+ text: '¿Cuánta tela necesito para un vestido o pantalón?',
121
+ level: 3,
122
+ },
123
+ {
124
+ type: 'paragraph',
125
+ html: 'El cálculo tradicional se basa en el largo de la prenda más el largo de las mangas, añadiendo un margen para las vistas y el dobladillo. Sin embargo, cuando la tela es estrecha (90-110 cm), las piezas no suelen caber una al lado de la otra, lo que obliga a comprar el doble de largo. Nuestra herramienta contempla estas variaciones automáticamente según el estándar de la industria textil.',
126
+ },
127
+ {
128
+ type: 'title',
129
+ text: 'Consumo Estimado según el Ancho de la Tela (talla M-L)',
130
+ level: 3,
131
+ },
132
+ {
133
+ type: 'list',
134
+ items: [
135
+ '<strong>Falda Recta:</strong> 2.00 m en tela de 90 cm · 1.20 m en tela de 140/150 cm.',
136
+ '<strong>Pantalón Largo:</strong> 2.50 m en tela de 90 cm · 1.50 m en tela de 140/150 cm.',
137
+ '<strong>Camisa Manga Larga:</strong> 2.20 m en tela de 90 cm · 1.40 m en tela de 140/150 cm.',
138
+ '<strong>Vestido Básico:</strong> 3.50 m en tela de 90 cm · 2.20 m en tela de 140/150 cm.',
139
+ ],
140
+ },
141
+ {
142
+ type: 'title',
143
+ text: 'Factores que Alteran el Consumo de Tela',
144
+ level: 3,
145
+ },
146
+ {
147
+ type: 'list',
148
+ items: [
149
+ '<strong>Dirección del estampado (Rapport):</strong> Si la tela tiene un dibujo con una dirección clara o cuadros que deben casar, necesitarás entre un 15% y un 20% extra de material.',
150
+ '<strong>Sentido del hilo (Al bies):</strong> Los cortes al bies o circulares (como las faldas de capa) consumen significativamente más tela debido al desperdicio en los ángulos.',
151
+ '<strong>Sentido del pelo:</strong> En tejidos como el terciopelo o la pana, todas las piezas deben cortarse en la misma dirección, lo que limita la optimización del espacio.',
152
+ '<strong>Encogimiento:</strong> Muchos tejidos naturales (algodón, lino, lana) encogen tras el primer lavado. Es vital prelavar la tela antes de cortar.',
153
+ ],
154
+ },
155
+ {
156
+ type: 'tip',
157
+ title: 'Consejo del Costurero',
158
+ html: '<p>Si vas a usar una tela con un estampado grande o cuadros (plaids), no confíes únicamente en la medida estándar. Suma siempre una repetición completa del dibujo (el rapport) al total de metros calculado para garantizar que los patrones coincidan en las costuras laterales.</p>',
159
+ },
160
+ {
161
+ type: 'title',
162
+ text: 'Ventajas y Limitaciones de esta Calculadora',
163
+ level: 3,
164
+ },
165
+ {
166
+ type: 'list',
167
+ items: [
168
+ 'Cálculo instantáneo para múltiples anchos de tela con ajuste de talla.',
169
+ 'Incluye estimación de margen de costura personalizable.',
170
+ 'Guía visual de disposición de piezas en el paño.',
171
+ 'No sustituye a una disposición de patrones real (marcada). Las tallas Plus pueden requerir ajustes manuales adicionales.',
172
+ ],
173
+ },
174
+ {
175
+ type: 'card',
176
+ title: 'Ancho de pieza',
177
+ icon: 'mdi:arrow-expand-horizontal',
178
+ html: 'La medida transversal de la tela de <strong>orillo a orillo</strong>. Determina si las piezas del patrón caben en paralelo o deben colocarse en serie.',
179
+ },
180
+ {
181
+ type: 'card',
182
+ title: 'Margen de costura',
183
+ icon: 'mdi:tape-measure',
184
+ html: 'La distancia entre el borde del patrón y la <strong>línea de costura final</strong>. Un valor estándar es 1.5 cm para costuras de ropa.',
185
+ },
186
+ {
187
+ type: 'card',
188
+ title: 'Orillo',
189
+ icon: 'mdi:content-cut',
190
+ html: 'Los bordes laterales reforzados de la tela que <strong>no se deshilachan</strong>. Indican la dirección del hilo y sirven como referencia para el corte.',
191
+ },
192
+ ],
193
+ ui: {
194
+ sectionProject: 'Proyecto',
195
+ sectionMaterial: 'Material',
196
+ labelGarmentType: 'Tipo de prenda',
197
+ labelSize: 'Talla',
198
+ labelFabricWidth: 'Ancho de tela (cm)',
199
+ labelSeamAllowance: 'Margen de costura (cm)',
200
+ garmentSkirt: 'Falda (Recta/Aline)',
201
+ garmentPants: 'Pantalón',
202
+ garmentDress: 'Vestido',
203
+ garmentShirt: 'Camisa / Blusa',
204
+ garmentCoat: 'Abrigo / Chaqueta',
205
+ garmentTote: 'Tote Bag',
206
+ garmentMerceria: {
207
+ skirt: '1 crem. 20cm, 1 botón',
208
+ pants: '1 crem. 20cm, 1 botón, 30cm entretela',
209
+ dress: '1 crem. 60cm, 50cm entretela',
210
+ shirt: '7 botones, 1m entretela fina',
211
+ coat: '3 botones grandes, 1.5m entretela, forro',
212
+ tote: '2m cinta para asas',
213
+ },
214
+ sizeXS: 'XS-S',
215
+ sizeM: 'M-L',
216
+ sizeXL: 'XL-XXL',
217
+ width90: '90 cm (Estrecha)',
218
+ width115: '115 cm (Patchwork)',
219
+ width140: '140 cm (Estándar EU)',
220
+ width150: '150 cm (Tapicería)',
221
+ btnClear: 'Limpiar',
222
+ btnShare: 'Compartir',
223
+ btnCopied: '¡Copiado!',
224
+ btnCopyList: 'Copiar lista',
225
+ resultLabel: 'Necesitas:',
226
+ resultUnit: 'Metros',
227
+ shopAdviceFormat: 'Pide {m}m en la tienda',
228
+ boardEmpty: 'Selecciona un proyecto para ver la disposición',
229
+ boardDescFormat: 'Ancho: {w}cm | Largo: {m}m',
230
+ merchTitle: 'Mercería y Materiales',
231
+ checklistThread: 'Hilo a juego',
232
+ warningSerialFormat: 'En telas de {w}cm las piezas de tu talla no caben en paralelo. Consumo ajustado para corte en serie.',
233
+ foldLabel: '⊟ doblez',
234
+ pieceNames: {
235
+ front: 'Delantero',
236
+ back: 'Espalda',
237
+ waistband: 'Cinturilla',
238
+ waistbelt: 'Pretina',
239
+ sleeve: 'Manga',
240
+ collar: 'Cuello',
241
+ cuffs: 'Puños',
242
+ facings: 'Vistas',
243
+ lapels: 'Tapetas',
244
+ pocket: 'Bolsillo',
245
+ body: 'Cuerpo',
246
+ handleA: 'Asa A',
247
+ handleB: 'Asa B',
248
+ },
249
+ },
250
+ };