@jjlmoya/utils-textiles 1.21.0 → 1.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (213) hide show
  1. package/package.json +2 -2
  2. package/src/category/i18n/de.ts +76 -76
  3. package/src/category/i18n/en.ts +76 -76
  4. package/src/category/i18n/es.ts +76 -76
  5. package/src/category/i18n/fr.ts +76 -76
  6. package/src/category/i18n/id.ts +76 -76
  7. package/src/category/i18n/it.ts +76 -76
  8. package/src/category/i18n/ja.ts +76 -76
  9. package/src/category/i18n/ko.ts +76 -76
  10. package/src/category/i18n/nl.ts +76 -76
  11. package/src/category/i18n/pl.ts +76 -76
  12. package/src/category/i18n/pt.ts +76 -76
  13. package/src/category/i18n/ru.ts +76 -76
  14. package/src/category/i18n/sv.ts +76 -76
  15. package/src/category/i18n/zh.ts +76 -76
  16. package/src/category/index.ts +2 -0
  17. package/src/category/seo.astro +1 -1
  18. package/src/components/PreviewNavSidebar.astro +1 -1
  19. package/src/components/PreviewToolbar.astro +1 -1
  20. package/src/data.ts +1 -1
  21. package/src/entries.ts +4 -1
  22. package/src/env.d.ts +1 -1
  23. package/src/index.ts +1 -1
  24. package/src/layouts/PreviewLayout.astro +113 -113
  25. package/src/pages/index.astro +1 -1
  26. package/src/tests/bibliography_wellformed_export.test.ts +46 -0
  27. package/src/tests/category_seo_quality.test.ts +74 -0
  28. package/src/tests/faq_count.test.ts +19 -19
  29. package/src/tests/i18n_coverage.test.ts +4 -2
  30. package/src/tests/locale_spelling.test.ts +44 -0
  31. package/src/tests/mocks/astro_mock.js +1 -1
  32. package/src/tests/no_en_dash.test.ts +70 -70
  33. package/src/tests/no_h1_in_components.test.ts +1 -1
  34. package/src/tests/seo_length.test.ts +22 -22
  35. package/src/tests/seo_parity.test.ts +2 -2
  36. package/src/tests/seo_translation_completeness.test.ts +69 -0
  37. package/src/tests/seo_wellformed_export.test.ts +65 -0
  38. package/src/tests/spanish_leakage.test.ts +175 -175
  39. package/src/tests/tool_validation.test.ts +17 -17
  40. package/src/tool/burnTest/i18n/es.ts +211 -211
  41. package/src/tool/burnTest/i18n/fr.ts +211 -211
  42. package/src/tool/burnTest/i18n/ja.ts +211 -211
  43. package/src/tool/burnTest/i18n/ko.ts +211 -211
  44. package/src/tool/burnTest/i18n/pl.ts +211 -211
  45. package/src/tool/burnTest/i18n/ru.ts +211 -211
  46. package/src/tool/burnTest/i18n/sv.ts +211 -211
  47. package/src/tool/burnTest/i18n/zh.ts +211 -211
  48. package/src/tool/burnTest/seo.astro +15 -15
  49. package/src/tool/clothingSizeConverter/i18n/de.ts +348 -348
  50. package/src/tool/clothingSizeConverter/i18n/en.ts +348 -348
  51. package/src/tool/clothingSizeConverter/i18n/fr.ts +348 -348
  52. package/src/tool/clothingSizeConverter/i18n/ja.ts +348 -348
  53. package/src/tool/clothingSizeConverter/i18n/ko.ts +348 -348
  54. package/src/tool/clothingSizeConverter/i18n/nl.ts +348 -348
  55. package/src/tool/clothingSizeConverter/i18n/pl.ts +348 -348
  56. package/src/tool/clothingSizeConverter/i18n/ru.ts +348 -348
  57. package/src/tool/clothingSizeConverter/i18n/sv.ts +348 -348
  58. package/src/tool/clothingSizeConverter/i18n/tr.ts +348 -348
  59. package/src/tool/clothingSizeConverter/i18n/zh.ts +348 -348
  60. package/src/tool/clothingSizeConverter/seo.astro +15 -15
  61. package/src/tool/embroideryStitchPricingEstimator/bibliography.astro +6 -0
  62. package/src/tool/embroideryStitchPricingEstimator/bibliography.ts +12 -0
  63. package/src/tool/embroideryStitchPricingEstimator/component.astro +111 -0
  64. package/src/tool/embroideryStitchPricingEstimator/controller.ts +111 -0
  65. package/src/tool/embroideryStitchPricingEstimator/dom-views.ts +94 -0
  66. package/src/tool/embroideryStitchPricingEstimator/embroidery-stitch-count-pricing-estimator.css +438 -0
  67. package/src/tool/embroideryStitchPricingEstimator/entry.ts +29 -0
  68. package/src/tool/embroideryStitchPricingEstimator/evaluator.ts +22 -0
  69. package/src/tool/embroideryStitchPricingEstimator/i18n/de.ts +38 -0
  70. package/src/tool/embroideryStitchPricingEstimator/i18n/en.ts +194 -0
  71. package/src/tool/embroideryStitchPricingEstimator/i18n/es.ts +38 -0
  72. package/src/tool/embroideryStitchPricingEstimator/i18n/fr.ts +38 -0
  73. package/src/tool/embroideryStitchPricingEstimator/i18n/id.ts +38 -0
  74. package/src/tool/embroideryStitchPricingEstimator/i18n/it.ts +38 -0
  75. package/src/tool/embroideryStitchPricingEstimator/i18n/ja.ts +38 -0
  76. package/src/tool/embroideryStitchPricingEstimator/i18n/ko.ts +38 -0
  77. package/src/tool/embroideryStitchPricingEstimator/i18n/nl.ts +38 -0
  78. package/src/tool/embroideryStitchPricingEstimator/i18n/pl.ts +38 -0
  79. package/src/tool/embroideryStitchPricingEstimator/i18n/pt.ts +38 -0
  80. package/src/tool/embroideryStitchPricingEstimator/i18n/ru.ts +38 -0
  81. package/src/tool/embroideryStitchPricingEstimator/i18n/sv.ts +38 -0
  82. package/src/tool/embroideryStitchPricingEstimator/i18n/tr.ts +38 -0
  83. package/src/tool/embroideryStitchPricingEstimator/i18n/zh.ts +38 -0
  84. package/src/tool/embroideryStitchPricingEstimator/index.ts +11 -0
  85. package/src/tool/embroideryStitchPricingEstimator/logic.test.ts +40 -0
  86. package/src/tool/embroideryStitchPricingEstimator/logic.ts +86 -0
  87. package/src/tool/embroideryStitchPricingEstimator/seo.astro +15 -0
  88. package/src/tool/embroideryStitchPricingEstimator/storage.ts +20 -0
  89. package/src/tool/embroideryStitchPricingEstimator/ui.ts +53 -0
  90. package/src/tool/fabricProjectCalculator/i18n/de.ts +236 -236
  91. package/src/tool/fabricProjectCalculator/i18n/ja.ts +236 -236
  92. package/src/tool/fabricProjectCalculator/i18n/ko.ts +236 -236
  93. package/src/tool/fabricProjectCalculator/i18n/nl.ts +236 -236
  94. package/src/tool/fabricProjectCalculator/i18n/pl.ts +236 -236
  95. package/src/tool/fabricProjectCalculator/i18n/ru.ts +236 -236
  96. package/src/tool/fabricProjectCalculator/i18n/sv.ts +236 -236
  97. package/src/tool/fabricProjectCalculator/i18n/tr.ts +236 -236
  98. package/src/tool/fabricProjectCalculator/i18n/zh.ts +236 -236
  99. package/src/tool/fabricProjectCalculator/seo.astro +15 -15
  100. package/src/tool/fabricTruth/i18n/de.ts +268 -268
  101. package/src/tool/fabricTruth/i18n/en.ts +268 -268
  102. package/src/tool/fabricTruth/i18n/es.ts +302 -302
  103. package/src/tool/fabricTruth/i18n/fr.ts +268 -268
  104. package/src/tool/fabricTruth/i18n/id.ts +268 -268
  105. package/src/tool/fabricTruth/i18n/it.ts +268 -268
  106. package/src/tool/fabricTruth/i18n/ja.ts +268 -268
  107. package/src/tool/fabricTruth/i18n/ko.ts +268 -268
  108. package/src/tool/fabricTruth/i18n/nl.ts +268 -268
  109. package/src/tool/fabricTruth/i18n/pl.ts +268 -268
  110. package/src/tool/fabricTruth/i18n/pt.ts +268 -268
  111. package/src/tool/fabricTruth/i18n/ru.ts +268 -268
  112. package/src/tool/fabricTruth/i18n/sv.ts +268 -268
  113. package/src/tool/fabricTruth/i18n/tr.ts +268 -268
  114. package/src/tool/fabricTruth/i18n/zh.ts +272 -272
  115. package/src/tool/fabricTruth/seo.astro +15 -15
  116. package/src/tool/fiberPrep/i18n/de.ts +215 -215
  117. package/src/tool/fiberPrep/i18n/fr.ts +215 -215
  118. package/src/tool/fiberPrep/i18n/ja.ts +215 -215
  119. package/src/tool/fiberPrep/i18n/ko.ts +215 -215
  120. package/src/tool/fiberPrep/i18n/nl.ts +215 -215
  121. package/src/tool/fiberPrep/i18n/pl.ts +215 -215
  122. package/src/tool/fiberPrep/i18n/ru.ts +215 -215
  123. package/src/tool/fiberPrep/i18n/sv.ts +215 -215
  124. package/src/tool/fiberPrep/i18n/tr.ts +215 -215
  125. package/src/tool/fiberPrep/i18n/zh.ts +215 -215
  126. package/src/tool/fiberPrep/seo.astro +15 -15
  127. package/src/tool/knittingGauge/i18n/de.ts +224 -224
  128. package/src/tool/knittingGauge/i18n/ja.ts +224 -224
  129. package/src/tool/knittingGauge/i18n/ko.ts +224 -224
  130. package/src/tool/knittingGauge/i18n/pl.ts +224 -224
  131. package/src/tool/knittingGauge/i18n/ru.ts +224 -224
  132. package/src/tool/knittingGauge/i18n/tr.ts +224 -224
  133. package/src/tool/knittingGauge/i18n/zh.ts +224 -224
  134. package/src/tool/knittingGauge/seo.astro +15 -15
  135. package/src/tool/laundryGuide/i18n/de.ts +271 -271
  136. package/src/tool/laundryGuide/i18n/en.ts +271 -271
  137. package/src/tool/laundryGuide/i18n/es.ts +271 -271
  138. package/src/tool/laundryGuide/i18n/fr.ts +255 -255
  139. package/src/tool/laundryGuide/i18n/id.ts +271 -271
  140. package/src/tool/laundryGuide/i18n/it.ts +271 -271
  141. package/src/tool/laundryGuide/i18n/ja.ts +271 -271
  142. package/src/tool/laundryGuide/i18n/ko.ts +271 -271
  143. package/src/tool/laundryGuide/i18n/nl.ts +271 -271
  144. package/src/tool/laundryGuide/i18n/pl.ts +271 -271
  145. package/src/tool/laundryGuide/i18n/pt.ts +271 -271
  146. package/src/tool/laundryGuide/i18n/ru.ts +271 -271
  147. package/src/tool/laundryGuide/i18n/sv.ts +271 -271
  148. package/src/tool/laundryGuide/i18n/tr.ts +271 -271
  149. package/src/tool/laundryGuide/i18n/zh.ts +271 -271
  150. package/src/tool/laundryGuide/seo.astro +15 -15
  151. package/src/tool/needleConverter/i18n/de.ts +202 -202
  152. package/src/tool/needleConverter/i18n/es.ts +207 -207
  153. package/src/tool/needleConverter/i18n/fr.ts +207 -207
  154. package/src/tool/needleConverter/i18n/ja.ts +202 -202
  155. package/src/tool/needleConverter/i18n/ko.ts +202 -202
  156. package/src/tool/needleConverter/i18n/nl.ts +202 -202
  157. package/src/tool/needleConverter/i18n/pl.ts +202 -202
  158. package/src/tool/needleConverter/i18n/ru.ts +202 -202
  159. package/src/tool/needleConverter/i18n/sv.ts +202 -202
  160. package/src/tool/needleConverter/i18n/tr.ts +202 -202
  161. package/src/tool/needleConverter/i18n/zh.ts +202 -202
  162. package/src/tool/needleConverter/seo.astro +15 -15
  163. package/src/tool/sewingPatternScaler/component.astro +236 -236
  164. package/src/tool/sewingPatternScaler/i18n/fr.ts +170 -170
  165. package/src/tool/sewingPatternScaler/i18n/ja.ts +114 -114
  166. package/src/tool/sewingPatternScaler/i18n/ko.ts +114 -114
  167. package/src/tool/sewingPatternScaler/i18n/nl.ts +114 -114
  168. package/src/tool/sewingPatternScaler/i18n/pl.ts +114 -114
  169. package/src/tool/sewingPatternScaler/i18n/ru.ts +114 -114
  170. package/src/tool/sewingPatternScaler/i18n/sv.ts +114 -114
  171. package/src/tool/sewingPatternScaler/i18n/tr.ts +114 -114
  172. package/src/tool/sewingPatternScaler/i18n/zh.ts +114 -114
  173. package/src/tool/sewingPatternScaler/seo.astro +15 -15
  174. package/src/tool/shoeSizeConverter/i18n/fr.ts +183 -183
  175. package/src/tool/shoeSizeConverter/i18n/ja.ts +179 -179
  176. package/src/tool/shoeSizeConverter/i18n/ko.ts +179 -179
  177. package/src/tool/shoeSizeConverter/i18n/nl.ts +179 -179
  178. package/src/tool/shoeSizeConverter/i18n/pl.ts +179 -179
  179. package/src/tool/shoeSizeConverter/i18n/ru.ts +179 -179
  180. package/src/tool/shoeSizeConverter/i18n/sv.ts +179 -179
  181. package/src/tool/shoeSizeConverter/i18n/tr.ts +179 -179
  182. package/src/tool/shoeSizeConverter/i18n/zh.ts +179 -179
  183. package/src/tool/shoeSizeConverter/seo.astro +15 -15
  184. package/src/tool/stainChemistry/bibliography.ts +16 -16
  185. package/src/tool/stainChemistry/i18n/de.ts +286 -286
  186. package/src/tool/stainChemistry/i18n/en.ts +289 -289
  187. package/src/tool/stainChemistry/i18n/es.ts +286 -286
  188. package/src/tool/stainChemistry/i18n/fr.ts +296 -296
  189. package/src/tool/stainChemistry/i18n/id.ts +286 -286
  190. package/src/tool/stainChemistry/i18n/it.ts +286 -286
  191. package/src/tool/stainChemistry/i18n/ja.ts +286 -286
  192. package/src/tool/stainChemistry/i18n/ko.ts +283 -283
  193. package/src/tool/stainChemistry/i18n/nl.ts +286 -286
  194. package/src/tool/stainChemistry/i18n/pl.ts +286 -286
  195. package/src/tool/stainChemistry/i18n/pt.ts +286 -286
  196. package/src/tool/stainChemistry/i18n/ru.ts +286 -286
  197. package/src/tool/stainChemistry/i18n/sv.ts +286 -286
  198. package/src/tool/stainChemistry/i18n/tr.ts +286 -286
  199. package/src/tool/stainChemistry/i18n/zh.ts +281 -281
  200. package/src/tool/stainChemistry/seo.astro +15 -15
  201. package/src/tool/yarnCalculator/i18n/de.ts +296 -296
  202. package/src/tool/yarnCalculator/i18n/es.ts +296 -296
  203. package/src/tool/yarnCalculator/i18n/fr.ts +296 -296
  204. package/src/tool/yarnCalculator/i18n/ja.ts +296 -296
  205. package/src/tool/yarnCalculator/i18n/ko.ts +296 -296
  206. package/src/tool/yarnCalculator/i18n/nl.ts +296 -296
  207. package/src/tool/yarnCalculator/i18n/pl.ts +296 -296
  208. package/src/tool/yarnCalculator/i18n/ru.ts +296 -296
  209. package/src/tool/yarnCalculator/i18n/sv.ts +296 -296
  210. package/src/tool/yarnCalculator/i18n/tr.ts +296 -296
  211. package/src/tool/yarnCalculator/i18n/zh.ts +295 -295
  212. package/src/tool/yarnCalculator/seo.astro +15 -15
  213. package/src/tools.ts +2 -2
@@ -1,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
+ };