@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 { DrillSharpenerUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'bohrer-schleifen-meister';
6
7
  const title = 'Bohrer Schleifen Meister: Präzisionslehre';
@@ -76,11 +77,7 @@ export const content: ToolLocaleContent<DrillSharpenerUI> = {
76
77
  description,
77
78
  faqTitle: 'Häufig gestellte Fragen',
78
79
  faq: faqData,
79
- bibliographyTitle: 'Technische Referenzen',
80
- bibliography: [
81
- { name: 'Werkstatthandbuch - Bohrer schleifen (PDF)', url: 'https://de.wikipedia.org/wiki/Spiralbohrer#Spitzenanschliff' },
82
- { name: 'Metalltechnologie - Bohrerwinkel', url: 'https://www.google.com/search?q=bohrer+anschleifen+winkel' },
83
- ],
80
+ bibliography,
84
81
  howTo: howToData,
85
82
  schemas: [faqSchema, howToSchema, appSchema],
86
83
  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 { DrillSharpenerUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'drill-sharpening-master';
6
7
  const title = 'Drill Sharpening Master: Precision Gauge';
@@ -76,12 +77,7 @@ export const content: ToolLocaleContent<DrillSharpenerUI> = {
76
77
  description,
77
78
  faqTitle: 'Frequently Asked Questions',
78
79
  faq: faqData,
79
- bibliographyTitle: 'Technical References',
80
- bibliography: [
81
- { name: 'Workshop Manual - Drill Bit Sharpening (PDF)', url: 'https://www.scribd.com/document/486692441/Afilado-Manual-de-Brocas' },
82
- { name: 'Metal Technology - Drill Angles', url: 'https://en.wikipedia.org/wiki/Drill_bit' },
83
- { name: 'Mechanical Workshop Sharpening Standards', url: 'https://www.iso.org/' },
84
- ],
80
+ bibliography,
85
81
  howTo: howToData,
86
82
  schemas: [faqSchema, howToSchema, appSchema],
87
83
  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 { DrillSharpenerUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'afilado-maestro-brocas';
6
7
  const title = 'Afilado Maestro de Brocas: Galga de Precisión';
@@ -76,12 +77,7 @@ export const content: ToolLocaleContent<DrillSharpenerUI> = {
76
77
  description,
77
78
  faqTitle: 'Preguntas Frecuentes',
78
79
  faq: faqData,
79
- bibliographyTitle: 'Referencias Técnicas',
80
- bibliography: [
81
- { name: 'Manual de Taller - Afilado de Brocas (PDF)', url: 'https://www.scribd.com/document/486692441/Afilado-Manual-de-Brocas' },
82
- { name: 'Tecnología de los Metales - Ángulos de Broca', url: 'https://es.wikipedia.org/wiki/Broca' },
83
- { name: 'Normas de Afilado en Taller Mecánico', url: 'https://www.inem.es/' },
84
- ],
80
+ bibliography,
85
81
  howTo: howToData,
86
82
  schemas: [faqSchema, howToSchema, appSchema],
87
83
  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 { DrillSharpenerUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'affuteur-maitrise-forets';
6
7
  const title = 'Affûteur Maître de Forets: Jauge de Précision';
@@ -76,12 +77,7 @@ export const content: ToolLocaleContent<DrillSharpenerUI> = {
76
77
  description,
77
78
  faqTitle: 'Questions Fréquentes',
78
79
  faq: faqData,
79
- bibliographyTitle: 'Références Techniques',
80
- bibliography: [
81
- { name: 'Manuel d\'atelier - Affûtage des forets (PDF)', url: 'https://www.scribd.com/document/486692441/Afilado-Manual-de-Brocas' },
82
- { name: 'Technologie des métaux - Angles de forets', url: 'https://fr.wikipedia.org/wiki/Foret_%28outil%29' },
83
- { name: 'Normes d\'affûtage en atelier mécanique', url: 'https://www.iso.org/' },
84
- ],
80
+ bibliography,
85
81
  howTo: howToData,
86
82
  schemas: [faqSchema, howToSchema, appSchema],
87
83
  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 { DrillSharpenerUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'pengasah-mata-bor-presisi';
6
7
  const title = 'Pengasah Mata Bor Utama: Alat Ukur Presisi';
@@ -76,11 +77,7 @@ export const content: ToolLocaleContent<DrillSharpenerUI> = {
76
77
  description,
77
78
  faqTitle: 'Pertanyaan Umum',
78
79
  faq: faqData,
79
- bibliographyTitle: 'Referensi Teknis',
80
- bibliography: [
81
- { name: 'Manual Bengkel - Pengasahan Mata Bor (PDF)', url: 'https://www.google.com/search?q=manual+pengasahan+mata+bor' },
82
- { name: 'Teknologi Logam - Sudut Mata Bor', url: 'https://id.wikipedia.org/wiki/Mata_bor' },
83
- ],
80
+ bibliography,
84
81
  howTo: howToData,
85
82
  schemas: [faqSchema, howToSchema, appSchema],
86
83
  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 { DrillSharpenerUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'affilatura-maestra-punte';
6
7
  const title = 'Affilatura Maestra delle Punte: Calibro di Precisione';
@@ -76,11 +77,7 @@ export const content: ToolLocaleContent<DrillSharpenerUI> = {
76
77
  description,
77
78
  faqTitle: 'Domande Frequenti',
78
79
  faq: faqData,
79
- bibliographyTitle: 'Riferimenti Tecnici',
80
- bibliography: [
81
- { name: 'Manuale d\'Officina - Affilatura Punte (PDF)', url: 'https://www.google.com/search?q=manuale+affilatura+punte' },
82
- { name: 'Tecnologia dei Metalli - Angoli delle Punte', url: 'https://it.wikipedia.org/wiki/Punta_da_trapano' },
83
- ],
80
+ bibliography,
84
81
  howTo: howToData,
85
82
  schemas: [faqSchema, howToSchema, appSchema],
86
83
  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 { DrillSharpenerUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'drill-sharpening-master';
6
7
  const title = 'ドリル研磨マスター:精密ゲージ';
@@ -76,11 +77,7 @@ export const content: ToolLocaleContent<DrillSharpenerUI> = {
76
77
  description,
77
78
  faqTitle: 'よくある質問',
78
79
  faq: faqData,
79
- bibliographyTitle: '技術リファレンス',
80
- bibliography: [
81
- { name: 'ワークショップマニュアル - ドリル研磨 (PDF)', url: 'https://ja.wikipedia.org/wiki/ツイストドリル#研磨' },
82
- { name: '金属技術 - ドリルの角度', url: 'https://www.google.com/search?q=ドリル+研磨+角度' },
83
- ],
80
+ bibliography,
84
81
  howTo: howToData,
85
82
  schemas: [faqSchema, howToSchema, appSchema],
86
83
  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 { DrillSharpenerUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'drill-sharpening-master';
6
7
  const title = '드릴 연마 마스터: 정밀 게이지';
@@ -76,11 +77,7 @@ export const content: ToolLocaleContent<DrillSharpenerUI> = {
76
77
  description,
77
78
  faqTitle: '자주 묻는 질문',
78
79
  faq: faqData,
79
- bibliographyTitle: '기술 참고 자료',
80
- bibliography: [
81
- { name: '워크숍 매뉴얼 - 드릴 연마 (PDF)', url: 'https://ko.wikipedia.org/wiki/트위스트_드릴#연마' },
82
- { name: '금속 기술 - 드릴 각도', url: 'https://www.google.com/search?q=드릴+연마+각도' },
83
- ],
80
+ bibliography,
84
81
  howTo: howToData,
85
82
  schemas: [faqSchema, howToSchema, appSchema],
86
83
  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 { DrillSharpenerUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'boor-slijpen-master';
6
7
  const title = 'Boor Slijpen Master: Precisiekaliber';
@@ -76,11 +77,7 @@ export const content: ToolLocaleContent<DrillSharpenerUI> = {
76
77
  description,
77
78
  faqTitle: 'Veelgestelde Vragen',
78
79
  faq: faqData,
79
- bibliographyTitle: 'Technische Referenties',
80
- bibliography: [
81
- { name: 'Werkplaatshandboek - Boren Slijpen (PDF)', url: 'https://nl.wikipedia.org/wiki/Spiraalboor#' },
82
- { name: 'Metaaltechnologie - Boorhoeken', url: 'https://www.google.com/search?q=boor+slijpen+hoek' },
83
- ],
80
+ bibliography,
84
81
  howTo: howToData,
85
82
  schemas: [faqSchema, howToSchema, appSchema],
86
83
  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 { DrillSharpenerUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'mistrzowskie-ostrzenie-wiertel';
6
7
  const title = 'Mistrzowskie Ostrzenie Wierteł: Sprawdzian Precyzyjny';
@@ -76,11 +77,7 @@ export const content: ToolLocaleContent<DrillSharpenerUI> = {
76
77
  description,
77
78
  faqTitle: 'Często Zadawane Pytania',
78
79
  faq: faqData,
79
- bibliographyTitle: 'Referencje Techniczne',
80
- bibliography: [
81
- { name: 'Podręcznik warsztatowy - Ostrzenie wierteł (PDF)', url: 'https://pl.wikipedia.org/wiki/Wiertło_kręte' },
82
- { name: 'Technologia metali - Kąty wierteł', url: 'https://www.google.com/search?q=ostrzenie+wiertla+katy' },
83
- ],
80
+ bibliography,
84
81
  howTo: howToData,
85
82
  schemas: [faqSchema, howToSchema, appSchema],
86
83
  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 { DrillSharpenerUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'afiamento-mestre-brocas';
6
7
  const title = 'Afiamento Mestre de Brocas: Bitola de Precisão';
@@ -76,11 +77,7 @@ export const content: ToolLocaleContent<DrillSharpenerUI> = {
76
77
  description,
77
78
  faqTitle: 'Perguntas Frequentes',
78
79
  faq: faqData,
79
- bibliographyTitle: 'Referências Técnicas',
80
- bibliography: [
81
- { name: 'Manual de Oficina - Afiamento de Brocas (PDF)', url: 'https://www.google.com/search?q=manual+afiamento+brocas' },
82
- { name: 'Tecnologia dos Metais - Ângulos de Broca', url: 'https://pt.wikipedia.org/wiki/Broca' },
83
- ],
80
+ bibliography,
84
81
  howTo: howToData,
85
82
  schemas: [faqSchema, howToSchema, appSchema],
86
83
  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 { DrillSharpenerUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'master-zatochki-sverl';
6
7
  const title = 'Мастер заточки сверл: прецизионный калибр';
@@ -76,11 +77,7 @@ export const content: ToolLocaleContent<DrillSharpenerUI> = {
76
77
  description,
77
78
  faqTitle: 'Часто задаваемые вопросы',
78
79
  faq: faqData,
79
- bibliographyTitle: 'Технические справочники',
80
- bibliography: [
81
- { name: 'Руководство мастерской - Заточка сверл (PDF)', url: 'https://ru.wikipedia.org/wiki/Спиральное_сверло#Зенкерование_и_заточка' },
82
- { name: 'Технология металлов - Углы сверла', url: 'https://www.google.com/search?q=заточка+сверл+углы' },
83
- ],
80
+ bibliography,
84
81
  howTo: howToData,
85
82
  schemas: [faqSchema, howToSchema, appSchema],
86
83
  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 { DrillSharpenerUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'borrslipningsmaster';
6
7
  const title = 'Borrslipningsmästare: Precisionsmått';
@@ -76,11 +77,7 @@ export const content: ToolLocaleContent<DrillSharpenerUI> = {
76
77
  description,
77
78
  faqTitle: 'Vanliga frågor',
78
79
  faq: faqData,
79
- bibliographyTitle: 'Tekniska referenser',
80
- bibliography: [
81
- { name: 'Workshopmanual - Borrslipning (PDF)', url: 'https://sv.wikipedia.org/wiki/Spiralborr#' },
82
- { name: 'Metallteknologi - Borrvinklar', url: 'https://www.google.com/search?q=borr+slipning+vinklar' },
83
- ],
80
+ bibliography,
84
81
  howTo: howToData,
85
82
  schemas: [faqSchema, howToSchema, appSchema],
86
83
  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 { DrillSharpenerUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'usta-matkap-bileme';
6
7
  const title = 'Usta Matkap Bileme: Hassas Mastar';
@@ -76,11 +77,7 @@ export const content: ToolLocaleContent<DrillSharpenerUI> = {
76
77
  description,
77
78
  faqTitle: 'Sıkça Sorulan Sorular',
78
79
  faq: faqData,
79
- bibliographyTitle: 'Teknik Referanslar',
80
- bibliography: [
81
- { name: 'Atölye El Kitabı - Matkap Bileme (PDF)', url: 'https://tr.wikipedia.org/wiki/Matkap_ucu#Bileme' },
82
- { name: 'Metal Teknolojisi - Matkap Açıları', url: 'https://www.google.com/search?q=matkap+bileme+acilari' },
83
- ],
80
+ bibliography,
84
81
  howTo: howToData,
85
82
  schemas: [faqSchema, howToSchema, appSchema],
86
83
  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 { DrillSharpenerUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'drill-sharpening-master';
6
7
  const title = '钻头修磨大师:精密数字规';
@@ -76,11 +77,7 @@ export const content: ToolLocaleContent<DrillSharpenerUI> = {
76
77
  description,
77
78
  faqTitle: '常见问题',
78
79
  faq: faqData,
79
- bibliographyTitle: '技术参考',
80
- bibliography: [
81
- { name: '车间手册 - 钻头修磨 (PDF)', url: 'https://zh.wikipedia.org/wiki/钻头#修磨' },
82
- { name: '金属工艺学 - 钻头角度', url: 'https://www.google.com/search?q=钻头+修磨+角度' },
83
- ],
80
+ bibliography,
84
81
  howTo: howToData,
85
82
  schemas: [faqSchema, howToSchema, appSchema],
86
83
  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 drillSharpener.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,14 +1,6 @@
1
1
  ---
2
2
  import { Bibliography as SharedBibliography } from '@jjlmoya/utils-shared';
3
- import { epoxyCalculator } 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 epoxyCalculator.i18n[locale]?.();
3
+ import { bibliography } from './bibliography';
12
4
  ---
13
5
 
14
- {content && <SharedBibliography links={content.bibliography} />}
6
+ <SharedBibliography links={bibliography} />
@@ -0,0 +1,20 @@
1
+ import type { BibliographyEntry } from '../../types';
2
+
3
+ export const bibliography: BibliographyEntry[] = [
4
+ {
5
+ name: 'TotalBoat - Support Center and Technical Guides',
6
+ url: 'https://www.totalboat.com/pages/support',
7
+ },
8
+ {
9
+ name: 'ArtResin - FAQ and Usage Guide',
10
+ url: 'https://www.artresin.com/pages/artresin-faq',
11
+ },
12
+ {
13
+ name: 'Smooth-On - Mold and Casting Calculators',
14
+ url: 'https://www.smooth-on.com/support/calculators/',
15
+ },
16
+ {
17
+ name: 'Polytek - Technical Support and Safety Data Sheets',
18
+ url: 'https://www.polytek.com/technical-support',
19
+ },
20
+ ];
@@ -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 { EpoxyCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'epoxidharz-rechner';
6
7
  const title = 'Epoxidharz Rechner: Mischung und Volumen';
@@ -72,11 +73,7 @@ export const content: ToolLocaleContent<EpoxyCalculatorUI> = {
72
73
  description,
73
74
  faqTitle: 'Häufig gestellte Fragen',
74
75
  faq: faqData,
75
- bibliographyTitle: 'Technische Referenzen',
76
- bibliography: [
77
- { name: 'TotalBoat - Support Center und technische Leitfäden', url: 'https://www.totalboat.com/pages/support' },
78
- { name: 'ArtResin - FAQ und Gebrauchsanweisung', url: 'https://www.artresin.com/pages/artresin-faq' },
79
- ],
76
+ bibliography,
80
77
  howTo: howToData,
81
78
  schemas: [faqSchema, howToSchema, appSchema],
82
79
  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 { EpoxyCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'epoxy-resin-calculator';
6
7
  const title = 'Epoxy Resin Calculator: Exact Mix and Volume';
@@ -89,25 +90,7 @@ export const content: ToolLocaleContent<EpoxyCalculatorUI> = {
89
90
  description,
90
91
  faqTitle: 'Frequently Asked Questions',
91
92
  faq: faqData,
92
- bibliographyTitle: 'Technical References',
93
- bibliography: [
94
- {
95
- name: 'TotalBoat - Support Center and Technical Guides',
96
- url: 'https://www.totalboat.com/pages/support',
97
- },
98
- {
99
- name: 'ArtResin - FAQ and Usage Guide',
100
- url: 'https://www.artresin.com/pages/artresin-faq',
101
- },
102
- {
103
- name: 'Smooth-On - Mold and Casting Calculators',
104
- url: 'https://www.smooth-on.com/support/calculators/',
105
- },
106
- {
107
- name: 'Polytek - Technical Support and Safety Data Sheets',
108
- url: 'https://www.polytek.com/technical-support',
109
- },
110
- ],
93
+ bibliography,
111
94
  howTo: howToData,
112
95
  schemas: [faqSchema, howToSchema, appSchema],
113
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 { EpoxyCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'calculadora-resina';
6
7
  const title = 'Calculadora de Resina Epoxi: Mezcla y Volumen Exacto';
@@ -89,25 +90,7 @@ export const content: ToolLocaleContent<EpoxyCalculatorUI> = {
89
90
  description,
90
91
  faqTitle: 'Preguntas Frecuentes',
91
92
  faq: faqData,
92
- bibliographyTitle: 'Referencias Técnicas',
93
- bibliography: [
94
- {
95
- name: 'TotalBoat - Centro de Soporte y Guías Técnicas',
96
- url: 'https://www.totalboat.com/pages/support',
97
- },
98
- {
99
- name: 'ArtResin - Preguntas Frecuentes y Guía de Uso',
100
- url: 'https://www.artresin.com/pages/artresin-faq',
101
- },
102
- {
103
- name: 'Smooth-On - Calculadoras de Moldes y Vaciado',
104
- url: 'https://www.smooth-on.com/support/calculators/',
105
- },
106
- {
107
- name: 'Polytek - Soporte Técnico y Hojas de Seguridad',
108
- url: 'https://www.polytek.com/technical-support',
109
- },
110
- ],
93
+ bibliography,
111
94
  howTo: howToData,
112
95
  schemas: [faqSchema, howToSchema, appSchema],
113
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 { EpoxyCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'calculateur-resine-epoxy';
6
7
  const title = 'Calculateur de Résine Époxy : Mélange et Volume Exact';
@@ -89,25 +90,7 @@ export const content: ToolLocaleContent<EpoxyCalculatorUI> = {
89
90
  description,
90
91
  faqTitle: 'Questions Fréquentes',
91
92
  faq: faqData,
92
- bibliographyTitle: 'Références Techniques',
93
- bibliography: [
94
- {
95
- name: 'TotalBoat - Centre de support et guides techniques',
96
- url: 'https://www.totalboat.com/pages/support',
97
- },
98
- {
99
- name: "ArtResin - FAQ et guide d'utilisation",
100
- url: 'https://www.artresin.com/pages/artresin-faq',
101
- },
102
- {
103
- name: 'Smooth-On - Calculateurs de moules et coulée',
104
- url: 'https://www.smooth-on.com/support/calculators/',
105
- },
106
- {
107
- name: 'Polytek - Support technique et fiches de sécurité',
108
- url: 'https://www.polytek.com/technical-support',
109
- },
110
- ],
93
+ bibliography,
111
94
  howTo: howToData,
112
95
  schemas: [faqSchema, howToSchema, appSchema],
113
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 { EpoxyCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'kalkulator-resin-epoksi';
6
7
  const title = 'Kalkulator Resin Epoksi: Campuran dan Volume Tepat';
@@ -72,11 +73,7 @@ export const content: ToolLocaleContent<EpoxyCalculatorUI> = {
72
73
  description,
73
74
  faqTitle: 'Pertanyaan Umum',
74
75
  faq: faqData,
75
- bibliographyTitle: 'Referensi Teknis',
76
- bibliography: [
77
- { name: 'TotalBoat - Pusat Dukungan dan Panduan Teknis', url: 'https://www.totalboat.com/pages/support' },
78
- { name: 'ArtResin - FAQ dan Panduan Penggunaan', url: 'https://www.artresin.com/pages/artresin-faq' },
79
- ],
76
+ bibliography,
80
77
  howTo: howToData,
81
78
  schemas: [faqSchema, howToSchema, appSchema],
82
79
  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 { EpoxyCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'calcolatore-resina-epossidica';
6
7
  const title = 'Calcolatore di Resina Epossidica: Miscela e Volume Esatto';
@@ -72,11 +73,7 @@ export const content: ToolLocaleContent<EpoxyCalculatorUI> = {
72
73
  description,
73
74
  faqTitle: 'Domande Frequenti',
74
75
  faq: faqData,
75
- bibliographyTitle: 'Riferimenti Tecnici',
76
- bibliography: [
77
- { name: 'TotalBoat - Centro di Supporto e Guide Tecniche', url: 'https://www.totalboat.com/pages/support' },
78
- { name: 'ArtResin - Domande Frequenti e Guida d\'Uso', url: 'https://www.artresin.com/pages/artresin-faq' },
79
- ],
76
+ bibliography,
80
77
  howTo: howToData,
81
78
  schemas: [faqSchema, howToSchema, appSchema],
82
79
  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 { EpoxyCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'epoxy-resin-calculator';
6
7
  const title = 'エポキシ樹脂計算機:正確な配合と体積';
@@ -72,11 +73,7 @@ export const content: ToolLocaleContent<EpoxyCalculatorUI> = {
72
73
  description,
73
74
  faqTitle: 'よくある質問',
74
75
  faq: faqData,
75
- bibliographyTitle: '技術リファレンス',
76
- bibliography: [
77
- { name: 'TotalBoat - サポートセンター・技術ガイド', url: 'https://www.totalboat.com/pages/support' },
78
- { name: 'ArtResin - FAQ・使用ガイド', url: 'https://www.artresin.com/pages/artresin-faq' },
79
- ],
76
+ bibliography,
80
77
  howTo: howToData,
81
78
  schemas: [faqSchema, howToSchema, appSchema],
82
79
  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 { EpoxyCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'epoxy-resin-calculator';
6
7
  const title = '에폭시 레진 계산기: 정확한 혼합 및 부피';
@@ -72,11 +73,7 @@ export const content: ToolLocaleContent<EpoxyCalculatorUI> = {
72
73
  description,
73
74
  faqTitle: '자주 묻는 질문',
74
75
  faq: faqData,
75
- bibliographyTitle: '기술 참고 자료',
76
- bibliography: [
77
- { name: 'TotalBoat - 지원 센터 및 기술 가이드', url: 'https://www.totalboat.com/pages/support' },
78
- { name: 'ArtResin - FAQ 및 사용 가이드', url: 'https://www.artresin.com/pages/artresin-faq' },
79
- ],
76
+ bibliography,
80
77
  howTo: howToData,
81
78
  schemas: [faqSchema, howToSchema, appSchema],
82
79
  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 { EpoxyCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'epoxyhars-calculator';
6
7
  const title = 'Epoxyhars Calculator: Exacte Mengverhouding en Volume';
@@ -72,11 +73,7 @@ export const content: ToolLocaleContent<EpoxyCalculatorUI> = {
72
73
  description,
73
74
  faqTitle: 'Veelgestelde Vragen',
74
75
  faq: faqData,
75
- bibliographyTitle: 'Technische Referenties',
76
- bibliography: [
77
- { name: 'TotalBoat - Support Center en Technische Gidsen', url: 'https://www.totalboat.com/pages/support' },
78
- { name: 'ArtResin - FAQ en Gebruikershandleiding', url: 'https://www.artresin.com/pages/artresin-faq' },
79
- ],
76
+ bibliography,
80
77
  howTo: howToData,
81
78
  schemas: [faqSchema, howToSchema, appSchema],
82
79
  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 { EpoxyCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'kalkulator-zywicy-epoksydowej';
6
7
  const title = 'Kalkulator Żywicy Epoksydowej: Mieszanka i Dokładna Objętość';
@@ -72,11 +73,7 @@ export const content: ToolLocaleContent<EpoxyCalculatorUI> = {
72
73
  description,
73
74
  faqTitle: 'Często Zadawane Pytania',
74
75
  faq: faqData,
75
- bibliographyTitle: 'Referencje Techniczne',
76
- bibliography: [
77
- { name: 'TotalBoat - Centrum Wsparcia i Przewodniki Techniczne', url: 'https://www.totalboat.com/pages/support' },
78
- { name: 'ArtResin - Często Zadawane Pytania i Instrukcja Obsługi', url: 'https://www.artresin.com/pages/artresin-faq' },
79
- ],
76
+ bibliography,
80
77
  howTo: howToData,
81
78
  schemas: [faqSchema, howToSchema, appSchema],
82
79
  seo: [