@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 { StainChemistryUI } from '../ui';
4
5
 
5
6
  const slug = 'kemiskt-protokoll-textilflackar';
@@ -152,7 +153,7 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
152
153
  id: 'wine',
153
154
  name: 'Rödvin / Frukt',
154
155
  protocols: {
155
- natural: { agentId: 'percarbonate', temperature: '4060°C', method: 'Långvarig blötläggning' },
156
+ natural: { agentId: 'percarbonate', temperature: '40-60°C', method: 'Långvarig blötläggning' },
156
157
  synthetic: { agentId: 'percarbonate', temperature: '40°C', method: 'Direkt pasta' },
157
158
  delicate: {
158
159
  agentId: 'vinegar',
@@ -231,13 +232,13 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
231
232
  },
232
233
  {
233
234
  type: 'card',
234
- title: '01 Kontrollerad Oxidation',
235
+ title: '01: Kontrollerad Oxidation',
235
236
  icon: 'mdi:atom',
236
237
  html: '<strong>Natriumperkarbonat</strong> frisläpper aktivt syre som bryter dubbelbindningarna i kromoforena (molekylerna som ansvarar för fläckens färg), vilket gör dem färglösa och vattenlösliga. Det är den mest effektiva metoden för organiska fläckar.',
237
238
  },
238
239
  {
239
240
  type: 'card',
240
- title: '02 Solubilisering med Lösningsmedel',
241
+ title: '02: Solubilisering med Lösningsmedel',
241
242
  icon: 'mdi:flask-outline',
242
243
  html: 'Fläckar som olja eller bläck är inte vattenlösliga. Lösningsmedel som <strong>isopropylalkohol</strong> eller <strong>aceton</strong> minskar ytspänningen och attraherar fläckens opolära molekyler, vilket gör att de kan överföras till ett bärarmaterial.',
243
244
  },
@@ -278,23 +279,8 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
278
279
  html: '<strong>Isopropylalkohol</strong> är mer stabilt, men på färgade syntetmaterial kan det dra med sig själva pigmentet. Vi rekommenderar alltid att göra ett test på en söm eller ett dolt ställe före huvudbehandlingen.',
279
280
  },
280
281
  ],
281
- faqTitle: 'Vanliga Frågor',
282
282
  faq: faqData,
283
- bibliographyTitle: 'Bibliografi',
284
- bibliography: [
285
- {
286
- name: 'AATCC - Association for Advancing Color Technology and Chemistry',
287
- url: 'https://www.aatcc.org',
288
- },
289
- {
290
- name: 'Kissa, E. — Textile Auxiliaries',
291
- url: 'https://www.springer.com/gp/book/9783642057328',
292
- },
293
- {
294
- name: 'ISO 105 — Textiles: Tests for Colour Fastness',
295
- url: 'https://www.iso.org/standard/72682.html',
296
- },
297
- ],
283
+ bibliography: bibliography,
298
284
  howTo: howToData,
299
285
  schemas: [faqSchema, howToSchema, appSchema],
300
286
  };
@@ -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 { StainChemistryUI } from '../ui';
4
5
 
5
6
  const slug = 'tekstil-leke-kimyasi-protokolu';
@@ -152,7 +153,7 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
152
153
  id: 'wine',
153
154
  name: 'Kırmızı Şarap / Meyve',
154
155
  protocols: {
155
- natural: { agentId: 'percarbonate', temperature: '4060°C', method: 'Uzun süreli bekletme' },
156
+ natural: { agentId: 'percarbonate', temperature: '40-60°C', method: 'Uzun süreli bekletme' },
156
157
  synthetic: { agentId: 'percarbonate', temperature: '40°C', method: 'Doğrudan macun' },
157
158
  delicate: {
158
159
  agentId: 'vinegar',
@@ -231,13 +232,13 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
231
232
  },
232
233
  {
233
234
  type: 'card',
234
- title: '01 Kontrollü Oksidasyon',
235
+ title: '01: Kontrollü Oksidasyon',
235
236
  icon: 'mdi:atom',
236
237
  html: '<strong>Sodyum perkarbonat</strong>, kromoforların (lekenin renginden sorumlu moleküller) çift bağlarını kopararak onları renksiz ve suda çözünür hale getiren aktif oksijen salar. Organik lekeler için en etkili yöntemdir.',
237
238
  },
238
239
  {
239
240
  type: 'card',
240
- title: '02 Çözücülerle Çözünürlük',
241
+ title: '02: Çözücülerle Çözünürlük',
241
242
  icon: 'mdi:flask-outline',
242
243
  html: 'Yağ veya mürekkep gibi lekeler suda çözünmezler. <strong>İzopropil alkol</strong> veya <strong>aseton</strong> gibi çözücüler yüzey gerilimini azaltır ve lekenin polar olmayan moleküllerini çekerek bir destek ortamına aktarılmalarını sağlar.',
243
244
  },
@@ -278,23 +279,8 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
278
279
  html: '<strong>İzopropil alkol</strong> daha stabildir ancak boyalı sentetiklerde pigmentin kendisini sürükleyebilir. Ana işlemden önce her zaman görünmeyen bir bölgede "kenar kıvrımı testi" yapılmasını öneririz.',
279
280
  },
280
281
  ],
281
- faqTitle: 'Sıkça Sorulan Sorular',
282
282
  faq: faqData,
283
- bibliographyTitle: 'Kaynakça',
284
- bibliography: [
285
- {
286
- name: 'AATCC - Association for Advancing Color Technology and Chemistry',
287
- url: 'https://www.aatcc.org',
288
- },
289
- {
290
- name: 'Kissa, E. — Textile Auxiliaries',
291
- url: 'https://www.springer.com/gp/book/9783642057328',
292
- },
293
- {
294
- name: 'ISO 105 — Textiles: Tests for Colour Fastness',
295
- url: 'https://www.iso.org/standard/72682.html',
296
- },
297
- ],
283
+ bibliography: bibliography,
298
284
  howTo: howToData,
299
285
  schemas: [faqSchema, howToSchema, appSchema],
300
286
  };
@@ -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 { StainChemistryUI } from '../ui';
4
5
 
5
6
  const slug = 'stain-chemical-protocol';
@@ -43,7 +44,7 @@ const howToData = [
43
44
  },
44
45
  {
45
46
  name: '执行指定方案',
46
- text: '按照提供的溶剂类型、温度和方法说明进行操作。请特别留意“关键警示”部分。',
47
+ text: '按照提供的溶剂类型、温度和方法说明进行操作。请特别留意"关键警示"部分。',
47
48
  },
48
49
  ];
49
50
 
@@ -147,7 +148,7 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
147
148
  id: 'wine',
148
149
  name: '红酒 / 水果',
149
150
  protocols: {
150
- natural: { agentId: 'percarbonate', temperature: '4060°C', method: '长时间浸泡' },
151
+ natural: { agentId: 'percarbonate', temperature: '40-60°C', method: '长时间浸泡' },
151
152
  synthetic: { agentId: 'percarbonate', temperature: '40°C', method: '直接涂抹糊状物' },
152
153
  delicate: {
153
154
  agentId: 'vinegar',
@@ -226,13 +227,13 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
226
227
  },
227
228
  {
228
229
  type: 'card',
229
- title: '01 —— 受控氧化',
230
+ title: '01: 受控氧化',
230
231
  icon: 'mdi:atom',
231
232
  html: '<strong>过碳酸钠</strong>释放出的活性氧能断裂发色团(污渍颜色的来源分子)的双键,使其变得无色并可溶于水。这是处理有机污渍最有效的方法。',
232
233
  },
233
234
  {
234
235
  type: 'card',
235
- title: '02 —— 溶剂增溶',
236
+ title: '02: 溶剂增溶',
236
237
  icon: 'mdi:flask-outline',
237
238
  html: '油渍或墨水等污渍不溶于水。<strong>异丙基酒精</strong>或<strong>丙酮</strong>等溶剂能降低表面张力并吸引污渍中的非极性分子,使它们能够转移至承载媒介上。',
238
239
  },
@@ -243,7 +244,7 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
243
244
  },
244
245
  {
245
246
  type: 'paragraph',
246
- html: '并非所有纤维都能经受同样的“侵蚀”。<strong>真丝和羊毛</strong>属于蛋白质(丝蛋白和角蛋白)。如果你盲目使用专为“吞噬蛋白质”(用于处理血渍或蛋渍)设计的酶促洗涤剂,它会开始降解纤维本身,从而破坏织物的光泽和结构。',
247
+ html: '并非所有纤维都能经受同样的"侵蚀"。<strong>真丝和羊毛</strong>属于蛋白质(丝蛋白和角蛋白)。如果你盲目使用专为"吞噬蛋白质"(用于处理血渍或蛋渍)设计的酶促洗涤剂,它会开始降解纤维本身,从而破坏织物的光泽和结构。',
247
248
  },
248
249
  {
249
250
  type: 'title',
@@ -252,7 +253,7 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
252
253
  },
253
254
  {
254
255
  type: 'paragraph',
255
- html: '最常见的错误之一是使用热水来“软化”血渍。从化学角度看,热量会导致污渍中的<strong>蛋白质凝固</strong>,从而使其永久固定在纤维的多孔结构中。蛋白质类污渍必须始终使用冷水处理。',
256
+ html: '最常见的错误之一是使用热水来"软化"血渍。从化学角度看,热量会导致污渍中的<strong>蛋白质凝固</strong>,从而使其永久固定在纤维的多孔结构中。蛋白质类污渍必须始终使用冷水处理。',
256
257
  },
257
258
  {
258
259
  type: 'tip',
@@ -270,26 +271,11 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
270
271
  },
271
272
  {
272
273
  type: 'paragraph',
273
- html: '<strong>异丙基酒精</strong>相对更稳定,但在染色的合成纤维上可能会带走色素本身。我们建议在正式处理前,始终先在“内锁边”等隐蔽区域进行测试。',
274
+ html: '<strong>异丙基酒精</strong>相对更稳定,但在染色的合成纤维上可能会带走色素本身。我们建议在正式处理前,始终先在"内锁边"等隐蔽区域进行测试。',
274
275
  },
275
276
  ],
276
- faqTitle: '常见问题',
277
277
  faq: faqData,
278
- bibliographyTitle: '参考文献',
279
- bibliography: [
280
- {
281
- name: 'AATCC - 美国纺织化学家与染色家协会',
282
- url: 'https://www.aatcc.org',
283
- },
284
- {
285
- name: 'Kissa, E. — 纺织助剂',
286
- url: 'https://www.springer.com/gp/book/9783642057328',
287
- },
288
- {
289
- name: 'ISO 105 — 纺织品:色牢度试验',
290
- url: 'https://www.iso.org/standard/72682.html',
291
- },
292
- ],
278
+ bibliography: bibliography,
293
279
  howTo: howToData,
294
280
  schemas: [faqSchema, howToSchema, appSchema],
295
281
  };
@@ -1,3 +1,4 @@
1
+ import type { ToolDefinition } from '../../types';
1
2
  import { stainChemistry } from './entry';
2
3
  export * from './entry';
3
4
  export const STAIN_CHEMISTRY_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 { stainChemistry } 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 stainChemistry.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 { yarnCalculator } 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 yarnCalculator.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: 'Craft Yarn Council: Standard Yarn Weights & Yardages',
6
+ url: 'https://www.craftyarncouncil.com/standards/yarn-weight-system',
7
+ },
8
+ {
9
+ name: 'Interweave Essentials: Yarn Substitution and Estimation',
10
+ url: 'https://www.interweave.com/article/knitting/yarn-substitution-angelina-take-two/',
11
+ },
12
+ {
13
+ name: 'The Woolery: Fibers and Calculation of Yarn Usage',
14
+ url: 'https://woolery.com/blogs/the-woolery-blog/yarn-weight-charts-helpful-guide/',
15
+ },
16
+ ];
@@ -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 { YarnCalculatorUI } from '../ui';
4
5
 
5
6
  const slug = 'wollrechner-garnverbrauch';
@@ -86,23 +87,8 @@ export const content: ToolLocaleContent<YarnCalculatorUI> = {
86
87
  slug,
87
88
  title,
88
89
  description,
89
- faqTitle: 'Häufig gestellte Fragen',
90
90
  faq: faqData,
91
- bibliographyTitle: 'Literaturhinweise',
92
- bibliography: [
93
- {
94
- name: 'Craft Yarn Council: Standard Yarn Weights & Yardages',
95
- url: 'https://www.craftyarncouncil.com/standards/yarn-weight-system',
96
- },
97
- {
98
- name: 'Interweave Essentials: Yarn Substitution and Estimation',
99
- url: 'https://www.interweave.com/article/knitting/yarn-substitution-angelina-take-two/',
100
- },
101
- {
102
- name: 'The Woolery: Fibers and Calculation of Yarn Usage',
103
- url: 'https://woolery.com/blogs/the-woolery-blog/yarn-weight-charts-helpful-guide/',
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 { YarnCalculatorUI } from '../ui';
4
5
 
5
6
  const slug = 'yarn-calculator';
@@ -86,23 +87,8 @@ export const content: ToolLocaleContent<YarnCalculatorUI> = {
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: 'Craft Yarn Council: Standard Yarn Weights & Yardages',
95
- url: 'https://www.craftyarncouncil.com/standards/yarn-weight-system',
96
- },
97
- {
98
- name: 'Interweave Essentials: Yarn Substitution and Estimation',
99
- url: 'https://www.interweave.com/article/knitting/yarn-substitution-angelina-take-two/',
100
- },
101
- {
102
- name: 'The Woolery: Fibers and Calculation of Yarn Usage',
103
- url: 'https://woolery.com/blogs/the-woolery-blog/yarn-weight-charts-helpful-guide/',
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 { YarnCalculatorUI } from '../ui';
4
5
 
5
6
  const slug = 'calculadora-lana-tejido';
@@ -86,23 +87,8 @@ export const content: ToolLocaleContent<YarnCalculatorUI> = {
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: 'Craft Yarn Council: Standard Yarn Weights & Yardages',
95
- url: 'https://www.craftyarncouncil.com/standards/yarn-weight-system',
96
- },
97
- {
98
- name: 'Interweave Essentials: Yarn Substitution and Estimation',
99
- url: 'https://www.interweave.com/article/knitting/yarn-substitution-angelina-take-two/',
100
- },
101
- {
102
- name: 'The Woolery: Fibers and Calculation of Yarn Usage',
103
- url: 'https://woolery.com/blogs/the-woolery-blog/yarn-weight-charts-helpful-guide/',
104
- },
105
- ],
91
+ bibliography: bibliography,
106
92
  howTo: howToData,
107
93
  schemas: [faqSchema, howToSchema, appSchema],
108
94
  seo: [
@@ -1,9 +1,10 @@
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 { YarnCalculatorUI } from '../ui';
4
5
 
5
6
  const slug = 'calculateur-laine';
6
- const title = 'Calculateur de Laine : Combien de mètres et de pelotes ?';
7
+ const title = 'Calculateur de Laine: Combien de mètres et de pelotes ?';
7
8
  const description =
8
9
  'Calculez avec précision la quantité de laine nécessaire pour vos projets de tricot et crochet en fonction du patron et de la taille.';
9
10
 
@@ -86,34 +87,19 @@ export const content: ToolLocaleContent<YarnCalculatorUI> = {
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: 'Craft Yarn Council: Standard Yarn Weights & Yardages',
95
- url: 'https://www.craftyarncouncil.com/standards/yarn-weight-system',
96
- },
97
- {
98
- name: 'Interweave Essentials: Yarn Substitution and Estimation',
99
- url: 'https://www.interweave.com/article/knitting/yarn-substitution-angelina-take-two/',
100
- },
101
- {
102
- name: 'The Woolery: Fibers and Calculation of Yarn Usage',
103
- url: 'https://woolery.com/blogs/the-woolery-blog/yarn-weight-charts-helpful-guide/',
104
- },
105
- ],
91
+ bibliography: bibliography,
106
92
  howTo: howToData,
107
93
  schemas: [faqSchema, howToSchema, appSchema],
108
94
  seo: [
109
95
  {
110
96
  type: 'title',
111
- text: 'Guide de Consommation de Laine : Comment Calculer Mètres et Pelotes',
97
+ text: 'Guide de Consommation de Laine: Comment Calculer Mètres et Pelotes',
112
98
  level: 2,
113
99
  },
114
100
  {
115
101
  type: 'paragraph',
116
- html: 'Maîtrisez la logistique du tricot et évitez de manquer de fil grâce à notre calculateur technique de précision pour le tricot et le crochet. L\'une des plus grandes craintes des tricoteurs est le <strong>"Yarn Chicken"</strong> : ce moment critique en fin de projet où le fil semble vouloir se terminer avant de fermer les dernières mailles. Ce calculateur a été développé pour vous offrir des estimations basées sur les standards industriels de métrage et de grammage.',
102
+ html: 'Maîtrisez la logistique du tricot et évitez de manquer de fil grâce à notre calculateur technique de précision pour le tricot et le crochet. L\'une des plus grandes craintes des tricoteurs est le <strong>"Yarn Chicken"</strong>: ce moment critique en fin de projet où le fil semble vouloir se terminer avant de fermer les dernières mailles. Ce calculateur a été développé pour vous offrir des estimations basées sur les standards industriels de métrage et de grammage.',
117
103
  },
118
104
  {
119
105
  type: 'stats',
@@ -131,7 +117,7 @@ export const content: ToolLocaleContent<YarnCalculatorUI> = {
131
117
  },
132
118
  {
133
119
  type: 'paragraph',
134
- html: 'Beaucoup de débutants font l\'erreur d\'acheter de la laine en se basant exclusivement sur le poids (ex. "6 pelotes de 100g"). Cependant, le poids est une unité de masse, pas de longueur. Deux laines de 100g peuvent avoir des longueurs radicalement différentes : une laine <strong>Bulky</strong> peut n\'avoir que 80 mètres, tandis qu\'une <strong>Fingering / Lace</strong> peut dépasser 450 mètres pour le même poids.',
120
+ html: 'Beaucoup de débutants font l\'erreur d\'acheter de la laine en se basant exclusivement sur le poids (ex. "6 pelotes de 100g"). Cependant, le poids est une unité de masse, pas de longueur. Deux laines de 100g peuvent avoir des longueurs radicalement différentes: une laine <strong>Bulky</strong> peut n\'avoir que 80 mètres, tandis qu\'une <strong>Fingering / Lace</strong> peut dépasser 450 mètres pour le même poids.',
135
121
  },
136
122
  {
137
123
  type: 'paragraph',
@@ -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 { YarnCalculatorUI } from '../ui';
4
5
 
5
6
  const slug = 'kalkulator-benang-rajut';
@@ -86,23 +87,8 @@ export const content: ToolLocaleContent<YarnCalculatorUI> = {
86
87
  slug,
87
88
  title,
88
89
  description,
89
- faqTitle: 'Pertanyaan yang Sering Diajukan',
90
90
  faq: faqData,
91
- bibliographyTitle: 'Referensi',
92
- bibliography: [
93
- {
94
- name: 'Craft Yarn Council: Standard Yarn Weights & Yardages',
95
- url: 'https://www.craftyarncouncil.com/standards/yarn-weight-system',
96
- },
97
- {
98
- name: 'Interweave Essentials: Yarn Substitution and Estimation',
99
- url: 'https://www.interweave.com/article/knitting/yarn-substitution-angelina-take-two/',
100
- },
101
- {
102
- name: 'The Woolery: Fibers and Calculation of Yarn Usage',
103
- url: 'https://woolery.com/blogs/the-woolery-blog/yarn-weight-charts-helpful-guide/',
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 { YarnCalculatorUI } from '../ui';
4
5
 
5
6
  const slug = 'calcolatrice-lana-filato';
@@ -86,23 +87,8 @@ export const content: ToolLocaleContent<YarnCalculatorUI> = {
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: 'Craft Yarn Council: Standard Yarn Weights & Yardages',
95
- url: 'https://www.craftyarncouncil.com/standards/yarn-weight-system',
96
- },
97
- {
98
- name: 'Interweave Essentials: Yarn Substitution and Estimation',
99
- url: 'https://www.interweave.com/article/knitting/yarn-substitution-angelina-take-two/',
100
- },
101
- {
102
- name: 'The Woolery: Fibers and Calculation of Yarn Usage',
103
- url: 'https://woolery.com/blogs/the-woolery-blog/yarn-weight-charts-helpful-guide/',
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 { YarnCalculatorUI } from '../ui';
4
5
 
5
6
  const slug = 'yarn-calculator';
@@ -86,23 +87,8 @@ export const content: ToolLocaleContent<YarnCalculatorUI> = {
86
87
  slug,
87
88
  title,
88
89
  description,
89
- faqTitle: 'よくある質問',
90
90
  faq: faqData,
91
- bibliographyTitle: '参考文献',
92
- bibliography: [
93
- {
94
- name: 'Craft Yarn Council: Standard Yarn Weights & Yardages',
95
- url: 'https://www.craftyarncouncil.com/standards/yarn-weight-system',
96
- },
97
- {
98
- name: 'Interweave Essentials: Yarn Substitution and Estimation',
99
- url: 'https://www.interweave.com/article/knitting/yarn-substitution-angelina-take-two/',
100
- },
101
- {
102
- name: 'The Woolery: Fibers and Calculation of Yarn Usage',
103
- url: 'https://woolery.com/blogs/the-woolery-blog/yarn-weight-charts-helpful-guide/',
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 { YarnCalculatorUI } from '../ui';
4
5
 
5
6
  const slug = 'yarn-calculator';
@@ -86,23 +87,8 @@ export const content: ToolLocaleContent<YarnCalculatorUI> = {
86
87
  slug,
87
88
  title,
88
89
  description,
89
- faqTitle: '자주 묻는 질문',
90
90
  faq: faqData,
91
- bibliographyTitle: '참고 문헌',
92
- bibliography: [
93
- {
94
- name: 'Craft Yarn Council: Standard Yarn Weights & Yardages',
95
- url: 'https://www.craftyarncouncil.com/standards/yarn-weight-system',
96
- },
97
- {
98
- name: 'Interweave Essentials: Yarn Substitution and Estimation',
99
- url: 'https://www.interweave.com/article/knitting/yarn-substitution-angelina-take-two/',
100
- },
101
- {
102
- name: 'The Woolery: Fibers and Calculation of Yarn Usage',
103
- url: 'https://woolery.com/blogs/the-woolery-blog/yarn-weight-charts-helpful-guide/',
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 { YarnCalculatorUI } from '../ui';
4
5
 
5
6
  const slug = 'wolcalculator-breien-haken';
@@ -86,23 +87,8 @@ export const content: ToolLocaleContent<YarnCalculatorUI> = {
86
87
  slug,
87
88
  title,
88
89
  description,
89
- faqTitle: 'Veelgestelde Vragen',
90
90
  faq: faqData,
91
- bibliographyTitle: 'Bibliografie',
92
- bibliography: [
93
- {
94
- name: 'Craft Yarn Council: Standard Yarn Weights & Yardages',
95
- url: 'https://www.craftyarncouncil.com/standards/yarn-weight-system',
96
- },
97
- {
98
- name: 'Interweave Essentials: Yarn Substitution and Estimation',
99
- url: 'https://www.interweave.com/article/knitting/yarn-substitution-angelina-take-two/',
100
- },
101
- {
102
- name: 'The Woolery: Fibers and Calculation of Yarn Usage',
103
- url: 'https://woolery.com/blogs/the-woolery-blog/yarn-weight-charts-helpful-guide/',
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 { YarnCalculatorUI } from '../ui';
4
5
 
5
6
  const slug = 'kalkulator-wloczki-dzierganie';
@@ -86,23 +87,8 @@ export const content: ToolLocaleContent<YarnCalculatorUI> = {
86
87
  slug,
87
88
  title,
88
89
  description,
89
- faqTitle: 'Często zadawane pytania',
90
90
  faq: faqData,
91
- bibliographyTitle: 'Bibliografia',
92
- bibliography: [
93
- {
94
- name: 'Craft Yarn Council: Standard Yarn Weights & Yardages',
95
- url: 'https://www.craftyarncouncil.com/standards/yarn-weight-system',
96
- },
97
- {
98
- name: 'Interweave Essentials: Yarn Substitution and Estimation',
99
- url: 'https://www.interweave.com/article/knitting/yarn-substitution-angelina-take-two/',
100
- },
101
- {
102
- name: 'The Woolery: Fibers and Calculation of Yarn Usage',
103
- url: 'https://woolery.com/blogs/the-woolery-blog/yarn-weight-charts-helpful-guide/',
104
- },
105
- ],
91
+ bibliography: bibliography,
106
92
  howTo: howToData,
107
93
  schemas: [faqSchema, howToSchema, appSchema],
108
94
  seo: [