@jjlmoya/utils-textiles 1.13.0 → 1.15.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 (254) hide show
  1. package/package.json +1 -1
  2. package/src/category/i18n/de.ts +2 -2
  3. package/src/category/i18n/en.ts +2 -2
  4. package/src/category/i18n/es.ts +2 -2
  5. package/src/category/i18n/fr.ts +9 -9
  6. package/src/category/i18n/id.ts +2 -2
  7. package/src/category/i18n/it.ts +2 -2
  8. package/src/category/i18n/nl.ts +2 -2
  9. package/src/category/i18n/pl.ts +3 -3
  10. package/src/category/i18n/pt.ts +2 -2
  11. package/src/category/i18n/ru.ts +5 -5
  12. package/src/category/i18n/sv.ts +3 -3
  13. package/src/category/i18n/zh.ts +2 -2
  14. package/src/layouts/PreviewLayout.astro +1 -0
  15. package/src/pages/[locale]/[slug].astro +30 -14
  16. package/src/tests/diacritics_density.test.ts +118 -0
  17. package/src/tests/inverted_punctuation.test.ts +84 -0
  18. package/src/tests/locale_completeness.test.ts +0 -33
  19. package/src/tests/no_en_dash.test.ts +70 -0
  20. package/src/tests/script_density.test.ts +94 -0
  21. package/src/tests/shared-test-helpers.ts +56 -0
  22. package/src/tests/tool_exports.test.ts +34 -0
  23. package/src/tool/burnTest/bibliography.astro +2 -10
  24. package/src/tool/burnTest/bibliography.ts +16 -0
  25. package/src/tool/burnTest/i18n/de.ts +5 -19
  26. package/src/tool/burnTest/i18n/en.ts +2 -16
  27. package/src/tool/burnTest/i18n/es.ts +2 -16
  28. package/src/tool/burnTest/i18n/fr.ts +5 -19
  29. package/src/tool/burnTest/i18n/id.ts +2 -16
  30. package/src/tool/burnTest/i18n/it.ts +2 -16
  31. package/src/tool/burnTest/i18n/ja.ts +2 -16
  32. package/src/tool/burnTest/i18n/ko.ts +2 -16
  33. package/src/tool/burnTest/i18n/nl.ts +2 -16
  34. package/src/tool/burnTest/i18n/pl.ts +5 -19
  35. package/src/tool/burnTest/i18n/pt.ts +2 -16
  36. package/src/tool/burnTest/i18n/ru.ts +8 -22
  37. package/src/tool/burnTest/i18n/sv.ts +2 -16
  38. package/src/tool/burnTest/i18n/tr.ts +2 -16
  39. package/src/tool/burnTest/i18n/zh.ts +5 -19
  40. package/src/tool/burnTest/index.ts +1 -0
  41. package/src/tool/burnTest/seo.astro +2 -27
  42. package/src/tool/clothingSizeConverter/bibliography.astro +2 -10
  43. package/src/tool/clothingSizeConverter/bibliography.ts +10 -0
  44. package/src/tool/clothingSizeConverter/i18n/de.ts +2 -10
  45. package/src/tool/clothingSizeConverter/i18n/en.ts +3 -11
  46. package/src/tool/clothingSizeConverter/i18n/es.ts +2 -10
  47. package/src/tool/clothingSizeConverter/i18n/fr.ts +8 -16
  48. package/src/tool/clothingSizeConverter/i18n/id.ts +2 -10
  49. package/src/tool/clothingSizeConverter/i18n/it.ts +2 -10
  50. package/src/tool/clothingSizeConverter/i18n/ja.ts +2 -10
  51. package/src/tool/clothingSizeConverter/i18n/ko.ts +2 -10
  52. package/src/tool/clothingSizeConverter/i18n/nl.ts +2 -10
  53. package/src/tool/clothingSizeConverter/i18n/pl.ts +3 -11
  54. package/src/tool/clothingSizeConverter/i18n/pt.ts +2 -10
  55. package/src/tool/clothingSizeConverter/i18n/ru.ts +4 -12
  56. package/src/tool/clothingSizeConverter/i18n/sv.ts +2 -10
  57. package/src/tool/clothingSizeConverter/i18n/tr.ts +2 -10
  58. package/src/tool/clothingSizeConverter/i18n/zh.ts +3 -11
  59. package/src/tool/clothingSizeConverter/index.ts +1 -0
  60. package/src/tool/clothingSizeConverter/seo.astro +2 -27
  61. package/src/tool/fabricProjectCalculator/bibliography.astro +2 -10
  62. package/src/tool/fabricProjectCalculator/bibliography.ts +16 -0
  63. package/src/tool/fabricProjectCalculator/component.astro +2 -3
  64. package/src/tool/fabricProjectCalculator/fabric-project-calculator.css +63 -1
  65. package/src/tool/fabricProjectCalculator/i18n/de.ts +2 -16
  66. package/src/tool/fabricProjectCalculator/i18n/en.ts +2 -16
  67. package/src/tool/fabricProjectCalculator/i18n/es.ts +2 -16
  68. package/src/tool/fabricProjectCalculator/i18n/fr.ts +2 -16
  69. package/src/tool/fabricProjectCalculator/i18n/id.ts +2 -16
  70. package/src/tool/fabricProjectCalculator/i18n/it.ts +2 -16
  71. package/src/tool/fabricProjectCalculator/i18n/ja.ts +2 -16
  72. package/src/tool/fabricProjectCalculator/i18n/ko.ts +2 -16
  73. package/src/tool/fabricProjectCalculator/i18n/nl.ts +2 -16
  74. package/src/tool/fabricProjectCalculator/i18n/pl.ts +2 -16
  75. package/src/tool/fabricProjectCalculator/i18n/pt.ts +2 -16
  76. package/src/tool/fabricProjectCalculator/i18n/ru.ts +4 -18
  77. package/src/tool/fabricProjectCalculator/i18n/sv.ts +2 -16
  78. package/src/tool/fabricProjectCalculator/i18n/tr.ts +2 -16
  79. package/src/tool/fabricProjectCalculator/i18n/zh.ts +3 -17
  80. package/src/tool/fabricProjectCalculator/index.ts +1 -0
  81. package/src/tool/fabricProjectCalculator/seo.astro +2 -27
  82. package/src/tool/fabricTruth/bibliography.astro +2 -10
  83. package/src/tool/fabricTruth/bibliography.ts +16 -0
  84. package/src/tool/fabricTruth/i18n/de.ts +3 -17
  85. package/src/tool/fabricTruth/i18n/en.ts +3 -17
  86. package/src/tool/fabricTruth/i18n/es.ts +3 -17
  87. package/src/tool/fabricTruth/i18n/fr.ts +15 -29
  88. package/src/tool/fabricTruth/i18n/id.ts +3 -17
  89. package/src/tool/fabricTruth/i18n/it.ts +3 -17
  90. package/src/tool/fabricTruth/i18n/ja.ts +3 -17
  91. package/src/tool/fabricTruth/i18n/ko.ts +3 -17
  92. package/src/tool/fabricTruth/i18n/nl.ts +3 -17
  93. package/src/tool/fabricTruth/i18n/pl.ts +3 -17
  94. package/src/tool/fabricTruth/i18n/pt.ts +3 -17
  95. package/src/tool/fabricTruth/i18n/ru.ts +13 -27
  96. package/src/tool/fabricTruth/i18n/sv.ts +3 -17
  97. package/src/tool/fabricTruth/i18n/tr.ts +3 -17
  98. package/src/tool/fabricTruth/i18n/zh.ts +11 -25
  99. package/src/tool/fabricTruth/index.ts +1 -0
  100. package/src/tool/fabricTruth/seo.astro +2 -27
  101. package/src/tool/fiberPrep/bibliography.astro +2 -10
  102. package/src/tool/fiberPrep/bibliography.ts +12 -0
  103. package/src/tool/fiberPrep/fiber-preparation-natural-dyeing.css +130 -11
  104. package/src/tool/fiberPrep/i18n/de.ts +2 -12
  105. package/src/tool/fiberPrep/i18n/en.ts +2 -12
  106. package/src/tool/fiberPrep/i18n/es.ts +2 -12
  107. package/src/tool/fiberPrep/i18n/fr.ts +6 -16
  108. package/src/tool/fiberPrep/i18n/id.ts +2 -12
  109. package/src/tool/fiberPrep/i18n/it.ts +2 -12
  110. package/src/tool/fiberPrep/i18n/ja.ts +2 -12
  111. package/src/tool/fiberPrep/i18n/ko.ts +2 -12
  112. package/src/tool/fiberPrep/i18n/nl.ts +2 -12
  113. package/src/tool/fiberPrep/i18n/pl.ts +2 -12
  114. package/src/tool/fiberPrep/i18n/pt.ts +2 -12
  115. package/src/tool/fiberPrep/i18n/ru.ts +5 -15
  116. package/src/tool/fiberPrep/i18n/sv.ts +2 -12
  117. package/src/tool/fiberPrep/i18n/tr.ts +2 -12
  118. package/src/tool/fiberPrep/i18n/zh.ts +4 -14
  119. package/src/tool/fiberPrep/index.ts +1 -0
  120. package/src/tool/fiberPrep/seo.astro +2 -27
  121. package/src/tool/knittingGauge/bibliography.astro +2 -10
  122. package/src/tool/knittingGauge/bibliography.ts +12 -0
  123. package/src/tool/knittingGauge/i18n/de.ts +2 -12
  124. package/src/tool/knittingGauge/i18n/en.ts +2 -12
  125. package/src/tool/knittingGauge/i18n/es.ts +2 -12
  126. package/src/tool/knittingGauge/i18n/fr.ts +2 -12
  127. package/src/tool/knittingGauge/i18n/id.ts +2 -12
  128. package/src/tool/knittingGauge/i18n/it.ts +2 -12
  129. package/src/tool/knittingGauge/i18n/ja.ts +2 -12
  130. package/src/tool/knittingGauge/i18n/ko.ts +2 -12
  131. package/src/tool/knittingGauge/i18n/nl.ts +2 -12
  132. package/src/tool/knittingGauge/i18n/pl.ts +2 -12
  133. package/src/tool/knittingGauge/i18n/pt.ts +2 -12
  134. package/src/tool/knittingGauge/i18n/ru.ts +8 -18
  135. package/src/tool/knittingGauge/i18n/sv.ts +2 -12
  136. package/src/tool/knittingGauge/i18n/tr.ts +2 -12
  137. package/src/tool/knittingGauge/i18n/zh.ts +3 -13
  138. package/src/tool/knittingGauge/index.ts +1 -0
  139. package/src/tool/knittingGauge/seo.astro +2 -27
  140. package/src/tool/laundryGuide/bibliography.astro +2 -10
  141. package/src/tool/laundryGuide/bibliography.ts +6 -0
  142. package/src/tool/laundryGuide/i18n/de.ts +3 -7
  143. package/src/tool/laundryGuide/i18n/en.ts +3 -7
  144. package/src/tool/laundryGuide/i18n/es.ts +3 -7
  145. package/src/tool/laundryGuide/i18n/fr.ts +14 -18
  146. package/src/tool/laundryGuide/i18n/id.ts +3 -7
  147. package/src/tool/laundryGuide/i18n/it.ts +3 -7
  148. package/src/tool/laundryGuide/i18n/ja.ts +2 -6
  149. package/src/tool/laundryGuide/i18n/ko.ts +2 -6
  150. package/src/tool/laundryGuide/i18n/nl.ts +3 -7
  151. package/src/tool/laundryGuide/i18n/pl.ts +4 -8
  152. package/src/tool/laundryGuide/i18n/pt.ts +3 -7
  153. package/src/tool/laundryGuide/i18n/ru.ts +8 -12
  154. package/src/tool/laundryGuide/i18n/sv.ts +3 -7
  155. package/src/tool/laundryGuide/i18n/tr.ts +2 -6
  156. package/src/tool/laundryGuide/i18n/zh.ts +4 -8
  157. package/src/tool/laundryGuide/index.ts +1 -0
  158. package/src/tool/laundryGuide/seo.astro +2 -27
  159. package/src/tool/needleConverter/bibliography.astro +2 -10
  160. package/src/tool/needleConverter/bibliography.ts +12 -0
  161. package/src/tool/needleConverter/i18n/de.ts +2 -12
  162. package/src/tool/needleConverter/i18n/en.ts +2 -12
  163. package/src/tool/needleConverter/i18n/es.ts +2 -12
  164. package/src/tool/needleConverter/i18n/fr.ts +7 -17
  165. package/src/tool/needleConverter/i18n/id.ts +2 -12
  166. package/src/tool/needleConverter/i18n/it.ts +2 -12
  167. package/src/tool/needleConverter/i18n/ja.ts +2 -12
  168. package/src/tool/needleConverter/i18n/ko.ts +2 -12
  169. package/src/tool/needleConverter/i18n/nl.ts +2 -12
  170. package/src/tool/needleConverter/i18n/pl.ts +2 -12
  171. package/src/tool/needleConverter/i18n/pt.ts +2 -12
  172. package/src/tool/needleConverter/i18n/ru.ts +6 -16
  173. package/src/tool/needleConverter/i18n/sv.ts +2 -12
  174. package/src/tool/needleConverter/i18n/tr.ts +2 -12
  175. package/src/tool/needleConverter/i18n/zh.ts +2 -12
  176. package/src/tool/needleConverter/index.ts +1 -0
  177. package/src/tool/needleConverter/seo.astro +1 -1
  178. package/src/tool/sewingPatternScaler/bibliography.astro +2 -10
  179. package/src/tool/sewingPatternScaler/bibliography.ts +12 -0
  180. package/src/tool/sewingPatternScaler/i18n/de.ts +2 -12
  181. package/src/tool/sewingPatternScaler/i18n/en.ts +2 -12
  182. package/src/tool/sewingPatternScaler/i18n/es.ts +2 -12
  183. package/src/tool/sewingPatternScaler/i18n/fr.ts +4 -14
  184. package/src/tool/sewingPatternScaler/i18n/id.ts +2 -12
  185. package/src/tool/sewingPatternScaler/i18n/it.ts +2 -12
  186. package/src/tool/sewingPatternScaler/i18n/ja.ts +2 -12
  187. package/src/tool/sewingPatternScaler/i18n/ko.ts +2 -12
  188. package/src/tool/sewingPatternScaler/i18n/nl.ts +2 -12
  189. package/src/tool/sewingPatternScaler/i18n/pl.ts +4 -14
  190. package/src/tool/sewingPatternScaler/i18n/pt.ts +2 -12
  191. package/src/tool/sewingPatternScaler/i18n/ru.ts +9 -19
  192. package/src/tool/sewingPatternScaler/i18n/sv.ts +2 -12
  193. package/src/tool/sewingPatternScaler/i18n/tr.ts +2 -12
  194. package/src/tool/sewingPatternScaler/i18n/zh.ts +5 -15
  195. package/src/tool/sewingPatternScaler/index.ts +1 -0
  196. package/src/tool/sewingPatternScaler/seo.astro +2 -36
  197. package/src/tool/shoeSizeConverter/bibliography.astro +2 -10
  198. package/src/tool/shoeSizeConverter/bibliography.ts +7 -0
  199. package/src/tool/shoeSizeConverter/i18n/de.ts +2 -7
  200. package/src/tool/shoeSizeConverter/i18n/en.ts +2 -7
  201. package/src/tool/shoeSizeConverter/i18n/es.ts +2 -7
  202. package/src/tool/shoeSizeConverter/i18n/fr.ts +3 -8
  203. package/src/tool/shoeSizeConverter/i18n/id.ts +2 -7
  204. package/src/tool/shoeSizeConverter/i18n/it.ts +2 -7
  205. package/src/tool/shoeSizeConverter/i18n/ja.ts +2 -7
  206. package/src/tool/shoeSizeConverter/i18n/ko.ts +2 -7
  207. package/src/tool/shoeSizeConverter/i18n/nl.ts +2 -7
  208. package/src/tool/shoeSizeConverter/i18n/pl.ts +2 -7
  209. package/src/tool/shoeSizeConverter/i18n/pt.ts +2 -7
  210. package/src/tool/shoeSizeConverter/i18n/ru.ts +6 -11
  211. package/src/tool/shoeSizeConverter/i18n/sv.ts +2 -7
  212. package/src/tool/shoeSizeConverter/i18n/tr.ts +2 -7
  213. package/src/tool/shoeSizeConverter/i18n/zh.ts +5 -10
  214. package/src/tool/shoeSizeConverter/index.ts +1 -0
  215. package/src/tool/shoeSizeConverter/seo.astro +2 -27
  216. package/src/tool/stainChemistry/bibliography.astro +2 -10
  217. package/src/tool/stainChemistry/bibliography.ts +16 -0
  218. package/src/tool/stainChemistry/i18n/de.ts +5 -19
  219. package/src/tool/stainChemistry/i18n/en.ts +5 -19
  220. package/src/tool/stainChemistry/i18n/es.ts +5 -19
  221. package/src/tool/stainChemistry/i18n/fr.ts +8 -22
  222. package/src/tool/stainChemistry/i18n/id.ts +5 -19
  223. package/src/tool/stainChemistry/i18n/it.ts +5 -19
  224. package/src/tool/stainChemistry/i18n/ja.ts +5 -19
  225. package/src/tool/stainChemistry/i18n/ko.ts +5 -19
  226. package/src/tool/stainChemistry/i18n/nl.ts +5 -19
  227. package/src/tool/stainChemistry/i18n/pl.ts +5 -19
  228. package/src/tool/stainChemistry/i18n/pt.ts +5 -19
  229. package/src/tool/stainChemistry/i18n/ru.ts +9 -23
  230. package/src/tool/stainChemistry/i18n/sv.ts +5 -19
  231. package/src/tool/stainChemistry/i18n/tr.ts +5 -19
  232. package/src/tool/stainChemistry/i18n/zh.ts +9 -23
  233. package/src/tool/stainChemistry/index.ts +1 -0
  234. package/src/tool/stainChemistry/seo.astro +2 -27
  235. package/src/tool/yarnCalculator/bibliography.astro +2 -10
  236. package/src/tool/yarnCalculator/bibliography.ts +16 -0
  237. package/src/tool/yarnCalculator/i18n/de.ts +2 -16
  238. package/src/tool/yarnCalculator/i18n/en.ts +2 -16
  239. package/src/tool/yarnCalculator/i18n/es.ts +2 -16
  240. package/src/tool/yarnCalculator/i18n/fr.ts +6 -20
  241. package/src/tool/yarnCalculator/i18n/id.ts +2 -16
  242. package/src/tool/yarnCalculator/i18n/it.ts +2 -16
  243. package/src/tool/yarnCalculator/i18n/ja.ts +2 -16
  244. package/src/tool/yarnCalculator/i18n/ko.ts +2 -16
  245. package/src/tool/yarnCalculator/i18n/nl.ts +2 -16
  246. package/src/tool/yarnCalculator/i18n/pl.ts +2 -16
  247. package/src/tool/yarnCalculator/i18n/pt.ts +2 -16
  248. package/src/tool/yarnCalculator/i18n/ru.ts +9 -23
  249. package/src/tool/yarnCalculator/i18n/sv.ts +2 -16
  250. package/src/tool/yarnCalculator/i18n/tr.ts +2 -16
  251. package/src/tool/yarnCalculator/i18n/zh.ts +7 -21
  252. package/src/tool/yarnCalculator/index.ts +1 -0
  253. package/src/tool/yarnCalculator/seo.astro +2 -1
  254. package/src/types.ts +2 -4
@@ -1,15 +1,21 @@
1
1
  .fiber-prep {
2
2
  width: 100%;
3
- padding: 1rem;
3
+ padding: 2rem;
4
4
  display: flex;
5
5
  flex-direction: column;
6
- gap: 2rem;
6
+ gap: 0;
7
+ background: var(--bg-surface);
8
+ border: 1px solid var(--border-color);
9
+ border-radius: 1.5rem;
10
+ box-shadow: 0 24px 70px rgba(0, 0, 0, 0.14);
11
+ overflow: hidden;
7
12
  }
8
13
 
9
14
  .profile-section {
10
15
  display: flex;
11
16
  flex-direction: column;
12
17
  gap: 1.5rem;
18
+ padding-bottom: 2rem;
13
19
  }
14
20
 
15
21
  .profile-header {
@@ -42,9 +48,9 @@
42
48
  display: flex;
43
49
  flex-direction: column;
44
50
  padding: 2rem;
45
- border-radius: 2rem;
51
+ border-radius: 1rem;
46
52
  border: 2px solid var(--border-color);
47
- background: var(--bg-surface);
53
+ background: var(--bg-page);
48
54
  text-align: left;
49
55
  cursor: pointer;
50
56
  overflow: hidden;
@@ -173,20 +179,34 @@
173
179
  .tool-grid {
174
180
  display: grid;
175
181
  grid-template-columns: 1fr 1fr;
176
- gap: 2rem;
182
+ gap: 0;
183
+ border-top: 1px solid var(--border-color);
177
184
  }
178
185
 
179
186
  .calc-card {
180
- background: var(--bg-surface);
181
- border: 1px solid var(--border-color);
182
- border-radius: 1.5rem;
183
- padding: 1.5rem;
184
- box-shadow: 0 4px 16px rgba(0, 0, 0, 0.06);
187
+ background: transparent;
188
+ border: 0;
189
+ border-radius: 0;
190
+ padding: 2rem 0 0;
191
+ box-shadow: none;
185
192
  display: flex;
186
193
  flex-direction: column;
187
194
  gap: 1.5rem;
188
195
  }
189
196
 
197
+ .tool-grid .calc-card {
198
+ padding: 2rem 0;
199
+ }
200
+
201
+ .tool-grid .calc-card:first-child {
202
+ padding-right: 2rem;
203
+ }
204
+
205
+ .tool-grid .calc-card + .calc-card {
206
+ padding-left: 2rem;
207
+ border-left: 1px solid var(--border-color);
208
+ }
209
+
190
210
  .calc-header {
191
211
  display: flex;
192
212
  align-items: center;
@@ -537,6 +557,7 @@
537
557
 
538
558
  .ph-card {
539
559
  gap: 1.5rem;
560
+ border-top: 1px solid var(--border-color);
540
561
  }
541
562
 
542
563
  .ph-header-text {
@@ -636,15 +657,113 @@
636
657
  }
637
658
 
638
659
  @media (max-width: 768px) {
660
+ .fiber-prep {
661
+ padding: 1rem;
662
+ overflow: hidden;
663
+ border-radius: 1rem;
664
+ box-shadow: 0 16px 44px rgba(0, 0, 0, 0.12);
665
+ }
666
+
667
+ .profile-section {
668
+ gap: 1rem;
669
+ padding-bottom: 1rem;
670
+ }
671
+
639
672
  .profile-grid {
640
673
  grid-template-columns: 1fr;
674
+ gap: 1rem;
675
+ }
676
+
677
+ .fiber-card,
678
+ .calc-card {
679
+ border-radius: 1rem;
680
+ min-width: 0;
681
+ }
682
+
683
+ .fiber-card {
684
+ padding: 1.25rem;
641
685
  }
642
686
 
643
687
  .tool-grid {
644
688
  grid-template-columns: 1fr;
689
+ gap: 0;
690
+ }
691
+
692
+ .tool-grid .calc-card {
693
+ padding: 1rem 0;
694
+ }
695
+
696
+ .tool-grid .calc-card:first-child {
697
+ padding-right: 0;
698
+ }
699
+
700
+ .tool-grid .calc-card + .calc-card {
701
+ padding-left: 0;
702
+ border-left: 0;
703
+ border-top: 1px solid var(--border-color);
704
+ }
705
+
706
+ .ph-card {
707
+ padding-top: 1rem;
708
+ }
709
+
710
+ .calc-header {
711
+ align-items: flex-start;
712
+ }
713
+
714
+ .card-bg-icon {
715
+ padding: 1rem;
716
+ }
717
+
718
+ .card-bg-icon svg {
719
+ width: 6rem;
720
+ height: 6rem;
721
+ }
722
+
723
+ .field-input {
724
+ border-radius: 0.875rem;
725
+ font-size: 1.125rem;
726
+ min-height: 3rem;
727
+ }
728
+
729
+ .result-row {
730
+ align-items: flex-start;
731
+ gap: 0.75rem;
732
+ padding: 0.875rem;
733
+ }
734
+
735
+ .result-row-left {
736
+ min-width: 0;
737
+ }
738
+
739
+ .result-label {
740
+ line-height: 1.25;
741
+ }
742
+
743
+ .result-val {
744
+ flex-shrink: 0;
745
+ font-size: 1rem;
746
+ }
747
+
748
+ .ramp-body {
749
+ min-height: 170px;
750
+ }
751
+
752
+ .ramp-chart-wrap {
753
+ padding: 0.75rem;
645
754
  }
646
755
 
647
756
  .ph-grid {
648
757
  grid-template-columns: 1fr;
758
+ gap: 1rem;
759
+ }
760
+
761
+ .ph-range-labels {
762
+ gap: 0.5rem;
649
763
  }
650
- }
764
+
765
+ .ph-range-labels span {
766
+ min-width: 0;
767
+ overflow-wrap: anywhere;
768
+ }
769
+ }
@@ -1,5 +1,6 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
+ import { bibliography } from '../bibliography';
3
4
  import type { FiberPrepUI } from '../ui';
4
5
 
5
6
  const slug = 'faservorbereitung-pigmentierung';
@@ -86,19 +87,8 @@ export const content: ToolLocaleContent<FiberPrepUI> = {
86
87
  slug,
87
88
  title,
88
89
  description,
89
- faqTitle: 'Häufig gestellte Fragen',
90
90
  faq: faqData,
91
- bibliographyTitle: 'Bibliographie',
92
- bibliography: [
93
- {
94
- name: 'La Escuela Artesana - Taller de Tintes Naturales sobre Lana',
95
- url: 'https://laescuelaartesana.com/taller-de-tintes-naturales-sobre-lana/',
96
- },
97
- {
98
- name: 'Tatiana Sarasa (@tatianasarasa) - Artista Textil y Tintes Naturales',
99
- url: 'https://www.instagram.com/tatianasarasa/',
100
- },
101
- ],
91
+ bibliography: bibliography,
102
92
  howTo: howToData,
103
93
  schemas: [faqSchema, howToSchema, appSchema],
104
94
  seo: [
@@ -1,5 +1,6 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
+ import { bibliography } from '../bibliography';
3
4
  import type { FiberPrepUI } from '../ui';
4
5
 
5
6
  const slug = 'fiber-preparation-natural-dyeing';
@@ -86,19 +87,8 @@ export const content: ToolLocaleContent<FiberPrepUI> = {
86
87
  slug,
87
88
  title,
88
89
  description,
89
- faqTitle: 'Frequently Asked Questions',
90
90
  faq: faqData,
91
- bibliographyTitle: 'Bibliography',
92
- bibliography: [
93
- {
94
- name: 'La Escuela Artesana - Natural Dye Workshop on Wool',
95
- url: 'https://laescuelaartesana.com/taller-de-tintes-naturales-sobre-lana/',
96
- },
97
- {
98
- name: 'Tatiana Sarasa (@tatianasarasa) - Textile Artist and Natural Dyes',
99
- url: 'https://www.instagram.com/tatianasarasa/',
100
- },
101
- ],
91
+ bibliography: bibliography,
102
92
  howTo: howToData,
103
93
  schemas: [faqSchema, howToSchema, appSchema],
104
94
  seo: [
@@ -1,5 +1,6 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
+ import { bibliography } from '../bibliography';
3
4
  import type { FiberPrepUI } from '../ui';
4
5
 
5
6
  const slug = 'preparacion-fibras-pigmentar';
@@ -86,19 +87,8 @@ export const content: ToolLocaleContent<FiberPrepUI> = {
86
87
  slug,
87
88
  title,
88
89
  description,
89
- faqTitle: 'Preguntas Frecuentes',
90
90
  faq: faqData,
91
- bibliographyTitle: 'Bibliografía',
92
- bibliography: [
93
- {
94
- name: 'La Escuela Artesana - Taller de Tintes Naturales sobre Lana',
95
- url: 'https://laescuelaartesana.com/taller-de-tintes-naturales-sobre-lana/',
96
- },
97
- {
98
- name: 'Tatiana Sarasa (@tatianasarasa) - Artista Textil y Tintes Naturales',
99
- url: 'https://www.instagram.com/tatianasarasa/',
100
- },
101
- ],
91
+ bibliography: bibliography,
102
92
  howTo: howToData,
103
93
  schemas: [faqSchema, howToSchema, appSchema],
104
94
  seo: [
@@ -1,5 +1,6 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
+ import { bibliography } from '../bibliography';
3
4
  import type { FiberPrepUI } from '../ui';
4
5
 
5
6
  const slug = 'preparation-fibres-teinture-naturelle';
@@ -86,19 +87,8 @@ export const content: ToolLocaleContent<FiberPrepUI> = {
86
87
  slug,
87
88
  title,
88
89
  description,
89
- faqTitle: 'Questions Fréquentes',
90
90
  faq: faqData,
91
- bibliographyTitle: 'Bibliographie',
92
- bibliography: [
93
- {
94
- name: 'La Escuela Artesana - Atelier de Teintures Naturelles sur Laine',
95
- url: 'https://laescuelaartesana.com/taller-de-tintes-naturales-sobre-lana/',
96
- },
97
- {
98
- name: 'Tatiana Sarasa (@tatianasarasa) - Artiste Textile et Teintures Naturelles',
99
- url: 'https://www.instagram.com/tatianasarasa/',
100
- },
101
- ],
91
+ bibliography: bibliography,
102
92
  howTo: howToData,
103
93
  schemas: [faqSchema, howToSchema, appSchema],
104
94
  seo: [
@@ -124,19 +114,19 @@ export const content: ToolLocaleContent<FiberPrepUI> = {
124
114
  },
125
115
  {
126
116
  type: 'card',
127
- title: 'Fibres Protéiques : Laine et Soie',
117
+ title: 'Fibres Protéiques: Laine et Soie',
128
118
  icon: 'mdi:sheep',
129
119
  html: 'Ces fibres sont composées de chaînes d\'acides aminés avec une affinité naturelle élevée pour les métaux. La chaleur ouvre les écailles de la fibre permettant aux sels d\'alun de pénétrer profondément. La <strong>Crème de Tartre</strong> est vitale pour maintenir le pH acide qui préserve la douceur.',
130
120
  },
131
121
  {
132
122
  type: 'card',
133
- title: 'Fibres Cellulosiques : Coton et Lin',
123
+ title: 'Fibres Cellulosiques: Coton et Lin',
134
124
  icon: 'mdi:leaf',
135
- html: 'La cellulose n\'a pas de sites de liaison facilement disponibles. C\'est pourquoi nous utilisons le <strong>protocole en deux étapes</strong> : d\'abord des tanins qui se fixent à la cellulose, puis l\'alun se fixe à ces tanins. Sans ce pré-traitement, la couleur sera pâle et peu résistante au lavage.',
125
+ html: 'La cellulose n\'a pas de sites de liaison facilement disponibles. C\'est pourquoi nous utilisons le <strong>protocole en deux étapes</strong>: d\'abord des tanins qui se fixent à la cellulose, puis l\'alun se fixe à ces tanins. Sans ce pré-traitement, la couleur sera pâle et peu résistante au lavage.',
136
126
  },
137
127
  {
138
128
  type: 'title',
139
- text: 'Contrôle du Bain : WOF, Température et pH',
129
+ text: 'Contrôle du Bain: WOF, Température et pH',
140
130
  level: 2,
141
131
  },
142
132
  {
@@ -1,5 +1,6 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
+ import { bibliography } from '../bibliography';
3
4
  import type { FiberPrepUI } from '../ui';
4
5
 
5
6
  const slug = 'persiapan-serat-pewarnaan';
@@ -86,19 +87,8 @@ export const content: ToolLocaleContent<FiberPrepUI> = {
86
87
  slug,
87
88
  title,
88
89
  description,
89
- faqTitle: 'Pertanyaan yang Sering Diajukan',
90
90
  faq: faqData,
91
- bibliographyTitle: 'Bibliografi',
92
- bibliography: [
93
- {
94
- name: 'La Escuela Artesana - Taller de Tintes Naturales sobre Lana',
95
- url: 'https://laescuelaartesana.com/taller-de-tintes-naturales-sobre-lana/',
96
- },
97
- {
98
- name: 'Tatiana Sarasa (@tatianasarasa) - Artista Textil y Tintes Naturales',
99
- url: 'https://www.instagram.com/tatianasarasa/',
100
- },
101
- ],
91
+ bibliography: bibliography,
102
92
  howTo: howToData,
103
93
  schemas: [faqSchema, howToSchema, appSchema],
104
94
  seo: [
@@ -1,5 +1,6 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
+ import { bibliography } from '../bibliography';
3
4
  import type { FiberPrepUI } from '../ui';
4
5
 
5
6
  const slug = 'preparazione-fibre-tintura';
@@ -86,19 +87,8 @@ export const content: ToolLocaleContent<FiberPrepUI> = {
86
87
  slug,
87
88
  title,
88
89
  description,
89
- faqTitle: 'Domande Frequenti',
90
90
  faq: faqData,
91
- bibliographyTitle: 'Bibliografia',
92
- bibliography: [
93
- {
94
- name: 'La Escuela Artesana - Taller de Tintes Naturales sobre Lana',
95
- url: 'https://laescuelaartesana.com/taller-de-tintes-naturales-sobre-lana/',
96
- },
97
- {
98
- name: 'Tatiana Sarasa (@tatianasarasa) - Artista Textil y Tintes Naturales',
99
- url: 'https://www.instagram.com/tatianasarasa/',
100
- },
101
- ],
91
+ bibliography: bibliography,
102
92
  howTo: howToData,
103
93
  schemas: [faqSchema, howToSchema, appSchema],
104
94
  seo: [
@@ -1,5 +1,6 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
+ import { bibliography } from '../bibliography';
3
4
  import type { FiberPrepUI } from '../ui';
4
5
 
5
6
  const slug = 'fiber-preparation-natural-dyeing';
@@ -86,19 +87,8 @@ export const content: ToolLocaleContent<FiberPrepUI> = {
86
87
  slug,
87
88
  title,
88
89
  description,
89
- faqTitle: 'よくある質問',
90
90
  faq: faqData,
91
- bibliographyTitle: '参考文献',
92
- bibliography: [
93
- {
94
- name: 'La Escuela Artesana - Taller de Tintes Naturales sobre Lana',
95
- url: 'https://laescuelaartesana.com/taller-de-tintes-naturales-sobre-lana/',
96
- },
97
- {
98
- name: 'Tatiana Sarasa (@tatianasarasa) - Artista Textil y Tintes Naturales',
99
- url: 'https://www.instagram.com/tatianasarasa/',
100
- },
101
- ],
91
+ bibliography: bibliography,
102
92
  howTo: howToData,
103
93
  schemas: [faqSchema, howToSchema, appSchema],
104
94
  seo: [
@@ -1,5 +1,6 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
+ import { bibliography } from '../bibliography';
3
4
  import type { FiberPrepUI } from '../ui';
4
5
 
5
6
  const slug = 'fiber-preparation-natural-dyeing';
@@ -86,19 +87,8 @@ export const content: ToolLocaleContent<FiberPrepUI> = {
86
87
  slug,
87
88
  title,
88
89
  description,
89
- faqTitle: '자주 묻는 질문',
90
90
  faq: faqData,
91
- bibliographyTitle: '참고 문헌',
92
- bibliography: [
93
- {
94
- name: 'La Escuela Artesana - Taller de Tintes Naturales sobre Lana',
95
- url: 'https://laescuelaartesana.com/taller-de-tintes-naturales-sobre-lana/',
96
- },
97
- {
98
- name: 'Tatiana Sarasa (@tatianasarasa) - Artista Textil y Tintes Naturales',
99
- url: 'https://www.instagram.com/tatianasarasa/',
100
- },
101
- ],
91
+ bibliography: bibliography,
102
92
  howTo: howToData,
103
93
  schemas: [faqSchema, howToSchema, appSchema],
104
94
  seo: [
@@ -1,5 +1,6 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
+ import { bibliography } from '../bibliography';
3
4
  import type { FiberPrepUI } from '../ui';
4
5
 
5
6
  const slug = 'vezelvoorbereiding-verven';
@@ -86,19 +87,8 @@ export const content: ToolLocaleContent<FiberPrepUI> = {
86
87
  slug,
87
88
  title,
88
89
  description,
89
- faqTitle: 'Veelgestelde Vragen',
90
90
  faq: faqData,
91
- bibliographyTitle: 'Bibliografie',
92
- bibliography: [
93
- {
94
- name: 'La Escuela Artesana - Taller de Tintes Naturales sobre Lana',
95
- url: 'https://laescuelaartesana.com/taller-de-tintes-naturales-sobre-lana/',
96
- },
97
- {
98
- name: 'Tatiana Sarasa (@tatianasarasa) - Artista Textil y Tintes Naturales',
99
- url: 'https://www.instagram.com/tatianasarasa/',
100
- },
101
- ],
91
+ bibliography: bibliography,
102
92
  howTo: howToData,
103
93
  schemas: [faqSchema, howToSchema, appSchema],
104
94
  seo: [
@@ -1,5 +1,6 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
+ import { bibliography } from '../bibliography';
3
4
  import type { FiberPrepUI } from '../ui';
4
5
 
5
6
  const slug = 'przygotowanie-wlokien-farbowanie';
@@ -86,19 +87,8 @@ export const content: ToolLocaleContent<FiberPrepUI> = {
86
87
  slug,
87
88
  title,
88
89
  description,
89
- faqTitle: 'Najczęściej Zadawane Pytania',
90
90
  faq: faqData,
91
- bibliographyTitle: 'Bibliografia',
92
- bibliography: [
93
- {
94
- name: 'La Escuela Artesana - Taller de Tintes Naturales sobre Lana',
95
- url: 'https://laescuelaartesana.com/taller-de-tintes-naturales-sobre-lana/',
96
- },
97
- {
98
- name: 'Tatiana Sarasa (@tatianasarasa) - Artista Textil i Tintes Naturales',
99
- url: 'https://www.instagram.com/tatianasarasa/',
100
- },
101
- ],
91
+ bibliography: bibliography,
102
92
  howTo: howToData,
103
93
  schemas: [faqSchema, howToSchema, appSchema],
104
94
  seo: [
@@ -1,5 +1,6 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
+ import { bibliography } from '../bibliography';
3
4
  import type { FiberPrepUI } from '../ui';
4
5
 
5
6
  const slug = 'preparacao-fibras-tingimento';
@@ -86,19 +87,8 @@ export const content: ToolLocaleContent<FiberPrepUI> = {
86
87
  slug,
87
88
  title,
88
89
  description,
89
- faqTitle: 'Perguntas Frequentes',
90
90
  faq: faqData,
91
- bibliographyTitle: 'Bibliografia',
92
- bibliography: [
93
- {
94
- name: 'La Escuela Artesana - Taller de Tintes Naturales sobre Lana',
95
- url: 'https://laescuelaartesana.com/taller-de-tintes-naturales-sobre-lana/',
96
- },
97
- {
98
- name: 'Tatiana Sarasa (@tatianasarasa) - Artista Têxtil e Tintas Naturais',
99
- url: 'https://www.instagram.com/tatianasarasa/',
100
- },
101
- ],
91
+ bibliography: bibliography,
102
92
  howTo: howToData,
103
93
  schemas: [faqSchema, howToSchema, appSchema],
104
94
  seo: [
@@ -1,5 +1,6 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
+ import { bibliography } from '../bibliography';
3
4
  import type { FiberPrepUI } from '../ui';
4
5
 
5
6
  const slug = 'podgotovka-volokon-krashenie';
@@ -11,7 +12,7 @@ const faqData = [
11
12
  {
12
13
  question: 'Что такое WOF (Weight of Fiber)?',
13
14
  answer:
14
- 'WOFэто стандартная система расчета необходимого количества пигмента или протравы. Она основывается на сухом весе волокна. Например, 100% WOF луковой шелухи для 100 г шерсти означает, что вам понадобится 100 г луковой шелухи.',
15
+ 'WOF - это стандартная система расчета необходимого количества пигмента или протравы. Она основывается на сухом весе волокна. Например, 100% WOF луковой шелухи для 100 г шерсти означает, что вам понадобится 100 г луковой шелухи.',
15
16
  },
16
17
  {
17
18
  question: 'Почему необходимо протравливание?',
@@ -86,19 +87,8 @@ export const content: ToolLocaleContent<FiberPrepUI> = {
86
87
  slug,
87
88
  title,
88
89
  description,
89
- faqTitle: 'Часто задаваемые вопросы',
90
90
  faq: faqData,
91
- bibliographyTitle: 'Библиография',
92
- bibliography: [
93
- {
94
- name: 'La Escuela Artesana - Taller de Tintes Naturales sobre Lana',
95
- url: 'https://laescuelaartesana.com/taller-de-tintes-naturales-sobre-lana/',
96
- },
97
- {
98
- name: 'Tatiana Sarasa (@tatianasarasa) - Artista Textil и Natural Dyes',
99
- url: 'https://www.instagram.com/tatianasarasa/',
100
- },
101
- ],
91
+ bibliography: bibliography,
102
92
  howTo: howToData,
103
93
  schemas: [faqSchema, howToSchema, appSchema],
104
94
  seo: [
@@ -109,7 +99,7 @@ export const content: ToolLocaleContent<FiberPrepUI> = {
109
99
  },
110
100
  {
111
101
  type: 'paragraph',
112
- html: 'Подготовка волокна к крашениюэто не просто его стирка. Это процесс химической инженерии на молекулярном уровне, называемый протравливанием. Слово происходит от латинского <i>mordere</i> (кусать), и его функцияслужить химическим мостиком между волокном и пигментом. Без этого мостика большинство натуральных красителей просто смылось бы при первом полоскании.',
102
+ html: 'Подготовка волокна к крашению - это не просто его стирка. Это процесс химической инженерии на молекулярном уровне, называемый протравливанием. Слово происходит от латинского <i>mordere</i> (кусать), и его функция - служить химическим мостиком между волокном и пигментом. Без этого мостика большинство натуральных красителей просто смылось бы при первом полоскании.',
113
103
  },
114
104
  {
115
105
  type: 'card',
@@ -141,7 +131,7 @@ export const content: ToolLocaleContent<FiberPrepUI> = {
141
131
  },
142
132
  {
143
133
  type: 'paragraph',
144
- html: 'Для получения профессиональных и воспроизводимых результатов правилоэто концепция <strong>WOF (Weight of Fabric)</strong>. Все измеряется как процент от сухого веса волокна. Избыток протравы может перенасытить волокно, сделав его грубым или оставив металлические отложения, которые изменят конечный цвет.',
134
+ html: 'Для получения профессиональных и воспроизводимых результатов правило - это концепция <strong>WOF (Weight of Fabric)</strong>. Все измеряется как процент от сухого веса волокна. Избыток протравы может перенасытить волокно, сделав его грубым или оставив металлические отложения, которые изменят конечный цвет.',
145
135
  },
146
136
  {
147
137
  type: 'tip',
@@ -1,5 +1,6 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
+ import { bibliography } from '../bibliography';
3
4
  import type { FiberPrepUI } from '../ui';
4
5
 
5
6
  const slug = 'fiberberedning-fargning';
@@ -86,19 +87,8 @@ export const content: ToolLocaleContent<FiberPrepUI> = {
86
87
  slug,
87
88
  title,
88
89
  description,
89
- faqTitle: 'Vanliga frågor',
90
90
  faq: faqData,
91
- bibliographyTitle: 'Bibliografi',
92
- bibliography: [
93
- {
94
- name: 'La Escuela Artesana - Taller de Tintes Naturales sobre Lana',
95
- url: 'https://laescuelaartesana.com/taller-de-tintes-naturales-sobre-lana/',
96
- },
97
- {
98
- name: 'Tatiana Sarasa (@tatianasarasa) - Textilkonstnär och naturliga färgämnen',
99
- url: 'https://www.instagram.com/tatianasarasa/',
100
- },
101
- ],
91
+ bibliography: bibliography,
102
92
  howTo: howToData,
103
93
  schemas: [faqSchema, howToSchema, appSchema],
104
94
  seo: [
@@ -1,5 +1,6 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
+ import { bibliography } from '../bibliography';
3
4
  import type { FiberPrepUI } from '../ui';
4
5
 
5
6
  const slug = 'elyaflarin-boyamaya-hazirlanmasi';
@@ -86,19 +87,8 @@ export const content: ToolLocaleContent<FiberPrepUI> = {
86
87
  slug,
87
88
  title,
88
89
  description,
89
- faqTitle: 'Sıkça Sorulan Sorular',
90
90
  faq: faqData,
91
- bibliographyTitle: 'Kaynakça',
92
- bibliography: [
93
- {
94
- name: 'La Escuela Artesana - Taller de Tintes Naturales sobre Lana',
95
- url: 'https://laescuelaartesana.com/taller-de-tintes-naturales-sobre-lana/',
96
- },
97
- {
98
- name: 'Tatiana Sarasa (@tatianasarasa) - Tekstil Sanatçısı ve Doğal Boyalar',
99
- url: 'https://www.instagram.com/tatianasarasa/',
100
- },
101
- ],
91
+ bibliography: bibliography,
102
92
  howTo: howToData,
103
93
  schemas: [faqSchema, howToSchema, appSchema],
104
94
  seo: [