@jjlmoya/utils-diy 1.11.0 → 1.13.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 (273) 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/bibliography.astro +2 -10
  11. package/src/tool/balusterCalculator/bibliography.ts +16 -0
  12. package/src/tool/balusterCalculator/i18n/de.ts +2 -15
  13. package/src/tool/balusterCalculator/i18n/en.ts +2 -15
  14. package/src/tool/balusterCalculator/i18n/es.ts +2 -15
  15. package/src/tool/balusterCalculator/i18n/fr.ts +2 -15
  16. package/src/tool/balusterCalculator/i18n/id.ts +2 -15
  17. package/src/tool/balusterCalculator/i18n/it.ts +2 -15
  18. package/src/tool/balusterCalculator/i18n/ja.ts +2 -15
  19. package/src/tool/balusterCalculator/i18n/ko.ts +2 -15
  20. package/src/tool/balusterCalculator/i18n/nl.ts +2 -15
  21. package/src/tool/balusterCalculator/i18n/pl.ts +2 -15
  22. package/src/tool/balusterCalculator/i18n/pt.ts +2 -15
  23. package/src/tool/balusterCalculator/i18n/ru.ts +2 -15
  24. package/src/tool/balusterCalculator/i18n/sv.ts +2 -15
  25. package/src/tool/balusterCalculator/i18n/tr.ts +2 -15
  26. package/src/tool/balusterCalculator/i18n/zh.ts +2 -15
  27. package/src/tool/balusterCalculator/seo.astro +1 -1
  28. package/src/tool/clayCalculator/bibliography.astro +2 -10
  29. package/src/tool/clayCalculator/bibliography.ts +12 -0
  30. package/src/tool/clayCalculator/i18n/de.ts +2 -11
  31. package/src/tool/clayCalculator/i18n/en.ts +2 -11
  32. package/src/tool/clayCalculator/i18n/es.ts +2 -11
  33. package/src/tool/clayCalculator/i18n/fr.ts +2 -11
  34. package/src/tool/clayCalculator/i18n/id.ts +2 -11
  35. package/src/tool/clayCalculator/i18n/it.ts +2 -11
  36. package/src/tool/clayCalculator/i18n/ja.ts +2 -11
  37. package/src/tool/clayCalculator/i18n/ko.ts +2 -11
  38. package/src/tool/clayCalculator/i18n/nl.ts +2 -11
  39. package/src/tool/clayCalculator/i18n/pl.ts +2 -11
  40. package/src/tool/clayCalculator/i18n/pt.ts +2 -11
  41. package/src/tool/clayCalculator/i18n/ru.ts +2 -11
  42. package/src/tool/clayCalculator/i18n/sv.ts +2 -11
  43. package/src/tool/clayCalculator/i18n/tr.ts +2 -11
  44. package/src/tool/clayCalculator/i18n/zh.ts +2 -11
  45. package/src/tool/clayCalculator/seo.astro +1 -1
  46. package/src/tool/concreteCalculator/bibliography.astro +2 -9
  47. package/src/tool/concreteCalculator/bibliography.ts +7 -0
  48. package/src/tool/concreteCalculator/i18n/de.ts +2 -15
  49. package/src/tool/concreteCalculator/i18n/en.ts +2 -15
  50. package/src/tool/concreteCalculator/i18n/es.ts +2 -15
  51. package/src/tool/concreteCalculator/i18n/fr.ts +2 -15
  52. package/src/tool/concreteCalculator/i18n/id.ts +2 -15
  53. package/src/tool/concreteCalculator/i18n/it.ts +2 -15
  54. package/src/tool/concreteCalculator/i18n/ja.ts +2 -15
  55. package/src/tool/concreteCalculator/i18n/ko.ts +2 -15
  56. package/src/tool/concreteCalculator/i18n/nl.ts +2 -15
  57. package/src/tool/concreteCalculator/i18n/pl.ts +2 -15
  58. package/src/tool/concreteCalculator/i18n/pt.ts +2 -15
  59. package/src/tool/concreteCalculator/i18n/ru.ts +2 -15
  60. package/src/tool/concreteCalculator/i18n/sv.ts +2 -15
  61. package/src/tool/concreteCalculator/i18n/tr.ts +2 -15
  62. package/src/tool/concreteCalculator/i18n/zh.ts +2 -15
  63. package/src/tool/concreteCalculator/seo.astro +2 -1
  64. package/src/tool/cutOptimizer/bibliography.astro +2 -9
  65. package/src/tool/cutOptimizer/bibliography.ts +12 -0
  66. package/src/tool/cutOptimizer/i18n/de.ts +2 -11
  67. package/src/tool/cutOptimizer/i18n/en.ts +2 -11
  68. package/src/tool/cutOptimizer/i18n/es.ts +2 -11
  69. package/src/tool/cutOptimizer/i18n/fr.ts +2 -11
  70. package/src/tool/cutOptimizer/i18n/id.ts +2 -11
  71. package/src/tool/cutOptimizer/i18n/it.ts +2 -11
  72. package/src/tool/cutOptimizer/i18n/ja.ts +2 -11
  73. package/src/tool/cutOptimizer/i18n/ko.ts +2 -11
  74. package/src/tool/cutOptimizer/i18n/nl.ts +2 -11
  75. package/src/tool/cutOptimizer/i18n/pl.ts +2 -11
  76. package/src/tool/cutOptimizer/i18n/pt.ts +2 -11
  77. package/src/tool/cutOptimizer/i18n/ru.ts +2 -11
  78. package/src/tool/cutOptimizer/i18n/sv.ts +2 -11
  79. package/src/tool/cutOptimizer/i18n/tr.ts +2 -11
  80. package/src/tool/cutOptimizer/i18n/zh.ts +2 -11
  81. package/src/tool/cutOptimizer/seo.astro +2 -1
  82. package/src/tool/drillCalculator/bibliography.astro +2 -9
  83. package/src/tool/drillCalculator/bibliography.ts +12 -0
  84. package/src/tool/drillCalculator/i18n/de.ts +2 -5
  85. package/src/tool/drillCalculator/i18n/en.ts +2 -5
  86. package/src/tool/drillCalculator/i18n/es.ts +2 -5
  87. package/src/tool/drillCalculator/i18n/fr.ts +2 -5
  88. package/src/tool/drillCalculator/i18n/id.ts +2 -5
  89. package/src/tool/drillCalculator/i18n/it.ts +2 -5
  90. package/src/tool/drillCalculator/i18n/ja.ts +2 -5
  91. package/src/tool/drillCalculator/i18n/ko.ts +2 -5
  92. package/src/tool/drillCalculator/i18n/nl.ts +2 -5
  93. package/src/tool/drillCalculator/i18n/pl.ts +2 -5
  94. package/src/tool/drillCalculator/i18n/pt.ts +2 -5
  95. package/src/tool/drillCalculator/i18n/ru.ts +2 -5
  96. package/src/tool/drillCalculator/i18n/sv.ts +2 -5
  97. package/src/tool/drillCalculator/i18n/tr.ts +2 -5
  98. package/src/tool/drillCalculator/i18n/zh.ts +2 -5
  99. package/src/tool/drillCalculator/seo.astro +2 -1
  100. package/src/tool/drillSharpener/bibliography.astro +2 -9
  101. package/src/tool/drillSharpener/bibliography.ts +16 -0
  102. package/src/tool/drillSharpener/i18n/de.ts +2 -5
  103. package/src/tool/drillSharpener/i18n/en.ts +2 -6
  104. package/src/tool/drillSharpener/i18n/es.ts +2 -6
  105. package/src/tool/drillSharpener/i18n/fr.ts +2 -6
  106. package/src/tool/drillSharpener/i18n/id.ts +2 -5
  107. package/src/tool/drillSharpener/i18n/it.ts +2 -5
  108. package/src/tool/drillSharpener/i18n/ja.ts +2 -5
  109. package/src/tool/drillSharpener/i18n/ko.ts +2 -5
  110. package/src/tool/drillSharpener/i18n/nl.ts +2 -5
  111. package/src/tool/drillSharpener/i18n/pl.ts +2 -5
  112. package/src/tool/drillSharpener/i18n/pt.ts +2 -5
  113. package/src/tool/drillSharpener/i18n/ru.ts +2 -5
  114. package/src/tool/drillSharpener/i18n/sv.ts +2 -5
  115. package/src/tool/drillSharpener/i18n/tr.ts +2 -5
  116. package/src/tool/drillSharpener/i18n/zh.ts +2 -5
  117. package/src/tool/drillSharpener/seo.astro +2 -1
  118. package/src/tool/epoxyCalculator/bibliography.astro +2 -10
  119. package/src/tool/epoxyCalculator/bibliography.ts +20 -0
  120. package/src/tool/epoxyCalculator/i18n/de.ts +2 -5
  121. package/src/tool/epoxyCalculator/i18n/en.ts +2 -19
  122. package/src/tool/epoxyCalculator/i18n/es.ts +2 -19
  123. package/src/tool/epoxyCalculator/i18n/fr.ts +2 -19
  124. package/src/tool/epoxyCalculator/i18n/id.ts +2 -5
  125. package/src/tool/epoxyCalculator/i18n/it.ts +2 -5
  126. package/src/tool/epoxyCalculator/i18n/ja.ts +2 -5
  127. package/src/tool/epoxyCalculator/i18n/ko.ts +2 -5
  128. package/src/tool/epoxyCalculator/i18n/nl.ts +2 -5
  129. package/src/tool/epoxyCalculator/i18n/pl.ts +2 -5
  130. package/src/tool/epoxyCalculator/i18n/pt.ts +2 -5
  131. package/src/tool/epoxyCalculator/i18n/ru.ts +2 -5
  132. package/src/tool/epoxyCalculator/i18n/sv.ts +2 -5
  133. package/src/tool/epoxyCalculator/i18n/tr.ts +2 -5
  134. package/src/tool/epoxyCalculator/i18n/zh.ts +2 -5
  135. package/src/tool/epoxyCalculator/seo.astro +1 -1
  136. package/src/tool/furnitureFit/bibliography.astro +2 -9
  137. package/src/tool/furnitureFit/bibliography.ts +12 -0
  138. package/src/tool/furnitureFit/i18n/de.ts +2 -5
  139. package/src/tool/furnitureFit/i18n/en.ts +2 -5
  140. package/src/tool/furnitureFit/i18n/es.ts +2 -5
  141. package/src/tool/furnitureFit/i18n/fr.ts +2 -5
  142. package/src/tool/furnitureFit/i18n/id.ts +2 -5
  143. package/src/tool/furnitureFit/i18n/it.ts +2 -5
  144. package/src/tool/furnitureFit/i18n/ja.ts +2 -5
  145. package/src/tool/furnitureFit/i18n/ko.ts +2 -5
  146. package/src/tool/furnitureFit/i18n/nl.ts +2 -5
  147. package/src/tool/furnitureFit/i18n/pl.ts +2 -5
  148. package/src/tool/furnitureFit/i18n/pt.ts +2 -5
  149. package/src/tool/furnitureFit/i18n/ru.ts +2 -5
  150. package/src/tool/furnitureFit/i18n/sv.ts +2 -5
  151. package/src/tool/furnitureFit/i18n/tr.ts +2 -5
  152. package/src/tool/furnitureFit/i18n/zh.ts +2 -5
  153. package/src/tool/furnitureFit/seo.astro +2 -1
  154. package/src/tool/mortarCalculator/bibliography.astro +2 -9
  155. package/src/tool/mortarCalculator/bibliography.ts +20 -0
  156. package/src/tool/mortarCalculator/i18n/de.ts +2 -5
  157. package/src/tool/mortarCalculator/i18n/en.ts +2 -19
  158. package/src/tool/mortarCalculator/i18n/es.ts +2 -19
  159. package/src/tool/mortarCalculator/i18n/fr.ts +2 -19
  160. package/src/tool/mortarCalculator/i18n/id.ts +2 -5
  161. package/src/tool/mortarCalculator/i18n/it.ts +2 -5
  162. package/src/tool/mortarCalculator/i18n/ja.ts +2 -5
  163. package/src/tool/mortarCalculator/i18n/ko.ts +2 -5
  164. package/src/tool/mortarCalculator/i18n/nl.ts +2 -5
  165. package/src/tool/mortarCalculator/i18n/pl.ts +2 -5
  166. package/src/tool/mortarCalculator/i18n/pt.ts +2 -5
  167. package/src/tool/mortarCalculator/i18n/ru.ts +2 -5
  168. package/src/tool/mortarCalculator/i18n/sv.ts +2 -5
  169. package/src/tool/mortarCalculator/i18n/tr.ts +2 -5
  170. package/src/tool/mortarCalculator/i18n/zh.ts +2 -5
  171. package/src/tool/mortarCalculator/seo.astro +2 -1
  172. package/src/tool/passepartoutCalculator/bibliography.astro +2 -9
  173. package/src/tool/passepartoutCalculator/bibliography.ts +16 -0
  174. package/src/tool/passepartoutCalculator/i18n/de.ts +2 -6
  175. package/src/tool/passepartoutCalculator/i18n/en.ts +2 -15
  176. package/src/tool/passepartoutCalculator/i18n/es.ts +2 -15
  177. package/src/tool/passepartoutCalculator/i18n/fr.ts +2 -15
  178. package/src/tool/passepartoutCalculator/i18n/id.ts +2 -6
  179. package/src/tool/passepartoutCalculator/i18n/it.ts +2 -6
  180. package/src/tool/passepartoutCalculator/i18n/ja.ts +2 -6
  181. package/src/tool/passepartoutCalculator/i18n/ko.ts +2 -6
  182. package/src/tool/passepartoutCalculator/i18n/nl.ts +2 -6
  183. package/src/tool/passepartoutCalculator/i18n/pl.ts +2 -6
  184. package/src/tool/passepartoutCalculator/i18n/pt.ts +2 -6
  185. package/src/tool/passepartoutCalculator/i18n/ru.ts +2 -6
  186. package/src/tool/passepartoutCalculator/i18n/sv.ts +2 -6
  187. package/src/tool/passepartoutCalculator/i18n/tr.ts +2 -6
  188. package/src/tool/passepartoutCalculator/i18n/zh.ts +2 -6
  189. package/src/tool/passepartoutCalculator/seo.astro +2 -1
  190. package/src/tool/stairCalculator/bibliography.astro +2 -9
  191. package/src/tool/stairCalculator/bibliography.ts +16 -0
  192. package/src/tool/stairCalculator/i18n/de.ts +2 -5
  193. package/src/tool/stairCalculator/i18n/en.ts +2 -6
  194. package/src/tool/stairCalculator/i18n/es.ts +2 -6
  195. package/src/tool/stairCalculator/i18n/fr.ts +2 -6
  196. package/src/tool/stairCalculator/i18n/id.ts +2 -5
  197. package/src/tool/stairCalculator/i18n/it.ts +2 -5
  198. package/src/tool/stairCalculator/i18n/ja.ts +2 -5
  199. package/src/tool/stairCalculator/i18n/ko.ts +2 -5
  200. package/src/tool/stairCalculator/i18n/nl.ts +2 -5
  201. package/src/tool/stairCalculator/i18n/pl.ts +2 -5
  202. package/src/tool/stairCalculator/i18n/pt.ts +2 -5
  203. package/src/tool/stairCalculator/i18n/ru.ts +2 -5
  204. package/src/tool/stairCalculator/i18n/sv.ts +2 -5
  205. package/src/tool/stairCalculator/i18n/tr.ts +2 -5
  206. package/src/tool/stairCalculator/i18n/zh.ts +2 -5
  207. package/src/tool/stairCalculator/seo.astro +2 -1
  208. package/src/tool/thermalExpansionCalculator/bibliography.astro +2 -9
  209. package/src/tool/thermalExpansionCalculator/bibliography.ts +16 -0
  210. package/src/tool/thermalExpansionCalculator/i18n/de.ts +2 -6
  211. package/src/tool/thermalExpansionCalculator/i18n/en.ts +2 -6
  212. package/src/tool/thermalExpansionCalculator/i18n/es.ts +2 -6
  213. package/src/tool/thermalExpansionCalculator/i18n/fr.ts +2 -6
  214. package/src/tool/thermalExpansionCalculator/i18n/id.ts +2 -6
  215. package/src/tool/thermalExpansionCalculator/i18n/it.ts +2 -6
  216. package/src/tool/thermalExpansionCalculator/i18n/ja.ts +2 -6
  217. package/src/tool/thermalExpansionCalculator/i18n/ko.ts +2 -6
  218. package/src/tool/thermalExpansionCalculator/i18n/nl.ts +2 -6
  219. package/src/tool/thermalExpansionCalculator/i18n/pl.ts +2 -6
  220. package/src/tool/thermalExpansionCalculator/i18n/pt.ts +2 -6
  221. package/src/tool/thermalExpansionCalculator/i18n/ru.ts +2 -6
  222. package/src/tool/thermalExpansionCalculator/i18n/sv.ts +2 -6
  223. package/src/tool/thermalExpansionCalculator/i18n/tr.ts +2 -6
  224. package/src/tool/thermalExpansionCalculator/i18n/zh.ts +2 -6
  225. package/src/tool/thermalExpansionCalculator/seo.astro +2 -1
  226. package/src/tool/voltageDropCalculator/bibliography.astro +2 -9
  227. package/src/tool/voltageDropCalculator/bibliography.ts +16 -0
  228. package/src/tool/voltageDropCalculator/i18n/de.ts +2 -5
  229. package/src/tool/voltageDropCalculator/i18n/en.ts +2 -6
  230. package/src/tool/voltageDropCalculator/i18n/es.ts +2 -6
  231. package/src/tool/voltageDropCalculator/i18n/fr.ts +2 -6
  232. package/src/tool/voltageDropCalculator/i18n/id.ts +2 -5
  233. package/src/tool/voltageDropCalculator/i18n/it.ts +2 -5
  234. package/src/tool/voltageDropCalculator/i18n/ja.ts +2 -5
  235. package/src/tool/voltageDropCalculator/i18n/ko.ts +2 -5
  236. package/src/tool/voltageDropCalculator/i18n/nl.ts +2 -5
  237. package/src/tool/voltageDropCalculator/i18n/pl.ts +2 -5
  238. package/src/tool/voltageDropCalculator/i18n/pt.ts +2 -5
  239. package/src/tool/voltageDropCalculator/i18n/ru.ts +2 -5
  240. package/src/tool/voltageDropCalculator/i18n/sv.ts +2 -5
  241. package/src/tool/voltageDropCalculator/i18n/tr.ts +2 -5
  242. package/src/tool/voltageDropCalculator/i18n/zh.ts +2 -5
  243. package/src/tool/voltageDropCalculator/seo.astro +2 -1
  244. package/src/tool/workshopFractionConverter/bibliography.astro +6 -0
  245. package/src/tool/workshopFractionConverter/bibliography.ts +12 -0
  246. package/src/tool/workshopFractionConverter/client.ts +183 -0
  247. package/src/tool/workshopFractionConverter/component.astro +226 -0
  248. package/src/tool/workshopFractionConverter/converter.ts +110 -0
  249. package/src/tool/workshopFractionConverter/engine.ts +223 -0
  250. package/src/tool/workshopFractionConverter/entry.ts +24 -0
  251. package/src/tool/workshopFractionConverter/i18n/de.ts +147 -0
  252. package/src/tool/workshopFractionConverter/i18n/en.ts +147 -0
  253. package/src/tool/workshopFractionConverter/i18n/es.ts +147 -0
  254. package/src/tool/workshopFractionConverter/i18n/fr.ts +147 -0
  255. package/src/tool/workshopFractionConverter/i18n/id.ts +147 -0
  256. package/src/tool/workshopFractionConverter/i18n/it.ts +147 -0
  257. package/src/tool/workshopFractionConverter/i18n/ja.ts +147 -0
  258. package/src/tool/workshopFractionConverter/i18n/ko.ts +147 -0
  259. package/src/tool/workshopFractionConverter/i18n/nl.ts +147 -0
  260. package/src/tool/workshopFractionConverter/i18n/pl.ts +147 -0
  261. package/src/tool/workshopFractionConverter/i18n/pt.ts +147 -0
  262. package/src/tool/workshopFractionConverter/i18n/ru.ts +147 -0
  263. package/src/tool/workshopFractionConverter/i18n/sv.ts +147 -0
  264. package/src/tool/workshopFractionConverter/i18n/tr.ts +147 -0
  265. package/src/tool/workshopFractionConverter/i18n/zh.ts +147 -0
  266. package/src/tool/workshopFractionConverter/index.ts +11 -0
  267. package/src/tool/workshopFractionConverter/seo.astro +15 -0
  268. package/src/tool/workshopFractionConverter/types-client.ts +89 -0
  269. package/src/tool/workshopFractionConverter/ui-updater.ts +94 -0
  270. package/src/tool/workshopFractionConverter/ui.ts +38 -0
  271. package/src/tool/workshopFractionConverter/workshop-fraction-converter.css +563 -0
  272. package/src/tools.ts +2 -1
  273. 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 { BalusterCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'baluster-kalkylator';
6
7
  const title = 'Baluster kalkylator: Exakt avstånd för räcken';
@@ -89,21 +90,7 @@ export const content: ToolLocaleContent<BalusterCalculatorUI> = {
89
90
  description,
90
91
  faqTitle: 'Vanliga frågor',
91
92
  faq: faqData,
92
- bibliographyTitle: 'Tekniska referenser',
93
- bibliography: [
94
- {
95
- name: 'Boverket - Regler för räcken (Sverige)',
96
- url: 'https://www.boverket.se/',
97
- },
98
- {
99
- name: 'IRC - International Residential Code (USA)',
100
- url: 'https://codes.iccsafe.org/content/IRC2021',
101
- },
102
- {
103
- name: 'IBC - International Building Code',
104
- url: 'https://codes.iccsafe.org/content/IBC2021',
105
- },
106
- ],
93
+ bibliography,
107
94
  howTo: howToData,
108
95
  schemas: [faqSchema, howToSchema, appSchema],
109
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 { BalusterCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'korkuluk-hesaplama';
6
7
  const title = 'Korkuluk Hesaplayıcı: Korkuluklar İçin Tam Boşluk Hesabı';
@@ -89,21 +90,7 @@ export const content: ToolLocaleContent<BalusterCalculatorUI> = {
89
90
  description,
90
91
  faqTitle: 'Sıkça Sorulan Sorular',
91
92
  faq: faqData,
92
- bibliographyTitle: 'Teknik Referanslar',
93
- bibliography: [
94
- {
95
- name: 'TS 9111 - Özürlülerin İkamet Edeceği Binaların Düzenlenmesi Kuralları (Türkiye)',
96
- url: 'https://www.tse.org.tr/',
97
- },
98
- {
99
- name: 'IRC - International Residential Code (ABD)',
100
- url: 'https://codes.iccsafe.org/content/IRC2021',
101
- },
102
- {
103
- name: 'IBC - International Building Code',
104
- url: 'https://codes.iccsafe.org/content/IBC2021',
105
- },
106
- ],
93
+ bibliography,
107
94
  howTo: howToData,
108
95
  schemas: [faqSchema, howToSchema, appSchema],
109
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 { BalusterCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'baluster-calculator';
6
7
  const title = '楼梯护栏子柱计算器:精确间距计算';
@@ -89,21 +90,7 @@ export const content: ToolLocaleContent<BalusterCalculatorUI> = {
89
90
  description,
90
91
  faqTitle: '常见问题',
91
92
  faq: faqData,
92
- bibliographyTitle: '技术参考',
93
- bibliography: [
94
- {
95
- name: '住宅建筑规范 (中国)',
96
- url: 'https://www.mohurd.gov.cn/',
97
- },
98
- {
99
- name: 'IRC - 国际住宅规范 (美国)',
100
- url: 'https://codes.iccsafe.org/content/IRC2021',
101
- },
102
- {
103
- name: 'IBC - 国际建筑规范',
104
- url: 'https://codes.iccsafe.org/content/IBC2021',
105
- },
106
- ],
93
+ bibliography,
107
94
  howTo: howToData,
108
95
  schemas: [faqSchema, howToSchema, appSchema],
109
96
  seo: [
@@ -12,4 +12,4 @@ const content = await balusterCalculator.i18n[locale]?.();
12
12
  if (!content) return null;
13
13
  ---
14
14
 
15
- <SEORenderer content={{ locale: locale as string, sections: content.seo }} />
15
+ {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
@@ -1,14 +1,6 @@
1
1
  ---
2
2
  import { Bibliography as SharedBibliography } from '@jjlmoya/utils-shared';
3
- import { clayCalculator } from './index';
4
- import type { KnownLocale } from '../../types';
5
-
6
- interface Props {
7
- locale?: KnownLocale;
8
- }
9
-
10
- const { locale = 'es' } = Astro.props;
11
- const content = await clayCalculator.i18n[locale]?.();
3
+ import { bibliography } from './bibliography';
12
4
  ---
13
5
 
14
- {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: "The Potter's Dictionary - Clay Shrinkage",
6
+ url: 'https://digitalfire.com/glossary/firing+shrinkage',
7
+ },
8
+ {
9
+ name: 'Ceramic Arts Network - Understanding Shrinkage',
10
+ url: 'https://ceramicartsnetwork.org/daily/article/How-to-Determine-Clay-Shrinkage-and-Make-a-Shrink-Rule',
11
+ },
12
+ ];
@@ -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 { ClayCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'ton-schwindungsrechner';
6
7
  const title = 'Ton Schwindungsrechner: Exakte Maße für Keramik';
@@ -89,17 +90,7 @@ export const content: ToolLocaleContent<ClayCalculatorUI> = {
89
90
  description,
90
91
  faqTitle: 'Häufig gestellte Fragen',
91
92
  faq: faqData,
92
- bibliographyTitle: 'Referenzen',
93
- bibliography: [
94
- {
95
- name: 'The Potter\'s Dictionary - Clay Shrinkage',
96
- url: 'https://digitalfire.com/glossary/firing+shrinkage',
97
- },
98
- {
99
- name: 'Ceramic Arts Network - Understanding Shrinkage',
100
- url: 'https://ceramicartsnetwork.org/daily/article/How-to-Determine-Clay-Shrinkage-and-Make-a-Shrink-Rule',
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 { ClayCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'clay-shrinkage-calculator';
6
7
  const title = 'Clay Shrinkage Calculator: Exact Dimensions for Ceramics';
@@ -89,17 +90,7 @@ export const content: ToolLocaleContent<ClayCalculatorUI> = {
89
90
  description,
90
91
  faqTitle: 'Frequently Asked Questions',
91
92
  faq: faqData,
92
- bibliographyTitle: 'References',
93
- bibliography: [
94
- {
95
- name: "The Potter's Dictionary - Clay Shrinkage",
96
- url: 'https://digitalfire.com/glossary/firing+shrinkage',
97
- },
98
- {
99
- name: 'Ceramic Arts Network - Understanding Shrinkage',
100
- url: 'https://ceramicartsnetwork.org/daily/article/How-to-Determine-Clay-Shrinkage-and-Make-a-Shrink-Rule',
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 { ClayCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'calculadora-arcilla';
6
7
  const title = 'Calculadora de Contracción de Arcilla: Dimensiones Exactas para Cerámica';
@@ -89,17 +90,7 @@ export const content: ToolLocaleContent<ClayCalculatorUI> = {
89
90
  description,
90
91
  faqTitle: 'Preguntas Frecuentes',
91
92
  faq: faqData,
92
- bibliographyTitle: 'Referencias',
93
- bibliography: [
94
- {
95
- name: 'The Potter\'s Dictionary - Clay Shrinkage',
96
- url: 'https://digitalfire.com/glossary/firing+shrinkage',
97
- },
98
- {
99
- name: 'Ceramic Arts Network - Understanding Shrinkage',
100
- url: 'https://ceramicartsnetwork.org/daily/article/How-to-Determine-Clay-Shrinkage-and-Make-a-Shrink-Rule',
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 { ClayCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'calculateur-retrait-argile';
6
7
  const title = "Calculateur de Retrait d'Argile : Dimensions Exactes pour la Céramique";
@@ -89,17 +90,7 @@ export const content: ToolLocaleContent<ClayCalculatorUI> = {
89
90
  description,
90
91
  faqTitle: 'Questions Fréquentes',
91
92
  faq: faqData,
92
- bibliographyTitle: 'Références',
93
- bibliography: [
94
- {
95
- name: "The Potter's Dictionary - Clay Shrinkage",
96
- url: 'https://digitalfire.com/glossary/firing+shrinkage',
97
- },
98
- {
99
- name: 'Ceramic Arts Network - Understanding Shrinkage',
100
- url: 'https://ceramicartsnetwork.org/daily/article/How-to-Determine-Clay-Shrinkage-and-Make-a-Shrink-Rule',
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 { ClayCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'kalkulator-penyusutan-tanah-liat';
6
7
  const title = 'Kalkulator Penyusutan Tanah Liat: Dimensi Tepat untuk Keramik';
@@ -89,17 +90,7 @@ export const content: ToolLocaleContent<ClayCalculatorUI> = {
89
90
  description,
90
91
  faqTitle: 'Pertanyaan Umum',
91
92
  faq: faqData,
92
- bibliographyTitle: 'Referensi',
93
- bibliography: [
94
- {
95
- name: 'The Potter\'s Dictionary - Clay Shrinkage',
96
- url: 'https://digitalfire.com/glossary/firing+shrinkage',
97
- },
98
- {
99
- name: 'Ceramic Arts Network - Understanding Shrinkage',
100
- url: 'https://ceramicartsnetwork.org/daily/article/How-to-Determine-Clay-Shrinkage-and-Make-a-Shrink-Rule',
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 { ClayCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'calcolatrice-argilla';
6
7
  const title = 'Calcolatrice Restringimento Argilla: Dimensioni Esatte per Ceramica';
@@ -89,17 +90,7 @@ export const content: ToolLocaleContent<ClayCalculatorUI> = {
89
90
  description,
90
91
  faqTitle: 'Domande Frequenti',
91
92
  faq: faqData,
92
- bibliographyTitle: 'Riferimenti',
93
- bibliography: [
94
- {
95
- name: 'The Potter\'s Dictionary - Clay Shrinkage',
96
- url: 'https://digitalfire.com/glossary/firing+shrinkage',
97
- },
98
- {
99
- name: 'Ceramic Arts Network - Understanding Shrinkage',
100
- url: 'https://ceramicartsnetwork.org/daily/article/How-to-Determine-Clay-Shrinkage-and-Make-a-Shrink-Rule',
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 { ClayCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'clay-shrinkage-calculator';
6
7
  const title = '粘土収縮計算機:陶芸のための正確な寸法設計';
@@ -89,17 +90,7 @@ export const content: ToolLocaleContent<ClayCalculatorUI> = {
89
90
  description,
90
91
  faqTitle: 'よくある質問',
91
92
  faq: faqData,
92
- bibliographyTitle: 'リファレンス',
93
- bibliography: [
94
- {
95
- name: 'The Potter\'s Dictionary - Clay Shrinkage',
96
- url: 'https://digitalfire.com/glossary/firing+shrinkage',
97
- },
98
- {
99
- name: 'Ceramic Arts Network - Understanding Shrinkage',
100
- url: 'https://ceramicartsnetwork.org/daily/article/How-to-Determine-Clay-Shrinkage-and-Make-a-Shrink-Rule',
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 { ClayCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'clay-shrinkage-calculator';
6
7
  const title = '점토 수축 계산기: 도예를 위한 정확한 치수 설계';
@@ -89,17 +90,7 @@ export const content: ToolLocaleContent<ClayCalculatorUI> = {
89
90
  description,
90
91
  faqTitle: '자주 묻는 질문',
91
92
  faq: faqData,
92
- bibliographyTitle: '참고 자료',
93
- bibliography: [
94
- {
95
- name: 'The Potter\'s Dictionary - Clay Shrinkage',
96
- url: 'https://digitalfire.com/glossary/firing+shrinkage',
97
- },
98
- {
99
- name: 'Ceramic Arts Network - Understanding Shrinkage',
100
- url: 'https://ceramicartsnetwork.org/daily/article/How-to-Determine-Clay-Shrinkage-and-Make-a-Shrink-Rule',
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 { ClayCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'klei-krimp-calculator';
6
7
  const title = 'Klei Krimp Calculator: Exacte Afmetingen voor Keramiek';
@@ -89,17 +90,7 @@ export const content: ToolLocaleContent<ClayCalculatorUI> = {
89
90
  description,
90
91
  faqTitle: 'Veelgestelde Vragen',
91
92
  faq: faqData,
92
- bibliographyTitle: 'Referenties',
93
- bibliography: [
94
- {
95
- name: 'The Potter\'s Dictionary - Clay Shrinkage',
96
- url: 'https://digitalfire.com/glossary/firing+shrinkage',
97
- },
98
- {
99
- name: 'Ceramic Arts Network - Understanding Shrinkage',
100
- url: 'https://ceramicartsnetwork.org/daily/article/How-to-Determine-Clay-Shrinkage-and-Make-a-Shrink-Rule',
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 { ClayCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'kalkulator-kurczliwosci-gliny';
6
7
  const title = 'Kalkulator Kurczliwości Gliny: Dokładne Wymiary dla Ceramiki';
@@ -89,17 +90,7 @@ export const content: ToolLocaleContent<ClayCalculatorUI> = {
89
90
  description,
90
91
  faqTitle: 'Często Zadawane Pytania',
91
92
  faq: faqData,
92
- bibliographyTitle: 'Referencje',
93
- bibliography: [
94
- {
95
- name: 'The Potter\'s Dictionary - Clay Shrinkage',
96
- url: 'https://digitalfire.com/glossary/firing+shrinkage',
97
- },
98
- {
99
- name: 'Ceramic Arts Network - Understanding Shrinkage',
100
- url: 'https://ceramicartsnetwork.org/daily/article/How-to-Determine-Clay-Shrinkage-and-Make-a-Shrink-Rule',
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 { ClayCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'calculadora-argila';
6
7
  const title = 'Calculadora de Contração de Argila: Dimensões Exatas para Cerâmica';
@@ -89,17 +90,7 @@ export const content: ToolLocaleContent<ClayCalculatorUI> = {
89
90
  description,
90
91
  faqTitle: 'Perguntas Frequentes',
91
92
  faq: faqData,
92
- bibliographyTitle: 'Referências',
93
- bibliography: [
94
- {
95
- name: 'The Potter\'s Dictionary - Clay Shrinkage',
96
- url: 'https://digitalfire.com/glossary/firing+shrinkage',
97
- },
98
- {
99
- name: 'Ceramic Arts Network - Understanding Shrinkage',
100
- url: 'https://ceramicartsnetwork.org/daily/article/How-to-Determine-Clay-Shrinkage-and-Make-a-Shrink-Rule',
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 { ClayCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'kalkulyator-usadki-gliny';
6
7
  const title = 'Калькулятор усадки глины: Точные размеры для керамики';
@@ -89,17 +90,7 @@ export const content: ToolLocaleContent<ClayCalculatorUI> = {
89
90
  description,
90
91
  faqTitle: 'Часто задаваемые вопросы',
91
92
  faq: faqData,
92
- bibliographyTitle: 'Источники',
93
- bibliography: [
94
- {
95
- name: 'The Potter\'s Dictionary - Clay Shrinkage',
96
- url: 'https://digitalfire.com/glossary/firing+shrinkage',
97
- },
98
- {
99
- name: 'Ceramic Arts Network - Understanding Shrinkage',
100
- url: 'https://ceramicartsnetwork.org/daily/article/How-to-Determine-Clay-Shrinkage-and-Make-a-Shrink-Rule',
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 { ClayCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'lerkrympskalkylator';
6
7
  const title = 'Lerkrympskalkylator: Exakta dimensioner för keramik';
@@ -89,17 +90,7 @@ export const content: ToolLocaleContent<ClayCalculatorUI> = {
89
90
  description,
90
91
  faqTitle: 'Vanliga frågor',
91
92
  faq: faqData,
92
- bibliographyTitle: 'Referenser',
93
- bibliography: [
94
- {
95
- name: 'The Potter\'s Dictionary - Clay Shrinkage',
96
- url: 'https://digitalfire.com/glossary/firing+shrinkage',
97
- },
98
- {
99
- name: 'Ceramic Arts Network - Understanding Shrinkage',
100
- url: 'https://ceramicartsnetwork.org/daily/article/How-to-Determine-Clay-Shrinkage-and-Make-a-Shrink-Rule',
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 { ClayCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'kil-cekme-hesaplama';
6
7
  const title = 'Kil Çekme Hesaplayıcı: Seramik İçin Tam Boyutlar';
@@ -89,17 +90,7 @@ export const content: ToolLocaleContent<ClayCalculatorUI> = {
89
90
  description,
90
91
  faqTitle: 'Sıkça Sorulan Sorular',
91
92
  faq: faqData,
92
- bibliographyTitle: 'Referanslar',
93
- bibliography: [
94
- {
95
- name: 'The Potter\'s Dictionary - Clay Shrinkage',
96
- url: 'https://digitalfire.com/glossary/firing+shrinkage',
97
- },
98
- {
99
- name: 'Ceramic Arts Network - Understanding Shrinkage',
100
- url: 'https://ceramicartsnetwork.org/daily/article/How-to-Determine-Clay-Shrinkage-and-Make-a-Shrink-Rule',
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 { ClayCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'clay-shrinkage-calculator';
6
7
  const title = '粘土缩水率计算器:陶瓷精确尺寸设计';
@@ -89,17 +90,7 @@ export const content: ToolLocaleContent<ClayCalculatorUI> = {
89
90
  description,
90
91
  faqTitle: '常见问题',
91
92
  faq: faqData,
92
- bibliographyTitle: '参考资料',
93
- bibliography: [
94
- {
95
- name: 'The Potter\'s Dictionary - Clay Shrinkage',
96
- url: 'https://digitalfire.com/glossary/firing+shrinkage',
97
- },
98
- {
99
- name: 'Ceramic Arts Network - Understanding Shrinkage',
100
- url: 'https://ceramicartsnetwork.org/daily/article/How-to-Determine-Clay-Shrinkage-and-Make-a-Shrink-Rule',
101
- },
102
- ],
93
+ bibliography,
103
94
  howTo: howToData,
104
95
  schemas: [faqSchema, howToSchema, appSchema],
105
96
  seo: [
@@ -12,4 +12,4 @@ const content = await clayCalculator.i18n[locale]?.();
12
12
  if (!content) return null;
13
13
  ---
14
14
 
15
- <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 { concreteCalculator } 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 concreteCalculator.i18n[locale]?.();
3
+ import { bibliography } from './bibliography';
11
4
  ---
12
5
 
13
- {content && <SharedBibliography links={content.bibliography} />}
6
+ <SharedBibliography links={bibliography} />
@@ -0,0 +1,7 @@
1
+ import type { BibliographyEntry } from '../../types';
2
+
3
+ export const bibliography: BibliographyEntry[] = [
4
+ { name: 'Código Estructural (EHE-08): Normativa de Hormigón', url: 'https://www.boe.es/buscar/doc.php?id=BOE-A-2021-12906' },
5
+ { name: 'Concrete Mix Proportioning Standards (ASTM)', url: 'https://store.astm.org/astm-bos-04.02.html' },
6
+ { name: 'Guía de Dosificación de Morteros de Cemento', url: 'https://es.wikipedia.org/wiki/Mortero_(construcci%C3%B3n)' },
7
+ ];
@@ -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-moertel-rechner';
6
7
  const title = 'Beton und Mörtelrechner: Exakte Mengen an Zement, Sand und Wasser';
@@ -94,21 +95,7 @@ export const content: ToolLocaleContent<ConcreteCalculatorUI> = {
94
95
  description,
95
96
  faqTitle: 'Häufig gestellte Fragen',
96
97
  faq: faqData,
97
- bibliographyTitle: 'Technische Referenzen',
98
- bibliography: [
99
- {
100
- name: 'DIN EN 206-1: Beton – Festlegung, Eigenschaften, Herstellung und Konformität',
101
- url: 'https://www.beuth.de/',
102
- },
103
- {
104
- name: 'Concrete Mix Proportioning Standards (ASTM)',
105
- url: 'https://store.astm.org/astm-bos-04.02.html',
106
- },
107
- {
108
- name: 'Zement-Merkblätter Betontechnik',
109
- url: 'https://www.beton.org/',
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 = 'Concrete and Mortar Calculator: Bags of Cement per Cubic Metre';
@@ -94,21 +95,7 @@ export const content: ToolLocaleContent<ConcreteCalculatorUI> = {
94
95
  description,
95
96
  faqTitle: 'Frequently Asked Questions',
96
97
  faq: faqData,
97
- bibliographyTitle: 'Technical References',
98
- bibliography: [
99
- {
100
- name: 'Concrete Mix Proportioning Standards (ASTM C94)',
101
- url: 'https://store.astm.org/astm-bos-04.02.html',
102
- },
103
- {
104
- name: 'BS EN 197: Cement Composition and Conformity Criteria',
105
- url: 'https://www.bsigroup.com/en-GB/standards/',
106
- },
107
- {
108
- name: 'The Concrete Centre: Mix Design Guide',
109
- url: 'https://www.concretecentre.com/',
110
- },
111
- ],
98
+ bibliography,
112
99
  howTo: howToData,
113
100
  schemas: [faqSchema, howToSchema, appSchema],
114
101
  seo: [