@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,196 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { SewingPatternScalerUI } from '../ui';
4
+
5
+ const slug = 'sewing-pattern-scaler';
6
+ const title = 'Sewing Pattern Scaler Online';
7
+ const description =
8
+ 'Adjust any sewing pattern to your real measurements. Differential scaling calculator with updated pattern preview.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Why does the shoulder not grow as much as the chest?',
13
+ answer:
14
+ 'The human body is not a sphere. While the torso volume can vary significantly, the skeleton and articulation points like the shoulder are much more static. Professional scaling applies differentiated factors to avoid unbalancing the garment.',
15
+ },
16
+ {
17
+ question: 'What is "ease"?',
18
+ answer:
19
+ 'It is the extra space between your body and the fabric. Without ease, you could not move. Our calculator maintains this ease so the garment fits exactly as the designer intended, but adapted to your real contours.',
20
+ },
21
+ {
22
+ question: 'Can I scale a knit or jersey pattern?',
23
+ answer:
24
+ 'Yes, but keep in mind that stretch fabrics usually have negative ease. If the pattern is very fitted, make sure the stretch factor is the same in the new fabric you choose.',
25
+ },
26
+ ];
27
+
28
+ const howToData = [
29
+ {
30
+ name: 'Measure your pattern',
31
+ text: 'Measure the key horizontal lines (chest, waist and hips) on the paper pieces of your original pattern, seam to seam.',
32
+ },
33
+ {
34
+ name: 'Set the origin',
35
+ text: 'Enter the pattern size or the measurements you have taken in the "Origin" column of our tool.',
36
+ },
37
+ {
38
+ name: 'Enter the target',
39
+ text: 'Put your real measurements or the size you want to reach. The tool will calculate the exact difference per zone.',
40
+ },
41
+ {
42
+ name: 'Apply at the table',
43
+ text: 'Follow the "Cutting Table Actions" instructions to add or remove centimetres from the sides and hems of your pieces.',
44
+ },
45
+ ];
46
+
47
+ const faqSchema: WithContext<FAQPage> = {
48
+ '@context': 'https://schema.org',
49
+ '@type': 'FAQPage',
50
+ mainEntity: faqData.map((item) => ({
51
+ '@type': 'Question',
52
+ name: item.question,
53
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
54
+ })),
55
+ };
56
+
57
+ const howToSchema: WithContext<HowTo> = {
58
+ '@context': 'https://schema.org',
59
+ '@type': 'HowTo',
60
+ name: title,
61
+ description,
62
+ step: howToData.map((step) => ({
63
+ '@type': 'HowToStep',
64
+ name: step.name,
65
+ text: step.text,
66
+ })),
67
+ };
68
+
69
+ const appSchema: WithContext<SoftwareApplication> = {
70
+ '@context': 'https://schema.org',
71
+ '@type': 'SoftwareApplication',
72
+ name: title,
73
+ description,
74
+ applicationCategory: 'UtilityApplication',
75
+ operatingSystem: 'All',
76
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
77
+ inLanguage: 'en',
78
+ };
79
+
80
+ export const content: ToolLocaleContent<SewingPatternScalerUI> = {
81
+ slug,
82
+ title,
83
+ description,
84
+ faqTitle: 'Frequently Asked Questions',
85
+ faq: faqData,
86
+ bibliographyTitle: 'Bibliography',
87
+ bibliography: [
88
+ {
89
+ name: 'Patronaje: Las Bases - Teresa Gilewska',
90
+ url: 'https://www.scribd.com/document/696165843/patronaje-las-bases-by-teresa-gilewska',
91
+ },
92
+ {
93
+ name: 'Metric Pattern Cutting for Women\'s Wear - Winifred Aldrich',
94
+ url: 'https://download.e-bookshelf.de/download/0000/5989/88/L-G-0000598988-0002339537.pdf',
95
+ },
96
+ ],
97
+ howTo: howToData,
98
+ schemas: [faqSchema, howToSchema, appSchema],
99
+ seo: [
100
+ {
101
+ type: 'title',
102
+ text: 'How to Scale Sewing Patterns: Technical and Practical Guide',
103
+ level: 2,
104
+ },
105
+ {
106
+ type: 'paragraph',
107
+ html: '<strong>Pattern scaling</strong> is one of the most critical skills in the world of dressmaking. It is not simply about enlarging or reducing a drawing proportionally; it is about adapting a two-dimensional structure to the complex curves and proportions of the human body, which does not grow linearly.',
108
+ },
109
+ {
110
+ type: 'title',
111
+ text: 'What exactly is pattern scaling?',
112
+ level: 3,
113
+ },
114
+ {
115
+ type: 'paragraph',
116
+ html: 'Scaling (or <em>grading</em>) is the technical process of increasing or decreasing the size of a base pattern to create a series of different sizes. Unlike a simple zoom, scaling takes into account that certain parts of the body grow more than others.',
117
+ },
118
+ {
119
+ type: 'title',
120
+ text: 'The Key to Success: Ease',
121
+ level: 3,
122
+ },
123
+ {
124
+ type: 'list',
125
+ items: [
126
+ '<strong>Movement ease:</strong> The extra centimetres needed to breathe, sit and move your arms without the fabric tearing.',
127
+ '<strong>Design ease:</strong> The centimetres the designer added to create a specific silhouette (e.g. an oversized coat or a floaty blouse).',
128
+ ],
129
+ },
130
+ {
131
+ type: 'tip',
132
+ title: 'Tip for Professional Scaling',
133
+ html: '<p><strong>Do not scale more than two or three sizes:</strong> If you try to go from a size 36 to a size 52, the armhole will likely distort and the neckline will look enormous. In those cases, it is better to redraw the base pattern using your measurements from scratch.</p>',
134
+ },
135
+ {
136
+ type: 'title',
137
+ text: 'Advantages of digital scaling',
138
+ level: 3,
139
+ },
140
+ {
141
+ type: 'proscons',
142
+ items: [
143
+ {
144
+ pro: 'Maintains the exact proportion of the original design.',
145
+ con: 'Armholes may require slight manual smoothing.',
146
+ },
147
+ {
148
+ pro: 'Instant calculation of the required ease.',
149
+ con: 'Does not automatically detect whether the pattern already includes seam allowance.',
150
+ },
151
+ {
152
+ pro: 'Graphic visualisation of the piece growth.',
153
+ con: 'Requires a very precise initial measurement.',
154
+ },
155
+ ],
156
+ },
157
+ {
158
+ type: 'glossary',
159
+ items: [
160
+ { term: 'Differential', definition: 'Measurement difference between two consecutive sizes.' },
161
+ { term: 'Anchor Points', definition: 'Pattern zones that do not move (usually the centre front/back).' },
162
+ { term: 'Grading Nest', definition: 'Overlapping drawing of all scaled sizes.' },
163
+ { term: 'Base Pattern', definition: 'Template without design or ease that matches the body measurements.' },
164
+ ],
165
+ },
166
+ ],
167
+ ui: {
168
+ labelSystem: 'WORKING SYSTEM',
169
+ modeStandard: 'Standard Sizes',
170
+ modeCustom: 'Real Measurements',
171
+ labelPatternSize: 'Pattern Size',
172
+ labelTargetSize: 'Target Size',
173
+ labelOriginMeasures: 'ORIGIN MEASUREMENTS',
174
+ labelTargetMeasures: 'YOUR MEASUREMENTS',
175
+ labelEase: 'Current Ease',
176
+ labelChest: 'Chest',
177
+ labelWaist: 'Waist',
178
+ labelHips: 'Hips',
179
+ labelLength: 'Length',
180
+ resBust: 'Bust',
181
+ resWaist: 'Waist',
182
+ resHips: 'Hips',
183
+ resLength: 'Length',
184
+ actionLatAdd: 'Add',
185
+ actionLatRemove: 'Remove',
186
+ actionLatSuffix: 'to the side of the piece',
187
+ actionLatNote: 'Quarter-pattern adjustment',
188
+ actionLenExtend: 'Lengthen the pattern',
189
+ actionLenShorten: 'Shorten the pattern',
190
+ actionLenNote: 'Adjustment at the hem line',
191
+ legendOriginal: 'Original',
192
+ legendUpdated: 'Updated',
193
+ warnText: 'Scaling more than 3 sizes. Risk of armhole distortion.',
194
+ sizePrefix: 'Size',
195
+ },
196
+ };
@@ -0,0 +1,231 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { SewingPatternScalerUI } from '../ui';
4
+
5
+ const slug = 'escalador-patron-costura';
6
+ const title = 'Escalador de Patrones de Costura Online';
7
+ const description =
8
+ 'Ajusta cualquier patrón de costura a tus medidas reales. Calculadora de escalado diferencial con previsualización del patrón actualizado.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: '¿Por qué no crece el hombro igual que el pecho?',
13
+ answer:
14
+ 'El cuerpo humano no es una esfera. Mientras que el volumen del torso puede variar significativamente, el esqueleto y los puntos de articulación como el hombro son mucho más estáticos. Un escalado profesional aplica factores diferenciados para no desequilibrar la prenda.',
15
+ },
16
+ {
17
+ question: '¿Qué es la "holgura" o "ease"?',
18
+ answer:
19
+ 'Es el espacio extra entre tu cuerpo y la tela. Sin holgura, no podrías moverte. Nuestra calculadora mantiene esta holgura para que la prenda te quede tal y como el diseñador la concibió, pero adaptada a tus contornos reales.',
20
+ },
21
+ {
22
+ question: '¿Puedo escalar un patrón de punto o jersey?',
23
+ answer:
24
+ 'Sí, pero ten en cuenta que las telas elásticas suelen tener holgura negativa. Si el patrón es muy ajustado, asegúrate de que el factor de elasticidad sea el mismo en la nueva tela que elijas.',
25
+ },
26
+ ];
27
+
28
+ const howToData = [
29
+ {
30
+ name: 'Mide tu patrón',
31
+ text: 'Mide las líneas horizontales clave (pecho, cintura y cadera) en las piezas de papel de tu patrón original, de costura a costura.',
32
+ },
33
+ {
34
+ name: 'Configura el origen',
35
+ text: 'Introduce la talla del patrón o las medidas que has tomado en la columna de "Origen" de nuestra herramienta.',
36
+ },
37
+ {
38
+ name: 'Introduce destino',
39
+ text: 'Pon tus medidas reales o la talla a la que quieres llegar. La herramienta calculará la diferencia exacta por zona.',
40
+ },
41
+ {
42
+ name: 'Aplica en mesa',
43
+ text: 'Sigue las instrucciones de "Acciones en Mesa de Corte" para añadir o quitar centímetros en los laterales y bajos de tus piezas.',
44
+ },
45
+ ];
46
+
47
+ const faqSchema: WithContext<FAQPage> = {
48
+ '@context': 'https://schema.org',
49
+ '@type': 'FAQPage',
50
+ mainEntity: faqData.map((item) => ({
51
+ '@type': 'Question',
52
+ name: item.question,
53
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
54
+ })),
55
+ };
56
+
57
+ const howToSchema: WithContext<HowTo> = {
58
+ '@context': 'https://schema.org',
59
+ '@type': 'HowTo',
60
+ name: title,
61
+ description,
62
+ step: howToData.map((step) => ({
63
+ '@type': 'HowToStep',
64
+ name: step.name,
65
+ text: step.text,
66
+ })),
67
+ };
68
+
69
+ const appSchema: WithContext<SoftwareApplication> = {
70
+ '@context': 'https://schema.org',
71
+ '@type': 'SoftwareApplication',
72
+ name: title,
73
+ description,
74
+ applicationCategory: 'UtilityApplication',
75
+ operatingSystem: 'All',
76
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
77
+ inLanguage: 'es',
78
+ };
79
+
80
+ export const content: ToolLocaleContent<SewingPatternScalerUI> = {
81
+ slug,
82
+ title,
83
+ description,
84
+ faqTitle: 'Preguntas Frecuentes',
85
+ faq: faqData,
86
+ bibliographyTitle: 'Bibliografía',
87
+ bibliography: [
88
+ {
89
+ name: 'Patronaje: Las Bases - Teresa Gilewska',
90
+ url: 'https://www.scribd.com/document/696165843/patronaje-las-bases-by-teresa-gilewska',
91
+ },
92
+ {
93
+ name: 'Metric Pattern Cutting for Women\'s Wear - Winifred Aldrich',
94
+ url: 'https://download.e-bookshelf.de/download/0000/5989/88/L-G-0000598988-0002339537.pdf',
95
+ },
96
+ ],
97
+ howTo: howToData,
98
+ schemas: [faqSchema, howToSchema, appSchema],
99
+ seo: [
100
+ {
101
+ type: 'title',
102
+ text: 'Cómo Escalar Patrones de Costura: Guía Técnica y Práctica',
103
+ level: 2,
104
+ },
105
+ {
106
+ type: 'paragraph',
107
+ html: 'El <strong>escalado de patrones</strong> es una de las habilidades más críticas en el mundo de la confección. No se trata simplemente de agrandar o reducir un dibujo de forma proporcional; se trata de adaptar una estructura bidimensional a las complejas curvas y proporciones del cuerpo humano, que no crece de forma lineal.',
108
+ },
109
+ {
110
+ type: 'stats',
111
+ items: [
112
+ { value: 'Offline', label: 'Cálculos Locales', icon: 'mdi:calculator' },
113
+ { value: 'Diferencial', label: 'Escalado Proporcional', icon: 'mdi:resize' },
114
+ { value: '100%', label: 'Seguro y Privado', icon: 'mdi:lock' },
115
+ ],
116
+ columns: 3,
117
+ },
118
+ {
119
+ type: 'title',
120
+ text: '¿Qué es exactamente el escalado de patrones?',
121
+ level: 3,
122
+ },
123
+ {
124
+ type: 'paragraph',
125
+ html: 'El escalado (o <em>grading</em> en inglés) es el proceso técnico de aumentar o disminuir el tamaño de un patrón base para crear una serie de tallas diferentes. A diferencia de un simple zoom, el escalado tiene en cuenta que ciertas partes del cuerpo crecen más que otras. Por ejemplo, el contorno de pecho suele variar más entre tallas que el ancho de hombro o el largo de talle.',
126
+ },
127
+ {
128
+ type: 'title',
129
+ text: 'El Secreto del Éxito: La Holgura (Ease)',
130
+ level: 3,
131
+ },
132
+ {
133
+ type: 'list',
134
+ items: [
135
+ '<strong>Holgura de movimiento:</strong> Los centímetros extra necesarios para que puedas respirar, sentarte y mover los brazos sin que la tela se rompa.',
136
+ '<strong>Holgura de diseño:</strong> Los centímetros que el diseñador ha añadido para crear una silueta específica (por ejemplo, un abrigo oversize o una blusa vaporosa).',
137
+ ],
138
+ },
139
+ {
140
+ type: 'title',
141
+ text: 'Escalado Horizontal vs. Vertical',
142
+ level: 3,
143
+ },
144
+ {
145
+ type: 'list',
146
+ items: [
147
+ '<strong>Eje Horizontal (Contornos):</strong> Pecho, Cintura, Cadera. Requiere mayor ajuste. Se divide en cuartos para cada pieza del patrón.',
148
+ '<strong>Eje Vertical (Largos):</strong> Talle delantero, Talle espalda, Largo total. Afecta a la posición de pinzas y línea de cintura. Menor variación entre tallas contiguas.',
149
+ ],
150
+ },
151
+ {
152
+ type: 'title',
153
+ text: 'Cómo usar el Escalador de Patrones',
154
+ level: 3,
155
+ },
156
+ {
157
+ type: 'list',
158
+ items: [
159
+ '<strong>Mide tu patrón:</strong> Coge la pieza de papel y mide de borde a borde en las líneas de pecho, cintura y cadera.',
160
+ '<strong>Introduce las medidas origen:</strong> Escribe esas medidas en la columna izquierda e indica qué talla representa ese patrón.',
161
+ '<strong>Introduce tus medidas o talla destino:</strong> En la columna derecha, pon tus medidas reales o la talla a la que quieres llegar.',
162
+ '<strong>Interpreta los resultados:</strong> La calculadora te mostrará cuánto debes añadir o quitar en cada zona específica.',
163
+ ],
164
+ },
165
+ {
166
+ type: 'tip',
167
+ title: 'Consejo para un Escalado Profesional',
168
+ html: '<p><strong>No escales más de dos o tres tallas:</strong> Si intentas pasar de una talla 36 a una 52, es muy probable que la sisa se deforme y el cuello quede enorme. En esos casos, es mejor redibujar el patrón base usando tus medidas desde cero.</p>',
169
+ },
170
+ {
171
+ type: 'title',
172
+ text: 'Ventajas del escalado digital',
173
+ level: 3,
174
+ },
175
+ {
176
+ type: 'proscons',
177
+ items: [
178
+ {
179
+ pro: 'Mantiene la proporción exacta del diseño original.',
180
+ con: 'Las sisas pueden requerir un ligero suavizado manual.',
181
+ },
182
+ {
183
+ pro: 'Cálculo instantáneo de la holgura necesaria.',
184
+ con: 'No detecta automáticamente si el patrón ya incluye costura.',
185
+ },
186
+ {
187
+ pro: 'Visualización gráfica del crecimiento de la pieza.',
188
+ con: 'Requiere una toma de medidas inicial muy precisa.',
189
+ },
190
+ ],
191
+ },
192
+ {
193
+ type: 'glossary',
194
+ items: [
195
+ { term: 'Diferencial', definition: 'Diferencia de medida entre dos tallas consecutivas.' },
196
+ { term: 'Puntos de Anclaje', definition: 'Zonas del patrón que no se mueven (normalmente el centro del delantero/espalda).' },
197
+ { term: 'Nido de Escalado', definition: 'Dibujo superpuesto de todas las tallas escaladas.' },
198
+ { term: 'Patrón Base', definition: 'Plantilla sin diseño ni holgura que corresponde a las medidas del cuerpo.' },
199
+ ],
200
+ },
201
+ ],
202
+ ui: {
203
+ labelSystem: 'SISTEMA DE TRABAJO',
204
+ modeStandard: 'Tallas Estándar',
205
+ modeCustom: 'Medidas Reales',
206
+ labelPatternSize: 'Talla Patrón',
207
+ labelTargetSize: 'Talla Destino',
208
+ labelOriginMeasures: 'MEDIDAS ORIGEN',
209
+ labelTargetMeasures: 'TUS MEDIDAS',
210
+ labelEase: 'Holgura Actual (Ease)',
211
+ labelChest: 'Pecho',
212
+ labelWaist: 'Cintura',
213
+ labelHips: 'Cadera',
214
+ labelLength: 'Largo',
215
+ resBust: 'Busto',
216
+ resWaist: 'Cintura',
217
+ resHips: 'Cadera',
218
+ resLength: 'Largo',
219
+ actionLatAdd: 'Añade',
220
+ actionLatRemove: 'Quita',
221
+ actionLatSuffix: 'al lateral de la pieza',
222
+ actionLatNote: 'Ajuste por cuarto de patrón',
223
+ actionLenExtend: 'Alarga el patrón',
224
+ actionLenShorten: 'Acorta el patrón',
225
+ actionLenNote: 'Ajuste en la línea de bajo',
226
+ legendOriginal: 'Original',
227
+ legendUpdated: 'Actualizado',
228
+ warnText: 'Escalado mayor a 3 tallas. Riesgo de deformación en sisa.',
229
+ sizePrefix: 'Talla',
230
+ },
231
+ };
@@ -0,0 +1,187 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { SewingPatternScalerUI } from '../ui';
4
+
5
+ const slug = 'dimensionneur-patron-couture';
6
+ const title = 'Dimensionneur de Patron de Couture en Ligne';
7
+ const description =
8
+ 'Ajustez n\'importe quel patron de couture à vos mesures réelles. Calculateur de mise à l\'échelle différentielle avec prévisualisation du patron mis à jour.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Pourquoi l\'épaule ne grandit-elle pas autant que la poitrine ?',
13
+ answer:
14
+ 'Le corps humain n\'est pas une sphère. Alors que le volume du torse peut varier significativement, le squelette et les points d\'articulation comme l\'épaule sont beaucoup plus statiques. Une mise à l\'échelle professionnelle applique des facteurs différenciés pour ne pas déséquilibrer le vêtement.',
15
+ },
16
+ {
17
+ question: 'Qu\'est-ce que l\'aisance ?',
18
+ answer:
19
+ 'C\'est l\'espace supplémentaire entre votre corps et le tissu. Sans aisance, vous ne pourriez pas vous déplacer. Notre calculateur maintient cette aisance pour que le vêtement vous aille exactement comme le designer l\'a conçu, mais adapté à vos contours réels.',
20
+ },
21
+ {
22
+ question: 'Puis-je mettre à l\'échelle un patron en maille ou jersey ?',
23
+ answer:
24
+ 'Oui, mais gardez à l\'esprit que les tissus extensibles ont généralement une aisance négative. Si le patron est très ajusté, assurez-vous que le facteur d\'élasticité est le même dans le nouveau tissu que vous choisissez.',
25
+ },
26
+ ];
27
+
28
+ const howToData = [
29
+ {
30
+ name: 'Mesurez votre patron',
31
+ text: 'Mesurez les lignes horizontales clés (poitrine, taille et hanches) sur les pièces en papier de votre patron original, couture à couture.',
32
+ },
33
+ {
34
+ name: 'Configurez l\'origine',
35
+ text: 'Entrez la taille du patron ou les mesures que vous avez prises dans la colonne "Origine" de notre outil.',
36
+ },
37
+ {
38
+ name: 'Entrez la destination',
39
+ text: 'Mettez vos mesures réelles ou la taille que vous souhaitez atteindre. L\'outil calculera la différence exacte par zone.',
40
+ },
41
+ {
42
+ name: 'Appliquez à la table',
43
+ text: 'Suivez les instructions "Actions à la Table de Coupe" pour ajouter ou retirer des centimètres sur les côtés et les ourlets de vos pièces.',
44
+ },
45
+ ];
46
+
47
+ const faqSchema: WithContext<FAQPage> = {
48
+ '@context': 'https://schema.org',
49
+ '@type': 'FAQPage',
50
+ mainEntity: faqData.map((item) => ({
51
+ '@type': 'Question',
52
+ name: item.question,
53
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
54
+ })),
55
+ };
56
+
57
+ const howToSchema: WithContext<HowTo> = {
58
+ '@context': 'https://schema.org',
59
+ '@type': 'HowTo',
60
+ name: title,
61
+ description,
62
+ step: howToData.map((step) => ({
63
+ '@type': 'HowToStep',
64
+ name: step.name,
65
+ text: step.text,
66
+ })),
67
+ };
68
+
69
+ const appSchema: WithContext<SoftwareApplication> = {
70
+ '@context': 'https://schema.org',
71
+ '@type': 'SoftwareApplication',
72
+ name: title,
73
+ description,
74
+ applicationCategory: 'UtilityApplication',
75
+ operatingSystem: 'All',
76
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
77
+ inLanguage: 'fr',
78
+ };
79
+
80
+ export const content: ToolLocaleContent<SewingPatternScalerUI> = {
81
+ slug,
82
+ title,
83
+ description,
84
+ faqTitle: 'Questions Fréquentes',
85
+ faq: faqData,
86
+ bibliographyTitle: 'Bibliographie',
87
+ bibliography: [
88
+ {
89
+ name: 'Patronaje: Las Bases - Teresa Gilewska',
90
+ url: 'https://www.scribd.com/document/696165843/patronaje-las-bases-by-teresa-gilewska',
91
+ },
92
+ {
93
+ name: 'Metric Pattern Cutting for Women\'s Wear - Winifred Aldrich',
94
+ url: 'https://download.e-bookshelf.de/download/0000/5989/88/L-G-0000598988-0002339537.pdf',
95
+ },
96
+ ],
97
+ howTo: howToData,
98
+ schemas: [faqSchema, howToSchema, appSchema],
99
+ seo: [
100
+ {
101
+ type: 'title',
102
+ text: 'Comment Mettre à l\'Échelle des Patrons de Couture : Guide Technique et Pratique',
103
+ level: 2,
104
+ },
105
+ {
106
+ type: 'paragraph',
107
+ html: 'La <strong>mise à l\'échelle des patrons</strong> est l\'une des compétences les plus critiques dans le monde de la couture. Il ne s\'agit pas simplement d\'agrandir ou de réduire un dessin de façon proportionnelle ; il s\'agit d\'adapter une structure bidimensionnelle aux courbes complexes et aux proportions du corps humain, qui ne grandit pas de façon linéaire.',
108
+ },
109
+ {
110
+ type: 'title',
111
+ text: 'La Clé du Succès : L\'Aisance',
112
+ level: 3,
113
+ },
114
+ {
115
+ type: 'list',
116
+ items: [
117
+ '<strong>Aisance de mouvement :</strong> Les centimètres supplémentaires nécessaires pour respirer, s\'asseoir et bouger les bras sans que le tissu ne se déchire.',
118
+ '<strong>Aisance de design :</strong> Les centimètres que le designer a ajoutés pour créer une silhouette spécifique (par exemple, un manteau oversize ou un chemisier vaporeux).',
119
+ ],
120
+ },
121
+ {
122
+ type: 'tip',
123
+ title: 'Conseil pour une Mise à l\'Échelle Professionnelle',
124
+ html: '<p><strong>Ne mettez pas à l\'échelle plus de deux ou trois tailles :</strong> Si vous essayez de passer d\'une taille 36 à une taille 52, l\'emmanchure va probablement se déformer et l\'encolure sera énorme. Dans ces cas, il vaut mieux redessiner le patron de base en utilisant vos mesures depuis le début.</p>',
125
+ },
126
+ {
127
+ type: 'title',
128
+ text: 'Avantages de la mise à l\'échelle numérique',
129
+ level: 3,
130
+ },
131
+ {
132
+ type: 'proscons',
133
+ items: [
134
+ {
135
+ pro: 'Maintient la proportion exacte du design original.',
136
+ con: 'Les emmanchures peuvent nécessiter un léger lissage manuel.',
137
+ },
138
+ {
139
+ pro: 'Calcul instantané de l\'aisance nécessaire.',
140
+ con: 'Ne détecte pas automatiquement si le patron inclut déjà la marge de couture.',
141
+ },
142
+ {
143
+ pro: 'Visualisation graphique de la croissance de la pièce.',
144
+ con: 'Nécessite une prise de mesures initiale très précise.',
145
+ },
146
+ ],
147
+ },
148
+ {
149
+ type: 'glossary',
150
+ items: [
151
+ { term: 'Différentiel', definition: 'Différence de mesure entre deux tailles consécutives.' },
152
+ { term: 'Points d\'Ancrage', definition: 'Zones du patron qui ne bougent pas (généralement le centre devant/dos).' },
153
+ { term: 'Nid de Gradation', definition: 'Dessin superposé de toutes les tailles mises à l\'échelle.' },
154
+ { term: 'Patron de Base', definition: 'Gabarit sans design ni aisance qui correspond aux mesures du corps.' },
155
+ ],
156
+ },
157
+ ],
158
+ ui: {
159
+ labelSystem: 'SYSTÈME DE TRAVAIL',
160
+ modeStandard: 'Tailles Standard',
161
+ modeCustom: 'Mesures Réelles',
162
+ labelPatternSize: 'Taille du Patron',
163
+ labelTargetSize: 'Taille Cible',
164
+ labelOriginMeasures: 'MESURES D\'ORIGINE',
165
+ labelTargetMeasures: 'VOS MESURES',
166
+ labelEase: 'Aisance Actuelle',
167
+ labelChest: 'Poitrine',
168
+ labelWaist: 'Taille',
169
+ labelHips: 'Hanches',
170
+ labelLength: 'Longueur',
171
+ resBust: 'Buste',
172
+ resWaist: 'Taille',
173
+ resHips: 'Hanches',
174
+ resLength: 'Longueur',
175
+ actionLatAdd: 'Ajoutez',
176
+ actionLatRemove: 'Retirez',
177
+ actionLatSuffix: 'au côté de la pièce',
178
+ actionLatNote: 'Ajustement au quart du patron',
179
+ actionLenExtend: 'Allongez le patron',
180
+ actionLenShorten: 'Raccourcissez le patron',
181
+ actionLenNote: 'Ajustement à la ligne d\'ourlet',
182
+ legendOriginal: 'Original',
183
+ legendUpdated: 'Mis à jour',
184
+ warnText: 'Mise à l\'échelle supérieure à 3 tailles. Risque de déformation de l\'emmanchure.',
185
+ sizePrefix: 'Taille',
186
+ },
187
+ };
@@ -0,0 +1,34 @@
1
+ import type { TextilesToolEntry, ToolLocaleContent, ToolDefinition } from '../../types';
2
+ import SewingPatternScalerComponent from './component.astro';
3
+ import SewingPatternScalerSEO from './seo.astro';
4
+ import SewingPatternScalerBibliography from './bibliography.astro';
5
+
6
+ import type { SewingPatternScalerUI } from './ui';
7
+
8
+ export type SewingPatternScalerLocaleContent = ToolLocaleContent<SewingPatternScalerUI>;
9
+
10
+ import { content as es } from './i18n/es';
11
+ import { content as en } from './i18n/en';
12
+ import { content as fr } from './i18n/fr';
13
+
14
+ export const sewingPatternScaler: TextilesToolEntry<SewingPatternScalerUI> = {
15
+ id: 'sewing-pattern-scaler',
16
+ icons: {
17
+ bg: 'mdi:human-female',
18
+ fg: 'mdi:checkerboard',
19
+ },
20
+ i18n: {
21
+ es: async () => es,
22
+ en: async () => en,
23
+ fr: async () => fr,
24
+ },
25
+ };
26
+
27
+ export { SewingPatternScalerComponent, SewingPatternScalerSEO, SewingPatternScalerBibliography };
28
+
29
+ export const SEWING_PATTERN_SCALER_TOOL: ToolDefinition = {
30
+ entry: sewingPatternScaler,
31
+ Component: SewingPatternScalerComponent,
32
+ SEOComponent: SewingPatternScalerSEO,
33
+ BibliographyComponent: SewingPatternScalerBibliography,
34
+ };
@@ -0,0 +1,35 @@
1
+ export interface MeasureSet {
2
+ chest: number;
3
+ waist: number;
4
+ hips: number;
5
+ length: number;
6
+ }
7
+
8
+ export const SIZE_TABLE: Record<string, MeasureSet> = {
9
+ '36': { chest: 84, waist: 64, hips: 90, length: 58 },
10
+ '38': { chest: 88, waist: 68, hips: 94, length: 59 },
11
+ '40': { chest: 92, waist: 72, hips: 98, length: 60 },
12
+ '42': { chest: 96, waist: 76, hips: 102, length: 61 },
13
+ '44': { chest: 100, waist: 80, hips: 106, length: 62 },
14
+ '46': { chest: 104, waist: 84, hips: 110, length: 63 },
15
+ };
16
+
17
+ export function getStandardMeasures(size: string): MeasureSet {
18
+ return { ...(SIZE_TABLE[size] ?? SIZE_TABLE['38']) };
19
+ }
20
+
21
+ export function computeResult(tgt: MeasureSet, ease: number): { c: number; w: number; h: number; l: number } {
22
+ return { c: tgt.chest + ease, w: tgt.waist + ease, h: tgt.hips + ease, l: tgt.length };
23
+ }
24
+
25
+ export function computeLateralAdj(orgChest: number, tgtChest: number): number {
26
+ return parseFloat(((tgtChest - orgChest) / 4).toFixed(2));
27
+ }
28
+
29
+ export function computeLengthAdj(orgLen: number, tgtLen: number): number {
30
+ return parseFloat((tgtLen - orgLen).toFixed(1));
31
+ }
32
+
33
+ export function isLargeScale(orgChest: number, tgtChest: number): boolean {
34
+ return Math.abs(orgChest - tgtChest) > 12;
35
+ }