@jjlmoya/utils-diy 1.10.0 → 1.12.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 (286) hide show
  1. package/package.json +1 -1
  2. package/src/category/index.ts +2 -1
  3. package/src/entries.ts +3 -1
  4. package/src/index.ts +2 -0
  5. package/src/pages/[locale]/[slug].astro +28 -12
  6. package/src/tests/locale_completeness.test.ts +7 -9
  7. package/src/tests/shared-test-helpers.ts +56 -0
  8. package/src/tests/tool_exports.test.ts +34 -0
  9. package/src/tests/tool_validation.test.ts +2 -2
  10. package/src/tool/balusterCalculator/baluster-calculator.css +9 -9
  11. package/src/tool/balusterCalculator/bibliography.astro +2 -10
  12. package/src/tool/balusterCalculator/bibliography.ts +16 -0
  13. package/src/tool/balusterCalculator/i18n/de.ts +2 -15
  14. package/src/tool/balusterCalculator/i18n/en.ts +2 -15
  15. package/src/tool/balusterCalculator/i18n/es.ts +2 -15
  16. package/src/tool/balusterCalculator/i18n/fr.ts +2 -15
  17. package/src/tool/balusterCalculator/i18n/id.ts +2 -15
  18. package/src/tool/balusterCalculator/i18n/it.ts +2 -15
  19. package/src/tool/balusterCalculator/i18n/ja.ts +2 -15
  20. package/src/tool/balusterCalculator/i18n/ko.ts +2 -15
  21. package/src/tool/balusterCalculator/i18n/nl.ts +2 -15
  22. package/src/tool/balusterCalculator/i18n/pl.ts +2 -15
  23. package/src/tool/balusterCalculator/i18n/pt.ts +2 -15
  24. package/src/tool/balusterCalculator/i18n/ru.ts +2 -15
  25. package/src/tool/balusterCalculator/i18n/sv.ts +2 -15
  26. package/src/tool/balusterCalculator/i18n/tr.ts +2 -15
  27. package/src/tool/balusterCalculator/i18n/zh.ts +2 -15
  28. package/src/tool/balusterCalculator/seo.astro +1 -1
  29. package/src/tool/clayCalculator/bibliography.astro +2 -10
  30. package/src/tool/clayCalculator/bibliography.ts +12 -0
  31. package/src/tool/clayCalculator/clay-shrinkage-calculator.css +30 -30
  32. package/src/tool/clayCalculator/i18n/de.ts +2 -11
  33. package/src/tool/clayCalculator/i18n/en.ts +2 -11
  34. package/src/tool/clayCalculator/i18n/es.ts +2 -11
  35. package/src/tool/clayCalculator/i18n/fr.ts +2 -11
  36. package/src/tool/clayCalculator/i18n/id.ts +2 -11
  37. package/src/tool/clayCalculator/i18n/it.ts +2 -11
  38. package/src/tool/clayCalculator/i18n/ja.ts +2 -11
  39. package/src/tool/clayCalculator/i18n/ko.ts +2 -11
  40. package/src/tool/clayCalculator/i18n/nl.ts +2 -11
  41. package/src/tool/clayCalculator/i18n/pl.ts +2 -11
  42. package/src/tool/clayCalculator/i18n/pt.ts +2 -11
  43. package/src/tool/clayCalculator/i18n/ru.ts +2 -11
  44. package/src/tool/clayCalculator/i18n/sv.ts +2 -11
  45. package/src/tool/clayCalculator/i18n/tr.ts +2 -11
  46. package/src/tool/clayCalculator/i18n/zh.ts +2 -11
  47. package/src/tool/clayCalculator/seo.astro +1 -1
  48. package/src/tool/concreteCalculator/bibliography.astro +2 -9
  49. package/src/tool/concreteCalculator/bibliography.ts +7 -0
  50. package/src/tool/concreteCalculator/concrete-mortar-calculator.css +18 -18
  51. package/src/tool/concreteCalculator/i18n/de.ts +2 -15
  52. package/src/tool/concreteCalculator/i18n/en.ts +2 -15
  53. package/src/tool/concreteCalculator/i18n/es.ts +2 -15
  54. package/src/tool/concreteCalculator/i18n/fr.ts +2 -15
  55. package/src/tool/concreteCalculator/i18n/id.ts +2 -15
  56. package/src/tool/concreteCalculator/i18n/it.ts +2 -15
  57. package/src/tool/concreteCalculator/i18n/ja.ts +2 -15
  58. package/src/tool/concreteCalculator/i18n/ko.ts +2 -15
  59. package/src/tool/concreteCalculator/i18n/nl.ts +2 -15
  60. package/src/tool/concreteCalculator/i18n/pl.ts +2 -15
  61. package/src/tool/concreteCalculator/i18n/pt.ts +2 -15
  62. package/src/tool/concreteCalculator/i18n/ru.ts +2 -15
  63. package/src/tool/concreteCalculator/i18n/sv.ts +2 -15
  64. package/src/tool/concreteCalculator/i18n/tr.ts +2 -15
  65. package/src/tool/concreteCalculator/i18n/zh.ts +2 -15
  66. package/src/tool/concreteCalculator/seo.astro +2 -1
  67. package/src/tool/cutOptimizer/bibliography.astro +2 -9
  68. package/src/tool/cutOptimizer/bibliography.ts +12 -0
  69. package/src/tool/cutOptimizer/cut-optimizer.css +25 -25
  70. package/src/tool/cutOptimizer/i18n/de.ts +2 -11
  71. package/src/tool/cutOptimizer/i18n/en.ts +2 -11
  72. package/src/tool/cutOptimizer/i18n/es.ts +2 -11
  73. package/src/tool/cutOptimizer/i18n/fr.ts +2 -11
  74. package/src/tool/cutOptimizer/i18n/id.ts +2 -11
  75. package/src/tool/cutOptimizer/i18n/it.ts +2 -11
  76. package/src/tool/cutOptimizer/i18n/ja.ts +2 -11
  77. package/src/tool/cutOptimizer/i18n/ko.ts +2 -11
  78. package/src/tool/cutOptimizer/i18n/nl.ts +2 -11
  79. package/src/tool/cutOptimizer/i18n/pl.ts +2 -11
  80. package/src/tool/cutOptimizer/i18n/pt.ts +2 -11
  81. package/src/tool/cutOptimizer/i18n/ru.ts +2 -11
  82. package/src/tool/cutOptimizer/i18n/sv.ts +2 -11
  83. package/src/tool/cutOptimizer/i18n/tr.ts +2 -11
  84. package/src/tool/cutOptimizer/i18n/zh.ts +2 -11
  85. package/src/tool/cutOptimizer/seo.astro +2 -1
  86. package/src/tool/drillCalculator/bibliography.astro +2 -9
  87. package/src/tool/drillCalculator/bibliography.ts +12 -0
  88. package/src/tool/drillCalculator/drill-rpm-calculator.css +57 -57
  89. package/src/tool/drillCalculator/i18n/de.ts +2 -5
  90. package/src/tool/drillCalculator/i18n/en.ts +2 -5
  91. package/src/tool/drillCalculator/i18n/es.ts +2 -5
  92. package/src/tool/drillCalculator/i18n/fr.ts +2 -5
  93. package/src/tool/drillCalculator/i18n/id.ts +2 -5
  94. package/src/tool/drillCalculator/i18n/it.ts +2 -5
  95. package/src/tool/drillCalculator/i18n/ja.ts +2 -5
  96. package/src/tool/drillCalculator/i18n/ko.ts +2 -5
  97. package/src/tool/drillCalculator/i18n/nl.ts +2 -5
  98. package/src/tool/drillCalculator/i18n/pl.ts +2 -5
  99. package/src/tool/drillCalculator/i18n/pt.ts +2 -5
  100. package/src/tool/drillCalculator/i18n/ru.ts +2 -5
  101. package/src/tool/drillCalculator/i18n/sv.ts +2 -5
  102. package/src/tool/drillCalculator/i18n/tr.ts +2 -5
  103. package/src/tool/drillCalculator/i18n/zh.ts +2 -5
  104. package/src/tool/drillCalculator/seo.astro +2 -1
  105. package/src/tool/drillSharpener/bibliography.astro +2 -9
  106. package/src/tool/drillSharpener/bibliography.ts +16 -0
  107. package/src/tool/drillSharpener/drill-sharpening-master.css +1 -1
  108. package/src/tool/drillSharpener/i18n/de.ts +2 -5
  109. package/src/tool/drillSharpener/i18n/en.ts +2 -6
  110. package/src/tool/drillSharpener/i18n/es.ts +2 -6
  111. package/src/tool/drillSharpener/i18n/fr.ts +2 -6
  112. package/src/tool/drillSharpener/i18n/id.ts +2 -5
  113. package/src/tool/drillSharpener/i18n/it.ts +2 -5
  114. package/src/tool/drillSharpener/i18n/ja.ts +2 -5
  115. package/src/tool/drillSharpener/i18n/ko.ts +2 -5
  116. package/src/tool/drillSharpener/i18n/nl.ts +2 -5
  117. package/src/tool/drillSharpener/i18n/pl.ts +2 -5
  118. package/src/tool/drillSharpener/i18n/pt.ts +2 -5
  119. package/src/tool/drillSharpener/i18n/ru.ts +2 -5
  120. package/src/tool/drillSharpener/i18n/sv.ts +2 -5
  121. package/src/tool/drillSharpener/i18n/tr.ts +2 -5
  122. package/src/tool/drillSharpener/i18n/zh.ts +2 -5
  123. package/src/tool/drillSharpener/seo.astro +2 -1
  124. package/src/tool/epoxyCalculator/bibliography.astro +2 -10
  125. package/src/tool/epoxyCalculator/bibliography.ts +20 -0
  126. package/src/tool/epoxyCalculator/epoxy-resin-calculator.css +13 -13
  127. package/src/tool/epoxyCalculator/i18n/de.ts +2 -5
  128. package/src/tool/epoxyCalculator/i18n/en.ts +2 -19
  129. package/src/tool/epoxyCalculator/i18n/es.ts +2 -19
  130. package/src/tool/epoxyCalculator/i18n/fr.ts +2 -19
  131. package/src/tool/epoxyCalculator/i18n/id.ts +2 -5
  132. package/src/tool/epoxyCalculator/i18n/it.ts +2 -5
  133. package/src/tool/epoxyCalculator/i18n/ja.ts +2 -5
  134. package/src/tool/epoxyCalculator/i18n/ko.ts +2 -5
  135. package/src/tool/epoxyCalculator/i18n/nl.ts +2 -5
  136. package/src/tool/epoxyCalculator/i18n/pl.ts +2 -5
  137. package/src/tool/epoxyCalculator/i18n/pt.ts +2 -5
  138. package/src/tool/epoxyCalculator/i18n/ru.ts +2 -5
  139. package/src/tool/epoxyCalculator/i18n/sv.ts +2 -5
  140. package/src/tool/epoxyCalculator/i18n/tr.ts +2 -5
  141. package/src/tool/epoxyCalculator/i18n/zh.ts +2 -5
  142. package/src/tool/epoxyCalculator/seo.astro +1 -1
  143. package/src/tool/furnitureFit/bibliography.astro +2 -9
  144. package/src/tool/furnitureFit/bibliography.ts +12 -0
  145. package/src/tool/furnitureFit/furniture-fit-calculator.css +7 -7
  146. package/src/tool/furnitureFit/i18n/de.ts +2 -5
  147. package/src/tool/furnitureFit/i18n/en.ts +2 -5
  148. package/src/tool/furnitureFit/i18n/es.ts +2 -5
  149. package/src/tool/furnitureFit/i18n/fr.ts +2 -5
  150. package/src/tool/furnitureFit/i18n/id.ts +2 -5
  151. package/src/tool/furnitureFit/i18n/it.ts +2 -5
  152. package/src/tool/furnitureFit/i18n/ja.ts +2 -5
  153. package/src/tool/furnitureFit/i18n/ko.ts +2 -5
  154. package/src/tool/furnitureFit/i18n/nl.ts +2 -5
  155. package/src/tool/furnitureFit/i18n/pl.ts +2 -5
  156. package/src/tool/furnitureFit/i18n/pt.ts +2 -5
  157. package/src/tool/furnitureFit/i18n/ru.ts +2 -5
  158. package/src/tool/furnitureFit/i18n/sv.ts +2 -5
  159. package/src/tool/furnitureFit/i18n/tr.ts +2 -5
  160. package/src/tool/furnitureFit/i18n/zh.ts +2 -5
  161. package/src/tool/furnitureFit/seo.astro +2 -1
  162. package/src/tool/mortarCalculator/bibliography.astro +2 -9
  163. package/src/tool/mortarCalculator/bibliography.ts +20 -0
  164. package/src/tool/mortarCalculator/i18n/de.ts +2 -5
  165. package/src/tool/mortarCalculator/i18n/en.ts +2 -19
  166. package/src/tool/mortarCalculator/i18n/es.ts +2 -19
  167. package/src/tool/mortarCalculator/i18n/fr.ts +2 -19
  168. package/src/tool/mortarCalculator/i18n/id.ts +2 -5
  169. package/src/tool/mortarCalculator/i18n/it.ts +2 -5
  170. package/src/tool/mortarCalculator/i18n/ja.ts +2 -5
  171. package/src/tool/mortarCalculator/i18n/ko.ts +2 -5
  172. package/src/tool/mortarCalculator/i18n/nl.ts +2 -5
  173. package/src/tool/mortarCalculator/i18n/pl.ts +2 -5
  174. package/src/tool/mortarCalculator/i18n/pt.ts +2 -5
  175. package/src/tool/mortarCalculator/i18n/ru.ts +2 -5
  176. package/src/tool/mortarCalculator/i18n/sv.ts +2 -5
  177. package/src/tool/mortarCalculator/i18n/tr.ts +2 -5
  178. package/src/tool/mortarCalculator/i18n/zh.ts +2 -5
  179. package/src/tool/mortarCalculator/lime-mortar-calculator.css +30 -30
  180. package/src/tool/mortarCalculator/seo.astro +2 -1
  181. package/src/tool/passepartoutCalculator/bibliography.astro +2 -9
  182. package/src/tool/passepartoutCalculator/bibliography.ts +16 -0
  183. package/src/tool/passepartoutCalculator/i18n/de.ts +2 -6
  184. package/src/tool/passepartoutCalculator/i18n/en.ts +2 -15
  185. package/src/tool/passepartoutCalculator/i18n/es.ts +2 -15
  186. package/src/tool/passepartoutCalculator/i18n/fr.ts +2 -15
  187. package/src/tool/passepartoutCalculator/i18n/id.ts +2 -6
  188. package/src/tool/passepartoutCalculator/i18n/it.ts +2 -6
  189. package/src/tool/passepartoutCalculator/i18n/ja.ts +2 -6
  190. package/src/tool/passepartoutCalculator/i18n/ko.ts +2 -6
  191. package/src/tool/passepartoutCalculator/i18n/nl.ts +2 -6
  192. package/src/tool/passepartoutCalculator/i18n/pl.ts +2 -6
  193. package/src/tool/passepartoutCalculator/i18n/pt.ts +2 -6
  194. package/src/tool/passepartoutCalculator/i18n/ru.ts +2 -6
  195. package/src/tool/passepartoutCalculator/i18n/sv.ts +2 -6
  196. package/src/tool/passepartoutCalculator/i18n/tr.ts +2 -6
  197. package/src/tool/passepartoutCalculator/i18n/zh.ts +2 -6
  198. package/src/tool/passepartoutCalculator/passepartout-calculator.css +26 -26
  199. package/src/tool/passepartoutCalculator/seo.astro +2 -1
  200. package/src/tool/stairCalculator/bibliography.astro +2 -9
  201. package/src/tool/stairCalculator/bibliography.ts +16 -0
  202. package/src/tool/stairCalculator/i18n/de.ts +2 -5
  203. package/src/tool/stairCalculator/i18n/en.ts +2 -6
  204. package/src/tool/stairCalculator/i18n/es.ts +2 -6
  205. package/src/tool/stairCalculator/i18n/fr.ts +2 -6
  206. package/src/tool/stairCalculator/i18n/id.ts +2 -5
  207. package/src/tool/stairCalculator/i18n/it.ts +2 -5
  208. package/src/tool/stairCalculator/i18n/ja.ts +2 -5
  209. package/src/tool/stairCalculator/i18n/ko.ts +2 -5
  210. package/src/tool/stairCalculator/i18n/nl.ts +2 -5
  211. package/src/tool/stairCalculator/i18n/pl.ts +2 -5
  212. package/src/tool/stairCalculator/i18n/pt.ts +2 -5
  213. package/src/tool/stairCalculator/i18n/ru.ts +2 -5
  214. package/src/tool/stairCalculator/i18n/sv.ts +2 -5
  215. package/src/tool/stairCalculator/i18n/tr.ts +2 -5
  216. package/src/tool/stairCalculator/i18n/zh.ts +2 -5
  217. package/src/tool/stairCalculator/seo.astro +2 -1
  218. package/src/tool/stairCalculator/stair-calculator.css +10 -10
  219. package/src/tool/thermalExpansionCalculator/bibliography.astro +2 -9
  220. package/src/tool/thermalExpansionCalculator/bibliography.ts +16 -0
  221. package/src/tool/thermalExpansionCalculator/i18n/de.ts +2 -6
  222. package/src/tool/thermalExpansionCalculator/i18n/en.ts +2 -6
  223. package/src/tool/thermalExpansionCalculator/i18n/es.ts +2 -6
  224. package/src/tool/thermalExpansionCalculator/i18n/fr.ts +2 -6
  225. package/src/tool/thermalExpansionCalculator/i18n/id.ts +2 -6
  226. package/src/tool/thermalExpansionCalculator/i18n/it.ts +2 -6
  227. package/src/tool/thermalExpansionCalculator/i18n/ja.ts +2 -6
  228. package/src/tool/thermalExpansionCalculator/i18n/ko.ts +2 -6
  229. package/src/tool/thermalExpansionCalculator/i18n/nl.ts +2 -6
  230. package/src/tool/thermalExpansionCalculator/i18n/pl.ts +2 -6
  231. package/src/tool/thermalExpansionCalculator/i18n/pt.ts +2 -6
  232. package/src/tool/thermalExpansionCalculator/i18n/ru.ts +2 -6
  233. package/src/tool/thermalExpansionCalculator/i18n/sv.ts +2 -6
  234. package/src/tool/thermalExpansionCalculator/i18n/tr.ts +2 -6
  235. package/src/tool/thermalExpansionCalculator/i18n/zh.ts +2 -6
  236. package/src/tool/thermalExpansionCalculator/seo.astro +2 -1
  237. package/src/tool/thermalExpansionCalculator/thermal-expansion-calculator.css +19 -19
  238. package/src/tool/voltageDropCalculator/bibliography.astro +2 -9
  239. package/src/tool/voltageDropCalculator/bibliography.ts +16 -0
  240. package/src/tool/voltageDropCalculator/i18n/de.ts +2 -5
  241. package/src/tool/voltageDropCalculator/i18n/en.ts +2 -6
  242. package/src/tool/voltageDropCalculator/i18n/es.ts +2 -6
  243. package/src/tool/voltageDropCalculator/i18n/fr.ts +2 -6
  244. package/src/tool/voltageDropCalculator/i18n/id.ts +2 -5
  245. package/src/tool/voltageDropCalculator/i18n/it.ts +2 -5
  246. package/src/tool/voltageDropCalculator/i18n/ja.ts +2 -5
  247. package/src/tool/voltageDropCalculator/i18n/ko.ts +2 -5
  248. package/src/tool/voltageDropCalculator/i18n/nl.ts +2 -5
  249. package/src/tool/voltageDropCalculator/i18n/pl.ts +2 -5
  250. package/src/tool/voltageDropCalculator/i18n/pt.ts +2 -5
  251. package/src/tool/voltageDropCalculator/i18n/ru.ts +2 -5
  252. package/src/tool/voltageDropCalculator/i18n/sv.ts +2 -5
  253. package/src/tool/voltageDropCalculator/i18n/tr.ts +2 -5
  254. package/src/tool/voltageDropCalculator/i18n/zh.ts +2 -5
  255. package/src/tool/voltageDropCalculator/seo.astro +2 -1
  256. package/src/tool/voltageDropCalculator/voltage-drop-calculator.css +24 -24
  257. package/src/tool/workshopFractionConverter/bibliography.astro +6 -0
  258. package/src/tool/workshopFractionConverter/bibliography.ts +12 -0
  259. package/src/tool/workshopFractionConverter/client.ts +183 -0
  260. package/src/tool/workshopFractionConverter/component.astro +226 -0
  261. package/src/tool/workshopFractionConverter/converter.ts +110 -0
  262. package/src/tool/workshopFractionConverter/engine.ts +223 -0
  263. package/src/tool/workshopFractionConverter/entry.ts +24 -0
  264. package/src/tool/workshopFractionConverter/i18n/de.ts +141 -0
  265. package/src/tool/workshopFractionConverter/i18n/en.ts +141 -0
  266. package/src/tool/workshopFractionConverter/i18n/es.ts +141 -0
  267. package/src/tool/workshopFractionConverter/i18n/fr.ts +141 -0
  268. package/src/tool/workshopFractionConverter/i18n/id.ts +141 -0
  269. package/src/tool/workshopFractionConverter/i18n/it.ts +141 -0
  270. package/src/tool/workshopFractionConverter/i18n/ja.ts +141 -0
  271. package/src/tool/workshopFractionConverter/i18n/ko.ts +141 -0
  272. package/src/tool/workshopFractionConverter/i18n/nl.ts +141 -0
  273. package/src/tool/workshopFractionConverter/i18n/pl.ts +141 -0
  274. package/src/tool/workshopFractionConverter/i18n/pt.ts +141 -0
  275. package/src/tool/workshopFractionConverter/i18n/ru.ts +141 -0
  276. package/src/tool/workshopFractionConverter/i18n/sv.ts +141 -0
  277. package/src/tool/workshopFractionConverter/i18n/tr.ts +141 -0
  278. package/src/tool/workshopFractionConverter/i18n/zh.ts +141 -0
  279. package/src/tool/workshopFractionConverter/index.ts +11 -0
  280. package/src/tool/workshopFractionConverter/seo.astro +15 -0
  281. package/src/tool/workshopFractionConverter/types-client.ts +89 -0
  282. package/src/tool/workshopFractionConverter/ui-updater.ts +94 -0
  283. package/src/tool/workshopFractionConverter/ui.ts +38 -0
  284. package/src/tool/workshopFractionConverter/workshop-fraction-converter.css +563 -0
  285. package/src/tools.ts +2 -1
  286. package/src/types.ts +1 -1
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { ConcreteCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'betong-bruk-kalkylator';
6
7
  const title = 'Betong och brukskalkylator: Exakta mängder cement, sand och vatten';
@@ -94,21 +95,7 @@ export const content: ToolLocaleContent<ConcreteCalculatorUI> = {
94
95
  description,
95
96
  faqTitle: 'Vanliga frågor',
96
97
  faq: faqData,
97
- bibliographyTitle: 'Tekniska referenser',
98
- bibliography: [
99
- {
100
- name: 'Boverkets konstruktionsregler (EKS) - Sverige',
101
- url: 'https://www.boverket.se/',
102
- },
103
- {
104
- name: 'Concrete Mix Proportioning Standards (ASTM)',
105
- url: 'https://store.astm.org/astm-bos-04.02.html',
106
- },
107
- {
108
- name: 'Guide för dosering av cementbruk',
109
- url: 'https://sv.wikipedia.org/wiki/Murbruk',
110
- },
111
- ],
98
+ bibliography,
112
99
  howTo: howToData,
113
100
  schemas: [faqSchema, howToSchema, appSchema],
114
101
  seo: [
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { ConcreteCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'beton-harc-hesaplama';
6
7
  const title = 'Beton ve Harç Hesaplayıcı: Tam Çimento, Kum ve Su Miktarları';
@@ -94,21 +95,7 @@ export const content: ToolLocaleContent<ConcreteCalculatorUI> = {
94
95
  description,
95
96
  faqTitle: 'Sıkça Sorulan Sorular',
96
97
  faq: faqData,
97
- bibliographyTitle: 'Teknik Referanslar',
98
- bibliography: [
99
- {
100
- name: 'TS EN 206 - Beton - Özellik, performans, imalat ve uygunluk',
101
- url: 'https://www.tse.org.tr/',
102
- },
103
- {
104
- name: 'Concrete Mix Proportioning Standards (ASTM)',
105
- url: 'https://store.astm.org/astm-bos-04.02.html',
106
- },
107
- {
108
- name: 'Çimento Harçları Dozaj Kılavuzu',
109
- url: 'https://tr.wikipedia.org/wiki/Har%C3%A7_(in%C5%9Faat)',
110
- },
111
- ],
98
+ bibliography,
112
99
  howTo: howToData,
113
100
  schemas: [faqSchema, howToSchema, appSchema],
114
101
  seo: [
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { ConcreteCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'concrete-mortar-calculator';
6
7
  const title = '混凝土与砂浆计算器:水泥、沙子和水的精确用量';
@@ -94,21 +95,7 @@ export const content: ToolLocaleContent<ConcreteCalculatorUI> = {
94
95
  description,
95
96
  faqTitle: '常见问题',
96
97
  faq: faqData,
97
- bibliographyTitle: '技术参考',
98
- bibliography: [
99
- {
100
- name: 'GB 50204-2015 混凝土结构工程施工质量验收规范 (中国)',
101
- url: 'http://www.mohurd.gov.cn/',
102
- },
103
- {
104
- name: 'Concrete Mix Proportioning Standards (ASTM)',
105
- url: 'https://store.astm.org/astm-bos-04.02.html',
106
- },
107
- {
108
- name: '水泥砂浆配比百科',
109
- url: 'https://zh.wikipedia.org/wiki/砂浆',
110
- },
111
- ],
98
+ bibliography,
112
99
  howTo: howToData,
113
100
  schemas: [faqSchema, howToSchema, appSchema],
114
101
  seo: [
@@ -6,9 +6,10 @@ import type { KnownLocale } from '../../types';
6
6
  interface Props {
7
7
  locale?: KnownLocale;
8
8
  }
9
+
9
10
  const { locale = 'es' } = Astro.props;
10
11
  const content = await concreteCalculator.i18n[locale]?.();
11
12
  if (!content) return null;
12
13
  ---
13
14
 
14
- <SEORenderer content={{ locale: locale as string, sections: content.seo }} />
15
+ {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
@@ -1,13 +1,6 @@
1
1
  ---
2
2
  import { Bibliography as SharedBibliography } from '@jjlmoya/utils-shared';
3
- import { cutOptimizer } from './index';
4
- import type { KnownLocale } from '../../types';
5
-
6
- interface Props {
7
- locale?: KnownLocale;
8
- }
9
- const { locale = 'es' } = Astro.props;
10
- const content = await cutOptimizer.i18n[locale]?.();
3
+ import { bibliography } from './bibliography';
11
4
  ---
12
5
 
13
- {content && <SharedBibliography links={content.bibliography} />}
6
+ <SharedBibliography links={bibliography} />
@@ -0,0 +1,12 @@
1
+ import type { BibliographyEntry } from '../../types';
2
+
3
+ export const bibliography: BibliographyEntry[] = [
4
+ {
5
+ name: 'Cutting Stock Problem: Wikipedia',
6
+ url: 'https://en.wikipedia.org/wiki/Cutting_stock_problem',
7
+ },
8
+ {
9
+ name: 'Bin Packing Problem: Wolfram MathWorld',
10
+ url: 'https://mathworld.wolfram.com/BinPackingProblem.html',
11
+ },
12
+ ];
@@ -34,7 +34,7 @@
34
34
  border: 1px solid #f1f5f9;
35
35
  }
36
36
 
37
- :global(.theme-dark) .co-card {
37
+ .theme-dark .co-card {
38
38
  background: #1e293b;
39
39
  border-color: #334155;
40
40
  }
@@ -49,7 +49,7 @@
49
49
  margin: 0 0 1rem;
50
50
  }
51
51
 
52
- :global(.theme-dark) .co-card-title {
52
+ .theme-dark .co-card-title {
53
53
  color: #fff;
54
54
  }
55
55
 
@@ -79,7 +79,7 @@
79
79
  margin-bottom: 1.5rem;
80
80
  }
81
81
 
82
- :global(.theme-dark) .co-mode-toggle {
82
+ .theme-dark .co-mode-toggle {
83
83
  background: rgba(30, 41, 59, 0.8);
84
84
  }
85
85
 
@@ -102,11 +102,11 @@
102
102
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12);
103
103
  }
104
104
 
105
- :global(.theme-dark) .co-mode-btn {
105
+ .theme-dark .co-mode-btn {
106
106
  color: #94a3b8;
107
107
  }
108
108
 
109
- :global(.theme-dark) .co-mode-btn.co-mode-active {
109
+ .theme-dark .co-mode-btn.co-mode-active {
110
110
  color: #fff;
111
111
  }
112
112
 
@@ -148,7 +148,7 @@
148
148
  box-shadow: 0 0 0 3px rgba(249, 115, 22, 0.1);
149
149
  }
150
150
 
151
- :global(.theme-dark) .co-input {
151
+ .theme-dark .co-input {
152
152
  background: #0f172a;
153
153
  border-color: #334155;
154
154
  color: #fff;
@@ -176,7 +176,7 @@
176
176
  height: 1.25rem;
177
177
  }
178
178
 
179
- :global(.theme-dark) .co-btn-add {
179
+ .theme-dark .co-btn-add {
180
180
  background: rgba(249, 115, 22, 0.15);
181
181
  color: #fb923c;
182
182
  }
@@ -249,7 +249,7 @@
249
249
  text-align: center;
250
250
  }
251
251
 
252
- :global(.theme-dark) .co-row-input {
252
+ .theme-dark .co-row-input {
253
253
  background: #0f172a;
254
254
  border-color: #334155;
255
255
  color: #fff;
@@ -300,7 +300,7 @@
300
300
  border: 1px solid #f1f5f9;
301
301
  }
302
302
 
303
- :global(.theme-dark) .co-stat-card {
303
+ .theme-dark .co-stat-card {
304
304
  background: #1e293b;
305
305
  border-color: #334155;
306
306
  }
@@ -321,7 +321,7 @@
321
321
  line-height: 1;
322
322
  }
323
323
 
324
- :global(.theme-dark) .co-stat-value {
324
+ .theme-dark .co-stat-value {
325
325
  color: #fff;
326
326
  }
327
327
 
@@ -329,7 +329,7 @@
329
329
  color: #ef4444;
330
330
  }
331
331
 
332
- :global(.theme-dark) .co-stat-red {
332
+ .theme-dark .co-stat-red {
333
333
  color: #f87171;
334
334
  }
335
335
 
@@ -337,7 +337,7 @@
337
337
  color: #22c55e;
338
338
  }
339
339
 
340
- :global(.theme-dark) .co-stat-green {
340
+ .theme-dark .co-stat-green {
341
341
  color: #4ade80;
342
342
  }
343
343
 
@@ -352,7 +352,7 @@
352
352
  min-height: 16rem;
353
353
  }
354
354
 
355
- :global(.co-empty-state) {
355
+ .co-empty-state {
356
356
  display: flex;
357
357
  align-items: center;
358
358
  justify-content: center;
@@ -363,19 +363,19 @@
363
363
  text-align: center;
364
364
  }
365
365
 
366
- :global(.co-bar-wrap) {
366
+ .co-bar-wrap {
367
367
  background: #f8fafc;
368
368
  border-radius: 0.5rem;
369
369
  padding: 0.75rem;
370
370
  border: 1px solid #f1f5f9;
371
371
  }
372
372
 
373
- :global(.theme-dark .co-bar-wrap) {
373
+ .theme-dark .co-bar-wrap {
374
374
  background: rgba(15, 23, 42, 0.5);
375
375
  border-color: #1e293b;
376
376
  }
377
377
 
378
- :global(.co-bar-hdr) {
378
+ .co-bar-hdr {
379
379
  display: flex;
380
380
  justify-content: space-between;
381
381
  font-size: 0.7rem;
@@ -384,7 +384,7 @@
384
384
  margin-bottom: 0.5rem;
385
385
  }
386
386
 
387
- :global(.co-bar) {
387
+ .co-bar {
388
388
  height: 3rem;
389
389
  background: #e2e8f0;
390
390
  border-radius: 0.25rem;
@@ -393,11 +393,11 @@
393
393
  position: relative;
394
394
  }
395
395
 
396
- :global(.theme-dark .co-bar) {
396
+ .theme-dark .co-bar {
397
397
  background: #334155;
398
398
  }
399
399
 
400
- :global(.co-seg) {
400
+ .co-seg {
401
401
  height: 100%;
402
402
  background: linear-gradient(to bottom, #fb923c, #ea580c);
403
403
  border-right: 1px solid rgba(255, 255, 255, 0.2);
@@ -411,31 +411,31 @@
411
411
  cursor: default;
412
412
  }
413
413
 
414
- :global(.co-panel-wrap) {
414
+ .co-panel-wrap {
415
415
  background: #f8fafc;
416
416
  border-radius: 0.5rem;
417
417
  padding: 0.75rem;
418
418
  border: 1px solid #f1f5f9;
419
419
  }
420
420
 
421
- :global(.theme-dark .co-panel-wrap) {
421
+ .theme-dark .co-panel-wrap {
422
422
  background: rgba(15, 23, 42, 0.5);
423
423
  border-color: #1e293b;
424
424
  }
425
425
 
426
- :global(.co-sheet) {
426
+ .co-sheet {
427
427
  position: relative;
428
428
  background: #e2e8f0;
429
429
  width: 100%;
430
430
  border: 1px solid #cbd5e1;
431
431
  }
432
432
 
433
- :global(.theme-dark .co-sheet) {
433
+ .theme-dark .co-sheet {
434
434
  background: #334155;
435
435
  border-color: #475569;
436
436
  }
437
437
 
438
- :global(.co-rect) {
438
+ .co-rect {
439
439
  position: absolute;
440
440
  background: linear-gradient(135deg, #3b82f6, #1d4ed8);
441
441
  border: 1px solid rgba(255, 255, 255, 0.4);
@@ -450,7 +450,7 @@
450
450
  transition: filter 0.15s ease;
451
451
  }
452
452
 
453
- :global(.co-rect:hover) {
453
+ .co-rect:hover {
454
454
  filter: brightness(1.1);
455
455
  }
456
456
 
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { CutOptimizerUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'schnittoptimierung';
6
7
  const title = 'Schnittoptimierung für Leisten und Platten';
@@ -89,17 +90,7 @@ export const content: ToolLocaleContent<CutOptimizerUI> = {
89
90
  description,
90
91
  faqTitle: 'Häufig gestellte Fragen',
91
92
  faq: faqData,
92
- bibliographyTitle: 'Technische Referenzen',
93
- bibliography: [
94
- {
95
- name: 'Cutting Stock Problem: Wikipedia',
96
- url: 'https://en.wikipedia.org/wiki/Cutting_stock_problem',
97
- },
98
- {
99
- name: 'Bin Packing Problem: Wolfram MathWorld',
100
- url: 'https://mathworld.wolfram.com/BinPackingProblem.html',
101
- },
102
- ],
93
+ bibliography,
103
94
  howTo: howToData,
104
95
  schemas: [faqSchema, howToSchema, appSchema],
105
96
  seo: [
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { CutOptimizerUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'cut-optimizer';
6
7
  const title = '1D and 2D Cut Optimizer: Minimize Material Waste for Wood and Metal';
@@ -89,17 +90,7 @@ export const content: ToolLocaleContent<CutOptimizerUI> = {
89
90
  description,
90
91
  faqTitle: 'Frequently Asked Questions',
91
92
  faq: faqData,
92
- bibliographyTitle: 'Technical References',
93
- bibliography: [
94
- {
95
- name: 'Cutting Stock Problem: Wikipedia',
96
- url: 'https://en.wikipedia.org/wiki/Cutting_stock_problem',
97
- },
98
- {
99
- name: 'Bin Packing Problem: Wolfram MathWorld',
100
- url: 'https://mathworld.wolfram.com/BinPackingProblem.html',
101
- },
102
- ],
93
+ bibliography,
103
94
  howTo: howToData,
104
95
  schemas: [faqSchema, howToSchema, appSchema],
105
96
  seo: [
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { CutOptimizerUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'optimizador-corte';
6
7
  const title = 'Optimizador de Cortes de Listones y Tableros';
@@ -89,17 +90,7 @@ export const content: ToolLocaleContent<CutOptimizerUI> = {
89
90
  description,
90
91
  faqTitle: 'Preguntas Frecuentes',
91
92
  faq: faqData,
92
- bibliographyTitle: 'Referencias Técnicas',
93
- bibliography: [
94
- {
95
- name: 'Cutting Stock Problem: Wikipedia',
96
- url: 'https://en.wikipedia.org/wiki/Cutting_stock_problem',
97
- },
98
- {
99
- name: 'Bin Packing Problem: Wolfram MathWorld',
100
- url: 'https://mathworld.wolfram.com/BinPackingProblem.html',
101
- },
102
- ],
93
+ bibliography,
103
94
  howTo: howToData,
104
95
  schemas: [faqSchema, howToSchema, appSchema],
105
96
  seo: [
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { CutOptimizerUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'optimiseur-decoupe';
6
7
  const title = 'Optimiseur de Découpe 1D et 2D: Réduire les Chutes de Matériaux';
@@ -89,17 +90,7 @@ export const content: ToolLocaleContent<CutOptimizerUI> = {
89
90
  description,
90
91
  faqTitle: 'Questions Fréquentes',
91
92
  faq: faqData,
92
- bibliographyTitle: 'Références Techniques',
93
- bibliography: [
94
- {
95
- name: 'Problème de découpe de stock: Wikipedia',
96
- url: 'https://en.wikipedia.org/wiki/Cutting_stock_problem',
97
- },
98
- {
99
- name: 'Problème de bin packing: Wolfram MathWorld',
100
- url: 'https://mathworld.wolfram.com/BinPackingProblem.html',
101
- },
102
- ],
93
+ bibliography,
103
94
  howTo: howToData,
104
95
  schemas: [faqSchema, howToSchema, appSchema],
105
96
  seo: [
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { CutOptimizerUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'pengoptimal-potongan';
6
7
  const title = 'Pengoptimal Potongan Kayu dan Papan';
@@ -89,17 +90,7 @@ export const content: ToolLocaleContent<CutOptimizerUI> = {
89
90
  description,
90
91
  faqTitle: 'Pertanyaan Umum',
91
92
  faq: faqData,
92
- bibliographyTitle: 'Referensi Teknis',
93
- bibliography: [
94
- {
95
- name: 'Cutting Stock Problem: Wikipedia',
96
- url: 'https://en.wikipedia.org/wiki/Cutting_stock_problem',
97
- },
98
- {
99
- name: 'Bin Packing Problem: Wolfram MathWorld',
100
- url: 'https://mathworld.wolfram.com/BinPackingProblem.html',
101
- },
102
- ],
93
+ bibliography,
103
94
  howTo: howToData,
104
95
  schemas: [faqSchema, howToSchema, appSchema],
105
96
  seo: [
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { CutOptimizerUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'ottimizzatore-taglio';
6
7
  const title = 'Ottimizzatore di Taglio per Listelli e Pannelli';
@@ -89,17 +90,7 @@ export const content: ToolLocaleContent<CutOptimizerUI> = {
89
90
  description,
90
91
  faqTitle: 'Domande Frequenti',
91
92
  faq: faqData,
92
- bibliographyTitle: 'Riferimenti Tecnici',
93
- bibliography: [
94
- {
95
- name: 'Cutting Stock Problem: Wikipedia',
96
- url: 'https://en.wikipedia.org/wiki/Cutting_stock_problem',
97
- },
98
- {
99
- name: 'Bin Packing Problem: Wolfram MathWorld',
100
- url: 'https://mathworld.wolfram.com/BinPackingProblem.html',
101
- },
102
- ],
93
+ bibliography,
103
94
  howTo: howToData,
104
95
  schemas: [faqSchema, howToSchema, appSchema],
105
96
  seo: [
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { CutOptimizerUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'cut-optimizer';
6
7
  const title = '木材・板材カット最適化計算機';
@@ -89,17 +90,7 @@ export const content: ToolLocaleContent<CutOptimizerUI> = {
89
90
  description,
90
91
  faqTitle: 'よくある質問',
91
92
  faq: faqData,
92
- bibliographyTitle: '技術リファレンス',
93
- bibliography: [
94
- {
95
- name: 'Cutting Stock Problem: Wikipedia',
96
- url: 'https://en.wikipedia.org/wiki/Cutting_stock_problem',
97
- },
98
- {
99
- name: 'Bin Packing Problem: Wolfram MathWorld',
100
- url: 'https://mathworld.wolfram.com/BinPackingProblem.html',
101
- },
102
- ],
93
+ bibliography,
103
94
  howTo: howToData,
104
95
  schemas: [faqSchema, howToSchema, appSchema],
105
96
  seo: [
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { CutOptimizerUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'cut-optimizer';
6
7
  const title = '목재 및 판재 절단 최적화 계산기';
@@ -89,17 +90,7 @@ export const content: ToolLocaleContent<CutOptimizerUI> = {
89
90
  description,
90
91
  faqTitle: '자주 묻는 질문',
91
92
  faq: faqData,
92
- bibliographyTitle: '기술 참고 자료',
93
- bibliography: [
94
- {
95
- name: 'Cutting Stock Problem: Wikipedia',
96
- url: 'https://en.wikipedia.org/wiki/Cutting_stock_problem',
97
- },
98
- {
99
- name: 'Bin Packing Problem: Wolfram MathWorld',
100
- url: 'https://mathworld.wolfram.com/BinPackingProblem.html',
101
- },
102
- ],
93
+ bibliography,
103
94
  howTo: howToData,
104
95
  schemas: [faqSchema, howToSchema, appSchema],
105
96
  seo: [
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { CutOptimizerUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'zaagplan-optimalisatie';
6
7
  const title = 'Zaagplan Optimalisatie voor Latten en Platen';
@@ -89,17 +90,7 @@ export const content: ToolLocaleContent<CutOptimizerUI> = {
89
90
  description,
90
91
  faqTitle: 'Veelgestelde Vragen',
91
92
  faq: faqData,
92
- bibliographyTitle: 'Technische Referenties',
93
- bibliography: [
94
- {
95
- name: 'Cutting Stock Problem: Wikipedia',
96
- url: 'https://en.wikipedia.org/wiki/Cutting_stock_problem',
97
- },
98
- {
99
- name: 'Bin Packing Problem: Wolfram MathWorld',
100
- url: 'https://mathworld.wolfram.com/BinPackingProblem.html',
101
- },
102
- ],
93
+ bibliography,
103
94
  howTo: howToData,
104
95
  schemas: [faqSchema, howToSchema, appSchema],
105
96
  seo: [
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { CutOptimizerUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'optymalizator-ciecia';
6
7
  const title = 'Optymalizator Cięcia Listew i Płyt';
@@ -89,17 +90,7 @@ export const content: ToolLocaleContent<CutOptimizerUI> = {
89
90
  description,
90
91
  faqTitle: 'Często Zadawane Pytania',
91
92
  faq: faqData,
92
- bibliographyTitle: 'Referencje Techniczne',
93
- bibliography: [
94
- {
95
- name: 'Cutting Stock Problem: Wikipedia',
96
- url: 'https://en.wikipedia.org/wiki/Cutting_stock_problem',
97
- },
98
- {
99
- name: 'Bin Packing Problem: Wolfram MathWorld',
100
- url: 'https://mathworld.wolfram.com/BinPackingProblem.html',
101
- },
102
- ],
93
+ bibliography,
103
94
  howTo: howToData,
104
95
  schemas: [faqSchema, howToSchema, appSchema],
105
96
  seo: [
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { CutOptimizerUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'otimizador-corte';
6
7
  const title = 'Otimizador de Cortes de Ripas e Painéis';
@@ -89,17 +90,7 @@ export const content: ToolLocaleContent<CutOptimizerUI> = {
89
90
  description,
90
91
  faqTitle: 'Perguntas Frequentes',
91
92
  faq: faqData,
92
- bibliographyTitle: 'Referências Técnicas',
93
- bibliography: [
94
- {
95
- name: 'Cutting Stock Problem: Wikipedia',
96
- url: 'https://en.wikipedia.org/wiki/Cutting_stock_problem',
97
- },
98
- {
99
- name: 'Bin Packing Problem: Wolfram MathWorld',
100
- url: 'https://mathworld.wolfram.com/BinPackingProblem.html',
101
- },
102
- ],
93
+ bibliography,
103
94
  howTo: howToData,
104
95
  schemas: [faqSchema, howToSchema, appSchema],
105
96
  seo: [
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { CutOptimizerUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'optimizator-raskroya';
6
7
  const title = 'Оптимизатор раскроя полотна и досок';
@@ -89,17 +90,7 @@ export const content: ToolLocaleContent<CutOptimizerUI> = {
89
90
  description,
90
91
  faqTitle: 'Часто задаваемые вопросы',
91
92
  faq: faqData,
92
- bibliographyTitle: 'Технические справочники',
93
- bibliography: [
94
- {
95
- name: 'Cutting Stock Problem: Wikipedia',
96
- url: 'https://en.wikipedia.org/wiki/Cutting_stock_problem',
97
- },
98
- {
99
- name: 'Bin Packing Problem: Wolfram MathWorld',
100
- url: 'https://mathworld.wolfram.com/BinPackingProblem.html',
101
- },
102
- ],
93
+ bibliography,
103
94
  howTo: howToData,
104
95
  schemas: [faqSchema, howToSchema, appSchema],
105
96
  seo: [