@jjlmoya/utils-textiles 1.21.0 → 1.23.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 (213) hide show
  1. package/package.json +2 -2
  2. package/src/category/i18n/de.ts +76 -76
  3. package/src/category/i18n/en.ts +76 -76
  4. package/src/category/i18n/es.ts +76 -76
  5. package/src/category/i18n/fr.ts +76 -76
  6. package/src/category/i18n/id.ts +76 -76
  7. package/src/category/i18n/it.ts +76 -76
  8. package/src/category/i18n/ja.ts +76 -76
  9. package/src/category/i18n/ko.ts +76 -76
  10. package/src/category/i18n/nl.ts +76 -76
  11. package/src/category/i18n/pl.ts +76 -76
  12. package/src/category/i18n/pt.ts +76 -76
  13. package/src/category/i18n/ru.ts +76 -76
  14. package/src/category/i18n/sv.ts +76 -76
  15. package/src/category/i18n/zh.ts +76 -76
  16. package/src/category/index.ts +2 -0
  17. package/src/category/seo.astro +1 -1
  18. package/src/components/PreviewNavSidebar.astro +1 -1
  19. package/src/components/PreviewToolbar.astro +1 -1
  20. package/src/data.ts +1 -1
  21. package/src/entries.ts +4 -1
  22. package/src/env.d.ts +1 -1
  23. package/src/index.ts +1 -1
  24. package/src/layouts/PreviewLayout.astro +113 -113
  25. package/src/pages/index.astro +1 -1
  26. package/src/tests/bibliography_wellformed_export.test.ts +46 -0
  27. package/src/tests/category_seo_quality.test.ts +74 -0
  28. package/src/tests/faq_count.test.ts +19 -19
  29. package/src/tests/i18n_coverage.test.ts +4 -2
  30. package/src/tests/locale_spelling.test.ts +44 -0
  31. package/src/tests/mocks/astro_mock.js +1 -1
  32. package/src/tests/no_en_dash.test.ts +70 -70
  33. package/src/tests/no_h1_in_components.test.ts +1 -1
  34. package/src/tests/seo_length.test.ts +22 -22
  35. package/src/tests/seo_parity.test.ts +2 -2
  36. package/src/tests/seo_translation_completeness.test.ts +69 -0
  37. package/src/tests/seo_wellformed_export.test.ts +65 -0
  38. package/src/tests/spanish_leakage.test.ts +175 -175
  39. package/src/tests/tool_validation.test.ts +17 -17
  40. package/src/tool/burnTest/i18n/es.ts +211 -211
  41. package/src/tool/burnTest/i18n/fr.ts +211 -211
  42. package/src/tool/burnTest/i18n/ja.ts +211 -211
  43. package/src/tool/burnTest/i18n/ko.ts +211 -211
  44. package/src/tool/burnTest/i18n/pl.ts +211 -211
  45. package/src/tool/burnTest/i18n/ru.ts +211 -211
  46. package/src/tool/burnTest/i18n/sv.ts +211 -211
  47. package/src/tool/burnTest/i18n/zh.ts +211 -211
  48. package/src/tool/burnTest/seo.astro +15 -15
  49. package/src/tool/clothingSizeConverter/i18n/de.ts +348 -348
  50. package/src/tool/clothingSizeConverter/i18n/en.ts +348 -348
  51. package/src/tool/clothingSizeConverter/i18n/fr.ts +348 -348
  52. package/src/tool/clothingSizeConverter/i18n/ja.ts +348 -348
  53. package/src/tool/clothingSizeConverter/i18n/ko.ts +348 -348
  54. package/src/tool/clothingSizeConverter/i18n/nl.ts +348 -348
  55. package/src/tool/clothingSizeConverter/i18n/pl.ts +348 -348
  56. package/src/tool/clothingSizeConverter/i18n/ru.ts +348 -348
  57. package/src/tool/clothingSizeConverter/i18n/sv.ts +348 -348
  58. package/src/tool/clothingSizeConverter/i18n/tr.ts +348 -348
  59. package/src/tool/clothingSizeConverter/i18n/zh.ts +348 -348
  60. package/src/tool/clothingSizeConverter/seo.astro +15 -15
  61. package/src/tool/embroideryStitchPricingEstimator/bibliography.astro +6 -0
  62. package/src/tool/embroideryStitchPricingEstimator/bibliography.ts +12 -0
  63. package/src/tool/embroideryStitchPricingEstimator/component.astro +111 -0
  64. package/src/tool/embroideryStitchPricingEstimator/controller.ts +111 -0
  65. package/src/tool/embroideryStitchPricingEstimator/dom-views.ts +94 -0
  66. package/src/tool/embroideryStitchPricingEstimator/embroidery-stitch-count-pricing-estimator.css +438 -0
  67. package/src/tool/embroideryStitchPricingEstimator/entry.ts +29 -0
  68. package/src/tool/embroideryStitchPricingEstimator/evaluator.ts +22 -0
  69. package/src/tool/embroideryStitchPricingEstimator/i18n/de.ts +38 -0
  70. package/src/tool/embroideryStitchPricingEstimator/i18n/en.ts +194 -0
  71. package/src/tool/embroideryStitchPricingEstimator/i18n/es.ts +38 -0
  72. package/src/tool/embroideryStitchPricingEstimator/i18n/fr.ts +38 -0
  73. package/src/tool/embroideryStitchPricingEstimator/i18n/id.ts +38 -0
  74. package/src/tool/embroideryStitchPricingEstimator/i18n/it.ts +38 -0
  75. package/src/tool/embroideryStitchPricingEstimator/i18n/ja.ts +38 -0
  76. package/src/tool/embroideryStitchPricingEstimator/i18n/ko.ts +38 -0
  77. package/src/tool/embroideryStitchPricingEstimator/i18n/nl.ts +38 -0
  78. package/src/tool/embroideryStitchPricingEstimator/i18n/pl.ts +38 -0
  79. package/src/tool/embroideryStitchPricingEstimator/i18n/pt.ts +38 -0
  80. package/src/tool/embroideryStitchPricingEstimator/i18n/ru.ts +38 -0
  81. package/src/tool/embroideryStitchPricingEstimator/i18n/sv.ts +38 -0
  82. package/src/tool/embroideryStitchPricingEstimator/i18n/tr.ts +38 -0
  83. package/src/tool/embroideryStitchPricingEstimator/i18n/zh.ts +38 -0
  84. package/src/tool/embroideryStitchPricingEstimator/index.ts +11 -0
  85. package/src/tool/embroideryStitchPricingEstimator/logic.test.ts +40 -0
  86. package/src/tool/embroideryStitchPricingEstimator/logic.ts +86 -0
  87. package/src/tool/embroideryStitchPricingEstimator/seo.astro +15 -0
  88. package/src/tool/embroideryStitchPricingEstimator/storage.ts +20 -0
  89. package/src/tool/embroideryStitchPricingEstimator/ui.ts +53 -0
  90. package/src/tool/fabricProjectCalculator/i18n/de.ts +236 -236
  91. package/src/tool/fabricProjectCalculator/i18n/ja.ts +236 -236
  92. package/src/tool/fabricProjectCalculator/i18n/ko.ts +236 -236
  93. package/src/tool/fabricProjectCalculator/i18n/nl.ts +236 -236
  94. package/src/tool/fabricProjectCalculator/i18n/pl.ts +236 -236
  95. package/src/tool/fabricProjectCalculator/i18n/ru.ts +236 -236
  96. package/src/tool/fabricProjectCalculator/i18n/sv.ts +236 -236
  97. package/src/tool/fabricProjectCalculator/i18n/tr.ts +236 -236
  98. package/src/tool/fabricProjectCalculator/i18n/zh.ts +236 -236
  99. package/src/tool/fabricProjectCalculator/seo.astro +15 -15
  100. package/src/tool/fabricTruth/i18n/de.ts +268 -268
  101. package/src/tool/fabricTruth/i18n/en.ts +268 -268
  102. package/src/tool/fabricTruth/i18n/es.ts +302 -302
  103. package/src/tool/fabricTruth/i18n/fr.ts +268 -268
  104. package/src/tool/fabricTruth/i18n/id.ts +268 -268
  105. package/src/tool/fabricTruth/i18n/it.ts +268 -268
  106. package/src/tool/fabricTruth/i18n/ja.ts +268 -268
  107. package/src/tool/fabricTruth/i18n/ko.ts +268 -268
  108. package/src/tool/fabricTruth/i18n/nl.ts +268 -268
  109. package/src/tool/fabricTruth/i18n/pl.ts +268 -268
  110. package/src/tool/fabricTruth/i18n/pt.ts +268 -268
  111. package/src/tool/fabricTruth/i18n/ru.ts +268 -268
  112. package/src/tool/fabricTruth/i18n/sv.ts +268 -268
  113. package/src/tool/fabricTruth/i18n/tr.ts +268 -268
  114. package/src/tool/fabricTruth/i18n/zh.ts +272 -272
  115. package/src/tool/fabricTruth/seo.astro +15 -15
  116. package/src/tool/fiberPrep/i18n/de.ts +215 -215
  117. package/src/tool/fiberPrep/i18n/fr.ts +215 -215
  118. package/src/tool/fiberPrep/i18n/ja.ts +215 -215
  119. package/src/tool/fiberPrep/i18n/ko.ts +215 -215
  120. package/src/tool/fiberPrep/i18n/nl.ts +215 -215
  121. package/src/tool/fiberPrep/i18n/pl.ts +215 -215
  122. package/src/tool/fiberPrep/i18n/ru.ts +215 -215
  123. package/src/tool/fiberPrep/i18n/sv.ts +215 -215
  124. package/src/tool/fiberPrep/i18n/tr.ts +215 -215
  125. package/src/tool/fiberPrep/i18n/zh.ts +215 -215
  126. package/src/tool/fiberPrep/seo.astro +15 -15
  127. package/src/tool/knittingGauge/i18n/de.ts +224 -224
  128. package/src/tool/knittingGauge/i18n/ja.ts +224 -224
  129. package/src/tool/knittingGauge/i18n/ko.ts +224 -224
  130. package/src/tool/knittingGauge/i18n/pl.ts +224 -224
  131. package/src/tool/knittingGauge/i18n/ru.ts +224 -224
  132. package/src/tool/knittingGauge/i18n/tr.ts +224 -224
  133. package/src/tool/knittingGauge/i18n/zh.ts +224 -224
  134. package/src/tool/knittingGauge/seo.astro +15 -15
  135. package/src/tool/laundryGuide/i18n/de.ts +271 -271
  136. package/src/tool/laundryGuide/i18n/en.ts +271 -271
  137. package/src/tool/laundryGuide/i18n/es.ts +271 -271
  138. package/src/tool/laundryGuide/i18n/fr.ts +255 -255
  139. package/src/tool/laundryGuide/i18n/id.ts +271 -271
  140. package/src/tool/laundryGuide/i18n/it.ts +271 -271
  141. package/src/tool/laundryGuide/i18n/ja.ts +271 -271
  142. package/src/tool/laundryGuide/i18n/ko.ts +271 -271
  143. package/src/tool/laundryGuide/i18n/nl.ts +271 -271
  144. package/src/tool/laundryGuide/i18n/pl.ts +271 -271
  145. package/src/tool/laundryGuide/i18n/pt.ts +271 -271
  146. package/src/tool/laundryGuide/i18n/ru.ts +271 -271
  147. package/src/tool/laundryGuide/i18n/sv.ts +271 -271
  148. package/src/tool/laundryGuide/i18n/tr.ts +271 -271
  149. package/src/tool/laundryGuide/i18n/zh.ts +271 -271
  150. package/src/tool/laundryGuide/seo.astro +15 -15
  151. package/src/tool/needleConverter/i18n/de.ts +202 -202
  152. package/src/tool/needleConverter/i18n/es.ts +207 -207
  153. package/src/tool/needleConverter/i18n/fr.ts +207 -207
  154. package/src/tool/needleConverter/i18n/ja.ts +202 -202
  155. package/src/tool/needleConverter/i18n/ko.ts +202 -202
  156. package/src/tool/needleConverter/i18n/nl.ts +202 -202
  157. package/src/tool/needleConverter/i18n/pl.ts +202 -202
  158. package/src/tool/needleConverter/i18n/ru.ts +202 -202
  159. package/src/tool/needleConverter/i18n/sv.ts +202 -202
  160. package/src/tool/needleConverter/i18n/tr.ts +202 -202
  161. package/src/tool/needleConverter/i18n/zh.ts +202 -202
  162. package/src/tool/needleConverter/seo.astro +15 -15
  163. package/src/tool/sewingPatternScaler/component.astro +236 -236
  164. package/src/tool/sewingPatternScaler/i18n/fr.ts +170 -170
  165. package/src/tool/sewingPatternScaler/i18n/ja.ts +114 -114
  166. package/src/tool/sewingPatternScaler/i18n/ko.ts +114 -114
  167. package/src/tool/sewingPatternScaler/i18n/nl.ts +114 -114
  168. package/src/tool/sewingPatternScaler/i18n/pl.ts +114 -114
  169. package/src/tool/sewingPatternScaler/i18n/ru.ts +114 -114
  170. package/src/tool/sewingPatternScaler/i18n/sv.ts +114 -114
  171. package/src/tool/sewingPatternScaler/i18n/tr.ts +114 -114
  172. package/src/tool/sewingPatternScaler/i18n/zh.ts +114 -114
  173. package/src/tool/sewingPatternScaler/seo.astro +15 -15
  174. package/src/tool/shoeSizeConverter/i18n/fr.ts +183 -183
  175. package/src/tool/shoeSizeConverter/i18n/ja.ts +179 -179
  176. package/src/tool/shoeSizeConverter/i18n/ko.ts +179 -179
  177. package/src/tool/shoeSizeConverter/i18n/nl.ts +179 -179
  178. package/src/tool/shoeSizeConverter/i18n/pl.ts +179 -179
  179. package/src/tool/shoeSizeConverter/i18n/ru.ts +179 -179
  180. package/src/tool/shoeSizeConverter/i18n/sv.ts +179 -179
  181. package/src/tool/shoeSizeConverter/i18n/tr.ts +179 -179
  182. package/src/tool/shoeSizeConverter/i18n/zh.ts +179 -179
  183. package/src/tool/shoeSizeConverter/seo.astro +15 -15
  184. package/src/tool/stainChemistry/bibliography.ts +16 -16
  185. package/src/tool/stainChemistry/i18n/de.ts +286 -286
  186. package/src/tool/stainChemistry/i18n/en.ts +289 -289
  187. package/src/tool/stainChemistry/i18n/es.ts +286 -286
  188. package/src/tool/stainChemistry/i18n/fr.ts +296 -296
  189. package/src/tool/stainChemistry/i18n/id.ts +286 -286
  190. package/src/tool/stainChemistry/i18n/it.ts +286 -286
  191. package/src/tool/stainChemistry/i18n/ja.ts +286 -286
  192. package/src/tool/stainChemistry/i18n/ko.ts +283 -283
  193. package/src/tool/stainChemistry/i18n/nl.ts +286 -286
  194. package/src/tool/stainChemistry/i18n/pl.ts +286 -286
  195. package/src/tool/stainChemistry/i18n/pt.ts +286 -286
  196. package/src/tool/stainChemistry/i18n/ru.ts +286 -286
  197. package/src/tool/stainChemistry/i18n/sv.ts +286 -286
  198. package/src/tool/stainChemistry/i18n/tr.ts +286 -286
  199. package/src/tool/stainChemistry/i18n/zh.ts +281 -281
  200. package/src/tool/stainChemistry/seo.astro +15 -15
  201. package/src/tool/yarnCalculator/i18n/de.ts +296 -296
  202. package/src/tool/yarnCalculator/i18n/es.ts +296 -296
  203. package/src/tool/yarnCalculator/i18n/fr.ts +296 -296
  204. package/src/tool/yarnCalculator/i18n/ja.ts +296 -296
  205. package/src/tool/yarnCalculator/i18n/ko.ts +296 -296
  206. package/src/tool/yarnCalculator/i18n/nl.ts +296 -296
  207. package/src/tool/yarnCalculator/i18n/pl.ts +296 -296
  208. package/src/tool/yarnCalculator/i18n/ru.ts +296 -296
  209. package/src/tool/yarnCalculator/i18n/sv.ts +296 -296
  210. package/src/tool/yarnCalculator/i18n/tr.ts +296 -296
  211. package/src/tool/yarnCalculator/i18n/zh.ts +295 -295
  212. package/src/tool/yarnCalculator/seo.astro +15 -15
  213. package/src/tools.ts +2 -2
@@ -1,268 +1,268 @@
1
- import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
- import type { ToolLocaleContent } from '../../../types';
3
- import { bibliography } from '../bibliography';
4
- import type { FabricTruthUI } from '../ui';
5
-
6
- const slug = 'textil-sanning-fiberanalys';
7
- const title = 'Textil Sanning: Analys av Fiberkvalitet';
8
- const description = 'Upptäck den verkliga kvaliteten på dina kläder genom att analysera deras sammansättning. Är det äkta bomull eller dyr plast? Vetenskaplig fiberanalys.';
9
-
10
- const faqData = [
11
- {
12
- question: 'Vad är "Greenwashing" inom mode?',
13
- answer: 'Det är en marknadsföringsteknik där varumärken använder termer som "Ekologisk" eller "Hållbar" utan verkliga bevis. Att analysera den faktiska fibersammansättningen är det enda sättet att verifiera om ett plagg verkligen är naturligt eller syntetiskt.',
14
- },
15
- {
16
- question: 'Varför anses polyester ofta vara av lägre kvalitet än bomull?',
17
- answer: 'Polyester är en plast (PET). Även om det är hållbart, andas det inte, främjar dålig lukt på grund av bakterier och genererar mikroplaster vid varje tvätt. Naturfibrer som bomull eller linne erbjuder bättre värmereglering.',
18
- },
19
- {
20
- question: 'Är det dåligt om mina kläder innehåller elastan?',
21
- answer: 'I små mängder (1-5%) ger elastan (Lycra) komfort och passform. Det gör dock återvinning av plagget enormt svårt genom att blanda plast med naturfibrer, vilket ofta tyder på ett "fast fashion"-plagg.',
22
- },
23
- {
24
- question: 'Hur upptäcker man ett plagg av hög kvalitet via etiketten?',
25
- answer: 'Leta efter monomaterial-sammansättningar (100% Bomull, 100% Ull). Komplexa blandningar används ofta för att sänka produktionskostnader och döljer syntetfibrer under attraktiva handelsnamn.',
26
- },
27
- ];
28
-
29
- const howToData = [
30
- {
31
- name: 'Hitta den interna etiketten',
32
- text: 'Leta efter den vita sammansättningsetiketten som vanligtvis sitter på insidan av sidan eller i kragen på ditt plagg.',
33
- },
34
- {
35
- name: 'Identifiera komponenterna',
36
- text: 'Läs av procentandelen för varje fiber (t.ex. 70% Bomull, 30% Polyester).',
37
- },
38
- {
39
- name: 'Ange data i analysatorn',
40
- text: 'Skriv in fiberproportionerna i vårt verktyg för att få en teknisk kvalitetspoäng.',
41
- },
42
- {
43
- name: 'Tolka diagnosen',
44
- text: 'Granska den genererade rapporten för att förstå om ditt plagg är ventilerande, hållbart eller om det kräver specialvård på grund av dess syntetiska sammansättning.',
45
- },
46
- ];
47
-
48
- const faqSchema: WithContext<FAQPage> = {
49
- '@context': 'https://schema.org',
50
- '@type': 'FAQPage',
51
- mainEntity: faqData.map((item) => ({
52
- '@type': 'Question',
53
- name: item.question,
54
- acceptedAnswer: { '@type': 'Answer', text: item.answer },
55
- })),
56
- };
57
-
58
- const howToSchema: WithContext<HowTo> = {
59
- '@context': 'https://schema.org',
60
- '@type': 'HowTo',
61
- name: title,
62
- description: description,
63
- step: howToData.map((step) => ({
64
- '@type': 'HowToStep',
65
- name: step.name,
66
- text: step.text,
67
- })),
68
- };
69
-
70
- const appSchema: WithContext<SoftwareApplication> = {
71
- '@context': 'https://schema.org',
72
- '@type': 'SoftwareApplication',
73
- name: title,
74
- description: description,
75
- applicationCategory: 'UtilityApplication',
76
- operatingSystem: 'All',
77
- offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
78
- inLanguage: 'sv',
79
- };
80
-
81
- export const content: ToolLocaleContent<FabricTruthUI> = {
82
- slug,
83
- title,
84
- description,
85
- ui: {
86
- toolTitle: 'Textil-Sanning',
87
- addFiber: 'Lägg till fiber',
88
- total: 'Totalt',
89
- composition: 'Sammansättningsanalys',
90
- description: 'Ange procentandelen exakt som den står på etiketten på ditt plagg för att upptäcka sanningen om dess kvalitet.',
91
- verdict: 'Utlåtande',
92
- breathability: 'Andningsförmåga',
93
- durability: 'Hållbarhet',
94
- warmth: 'Värme',
95
- careWarning: 'Varning om specialvård',
96
- specialCareWarning: 'STANDARDTVÄTT: Följ alltid instruktionerna på den fysiska etiketten.',
97
- validationError: 'Sammansättningen måste summera till exakt 100% för att se utlåtandet',
98
- actualTotal: 'Nuvarande',
99
- missingLabel: 'saknas',
100
- disclaimer: 'Data om andningsförmåga, hållbarhet och värme är uppskattningar baserade på branschgenomsnitt för varje fibertyp.',
101
- careWarnings: {
102
- delicate: 'MYCKET ÖMTÅLIGT: Handtvättas kallt. Använd inte torktumlare. Undvik att vrida ur hårt.',
103
- wool: 'ULL / ÄDELHÅR: Tvättas kallt med specialprogram. Plantorkas för att undvika deformering. Använd inte torktumlare.',
104
- linen: 'LINNE: Tenderar att skrynkla sig mycket. Stryks lätt fuktigt för bästa resultat.',
105
- semisynthetic: 'SEMISYNTETISKT: Blir svagare i vått tillstånd. Hanteras varsamt och centrifugeras inte hårt.',
106
- standard: 'STANDARDTVÄTT: Följ alltid instruktionerna på den fysiska etiketten.',
107
- },
108
- fiberData: {
109
- cotton: {
110
- name: 'Bomull',
111
- family: 'natural',
112
- breathability: 9,
113
- durability: 7,
114
- warmth: 4,
115
- isNoble: false,
116
- },
117
- linen: {
118
- name: 'Linne',
119
- family: 'natural',
120
- breathability: 10,
121
- durability: 9,
122
- warmth: 2,
123
- isNoble: true,
124
- },
125
- wool: {
126
- name: 'Ull / Merino',
127
- family: 'natural',
128
- breathability: 8,
129
- durability: 6,
130
- warmth: 10,
131
- isNoble: true,
132
- },
133
- silk: {
134
- name: 'Silke',
135
- family: 'natural',
136
- breathability: 7,
137
- durability: 5,
138
- warmth: 6,
139
- isNoble: true,
140
- },
141
- cashmere: {
142
- name: 'Kashmir',
143
- family: 'natural',
144
- breathability: 9,
145
- durability: 5,
146
- warmth: 10,
147
- isNoble: true,
148
- },
149
- mohair: {
150
- name: 'Mohair',
151
- family: 'natural',
152
- breathability: 8,
153
- durability: 9,
154
- warmth: 9,
155
- isNoble: true,
156
- },
157
- angora: {
158
- name: 'Angora',
159
- family: 'natural',
160
- breathability: 8,
161
- durability: 4,
162
- warmth: 10,
163
- isNoble: true,
164
- },
165
- alpaca: {
166
- name: 'Alpacka',
167
- family: 'natural',
168
- breathability: 9,
169
- durability: 8,
170
- warmth: 10,
171
- isNoble: true,
172
- },
173
- polyester: {
174
- name: 'Polyester',
175
- family: 'synthetic',
176
- breathability: 2,
177
- durability: 10,
178
- warmth: 5,
179
- isNoble: false,
180
- },
181
- viscose: {
182
- name: 'Viskos / Rayon',
183
- family: 'artificial',
184
- breathability: 8,
185
- durability: 4,
186
- warmth: 3,
187
- isNoble: false,
188
- },
189
- nylon: {
190
- name: 'Nylon (Polyamid)',
191
- family: 'synthetic',
192
- breathability: 3,
193
- durability: 10,
194
- warmth: 4,
195
- isNoble: false,
196
- },
197
- acrylic: {
198
- name: 'Akryl',
199
- family: 'synthetic',
200
- breathability: 4,
201
- durability: 6,
202
- warmth: 8,
203
- isNoble: false,
204
- },
205
- },
206
- verdicts: {
207
- plasticy: {
208
- label: 'Dyr Plast',
209
- description: 'Största delen av det här plagget är råolja. Var beredd på svettningar och att noppor (pilling) uppstår snabbt.',
210
- },
211
- hook: {
212
- label: 'Marknadsföringsknep',
213
- description: 'Den där lilla procentandelen ädelfiber är bara där för att kunna stå på etiketten. Du kommer inte att märka dess fördelar.',
214
- },
215
- fragile: {
216
- label: 'Mjuk men skör',
217
- description: 'Väldigt behaglig att röra vid, men var försiktig vid tvätt: den tenderar att lätt tappa formen och krympa.',
218
- },
219
- natural: {
220
- label: 'Naturlig kvalitet',
221
- description: 'Ventilerande och hållbart plagg. Idealiskt för känslig hud och långvarig användning.',
222
- },
223
- technical: {
224
- label: 'Tekniskt / Ultrasyntetiskt plagg',
225
- description: 'Om det inte är specifika sportkläder betalar du för ren plast.',
226
- },
227
- luxury: {
228
- label: 'Riktig lyx',
229
- description: 'En investering i komfort och hållbarhet. Behandla det med den respekt det förtjänar.',
230
- },
231
- balanced: {
232
- label: 'Balanserad blandning',
233
- description: 'En funktionell kombination, som antagligen syftar till att balansera kostnad och hållbarhet.',
234
- },
235
- },
236
- },
237
- seo: [
238
- { type: 'title', text: 'Sanningen bakom etiketten: Mästerguide till textilsammansättning', level: 2 },
239
- { type: 'paragraph', html: 'Har du någonsin undrat varför den där märkes-T-shirten får dig att svettas så mycket, eller varför den där "ulltröjan" svider så outhärdligt? Svaret ligger inte i designen, utan i fibrernas kemi.' },
240
- { type: 'paragraph', html: 'I en värld som domineras av <strong>Fast Fashion</strong> har tygkvaliteten hamnat i skuggan av den flyktiga estetiken. Men att förstå textilsammansättningen är det enda sättet att göra ett intelligent, hållbart och hudvänligt köp. Vårt verktyg <strong>Textil-Sanning</strong> analyserar de officiella procentsatserna för att avslöja om du har att göra med ett kvalitetsplagg eller bara ett block av bearbetad plast.' },
241
- { type: 'title', text: 'Vår metodologi', level: 2 },
242
- { type: 'paragraph', html: 'Vi använder en viktad algoritm baserad på tre fundamentala pelare hämtade från europeiska och nordamerikanska branschstandarder:' },
243
- { type: 'list', items: ['<strong>Andningsförmåga:</strong> Fiberns förmåga att släppa igenom vattenånga och luft.', '<strong>Hållbarhet:</strong> Motståndskraft mot nötning, dragkraft och bildandet av <strong>pilling</strong> (noppor).', '<strong>Termisk effektivitet:</strong> Förmåga att behålla värme eller ge mekanisk svalka.'] },
244
- { type: 'tip', title: 'Viktigt', html: 'Lagen kräver att alla plagg som säljs inom EU och USA listar sina komponenter i fallande ordning efter procentandel. Om ett plagg saknar etikett eller om den är oläslig, var misstänksam: det är troligt att det inte uppfyller minimistandarderna för textilsäkerhet.' },
245
- { type: 'title', text: 'Vanliga "fällor" inom detaljhandeln', level: 2 },
246
- { type: 'paragraph', html: 'Det finns mycket raffinerade marknadsföringstekniker utformade för att höja det upplevda värdet på ett medelmåttigt plagg. Här lär vi dig att upptäcka dem:' },
247
- { type: 'card', title: 'Ädelfiber fällan', icon: 'mdi:alert', html: 'Du ser etiketter där det står "MED KASHMIR" eller "MED SILKE" med stora bokstäver. När du tittar på sammansättningen upptäcker du 3% silke och 97% polyester. Dessa 3% bidrar inte till mjukhet, lyster eller värme; de tjänar bara till att varumärket ska kunna höja priset med 20%.' },
248
- { type: 'card', title: 'Myten om "ekologisk viskos"', icon: 'mdi:leaf', html: 'Även om viskos kommer från cellulosa (trä), är dagens tillverkningsprocess ofta mycket förorenande och slutresultatet är en fiber som försvagas drastiskt när den blir våt. Om det inte är <strong>Lyocell</strong> eller <strong>Tencel</strong> är dess hållbarhet begränsad.' },
249
- { type: 'title', text: 'Djupanalys per kategori', level: 2 },
250
- { type: 'title', text: '1. Naturfibrer (Stolt ekologiska)', level: 3 },
251
- { type: 'paragraph', html: 'De är guldstandarden. Långfibrig <strong>Bomull</strong> (som Pima eller egyptisk bomull) erbjuder evig mjukhet. <strong>Linne</strong> är vetenskapligt sett den bästa fibern för värme på grund av dess molekylära struktur som stöter bort värme och absorberar fukt. <strong>Ull</strong> och <strong>Hampa</strong> (Hemp) är naturliga antibakteriella material; de behöver inte tvättas så ofta eftersom de inte binder lukt.' },
252
- { type: 'title', text: '2. Halvsyntetiska fibrer (Hybriden)', level: 3 },
253
- { type: 'paragraph', html: 'Här hittar vi <strong>Viskos</strong>, <strong>Rayon</strong> och <strong>Modal</strong>. De känns som silke men kostar som bomull. De är utmärkta för plagg med mycket fall, men de är "törstiga": de absorberar mycket vatten och tar lång tid på sig att torka, vilket kan främja mögelbildning om de inte sköts om. <strong>Lyocell (Tencel)</strong> är premiumversionen och den hållbara versionen i denna grupp, med en sluten produktionscykel och högre motståndskraft.' },
254
- { type: 'title', text: '3. Syntetfibrer (Spunnen plast)', level: 3 },
255
- { type: 'paragraph', html: '<strong>Polyester</strong> är kungen på marknaden. Det är billigt, skrynklar inte och är evigt (bokstavligen, det tar 200 år att brytas ner). Problemet är att det inte andas. Det skapar ett fuktigt mikroklimat mellan tyget och din hud, den idealiska grogrunden för bakterier. <strong>Akryl</strong> är den billiga imitationen av ull: det värmer, men genererar mycket statisk elektricitet och blir fullt av noppor efter två tvättar.' },
256
- { type: 'title', text: 'Tips för textiliers överlevnad', level: 2 },
257
- { type: 'paragraph', html: 'Även det bästa plagget i världen kan förstöras i en enda felaktig tvätt. Här är de universella gyllene reglerna:' },
258
- { type: 'tip', title: 'Kallt vatten är din vän', html: '90% av plaggen behöver inte mer än 30°C. Värme bryter ner elastiska fibrer och krymper naturliga fibrer.' },
259
- { type: 'tip', title: 'Mindre är mer (Tvättmedel)', html: 'För mycket tvättmedel lämnar rester som drar till sig smuts och gör kläderna stela.' },
260
- { type: 'tip', title: 'Torktumlare: Den subtila fienden', html: 'Luddet du ser i torktumlarens filter är delar av dina kläder som lossnat på grund av friktion och värme.' },
261
- { type: 'tip', title: 'Tvätta ut och in', html: 'Skyddar färg och broderier från friktion mot trumman och andra plagg.' },
262
- { type: 'paragraph', html: '"Köp mindre, välj bättre och låt det hålla länge." - Denna analysator är ditt första steg mot en medveten garderob av hög kvalitet.' },
263
- ],
264
- faq: faqData,
265
- bibliography: bibliography,
266
- howTo: howToData,
267
- schemas: [faqSchema, howToSchema, appSchema],
268
- };
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import { bibliography } from '../bibliography';
4
+ import type { FabricTruthUI } from '../ui';
5
+
6
+ const slug = 'textil-sanning-fiberanalys';
7
+ const title = 'Textil Sanning: Analys av Fiberkvalitet';
8
+ const description = 'Upptäck den verkliga kvaliteten på dina kläder genom att analysera deras sammansättning. Är det äkta bomull eller dyr plast? Vetenskaplig fiberanalys.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Vad är "Greenwashing" inom mode?',
13
+ answer: 'Det är en marknadsföringsteknik där varumärken använder termer som "Ekologisk" eller "Hållbar" utan verkliga bevis. Att analysera den faktiska fibersammansättningen är det enda sättet att verifiera om ett plagg verkligen är naturligt eller syntetiskt.',
14
+ },
15
+ {
16
+ question: 'Varför anses polyester ofta vara av lägre kvalitet än bomull?',
17
+ answer: 'Polyester är en plast (PET). Även om det är hållbart, andas det inte, främjar dålig lukt på grund av bakterier och genererar mikroplaster vid varje tvätt. Naturfibrer som bomull eller linne erbjuder bättre värmereglering.',
18
+ },
19
+ {
20
+ question: 'Är det dåligt om mina kläder innehåller elastan?',
21
+ answer: 'I små mängder (1-5%) ger elastan (Lycra) komfort och passform. Det gör dock återvinning av plagget enormt svårt genom att blanda plast med naturfibrer, vilket ofta tyder på ett "fast fashion"-plagg.',
22
+ },
23
+ {
24
+ question: 'Hur upptäcker man ett plagg av hög kvalitet via etiketten?',
25
+ answer: 'Leta efter monomaterial-sammansättningar (100% Bomull, 100% Ull). Komplexa blandningar används ofta för att sänka produktionskostnader och döljer syntetfibrer under attraktiva handelsnamn.',
26
+ },
27
+ ];
28
+
29
+ const howToData = [
30
+ {
31
+ name: 'Hitta den interna etiketten',
32
+ text: 'Leta efter den vita sammansättningsetiketten som vanligtvis sitter på insidan av sidan eller i kragen på ditt plagg.',
33
+ },
34
+ {
35
+ name: 'Identifiera komponenterna',
36
+ text: 'Läs av procentandelen för varje fiber (t.ex. 70% Bomull, 30% Polyester).',
37
+ },
38
+ {
39
+ name: 'Ange data i analysatorn',
40
+ text: 'Skriv in fiberproportionerna i vårt verktyg för att få en teknisk kvalitetspoäng.',
41
+ },
42
+ {
43
+ name: 'Tolka diagnosen',
44
+ text: 'Granska den genererade rapporten för att förstå om ditt plagg är ventilerande, hållbart eller om det kräver specialvård på grund av dess syntetiska sammansättning.',
45
+ },
46
+ ];
47
+
48
+ const faqSchema: WithContext<FAQPage> = {
49
+ '@context': 'https://schema.org',
50
+ '@type': 'FAQPage',
51
+ mainEntity: faqData.map((item) => ({
52
+ '@type': 'Question',
53
+ name: item.question,
54
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
55
+ })),
56
+ };
57
+
58
+ const howToSchema: WithContext<HowTo> = {
59
+ '@context': 'https://schema.org',
60
+ '@type': 'HowTo',
61
+ name: title,
62
+ description: description,
63
+ step: howToData.map((step) => ({
64
+ '@type': 'HowToStep',
65
+ name: step.name,
66
+ text: step.text,
67
+ })),
68
+ };
69
+
70
+ const appSchema: WithContext<SoftwareApplication> = {
71
+ '@context': 'https://schema.org',
72
+ '@type': 'SoftwareApplication',
73
+ name: title,
74
+ description: description,
75
+ applicationCategory: 'UtilityApplication',
76
+ operatingSystem: 'All',
77
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
78
+ inLanguage: 'sv',
79
+ };
80
+
81
+ export const content: ToolLocaleContent<FabricTruthUI> = {
82
+ slug,
83
+ title,
84
+ description,
85
+ ui: {
86
+ toolTitle: 'Textil-Sanning',
87
+ addFiber: 'Lägg till fiber',
88
+ total: 'Totalt',
89
+ composition: 'Sammansättningsanalys',
90
+ description: 'Ange procentandelen exakt som den står på etiketten på ditt plagg för att upptäcka sanningen om dess kvalitet.',
91
+ verdict: 'Utlåtande',
92
+ breathability: 'Andningsförmåga',
93
+ durability: 'Hållbarhet',
94
+ warmth: 'Värme',
95
+ careWarning: 'Varning om specialvård',
96
+ specialCareWarning: 'STANDARDTVÄTT: Följ alltid instruktionerna på den fysiska etiketten.',
97
+ validationError: 'Sammansättningen måste summera till exakt 100% för att se utlåtandet',
98
+ actualTotal: 'Nuvarande',
99
+ missingLabel: 'saknas',
100
+ disclaimer: 'Data om andningsförmåga, hållbarhet och värme är uppskattningar baserade på branschgenomsnitt för varje fibertyp.',
101
+ careWarnings: {
102
+ delicate: 'MYCKET ÖMTÅLIGT: Handtvättas kallt. Använd inte torktumlare. Undvik att vrida ur hårt.',
103
+ wool: 'ULL / ÄDELHÅR: Tvättas kallt med specialprogram. Plantorkas för att undvika deformering. Använd inte torktumlare.',
104
+ linen: 'LINNE: Tenderar att skrynkla sig mycket. Stryks lätt fuktigt för bästa resultat.',
105
+ semisynthetic: 'SEMISYNTETISKT: Blir svagare i vått tillstånd. Hanteras varsamt och centrifugeras inte hårt.',
106
+ standard: 'STANDARDTVÄTT: Följ alltid instruktionerna på den fysiska etiketten.',
107
+ },
108
+ fiberData: {
109
+ cotton: {
110
+ name: 'Bomull',
111
+ family: 'natural',
112
+ breathability: 9,
113
+ durability: 7,
114
+ warmth: 4,
115
+ isNoble: false,
116
+ },
117
+ linen: {
118
+ name: 'Linne',
119
+ family: 'natural',
120
+ breathability: 10,
121
+ durability: 9,
122
+ warmth: 2,
123
+ isNoble: true,
124
+ },
125
+ wool: {
126
+ name: 'Ull / Merino',
127
+ family: 'natural',
128
+ breathability: 8,
129
+ durability: 6,
130
+ warmth: 10,
131
+ isNoble: true,
132
+ },
133
+ silk: {
134
+ name: 'Silke',
135
+ family: 'natural',
136
+ breathability: 7,
137
+ durability: 5,
138
+ warmth: 6,
139
+ isNoble: true,
140
+ },
141
+ cashmere: {
142
+ name: 'Kashmir',
143
+ family: 'natural',
144
+ breathability: 9,
145
+ durability: 5,
146
+ warmth: 10,
147
+ isNoble: true,
148
+ },
149
+ mohair: {
150
+ name: 'Mohair',
151
+ family: 'natural',
152
+ breathability: 8,
153
+ durability: 9,
154
+ warmth: 9,
155
+ isNoble: true,
156
+ },
157
+ angora: {
158
+ name: 'Angora',
159
+ family: 'natural',
160
+ breathability: 8,
161
+ durability: 4,
162
+ warmth: 10,
163
+ isNoble: true,
164
+ },
165
+ alpaca: {
166
+ name: 'Alpacka',
167
+ family: 'natural',
168
+ breathability: 9,
169
+ durability: 8,
170
+ warmth: 10,
171
+ isNoble: true,
172
+ },
173
+ polyester: {
174
+ name: 'Polyester',
175
+ family: 'synthetic',
176
+ breathability: 2,
177
+ durability: 10,
178
+ warmth: 5,
179
+ isNoble: false,
180
+ },
181
+ viscose: {
182
+ name: 'Viskos / Rayon',
183
+ family: 'artificial',
184
+ breathability: 8,
185
+ durability: 4,
186
+ warmth: 3,
187
+ isNoble: false,
188
+ },
189
+ nylon: {
190
+ name: 'Nylon (Polyamid)',
191
+ family: 'synthetic',
192
+ breathability: 3,
193
+ durability: 10,
194
+ warmth: 4,
195
+ isNoble: false,
196
+ },
197
+ acrylic: {
198
+ name: 'Akryl',
199
+ family: 'synthetic',
200
+ breathability: 4,
201
+ durability: 6,
202
+ warmth: 8,
203
+ isNoble: false,
204
+ },
205
+ },
206
+ verdicts: {
207
+ plasticy: {
208
+ label: 'Dyr Plast',
209
+ description: 'Största delen av det här plagget är råolja. Var beredd på svettningar och att noppor (pilling) uppstår snabbt.',
210
+ },
211
+ hook: {
212
+ label: 'Marknadsföringsknep',
213
+ description: 'Den där lilla procentandelen ädelfiber är bara där för att kunna stå på etiketten. Du kommer inte att märka dess fördelar.',
214
+ },
215
+ fragile: {
216
+ label: 'Mjuk men skör',
217
+ description: 'Väldigt behaglig att röra vid, men var försiktig vid tvätt: den tenderar att lätt tappa formen och krympa.',
218
+ },
219
+ natural: {
220
+ label: 'Naturlig kvalitet',
221
+ description: 'Ventilerande och hållbart plagg. Idealiskt för känslig hud och långvarig användning.',
222
+ },
223
+ technical: {
224
+ label: 'Tekniskt / Ultrasyntetiskt plagg',
225
+ description: 'Om det inte är specifika sportkläder betalar du för ren plast.',
226
+ },
227
+ luxury: {
228
+ label: 'Riktig lyx',
229
+ description: 'En investering i komfort och hållbarhet. Behandla det med den respekt det förtjänar.',
230
+ },
231
+ balanced: {
232
+ label: 'Balanserad blandning',
233
+ description: 'En funktionell kombination, som antagligen syftar till att balansera kostnad och hållbarhet.',
234
+ },
235
+ },
236
+ },
237
+ seo: [
238
+ { type: 'title', text: 'Sanningen bakom etiketten: Mästerguide till textilsammansättning', level: 2 },
239
+ { type: 'paragraph', html: 'Har du någonsin undrat varför den där märkes-T-shirten får dig att svettas så mycket, eller varför den där "ulltröjan" svider så outhärdligt? Svaret ligger inte i designen, utan i fibrernas kemi.' },
240
+ { type: 'paragraph', html: 'I en värld som domineras av <strong>Fast Fashion</strong> har tygkvaliteten hamnat i skuggan av den flyktiga estetiken. Men att förstå textilsammansättningen är det enda sättet att göra ett intelligent, hållbart och hudvänligt köp. Vårt verktyg <strong>Textil-Sanning</strong> analyserar de officiella procentsatserna för att avslöja om du har att göra med ett kvalitetsplagg eller bara ett block av bearbetad plast.' },
241
+ { type: 'title', text: 'Vår metodologi', level: 2 },
242
+ { type: 'paragraph', html: 'Vi använder en viktad algoritm baserad på tre fundamentala pelare hämtade från europeiska och nordamerikanska branschstandarder:' },
243
+ { type: 'list', items: ['<strong>Andningsförmåga:</strong> Fiberns förmåga att släppa igenom vattenånga och luft.', '<strong>Hållbarhet:</strong> Motståndskraft mot nötning, dragkraft och bildandet av <strong>pilling</strong> (noppor).', '<strong>Termisk effektivitet:</strong> Förmåga att behålla värme eller ge mekanisk svalka.'] },
244
+ { type: 'tip', title: 'Viktigt', html: 'Lagen kräver att alla plagg som säljs inom EU och USA listar sina komponenter i fallande ordning efter procentandel. Om ett plagg saknar etikett eller om den är oläslig, var misstänksam: det är troligt att det inte uppfyller minimistandarderna för textilsäkerhet.' },
245
+ { type: 'title', text: 'Vanliga "fällor" inom detaljhandeln', level: 2 },
246
+ { type: 'paragraph', html: 'Det finns mycket raffinerade marknadsföringstekniker utformade för att höja det upplevda värdet på ett medelmåttigt plagg. Här lär vi dig att upptäcka dem:' },
247
+ { type: 'card', title: 'Ädelfiber fällan', icon: 'mdi:alert', html: 'Du ser etiketter där det står "MED KASHMIR" eller "MED SILKE" med stora bokstäver. När du tittar på sammansättningen upptäcker du 3% silke och 97% polyester. Dessa 3% bidrar inte till mjukhet, lyster eller värme; de tjänar bara till att varumärket ska kunna höja priset med 20%.' },
248
+ { type: 'card', title: 'Myten om "ekologisk viskos"', icon: 'mdi:leaf', html: 'Även om viskos kommer från cellulosa (trä), är dagens tillverkningsprocess ofta mycket förorenande och slutresultatet är en fiber som försvagas drastiskt när den blir våt. Om det inte är <strong>Lyocell</strong> eller <strong>Tencel</strong> är dess hållbarhet begränsad.' },
249
+ { type: 'title', text: 'Djupanalys per kategori', level: 2 },
250
+ { type: 'title', text: '1. Naturfibrer (Stolt ekologiska)', level: 3 },
251
+ { type: 'paragraph', html: 'De är guldstandarden. Långfibrig <strong>Bomull</strong> (som Pima eller egyptisk bomull) erbjuder evig mjukhet. <strong>Linne</strong> är vetenskapligt sett den bästa fibern för värme på grund av dess molekylära struktur som stöter bort värme och absorberar fukt. <strong>Ull</strong> och <strong>Hampa</strong> (Hemp) är naturliga antibakteriella material; de behöver inte tvättas så ofta eftersom de inte binder lukt.' },
252
+ { type: 'title', text: '2. Halvsyntetiska fibrer (Hybriden)', level: 3 },
253
+ { type: 'paragraph', html: 'Här hittar vi <strong>Viskos</strong>, <strong>Rayon</strong> och <strong>Modal</strong>. De känns som silke men kostar som bomull. De är utmärkta för plagg med mycket fall, men de är "törstiga": de absorberar mycket vatten och tar lång tid på sig att torka, vilket kan främja mögelbildning om de inte sköts om. <strong>Lyocell (Tencel)</strong> är premiumversionen och den hållbara versionen i denna grupp, med en sluten produktionscykel och högre motståndskraft.' },
254
+ { type: 'title', text: '3. Syntetfibrer (Spunnen plast)', level: 3 },
255
+ { type: 'paragraph', html: '<strong>Polyester</strong> är kungen på marknaden. Det är billigt, skrynklar inte och är evigt (bokstavligen, det tar 200 år att brytas ner). Problemet är att det inte andas. Det skapar ett fuktigt mikroklimat mellan tyget och din hud, den idealiska grogrunden för bakterier. <strong>Akryl</strong> är den billiga imitationen av ull: det värmer, men genererar mycket statisk elektricitet och blir fullt av noppor efter två tvättar.' },
256
+ { type: 'title', text: 'Tips för textiliers överlevnad', level: 2 },
257
+ { type: 'paragraph', html: 'Även det bästa plagget i världen kan förstöras i en enda felaktig tvätt. Här är de universella gyllene reglerna:' },
258
+ { type: 'tip', title: 'Kallt vatten är din vän', html: '90% av plaggen behöver inte mer än 30°C. Värme bryter ner elastiska fibrer och krymper naturliga fibrer.' },
259
+ { type: 'tip', title: 'Mindre är mer (Tvättmedel)', html: 'För mycket tvättmedel lämnar rester som drar till sig smuts och gör kläderna stela.' },
260
+ { type: 'tip', title: 'Torktumlare: Den subtila fienden', html: 'Luddet du ser i torktumlarens filter är delar av dina kläder som lossnat på grund av friktion och värme.' },
261
+ { type: 'tip', title: 'Tvätta ut och in', html: 'Skyddar färg och broderier från friktion mot trumman och andra plagg.' },
262
+ { type: 'paragraph', html: '"Köp mindre, välj bättre och låt det hålla länge." - Denna analysator är ditt första steg mot en medveten garderob av hög kvalitet.' },
263
+ ],
264
+ faq: faqData,
265
+ bibliography: bibliography,
266
+ howTo: howToData,
267
+ schemas: [faqSchema, howToSchema, appSchema],
268
+ };