@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,296 +1,296 @@
1
- import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
- import type { ToolLocaleContent } from '../../../types';
3
- import { bibliography } from '../bibliography';
4
- import type { YarnCalculatorUI } from '../ui';
5
-
6
- const slug = 'garnkalkylator-stickning-virkning';
7
- const title = 'Garnkalkylator: Hur många meter och nystan behöver jag?';
8
- const description =
9
- 'Beräkna noggrant mängden garn som behövs för dina sticknings- och virkningsprojekt baserat på mönster och storlek.';
10
-
11
- const faqData = [
12
- {
13
- question: 'Varför drar virkning mer garn än stickning?',
14
- answer:
15
- 'Virkning bygger på att skapa knutar och överlappande öglor, vilket skapar ett tätare och tjockare tyg per kvadratcentimeter. I genomsnitt förbrukar ett virkprojekt mellan 25% och 35% mer garn än samma projekt stickat med två stickor (rätstickning).',
16
- },
17
- {
18
- question: 'Vad händer om jag köper garn från olika färgbadsnummer (Dye Lot)?',
19
- answer:
20
- 'Även om färgen ser identisk ut i butiken kan små kemiska variationer under färgningen skapa synliga ränder i det färdiga plagget. Det rekommenderas starkt att köpa allt garn på en gång och kontrollera att färgbadsnumret är detsamma.',
21
- },
22
- {
23
- question: 'Hur påverkar stickfastheten (gauge) den slutliga förbrukningen?',
24
- answer:
25
- 'Om du stickar löst drar varje maska fler meter garn. Om din stickfasthet är större än vad mönstret anger (t.ex. 13 maskor istället för 15), kommer din garnåtgång att öka väsentligt. Det är livsviktigt att sticka en provlapp först.',
26
- },
27
- {
28
- question: 'Hur beräknar jag meter om jag bara har nystanets vikt?',
29
- answer:
30
- 'Utan uppgift om meteryta är det svårt. De flesta nystan anger meter på etiketten. Om de inte gör det, sök på garnets namn i databaser som Ravelry för att hitta den exakta längden per 50g eller 100g.',
31
- },
32
- ];
33
-
34
- const howToData = [
35
- {
36
- name: 'Välj projekt',
37
- text: 'Välj mellan tröja, halsduk, mössa, sockor eller filt för att ladda specifika förbrukningsdata.',
38
- },
39
- {
40
- name: 'Definiera storlek och tjocklek',
41
- text: 'Ange slutliga mått (S, M, L, XL) och tjockleken på garnet du ska använda (Fingering, DK, Worsted, Bulky).',
42
- },
43
- {
44
- name: 'Aktivera multiplikatorer',
45
- text: 'Om ditt mönster har flätor eller komplexa strukturer, aktivera struktur-switchen för att lägga till det nödvändiga tillägget.',
46
- },
47
- {
48
- name: 'Få inköpslistan',
49
- text: 'Skriv in meter per nystan för ditt valda garn för att se exakt hur många enheter du behöver lägga i kundvagnen.',
50
- },
51
- ];
52
-
53
- const faqSchema: WithContext<FAQPage> = {
54
- '@context': 'https://schema.org',
55
- '@type': 'FAQPage',
56
- mainEntity: faqData.map((item) => ({
57
- '@type': 'Question',
58
- name: item.question,
59
- acceptedAnswer: { '@type': 'Answer', text: item.answer },
60
- })),
61
- };
62
-
63
- const howToSchema: WithContext<HowTo> = {
64
- '@context': 'https://schema.org',
65
- '@type': 'HowTo',
66
- name: title,
67
- description,
68
- step: howToData.map((step) => ({
69
- '@type': 'HowToStep',
70
- name: step.name,
71
- text: step.text,
72
- })),
73
- };
74
-
75
- const appSchema: WithContext<SoftwareApplication> = {
76
- '@context': 'https://schema.org',
77
- '@type': 'SoftwareApplication',
78
- name: title,
79
- description,
80
- applicationCategory: 'UtilityApplication',
81
- operatingSystem: 'All',
82
- offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
83
- inLanguage: 'sv',
84
- };
85
-
86
- export const content: ToolLocaleContent<YarnCalculatorUI> = {
87
- slug,
88
- title,
89
- description,
90
- faq: faqData,
91
- bibliography: bibliography,
92
- howTo: howToData,
93
- schemas: [faqSchema, howToSchema, appSchema],
94
- seo: [
95
- {
96
- type: 'title',
97
- text: 'Garnåtgångsguide: Hur man beräknar meter och nystan för dina projekt',
98
- level: 2,
99
- },
100
- {
101
- type: 'paragraph',
102
- html: 'Bemästra handarbetets logistik och undvik att garnet tar slut med vår tekniska precisionskalkylator för stickning och virkning. En av de största rädslorna hos någon som stickar är <strong>"Yarn Chicken"</strong>: det där kritiska ögonblicket i slutet av ett projekt när det verkar som att tråden ska ta slut innan de sista maskorna är avmaskade. Denna kalkylator har utvecklats för att erbjuda uppskattningar baserade på branschstandarder för meteryta och vikt.',
103
- },
104
- {
105
- type: 'stats',
106
- items: [
107
- { value: '+10%', label: 'Säkerhetsmarginal', icon: 'mdi:security' },
108
- { value: 'Metrisk', label: 'Beräkning i Meter', icon: 'mdi:ruler' },
109
- { value: 'Offline', label: 'Lokal Databas', icon: 'mdi:wifi-off' },
110
- ],
111
- columns: 3,
112
- },
113
- {
114
- type: 'title',
115
- text: 'Varför vikten på nystan är missledande',
116
- level: 3,
117
- },
118
- {
119
- type: 'paragraph',
120
- html: 'Många nybörjare gör misstaget att köpa garn baserat enbart på vikt (t.ex. "6 nystan på 100g"). Vikt är dock en enhet för massa, inte längd. Två garner som väger 100g kan ha radikalt olika längder: ett <strong>Bulky-garn</strong> kan bara ha 80 meter, medan ett <strong>Fingering / Lace</strong> kan överstiga 450 meter vid samma vikt.',
121
- },
122
- {
123
- type: 'paragraph',
124
- html: 'Därför prioriterar vår kalkylator alltid <strong>totala meter</strong>. När du väl vet den längd som krävs för din storlek och ditt projekt kan du dela den med den meterlängd som anges på etiketten för ditt specifika garn för att få det exakta antalet nystan du bör köpa.',
125
- },
126
- {
127
- type: 'title',
128
- text: 'Tabell över Standardmeterytor per Tjocklek',
129
- level: 3,
130
- },
131
- {
132
- type: 'paragraph',
133
- html: 'Om du inte har etiketten till hands kan du använda dessa referensmeter (per 100g fiber) för dina uppskattningar:',
134
- },
135
- {
136
- type: 'table',
137
- headers: ['Tjocklek (Weight)', 'Meter ca / 100g', 'Rekommenderad Användning', 'Föreslagna Stickor'],
138
- rows: [
139
- ['<strong>Lace / 0</strong>', '600 - 900m', 'Spetssjalar, hålmönster', '1.5 - 2.5mm'],
140
- ['<strong>Fingering / 1</strong>', '360 - 450m', 'Sockor, babykläder', '2.25 - 3.25mm'],
141
- ['<strong>Sport / 2</strong>', '270 - 320m', 'Lätta jackor', '3.25 - 3.75mm'],
142
- ['<strong>DK / 3</strong>', '200 - 250m', 'Tröjor, mössor', '3.75 - 4.5mm'],
143
- ['<strong>Worsted / 4</strong>', '180 - 220m', 'Filtar, kappor', '4.5 - 5.5mm'],
144
- ['<strong>Bulky / 5</strong>', '100 - 140m', 'XXL-halsdukar, filtar', '6.0 - 8.0mm'],
145
- ],
146
- },
147
- {
148
- type: 'tip',
149
- title: 'Faktorn Stickfasthet (Gauge)',
150
- html: '<p>Kom ihåg att om du stickar mycket löst blir dina maskor större och drar mer tråd än om du stickar fast. Vår kalkylator tillämpar en säkerhetsmarginal, men om du vet att din stickfasthet är extremt lös bör du överväga att lägga till 5-10% extra på resultaten för att undvika överraskningar.</p>',
151
- },
152
- {
153
- type: 'title',
154
- text: 'Variabler som ökar garnförbrukningen',
155
- level: 3,
156
- },
157
- {
158
- type: 'paragraph',
159
- html: 'Inte alla maskor drar samma mängd fiber. När du väljer din design bör du ta hänsyn till dessa multiplikatorfaktorer:',
160
- },
161
- {
162
- type: 'comparative',
163
- items: [
164
- {
165
- title: 'Slätstickning / Jersey',
166
- description: 'Representerar basförbrukningen och maximal garneffektivitet för alla plagg.',
167
- icon: 'mdi:minus-circle-outline',
168
- points: ['Idealisk för nybörjare', 'Naturligt fall i tyget'],
169
- },
170
- {
171
- title: 'Flätor / Struktur',
172
- description: 'Korsning av fibrer "förkortar" stycket, vilket ökar förbrukningen med ca 25%.',
173
- icon: 'mdi:texture-box',
174
- points: ['Kräver fler meter', 'Tätare och tyngre tyg'],
175
- pointIcon: 'mdi:alert-circle-outline',
176
- },
177
- {
178
- title: 'Virkning (Crochet)',
179
- description: 'Virkade knutar drar ca 30% mer garn än stickning.',
180
- icon: 'mdi:hook',
181
- points: ['Garnet går åt snabbare', 'Tredimensionell textur'],
182
- pointIcon: 'mdi:alert-circle-outline',
183
- },
184
- {
185
- title: 'Resårstickning',
186
- description: 'Strukturen med räta/aviga samlar mer ull per kvadratcentimeter.',
187
- icon: 'mdi:unfold-more-horizontal',
188
- points: ['Mellanförbrukning (+15%)', 'Hög elasticitet'],
189
- },
190
- ],
191
- columns: 2,
192
- },
193
- {
194
- type: 'title',
195
- text: 'Ordlista för den Förutseende Handarbetaren',
196
- level: 3,
197
- },
198
- {
199
- type: 'glossary',
200
- items: [
201
- {
202
- term: 'Dye Lot (Färgbadsnummer)',
203
- definition:
204
- 'Nummer som identifierar det färgbad som garnet färgades i. Olika bad kan ha färgvariationer som är osynliga i nystanet men mycket synliga i det färdiga plagget.',
205
- },
206
- {
207
- term: 'Stash (Garnförråd)',
208
- definition:
209
- 'En handarbetares personliga samling av garner. Att veta vikten på restgarner utan etikett är viktigt för att beräkna små projekt.',
210
- },
211
- {
212
- term: 'Uppläggning',
213
- definition:
214
- 'Sättet som garnet presenteras på (härva, nystan eller kon), vilket påverkar om det behöver nystas innan användning.',
215
- },
216
- {
217
- term: 'Yarn Chicken',
218
- definition:
219
- 'Utmaningen i att försöka avsluta en sektion med en mängd garn som verkar otillräcklig.',
220
- },
221
- ],
222
- },
223
- {
224
- type: 'title',
225
- text: 'Hur man använder resultaten från kalkylatorn',
226
- level: 3,
227
- },
228
- {
229
- type: 'paragraph',
230
- html: 'När verktyget har gett dig antalet meter och nystan rekommenderar vi att du utför följande manuella verifieringssteg:',
231
- },
232
- {
233
- type: 'list',
234
- items: [
235
- '<strong>Kontrollera meterytan på ditt faktiska nystan:</strong> Inte alla 100g nystan har 200m. Verifiera detta på etiketten för att justera den slutliga beräkningen.',
236
- '<strong>Lägg till meter för detaljer:</strong> Om du ska lägga till fransar på en halsduk eller tofsar på en mössa, lägg till 50-80 meter extra till totalen.',
237
- '<strong>Provlapp:</strong> Sticka en kvadrat på 10x10 cm. Väg den på en precisionsvåg. Om den väger 20g och din filt är 100x100 (100 kvadrater), behöver du exakt 2kg garn.',
238
- '<strong>Köp alltid från samma färgbad:</strong> Om beräkningen säger 7 nystan, köp 8 om de är från olika bad för att ha marginal för sömmar.',
239
- ],
240
- },
241
- {
242
- type: 'summary',
243
- title: 'Strategiska Råd för Inköp av Garn',
244
- items: [
245
- 'Prioritera meter framför gram för att säkerställa den längd som behövs.',
246
- 'Virkning drar betydligt mer garn än stickning; justera typsvittchen.',
247
- 'Täta strukturer (flätor) kräver en ökning med 25% i garnbudgeten.',
248
- 'Spara alltid en etikett från varje färgbad om du behöver beställa mer av samma färg.',
249
- 'Använd 10% säkerhetsmarginal för att sticka den obligatoriska provlappen.',
250
- ],
251
- },
252
- ],
253
- ui: {
254
- sectionProject: '1. TYP AV PROJEKT',
255
- sectionSize: '2. DIMENSIONER / STORLEK',
256
- sectionWeight: '3. GARNTJOCKLEK',
257
- sectionPattern: '4. MÖNSTEREGENSKAPER',
258
- sectionBall: '5. NYSTAN-DATA',
259
- labelCables: 'Flätor eller täta strukturer?',
260
- labelGrams: 'GRAM / NYSTAN',
261
- labelMeters: 'METER / NYSTAN',
262
- weightFine: 'Fint',
263
- weightMedium: 'Medium',
264
- weightThick: 'Tjockt',
265
- weightXXL: 'XXL',
266
- projectSweater: 'TRÖJA',
267
- projectScarf: 'HALSDUK',
268
- projectHat: 'MÖSSA',
269
- projectSocks: 'SOCKOR',
270
- projectBlanket: 'FILT',
271
- projectCardigan: 'KOFTA',
272
- statPrefix: 'BERÄKNAD TOTALFÖRBRUKNING',
273
- statSuffix: 'M',
274
- statNote: 'Slutliga meter beräknat med 10% reservlager.',
275
- ballsFormatSingular: 'Köp {n} nystan',
276
- ballsFormatPlural: 'Kup {n} nystan',
277
- ballsDetailFormat: 'Nystan på {w}g / {m}m vardera.',
278
- alertTitle: 'Strategisk säkerhet:',
279
- alertText:
280
- 'Denna beräkning garanterar att garnet inte tar slut. Kom ihåg att kontrollera färgbadsnumret (dye lot) när du köper dina nystan.',
281
- schemeSleeveLabel: 'Ärmar',
282
- schemeSleeveEach: 'st',
283
- schemeBodyLabel: 'Bål',
284
- schemeTotalHat: 'Totalt Mössa',
285
- schemeTotalFlat: 'Totalt Stycke',
286
- schemeTotalSocks: 'Totalt Par',
287
- sizeLabels: {
288
- sweater: ['S', 'M', 'L', 'XL'],
289
- cardigan: ['S', 'M', 'L', 'XL'],
290
- hat: ['Barn', 'S', 'M', 'L'],
291
- scarf: ['Mini', 'M', 'Stor', 'Maxi'],
292
- socks: ['Barn', 'Vux S', 'Vux M', 'Vux L'],
293
- blanket: ['Baby', 'Soffa', 'Säng 90', 'Säng 150'],
294
- },
295
- },
296
- };
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import { bibliography } from '../bibliography';
4
+ import type { YarnCalculatorUI } from '../ui';
5
+
6
+ const slug = 'garnkalkylator-stickning-virkning';
7
+ const title = 'Garnkalkylator: Hur många meter och nystan behöver jag?';
8
+ const description =
9
+ 'Beräkna noggrant mängden garn som behövs för dina sticknings- och virkningsprojekt baserat på mönster och storlek.';
10
+
11
+ const faqData = [
12
+ {
13
+ question: 'Varför drar virkning mer garn än stickning?',
14
+ answer:
15
+ 'Virkning bygger på att skapa knutar och överlappande öglor, vilket skapar ett tätare och tjockare tyg per kvadratcentimeter. I genomsnitt förbrukar ett virkprojekt mellan 25% och 35% mer garn än samma projekt stickat med två stickor (rätstickning).',
16
+ },
17
+ {
18
+ question: 'Vad händer om jag köper garn från olika färgbadsnummer (Dye Lot)?',
19
+ answer:
20
+ 'Även om färgen ser identisk ut i butiken kan små kemiska variationer under färgningen skapa synliga ränder i det färdiga plagget. Det rekommenderas starkt att köpa allt garn på en gång och kontrollera att färgbadsnumret är detsamma.',
21
+ },
22
+ {
23
+ question: 'Hur påverkar stickfastheten (gauge) den slutliga förbrukningen?',
24
+ answer:
25
+ 'Om du stickar löst drar varje maska fler meter garn. Om din stickfasthet är större än vad mönstret anger (t.ex. 13 maskor istället för 15), kommer din garnåtgång att öka väsentligt. Det är livsviktigt att sticka en provlapp först.',
26
+ },
27
+ {
28
+ question: 'Hur beräknar jag meter om jag bara har nystanets vikt?',
29
+ answer:
30
+ 'Utan uppgift om meteryta är det svårt. De flesta nystan anger meter på etiketten. Om de inte gör det, sök på garnets namn i databaser som Ravelry för att hitta den exakta längden per 50g eller 100g.',
31
+ },
32
+ ];
33
+
34
+ const howToData = [
35
+ {
36
+ name: 'Välj projekt',
37
+ text: 'Välj mellan tröja, halsduk, mössa, sockor eller filt för att ladda specifika förbrukningsdata.',
38
+ },
39
+ {
40
+ name: 'Definiera storlek och tjocklek',
41
+ text: 'Ange slutliga mått (S, M, L, XL) och tjockleken på garnet du ska använda (Fingering, DK, Worsted, Bulky).',
42
+ },
43
+ {
44
+ name: 'Aktivera multiplikatorer',
45
+ text: 'Om ditt mönster har flätor eller komplexa strukturer, aktivera struktur-switchen för att lägga till det nödvändiga tillägget.',
46
+ },
47
+ {
48
+ name: 'Få inköpslistan',
49
+ text: 'Skriv in meter per nystan för ditt valda garn för att se exakt hur många enheter du behöver lägga i kundvagnen.',
50
+ },
51
+ ];
52
+
53
+ const faqSchema: WithContext<FAQPage> = {
54
+ '@context': 'https://schema.org',
55
+ '@type': 'FAQPage',
56
+ mainEntity: faqData.map((item) => ({
57
+ '@type': 'Question',
58
+ name: item.question,
59
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
60
+ })),
61
+ };
62
+
63
+ const howToSchema: WithContext<HowTo> = {
64
+ '@context': 'https://schema.org',
65
+ '@type': 'HowTo',
66
+ name: title,
67
+ description,
68
+ step: howToData.map((step) => ({
69
+ '@type': 'HowToStep',
70
+ name: step.name,
71
+ text: step.text,
72
+ })),
73
+ };
74
+
75
+ const appSchema: WithContext<SoftwareApplication> = {
76
+ '@context': 'https://schema.org',
77
+ '@type': 'SoftwareApplication',
78
+ name: title,
79
+ description,
80
+ applicationCategory: 'UtilityApplication',
81
+ operatingSystem: 'All',
82
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
83
+ inLanguage: 'sv',
84
+ };
85
+
86
+ export const content: ToolLocaleContent<YarnCalculatorUI> = {
87
+ slug,
88
+ title,
89
+ description,
90
+ faq: faqData,
91
+ bibliography: bibliography,
92
+ howTo: howToData,
93
+ schemas: [faqSchema, howToSchema, appSchema],
94
+ seo: [
95
+ {
96
+ type: 'title',
97
+ text: 'Garnåtgångsguide: Hur man beräknar meter och nystan för dina projekt',
98
+ level: 2,
99
+ },
100
+ {
101
+ type: 'paragraph',
102
+ html: 'Bemästra handarbetets logistik och undvik att garnet tar slut med vår tekniska precisionskalkylator för stickning och virkning. En av de största rädslorna hos någon som stickar är <strong>"Yarn Chicken"</strong>: det där kritiska ögonblicket i slutet av ett projekt när det verkar som att tråden ska ta slut innan de sista maskorna är avmaskade. Denna kalkylator har utvecklats för att erbjuda uppskattningar baserade på branschstandarder för meteryta och vikt.',
103
+ },
104
+ {
105
+ type: 'stats',
106
+ items: [
107
+ { value: '+10%', label: 'Säkerhetsmarginal', icon: 'mdi:security' },
108
+ { value: 'Metrisk', label: 'Beräkning i Meter', icon: 'mdi:ruler' },
109
+ { value: 'Offline', label: 'Lokal Databas', icon: 'mdi:wifi-off' },
110
+ ],
111
+ columns: 3,
112
+ },
113
+ {
114
+ type: 'title',
115
+ text: 'Varför vikten på nystan är missledande',
116
+ level: 3,
117
+ },
118
+ {
119
+ type: 'paragraph',
120
+ html: 'Många nybörjare gör misstaget att köpa garn baserat enbart på vikt (t.ex. "6 nystan på 100g"). Vikt är dock en enhet för massa, inte längd. Två garner som väger 100g kan ha radikalt olika längder: ett <strong>Bulky-garn</strong> kan bara ha 80 meter, medan ett <strong>Fingering / Lace</strong> kan överstiga 450 meter vid samma vikt.',
121
+ },
122
+ {
123
+ type: 'paragraph',
124
+ html: 'Därför prioriterar vår kalkylator alltid <strong>totala meter</strong>. När du väl vet den längd som krävs för din storlek och ditt projekt kan du dela den med den meterlängd som anges på etiketten för ditt specifika garn för att få det exakta antalet nystan du bör köpa.',
125
+ },
126
+ {
127
+ type: 'title',
128
+ text: 'Tabell över Standardmeterytor per Tjocklek',
129
+ level: 3,
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'Om du inte har etiketten till hands kan du använda dessa referensmeter (per 100g fiber) för dina uppskattningar:',
134
+ },
135
+ {
136
+ type: 'table',
137
+ headers: ['Tjocklek (Weight)', 'Meter ca / 100g', 'Rekommenderad Användning', 'Föreslagna Stickor'],
138
+ rows: [
139
+ ['<strong>Lace / 0</strong>', '600 - 900m', 'Spetssjalar, hålmönster', '1.5 - 2.5mm'],
140
+ ['<strong>Fingering / 1</strong>', '360 - 450m', 'Sockor, babykläder', '2.25 - 3.25mm'],
141
+ ['<strong>Sport / 2</strong>', '270 - 320m', 'Lätta jackor', '3.25 - 3.75mm'],
142
+ ['<strong>DK / 3</strong>', '200 - 250m', 'Tröjor, mössor', '3.75 - 4.5mm'],
143
+ ['<strong>Worsted / 4</strong>', '180 - 220m', 'Filtar, kappor', '4.5 - 5.5mm'],
144
+ ['<strong>Bulky / 5</strong>', '100 - 140m', 'XXL-halsdukar, filtar', '6.0 - 8.0mm'],
145
+ ],
146
+ },
147
+ {
148
+ type: 'tip',
149
+ title: 'Faktorn Stickfasthet (Gauge)',
150
+ html: '<p>Kom ihåg att om du stickar mycket löst blir dina maskor större och drar mer tråd än om du stickar fast. Vår kalkylator tillämpar en säkerhetsmarginal, men om du vet att din stickfasthet är extremt lös bör du överväga att lägga till 5-10% extra på resultaten för att undvika överraskningar.</p>',
151
+ },
152
+ {
153
+ type: 'title',
154
+ text: 'Variabler som ökar garnförbrukningen',
155
+ level: 3,
156
+ },
157
+ {
158
+ type: 'paragraph',
159
+ html: 'Inte alla maskor drar samma mängd fiber. När du väljer din design bör du ta hänsyn till dessa multiplikatorfaktorer:',
160
+ },
161
+ {
162
+ type: 'comparative',
163
+ items: [
164
+ {
165
+ title: 'Slätstickning / Jersey',
166
+ description: 'Representerar basförbrukningen och maximal garneffektivitet för alla plagg.',
167
+ icon: 'mdi:minus-circle-outline',
168
+ points: ['Idealisk för nybörjare', 'Naturligt fall i tyget'],
169
+ },
170
+ {
171
+ title: 'Flätor / Struktur',
172
+ description: 'Korsning av fibrer "förkortar" stycket, vilket ökar förbrukningen med ca 25%.',
173
+ icon: 'mdi:texture-box',
174
+ points: ['Kräver fler meter', 'Tätare och tyngre tyg'],
175
+ pointIcon: 'mdi:alert-circle-outline',
176
+ },
177
+ {
178
+ title: 'Virkning (Crochet)',
179
+ description: 'Virkade knutar drar ca 30% mer garn än stickning.',
180
+ icon: 'mdi:hook',
181
+ points: ['Garnet går åt snabbare', 'Tredimensionell textur'],
182
+ pointIcon: 'mdi:alert-circle-outline',
183
+ },
184
+ {
185
+ title: 'Resårstickning',
186
+ description: 'Strukturen med räta/aviga samlar mer ull per kvadratcentimeter.',
187
+ icon: 'mdi:unfold-more-horizontal',
188
+ points: ['Mellanförbrukning (+15%)', 'Hög elasticitet'],
189
+ },
190
+ ],
191
+ columns: 2,
192
+ },
193
+ {
194
+ type: 'title',
195
+ text: 'Ordlista för den Förutseende Handarbetaren',
196
+ level: 3,
197
+ },
198
+ {
199
+ type: 'glossary',
200
+ items: [
201
+ {
202
+ term: 'Dye Lot (Färgbadsnummer)',
203
+ definition:
204
+ 'Nummer som identifierar det färgbad som garnet färgades i. Olika bad kan ha färgvariationer som är osynliga i nystanet men mycket synliga i det färdiga plagget.',
205
+ },
206
+ {
207
+ term: 'Stash (Garnförråd)',
208
+ definition:
209
+ 'En handarbetares personliga samling av garner. Att veta vikten på restgarner utan etikett är viktigt för att beräkna små projekt.',
210
+ },
211
+ {
212
+ term: 'Uppläggning',
213
+ definition:
214
+ 'Sättet som garnet presenteras på (härva, nystan eller kon), vilket påverkar om det behöver nystas innan användning.',
215
+ },
216
+ {
217
+ term: 'Yarn Chicken',
218
+ definition:
219
+ 'Utmaningen i att försöka avsluta en sektion med en mängd garn som verkar otillräcklig.',
220
+ },
221
+ ],
222
+ },
223
+ {
224
+ type: 'title',
225
+ text: 'Hur man använder resultaten från kalkylatorn',
226
+ level: 3,
227
+ },
228
+ {
229
+ type: 'paragraph',
230
+ html: 'När verktyget har gett dig antalet meter och nystan rekommenderar vi att du utför följande manuella verifieringssteg:',
231
+ },
232
+ {
233
+ type: 'list',
234
+ items: [
235
+ '<strong>Kontrollera meterytan på ditt faktiska nystan:</strong> Inte alla 100g nystan har 200m. Verifiera detta på etiketten för att justera den slutliga beräkningen.',
236
+ '<strong>Lägg till meter för detaljer:</strong> Om du ska lägga till fransar på en halsduk eller tofsar på en mössa, lägg till 50-80 meter extra till totalen.',
237
+ '<strong>Provlapp:</strong> Sticka en kvadrat på 10x10 cm. Väg den på en precisionsvåg. Om den väger 20g och din filt är 100x100 (100 kvadrater), behöver du exakt 2kg garn.',
238
+ '<strong>Köp alltid från samma färgbad:</strong> Om beräkningen säger 7 nystan, köp 8 om de är från olika bad för att ha marginal för sömmar.',
239
+ ],
240
+ },
241
+ {
242
+ type: 'summary',
243
+ title: 'Strategiska Råd för Inköp av Garn',
244
+ items: [
245
+ 'Prioritera meter framför gram för att säkerställa den längd som behövs.',
246
+ 'Virkning drar betydligt mer garn än stickning; justera typsvittchen.',
247
+ 'Täta strukturer (flätor) kräver en ökning med 25% i garnbudgeten.',
248
+ 'Spara alltid en etikett från varje färgbad om du behöver beställa mer av samma färg.',
249
+ 'Använd 10% säkerhetsmarginal för att sticka den obligatoriska provlappen.',
250
+ ],
251
+ },
252
+ ],
253
+ ui: {
254
+ sectionProject: '1. TYP AV PROJEKT',
255
+ sectionSize: '2. DIMENSIONER / STORLEK',
256
+ sectionWeight: '3. GARNTJOCKLEK',
257
+ sectionPattern: '4. MÖNSTEREGENSKAPER',
258
+ sectionBall: '5. NYSTAN-DATA',
259
+ labelCables: 'Flätor eller täta strukturer?',
260
+ labelGrams: 'GRAM / NYSTAN',
261
+ labelMeters: 'METER / NYSTAN',
262
+ weightFine: 'Fint',
263
+ weightMedium: 'Medium',
264
+ weightThick: 'Tjockt',
265
+ weightXXL: 'XXL',
266
+ projectSweater: 'TRÖJA',
267
+ projectScarf: 'HALSDUK',
268
+ projectHat: 'MÖSSA',
269
+ projectSocks: 'SOCKOR',
270
+ projectBlanket: 'FILT',
271
+ projectCardigan: 'KOFTA',
272
+ statPrefix: 'BERÄKNAD TOTALFÖRBRUKNING',
273
+ statSuffix: 'M',
274
+ statNote: 'Slutliga meter beräknat med 10% reservlager.',
275
+ ballsFormatSingular: 'Köp {n} nystan',
276
+ ballsFormatPlural: 'Kup {n} nystan',
277
+ ballsDetailFormat: 'Nystan på {w}g / {m}m vardera.',
278
+ alertTitle: 'Strategisk säkerhet:',
279
+ alertText:
280
+ 'Denna beräkning garanterar att garnet inte tar slut. Kom ihåg att kontrollera färgbadsnumret (dye lot) när du köper dina nystan.',
281
+ schemeSleeveLabel: 'Ärmar',
282
+ schemeSleeveEach: 'st',
283
+ schemeBodyLabel: 'Bål',
284
+ schemeTotalHat: 'Totalt Mössa',
285
+ schemeTotalFlat: 'Totalt Stycke',
286
+ schemeTotalSocks: 'Totalt Par',
287
+ sizeLabels: {
288
+ sweater: ['S', 'M', 'L', 'XL'],
289
+ cardigan: ['S', 'M', 'L', 'XL'],
290
+ hat: ['Barn', 'S', 'M', 'L'],
291
+ scarf: ['Mini', 'M', 'Stor', 'Maxi'],
292
+ socks: ['Barn', 'Vux S', 'Vux M', 'Vux L'],
293
+ blanket: ['Baby', 'Soffa', 'Säng 90', 'Säng 150'],
294
+ },
295
+ },
296
+ };