@jjlmoya/utils-textiles 1.13.0 → 1.15.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 (254) hide show
  1. package/package.json +1 -1
  2. package/src/category/i18n/de.ts +2 -2
  3. package/src/category/i18n/en.ts +2 -2
  4. package/src/category/i18n/es.ts +2 -2
  5. package/src/category/i18n/fr.ts +9 -9
  6. package/src/category/i18n/id.ts +2 -2
  7. package/src/category/i18n/it.ts +2 -2
  8. package/src/category/i18n/nl.ts +2 -2
  9. package/src/category/i18n/pl.ts +3 -3
  10. package/src/category/i18n/pt.ts +2 -2
  11. package/src/category/i18n/ru.ts +5 -5
  12. package/src/category/i18n/sv.ts +3 -3
  13. package/src/category/i18n/zh.ts +2 -2
  14. package/src/layouts/PreviewLayout.astro +1 -0
  15. package/src/pages/[locale]/[slug].astro +30 -14
  16. package/src/tests/diacritics_density.test.ts +118 -0
  17. package/src/tests/inverted_punctuation.test.ts +84 -0
  18. package/src/tests/locale_completeness.test.ts +0 -33
  19. package/src/tests/no_en_dash.test.ts +70 -0
  20. package/src/tests/script_density.test.ts +94 -0
  21. package/src/tests/shared-test-helpers.ts +56 -0
  22. package/src/tests/tool_exports.test.ts +34 -0
  23. package/src/tool/burnTest/bibliography.astro +2 -10
  24. package/src/tool/burnTest/bibliography.ts +16 -0
  25. package/src/tool/burnTest/i18n/de.ts +5 -19
  26. package/src/tool/burnTest/i18n/en.ts +2 -16
  27. package/src/tool/burnTest/i18n/es.ts +2 -16
  28. package/src/tool/burnTest/i18n/fr.ts +5 -19
  29. package/src/tool/burnTest/i18n/id.ts +2 -16
  30. package/src/tool/burnTest/i18n/it.ts +2 -16
  31. package/src/tool/burnTest/i18n/ja.ts +2 -16
  32. package/src/tool/burnTest/i18n/ko.ts +2 -16
  33. package/src/tool/burnTest/i18n/nl.ts +2 -16
  34. package/src/tool/burnTest/i18n/pl.ts +5 -19
  35. package/src/tool/burnTest/i18n/pt.ts +2 -16
  36. package/src/tool/burnTest/i18n/ru.ts +8 -22
  37. package/src/tool/burnTest/i18n/sv.ts +2 -16
  38. package/src/tool/burnTest/i18n/tr.ts +2 -16
  39. package/src/tool/burnTest/i18n/zh.ts +5 -19
  40. package/src/tool/burnTest/index.ts +1 -0
  41. package/src/tool/burnTest/seo.astro +2 -27
  42. package/src/tool/clothingSizeConverter/bibliography.astro +2 -10
  43. package/src/tool/clothingSizeConverter/bibliography.ts +10 -0
  44. package/src/tool/clothingSizeConverter/i18n/de.ts +2 -10
  45. package/src/tool/clothingSizeConverter/i18n/en.ts +3 -11
  46. package/src/tool/clothingSizeConverter/i18n/es.ts +2 -10
  47. package/src/tool/clothingSizeConverter/i18n/fr.ts +8 -16
  48. package/src/tool/clothingSizeConverter/i18n/id.ts +2 -10
  49. package/src/tool/clothingSizeConverter/i18n/it.ts +2 -10
  50. package/src/tool/clothingSizeConverter/i18n/ja.ts +2 -10
  51. package/src/tool/clothingSizeConverter/i18n/ko.ts +2 -10
  52. package/src/tool/clothingSizeConverter/i18n/nl.ts +2 -10
  53. package/src/tool/clothingSizeConverter/i18n/pl.ts +3 -11
  54. package/src/tool/clothingSizeConverter/i18n/pt.ts +2 -10
  55. package/src/tool/clothingSizeConverter/i18n/ru.ts +4 -12
  56. package/src/tool/clothingSizeConverter/i18n/sv.ts +2 -10
  57. package/src/tool/clothingSizeConverter/i18n/tr.ts +2 -10
  58. package/src/tool/clothingSizeConverter/i18n/zh.ts +3 -11
  59. package/src/tool/clothingSizeConverter/index.ts +1 -0
  60. package/src/tool/clothingSizeConverter/seo.astro +2 -27
  61. package/src/tool/fabricProjectCalculator/bibliography.astro +2 -10
  62. package/src/tool/fabricProjectCalculator/bibliography.ts +16 -0
  63. package/src/tool/fabricProjectCalculator/component.astro +2 -3
  64. package/src/tool/fabricProjectCalculator/fabric-project-calculator.css +63 -1
  65. package/src/tool/fabricProjectCalculator/i18n/de.ts +2 -16
  66. package/src/tool/fabricProjectCalculator/i18n/en.ts +2 -16
  67. package/src/tool/fabricProjectCalculator/i18n/es.ts +2 -16
  68. package/src/tool/fabricProjectCalculator/i18n/fr.ts +2 -16
  69. package/src/tool/fabricProjectCalculator/i18n/id.ts +2 -16
  70. package/src/tool/fabricProjectCalculator/i18n/it.ts +2 -16
  71. package/src/tool/fabricProjectCalculator/i18n/ja.ts +2 -16
  72. package/src/tool/fabricProjectCalculator/i18n/ko.ts +2 -16
  73. package/src/tool/fabricProjectCalculator/i18n/nl.ts +2 -16
  74. package/src/tool/fabricProjectCalculator/i18n/pl.ts +2 -16
  75. package/src/tool/fabricProjectCalculator/i18n/pt.ts +2 -16
  76. package/src/tool/fabricProjectCalculator/i18n/ru.ts +4 -18
  77. package/src/tool/fabricProjectCalculator/i18n/sv.ts +2 -16
  78. package/src/tool/fabricProjectCalculator/i18n/tr.ts +2 -16
  79. package/src/tool/fabricProjectCalculator/i18n/zh.ts +3 -17
  80. package/src/tool/fabricProjectCalculator/index.ts +1 -0
  81. package/src/tool/fabricProjectCalculator/seo.astro +2 -27
  82. package/src/tool/fabricTruth/bibliography.astro +2 -10
  83. package/src/tool/fabricTruth/bibliography.ts +16 -0
  84. package/src/tool/fabricTruth/i18n/de.ts +3 -17
  85. package/src/tool/fabricTruth/i18n/en.ts +3 -17
  86. package/src/tool/fabricTruth/i18n/es.ts +3 -17
  87. package/src/tool/fabricTruth/i18n/fr.ts +15 -29
  88. package/src/tool/fabricTruth/i18n/id.ts +3 -17
  89. package/src/tool/fabricTruth/i18n/it.ts +3 -17
  90. package/src/tool/fabricTruth/i18n/ja.ts +3 -17
  91. package/src/tool/fabricTruth/i18n/ko.ts +3 -17
  92. package/src/tool/fabricTruth/i18n/nl.ts +3 -17
  93. package/src/tool/fabricTruth/i18n/pl.ts +3 -17
  94. package/src/tool/fabricTruth/i18n/pt.ts +3 -17
  95. package/src/tool/fabricTruth/i18n/ru.ts +13 -27
  96. package/src/tool/fabricTruth/i18n/sv.ts +3 -17
  97. package/src/tool/fabricTruth/i18n/tr.ts +3 -17
  98. package/src/tool/fabricTruth/i18n/zh.ts +11 -25
  99. package/src/tool/fabricTruth/index.ts +1 -0
  100. package/src/tool/fabricTruth/seo.astro +2 -27
  101. package/src/tool/fiberPrep/bibliography.astro +2 -10
  102. package/src/tool/fiberPrep/bibliography.ts +12 -0
  103. package/src/tool/fiberPrep/fiber-preparation-natural-dyeing.css +130 -11
  104. package/src/tool/fiberPrep/i18n/de.ts +2 -12
  105. package/src/tool/fiberPrep/i18n/en.ts +2 -12
  106. package/src/tool/fiberPrep/i18n/es.ts +2 -12
  107. package/src/tool/fiberPrep/i18n/fr.ts +6 -16
  108. package/src/tool/fiberPrep/i18n/id.ts +2 -12
  109. package/src/tool/fiberPrep/i18n/it.ts +2 -12
  110. package/src/tool/fiberPrep/i18n/ja.ts +2 -12
  111. package/src/tool/fiberPrep/i18n/ko.ts +2 -12
  112. package/src/tool/fiberPrep/i18n/nl.ts +2 -12
  113. package/src/tool/fiberPrep/i18n/pl.ts +2 -12
  114. package/src/tool/fiberPrep/i18n/pt.ts +2 -12
  115. package/src/tool/fiberPrep/i18n/ru.ts +5 -15
  116. package/src/tool/fiberPrep/i18n/sv.ts +2 -12
  117. package/src/tool/fiberPrep/i18n/tr.ts +2 -12
  118. package/src/tool/fiberPrep/i18n/zh.ts +4 -14
  119. package/src/tool/fiberPrep/index.ts +1 -0
  120. package/src/tool/fiberPrep/seo.astro +2 -27
  121. package/src/tool/knittingGauge/bibliography.astro +2 -10
  122. package/src/tool/knittingGauge/bibliography.ts +12 -0
  123. package/src/tool/knittingGauge/i18n/de.ts +2 -12
  124. package/src/tool/knittingGauge/i18n/en.ts +2 -12
  125. package/src/tool/knittingGauge/i18n/es.ts +2 -12
  126. package/src/tool/knittingGauge/i18n/fr.ts +2 -12
  127. package/src/tool/knittingGauge/i18n/id.ts +2 -12
  128. package/src/tool/knittingGauge/i18n/it.ts +2 -12
  129. package/src/tool/knittingGauge/i18n/ja.ts +2 -12
  130. package/src/tool/knittingGauge/i18n/ko.ts +2 -12
  131. package/src/tool/knittingGauge/i18n/nl.ts +2 -12
  132. package/src/tool/knittingGauge/i18n/pl.ts +2 -12
  133. package/src/tool/knittingGauge/i18n/pt.ts +2 -12
  134. package/src/tool/knittingGauge/i18n/ru.ts +8 -18
  135. package/src/tool/knittingGauge/i18n/sv.ts +2 -12
  136. package/src/tool/knittingGauge/i18n/tr.ts +2 -12
  137. package/src/tool/knittingGauge/i18n/zh.ts +3 -13
  138. package/src/tool/knittingGauge/index.ts +1 -0
  139. package/src/tool/knittingGauge/seo.astro +2 -27
  140. package/src/tool/laundryGuide/bibliography.astro +2 -10
  141. package/src/tool/laundryGuide/bibliography.ts +6 -0
  142. package/src/tool/laundryGuide/i18n/de.ts +3 -7
  143. package/src/tool/laundryGuide/i18n/en.ts +3 -7
  144. package/src/tool/laundryGuide/i18n/es.ts +3 -7
  145. package/src/tool/laundryGuide/i18n/fr.ts +14 -18
  146. package/src/tool/laundryGuide/i18n/id.ts +3 -7
  147. package/src/tool/laundryGuide/i18n/it.ts +3 -7
  148. package/src/tool/laundryGuide/i18n/ja.ts +2 -6
  149. package/src/tool/laundryGuide/i18n/ko.ts +2 -6
  150. package/src/tool/laundryGuide/i18n/nl.ts +3 -7
  151. package/src/tool/laundryGuide/i18n/pl.ts +4 -8
  152. package/src/tool/laundryGuide/i18n/pt.ts +3 -7
  153. package/src/tool/laundryGuide/i18n/ru.ts +8 -12
  154. package/src/tool/laundryGuide/i18n/sv.ts +3 -7
  155. package/src/tool/laundryGuide/i18n/tr.ts +2 -6
  156. package/src/tool/laundryGuide/i18n/zh.ts +4 -8
  157. package/src/tool/laundryGuide/index.ts +1 -0
  158. package/src/tool/laundryGuide/seo.astro +2 -27
  159. package/src/tool/needleConverter/bibliography.astro +2 -10
  160. package/src/tool/needleConverter/bibliography.ts +12 -0
  161. package/src/tool/needleConverter/i18n/de.ts +2 -12
  162. package/src/tool/needleConverter/i18n/en.ts +2 -12
  163. package/src/tool/needleConverter/i18n/es.ts +2 -12
  164. package/src/tool/needleConverter/i18n/fr.ts +7 -17
  165. package/src/tool/needleConverter/i18n/id.ts +2 -12
  166. package/src/tool/needleConverter/i18n/it.ts +2 -12
  167. package/src/tool/needleConverter/i18n/ja.ts +2 -12
  168. package/src/tool/needleConverter/i18n/ko.ts +2 -12
  169. package/src/tool/needleConverter/i18n/nl.ts +2 -12
  170. package/src/tool/needleConverter/i18n/pl.ts +2 -12
  171. package/src/tool/needleConverter/i18n/pt.ts +2 -12
  172. package/src/tool/needleConverter/i18n/ru.ts +6 -16
  173. package/src/tool/needleConverter/i18n/sv.ts +2 -12
  174. package/src/tool/needleConverter/i18n/tr.ts +2 -12
  175. package/src/tool/needleConverter/i18n/zh.ts +2 -12
  176. package/src/tool/needleConverter/index.ts +1 -0
  177. package/src/tool/needleConverter/seo.astro +1 -1
  178. package/src/tool/sewingPatternScaler/bibliography.astro +2 -10
  179. package/src/tool/sewingPatternScaler/bibliography.ts +12 -0
  180. package/src/tool/sewingPatternScaler/i18n/de.ts +2 -12
  181. package/src/tool/sewingPatternScaler/i18n/en.ts +2 -12
  182. package/src/tool/sewingPatternScaler/i18n/es.ts +2 -12
  183. package/src/tool/sewingPatternScaler/i18n/fr.ts +4 -14
  184. package/src/tool/sewingPatternScaler/i18n/id.ts +2 -12
  185. package/src/tool/sewingPatternScaler/i18n/it.ts +2 -12
  186. package/src/tool/sewingPatternScaler/i18n/ja.ts +2 -12
  187. package/src/tool/sewingPatternScaler/i18n/ko.ts +2 -12
  188. package/src/tool/sewingPatternScaler/i18n/nl.ts +2 -12
  189. package/src/tool/sewingPatternScaler/i18n/pl.ts +4 -14
  190. package/src/tool/sewingPatternScaler/i18n/pt.ts +2 -12
  191. package/src/tool/sewingPatternScaler/i18n/ru.ts +9 -19
  192. package/src/tool/sewingPatternScaler/i18n/sv.ts +2 -12
  193. package/src/tool/sewingPatternScaler/i18n/tr.ts +2 -12
  194. package/src/tool/sewingPatternScaler/i18n/zh.ts +5 -15
  195. package/src/tool/sewingPatternScaler/index.ts +1 -0
  196. package/src/tool/sewingPatternScaler/seo.astro +2 -36
  197. package/src/tool/shoeSizeConverter/bibliography.astro +2 -10
  198. package/src/tool/shoeSizeConverter/bibliography.ts +7 -0
  199. package/src/tool/shoeSizeConverter/i18n/de.ts +2 -7
  200. package/src/tool/shoeSizeConverter/i18n/en.ts +2 -7
  201. package/src/tool/shoeSizeConverter/i18n/es.ts +2 -7
  202. package/src/tool/shoeSizeConverter/i18n/fr.ts +3 -8
  203. package/src/tool/shoeSizeConverter/i18n/id.ts +2 -7
  204. package/src/tool/shoeSizeConverter/i18n/it.ts +2 -7
  205. package/src/tool/shoeSizeConverter/i18n/ja.ts +2 -7
  206. package/src/tool/shoeSizeConverter/i18n/ko.ts +2 -7
  207. package/src/tool/shoeSizeConverter/i18n/nl.ts +2 -7
  208. package/src/tool/shoeSizeConverter/i18n/pl.ts +2 -7
  209. package/src/tool/shoeSizeConverter/i18n/pt.ts +2 -7
  210. package/src/tool/shoeSizeConverter/i18n/ru.ts +6 -11
  211. package/src/tool/shoeSizeConverter/i18n/sv.ts +2 -7
  212. package/src/tool/shoeSizeConverter/i18n/tr.ts +2 -7
  213. package/src/tool/shoeSizeConverter/i18n/zh.ts +5 -10
  214. package/src/tool/shoeSizeConverter/index.ts +1 -0
  215. package/src/tool/shoeSizeConverter/seo.astro +2 -27
  216. package/src/tool/stainChemistry/bibliography.astro +2 -10
  217. package/src/tool/stainChemistry/bibliography.ts +16 -0
  218. package/src/tool/stainChemistry/i18n/de.ts +5 -19
  219. package/src/tool/stainChemistry/i18n/en.ts +5 -19
  220. package/src/tool/stainChemistry/i18n/es.ts +5 -19
  221. package/src/tool/stainChemistry/i18n/fr.ts +8 -22
  222. package/src/tool/stainChemistry/i18n/id.ts +5 -19
  223. package/src/tool/stainChemistry/i18n/it.ts +5 -19
  224. package/src/tool/stainChemistry/i18n/ja.ts +5 -19
  225. package/src/tool/stainChemistry/i18n/ko.ts +5 -19
  226. package/src/tool/stainChemistry/i18n/nl.ts +5 -19
  227. package/src/tool/stainChemistry/i18n/pl.ts +5 -19
  228. package/src/tool/stainChemistry/i18n/pt.ts +5 -19
  229. package/src/tool/stainChemistry/i18n/ru.ts +9 -23
  230. package/src/tool/stainChemistry/i18n/sv.ts +5 -19
  231. package/src/tool/stainChemistry/i18n/tr.ts +5 -19
  232. package/src/tool/stainChemistry/i18n/zh.ts +9 -23
  233. package/src/tool/stainChemistry/index.ts +1 -0
  234. package/src/tool/stainChemistry/seo.astro +2 -27
  235. package/src/tool/yarnCalculator/bibliography.astro +2 -10
  236. package/src/tool/yarnCalculator/bibliography.ts +16 -0
  237. package/src/tool/yarnCalculator/i18n/de.ts +2 -16
  238. package/src/tool/yarnCalculator/i18n/en.ts +2 -16
  239. package/src/tool/yarnCalculator/i18n/es.ts +2 -16
  240. package/src/tool/yarnCalculator/i18n/fr.ts +6 -20
  241. package/src/tool/yarnCalculator/i18n/id.ts +2 -16
  242. package/src/tool/yarnCalculator/i18n/it.ts +2 -16
  243. package/src/tool/yarnCalculator/i18n/ja.ts +2 -16
  244. package/src/tool/yarnCalculator/i18n/ko.ts +2 -16
  245. package/src/tool/yarnCalculator/i18n/nl.ts +2 -16
  246. package/src/tool/yarnCalculator/i18n/pl.ts +2 -16
  247. package/src/tool/yarnCalculator/i18n/pt.ts +2 -16
  248. package/src/tool/yarnCalculator/i18n/ru.ts +9 -23
  249. package/src/tool/yarnCalculator/i18n/sv.ts +2 -16
  250. package/src/tool/yarnCalculator/i18n/tr.ts +2 -16
  251. package/src/tool/yarnCalculator/i18n/zh.ts +7 -21
  252. package/src/tool/yarnCalculator/index.ts +1 -0
  253. package/src/tool/yarnCalculator/seo.astro +2 -1
  254. package/src/types.ts +2 -4
@@ -1,5 +1,6 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
+ import { bibliography } from '../bibliography';
3
4
  import type { ClothingSizeConverterUI } from '../ui';
4
5
 
5
6
  const slug = 'internationale-kledingmaten-omzetter';
@@ -206,17 +207,8 @@ export const content: ToolLocaleContent<ClothingSizeConverterUI> = {
206
207
  slug,
207
208
  title,
208
209
  description,
209
- faqTitle: 'Veelgestelde Vragen',
210
210
  faq: faqData,
211
- bibliographyTitle: 'Bibliografie',
212
- bibliography: [
213
- { name: 'ISO 3635: Kledingmaten - Officiële Standaard', url: 'https://www.iso.org/standard/68644.html' },
214
- { name: 'Kledingmaat Standaarden - Wikipedia', url: 'https://nl.wikipedia.org/wiki/Confectiemaat' },
215
- {
216
- name: 'Internationale Kledingmaten Conversie - Wikipedia',
217
- url: 'https://en.wikipedia.org/wiki/Clothing_size#International_variations',
218
- },
219
- ],
211
+ bibliography: bibliography,
220
212
  howTo: howToData,
221
213
  schemas: [faqSchema, howToSchema, appSchema],
222
214
  seo: [
@@ -1,5 +1,6 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
+ import { bibliography } from '../bibliography';
3
4
  import type { ClothingSizeConverterUI } from '../ui';
4
5
 
5
6
  const slug = 'miedzynarodowy-konwerter-rozmiarow-odziezy';
@@ -21,7 +22,7 @@ const faqData = [
21
22
  {
22
23
  question: 'Skąd mam wiedzieć, czy w danej marce powinienem wziąć rozmiar większy czy mniejszy?',
23
24
  answer:
24
- 'Najlepszym sposobem jest sprawdzenie opinii innych klientów. Zdania typu było na mnie za małe lub duży krój są bardzo pomocne. Sprawdź również konkretną tabelę wymiarów danej marki.',
25
+ 'Najlepszym sposobem jest sprawdzenie opinii innych klientów. Zdania typu "było na mnie za małe" lub "duży krój" są bardzo pomocne. Sprawdź również konkretną tabelę wymiarów danej marki.',
25
26
  },
26
27
  {
27
28
  question: 'Jak dokładna jest tabela konwersji rozmiarów?',
@@ -206,17 +207,8 @@ export const content: ToolLocaleContent<ClothingSizeConverterUI> = {
206
207
  slug,
207
208
  title,
208
209
  description,
209
- faqTitle: 'Najczęściej Zadawane Pytania',
210
210
  faq: faqData,
211
- bibliographyTitle: 'Bibliografia',
212
- bibliography: [
213
- { name: 'ISO 3635: Rozmiary odzieży - Oficjalny standard', url: 'https://www.iso.org/standard/68644.html' },
214
- { name: 'Standardy rozmiarów ubrań - Wikipedia', url: 'https://pl.wikipedia.org/wiki/Rozmiar_odzie%C5%BCy' },
215
- {
216
- name: 'Międzynarodowa konwersja rozmiarów - Wikipedia',
217
- url: 'https://en.wikipedia.org/wiki/Clothing_size#International_variations',
218
- },
219
- ],
211
+ bibliography: bibliography,
220
212
  howTo: howToData,
221
213
  schemas: [faqSchema, howToSchema, appSchema],
222
214
  seo: [
@@ -1,5 +1,6 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
+ import { bibliography } from '../bibliography';
3
4
  import type { ClothingSizeConverterUI } from '../ui';
4
5
 
5
6
  const slug = 'conversor-tamanhos-roupa-internacional';
@@ -206,17 +207,8 @@ export const content: ToolLocaleContent<ClothingSizeConverterUI> = {
206
207
  slug,
207
208
  title,
208
209
  description,
209
- faqTitle: 'Perguntas Frequentes',
210
210
  faq: faqData,
211
- bibliographyTitle: 'Bibliografia',
212
- bibliography: [
213
- { name: 'ISO 3635: Tamanhos de Roupa - Norma Oficial', url: 'https://www.iso.org/standard/68644.html' },
214
- { name: 'Normas de Tamanho de Roupa - Wikipedia', url: 'https://pt.wikipedia.org/wiki/Tamanho_de_roupa' },
215
- {
216
- name: 'Conversão de Tamanhos Internacional - Wikipedia',
217
- url: 'https://en.wikipedia.org/wiki/Clothing_size#International_variations',
218
- },
219
- ],
211
+ bibliography: bibliography,
220
212
  howTo: howToData,
221
213
  schemas: [faqSchema, howToSchema, appSchema],
222
214
  seo: [
@@ -1,5 +1,6 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
+ import { bibliography } from '../bibliography';
3
4
  import type { ClothingSizeConverterUI } from '../ui';
4
5
 
5
6
  const slug = 'mezhdunarodnyj-konverter-razmerov-odezhdy';
@@ -16,12 +17,12 @@ const faqData = [
16
17
  {
17
18
  question: 'Меняются ли размеры для мужской и женской одежды?',
18
19
  answer:
19
- 'Да, безусловно. Даже в одной стране мужской размер 40это не то же самое, что женский размер 40. У мужчин другие пропорции (более широкие плечи), поэтому расчет размера варьируется.',
20
+ 'Да, безусловно. Даже в одной стране мужской размер 40 - это не то же самое, что женский размер 40. У мужчин другие пропорции (более широкие плечи), поэтому расчет размера варьируется.',
20
21
  },
21
22
  {
22
23
  question: 'Как узнать, стоит ли мне брать размер больше или меньше в конкретном бренде?',
23
24
  answer:
24
- 'Лучший способпроверить отзывы других покупателей. Фразы типа «маломерит» или «большемерит» очень полезны. Также сверяйтесь с конкретной таблицей измерений этого бренда.',
25
+ 'Лучший способ - проверить отзывы других покупателей. Фразы типа "маломерит" или "большемерит" очень полезны. Также сверяйтесь с конкретной таблицей измерений этого бренда.',
25
26
  },
26
27
  {
27
28
  question: 'Насколько точна таблица соответствия размеров?',
@@ -206,17 +207,8 @@ export const content: ToolLocaleContent<ClothingSizeConverterUI> = {
206
207
  slug,
207
208
  title,
208
209
  description,
209
- faqTitle: 'Часто задаваемые вопросы',
210
210
  faq: faqData,
211
- bibliographyTitle: 'Библиография',
212
- bibliography: [
213
- { name: 'ISO 3635: Размеры одежды — официальный стандарт', url: 'https://www.iso.org/standard/68644.html' },
214
- { name: 'Стандарты размеров одежды — Википедия', url: 'https://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D0%B7%D0%BC%D0%B5%D1%80_%D0%BE%D0%B4%D0%B5%D0%B6%D0%B4%D1%8B' },
215
- {
216
- name: 'Международная конвертация размеров — Википедия',
217
- url: 'https://en.wikipedia.org/wiki/Clothing_size#International_variations',
218
- },
219
- ],
211
+ bibliography: bibliography,
220
212
  howTo: howToData,
221
213
  schemas: [faqSchema, howToSchema, appSchema],
222
214
  seo: [
@@ -1,5 +1,6 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
+ import { bibliography } from '../bibliography';
3
4
  import type { ClothingSizeConverterUI } from '../ui';
4
5
 
5
6
  const slug = 'internationell-storlekskonverterare-klader';
@@ -206,17 +207,8 @@ export const content: ToolLocaleContent<ClothingSizeConverterUI> = {
206
207
  slug,
207
208
  title,
208
209
  description,
209
- faqTitle: 'Vanliga frågor',
210
210
  faq: faqData,
211
- bibliographyTitle: 'Bibliografi',
212
- bibliography: [
213
- { name: 'ISO 3635: Klädstorlekar - Officiell Standard', url: 'https://www.iso.org/standard/68644.html' },
214
- { name: 'Standarder för Klädstorlekar - Wikipedia', url: 'https://sv.wikipedia.org/wiki/Kl%C3%A4dstorlek' },
215
- {
216
- name: 'Internationell Storlekskonvertering - Wikipedia',
217
- url: 'https://en.wikipedia.org/wiki/Clothing_size#International_variations',
218
- },
219
- ],
211
+ bibliography: bibliography,
220
212
  howTo: howToData,
221
213
  schemas: [faqSchema, howToSchema, appSchema],
222
214
  seo: [
@@ -1,5 +1,6 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
+ import { bibliography } from '../bibliography';
3
4
  import type { ClothingSizeConverterUI } from '../ui';
4
5
 
5
6
  const slug = 'uluslararasi-giysi-beden-donusturucu';
@@ -206,17 +207,8 @@ export const content: ToolLocaleContent<ClothingSizeConverterUI> = {
206
207
  slug,
207
208
  title,
208
209
  description,
209
- faqTitle: 'Sıkça Sorulan Sorular',
210
210
  faq: faqData,
211
- bibliographyTitle: 'Kaynakça',
212
- bibliography: [
213
- { name: 'ISO 3635: Giysi Bedenleri - Resmi Standart', url: 'https://www.iso.org/standard/68644.html' },
214
- { name: 'Giysi Beden Standartları - Wikipedia', url: 'https://tr.wikipedia.org/wiki/Beden_tablosu' },
215
- {
216
- name: 'Uluslararası Beden Dönüşümü - Wikipedia',
217
- url: 'https://en.wikipedia.org/wiki/Clothing_size#International_variations',
218
- },
219
- ],
211
+ bibliography: bibliography,
220
212
  howTo: howToData,
221
213
  schemas: [faqSchema, howToSchema, appSchema],
222
214
  seo: [
@@ -1,5 +1,6 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
+ import { bibliography } from '../bibliography';
3
4
  import type { ClothingSizeConverterUI } from '../ui';
4
5
 
5
6
  const slug = 'clothing-size-converter';
@@ -21,7 +22,7 @@ const faqData = [
21
22
  {
22
23
  question: '我如何知道在某个品牌中应该买大一码还是买小一码?',
23
24
  answer:
24
- '最好的方法是查看其他顾客的评价。诸如“我觉得偏小”或“版型偏大”之类的短语非常有帮助。同时请参考该品牌的具体尺寸测量表。',
25
+ '最好的方法是查看其他顾客的评价。诸如"我觉得偏小"或"版型偏大"之类的短语非常有帮助。同时请参考该品牌的具体尺寸测量表。',
25
26
  },
26
27
  {
27
28
  question: '此尺码换算表准确吗?',
@@ -206,17 +207,8 @@ export const content: ToolLocaleContent<ClothingSizeConverterUI> = {
206
207
  slug,
207
208
  title,
208
209
  description,
209
- faqTitle: '常见问题',
210
210
  faq: faqData,
211
- bibliographyTitle: '参考文献',
212
- bibliography: [
213
- { name: 'ISO 3635: 服装尺码 — 官方标准', url: 'https://www.iso.org/standard/68644.html' },
214
- { name: '服装尺码标准 - 维基百科', url: 'https://zh.wikipedia.org/wiki/%E8%A1%A3%E7%89%A9%E5%B0%BA%E7%A2%BC' },
215
- {
216
- name: '国际服装尺码换算 - Wikipedia',
217
- url: 'https://en.wikipedia.org/wiki/Clothing_size#International_variations',
218
- },
219
- ],
211
+ bibliography: bibliography,
220
212
  howTo: howToData,
221
213
  schemas: [faqSchema, howToSchema, appSchema],
222
214
  seo: [
@@ -1,3 +1,4 @@
1
+ import type { ToolDefinition } from '../../types';
1
2
  import { clothingSizeConverter } from './entry';
2
3
  export * from './entry';
3
4
  export const CLOTHING_SIZE_CONVERTER_TOOL: ToolDefinition = {
@@ -1,11 +1,5 @@
1
1
  ---
2
- import {
3
- SEOTitle,
4
- SEOCard,
5
- SEOTip,
6
- SEOList,
7
- SEOArticle
8
- } from '@jjlmoya/utils-shared';
2
+ import { SEORenderer } from '@jjlmoya/utils-shared';
9
3
  import { clothingSizeConverter } from './index';
10
4
  import type { KnownLocale } from '../../types';
11
5
 
@@ -16,25 +10,6 @@ interface Props {
16
10
  const { locale = 'es' } = Astro.props;
17
11
  const content = await clothingSizeConverter.i18n[locale]?.();
18
12
  if (!content) return null;
19
-
20
- const { seo } = content;
21
13
  ---
22
14
 
23
- <SEOArticle>
24
- {seo.map((section: any) => {
25
- switch (section.type) {
26
- case 'title':
27
- return <SEOTitle title={section.text} level={section.level || 2} />;
28
- case 'paragraph':
29
- return <p set:html={section.html} />;
30
- case 'list':
31
- return <SEOList items={section.items} />;
32
- case 'card':
33
- return <SEOCard title={section.title} icon={section.icon}><Fragment set:html={section.html} /></SEOCard>;
34
- case 'tip':
35
- return <SEOTip title={section.title}><Fragment set:html={section.html} /></SEOTip>;
36
- default:
37
- return null;
38
- }
39
- })}
40
- </SEOArticle>
15
+ {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
@@ -1,14 +1,6 @@
1
1
  ---
2
2
  import { Bibliography as SharedBibliography } from '@jjlmoya/utils-shared';
3
- import { fabricProjectCalculator } from './index';
4
- import type { KnownLocale } from '../../types';
5
-
6
- interface Props {
7
- locale?: KnownLocale;
8
- }
9
-
10
- const { locale = 'es' } = Astro.props;
11
- const content = await fabricProjectCalculator.i18n[locale]?.();
3
+ import { bibliography } from './bibliography';
12
4
  ---
13
5
 
14
- {content && <SharedBibliography links={content.bibliography} />}
6
+ <SharedBibliography links={bibliography} />
@@ -0,0 +1,16 @@
1
+ import type { BibliographyEntry } from '../../types';
2
+
3
+ export const bibliography: BibliographyEntry[] = [
4
+ {
5
+ name: 'Fabric Estimation Guide - Threads Magazine',
6
+ url: 'https://www.threadsmagazine.com/forum/measuring-fabric',
7
+ },
8
+ {
9
+ name: 'How much fabric do I need? - Seamwork',
10
+ url: 'https://www.seamwork.com/sewing-tutorials/the-anatomy-of-a-sewing-pattern',
11
+ },
12
+ {
13
+ name: 'Standard Fabric Consumption Charts - Textile School',
14
+ url: 'https://www.textileschool.com/209/fabric-consumption-in-garment-making/',
15
+ },
16
+ ];
@@ -10,7 +10,7 @@ const calcUI = ui as FabricProjectCalculatorUI;
10
10
  ---
11
11
 
12
12
  <div class="fabric-calculator-card" id="fabric-calc-app">
13
- <aside class="fabric-sidebar">
13
+ <div class="fabric-sidebar">
14
14
  <div class="config-group">
15
15
  <h3>{calcUI.sectionProject}</h3>
16
16
  <div class="fabric-field">
@@ -59,7 +59,7 @@ const calcUI = ui as FabricProjectCalculatorUI;
59
59
  <button id="btn-clear-f" class="f-btn f-seco">{calcUI.btnClear}</button>
60
60
  <button id="btn-share-f" class="f-btn f-prim">{calcUI.btnShare}</button>
61
61
  </div>
62
- </aside>
62
+ </div>
63
63
 
64
64
  <main class="fabric-main">
65
65
  <div id="warning-msg" class="warning-banner"></div>
@@ -371,4 +371,3 @@ const calcUI = ui as FabricProjectCalculatorUI;
371
371
  document.addEventListener('astro:page-load', init);
372
372
  init();
373
373
  </script>
374
-
@@ -470,10 +470,13 @@
470
470
 
471
471
  @media (max-width: 1100px) {
472
472
  .fabric-calculator-card {
473
+ display: flex;
474
+ flex-direction: column;
473
475
  grid-template-columns: 1fr;
474
476
  width: 100%;
475
477
  border-radius: 1rem;
476
478
  margin: 0;
479
+ overflow: visible;
477
480
  }
478
481
 
479
482
  .fabric-sidebar {
@@ -498,13 +501,69 @@
498
501
  }
499
502
 
500
503
  @media (max-width: 600px) {
504
+ .fabric-calculator-card {
505
+ background: transparent;
506
+ border: 0;
507
+ box-shadow: none;
508
+ gap: 1rem;
509
+ }
510
+
501
511
  .fabric-sidebar {
512
+ background: var(--bg-surface);
513
+ border: 1px solid var(--border-color);
514
+ border-radius: 1rem;
502
515
  padding: 1.25rem;
516
+ gap: 1.5rem;
517
+ min-width: 0;
518
+ }
519
+
520
+ .config-group {
521
+ gap: 1rem;
522
+ min-width: 0;
523
+ }
524
+
525
+ .fabric-field {
526
+ min-width: 0;
527
+ }
528
+
529
+ .fabric-select,
530
+ .fabric-input {
531
+ display: block;
532
+ min-width: 0;
533
+ min-height: 48px;
534
+ color: var(--text-main);
535
+ }
536
+
537
+ .fabric-select {
538
+ background-color: var(--bg-surface);
539
+ }
540
+
541
+ .shop-stepper {
542
+ width: 100%;
543
+ max-width: none;
544
+ grid-template-columns: 48px minmax(0, 1fr) 48px;
545
+ }
546
+
547
+ .preset-group {
548
+ grid-template-columns: 1fr;
549
+ }
550
+
551
+ .preset-pill {
552
+ min-height: 44px;
553
+ padding: 0.75rem;
554
+ }
555
+
556
+ .btn-actions {
557
+ grid-template-columns: 1fr;
503
558
  }
504
559
 
505
560
  .fabric-main {
561
+ background: var(--bg-surface);
562
+ border: 1px solid var(--border-color);
563
+ border-radius: 1rem;
506
564
  padding: 1.25rem;
507
565
  gap: 1.5rem;
566
+ min-width: 0;
508
567
  }
509
568
 
510
569
  .magic-result-area {
@@ -524,15 +583,18 @@
524
583
  .advice-tag {
525
584
  font-size: 0.875rem;
526
585
  padding: 0.7rem 1.25rem;
586
+ max-width: 100%;
587
+ overflow-wrap: anywhere;
527
588
  }
528
589
 
529
590
  .canvas-wrapper {
530
591
  padding: 14px 14px 10px 8px;
531
592
  border-radius: 16px;
593
+ min-width: 0;
532
594
  }
533
595
 
534
596
  .fabric-board {
535
597
  height: 220px;
536
598
  padding-bottom: 20px;
537
599
  }
538
- }
600
+ }
@@ -1,5 +1,6 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
+ import { bibliography } from '../bibliography';
3
4
  import type { FabricProjectCalculatorUI } from '../ui';
4
5
 
5
6
  const slug = 'stoffverbrauchsrechner-projekt';
@@ -86,23 +87,8 @@ export const content: ToolLocaleContent<FabricProjectCalculatorUI> = {
86
87
  slug,
87
88
  title,
88
89
  description,
89
- faqTitle: 'Häufig gestellte Fragen',
90
90
  faq: faqData,
91
- bibliographyTitle: 'Bibliographie',
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
- ],
91
+ bibliography: bibliography,
106
92
  howTo: howToData,
107
93
  schemas: [faqSchema, howToSchema, appSchema],
108
94
  seo: [
@@ -1,5 +1,6 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
+ import { bibliography } from '../bibliography';
3
4
  import type { FabricProjectCalculatorUI } from '../ui';
4
5
 
5
6
  const slug = 'fabric-project-calculator';
@@ -86,23 +87,8 @@ export const content: ToolLocaleContent<FabricProjectCalculatorUI> = {
86
87
  slug,
87
88
  title,
88
89
  description,
89
- faqTitle: 'Frequently Asked Questions',
90
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
- ],
91
+ bibliography: bibliography,
106
92
  howTo: howToData,
107
93
  schemas: [faqSchema, howToSchema, appSchema],
108
94
  seo: [
@@ -1,5 +1,6 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
+ import { bibliography } from '../bibliography';
3
4
  import type { FabricProjectCalculatorUI } from '../ui';
4
5
 
5
6
  const slug = 'calculadora-tela-proyecto';
@@ -86,23 +87,8 @@ export const content: ToolLocaleContent<FabricProjectCalculatorUI> = {
86
87
  slug,
87
88
  title,
88
89
  description,
89
- faqTitle: 'Preguntas Frecuentes',
90
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
- ],
91
+ bibliography: bibliography,
106
92
  howTo: howToData,
107
93
  schemas: [faqSchema, howToSchema, appSchema],
108
94
  seo: [
@@ -1,5 +1,6 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
+ import { bibliography } from '../bibliography';
3
4
  import type { FabricProjectCalculatorUI } from '../ui';
4
5
 
5
6
  const slug = 'calculateur-tissu-projet';
@@ -86,23 +87,8 @@ export const content: ToolLocaleContent<FabricProjectCalculatorUI> = {
86
87
  slug,
87
88
  title,
88
89
  description,
89
- faqTitle: 'Questions Fréquentes',
90
90
  faq: faqData,
91
- bibliographyTitle: 'Bibliographie',
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
- ],
91
+ bibliography: bibliography,
106
92
  howTo: howToData,
107
93
  schemas: [faqSchema, howToSchema, appSchema],
108
94
  seo: [
@@ -1,5 +1,6 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
+ import { bibliography } from '../bibliography';
3
4
  import type { FabricProjectCalculatorUI } from '../ui';
4
5
 
5
6
  const slug = 'kalkulator-kain-proyek';
@@ -86,23 +87,8 @@ export const content: ToolLocaleContent<FabricProjectCalculatorUI> = {
86
87
  slug,
87
88
  title,
88
89
  description,
89
- faqTitle: 'Pertanyaan yang Sering Diajukan',
90
90
  faq: faqData,
91
- bibliographyTitle: 'Bibliografi',
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
- ],
91
+ bibliography: bibliography,
106
92
  howTo: howToData,
107
93
  schemas: [faqSchema, howToSchema, appSchema],
108
94
  seo: [
@@ -1,5 +1,6 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
+ import { bibliography } from '../bibliography';
3
4
  import type { FabricProjectCalculatorUI } from '../ui';
4
5
 
5
6
  const slug = 'calcolatrice-tessuto-progetto';
@@ -86,23 +87,8 @@ export const content: ToolLocaleContent<FabricProjectCalculatorUI> = {
86
87
  slug,
87
88
  title,
88
89
  description,
89
- faqTitle: 'Domande Frequenti',
90
90
  faq: faqData,
91
- bibliographyTitle: 'Bibliografia',
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
- ],
91
+ bibliography: bibliography,
106
92
  howTo: howToData,
107
93
  schemas: [faqSchema, howToSchema, appSchema],
108
94
  seo: [
@@ -1,5 +1,6 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
+ import { bibliography } from '../bibliography';
3
4
  import type { FabricProjectCalculatorUI } from '../ui';
4
5
 
5
6
  const slug = 'fabric-project-calculator';
@@ -86,23 +87,8 @@ export const content: ToolLocaleContent<FabricProjectCalculatorUI> = {
86
87
  slug,
87
88
  title,
88
89
  description,
89
- faqTitle: 'よくある質問',
90
90
  faq: faqData,
91
- bibliographyTitle: '参考文献',
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
- ],
91
+ bibliography: bibliography,
106
92
  howTo: howToData,
107
93
  schemas: [faqSchema, howToSchema, appSchema],
108
94
  seo: [