@jjlmoya/utils-textiles 1.20.0 → 1.22.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 (209) hide show
  1. package/package.json +1 -1
  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/faq_count.test.ts +19 -19
  27. package/src/tests/i18n_coverage.test.ts +4 -2
  28. package/src/tests/locale_spelling.test.ts +44 -0
  29. package/src/tests/mocks/astro_mock.js +1 -1
  30. package/src/tests/no_en_dash.test.ts +70 -70
  31. package/src/tests/no_h1_in_components.test.ts +1 -1
  32. package/src/tests/seo_length.test.ts +22 -22
  33. package/src/tests/seo_translation_completeness.test.ts +69 -0
  34. package/src/tests/spanish_leakage.test.ts +175 -153
  35. package/src/tests/tool_validation.test.ts +17 -17
  36. package/src/tool/burnTest/i18n/es.ts +211 -211
  37. package/src/tool/burnTest/i18n/fr.ts +211 -211
  38. package/src/tool/burnTest/i18n/ja.ts +211 -211
  39. package/src/tool/burnTest/i18n/ko.ts +211 -211
  40. package/src/tool/burnTest/i18n/pl.ts +211 -211
  41. package/src/tool/burnTest/i18n/ru.ts +211 -211
  42. package/src/tool/burnTest/i18n/sv.ts +211 -211
  43. package/src/tool/burnTest/i18n/zh.ts +211 -211
  44. package/src/tool/burnTest/seo.astro +15 -15
  45. package/src/tool/clothingSizeConverter/i18n/de.ts +348 -348
  46. package/src/tool/clothingSizeConverter/i18n/en.ts +348 -348
  47. package/src/tool/clothingSizeConverter/i18n/fr.ts +348 -348
  48. package/src/tool/clothingSizeConverter/i18n/ja.ts +348 -348
  49. package/src/tool/clothingSizeConverter/i18n/ko.ts +348 -348
  50. package/src/tool/clothingSizeConverter/i18n/nl.ts +348 -348
  51. package/src/tool/clothingSizeConverter/i18n/pl.ts +348 -348
  52. package/src/tool/clothingSizeConverter/i18n/ru.ts +348 -348
  53. package/src/tool/clothingSizeConverter/i18n/sv.ts +348 -348
  54. package/src/tool/clothingSizeConverter/i18n/tr.ts +348 -348
  55. package/src/tool/clothingSizeConverter/i18n/zh.ts +348 -348
  56. package/src/tool/clothingSizeConverter/seo.astro +15 -15
  57. package/src/tool/embroideryStitchPricingEstimator/bibliography.astro +6 -0
  58. package/src/tool/embroideryStitchPricingEstimator/bibliography.ts +12 -0
  59. package/src/tool/embroideryStitchPricingEstimator/component.astro +111 -0
  60. package/src/tool/embroideryStitchPricingEstimator/controller.ts +111 -0
  61. package/src/tool/embroideryStitchPricingEstimator/dom-views.ts +94 -0
  62. package/src/tool/embroideryStitchPricingEstimator/embroidery-stitch-count-pricing-estimator.css +438 -0
  63. package/src/tool/embroideryStitchPricingEstimator/entry.ts +29 -0
  64. package/src/tool/embroideryStitchPricingEstimator/evaluator.ts +22 -0
  65. package/src/tool/embroideryStitchPricingEstimator/i18n/de.ts +38 -0
  66. package/src/tool/embroideryStitchPricingEstimator/i18n/en.ts +194 -0
  67. package/src/tool/embroideryStitchPricingEstimator/i18n/es.ts +38 -0
  68. package/src/tool/embroideryStitchPricingEstimator/i18n/fr.ts +38 -0
  69. package/src/tool/embroideryStitchPricingEstimator/i18n/id.ts +38 -0
  70. package/src/tool/embroideryStitchPricingEstimator/i18n/it.ts +38 -0
  71. package/src/tool/embroideryStitchPricingEstimator/i18n/ja.ts +38 -0
  72. package/src/tool/embroideryStitchPricingEstimator/i18n/ko.ts +38 -0
  73. package/src/tool/embroideryStitchPricingEstimator/i18n/nl.ts +38 -0
  74. package/src/tool/embroideryStitchPricingEstimator/i18n/pl.ts +38 -0
  75. package/src/tool/embroideryStitchPricingEstimator/i18n/pt.ts +38 -0
  76. package/src/tool/embroideryStitchPricingEstimator/i18n/ru.ts +38 -0
  77. package/src/tool/embroideryStitchPricingEstimator/i18n/sv.ts +38 -0
  78. package/src/tool/embroideryStitchPricingEstimator/i18n/tr.ts +38 -0
  79. package/src/tool/embroideryStitchPricingEstimator/i18n/zh.ts +38 -0
  80. package/src/tool/embroideryStitchPricingEstimator/index.ts +11 -0
  81. package/src/tool/embroideryStitchPricingEstimator/logic.test.ts +40 -0
  82. package/src/tool/embroideryStitchPricingEstimator/logic.ts +86 -0
  83. package/src/tool/embroideryStitchPricingEstimator/seo.astro +15 -0
  84. package/src/tool/embroideryStitchPricingEstimator/storage.ts +20 -0
  85. package/src/tool/embroideryStitchPricingEstimator/ui.ts +53 -0
  86. package/src/tool/fabricProjectCalculator/i18n/de.ts +236 -236
  87. package/src/tool/fabricProjectCalculator/i18n/ja.ts +236 -236
  88. package/src/tool/fabricProjectCalculator/i18n/ko.ts +236 -236
  89. package/src/tool/fabricProjectCalculator/i18n/nl.ts +236 -236
  90. package/src/tool/fabricProjectCalculator/i18n/pl.ts +236 -236
  91. package/src/tool/fabricProjectCalculator/i18n/ru.ts +236 -236
  92. package/src/tool/fabricProjectCalculator/i18n/sv.ts +236 -236
  93. package/src/tool/fabricProjectCalculator/i18n/tr.ts +236 -236
  94. package/src/tool/fabricProjectCalculator/i18n/zh.ts +236 -236
  95. package/src/tool/fabricProjectCalculator/seo.astro +15 -15
  96. package/src/tool/fabricTruth/i18n/de.ts +268 -268
  97. package/src/tool/fabricTruth/i18n/en.ts +268 -268
  98. package/src/tool/fabricTruth/i18n/es.ts +302 -302
  99. package/src/tool/fabricTruth/i18n/fr.ts +268 -268
  100. package/src/tool/fabricTruth/i18n/id.ts +268 -268
  101. package/src/tool/fabricTruth/i18n/it.ts +268 -268
  102. package/src/tool/fabricTruth/i18n/ja.ts +268 -268
  103. package/src/tool/fabricTruth/i18n/ko.ts +268 -268
  104. package/src/tool/fabricTruth/i18n/nl.ts +268 -268
  105. package/src/tool/fabricTruth/i18n/pl.ts +268 -268
  106. package/src/tool/fabricTruth/i18n/pt.ts +268 -268
  107. package/src/tool/fabricTruth/i18n/ru.ts +268 -268
  108. package/src/tool/fabricTruth/i18n/sv.ts +268 -268
  109. package/src/tool/fabricTruth/i18n/tr.ts +268 -268
  110. package/src/tool/fabricTruth/i18n/zh.ts +272 -272
  111. package/src/tool/fabricTruth/seo.astro +15 -15
  112. package/src/tool/fiberPrep/i18n/de.ts +215 -215
  113. package/src/tool/fiberPrep/i18n/fr.ts +215 -215
  114. package/src/tool/fiberPrep/i18n/ja.ts +215 -215
  115. package/src/tool/fiberPrep/i18n/ko.ts +215 -215
  116. package/src/tool/fiberPrep/i18n/nl.ts +215 -215
  117. package/src/tool/fiberPrep/i18n/pl.ts +215 -215
  118. package/src/tool/fiberPrep/i18n/ru.ts +215 -215
  119. package/src/tool/fiberPrep/i18n/sv.ts +215 -215
  120. package/src/tool/fiberPrep/i18n/tr.ts +215 -215
  121. package/src/tool/fiberPrep/i18n/zh.ts +215 -215
  122. package/src/tool/fiberPrep/seo.astro +15 -15
  123. package/src/tool/knittingGauge/i18n/de.ts +224 -224
  124. package/src/tool/knittingGauge/i18n/ja.ts +224 -224
  125. package/src/tool/knittingGauge/i18n/ko.ts +224 -224
  126. package/src/tool/knittingGauge/i18n/pl.ts +224 -224
  127. package/src/tool/knittingGauge/i18n/ru.ts +224 -224
  128. package/src/tool/knittingGauge/i18n/tr.ts +224 -224
  129. package/src/tool/knittingGauge/i18n/zh.ts +224 -224
  130. package/src/tool/knittingGauge/seo.astro +15 -15
  131. package/src/tool/laundryGuide/i18n/de.ts +271 -271
  132. package/src/tool/laundryGuide/i18n/en.ts +271 -271
  133. package/src/tool/laundryGuide/i18n/es.ts +271 -271
  134. package/src/tool/laundryGuide/i18n/fr.ts +255 -255
  135. package/src/tool/laundryGuide/i18n/id.ts +271 -271
  136. package/src/tool/laundryGuide/i18n/it.ts +271 -271
  137. package/src/tool/laundryGuide/i18n/ja.ts +271 -271
  138. package/src/tool/laundryGuide/i18n/ko.ts +271 -271
  139. package/src/tool/laundryGuide/i18n/nl.ts +271 -271
  140. package/src/tool/laundryGuide/i18n/pl.ts +271 -271
  141. package/src/tool/laundryGuide/i18n/pt.ts +271 -271
  142. package/src/tool/laundryGuide/i18n/ru.ts +271 -271
  143. package/src/tool/laundryGuide/i18n/sv.ts +271 -271
  144. package/src/tool/laundryGuide/i18n/tr.ts +271 -271
  145. package/src/tool/laundryGuide/i18n/zh.ts +271 -271
  146. package/src/tool/laundryGuide/seo.astro +15 -15
  147. package/src/tool/needleConverter/i18n/de.ts +202 -202
  148. package/src/tool/needleConverter/i18n/es.ts +207 -207
  149. package/src/tool/needleConverter/i18n/fr.ts +207 -207
  150. package/src/tool/needleConverter/i18n/ja.ts +202 -202
  151. package/src/tool/needleConverter/i18n/ko.ts +202 -202
  152. package/src/tool/needleConverter/i18n/nl.ts +202 -202
  153. package/src/tool/needleConverter/i18n/pl.ts +202 -202
  154. package/src/tool/needleConverter/i18n/ru.ts +202 -202
  155. package/src/tool/needleConverter/i18n/sv.ts +202 -202
  156. package/src/tool/needleConverter/i18n/tr.ts +202 -202
  157. package/src/tool/needleConverter/i18n/zh.ts +202 -202
  158. package/src/tool/needleConverter/seo.astro +15 -15
  159. package/src/tool/sewingPatternScaler/component.astro +236 -236
  160. package/src/tool/sewingPatternScaler/i18n/fr.ts +170 -170
  161. package/src/tool/sewingPatternScaler/i18n/ja.ts +114 -114
  162. package/src/tool/sewingPatternScaler/i18n/ko.ts +114 -114
  163. package/src/tool/sewingPatternScaler/i18n/nl.ts +114 -114
  164. package/src/tool/sewingPatternScaler/i18n/pl.ts +114 -114
  165. package/src/tool/sewingPatternScaler/i18n/ru.ts +114 -114
  166. package/src/tool/sewingPatternScaler/i18n/sv.ts +114 -114
  167. package/src/tool/sewingPatternScaler/i18n/tr.ts +114 -114
  168. package/src/tool/sewingPatternScaler/i18n/zh.ts +114 -114
  169. package/src/tool/sewingPatternScaler/seo.astro +15 -15
  170. package/src/tool/shoeSizeConverter/i18n/fr.ts +183 -183
  171. package/src/tool/shoeSizeConverter/i18n/ja.ts +179 -179
  172. package/src/tool/shoeSizeConverter/i18n/ko.ts +179 -179
  173. package/src/tool/shoeSizeConverter/i18n/nl.ts +179 -179
  174. package/src/tool/shoeSizeConverter/i18n/pl.ts +179 -179
  175. package/src/tool/shoeSizeConverter/i18n/ru.ts +179 -179
  176. package/src/tool/shoeSizeConverter/i18n/sv.ts +179 -179
  177. package/src/tool/shoeSizeConverter/i18n/tr.ts +179 -179
  178. package/src/tool/shoeSizeConverter/i18n/zh.ts +179 -179
  179. package/src/tool/shoeSizeConverter/seo.astro +15 -15
  180. package/src/tool/stainChemistry/bibliography.ts +16 -16
  181. package/src/tool/stainChemistry/i18n/de.ts +286 -286
  182. package/src/tool/stainChemistry/i18n/en.ts +289 -289
  183. package/src/tool/stainChemistry/i18n/es.ts +286 -286
  184. package/src/tool/stainChemistry/i18n/fr.ts +296 -296
  185. package/src/tool/stainChemistry/i18n/id.ts +286 -286
  186. package/src/tool/stainChemistry/i18n/it.ts +286 -286
  187. package/src/tool/stainChemistry/i18n/ja.ts +286 -286
  188. package/src/tool/stainChemistry/i18n/ko.ts +283 -283
  189. package/src/tool/stainChemistry/i18n/nl.ts +286 -286
  190. package/src/tool/stainChemistry/i18n/pl.ts +286 -286
  191. package/src/tool/stainChemistry/i18n/pt.ts +286 -286
  192. package/src/tool/stainChemistry/i18n/ru.ts +286 -286
  193. package/src/tool/stainChemistry/i18n/sv.ts +286 -286
  194. package/src/tool/stainChemistry/i18n/tr.ts +286 -286
  195. package/src/tool/stainChemistry/i18n/zh.ts +281 -281
  196. package/src/tool/stainChemistry/seo.astro +15 -15
  197. package/src/tool/yarnCalculator/i18n/de.ts +296 -296
  198. package/src/tool/yarnCalculator/i18n/es.ts +296 -296
  199. package/src/tool/yarnCalculator/i18n/fr.ts +296 -296
  200. package/src/tool/yarnCalculator/i18n/ja.ts +296 -296
  201. package/src/tool/yarnCalculator/i18n/ko.ts +296 -296
  202. package/src/tool/yarnCalculator/i18n/nl.ts +296 -296
  203. package/src/tool/yarnCalculator/i18n/pl.ts +296 -296
  204. package/src/tool/yarnCalculator/i18n/ru.ts +296 -296
  205. package/src/tool/yarnCalculator/i18n/sv.ts +296 -296
  206. package/src/tool/yarnCalculator/i18n/tr.ts +296 -296
  207. package/src/tool/yarnCalculator/i18n/zh.ts +295 -295
  208. package/src/tool/yarnCalculator/seo.astro +15 -15
  209. 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
+ };