@jjlmoya/utils-textiles 1.13.0 → 1.14.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 (234) hide show
  1. package/package.json +1 -1
  2. package/src/pages/[locale]/[slug].astro +30 -14
  3. package/src/tests/locale_completeness.test.ts +0 -33
  4. package/src/tests/shared-test-helpers.ts +56 -0
  5. package/src/tests/tool_exports.test.ts +34 -0
  6. package/src/tool/burnTest/bibliography.astro +2 -10
  7. package/src/tool/burnTest/bibliography.ts +16 -0
  8. package/src/tool/burnTest/i18n/de.ts +2 -16
  9. package/src/tool/burnTest/i18n/en.ts +2 -16
  10. package/src/tool/burnTest/i18n/es.ts +2 -16
  11. package/src/tool/burnTest/i18n/fr.ts +2 -16
  12. package/src/tool/burnTest/i18n/id.ts +2 -16
  13. package/src/tool/burnTest/i18n/it.ts +2 -16
  14. package/src/tool/burnTest/i18n/ja.ts +2 -16
  15. package/src/tool/burnTest/i18n/ko.ts +2 -16
  16. package/src/tool/burnTest/i18n/nl.ts +2 -16
  17. package/src/tool/burnTest/i18n/pl.ts +2 -16
  18. package/src/tool/burnTest/i18n/pt.ts +2 -16
  19. package/src/tool/burnTest/i18n/ru.ts +2 -16
  20. package/src/tool/burnTest/i18n/sv.ts +2 -16
  21. package/src/tool/burnTest/i18n/tr.ts +2 -16
  22. package/src/tool/burnTest/i18n/zh.ts +2 -16
  23. package/src/tool/burnTest/index.ts +1 -0
  24. package/src/tool/burnTest/seo.astro +2 -27
  25. package/src/tool/clothingSizeConverter/bibliography.astro +2 -10
  26. package/src/tool/clothingSizeConverter/bibliography.ts +10 -0
  27. package/src/tool/clothingSizeConverter/i18n/de.ts +2 -10
  28. package/src/tool/clothingSizeConverter/i18n/en.ts +2 -10
  29. package/src/tool/clothingSizeConverter/i18n/es.ts +2 -10
  30. package/src/tool/clothingSizeConverter/i18n/fr.ts +2 -10
  31. package/src/tool/clothingSizeConverter/i18n/id.ts +2 -10
  32. package/src/tool/clothingSizeConverter/i18n/it.ts +2 -10
  33. package/src/tool/clothingSizeConverter/i18n/ja.ts +2 -10
  34. package/src/tool/clothingSizeConverter/i18n/ko.ts +2 -10
  35. package/src/tool/clothingSizeConverter/i18n/nl.ts +2 -10
  36. package/src/tool/clothingSizeConverter/i18n/pl.ts +2 -10
  37. package/src/tool/clothingSizeConverter/i18n/pt.ts +2 -10
  38. package/src/tool/clothingSizeConverter/i18n/ru.ts +2 -10
  39. package/src/tool/clothingSizeConverter/i18n/sv.ts +2 -10
  40. package/src/tool/clothingSizeConverter/i18n/tr.ts +2 -10
  41. package/src/tool/clothingSizeConverter/i18n/zh.ts +2 -10
  42. package/src/tool/clothingSizeConverter/index.ts +1 -0
  43. package/src/tool/clothingSizeConverter/seo.astro +2 -27
  44. package/src/tool/fabricProjectCalculator/bibliography.astro +2 -10
  45. package/src/tool/fabricProjectCalculator/bibliography.ts +16 -0
  46. package/src/tool/fabricProjectCalculator/i18n/de.ts +2 -16
  47. package/src/tool/fabricProjectCalculator/i18n/en.ts +2 -16
  48. package/src/tool/fabricProjectCalculator/i18n/es.ts +2 -16
  49. package/src/tool/fabricProjectCalculator/i18n/fr.ts +2 -16
  50. package/src/tool/fabricProjectCalculator/i18n/id.ts +2 -16
  51. package/src/tool/fabricProjectCalculator/i18n/it.ts +2 -16
  52. package/src/tool/fabricProjectCalculator/i18n/ja.ts +2 -16
  53. package/src/tool/fabricProjectCalculator/i18n/ko.ts +2 -16
  54. package/src/tool/fabricProjectCalculator/i18n/nl.ts +2 -16
  55. package/src/tool/fabricProjectCalculator/i18n/pl.ts +2 -16
  56. package/src/tool/fabricProjectCalculator/i18n/pt.ts +2 -16
  57. package/src/tool/fabricProjectCalculator/i18n/ru.ts +2 -16
  58. package/src/tool/fabricProjectCalculator/i18n/sv.ts +2 -16
  59. package/src/tool/fabricProjectCalculator/i18n/tr.ts +2 -16
  60. package/src/tool/fabricProjectCalculator/i18n/zh.ts +2 -16
  61. package/src/tool/fabricProjectCalculator/index.ts +1 -0
  62. package/src/tool/fabricProjectCalculator/seo.astro +2 -27
  63. package/src/tool/fabricTruth/bibliography.astro +2 -10
  64. package/src/tool/fabricTruth/bibliography.ts +16 -0
  65. package/src/tool/fabricTruth/i18n/de.ts +2 -16
  66. package/src/tool/fabricTruth/i18n/en.ts +2 -16
  67. package/src/tool/fabricTruth/i18n/es.ts +2 -16
  68. package/src/tool/fabricTruth/i18n/fr.ts +2 -16
  69. package/src/tool/fabricTruth/i18n/id.ts +2 -16
  70. package/src/tool/fabricTruth/i18n/it.ts +2 -16
  71. package/src/tool/fabricTruth/i18n/ja.ts +2 -16
  72. package/src/tool/fabricTruth/i18n/ko.ts +2 -16
  73. package/src/tool/fabricTruth/i18n/nl.ts +2 -16
  74. package/src/tool/fabricTruth/i18n/pl.ts +2 -16
  75. package/src/tool/fabricTruth/i18n/pt.ts +2 -16
  76. package/src/tool/fabricTruth/i18n/ru.ts +2 -16
  77. package/src/tool/fabricTruth/i18n/sv.ts +2 -16
  78. package/src/tool/fabricTruth/i18n/tr.ts +2 -16
  79. package/src/tool/fabricTruth/i18n/zh.ts +2 -16
  80. package/src/tool/fabricTruth/index.ts +1 -0
  81. package/src/tool/fabricTruth/seo.astro +2 -27
  82. package/src/tool/fiberPrep/bibliography.astro +2 -10
  83. package/src/tool/fiberPrep/bibliography.ts +12 -0
  84. package/src/tool/fiberPrep/i18n/de.ts +2 -12
  85. package/src/tool/fiberPrep/i18n/en.ts +2 -12
  86. package/src/tool/fiberPrep/i18n/es.ts +2 -12
  87. package/src/tool/fiberPrep/i18n/fr.ts +2 -12
  88. package/src/tool/fiberPrep/i18n/id.ts +2 -12
  89. package/src/tool/fiberPrep/i18n/it.ts +2 -12
  90. package/src/tool/fiberPrep/i18n/ja.ts +2 -12
  91. package/src/tool/fiberPrep/i18n/ko.ts +2 -12
  92. package/src/tool/fiberPrep/i18n/nl.ts +2 -12
  93. package/src/tool/fiberPrep/i18n/pl.ts +2 -12
  94. package/src/tool/fiberPrep/i18n/pt.ts +2 -12
  95. package/src/tool/fiberPrep/i18n/ru.ts +2 -12
  96. package/src/tool/fiberPrep/i18n/sv.ts +2 -12
  97. package/src/tool/fiberPrep/i18n/tr.ts +2 -12
  98. package/src/tool/fiberPrep/i18n/zh.ts +2 -12
  99. package/src/tool/fiberPrep/index.ts +1 -0
  100. package/src/tool/fiberPrep/seo.astro +2 -27
  101. package/src/tool/knittingGauge/bibliography.astro +2 -10
  102. package/src/tool/knittingGauge/bibliography.ts +12 -0
  103. package/src/tool/knittingGauge/i18n/de.ts +2 -12
  104. package/src/tool/knittingGauge/i18n/en.ts +2 -12
  105. package/src/tool/knittingGauge/i18n/es.ts +2 -12
  106. package/src/tool/knittingGauge/i18n/fr.ts +2 -12
  107. package/src/tool/knittingGauge/i18n/id.ts +2 -12
  108. package/src/tool/knittingGauge/i18n/it.ts +2 -12
  109. package/src/tool/knittingGauge/i18n/ja.ts +2 -12
  110. package/src/tool/knittingGauge/i18n/ko.ts +2 -12
  111. package/src/tool/knittingGauge/i18n/nl.ts +2 -12
  112. package/src/tool/knittingGauge/i18n/pl.ts +2 -12
  113. package/src/tool/knittingGauge/i18n/pt.ts +2 -12
  114. package/src/tool/knittingGauge/i18n/ru.ts +2 -12
  115. package/src/tool/knittingGauge/i18n/sv.ts +2 -12
  116. package/src/tool/knittingGauge/i18n/tr.ts +2 -12
  117. package/src/tool/knittingGauge/i18n/zh.ts +2 -12
  118. package/src/tool/knittingGauge/index.ts +1 -0
  119. package/src/tool/knittingGauge/seo.astro +2 -27
  120. package/src/tool/laundryGuide/bibliography.astro +2 -10
  121. package/src/tool/laundryGuide/bibliography.ts +6 -0
  122. package/src/tool/laundryGuide/i18n/de.ts +2 -6
  123. package/src/tool/laundryGuide/i18n/en.ts +2 -6
  124. package/src/tool/laundryGuide/i18n/es.ts +2 -6
  125. package/src/tool/laundryGuide/i18n/fr.ts +2 -6
  126. package/src/tool/laundryGuide/i18n/id.ts +2 -6
  127. package/src/tool/laundryGuide/i18n/it.ts +2 -6
  128. package/src/tool/laundryGuide/i18n/ja.ts +2 -6
  129. package/src/tool/laundryGuide/i18n/ko.ts +2 -6
  130. package/src/tool/laundryGuide/i18n/nl.ts +2 -6
  131. package/src/tool/laundryGuide/i18n/pl.ts +2 -6
  132. package/src/tool/laundryGuide/i18n/pt.ts +2 -6
  133. package/src/tool/laundryGuide/i18n/ru.ts +2 -6
  134. package/src/tool/laundryGuide/i18n/sv.ts +2 -6
  135. package/src/tool/laundryGuide/i18n/tr.ts +2 -6
  136. package/src/tool/laundryGuide/i18n/zh.ts +2 -6
  137. package/src/tool/laundryGuide/index.ts +1 -0
  138. package/src/tool/laundryGuide/seo.astro +2 -27
  139. package/src/tool/needleConverter/bibliography.astro +2 -10
  140. package/src/tool/needleConverter/bibliography.ts +12 -0
  141. package/src/tool/needleConverter/i18n/de.ts +2 -12
  142. package/src/tool/needleConverter/i18n/en.ts +2 -12
  143. package/src/tool/needleConverter/i18n/es.ts +2 -12
  144. package/src/tool/needleConverter/i18n/fr.ts +2 -12
  145. package/src/tool/needleConverter/i18n/id.ts +2 -12
  146. package/src/tool/needleConverter/i18n/it.ts +2 -12
  147. package/src/tool/needleConverter/i18n/ja.ts +2 -12
  148. package/src/tool/needleConverter/i18n/ko.ts +2 -12
  149. package/src/tool/needleConverter/i18n/nl.ts +2 -12
  150. package/src/tool/needleConverter/i18n/pl.ts +2 -12
  151. package/src/tool/needleConverter/i18n/pt.ts +2 -12
  152. package/src/tool/needleConverter/i18n/ru.ts +2 -12
  153. package/src/tool/needleConverter/i18n/sv.ts +2 -12
  154. package/src/tool/needleConverter/i18n/tr.ts +2 -12
  155. package/src/tool/needleConverter/i18n/zh.ts +2 -12
  156. package/src/tool/needleConverter/index.ts +1 -0
  157. package/src/tool/needleConverter/seo.astro +1 -1
  158. package/src/tool/sewingPatternScaler/bibliography.astro +2 -10
  159. package/src/tool/sewingPatternScaler/bibliography.ts +12 -0
  160. package/src/tool/sewingPatternScaler/i18n/de.ts +2 -12
  161. package/src/tool/sewingPatternScaler/i18n/en.ts +2 -12
  162. package/src/tool/sewingPatternScaler/i18n/es.ts +2 -12
  163. package/src/tool/sewingPatternScaler/i18n/fr.ts +2 -12
  164. package/src/tool/sewingPatternScaler/i18n/id.ts +2 -12
  165. package/src/tool/sewingPatternScaler/i18n/it.ts +2 -12
  166. package/src/tool/sewingPatternScaler/i18n/ja.ts +2 -12
  167. package/src/tool/sewingPatternScaler/i18n/ko.ts +2 -12
  168. package/src/tool/sewingPatternScaler/i18n/nl.ts +2 -12
  169. package/src/tool/sewingPatternScaler/i18n/pl.ts +2 -12
  170. package/src/tool/sewingPatternScaler/i18n/pt.ts +2 -12
  171. package/src/tool/sewingPatternScaler/i18n/ru.ts +2 -12
  172. package/src/tool/sewingPatternScaler/i18n/sv.ts +2 -12
  173. package/src/tool/sewingPatternScaler/i18n/tr.ts +2 -12
  174. package/src/tool/sewingPatternScaler/i18n/zh.ts +2 -12
  175. package/src/tool/sewingPatternScaler/index.ts +1 -0
  176. package/src/tool/sewingPatternScaler/seo.astro +2 -36
  177. package/src/tool/shoeSizeConverter/bibliography.astro +2 -10
  178. package/src/tool/shoeSizeConverter/bibliography.ts +7 -0
  179. package/src/tool/shoeSizeConverter/i18n/de.ts +2 -7
  180. package/src/tool/shoeSizeConverter/i18n/en.ts +2 -7
  181. package/src/tool/shoeSizeConverter/i18n/es.ts +2 -7
  182. package/src/tool/shoeSizeConverter/i18n/fr.ts +2 -7
  183. package/src/tool/shoeSizeConverter/i18n/id.ts +2 -7
  184. package/src/tool/shoeSizeConverter/i18n/it.ts +2 -7
  185. package/src/tool/shoeSizeConverter/i18n/ja.ts +2 -7
  186. package/src/tool/shoeSizeConverter/i18n/ko.ts +2 -7
  187. package/src/tool/shoeSizeConverter/i18n/nl.ts +2 -7
  188. package/src/tool/shoeSizeConverter/i18n/pl.ts +2 -7
  189. package/src/tool/shoeSizeConverter/i18n/pt.ts +2 -7
  190. package/src/tool/shoeSizeConverter/i18n/ru.ts +2 -7
  191. package/src/tool/shoeSizeConverter/i18n/sv.ts +2 -7
  192. package/src/tool/shoeSizeConverter/i18n/tr.ts +2 -7
  193. package/src/tool/shoeSizeConverter/i18n/zh.ts +2 -7
  194. package/src/tool/shoeSizeConverter/index.ts +1 -0
  195. package/src/tool/shoeSizeConverter/seo.astro +2 -27
  196. package/src/tool/stainChemistry/bibliography.astro +2 -10
  197. package/src/tool/stainChemistry/bibliography.ts +16 -0
  198. package/src/tool/stainChemistry/i18n/de.ts +2 -16
  199. package/src/tool/stainChemistry/i18n/en.ts +2 -16
  200. package/src/tool/stainChemistry/i18n/es.ts +2 -16
  201. package/src/tool/stainChemistry/i18n/fr.ts +2 -16
  202. package/src/tool/stainChemistry/i18n/id.ts +2 -16
  203. package/src/tool/stainChemistry/i18n/it.ts +2 -16
  204. package/src/tool/stainChemistry/i18n/ja.ts +2 -16
  205. package/src/tool/stainChemistry/i18n/ko.ts +2 -16
  206. package/src/tool/stainChemistry/i18n/nl.ts +2 -16
  207. package/src/tool/stainChemistry/i18n/pl.ts +2 -16
  208. package/src/tool/stainChemistry/i18n/pt.ts +2 -16
  209. package/src/tool/stainChemistry/i18n/ru.ts +2 -16
  210. package/src/tool/stainChemistry/i18n/sv.ts +2 -16
  211. package/src/tool/stainChemistry/i18n/tr.ts +2 -16
  212. package/src/tool/stainChemistry/i18n/zh.ts +2 -16
  213. package/src/tool/stainChemistry/index.ts +1 -0
  214. package/src/tool/stainChemistry/seo.astro +2 -27
  215. package/src/tool/yarnCalculator/bibliography.astro +2 -10
  216. package/src/tool/yarnCalculator/bibliography.ts +16 -0
  217. package/src/tool/yarnCalculator/i18n/de.ts +2 -16
  218. package/src/tool/yarnCalculator/i18n/en.ts +2 -16
  219. package/src/tool/yarnCalculator/i18n/es.ts +2 -16
  220. package/src/tool/yarnCalculator/i18n/fr.ts +2 -16
  221. package/src/tool/yarnCalculator/i18n/id.ts +2 -16
  222. package/src/tool/yarnCalculator/i18n/it.ts +2 -16
  223. package/src/tool/yarnCalculator/i18n/ja.ts +2 -16
  224. package/src/tool/yarnCalculator/i18n/ko.ts +2 -16
  225. package/src/tool/yarnCalculator/i18n/nl.ts +2 -16
  226. package/src/tool/yarnCalculator/i18n/pl.ts +2 -16
  227. package/src/tool/yarnCalculator/i18n/pt.ts +2 -16
  228. package/src/tool/yarnCalculator/i18n/ru.ts +2 -16
  229. package/src/tool/yarnCalculator/i18n/sv.ts +2 -16
  230. package/src/tool/yarnCalculator/i18n/tr.ts +2 -16
  231. package/src/tool/yarnCalculator/i18n/zh.ts +2 -16
  232. package/src/tool/yarnCalculator/index.ts +1 -0
  233. package/src/tool/yarnCalculator/seo.astro +2 -1
  234. 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 { ShoeSizeConverterUI } from '../ui';
4
5
 
5
6
  const slug = 'ayakkabi-numarasi-donusturucu';
@@ -77,14 +78,8 @@ export const content: ToolLocaleContent<ShoeSizeConverterUI> = {
77
78
  slug,
78
79
  title,
79
80
  description,
80
- faqTitle: 'Sıkça Sorulan Sorular',
81
81
  faq: faqData,
82
- bibliographyTitle: 'Referanslar',
83
- bibliography: [
84
- { name: 'Shoe size conversion - Wikipedia', url: 'https://en.wikipedia.org/wiki/Shoe_size' },
85
- { name: 'ISO 9407: Shoe sizes - Mondopoint system', url: 'https://www.iso.org/standard/17157.html' },
86
- { name: 'Shoe size conversion - Zappos', url: 'https://www.zappos.com/c/shoe-size-conversion' },
87
- ],
82
+ bibliography: bibliography,
88
83
  howTo: howToData,
89
84
  schemas: [faqSchema, howToSchema, appSchema],
90
85
  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 { ShoeSizeConverterUI } from '../ui';
4
5
 
5
6
  const slug = 'shoe-size-converter';
@@ -77,14 +78,8 @@ export const content: ToolLocaleContent<ShoeSizeConverterUI> = {
77
78
  slug,
78
79
  title,
79
80
  description,
80
- faqTitle: '常见问题',
81
81
  faq: faqData,
82
- bibliographyTitle: '参考资料',
83
- bibliography: [
84
- { name: 'Shoe size conversion - Wikipedia', url: 'https://en.wikipedia.org/wiki/Shoe_size' },
85
- { name: 'ISO 9407: Shoe sizes - Mondopoint system', url: 'https://www.iso.org/standard/17157.html' },
86
- { name: 'Shoe size conversion - Zappos', url: 'https://www.zappos.com/c/shoe-size-conversion' },
87
- ],
82
+ bibliography: bibliography,
88
83
  howTo: howToData,
89
84
  schemas: [faqSchema, howToSchema, appSchema],
90
85
  seo: [
@@ -1,3 +1,4 @@
1
+ import type { ToolDefinition } from '../../types';
1
2
  import { shoeSizeConverter } from './entry';
2
3
  export * from './entry';
3
4
  export const SHOE_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 { shoeSizeConverter } 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 shoeSizeConverter.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 { stainChemistry } 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 stainChemistry.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: 'AATCC - Association for Advancing Color Technology and Chemistry',
6
+ url: 'https://www.aatcc.org',
7
+ },
8
+ {
9
+ name: 'Kissa, E. — Textile Auxiliaries',
10
+ url: 'https://www.springer.com/gp/book/9783642057328',
11
+ },
12
+ {
13
+ name: 'ISO 105 — Textiles: Tests for Colour Fastness',
14
+ url: 'https://www.iso.org/standard/72682.html',
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 { StainChemistryUI } from '../ui';
4
5
 
5
6
  const slug = 'textilflecken-chemie-protokoll';
@@ -278,23 +279,8 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
278
279
  html: '<strong>Isopropylalkohol</strong> ist stabiler, kann aber bei gefärbten Synthetikfasern die Pigmente mitreißen. Wir empfehlen vor der Hauptbehandlung immer den "Saum-Test" an einer unauffälligen Stelle.',
279
280
  },
280
281
  ],
281
- faqTitle: 'Häufig gestellte Fragen',
282
282
  faq: faqData,
283
- bibliographyTitle: 'Literaturhinweise',
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';
@@ -281,23 +282,8 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
281
282
  html: '<strong>Isopropyl alcohol</strong> is more stable, but on dyed synthetics it can carry away the pigment itself. We always recommend the "hem test" on a hidden area before the main treatment.',
282
283
  },
283
284
  ],
284
- faqTitle: 'Frequently Asked Questions',
285
285
  faq: faqData,
286
- bibliographyTitle: 'Bibliography',
287
- bibliography: [
288
- {
289
- name: 'AATCC - Association for Advancing Color Technology and Chemistry',
290
- url: 'https://www.aatcc.org',
291
- },
292
- {
293
- name: 'Kissa, E. — Textile Auxiliaries',
294
- url: 'https://www.springer.com/gp/book/9783642057328',
295
- },
296
- {
297
- name: 'ISO 105 — Textiles: Tests for Colour Fastness',
298
- url: 'https://www.iso.org/standard/72682.html',
299
- },
300
- ],
286
+ bibliography: bibliography,
301
287
  howTo: howToData,
302
288
  schemas: [faqSchema, howToSchema, appSchema],
303
289
  };
@@ -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 = 'protocolo-quimico-manchas';
@@ -278,23 +279,8 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
278
279
  html: 'El <strong>alcohol isopropílico</strong> es más estable, pero en sintéticos teñidos puede arrastrar el propio pigmento. Recomendamos siempre la "prueba del dobladillo" en una zona no visible antes del tratamiento principal.',
279
280
  },
280
281
  ],
281
- faqTitle: 'Preguntas Frecuentes',
282
282
  faq: faqData,
283
- bibliographyTitle: 'Bibliografí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 = 'protocole-chimique-taches';
@@ -288,23 +289,8 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
288
289
  html: 'L\'<strong>alcool isopropylique</strong> est plus stable, mais sur les synthétiques teints, il peut entraîner le pigment lui-même. Nous recommandons toujours le "test de l\'ourlet" sur une zone cachée avant le traitement principal.',
289
290
  },
290
291
  ],
291
- faqTitle: 'Questions Fréquentes',
292
292
  faq: faqData,
293
- bibliographyTitle: 'Bibliographie',
294
- bibliography: [
295
- {
296
- name: 'AATCC — Association for Advancing Color Technology and Chemistry',
297
- url: 'https://www.aatcc.org',
298
- },
299
- {
300
- name: 'Kissa, E. — Textile Auxiliaries',
301
- url: 'https://www.springer.com/gp/book/9783642057328',
302
- },
303
- {
304
- name: 'ISO 105 — Tests de solidité des coloris',
305
- url: 'https://www.iso.org/standard/72682.html',
306
- },
307
- ],
293
+ bibliography: bibliography,
308
294
  howTo: howToData,
309
295
  schemas: [faqSchema, howToSchema, appSchema],
310
296
  };
@@ -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 = 'protokol-kimia-noda-tekstil';
@@ -278,23 +279,8 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
278
279
  html: '<strong>Isopropil alkohol</strong> lebih stabil, tetapi pada sintetik berwarna dapat menarik pigmen itu sendiri. Kami selalu menyarankan untuk melakukan "tes keliman" pada bagian yang tidak terlihat sebelum perawatan utama.',
279
280
  },
280
281
  ],
281
- faqTitle: 'Pertanyaan yang Sering Diajukan',
282
282
  faq: faqData,
283
- bibliographyTitle: 'Referensi',
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 = 'protocollo-chimico-macchie-tessili';
@@ -278,23 +279,8 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
278
279
  html: "L'<strong>alcol isopropilico</strong> è più stabile, ma sui sintetici tinti può trascinare il pigmento stesso. Raccomandiamo sempre la 'prova dell'orlo' in una zona non visibile prima del trattamento principale.",
279
280
  },
280
281
  ],
281
- faqTitle: 'Domande Frequenti',
282
282
  faq: faqData,
283
- bibliographyTitle: 'Bibliografia',
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';
@@ -278,23 +279,8 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
278
279
  html: '<strong>イソプロピルアルコール</strong>はより安定していますが、染められた合成繊維では顔料そのものを引き抜いてしまうことがあります。本処理の前に必ず「縫い代テスト」などの目立たない場所での確認を推奨します。',
279
280
  },
280
281
  ],
281
- faqTitle: 'よくある質問',
282
282
  faq: faqData,
283
- bibliographyTitle: '参考文献',
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';
@@ -275,23 +276,8 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
275
276
  html: '<strong>이소프로필 알코올</strong>은 비교적 안정적이지만, 염색된 합성 원단에서는 색상 자체를 빼낼 수 있습니다. 본격적인 처리에 앞서 항상 "안쪽 시접" 부위에 먼저 테스트해보는 것을 권장합니다.',
276
277
  },
277
278
  ],
278
- faqTitle: '자주 묻는 질문',
279
279
  faq: faqData,
280
- bibliographyTitle: '참고 문헌',
281
- bibliography: [
282
- {
283
- name: 'AATCC - Association for Advancing Color Technology and Chemistry',
284
- url: 'https://www.aatcc.org',
285
- },
286
- {
287
- name: 'Kissa, E. — Textile Auxiliaries',
288
- url: 'https://www.springer.com/gp/book/9783642057328',
289
- },
290
- {
291
- name: 'ISO 105 — Textiles: Tests for Colour Fastness',
292
- url: 'https://www.iso.org/standard/72682.html',
293
- },
294
- ],
280
+ bibliography: bibliography,
295
281
  howTo: howToData,
296
282
  schemas: [faqSchema, howToSchema, appSchema],
297
283
  };
@@ -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 = 'textielvlekken-chemisch-protocol';
@@ -278,23 +279,8 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
278
279
  html: '<strong>Isopropylalcohol</strong> is stabieler, maar op geverfde synthetische stoffen kan het het pigment zelf meeslepen. We raden altijd de "zoomtest" aan op een onopvallende plek voor de hoofdbehandeling.',
279
280
  },
280
281
  ],
281
- faqTitle: 'Veelgestelde Vragen',
282
282
  faq: faqData,
283
- bibliographyTitle: 'Bibliografie',
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 = 'chemiczny-protokol-plam-tekstylnych';
@@ -278,23 +279,8 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
278
279
  html: '<strong>Alkohol izopropylowy</strong> jest stabilniejszy, ale na barwionych syntetykach może wyciągać sam pigment. Przed głównym zabiegiem zawsze zalecamy "test na rąbku" w niewidocznym miejscu.',
279
280
  },
280
281
  ],
281
- faqTitle: 'Najczęściej Zadawane Pytania',
282
282
  faq: faqData,
283
- bibliographyTitle: 'Bibliografia',
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 = 'protocolo-quimico-manchas-texteis';
@@ -278,23 +279,8 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
278
279
  html: 'O <strong>álcool isopropílico</strong> é mais estável, mas em sintéticos tingidos pode arrastar o próprio pigmento. Recomendamos sempre o "teste da bainha" numa zona não visível antes do tratamento principal.',
279
280
  },
280
281
  ],
281
- faqTitle: 'Perguntas Frequentes',
282
282
  faq: faqData,
283
- bibliographyTitle: 'Bibliografia',
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 = 'khimicheskij-protokol-udaleniya-pyaten';
@@ -278,23 +279,8 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
278
279
  html: '<strong>Изопропиловый спирт</strong> более стабилен, но на окрашенной синтетике он может вымывать сам пигмент. Мы всегда рекомендуем проводить «тест на шве» на незаметном участке перед основной обработкой.',
279
280
  },
280
281
  ],
281
- faqTitle: 'Часто задаваемые вопросы',
282
282
  faq: faqData,
283
- bibliographyTitle: 'Библиография',
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 = 'kemiskt-protokoll-textilflackar';
@@ -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';
@@ -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';
@@ -273,23 +274,8 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
273
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 }} />}