@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,271 +1,271 @@
1
- import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
- import type { ToolLocaleContent } from '../../../types';
3
- import { bibliography } from '../bibliography';
4
-
5
- const slug = 'panduan-mencuci-tekstil';
6
- const title = 'Panduan Perawatan Tekstil: Cara Mencuci Setiap Jenis Serat';
7
- const description = 'Panduan ilmiah untuk mencuci dan merawat katun, wol, sutra, linen, dan sintetis. Cegah penyusutan, pemudaran warna, dan kerusakan dengan instruksi yang presisi.';
8
-
9
- const faqData = [
10
- {
11
- question: 'Bagaimana cara mencegah warna agar tidak pudar?',
12
- answer: 'Cuci dengan air dingin (maksimal 30°C), balikkan pakaian ke dalam (bagian dalam di luar), gunakan deterjen khusus pakaian gelap, dan hindari sinar matahari langsung saat menjemur.',
13
- },
14
- {
15
- question: 'Bisakah saya mencuci wol di mesin cuci?',
16
- answer: 'Ya, tetapi hanya dengan siklus khusus wol (air dingin, putaran lembut). Gunakan deterjen khusus wol dan jangan pernah menggunakan siklus normal.',
17
- },
18
- {
19
- question: 'Mengapa sutra saya terkena noda air?',
20
- answer: 'Sutra bereaksi terhadap mineral dalam air. Gunakan air suling (distilasi) pada bilasan terakhir atau gosok noda dengan lembut menggunakan kain sutra murni.',
21
- },
22
- ];
23
-
24
- const howToData = [
25
- { name: 'Periksa label', text: 'Selalu baca petunjuk perawatan pada label sebelum mencuci.' },
26
- { name: 'Urutkan berdasarkan jenis serat', text: 'Cuci serat alami secara terpisah dari sintetis jika memungkinkan.' },
27
- { name: 'Pilih suhu air', text: 'Gunakan air dingin untuk kain halus dan air panas hanya untuk material yang tahan lama.' },
28
- ];
29
-
30
- const faqSchema: WithContext<FAQPage> = {
31
- '@context': 'https://schema.org',
32
- '@type': 'FAQPage',
33
- mainEntity: faqData.map((item) => ({
34
- '@type': 'Question',
35
- name: item.question,
36
- acceptedAnswer: { '@type': 'Answer', text: item.answer },
37
- })),
38
- };
39
-
40
- const howToSchema: WithContext<HowTo> = {
41
- '@context': 'https://schema.org',
42
- '@type': 'HowTo',
43
- name: title,
44
- description: description,
45
- step: howToData.map((step) => ({
46
- '@type': 'HowToStep',
47
- name: step.name,
48
- text: step.text,
49
- })),
50
- };
51
-
52
- const appSchema: WithContext<SoftwareApplication> = {
53
- '@context': 'https://schema.org',
54
- '@type': 'SoftwareApplication',
55
- name: title,
56
- description: description,
57
- applicationCategory: 'UtilityApplication',
58
- operatingSystem: 'All',
59
- offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
60
- inLanguage: 'id',
61
- };
62
-
63
- export const content: ToolLocaleContent = {
64
- slug,
65
- title,
66
- description,
67
- ui: {
68
- selectMaterialTitle: 'Pilih Material',
69
- selectMaterialPrompt: 'Pilih kain untuk melihat panduan perawatannya',
70
- careInstructions: 'Instruksi perawatan premium',
71
- maxTemp: 'Suhu Maksimal',
72
- ironing: 'Penyetrikaan',
73
- drying: 'Pengeringan',
74
- avoidLabel: 'Hal yang harus DIHINDARI',
75
- sosLabel: 'Tips Perawatan',
76
- textileData: {
77
- cotton: {
78
- name: "Katun",
79
- description: "Serat nabati alami, lembut dan menyerap keringat. Raja dari segala bahan dasar.",
80
- family: "natural",
81
- origin: "Kuncup tanaman kapas",
82
- breathability: 9,
83
- durability: 7,
84
- warmth: 4,
85
- washing: "Air dingin atau hangat (menyusut dengan panas). Boleh menggunakan putaran mesin kuat.",
86
- drying: "Mesin pengering suhu sedang atau dijemur di udara terbuka.",
87
- ironing: "Setrika suhu tinggi dengan uap saat masih lembap.",
88
- donts: ["Dibiarkan lembap terlalu lama (jamur)", "Terlalu banyak pemutih (melemahkan serat)"],
89
- sos: "Menyusut? Rendam dalam air hangat dengan kondisioner rambut dan tarik secara perlahan.",
90
- icon: "mdi:tshirt-crew",
91
- color: "#60A5FA",
92
- maxTemp: "40-60°C",
93
- isNoble: false,
94
- },
95
- linen: {
96
- name: "Linen",
97
- description: "Serat nabati yang sangat kuat, sejuk, dan memiliki kerutan khas.",
98
- family: "natural",
99
- origin: "Batang tanaman linen (flax)",
100
- breathability: 10,
101
- durability: 9,
102
- warmth: 2,
103
- washing: "Siklus halus, jangan mengisi mesin terlalu penuh (butuh air agar tidak pecah/patah).",
104
- drying: "Di udara terbuka. JANGAN PERNAH gunakan mesin pengering (merusak serat).",
105
- ironing: "Setrika suhu maksimal, selalu saat pakaian sangat lembap.",
106
- donts: ["Putaran mesin kuat", "Melipat selalu di tempat yang sama (bisa patah)"],
107
- sos: "Mengkilap karena penyetrikaan? Usap dengan kain yang dibasahi cuka putih.",
108
- icon: "mdi:leaf",
109
- color: "#A7F3D0",
110
- maxTemp: "60°C",
111
- isNoble: true,
112
- },
113
- wool: {
114
- name: "Wol / Merino",
115
- description: "Serat protein hewani, isolator panas yang sangat baik dan elastis.",
116
- family: "natural",
117
- origin: "Bulu domba",
118
- breathability: 8,
119
- durability: 6,
120
- warmth: 10,
121
- washing: "Cuci tangan atau siklus wol. Sabun netral. JANGAN PERNAH gunakan air panas (akan menggumpal/felted).",
122
- drying: "Dihamparkan horizontal di atas handuk. Jangan pernah digantung (akan melar).",
123
- ironing: "Uap vertikal atau setrika suhu sedang dengan kain pelapis di atasnya.",
124
- donts: ["Air panas", "Digosok atau dipelintir", "Pemutih (akan melarutkan serat)"],
125
- sos: "Menggumpal? Hampir mustahil diperbaiki, tetapi merendam dengan pelembut mungkin bisa sedikit melunakkan.",
126
- icon: "mdi:sheep",
127
- color: "#FCD34D",
128
- maxTemp: "30°C",
129
- isNoble: true,
130
- },
131
- silk: {
132
- name: "Sutra",
133
- description: "Serat hewani dari filamen kontinu. Kilau alami dan sentuhan kering.",
134
- family: "natural",
135
- origin: "Kepompong ulat sutra",
136
- breathability: 7,
137
- durability: 5,
138
- warmth: 6,
139
- washing: "Cuci tangan dalam air dingin dengan sampo netral. Jangan dipelintir.",
140
- drying: "Gulung dalam handuk untuk menyerap kelembapan. Jemur di tempat teduh.",
141
- ironing: "Setrika suhu rendah, posisi terbalik dan tanpa uap langsung.",
142
- donts: ["Sinar matahari langsung (merusak)", "Parfum/Deodoran (meninggalkan noda)", "Air (membuat lingkaran noda)"],
143
- sos: "Noda air? Gosok sutra dengan lembut terhadap sesamanya.",
144
- icon: "mdi:ticket-percent",
145
- color: "#F472B6",
146
- maxTemp: "20°C",
147
- isNoble: true,
148
- },
149
- cashmere: {
150
- name: "Kasmir",
151
- description: "Serat mewah dari kambing Kashmir. Sangat lembut dan hangat.",
152
- family: "natural",
153
- origin: "Lapisan bulu bagian dalam kambing Hircus",
154
- breathability: 9,
155
- durability: 5,
156
- warmth: 10,
157
- washing: "MUTLAK cuci tangan dengan sampo bayi. Air dingin. Jangan pernah digosok.",
158
- drying: "Dihamparkan horizontal di atas handuk sambil dibentuk. Jangan digantung.",
159
- ironing: "Uap vertikal tanpa menyentuh pakaian atau setrika hangat dengan kain pelapis.",
160
- donts: ["Mesin cuci (termasuk program wol)", "Pelembut kain", "Gesekan terus-menerus (bola-bola serat)"],
161
- sos: "Pilling (bola-bola serat)? Gunakan sisir khusus atau ambil dengan tangan.",
162
- icon: "mdi:crown",
163
- color: "#F59E0B",
164
- maxTemp: "20°C",
165
- isNoble: true,
166
- },
167
- polyester: {
168
- name: "Poliester",
169
- description: "Serat sintetis dari minyak bumi. Tahan lama, tidak mudah kusut, tidak menyerap udara.",
170
- family: "synthetic",
171
- origin: "Polimer turunan minyak bumi",
172
- breathability: 2,
173
- durability: 10,
174
- warmth: 5,
175
- washing: "Air hangat/dingin. Tahan segala cara cuci, tetapi menjebak bau dan lemak.",
176
- drying: "Mesin pengering suhu rendah atau udara bebas. Kering sangat cepat.",
177
- ironing: "Setrika suhu rendah/sedang. Hati-hati, bisa meleleh.",
178
- donts: ["Panas berlebih", "Pelembut (membuat lapisan lilin yang menjebak lebih banyak bau)"],
179
- sos: "Bau membandel? Rendam dalam air dengan cuka sebelum dicuci.",
180
- icon: "mdi:oil",
181
- color: "#94A3B8",
182
- maxTemp: "40°C",
183
- isNoble: false,
184
- },
185
- viscose: {
186
- name: "Viskosa / Rayon",
187
- description: "Semi-sintetis dari selulosa yang diregenerasi. Sentuhan sutra, sangat menyerap.",
188
- family: "artificial",
189
- origin: "Bubur kayu yang diolah secara kimia",
190
- breathability: 8,
191
- durability: 4,
192
- warmth: 3,
193
- washing: "Siklus halus dalam air dingin. Menjadi sangat lemah saat basah.",
194
- drying: "Dihamparkan horizontal atau gantungan busa. Jangan gunakan mesin pengering.",
195
- ironing: "Suhu sedang, posisi terbalik. Tanpa uap langsung jika memungkinkan.",
196
- donts: ["Dipelintir saat basah (serat putus)", "Rendaman lama"],
197
- sos: "Menyusut dan kaku? Setrika dengan banyak uap untuk melemaskan serat.",
198
- icon: "mdi:forest",
199
- color: "#C084FC",
200
- maxTemp: "30°C",
201
- isNoble: false,
202
- },
203
- nylon: {
204
- name: "Nilon (Poliamida)",
205
- description: "Sintetis yang sangat tahan terhadap tarikan dan abrasi.",
206
- family: "synthetic",
207
- origin: "Turunan minyak bumi (poliamida)",
208
- breathability: 3,
209
- durability: 10,
210
- warmth: 4,
211
- washing: "Siklus normal. Hati-hati mencampur warna (nilon mudah menyerap warna lain).",
212
- drying: "Di udara terbuka. Mesin pengering suhu rendah.",
213
- ironing: "Sangat rendah. Meleleh sangat cepat.",
214
- donts: ["Pemutih (membuat menjadi kuning)", "Dijemur di bawah matahari langsung"],
215
- sos: "Menjadi keabu-abuan? Cuci dengan pemutih beroksigen.",
216
- icon: "mdi:parachute",
217
- color: "#2DD4BF",
218
- maxTemp: "40°C",
219
- isNoble: false,
220
- },
221
- acrylic: {
222
- name: "Akrilik",
223
- description: "Sintetis imitasi wol. Lembut, hangat, mudah berbola serat.",
224
- family: "synthetic",
225
- origin: "Polialkulonitril",
226
- breathability: 4,
227
- durability: 6,
228
- warmth: 8,
229
- washing: "Air hangat kuku. Gunakan pelembut untuk mengurangi listrik statis.",
230
- drying: "Di jemur. Panas akan merusak bentuk pakaian secara permanen.",
231
- ironing: "Jangan disetrika",
232
- donts: ["Pelembut (merusak serat jika lama)", "Diperas kuat", "Panas"],
233
- sos: "Kehilangan elastisitas? Hal ini tidak bisa diperbaiki (serat sudah putus).",
234
- icon: "mdi:resize",
235
- color: "#450A0A",
236
- maxTemp: "30°C",
237
- isNoble: false,
238
- },
239
- },
240
- },
241
- seo: [
242
- { type: 'title', text: 'Penguasaan Perawatan Tekstil: Panduan Ilmiah untuk Memperpanjang Umur Pakaian Anda', level: 2 },
243
- { type: 'paragraph', html: 'Berapa banyak pakaian yang telah Anda rusak tanpa sadar? Penyusutan wol yang tidak disengaja, pudarnya warna pada katun, atau noda sutra yang tidak pernah hilang. Kebanyakan orang mencuci pakaian tanpa memahami bahwa setiap serat memiliki kebutuhan spesifik.' },
244
- { type: 'paragraph', html: '<strong>Panduan Mencuci Tekstil</strong> kami menyediakan instruksi ilmiah berdasarkan komposisi asli pakaian Anda. Ini bukan instruksi umum; ini spesifik. Ini bukan sekadar saran; ini sains.' },
245
- { type: 'title', text: 'Mengapa Metode Tradisional Gagal', level: 2 },
246
- { type: 'paragraph', html: 'Nenek Anda mungkin mencuci segalanya dengan air panas dan sabun yang kuat. Itu berhasil untuk seprai katun tebal tahun 50-an, tetapi dunia tekstil telah berubah. Serat modern - mulai dari <strong>Lyocell</strong> hingga <strong>Elastane</strong> - memerlukan protokol yang sangat berbeda.' },
247
- { type: 'list', items: ['<strong>Katun</strong> menoleransi air panas tetapi membutuhkan siklus lembut untuk menghindari penyusutan.', '<strong>Sutra</strong> rapuh pada suhu di atas 30°C dan membutuhkan air suling.', '<strong>Wol</strong> bisa terasa keras seperti batu jika dicuci dengan mesin standar.', '<strong>Sintetis</strong> tidak butuh banyak perawatan, tetapi menghasilkan listrik statis dan mudah berbola serat.'] },
248
- { type: 'title', text: 'Protokol Berdasarkan Jenis Serat', level: 2 },
249
- { type: 'title', text: 'Katun: Si Tahan Banting', level: 3 },
250
- { type: 'paragraph', html: 'Katun sangat pemaaf. Bisa menahan air pada suhu 40-60°C tanpa masalah. Musuh aslinya adalah klorin (yang melemahkan serat) dan pengeringan mesin suhu tinggi (yang menyebabkan penyusutan permanen). Aturannya: selalu cuci secara terbalik untuk menjaga warna.' },
251
- { type: 'title', text: 'Sutra: Si Diva', level: 3 },
252
- { type: 'paragraph', html: 'Sutra butuh air dingin (maks 30°C), deterjen lembut, dan pembilasan air suling jika memungkinkan. Masalahnya: mineral dalam air keran meninggalkan endapan yang membuat sutra tampak kusam dan kasar. Solusinya sederhana: gunakan air suling pada bilasan terakhir.' },
253
- { type: 'title', text: 'Wol: Si Halus', level: 3 },
254
- { type: 'paragraph', html: 'Wol adalah protein, seperti rambut Anda. Cuci pada suhu maks 30°C dengan deterjen khusus wol. Jangan pernah gunakan siklus standar: putaran mesin akan membuatnya menyusut secara ireversibel. Aturan emas: selalu jemur mendatar (dry flat), jangan pernah digantung (bisa melar).' },
255
- { type: 'title', text: 'Sintetis: Si Mudah', level: 3 },
256
- { type: 'paragraph', html: 'Poliester, akrilik, dan nilon sangat tahan lama. Bisa menahan air pada suhu 40°C tanpa masalah. Satu-satunya musuh adalah listrik statis. Triknya: tambahkan pelembut pakaian atau gunakan dryer sheet di mesin pengering.' },
257
- { type: 'title', text: 'Kenyataan Pahit Tentang Pengeringan', level: 2 },
258
- { type: 'paragraph', html: '90% kerusakan pakaian terjadi selama pengeringan, bukan pencucian. Inilah alasannya:' },
259
- { type: 'card', title: 'Serat di Filter Mesin', icon: 'mdi:alert', html: 'Serat halus yang Anda lihat di filter adalah <strong>serat yang lepas</strong> dari pakaian Anda. Setiap siklus pengeringan menghancurkan sedikit demi sedikit. Sintetis lebih buruk: akan berbola serat dalam hitungan minggu.' },
260
- { type: 'card', title: 'Penyusutan Diam diam', icon: 'mdi:warning', html: 'Panas dari mesin pengering menyusutkan sebagian besar serat alami secara permanen. Pakaian yang menyusut 5% dalam sekali pengeringan tidak akan pernah kembali ke ukuran aslinya.' },
261
- { type: 'tip', title: 'Praktik Pengeringan Terbaik', html: 'Jemur di udara terbuka sebisa mungkin. Jika harus menggunakan mesin pengering, gunakan suhu rendah dan keluarkan pakaian saat masih agak lembap.' },
262
- { type: 'title', text: 'Noda: Panduan Bertahan Hidup', level: 2 },
263
- { type: 'paragraph', html: 'Setiap serat bereaksi berbeda terhadap bahan kimia. Noda anggur pada katun ditangani dengan air dingin; pada sutra, Anda butuh air suling dan kain sutra murni. Berikut adalah protokol dasarnya:' },
264
- { type: 'list', items: ['<strong>Lemak:</strong> Gunakan sabun kering (dry soap) sebelum cuci. Jangan gunakan air panas (akan memantapkan noda).', '<strong>Tinta/Pulpen:</strong> Alkohol isopropil untuk sintetis; air dingin untuk alami.', '<strong>Darah:</strong> SELALU air dingin. Panas akan memantapkannya secara permanen.', '<strong>Anggur/Minuman:</strong> Air dingin segera, diikuti garam untuk menyerap.'] },
265
- { type: 'paragraph', html: '"Beli lebih sedikit, pilih lebih baik, dan buatlah awet." Pakaian yang dirawat dengan baik bisa bertahan puluhan tahun. Pakaian yang disalahartikan, hanya bertahan berbulan-bulan.' },
266
- ],
267
- faq: faqData,
268
- bibliography: bibliography,
269
- howTo: howToData,
270
- schemas: [faqSchema, howToSchema, appSchema],
271
- };
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import { bibliography } from '../bibliography';
4
+
5
+ const slug = 'panduan-mencuci-tekstil';
6
+ const title = 'Panduan Perawatan Tekstil: Cara Mencuci Setiap Jenis Serat';
7
+ const description = 'Panduan ilmiah untuk mencuci dan merawat katun, wol, sutra, linen, dan sintetis. Cegah penyusutan, pemudaran warna, dan kerusakan dengan instruksi yang presisi.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'Bagaimana cara mencegah warna agar tidak pudar?',
12
+ answer: 'Cuci dengan air dingin (maksimal 30°C), balikkan pakaian ke dalam (bagian dalam di luar), gunakan deterjen khusus pakaian gelap, dan hindari sinar matahari langsung saat menjemur.',
13
+ },
14
+ {
15
+ question: 'Bisakah saya mencuci wol di mesin cuci?',
16
+ answer: 'Ya, tetapi hanya dengan siklus khusus wol (air dingin, putaran lembut). Gunakan deterjen khusus wol dan jangan pernah menggunakan siklus normal.',
17
+ },
18
+ {
19
+ question: 'Mengapa sutra saya terkena noda air?',
20
+ answer: 'Sutra bereaksi terhadap mineral dalam air. Gunakan air suling (distilasi) pada bilasan terakhir atau gosok noda dengan lembut menggunakan kain sutra murni.',
21
+ },
22
+ ];
23
+
24
+ const howToData = [
25
+ { name: 'Periksa label', text: 'Selalu baca petunjuk perawatan pada label sebelum mencuci.' },
26
+ { name: 'Urutkan berdasarkan jenis serat', text: 'Cuci serat alami secara terpisah dari sintetis jika memungkinkan.' },
27
+ { name: 'Pilih suhu air', text: 'Gunakan air dingin untuk kain halus dan air panas hanya untuk material yang tahan lama.' },
28
+ ];
29
+
30
+ const faqSchema: WithContext<FAQPage> = {
31
+ '@context': 'https://schema.org',
32
+ '@type': 'FAQPage',
33
+ mainEntity: faqData.map((item) => ({
34
+ '@type': 'Question',
35
+ name: item.question,
36
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
37
+ })),
38
+ };
39
+
40
+ const howToSchema: WithContext<HowTo> = {
41
+ '@context': 'https://schema.org',
42
+ '@type': 'HowTo',
43
+ name: title,
44
+ description: description,
45
+ step: howToData.map((step) => ({
46
+ '@type': 'HowToStep',
47
+ name: step.name,
48
+ text: step.text,
49
+ })),
50
+ };
51
+
52
+ const appSchema: WithContext<SoftwareApplication> = {
53
+ '@context': 'https://schema.org',
54
+ '@type': 'SoftwareApplication',
55
+ name: title,
56
+ description: description,
57
+ applicationCategory: 'UtilityApplication',
58
+ operatingSystem: 'All',
59
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
60
+ inLanguage: 'id',
61
+ };
62
+
63
+ export const content: ToolLocaleContent = {
64
+ slug,
65
+ title,
66
+ description,
67
+ ui: {
68
+ selectMaterialTitle: 'Pilih Material',
69
+ selectMaterialPrompt: 'Pilih kain untuk melihat panduan perawatannya',
70
+ careInstructions: 'Instruksi perawatan premium',
71
+ maxTemp: 'Suhu Maksimal',
72
+ ironing: 'Penyetrikaan',
73
+ drying: 'Pengeringan',
74
+ avoidLabel: 'Hal yang harus DIHINDARI',
75
+ sosLabel: 'Tips Perawatan',
76
+ textileData: {
77
+ cotton: {
78
+ name: "Katun",
79
+ description: "Serat nabati alami, lembut dan menyerap keringat. Raja dari segala bahan dasar.",
80
+ family: "natural",
81
+ origin: "Kuncup tanaman kapas",
82
+ breathability: 9,
83
+ durability: 7,
84
+ warmth: 4,
85
+ washing: "Air dingin atau hangat (menyusut dengan panas). Boleh menggunakan putaran mesin kuat.",
86
+ drying: "Mesin pengering suhu sedang atau dijemur di udara terbuka.",
87
+ ironing: "Setrika suhu tinggi dengan uap saat masih lembap.",
88
+ donts: ["Dibiarkan lembap terlalu lama (jamur)", "Terlalu banyak pemutih (melemahkan serat)"],
89
+ sos: "Menyusut? Rendam dalam air hangat dengan kondisioner rambut dan tarik secara perlahan.",
90
+ icon: "mdi:tshirt-crew",
91
+ color: "#60A5FA",
92
+ maxTemp: "40-60°C",
93
+ isNoble: false,
94
+ },
95
+ linen: {
96
+ name: "Linen",
97
+ description: "Serat nabati yang sangat kuat, sejuk, dan memiliki kerutan khas.",
98
+ family: "natural",
99
+ origin: "Batang tanaman linen (flax)",
100
+ breathability: 10,
101
+ durability: 9,
102
+ warmth: 2,
103
+ washing: "Siklus halus, jangan mengisi mesin terlalu penuh (butuh air agar tidak pecah/patah).",
104
+ drying: "Di udara terbuka. JANGAN PERNAH gunakan mesin pengering (merusak serat).",
105
+ ironing: "Setrika suhu maksimal, selalu saat pakaian sangat lembap.",
106
+ donts: ["Putaran mesin kuat", "Melipat selalu di tempat yang sama (bisa patah)"],
107
+ sos: "Mengkilap karena penyetrikaan? Usap dengan kain yang dibasahi cuka putih.",
108
+ icon: "mdi:leaf",
109
+ color: "#A7F3D0",
110
+ maxTemp: "60°C",
111
+ isNoble: true,
112
+ },
113
+ wool: {
114
+ name: "Wol / Merino",
115
+ description: "Serat protein hewani, isolator panas yang sangat baik dan elastis.",
116
+ family: "natural",
117
+ origin: "Bulu domba",
118
+ breathability: 8,
119
+ durability: 6,
120
+ warmth: 10,
121
+ washing: "Cuci tangan atau siklus wol. Sabun netral. JANGAN PERNAH gunakan air panas (akan menggumpal/felted).",
122
+ drying: "Dihamparkan horizontal di atas handuk. Jangan pernah digantung (akan melar).",
123
+ ironing: "Uap vertikal atau setrika suhu sedang dengan kain pelapis di atasnya.",
124
+ donts: ["Air panas", "Digosok atau dipelintir", "Pemutih (akan melarutkan serat)"],
125
+ sos: "Menggumpal? Hampir mustahil diperbaiki, tetapi merendam dengan pelembut mungkin bisa sedikit melunakkan.",
126
+ icon: "mdi:sheep",
127
+ color: "#FCD34D",
128
+ maxTemp: "30°C",
129
+ isNoble: true,
130
+ },
131
+ silk: {
132
+ name: "Sutra",
133
+ description: "Serat hewani dari filamen kontinu. Kilau alami dan sentuhan kering.",
134
+ family: "natural",
135
+ origin: "Kepompong ulat sutra",
136
+ breathability: 7,
137
+ durability: 5,
138
+ warmth: 6,
139
+ washing: "Cuci tangan dalam air dingin dengan sampo netral. Jangan dipelintir.",
140
+ drying: "Gulung dalam handuk untuk menyerap kelembapan. Jemur di tempat teduh.",
141
+ ironing: "Setrika suhu rendah, posisi terbalik dan tanpa uap langsung.",
142
+ donts: ["Sinar matahari langsung (merusak)", "Parfum/Deodoran (meninggalkan noda)", "Air (membuat lingkaran noda)"],
143
+ sos: "Noda air? Gosok sutra dengan lembut terhadap sesamanya.",
144
+ icon: "mdi:ticket-percent",
145
+ color: "#F472B6",
146
+ maxTemp: "20°C",
147
+ isNoble: true,
148
+ },
149
+ cashmere: {
150
+ name: "Kasmir",
151
+ description: "Serat mewah dari kambing Kashmir. Sangat lembut dan hangat.",
152
+ family: "natural",
153
+ origin: "Lapisan bulu bagian dalam kambing Hircus",
154
+ breathability: 9,
155
+ durability: 5,
156
+ warmth: 10,
157
+ washing: "MUTLAK cuci tangan dengan sampo bayi. Air dingin. Jangan pernah digosok.",
158
+ drying: "Dihamparkan horizontal di atas handuk sambil dibentuk. Jangan digantung.",
159
+ ironing: "Uap vertikal tanpa menyentuh pakaian atau setrika hangat dengan kain pelapis.",
160
+ donts: ["Mesin cuci (termasuk program wol)", "Pelembut kain", "Gesekan terus-menerus (bola-bola serat)"],
161
+ sos: "Pilling (bola-bola serat)? Gunakan sisir khusus atau ambil dengan tangan.",
162
+ icon: "mdi:crown",
163
+ color: "#F59E0B",
164
+ maxTemp: "20°C",
165
+ isNoble: true,
166
+ },
167
+ polyester: {
168
+ name: "Poliester",
169
+ description: "Serat sintetis dari minyak bumi. Tahan lama, tidak mudah kusut, tidak menyerap udara.",
170
+ family: "synthetic",
171
+ origin: "Polimer turunan minyak bumi",
172
+ breathability: 2,
173
+ durability: 10,
174
+ warmth: 5,
175
+ washing: "Air hangat/dingin. Tahan segala cara cuci, tetapi menjebak bau dan lemak.",
176
+ drying: "Mesin pengering suhu rendah atau udara bebas. Kering sangat cepat.",
177
+ ironing: "Setrika suhu rendah/sedang. Hati-hati, bisa meleleh.",
178
+ donts: ["Panas berlebih", "Pelembut (membuat lapisan lilin yang menjebak lebih banyak bau)"],
179
+ sos: "Bau membandel? Rendam dalam air dengan cuka sebelum dicuci.",
180
+ icon: "mdi:oil",
181
+ color: "#94A3B8",
182
+ maxTemp: "40°C",
183
+ isNoble: false,
184
+ },
185
+ viscose: {
186
+ name: "Viskosa / Rayon",
187
+ description: "Semi-sintetis dari selulosa yang diregenerasi. Sentuhan sutra, sangat menyerap.",
188
+ family: "artificial",
189
+ origin: "Bubur kayu yang diolah secara kimia",
190
+ breathability: 8,
191
+ durability: 4,
192
+ warmth: 3,
193
+ washing: "Siklus halus dalam air dingin. Menjadi sangat lemah saat basah.",
194
+ drying: "Dihamparkan horizontal atau gantungan busa. Jangan gunakan mesin pengering.",
195
+ ironing: "Suhu sedang, posisi terbalik. Tanpa uap langsung jika memungkinkan.",
196
+ donts: ["Dipelintir saat basah (serat putus)", "Rendaman lama"],
197
+ sos: "Menyusut dan kaku? Setrika dengan banyak uap untuk melemaskan serat.",
198
+ icon: "mdi:forest",
199
+ color: "#C084FC",
200
+ maxTemp: "30°C",
201
+ isNoble: false,
202
+ },
203
+ nylon: {
204
+ name: "Nilon (Poliamida)",
205
+ description: "Sintetis yang sangat tahan terhadap tarikan dan abrasi.",
206
+ family: "synthetic",
207
+ origin: "Turunan minyak bumi (poliamida)",
208
+ breathability: 3,
209
+ durability: 10,
210
+ warmth: 4,
211
+ washing: "Siklus normal. Hati-hati mencampur warna (nilon mudah menyerap warna lain).",
212
+ drying: "Di udara terbuka. Mesin pengering suhu rendah.",
213
+ ironing: "Sangat rendah. Meleleh sangat cepat.",
214
+ donts: ["Pemutih (membuat menjadi kuning)", "Dijemur di bawah matahari langsung"],
215
+ sos: "Menjadi keabu-abuan? Cuci dengan pemutih beroksigen.",
216
+ icon: "mdi:parachute",
217
+ color: "#2DD4BF",
218
+ maxTemp: "40°C",
219
+ isNoble: false,
220
+ },
221
+ acrylic: {
222
+ name: "Akrilik",
223
+ description: "Sintetis imitasi wol. Lembut, hangat, mudah berbola serat.",
224
+ family: "synthetic",
225
+ origin: "Polialkulonitril",
226
+ breathability: 4,
227
+ durability: 6,
228
+ warmth: 8,
229
+ washing: "Air hangat kuku. Gunakan pelembut untuk mengurangi listrik statis.",
230
+ drying: "Di jemur. Panas akan merusak bentuk pakaian secara permanen.",
231
+ ironing: "Jangan disetrika",
232
+ donts: ["Pelembut (merusak serat jika lama)", "Diperas kuat", "Panas"],
233
+ sos: "Kehilangan elastisitas? Hal ini tidak bisa diperbaiki (serat sudah putus).",
234
+ icon: "mdi:resize",
235
+ color: "#450A0A",
236
+ maxTemp: "30°C",
237
+ isNoble: false,
238
+ },
239
+ },
240
+ },
241
+ seo: [
242
+ { type: 'title', text: 'Penguasaan Perawatan Tekstil: Panduan Ilmiah untuk Memperpanjang Umur Pakaian Anda', level: 2 },
243
+ { type: 'paragraph', html: 'Berapa banyak pakaian yang telah Anda rusak tanpa sadar? Penyusutan wol yang tidak disengaja, pudarnya warna pada katun, atau noda sutra yang tidak pernah hilang. Kebanyakan orang mencuci pakaian tanpa memahami bahwa setiap serat memiliki kebutuhan spesifik.' },
244
+ { type: 'paragraph', html: '<strong>Panduan Mencuci Tekstil</strong> kami menyediakan instruksi ilmiah berdasarkan komposisi asli pakaian Anda. Ini bukan instruksi umum; ini spesifik. Ini bukan sekadar saran; ini sains.' },
245
+ { type: 'title', text: 'Mengapa Metode Tradisional Gagal', level: 2 },
246
+ { type: 'paragraph', html: 'Nenek Anda mungkin mencuci segalanya dengan air panas dan sabun yang kuat. Itu berhasil untuk seprai katun tebal tahun 50-an, tetapi dunia tekstil telah berubah. Serat modern - mulai dari <strong>Lyocell</strong> hingga <strong>Elastane</strong> - memerlukan protokol yang sangat berbeda.' },
247
+ { type: 'list', items: ['<strong>Katun</strong> menoleransi air panas tetapi membutuhkan siklus lembut untuk menghindari penyusutan.', '<strong>Sutra</strong> rapuh pada suhu di atas 30°C dan membutuhkan air suling.', '<strong>Wol</strong> bisa terasa keras seperti batu jika dicuci dengan mesin standar.', '<strong>Sintetis</strong> tidak butuh banyak perawatan, tetapi menghasilkan listrik statis dan mudah berbola serat.'] },
248
+ { type: 'title', text: 'Protokol Berdasarkan Jenis Serat', level: 2 },
249
+ { type: 'title', text: 'Katun: Si Tahan Banting', level: 3 },
250
+ { type: 'paragraph', html: 'Katun sangat pemaaf. Bisa menahan air pada suhu 40-60°C tanpa masalah. Musuh aslinya adalah klorin (yang melemahkan serat) dan pengeringan mesin suhu tinggi (yang menyebabkan penyusutan permanen). Aturannya: selalu cuci secara terbalik untuk menjaga warna.' },
251
+ { type: 'title', text: 'Sutra: Si Diva', level: 3 },
252
+ { type: 'paragraph', html: 'Sutra butuh air dingin (maks 30°C), deterjen lembut, dan pembilasan air suling jika memungkinkan. Masalahnya: mineral dalam air keran meninggalkan endapan yang membuat sutra tampak kusam dan kasar. Solusinya sederhana: gunakan air suling pada bilasan terakhir.' },
253
+ { type: 'title', text: 'Wol: Si Halus', level: 3 },
254
+ { type: 'paragraph', html: 'Wol adalah protein, seperti rambut Anda. Cuci pada suhu maks 30°C dengan deterjen khusus wol. Jangan pernah gunakan siklus standar: putaran mesin akan membuatnya menyusut secara ireversibel. Aturan emas: selalu jemur mendatar (dry flat), jangan pernah digantung (bisa melar).' },
255
+ { type: 'title', text: 'Sintetis: Si Mudah', level: 3 },
256
+ { type: 'paragraph', html: 'Poliester, akrilik, dan nilon sangat tahan lama. Bisa menahan air pada suhu 40°C tanpa masalah. Satu-satunya musuh adalah listrik statis. Triknya: tambahkan pelembut pakaian atau gunakan dryer sheet di mesin pengering.' },
257
+ { type: 'title', text: 'Kenyataan Pahit Tentang Pengeringan', level: 2 },
258
+ { type: 'paragraph', html: '90% kerusakan pakaian terjadi selama pengeringan, bukan pencucian. Inilah alasannya:' },
259
+ { type: 'card', title: 'Serat di Filter Mesin', icon: 'mdi:alert', html: 'Serat halus yang Anda lihat di filter adalah <strong>serat yang lepas</strong> dari pakaian Anda. Setiap siklus pengeringan menghancurkan sedikit demi sedikit. Sintetis lebih buruk: akan berbola serat dalam hitungan minggu.' },
260
+ { type: 'card', title: 'Penyusutan Diam diam', icon: 'mdi:warning', html: 'Panas dari mesin pengering menyusutkan sebagian besar serat alami secara permanen. Pakaian yang menyusut 5% dalam sekali pengeringan tidak akan pernah kembali ke ukuran aslinya.' },
261
+ { type: 'tip', title: 'Praktik Pengeringan Terbaik', html: 'Jemur di udara terbuka sebisa mungkin. Jika harus menggunakan mesin pengering, gunakan suhu rendah dan keluarkan pakaian saat masih agak lembap.' },
262
+ { type: 'title', text: 'Noda: Panduan Bertahan Hidup', level: 2 },
263
+ { type: 'paragraph', html: 'Setiap serat bereaksi berbeda terhadap bahan kimia. Noda anggur pada katun ditangani dengan air dingin; pada sutra, Anda butuh air suling dan kain sutra murni. Berikut adalah protokol dasarnya:' },
264
+ { type: 'list', items: ['<strong>Lemak:</strong> Gunakan sabun kering (dry soap) sebelum cuci. Jangan gunakan air panas (akan memantapkan noda).', '<strong>Tinta/Pulpen:</strong> Alkohol isopropil untuk sintetis; air dingin untuk alami.', '<strong>Darah:</strong> SELALU air dingin. Panas akan memantapkannya secara permanen.', '<strong>Anggur/Minuman:</strong> Air dingin segera, diikuti garam untuk menyerap.'] },
265
+ { type: 'paragraph', html: '"Beli lebih sedikit, pilih lebih baik, dan buatlah awet." Pakaian yang dirawat dengan baik bisa bertahan puluhan tahun. Pakaian yang disalahartikan, hanya bertahan berbulan-bulan.' },
266
+ ],
267
+ faq: faqData,
268
+ bibliography: bibliography,
269
+ howTo: howToData,
270
+ schemas: [faqSchema, howToSchema, appSchema],
271
+ };