@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
@@ -9,7 +9,7 @@
9
9
  overflow: hidden;
10
10
  }
11
11
 
12
- :global(.theme-dark) .pp-root {
12
+ .theme-dark .pp-root {
13
13
  background: #1e1e2e;
14
14
  border-color: #2d2d3f;
15
15
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.4);
@@ -35,7 +35,7 @@
35
35
  border-right: 1px solid #e2e8f0;
36
36
  }
37
37
 
38
- :global(.theme-dark) .pp-inputs {
38
+ .theme-dark .pp-inputs {
39
39
  background: #16161e;
40
40
  border-right-color: #2d2d3f;
41
41
  }
@@ -55,7 +55,7 @@
55
55
  gap: 0.5rem;
56
56
  }
57
57
 
58
- :global(.theme-dark) .pp-section-title {
58
+ .theme-dark .pp-section-title {
59
59
  color: #e2e8f0;
60
60
  }
61
61
 
@@ -64,7 +64,7 @@
64
64
  color: #64748b;
65
65
  }
66
66
 
67
- :global(.theme-dark) .pp-section-desc {
67
+ .theme-dark .pp-section-desc {
68
68
  color: #94a3b8;
69
69
  }
70
70
 
@@ -86,7 +86,7 @@
86
86
  color: #4f46e5;
87
87
  }
88
88
 
89
- :global(.theme-dark) .pp-label-frame {
89
+ .theme-dark .pp-label-frame {
90
90
  color: #818cf8;
91
91
  }
92
92
 
@@ -94,7 +94,7 @@
94
94
  color: #db2777;
95
95
  }
96
96
 
97
- :global(.theme-dark) .pp-label-art {
97
+ .theme-dark .pp-label-art {
98
98
  color: #f472b6;
99
99
  }
100
100
 
@@ -121,7 +121,7 @@
121
121
  margin-left: 0.25rem;
122
122
  }
123
123
 
124
- :global(.theme-dark) .pp-label {
124
+ .theme-dark .pp-label {
125
125
  color: #94a3b8;
126
126
  }
127
127
 
@@ -143,13 +143,13 @@
143
143
  box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.15);
144
144
  }
145
145
 
146
- :global(.theme-dark) .pp-input {
146
+ .theme-dark .pp-input {
147
147
  background: #1e1e2e;
148
148
  border-color: #3d3d50;
149
149
  color: #e2e8f0;
150
150
  }
151
151
 
152
- :global(.theme-dark) .pp-input:focus {
152
+ .theme-dark .pp-input:focus {
153
153
  border-color: #818cf8;
154
154
  box-shadow: 0 0 0 3px rgba(129, 140, 248, 0.15);
155
155
  }
@@ -159,7 +159,7 @@
159
159
  border-top: 1px solid #e2e8f0;
160
160
  }
161
161
 
162
- :global(.theme-dark) .pp-toggle-row {
162
+ .theme-dark .pp-toggle-row {
163
163
  border-top-color: #2d2d3f;
164
164
  }
165
165
 
@@ -183,7 +183,7 @@
183
183
  color: #0f172a;
184
184
  }
185
185
 
186
- :global(.theme-dark) .pp-toggle-name {
186
+ .theme-dark .pp-toggle-name {
187
187
  color: #e2e8f0;
188
188
  }
189
189
 
@@ -192,7 +192,7 @@
192
192
  color: #64748b;
193
193
  }
194
194
 
195
- :global(.theme-dark) .pp-toggle-desc {
195
+ .theme-dark .pp-toggle-desc {
196
196
  color: #94a3b8;
197
197
  }
198
198
 
@@ -239,7 +239,7 @@
239
239
  border-top: 1px solid #e2e8f0;
240
240
  }
241
241
 
242
- :global(.theme-dark) .pp-offset-ctrl {
242
+ .theme-dark .pp-offset-ctrl {
243
243
  border-top-color: #2d2d3f;
244
244
  }
245
245
 
@@ -265,7 +265,7 @@
265
265
  text-align: right;
266
266
  }
267
267
 
268
- :global(.theme-dark) .pp-offset-val {
268
+ .theme-dark .pp-offset-val {
269
269
  color: #e2e8f0;
270
270
  }
271
271
 
@@ -281,7 +281,7 @@
281
281
  gap: 0.75rem;
282
282
  }
283
283
 
284
- :global(.theme-dark) .pp-error {
284
+ .theme-dark .pp-error {
285
285
  background: #2d1515;
286
286
  border-color: #7f1d1d;
287
287
  color: #fca5a5;
@@ -304,7 +304,7 @@
304
304
  min-height: 500px;
305
305
  }
306
306
 
307
- :global(.theme-dark) .pp-preview {
307
+ .theme-dark .pp-preview {
308
308
  background: #0f172a;
309
309
  }
310
310
 
@@ -317,7 +317,7 @@
317
317
  opacity: 0.5;
318
318
  }
319
319
 
320
- :global(.theme-dark) .pp-dots-bg {
320
+ .theme-dark .pp-dots-bg {
321
321
  background-image: radial-gradient(circle at 1px 1px, rgba(255, 255, 255, 0.1) 1px, transparent 0);
322
322
  }
323
323
 
@@ -339,7 +339,7 @@
339
339
  transition: all 0.7s cubic-bezier(0.34, 1.56, 0.64, 1);
340
340
  }
341
341
 
342
- :global(.theme-dark) .pp-frame {
342
+ .theme-dark .pp-frame {
343
343
  box-shadow: 0 25px 50px rgba(0, 0, 0, 0.5);
344
344
  }
345
345
 
@@ -349,7 +349,7 @@
349
349
  background: #e2e2e2;
350
350
  }
351
351
 
352
- :global(.theme-dark) .pp-mat {
352
+ .theme-dark .pp-mat {
353
353
  background: #334155;
354
354
  }
355
355
 
@@ -364,7 +364,7 @@
364
364
  transition: all 0.7s cubic-bezier(0.34, 1.56, 0.64, 1);
365
365
  }
366
366
 
367
- :global(.theme-dark) .pp-art {
367
+ .theme-dark .pp-art {
368
368
  background: #1e293b;
369
369
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.4);
370
370
  }
@@ -378,7 +378,7 @@
378
378
  z-index: 1;
379
379
  }
380
380
 
381
- :global(.theme-dark) .pp-art-placeholder {
381
+ .theme-dark .pp-art-placeholder {
382
382
  color: #475569;
383
383
  }
384
384
 
@@ -416,7 +416,7 @@
416
416
  background: #0f172a;
417
417
  }
418
418
 
419
- :global(.theme-dark) .pp-dim-line {
419
+ .theme-dark .pp-dim-line {
420
420
  background: #e2e8f0;
421
421
  }
422
422
 
@@ -430,7 +430,7 @@
430
430
  color: #0f172a;
431
431
  }
432
432
 
433
- :global(.theme-dark) .pp-dim-label {
433
+ .theme-dark .pp-dim-label {
434
434
  color: #e2e8f0;
435
435
  }
436
436
 
@@ -449,7 +449,7 @@
449
449
  z-index: 10;
450
450
  }
451
451
 
452
- :global(.theme-dark) .pp-border-label {
452
+ .theme-dark .pp-border-label {
453
453
  color: #818cf8;
454
454
  }
455
455
 
@@ -475,7 +475,7 @@
475
475
  color: #db2777;
476
476
  }
477
477
 
478
- :global(.theme-dark) .pp-border-left {
478
+ .theme-dark .pp-border-left {
479
479
  color: #f472b6;
480
480
  }
481
481
 
@@ -487,7 +487,7 @@
487
487
  color: #db2777;
488
488
  }
489
489
 
490
- :global(.theme-dark) .pp-border-right {
490
+ .theme-dark .pp-border-right {
491
491
  color: #f472b6;
492
492
  }
493
493
 
@@ -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 passepartoutCalculator.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 { stairCalculator } 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 stairCalculator.i18n[locale]?.();
3
+ import { bibliography } from './bibliography';
11
4
  ---
12
5
 
13
- {content && <SharedBibliography links={content.bibliography} />}
6
+ <SharedBibliography links={bibliography} />
@@ -0,0 +1,16 @@
1
+ import type { BibliographyEntry } from '../../types';
2
+
3
+ export const bibliography: BibliographyEntry[] = [
4
+ {
5
+ name: 'Building Code - Stair Design Standards',
6
+ url: 'https://www.ibc.org/',
7
+ },
8
+ {
9
+ name: 'Blondel\'s Law - Wikipedia',
10
+ url: 'https://en.wikipedia.org/wiki/Staircase',
11
+ },
12
+ {
13
+ name: 'ISO 12122-1: Building stairs - Performance requirements',
14
+ url: 'https://www.iso.org/',
15
+ },
16
+ ];
@@ -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 { StairCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'treppen-rechner';
6
7
  const title = 'Treppenrechner: Planung und Ausführung';
@@ -76,11 +77,7 @@ export const content: ToolLocaleContent<StairCalculatorUI> = {
76
77
  description,
77
78
  faqTitle: 'Häufig gestellte Fragen',
78
79
  faq: faqData,
79
- bibliographyTitle: 'Referenzen und Normen',
80
- bibliography: [
81
- { name: 'DIN 18065: Gebäudetreppen', url: 'https://www.beuth.de/de/norm/din-18065/233056075' },
82
- { name: 'Schrittmaßregel - Wikipedia', url: 'https://de.wikipedia.org/wiki/Treppensteigung' },
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 { StairCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'stair-calculator';
6
7
  const title = 'Stair Calculator: Design and Execution';
@@ -76,12 +77,7 @@ export const content: ToolLocaleContent<StairCalculatorUI> = {
76
77
  description,
77
78
  faqTitle: 'Frequently Asked Questions',
78
79
  faq: faqData,
79
- bibliographyTitle: 'References and Standards',
80
- bibliography: [
81
- { name: 'Building Code - Stair Design Standards', url: 'https://www.ibc.org/' },
82
- { name: 'Blondel\'s Law - Wikipedia', url: 'https://en.wikipedia.org/wiki/Staircase' },
83
- { name: 'ISO 12122-1: Building stairs - Performance requirements', 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 { StairCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'calculadora-escaleras';
6
7
  const title = 'Calculadora de Escaleras: Diseño y Ejecución';
@@ -76,12 +77,7 @@ export const content: ToolLocaleContent<StairCalculatorUI> = {
76
77
  description,
77
78
  faqTitle: 'Preguntas Frecuentes',
78
79
  faq: faqData,
79
- bibliographyTitle: 'Referencias y Normativa',
80
- bibliography: [
81
- { name: 'CTE DB SUA Seguridad de Utilización y Accesibilidad', url: 'https://www.codigotecnico.org/' },
82
- { name: 'Ley de Blondel - Wikipedia', url: 'https://es.wikipedia.org/wiki/Escalera#Geometr%C3%ADa_de_la_escalera' },
83
- { name: 'Instrucción para la Recepción de Cementos (RC-16)', url: 'https://www.fomento.gob.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 { StairCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'calculatrice-escaliers';
6
7
  const title = 'Calculatrice d\'Escaliers: Conception et Exécution';
@@ -76,12 +77,7 @@ export const content: ToolLocaleContent<StairCalculatorUI> = {
76
77
  description,
77
78
  faqTitle: 'Questions Fréquentes',
78
79
  faq: faqData,
79
- bibliographyTitle: 'Références et Normes',
80
- bibliography: [
81
- { name: 'Règles de construction des escaliers intérieurs - DTU', url: 'https://www.afnor.org/' },
82
- { name: 'Loi de Blondel - Wikipédia', url: 'https://fr.wikipedia.org/wiki/Escalier' },
83
- { name: 'ISO 12122-1: Escaliers de bâtiment - Prescriptions de sécurité', 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 { StairCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'kalkulator-tangga';
6
7
  const title = 'Kalkulator Tangga: Desain dan Pelaksanaan';
@@ -76,11 +77,7 @@ export const content: ToolLocaleContent<StairCalculatorUI> = {
76
77
  description,
77
78
  faqTitle: 'Pertanyaan Umum',
78
79
  faq: faqData,
79
- bibliographyTitle: 'Referensi dan Peraturan',
80
- bibliography: [
81
- { name: 'Standar Keamanan dan Aksesibilitas', url: 'https://id.wikipedia.org/wiki/Tangga' },
82
- { name: 'Hukum Blondel - Wikipedia', url: 'https://en.wikipedia.org/wiki/Stairs#Blondel\'s_Rule' },
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 { StairCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'calcolatore-scale';
6
7
  const title = 'Calcolatore per Scale: Progettazione ed Esecuzione';
@@ -76,11 +77,7 @@ export const content: ToolLocaleContent<StairCalculatorUI> = {
76
77
  description,
77
78
  faqTitle: 'Domande Frequenti',
78
79
  faq: faqData,
79
- bibliographyTitle: 'Riferimenti e Normative',
80
- bibliography: [
81
- { name: 'Norme per la progettazione delle scale', url: 'https://it.wikipedia.org/wiki/Scala_(architettura)' },
82
- { name: 'Legge di Blondel - Wikipedia', url: 'https://it.wikipedia.org/wiki/Alzata_e_pedata' },
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 { StairCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'stair-calculator';
6
7
  const title = '階段計算機:設計と施工';
@@ -76,11 +77,7 @@ export const content: ToolLocaleContent<StairCalculatorUI> = {
76
77
  description,
77
78
  faqTitle: 'よくある質問',
78
79
  faq: faqData,
79
- bibliographyTitle: 'リファレンスと規定',
80
- bibliography: [
81
- { name: '建築基準法(階段の規定)', url: 'https://ja.wikipedia.org/wiki/%E9%9A%8E%E6%AE%B5' },
82
- { name: 'ブロンデルの法則 - Wikipedia(英語)', url: 'https://en.wikipedia.org/wiki/Stairs#Blondel\'s_Rule' },
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 { StairCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'stair-calculator';
6
7
  const title = '계단 계산기: 설계 및 시공';
@@ -76,11 +77,7 @@ export const content: ToolLocaleContent<StairCalculatorUI> = {
76
77
  description,
77
78
  faqTitle: '자주 묻는 질문',
78
79
  faq: faqData,
79
- bibliographyTitle: '참고 및 규정',
80
- bibliography: [
81
- { name: '건축법 계단 규정 관련 자료', url: 'https://ko.wikipedia.org/wiki/%EA%B3%84%EB%8B%A8' },
82
- { name: '블론델의 법칙 - Wikipedia (영어)', url: 'https://en.wikipedia.org/wiki/Stairs#Blondel\'s_Rule' },
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 { StairCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'trap-calculator';
6
7
  const title = 'Trap Calculator: Ontwerp en Uitvoering';
@@ -76,11 +77,7 @@ export const content: ToolLocaleContent<StairCalculatorUI> = {
76
77
  description,
77
78
  faqTitle: 'Veelgestelde Vragen',
78
79
  faq: faqData,
79
- bibliographyTitle: 'Referenties en Normen',
80
- bibliography: [
81
- { name: 'NEN 3502: Trappen in woningen', url: 'https://www.nen.nl/nen-3502-1981-nl' },
82
- { name: 'Wet van Blondel - Wikipedia', url: 'https://nl.wikipedia.org/wiki/Trap_(bouwkunde)#Wet_van_Blondel' },
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 { StairCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'kalkulator-schodow';
6
7
  const title = 'Kalkulator Schodów: Projektowanie i Wykonawstwo';
@@ -76,11 +77,7 @@ export const content: ToolLocaleContent<StairCalculatorUI> = {
76
77
  description,
77
78
  faqTitle: 'Często Zadawane Pytania',
78
79
  faq: faqData,
79
- bibliographyTitle: 'Referencje i Normy',
80
- bibliography: [
81
- { name: 'Warunki Techniczne budynków - Schody', url: 'https://isap.sejm.gov.pl/' },
82
- { name: 'Prawo Blondela - Wikipedia', url: 'https://pl.wikipedia.org/wiki/Schody#Wymiary_stopni' },
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 { StairCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'calculadora-escadas';
6
7
  const title = 'Calculadora de Escadas: Design e Execução';
@@ -76,11 +77,7 @@ export const content: ToolLocaleContent<StairCalculatorUI> = {
76
77
  description,
77
78
  faqTitle: 'Perguntas Frequentes',
78
79
  faq: faqData,
79
- bibliographyTitle: 'Referências e Normas',
80
- bibliography: [
81
- { name: 'Regras de Dimensionamento de Escadas', url: 'https://pt.wikipedia.org/wiki/Escada' },
82
- { name: 'Lei de Blondel - Wikipedia', url: 'https://pt.wikipedia.org/wiki/Escada#Dimensionamento' },
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 { StairCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'kalkulyator-lestnic';
6
7
  const title = 'Калькулятор лестниц: проектирование и расчет';
@@ -76,11 +77,7 @@ export const content: ToolLocaleContent<StairCalculatorUI> = {
76
77
  description,
77
78
  faqTitle: 'Часто задаваемые вопросы',
78
79
  faq: faqData,
79
- bibliographyTitle: 'Справочные материалы и нормы',
80
- bibliography: [
81
- { name: 'ГОСТ и СНиП на устройство лестниц', url: 'https://ru.wikipedia.org/wiki/Лестница' },
82
- { name: 'Закон Блонделя — Википедия', url: 'https://ru.wikipedia.org/wiki/Лестница#Геометрия_лестницы' },
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 { StairCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'trapp-kalkylator';
6
7
  const title = 'Trappkalkylator: Planering och Utförande';
@@ -76,11 +77,7 @@ export const content: ToolLocaleContent<StairCalculatorUI> = {
76
77
  description,
77
78
  faqTitle: 'Vanliga frågor',
78
79
  faq: faqData,
79
- bibliographyTitle: 'Referenser och regler',
80
- bibliography: [
81
- { name: 'Trappor i byggnader - Regler', url: 'https://sv.wikipedia.org/wiki/Trappa' },
82
- { name: 'Blondels lag - Wikipedia (engelska)', url: 'https://en.wikipedia.org/wiki/Stairs#Blondel\'s_Rule' },
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 { StairCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'merdiven-hesaplayici';
6
7
  const title = 'Merdiven Hesaplayıcı: Tasarım ve Uygulama';
@@ -76,11 +77,7 @@ export const content: ToolLocaleContent<StairCalculatorUI> = {
76
77
  description,
77
78
  faqTitle: 'Sıkça Sorulan Sorular',
78
79
  faq: faqData,
79
- bibliographyTitle: 'Referanslar ve Yönetmelikler',
80
- bibliography: [
81
- { name: 'Merdivenlerin Planlanması ve Yönetmelikler', url: 'https://tr.wikipedia.org/wiki/Merdiven' },
82
- { name: 'Blondel Yasası - Wikipedia (İngilizce)', url: 'https://en.wikipedia.org/wiki/Stairs#Blondel\'s_Rule' },
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 { StairCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'stair-calculator';
6
7
  const title = '楼梯计算器:设计与施工';
@@ -76,11 +77,7 @@ export const content: ToolLocaleContent<StairCalculatorUI> = {
76
77
  description,
77
78
  faqTitle: '常见问题',
78
79
  faq: faqData,
79
- bibliographyTitle: '参考资料与规范',
80
- bibliography: [
81
- { name: 'CTE 建筑安全与无障碍性规范', url: 'https://www.codigotecnico.org/' },
82
- { name: '布隆德尔法则 - 维基百科', url: 'https://en.wikipedia.org/wiki/Stairs#Blondel\'s_Rule' },
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 stairCalculator.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 }} />}