@jjlmoya/utils-developer 1.28.0 → 1.29.1

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 (457) hide show
  1. package/package.json +1 -1
  2. package/src/entries.ts +4 -1
  3. package/src/tests/entry_contract.test.ts +10 -0
  4. package/src/tests/i18n_coverage.test.ts +5 -2
  5. package/src/tests/locale_completeness.test.ts +1 -1
  6. package/src/tests/qa-test-helpers.ts +32 -0
  7. package/src/tests/qa_bibliography_links.test.ts +43 -0
  8. package/src/tests/qa_claim_evidence.test.ts +69 -0
  9. package/src/tests/qa_logic_reference_coverage.test.ts +46 -0
  10. package/src/tests/qa_runtime_i18n.test.ts +115 -0
  11. package/src/tests/tool_validation.test.ts +1 -1
  12. package/src/tool/aspectRatio/bibliography.astro +2 -10
  13. package/src/tool/aspectRatio/bibliography.ts +7 -0
  14. package/src/tool/aspectRatio/i18n/de.ts +2 -14
  15. package/src/tool/aspectRatio/i18n/en.ts +2 -14
  16. package/src/tool/aspectRatio/i18n/es.ts +2 -14
  17. package/src/tool/aspectRatio/i18n/fr.ts +2 -14
  18. package/src/tool/aspectRatio/i18n/id.ts +2 -14
  19. package/src/tool/aspectRatio/i18n/it.ts +2 -14
  20. package/src/tool/aspectRatio/i18n/ja.ts +2 -14
  21. package/src/tool/aspectRatio/i18n/ko.ts +2 -14
  22. package/src/tool/aspectRatio/i18n/nl.ts +2 -14
  23. package/src/tool/aspectRatio/i18n/pl.ts +2 -14
  24. package/src/tool/aspectRatio/i18n/pt.ts +2 -14
  25. package/src/tool/aspectRatio/i18n/ru.ts +2 -14
  26. package/src/tool/aspectRatio/i18n/sv.ts +2 -14
  27. package/src/tool/aspectRatio/i18n/tr.ts +2 -14
  28. package/src/tool/aspectRatio/i18n/zh.ts +2 -14
  29. package/src/tool/calculadoraTiempoDatos/bibliography.astro +2 -10
  30. package/src/tool/calculadoraTiempoDatos/bibliography.ts +8 -0
  31. package/src/tool/calculadoraTiempoDatos/component.astro +6 -2
  32. package/src/tool/calculadoraTiempoDatos/i18n/de.ts +2 -6
  33. package/src/tool/calculadoraTiempoDatos/i18n/en.ts +2 -6
  34. package/src/tool/calculadoraTiempoDatos/i18n/es.ts +2 -6
  35. package/src/tool/calculadoraTiempoDatos/i18n/fr.ts +2 -6
  36. package/src/tool/calculadoraTiempoDatos/i18n/id.ts +2 -6
  37. package/src/tool/calculadoraTiempoDatos/i18n/it.ts +2 -6
  38. package/src/tool/calculadoraTiempoDatos/i18n/ja.ts +2 -6
  39. package/src/tool/calculadoraTiempoDatos/i18n/ko.ts +2 -6
  40. package/src/tool/calculadoraTiempoDatos/i18n/nl.ts +2 -6
  41. package/src/tool/calculadoraTiempoDatos/i18n/pl.ts +2 -6
  42. package/src/tool/calculadoraTiempoDatos/i18n/pt.ts +2 -6
  43. package/src/tool/calculadoraTiempoDatos/i18n/ru.ts +2 -6
  44. package/src/tool/calculadoraTiempoDatos/i18n/sv.ts +2 -6
  45. package/src/tool/calculadoraTiempoDatos/i18n/tr.ts +2 -6
  46. package/src/tool/calculadoraTiempoDatos/i18n/zh.ts +2 -6
  47. package/src/tool/colorConverter/bibliography.astro +2 -10
  48. package/src/tool/colorConverter/bibliography.ts +7 -0
  49. package/src/tool/colorConverter/i18n/de.ts +2 -5
  50. package/src/tool/colorConverter/i18n/en.ts +5 -8
  51. package/src/tool/colorConverter/i18n/es.ts +4 -7
  52. package/src/tool/colorConverter/i18n/fr.ts +2 -5
  53. package/src/tool/colorConverter/i18n/id.ts +2 -5
  54. package/src/tool/colorConverter/i18n/it.ts +2 -5
  55. package/src/tool/colorConverter/i18n/ja.ts +2 -5
  56. package/src/tool/colorConverter/i18n/ko.ts +2 -5
  57. package/src/tool/colorConverter/i18n/nl.ts +2 -5
  58. package/src/tool/colorConverter/i18n/pl.ts +2 -5
  59. package/src/tool/colorConverter/i18n/pt.ts +2 -5
  60. package/src/tool/colorConverter/i18n/ru.ts +2 -5
  61. package/src/tool/colorConverter/i18n/sv.ts +2 -5
  62. package/src/tool/colorConverter/i18n/tr.ts +2 -5
  63. package/src/tool/colorConverter/i18n/zh.ts +2 -5
  64. package/src/tool/conversorExcelCsvHtml/bibliography.astro +2 -10
  65. package/src/tool/conversorExcelCsvHtml/bibliography.ts +8 -0
  66. package/src/tool/conversorExcelCsvHtml/component.astro +4 -3
  67. package/src/tool/conversorExcelCsvHtml/i18n/de.ts +2 -6
  68. package/src/tool/conversorExcelCsvHtml/i18n/en.ts +2 -6
  69. package/src/tool/conversorExcelCsvHtml/i18n/es.ts +2 -6
  70. package/src/tool/conversorExcelCsvHtml/i18n/fr.ts +2 -6
  71. package/src/tool/conversorExcelCsvHtml/i18n/id.ts +2 -6
  72. package/src/tool/conversorExcelCsvHtml/i18n/it.ts +2 -6
  73. package/src/tool/conversorExcelCsvHtml/i18n/ja.ts +2 -6
  74. package/src/tool/conversorExcelCsvHtml/i18n/ko.ts +2 -6
  75. package/src/tool/conversorExcelCsvHtml/i18n/nl.ts +2 -6
  76. package/src/tool/conversorExcelCsvHtml/i18n/pl.ts +2 -6
  77. package/src/tool/conversorExcelCsvHtml/i18n/pt.ts +2 -6
  78. package/src/tool/conversorExcelCsvHtml/i18n/ru.ts +2 -6
  79. package/src/tool/conversorExcelCsvHtml/i18n/sv.ts +2 -6
  80. package/src/tool/conversorExcelCsvHtml/i18n/tr.ts +2 -6
  81. package/src/tool/conversorExcelCsvHtml/i18n/zh.ts +2 -6
  82. package/src/tool/cronGenerator/bibliography.astro +2 -10
  83. package/src/tool/cronGenerator/bibliography.ts +6 -0
  84. package/src/tool/cronGenerator/component.astro +5 -1
  85. package/src/tool/cronGenerator/i18n/de.ts +2 -10
  86. package/src/tool/cronGenerator/i18n/en.ts +2 -10
  87. package/src/tool/cronGenerator/i18n/es.ts +2 -10
  88. package/src/tool/cronGenerator/i18n/fr.ts +2 -10
  89. package/src/tool/cronGenerator/i18n/id.ts +2 -10
  90. package/src/tool/cronGenerator/i18n/it.ts +2 -10
  91. package/src/tool/cronGenerator/i18n/ja.ts +2 -10
  92. package/src/tool/cronGenerator/i18n/ko.ts +2 -10
  93. package/src/tool/cronGenerator/i18n/nl.ts +2 -10
  94. package/src/tool/cronGenerator/i18n/pl.ts +2 -10
  95. package/src/tool/cronGenerator/i18n/pt.ts +2 -10
  96. package/src/tool/cronGenerator/i18n/ru.ts +2 -10
  97. package/src/tool/cronGenerator/i18n/sv.ts +2 -10
  98. package/src/tool/cronGenerator/i18n/tr.ts +2 -10
  99. package/src/tool/cronGenerator/i18n/zh.ts +2 -10
  100. package/src/tool/cssBoxShadowGenerator/component.astro +2 -1
  101. package/src/tool/cssBoxShadowGenerator/logic.test.ts +28 -0
  102. package/src/tool/cssSpecificityCalculator/bibliography.astro +2 -10
  103. package/src/tool/cssSpecificityCalculator/bibliography.ts +6 -0
  104. package/src/tool/cssSpecificityCalculator/i18n/de.ts +2 -10
  105. package/src/tool/cssSpecificityCalculator/i18n/en.ts +2 -10
  106. package/src/tool/cssSpecificityCalculator/i18n/es.ts +2 -10
  107. package/src/tool/cssSpecificityCalculator/i18n/fr.ts +2 -10
  108. package/src/tool/cssSpecificityCalculator/i18n/id.ts +2 -10
  109. package/src/tool/cssSpecificityCalculator/i18n/it.ts +2 -10
  110. package/src/tool/cssSpecificityCalculator/i18n/ja.ts +2 -10
  111. package/src/tool/cssSpecificityCalculator/i18n/ko.ts +2 -10
  112. package/src/tool/cssSpecificityCalculator/i18n/nl.ts +2 -10
  113. package/src/tool/cssSpecificityCalculator/i18n/pl.ts +2 -10
  114. package/src/tool/cssSpecificityCalculator/i18n/pt.ts +2 -10
  115. package/src/tool/cssSpecificityCalculator/i18n/ru.ts +2 -10
  116. package/src/tool/cssSpecificityCalculator/i18n/sv.ts +2 -10
  117. package/src/tool/cssSpecificityCalculator/i18n/tr.ts +2 -10
  118. package/src/tool/cssSpecificityCalculator/i18n/zh.ts +2 -10
  119. package/src/tool/cssToInlineConverter/bibliography.astro +2 -10
  120. package/src/tool/cssToInlineConverter/bibliography.ts +7 -0
  121. package/src/tool/cssToInlineConverter/i18n/de.ts +2 -14
  122. package/src/tool/cssToInlineConverter/i18n/en.ts +4 -16
  123. package/src/tool/cssToInlineConverter/i18n/es.ts +5 -17
  124. package/src/tool/cssToInlineConverter/i18n/fr.ts +2 -14
  125. package/src/tool/cssToInlineConverter/i18n/id.ts +2 -14
  126. package/src/tool/cssToInlineConverter/i18n/it.ts +2 -14
  127. package/src/tool/cssToInlineConverter/i18n/ja.ts +2 -14
  128. package/src/tool/cssToInlineConverter/i18n/ko.ts +2 -14
  129. package/src/tool/cssToInlineConverter/i18n/nl.ts +2 -14
  130. package/src/tool/cssToInlineConverter/i18n/pl.ts +2 -14
  131. package/src/tool/cssToInlineConverter/i18n/pt.ts +2 -14
  132. package/src/tool/cssToInlineConverter/i18n/ru.ts +2 -14
  133. package/src/tool/cssToInlineConverter/i18n/sv.ts +2 -14
  134. package/src/tool/cssToInlineConverter/i18n/tr.ts +2 -14
  135. package/src/tool/cssToInlineConverter/i18n/zh.ts +2 -14
  136. package/src/tool/duplicateCssRemover/bibliography.astro +2 -10
  137. package/src/tool/duplicateCssRemover/bibliography.ts +7 -0
  138. package/src/tool/duplicateCssRemover/i18n/de.ts +2 -14
  139. package/src/tool/duplicateCssRemover/i18n/en.ts +4 -16
  140. package/src/tool/duplicateCssRemover/i18n/es.ts +4 -16
  141. package/src/tool/duplicateCssRemover/i18n/fr.ts +2 -14
  142. package/src/tool/duplicateCssRemover/i18n/id.ts +2 -14
  143. package/src/tool/duplicateCssRemover/i18n/it.ts +2 -14
  144. package/src/tool/duplicateCssRemover/i18n/ja.ts +2 -14
  145. package/src/tool/duplicateCssRemover/i18n/ko.ts +2 -14
  146. package/src/tool/duplicateCssRemover/i18n/nl.ts +2 -14
  147. package/src/tool/duplicateCssRemover/i18n/pl.ts +2 -14
  148. package/src/tool/duplicateCssRemover/i18n/pt.ts +2 -14
  149. package/src/tool/duplicateCssRemover/i18n/ru.ts +2 -14
  150. package/src/tool/duplicateCssRemover/i18n/sv.ts +2 -14
  151. package/src/tool/duplicateCssRemover/i18n/tr.ts +2 -14
  152. package/src/tool/duplicateCssRemover/i18n/zh.ts +2 -14
  153. package/src/tool/generadorSecurityTxt/bibliography.astro +2 -10
  154. package/src/tool/generadorSecurityTxt/bibliography.ts +7 -0
  155. package/src/tool/generadorSecurityTxt/component.astro +1 -2
  156. package/src/tool/generadorSecurityTxt/i18n/de.ts +2 -5
  157. package/src/tool/generadorSecurityTxt/i18n/en.ts +2 -5
  158. package/src/tool/generadorSecurityTxt/i18n/es.ts +2 -5
  159. package/src/tool/generadorSecurityTxt/i18n/fr.ts +2 -5
  160. package/src/tool/generadorSecurityTxt/i18n/id.ts +2 -5
  161. package/src/tool/generadorSecurityTxt/i18n/it.ts +2 -5
  162. package/src/tool/generadorSecurityTxt/i18n/ja.ts +2 -5
  163. package/src/tool/generadorSecurityTxt/i18n/ko.ts +2 -5
  164. package/src/tool/generadorSecurityTxt/i18n/nl.ts +2 -5
  165. package/src/tool/generadorSecurityTxt/i18n/pl.ts +2 -5
  166. package/src/tool/generadorSecurityTxt/i18n/pt.ts +2 -5
  167. package/src/tool/generadorSecurityTxt/i18n/ru.ts +2 -5
  168. package/src/tool/generadorSecurityTxt/i18n/sv.ts +2 -5
  169. package/src/tool/generadorSecurityTxt/i18n/tr.ts +2 -5
  170. package/src/tool/generadorSecurityTxt/i18n/zh.ts +2 -5
  171. package/src/tool/hashGenerator/bibliography.astro +2 -10
  172. package/src/tool/hashGenerator/bibliography.ts +7 -0
  173. package/src/tool/hashGenerator/i18n/de.ts +2 -5
  174. package/src/tool/hashGenerator/i18n/en.ts +2 -5
  175. package/src/tool/hashGenerator/i18n/es.ts +2 -5
  176. package/src/tool/hashGenerator/i18n/fr.ts +2 -5
  177. package/src/tool/hashGenerator/i18n/id.ts +2 -5
  178. package/src/tool/hashGenerator/i18n/it.ts +2 -5
  179. package/src/tool/hashGenerator/i18n/ja.ts +2 -5
  180. package/src/tool/hashGenerator/i18n/ko.ts +2 -5
  181. package/src/tool/hashGenerator/i18n/nl.ts +2 -5
  182. package/src/tool/hashGenerator/i18n/pl.ts +2 -5
  183. package/src/tool/hashGenerator/i18n/pt.ts +2 -5
  184. package/src/tool/hashGenerator/i18n/ru.ts +2 -5
  185. package/src/tool/hashGenerator/i18n/sv.ts +2 -5
  186. package/src/tool/hashGenerator/i18n/tr.ts +2 -5
  187. package/src/tool/hashGenerator/i18n/zh.ts +2 -5
  188. package/src/tool/inspectorCertificadosSsl/bibliography.astro +2 -10
  189. package/src/tool/inspectorCertificadosSsl/bibliography.ts +8 -0
  190. package/src/tool/inspectorCertificadosSsl/component.astro +4 -3
  191. package/src/tool/inspectorCertificadosSsl/i18n/de.ts +2 -6
  192. package/src/tool/inspectorCertificadosSsl/i18n/en.ts +2 -6
  193. package/src/tool/inspectorCertificadosSsl/i18n/es.ts +2 -6
  194. package/src/tool/inspectorCertificadosSsl/i18n/fr.ts +2 -6
  195. package/src/tool/inspectorCertificadosSsl/i18n/id.ts +2 -6
  196. package/src/tool/inspectorCertificadosSsl/i18n/it.ts +2 -6
  197. package/src/tool/inspectorCertificadosSsl/i18n/ja.ts +2 -6
  198. package/src/tool/inspectorCertificadosSsl/i18n/ko.ts +2 -6
  199. package/src/tool/inspectorCertificadosSsl/i18n/nl.ts +2 -6
  200. package/src/tool/inspectorCertificadosSsl/i18n/pl.ts +2 -6
  201. package/src/tool/inspectorCertificadosSsl/i18n/pt.ts +2 -6
  202. package/src/tool/inspectorCertificadosSsl/i18n/ru.ts +2 -6
  203. package/src/tool/inspectorCertificadosSsl/i18n/sv.ts +2 -6
  204. package/src/tool/inspectorCertificadosSsl/i18n/tr.ts +2 -6
  205. package/src/tool/inspectorCertificadosSsl/i18n/zh.ts +2 -6
  206. package/src/tool/jsonFormatter/bibliography.astro +2 -10
  207. package/src/tool/jsonFormatter/bibliography.ts +8 -0
  208. package/src/tool/jsonFormatter/i18n/de.ts +2 -18
  209. package/src/tool/jsonFormatter/i18n/en.ts +2 -18
  210. package/src/tool/jsonFormatter/i18n/es.ts +2 -18
  211. package/src/tool/jsonFormatter/i18n/fr.ts +2 -18
  212. package/src/tool/jsonFormatter/i18n/id.ts +2 -18
  213. package/src/tool/jsonFormatter/i18n/it.ts +2 -18
  214. package/src/tool/jsonFormatter/i18n/ja.ts +2 -18
  215. package/src/tool/jsonFormatter/i18n/ko.ts +2 -18
  216. package/src/tool/jsonFormatter/i18n/nl.ts +2 -18
  217. package/src/tool/jsonFormatter/i18n/pl.ts +2 -18
  218. package/src/tool/jsonFormatter/i18n/pt.ts +2 -18
  219. package/src/tool/jsonFormatter/i18n/ru.ts +2 -18
  220. package/src/tool/jsonFormatter/i18n/sv.ts +2 -18
  221. package/src/tool/jsonFormatter/i18n/tr.ts +2 -18
  222. package/src/tool/jsonFormatter/i18n/zh.ts +2 -18
  223. package/src/tool/jwtDecoder/component.astro +2 -1
  224. package/src/tool/jwtDecoder/logic.test.ts +32 -0
  225. package/src/tool/keycode/bibliography.astro +2 -10
  226. package/src/tool/keycode/bibliography.ts +7 -0
  227. package/src/tool/keycode/i18n/de.ts +2 -14
  228. package/src/tool/keycode/i18n/en.ts +2 -14
  229. package/src/tool/keycode/i18n/es.ts +2 -14
  230. package/src/tool/keycode/i18n/fr.ts +2 -14
  231. package/src/tool/keycode/i18n/id.ts +2 -14
  232. package/src/tool/keycode/i18n/it.ts +2 -14
  233. package/src/tool/keycode/i18n/ja.ts +2 -14
  234. package/src/tool/keycode/i18n/ko.ts +2 -14
  235. package/src/tool/keycode/i18n/nl.ts +2 -14
  236. package/src/tool/keycode/i18n/pl.ts +2 -14
  237. package/src/tool/keycode/i18n/pt.ts +2 -14
  238. package/src/tool/keycode/i18n/ru.ts +2 -14
  239. package/src/tool/keycode/i18n/sv.ts +2 -14
  240. package/src/tool/keycode/i18n/tr.ts +2 -14
  241. package/src/tool/keycode/i18n/zh.ts +2 -14
  242. package/src/tool/llmCostCalculator/bibliography.astro +2 -10
  243. package/src/tool/llmCostCalculator/bibliography.ts +8 -0
  244. package/src/tool/llmCostCalculator/i18n/de.ts +2 -18
  245. package/src/tool/llmCostCalculator/i18n/en.ts +2 -18
  246. package/src/tool/llmCostCalculator/i18n/es.ts +2 -18
  247. package/src/tool/llmCostCalculator/i18n/fr.ts +2 -18
  248. package/src/tool/llmCostCalculator/i18n/id.ts +2 -18
  249. package/src/tool/llmCostCalculator/i18n/it.ts +2 -18
  250. package/src/tool/llmCostCalculator/i18n/ja.ts +2 -18
  251. package/src/tool/llmCostCalculator/i18n/ko.ts +2 -18
  252. package/src/tool/llmCostCalculator/i18n/nl.ts +2 -18
  253. package/src/tool/llmCostCalculator/i18n/pl.ts +2 -18
  254. package/src/tool/llmCostCalculator/i18n/pt.ts +2 -18
  255. package/src/tool/llmCostCalculator/i18n/ru.ts +2 -18
  256. package/src/tool/llmCostCalculator/i18n/sv.ts +2 -18
  257. package/src/tool/llmCostCalculator/i18n/tr.ts +2 -18
  258. package/src/tool/llmCostCalculator/i18n/zh.ts +2 -18
  259. package/src/tool/mobileMockupGenerator/bibliography.astro +2 -10
  260. package/src/tool/mobileMockupGenerator/bibliography.ts +6 -0
  261. package/src/tool/mobileMockupGenerator/i18n/de.ts +2 -4
  262. package/src/tool/mobileMockupGenerator/i18n/en.ts +2 -4
  263. package/src/tool/mobileMockupGenerator/i18n/es.ts +2 -4
  264. package/src/tool/mobileMockupGenerator/i18n/fr.ts +2 -4
  265. package/src/tool/mobileMockupGenerator/i18n/id.ts +2 -4
  266. package/src/tool/mobileMockupGenerator/i18n/it.ts +2 -4
  267. package/src/tool/mobileMockupGenerator/i18n/ja.ts +2 -4
  268. package/src/tool/mobileMockupGenerator/i18n/ko.ts +2 -4
  269. package/src/tool/mobileMockupGenerator/i18n/nl.ts +2 -4
  270. package/src/tool/mobileMockupGenerator/i18n/pl.ts +2 -1
  271. package/src/tool/mobileMockupGenerator/i18n/pt.ts +2 -4
  272. package/src/tool/mobileMockupGenerator/i18n/ru.ts +2 -4
  273. package/src/tool/mobileMockupGenerator/i18n/sv.ts +2 -4
  274. package/src/tool/mobileMockupGenerator/i18n/tr.ts +2 -4
  275. package/src/tool/mobileMockupGenerator/i18n/zh.ts +2 -4
  276. package/src/tool/musicalTypography/bibliography.astro +2 -10
  277. package/src/tool/musicalTypography/bibliography.ts +7 -0
  278. package/src/tool/musicalTypography/i18n/de.ts +2 -14
  279. package/src/tool/musicalTypography/i18n/en.ts +3 -15
  280. package/src/tool/musicalTypography/i18n/es.ts +3 -15
  281. package/src/tool/musicalTypography/i18n/fr.ts +2 -14
  282. package/src/tool/musicalTypography/i18n/id.ts +2 -14
  283. package/src/tool/musicalTypography/i18n/it.ts +2 -14
  284. package/src/tool/musicalTypography/i18n/ja.ts +2 -14
  285. package/src/tool/musicalTypography/i18n/ko.ts +2 -14
  286. package/src/tool/musicalTypography/i18n/nl.ts +2 -14
  287. package/src/tool/musicalTypography/i18n/pl.ts +2 -14
  288. package/src/tool/musicalTypography/i18n/pt.ts +2 -5
  289. package/src/tool/musicalTypography/i18n/ru.ts +2 -5
  290. package/src/tool/musicalTypography/i18n/sv.ts +2 -1
  291. package/src/tool/musicalTypography/i18n/tr.ts +2 -1
  292. package/src/tool/musicalTypography/i18n/zh.ts +2 -1
  293. package/src/tool/placeholderGenerator/bibliography.astro +2 -10
  294. package/src/tool/placeholderGenerator/bibliography.ts +7 -0
  295. package/src/tool/placeholderGenerator/i18n/de.ts +2 -14
  296. package/src/tool/placeholderGenerator/i18n/en.ts +4 -16
  297. package/src/tool/placeholderGenerator/i18n/es.ts +4 -16
  298. package/src/tool/placeholderGenerator/i18n/fr.ts +2 -14
  299. package/src/tool/placeholderGenerator/i18n/id.ts +2 -14
  300. package/src/tool/placeholderGenerator/i18n/it.ts +2 -14
  301. package/src/tool/placeholderGenerator/i18n/ja.ts +2 -14
  302. package/src/tool/placeholderGenerator/i18n/ko.ts +2 -14
  303. package/src/tool/placeholderGenerator/i18n/nl.ts +2 -14
  304. package/src/tool/placeholderGenerator/i18n/pl.ts +2 -14
  305. package/src/tool/placeholderGenerator/i18n/pt.ts +2 -14
  306. package/src/tool/placeholderGenerator/i18n/ru.ts +2 -14
  307. package/src/tool/placeholderGenerator/i18n/sv.ts +2 -14
  308. package/src/tool/placeholderGenerator/i18n/tr.ts +2 -14
  309. package/src/tool/placeholderGenerator/i18n/zh.ts +2 -14
  310. package/src/tool/promoteThisWebsite/asset-bindings.ts +73 -0
  311. package/src/tool/promoteThisWebsite/bibliography.astro +14 -0
  312. package/src/tool/promoteThisWebsite/bibliography.ts +14 -0
  313. package/src/tool/promoteThisWebsite/component.astro +136 -0
  314. package/src/tool/promoteThisWebsite/control-views.ts +83 -0
  315. package/src/tool/promoteThisWebsite/controller.ts +232 -0
  316. package/src/tool/promoteThisWebsite/dom-views.ts +322 -0
  317. package/src/tool/promoteThisWebsite/entry.ts +16 -0
  318. package/src/tool/promoteThisWebsite/evaluator.ts +9 -0
  319. package/src/tool/promoteThisWebsite/i18n/en.ts +111 -0
  320. package/src/tool/promoteThisWebsite/i18n/es.ts +111 -0
  321. package/src/tool/promoteThisWebsite/index.ts +11 -0
  322. package/src/tool/promoteThisWebsite/jjlmoya-overlay.png +0 -0
  323. package/src/tool/promoteThisWebsite/logic.test.ts +29 -0
  324. package/src/tool/promoteThisWebsite/logic.ts +108 -0
  325. package/src/tool/promoteThisWebsite/pixel-cat.png +0 -0
  326. package/src/tool/promoteThisWebsite/promote-this-website.css +322 -0
  327. package/src/tool/promoteThisWebsite/seo.astro +15 -0
  328. package/src/tool/promoteThisWebsite/storage.ts +28 -0
  329. package/src/tool/promoteThisWebsite/title-view.ts +206 -0
  330. package/src/tool/promoteThisWebsite/ui.ts +59 -0
  331. package/src/tool/promptLibrary/bibliography.astro +2 -10
  332. package/src/tool/promptLibrary/bibliography.ts +6 -0
  333. package/src/tool/promptLibrary/i18n/de.ts +2 -4
  334. package/src/tool/promptLibrary/i18n/en.ts +2 -4
  335. package/src/tool/promptLibrary/i18n/es.ts +2 -4
  336. package/src/tool/promptLibrary/i18n/fr.ts +2 -4
  337. package/src/tool/promptLibrary/i18n/id.ts +2 -4
  338. package/src/tool/promptLibrary/i18n/it.ts +2 -4
  339. package/src/tool/promptLibrary/i18n/ja.ts +2 -4
  340. package/src/tool/promptLibrary/i18n/ko.ts +2 -4
  341. package/src/tool/promptLibrary/i18n/nl.ts +2 -4
  342. package/src/tool/promptLibrary/i18n/pl.ts +2 -1
  343. package/src/tool/promptLibrary/i18n/pt.ts +2 -4
  344. package/src/tool/promptLibrary/i18n/ru.ts +2 -4
  345. package/src/tool/promptLibrary/i18n/sv.ts +2 -4
  346. package/src/tool/promptLibrary/i18n/tr.ts +2 -4
  347. package/src/tool/promptLibrary/i18n/zh.ts +2 -4
  348. package/src/tool/readabilityCalculator/bibliography.astro +2 -10
  349. package/src/tool/readabilityCalculator/bibliography.ts +7 -0
  350. package/src/tool/readabilityCalculator/i18n/de.ts +2 -5
  351. package/src/tool/readabilityCalculator/i18n/en.ts +2 -5
  352. package/src/tool/readabilityCalculator/i18n/es.ts +2 -5
  353. package/src/tool/readabilityCalculator/i18n/fr.ts +2 -5
  354. package/src/tool/readabilityCalculator/i18n/id.ts +2 -5
  355. package/src/tool/readabilityCalculator/i18n/it.ts +2 -5
  356. package/src/tool/readabilityCalculator/i18n/ja.ts +2 -5
  357. package/src/tool/readabilityCalculator/i18n/ko.ts +2 -5
  358. package/src/tool/readabilityCalculator/i18n/nl.ts +2 -5
  359. package/src/tool/readabilityCalculator/i18n/pl.ts +2 -1
  360. package/src/tool/readabilityCalculator/i18n/pt.ts +2 -5
  361. package/src/tool/readabilityCalculator/i18n/ru.ts +2 -5
  362. package/src/tool/readabilityCalculator/i18n/sv.ts +2 -5
  363. package/src/tool/readabilityCalculator/i18n/tr.ts +2 -5
  364. package/src/tool/readabilityCalculator/i18n/zh.ts +2 -5
  365. package/src/tool/serpPixelSimulator/controller.ts +1 -0
  366. package/src/tool/serpPixelSimulator/i18n/en.ts +2 -2
  367. package/src/tool/serpPixelSimulator/i18n/es.ts +2 -2
  368. package/src/tool/serpPixelSimulator/logic.test.ts +25 -0
  369. package/src/tool/svgSanitizer/bibliography.astro +2 -10
  370. package/src/tool/svgSanitizer/bibliography.ts +7 -0
  371. package/src/tool/svgSanitizer/i18n/de.ts +2 -5
  372. package/src/tool/svgSanitizer/i18n/en.ts +2 -5
  373. package/src/tool/svgSanitizer/i18n/es.ts +2 -5
  374. package/src/tool/svgSanitizer/i18n/fr.ts +2 -5
  375. package/src/tool/svgSanitizer/i18n/id.ts +2 -5
  376. package/src/tool/svgSanitizer/i18n/it.ts +2 -5
  377. package/src/tool/svgSanitizer/i18n/ja.ts +2 -5
  378. package/src/tool/svgSanitizer/i18n/ko.ts +2 -5
  379. package/src/tool/svgSanitizer/i18n/nl.ts +2 -5
  380. package/src/tool/svgSanitizer/i18n/pl.ts +2 -5
  381. package/src/tool/svgSanitizer/i18n/pt.ts +2 -1
  382. package/src/tool/svgSanitizer/i18n/ru.ts +2 -5
  383. package/src/tool/svgSanitizer/i18n/sv.ts +2 -5
  384. package/src/tool/svgSanitizer/i18n/tr.ts +2 -5
  385. package/src/tool/svgSanitizer/i18n/zh.ts +2 -5
  386. package/src/tool/svgToCss/bibliography.astro +2 -10
  387. package/src/tool/svgToCss/bibliography.ts +8 -0
  388. package/src/tool/svgToCss/i18n/de.ts +2 -18
  389. package/src/tool/svgToCss/i18n/en.ts +2 -18
  390. package/src/tool/svgToCss/i18n/es.ts +2 -18
  391. package/src/tool/svgToCss/i18n/fr.ts +2 -18
  392. package/src/tool/svgToCss/i18n/id.ts +2 -18
  393. package/src/tool/svgToCss/i18n/it.ts +2 -18
  394. package/src/tool/svgToCss/i18n/ja.ts +2 -18
  395. package/src/tool/svgToCss/i18n/ko.ts +2 -18
  396. package/src/tool/svgToCss/i18n/nl.ts +2 -18
  397. package/src/tool/svgToCss/i18n/pl.ts +2 -18
  398. package/src/tool/svgToCss/i18n/pt.ts +2 -18
  399. package/src/tool/svgToCss/i18n/ru.ts +2 -18
  400. package/src/tool/svgToCss/i18n/sv.ts +2 -18
  401. package/src/tool/svgToCss/i18n/tr.ts +2 -18
  402. package/src/tool/svgToCss/i18n/zh.ts +2 -18
  403. package/src/tool/urlCleaner/bibliography.astro +2 -10
  404. package/src/tool/urlCleaner/bibliography.ts +7 -0
  405. package/src/tool/urlCleaner/i18n/de.ts +2 -5
  406. package/src/tool/urlCleaner/i18n/en.ts +2 -5
  407. package/src/tool/urlCleaner/i18n/es.ts +2 -5
  408. package/src/tool/urlCleaner/i18n/fr.ts +2 -5
  409. package/src/tool/urlCleaner/i18n/id.ts +2 -5
  410. package/src/tool/urlCleaner/i18n/it.ts +2 -5
  411. package/src/tool/urlCleaner/i18n/ja.ts +2 -5
  412. package/src/tool/urlCleaner/i18n/ko.ts +2 -5
  413. package/src/tool/urlCleaner/i18n/nl.ts +2 -5
  414. package/src/tool/urlCleaner/i18n/pl.ts +2 -1
  415. package/src/tool/urlCleaner/i18n/pt.ts +2 -5
  416. package/src/tool/urlCleaner/i18n/ru.ts +2 -5
  417. package/src/tool/urlCleaner/i18n/sv.ts +2 -5
  418. package/src/tool/urlCleaner/i18n/tr.ts +2 -5
  419. package/src/tool/urlCleaner/i18n/zh.ts +2 -5
  420. package/src/tool/urlEncoderDecoder/bibliography.astro +2 -10
  421. package/src/tool/urlEncoderDecoder/bibliography.ts +7 -0
  422. package/src/tool/urlEncoderDecoder/i18n/de.ts +2 -14
  423. package/src/tool/urlEncoderDecoder/i18n/en.ts +3 -15
  424. package/src/tool/urlEncoderDecoder/i18n/es.ts +3 -15
  425. package/src/tool/urlEncoderDecoder/i18n/fr.ts +2 -14
  426. package/src/tool/urlEncoderDecoder/i18n/id.ts +2 -14
  427. package/src/tool/urlEncoderDecoder/i18n/it.ts +2 -14
  428. package/src/tool/urlEncoderDecoder/i18n/ja.ts +2 -14
  429. package/src/tool/urlEncoderDecoder/i18n/ko.ts +2 -14
  430. package/src/tool/urlEncoderDecoder/i18n/nl.ts +2 -14
  431. package/src/tool/urlEncoderDecoder/i18n/pl.ts +2 -14
  432. package/src/tool/urlEncoderDecoder/i18n/pt.ts +2 -14
  433. package/src/tool/urlEncoderDecoder/i18n/ru.ts +2 -14
  434. package/src/tool/urlEncoderDecoder/i18n/sv.ts +2 -14
  435. package/src/tool/urlEncoderDecoder/i18n/tr.ts +2 -14
  436. package/src/tool/urlEncoderDecoder/i18n/zh.ts +2 -14
  437. package/src/tool/utmGenerator/bibliography.astro +2 -10
  438. package/src/tool/utmGenerator/bibliography.ts +6 -0
  439. package/src/tool/utmGenerator/i18n/de.ts +2 -4
  440. package/src/tool/utmGenerator/i18n/en.ts +2 -4
  441. package/src/tool/utmGenerator/i18n/es.ts +2 -4
  442. package/src/tool/utmGenerator/i18n/fr.ts +2 -4
  443. package/src/tool/utmGenerator/i18n/id.ts +2 -4
  444. package/src/tool/utmGenerator/i18n/it.ts +2 -4
  445. package/src/tool/utmGenerator/i18n/ja.ts +2 -4
  446. package/src/tool/utmGenerator/i18n/ko.ts +2 -4
  447. package/src/tool/utmGenerator/i18n/nl.ts +2 -4
  448. package/src/tool/utmGenerator/i18n/pl.ts +2 -4
  449. package/src/tool/utmGenerator/i18n/pt.ts +2 -4
  450. package/src/tool/utmGenerator/i18n/ru.ts +2 -4
  451. package/src/tool/utmGenerator/i18n/sv.ts +2 -4
  452. package/src/tool/utmGenerator/i18n/tr.ts +2 -4
  453. package/src/tool/utmGenerator/i18n/zh.ts +2 -4
  454. package/src/tool/visualCssGridFlexboxGenerator/component.astro +1 -0
  455. package/src/tool/visualCssGridFlexboxGenerator/logic.test.ts +29 -0
  456. package/src/tool/visualCssGridFlexboxGenerator/workspace.ts +13 -1
  457. package/src/tools.ts +2 -1
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { ConversorExcelCsvHtmlUI } from '../ui';
@@ -96,12 +97,7 @@ export const content: ToolLocaleContent<ConversorExcelCsvHtmlUI> = {
96
97
  faqTitle: 'Sıkça Sorulan Sorular',
97
98
  faq: faqData,
98
99
  bibliographyTitle: 'HTML Tabloları ve Veri Formatları Hakkında Kaynaklar',
99
- bibliography: [
100
- { name: 'W3C: HTML Tabloları', url: 'https://www.w3.org/WAI/tutorials/tables/' },
101
- { name: 'MDN: HTML tablo öğesi', url: 'https://developer.mozilla.org/en-US/docs/Web/HTML/Element/table' },
102
- { name: 'RFC 4180: CSV Formatı', url: 'https://tools.ietf.org/html/rfc4180' },
103
- { name: 'Google Sheets: Verilerinizi indirin', url: 'https://support.google.com/docs/answer/183965' },
104
- ],
100
+ bibliography,
105
101
  howTo: howToData,
106
102
  schemas: [faqSchema, howToSchema, appSchema],
107
103
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { ConversorExcelCsvHtmlUI } from '../ui';
@@ -96,12 +97,7 @@ export const content: ToolLocaleContent<ConversorExcelCsvHtmlUI> = {
96
97
  faqTitle: '常见问题',
97
98
  faq: faqData,
98
99
  bibliographyTitle: '关于 HTML 表格和数据格式的资源',
99
- bibliography: [
100
- { name: 'W3C: HTML 表格', url: 'https://www.w3.org/WAI/tutorials/tables/' },
101
- { name: 'MDN: HTML table 元素', url: 'https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/table' },
102
- { name: 'RFC 4180: CSV 格式', url: 'https://tools.ietf.org/html/rfc4180' },
103
- { name: 'Google 表格:下载您的数据', url: 'https://support.google.com/docs/answer/183965' },
104
- ],
100
+ bibliography,
105
101
  howTo: howToData,
106
102
  schemas: [faqSchema, howToSchema, appSchema],
107
103
  seo: [
@@ -1,14 +1,6 @@
1
1
  ---
2
2
  import { Bibliography as SharedBibliography } from '@jjlmoya/utils-shared';
3
- import { cronGenerator } 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 cronGenerator.i18n[locale]?.();
3
+ import { bibliography } from './bibliography';
12
4
  ---
13
5
 
14
- {content && <SharedBibliography links={content.bibliography} />}
6
+ <SharedBibliography links={bibliography} />
@@ -0,0 +1,6 @@
1
+ import type { BibliographyEntry } from '../../types';
2
+
3
+ export const bibliography: BibliographyEntry[] = [
4
+ { name: 'GNU Crontab Manual: Cron Expressions on Linux', url: 'https://www.gnu.org/software/mcron/manual/html_node/Crontab-file.html' },
5
+ { name: 'Cron on Wikipedia: History and Syntax', url: 'https://en.wikipedia.org/wiki/Cron' },
6
+ ];
@@ -149,9 +149,13 @@ const advFields = [
149
149
 
150
150
  function describeDayPart(dom: string, mon: string, dow: string, t: CronGeneratorUI): string {
151
151
  let s = '';
152
+ const dayNames = t.descDays.split(',');
152
153
  if (dom !== '*') s += t.descOnDay.replace('{d}', dom);
153
154
  if (mon !== '*') s += t.descInMonth.replace('{mon}', mon);
154
- if (dow !== '*') s += t.descIfDow.replace('{d}', dow);
155
+ if (dow !== '*') {
156
+ const day = /^\d+$/.test(dow) ? (dayNames[Number(dow)] ?? dow) : dow;
157
+ s += t.descIfDow.replace('{d}', day);
158
+ }
155
159
  return s;
156
160
  }
157
161
 
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { CronGeneratorUI } from '../ui';
@@ -137,16 +138,7 @@ export const content: ToolLocaleContent<CronGeneratorUI> = {
137
138
  faqTitle: 'Häufig gestellte Fragen',
138
139
  faq: faqData,
139
140
  bibliographyTitle: 'Referenzen und Dokumentation',
140
- bibliography: [
141
- {
142
- name: 'GNU Crontab-Handbuch: Cron-Ausdrücke unter Linux',
143
- url: 'https://www.gnu.org/software/mcron/manual/html_node/Crontab-file.html',
144
- },
145
- {
146
- name: 'Cron auf Wikipedia: Geschichte und Syntax',
147
- url: 'https://de.wikipedia.org/wiki/Cron',
148
- },
149
- ],
141
+ bibliography,
150
142
  howTo: howToData,
151
143
  schemas: [faqSchema, howToSchema, appSchema],
152
144
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { CronGeneratorUI } from '../ui';
@@ -137,16 +138,7 @@ export const content: ToolLocaleContent<CronGeneratorUI> = {
137
138
  faqTitle: 'Frequently Asked Questions',
138
139
  faq: faqData,
139
140
  bibliographyTitle: 'References and Documentation',
140
- bibliography: [
141
- {
142
- name: 'GNU Crontab Manual: Cron Expressions on Linux',
143
- url: 'https://www.gnu.org/software/mcron/manual/html_node/Crontab-file.html',
144
- },
145
- {
146
- name: 'Cron on Wikipedia: History and Syntax',
147
- url: 'https://en.wikipedia.org/wiki/Cron',
148
- },
149
- ],
141
+ bibliography,
150
142
  howTo: howToData,
151
143
  schemas: [faqSchema, howToSchema, appSchema],
152
144
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { CronGeneratorUI } from '../ui';
@@ -137,16 +138,7 @@ export const content: ToolLocaleContent<CronGeneratorUI> = {
137
138
  faqTitle: 'Preguntas Frecuentes',
138
139
  faq: faqData,
139
140
  bibliographyTitle: 'Referencias y Documentación',
140
- bibliography: [
141
- {
142
- name: 'GNU Crontab Manual: Expresiones Cron en Linux',
143
- url: 'https://www.gnu.org/software/mcron/manual/html_node/Crontab-file.html',
144
- },
145
- {
146
- name: 'Cron en Wikipedia: Historia y Sintaxis',
147
- url: 'https://en.wikipedia.org/wiki/Cron',
148
- },
149
- ],
141
+ bibliography,
150
142
  howTo: howToData,
151
143
  schemas: [faqSchema, howToSchema, appSchema],
152
144
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { CronGeneratorUI } from '../ui';
@@ -137,16 +138,7 @@ export const content: ToolLocaleContent<CronGeneratorUI> = {
137
138
  faqTitle: 'Questions fréquentes',
138
139
  faq: faqData,
139
140
  bibliographyTitle: 'Références et documentation',
140
- bibliography: [
141
- {
142
- name: 'Manuel GNU Crontab: Expressions Cron sous Linux',
143
- url: 'https://www.gnu.org/software/mcron/manual/html_node/Crontab-file.html',
144
- },
145
- {
146
- name: 'Cron sur Wikipedia: Histoire et syntaxe',
147
- url: 'https://en.wikipedia.org/wiki/Cron',
148
- },
149
- ],
141
+ bibliography,
150
142
  howTo: howToData,
151
143
  schemas: [faqSchema, howToSchema, appSchema],
152
144
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { CronGeneratorUI } from '../ui';
@@ -137,16 +138,7 @@ export const content: ToolLocaleContent<CronGeneratorUI> = {
137
138
  faqTitle: 'Pertanyaan yang Sering Diajukan',
138
139
  faq: faqData,
139
140
  bibliographyTitle: 'Referensi dan Dokumentasi',
140
- bibliography: [
141
- {
142
- name: 'Manual GNU Crontab: Ekspresi Cron di Linux',
143
- url: 'https://www.gnu.org/software/mcron/manual/html_node/Crontab-file.html',
144
- },
145
- {
146
- name: 'Cron di Wikipedia: Sejarah dan Sintaks',
147
- url: 'https://id.wikipedia.org/wiki/Cron',
148
- },
149
- ],
141
+ bibliography,
150
142
  howTo: howToData,
151
143
  schemas: [faqSchema, howToSchema, appSchema],
152
144
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { CronGeneratorUI } from '../ui';
@@ -137,16 +138,7 @@ export const content: ToolLocaleContent<CronGeneratorUI> = {
137
138
  faqTitle: 'Domande Frequenti',
138
139
  faq: faqData,
139
140
  bibliographyTitle: 'Riferimenti e documentazione',
140
- bibliography: [
141
- {
142
- name: 'Manuale GNU Crontab: espressioni Cron su Linux',
143
- url: 'https://www.gnu.org/software/mcron/manual/html_node/Crontab-file.html',
144
- },
145
- {
146
- name: 'Cron su Wikipedia: storia e sintassi',
147
- url: 'https://it.wikipedia.org/wiki/Cron',
148
- },
149
- ],
141
+ bibliography,
150
142
  howTo: howToData,
151
143
  schemas: [faqSchema, howToSchema, appSchema],
152
144
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { CronGeneratorUI } from '../ui';
@@ -137,16 +138,7 @@ export const content: ToolLocaleContent<CronGeneratorUI> = {
137
138
  faqTitle: 'よくある質問',
138
139
  faq: faqData,
139
140
  bibliographyTitle: 'リファレンスとドキュメント',
140
- bibliography: [
141
- {
142
- name: 'GNU Crontabマニュアル:LinuxにおけるCronエクスプレッション',
143
- url: 'https://www.gnu.org/software/mcron/manual/html_node/Crontab-file.html',
144
- },
145
- {
146
- name: 'WikipediaのCron:履歴と構文',
147
- url: 'https://ja.wikipedia.org/wiki/Cron',
148
- },
149
- ],
141
+ bibliography,
150
142
  howTo: howToData,
151
143
  schemas: [faqSchema, howToSchema, appSchema],
152
144
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { CronGeneratorUI } from '../ui';
@@ -137,16 +138,7 @@ export const content: ToolLocaleContent<CronGeneratorUI> = {
137
138
  faqTitle: '자주 묻는 질문',
138
139
  faq: faqData,
139
140
  bibliographyTitle: '참조 및 문서',
140
- bibliography: [
141
- {
142
- name: 'GNU Crontab 매뉴얼: Linux의 Cron 표현식',
143
- url: 'https://www.gnu.org/software/mcron/manual/html_node/Crontab-file.html',
144
- },
145
- {
146
- name: '위키백과 Cron: 역사 및 구문',
147
- url: 'https://ko.wikipedia.org/wiki/Cron',
148
- },
149
- ],
141
+ bibliography,
150
142
  howTo: howToData,
151
143
  schemas: [faqSchema, howToSchema, appSchema],
152
144
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { CronGeneratorUI } from '../ui';
@@ -137,16 +138,7 @@ export const content: ToolLocaleContent<CronGeneratorUI> = {
137
138
  faqTitle: 'Veelgestelde Vragen',
138
139
  faq: faqData,
139
140
  bibliographyTitle: 'Referenties en Documentatie',
140
- bibliography: [
141
- {
142
- name: 'GNU Crontab Handleiding: Cron expressies op Linux',
143
- url: 'https://www.gnu.org/software/mcron/manual/html_node/Crontab-file.html',
144
- },
145
- {
146
- name: 'Cron op Wikipedia: Geschiedenis en Syntaxis',
147
- url: 'https://nl.wikipedia.org/wiki/Cron',
148
- },
149
- ],
141
+ bibliography,
150
142
  howTo: howToData,
151
143
  schemas: [faqSchema, howToSchema, appSchema],
152
144
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { CronGeneratorUI } from '../ui';
@@ -137,16 +138,7 @@ export const content: ToolLocaleContent<CronGeneratorUI> = {
137
138
  faqTitle: 'Często zadawane pytania',
138
139
  faq: faqData,
139
140
  bibliographyTitle: 'Referencje i dokumentacja',
140
- bibliography: [
141
- {
142
- name: 'Podręcznik GNU Crontab: wyrażenia Cron w systemie Linux',
143
- url: 'https://www.gnu.org/software/mcron/manual/html_node/Crontab-file.html',
144
- },
145
- {
146
- name: 'Cron w Wikipedii: historia i składnia',
147
- url: 'https://pl.wikipedia.org/wiki/Cron',
148
- },
149
- ],
141
+ bibliography,
150
142
  howTo: howToData,
151
143
  schemas: [faqSchema, howToSchema, appSchema],
152
144
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { CronGeneratorUI } from '../ui';
@@ -137,16 +138,7 @@ export const content: ToolLocaleContent<CronGeneratorUI> = {
137
138
  faqTitle: 'Perguntas Frequentes',
138
139
  faq: faqData,
139
140
  bibliographyTitle: 'Referências e Documentação',
140
- bibliography: [
141
- {
142
- name: 'Manual do GNU Crontab: Expressões Cron no Linux',
143
- url: 'https://www.gnu.org/software/mcron/manual/html_node/Crontab-file.html',
144
- },
145
- {
146
- name: 'Cron na Wikipedia: História e Sintaxe',
147
- url: 'https://pt.wikipedia.org/wiki/Cron',
148
- },
149
- ],
141
+ bibliography,
150
142
  howTo: howToData,
151
143
  schemas: [faqSchema, howToSchema, appSchema],
152
144
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { CronGeneratorUI } from '../ui';
@@ -137,16 +138,7 @@ export const content: ToolLocaleContent<CronGeneratorUI> = {
137
138
  faqTitle: 'Часто задаваемые вопросы',
138
139
  faq: faqData,
139
140
  bibliographyTitle: 'Ссылки и документация',
140
- bibliography: [
141
- {
142
- name: 'Руководство GNU Crontab: выражения Cron в Linux',
143
- url: 'https://www.gnu.org/software/mcron/manual/html_node/Crontab-file.html',
144
- },
145
- {
146
- name: 'Cron в Википедии: история и синтаксис',
147
- url: 'https://ru.wikipedia.org/wiki/Cron',
148
- },
149
- ],
141
+ bibliography,
150
142
  howTo: howToData,
151
143
  schemas: [faqSchema, howToSchema, appSchema],
152
144
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { CronGeneratorUI } from '../ui';
@@ -137,16 +138,7 @@ export const content: ToolLocaleContent<CronGeneratorUI> = {
137
138
  faqTitle: 'Vanliga frågor',
138
139
  faq: faqData,
139
140
  bibliographyTitle: 'Referenser och dokumentation',
140
- bibliography: [
141
- {
142
- name: 'GNU Crontab Manual: Cron-uttryck på Linux',
143
- url: 'https://www.gnu.org/software/mcron/manual/html_node/Crontab-file.html',
144
- },
145
- {
146
- name: 'Cron på Wikipedia: Historia och syntax',
147
- url: 'https://sv.wikipedia.org/wiki/Cron',
148
- },
149
- ],
141
+ bibliography,
150
142
  howTo: howToData,
151
143
  schemas: [faqSchema, howToSchema, appSchema],
152
144
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { CronGeneratorUI } from '../ui';
@@ -137,16 +138,7 @@ export const content: ToolLocaleContent<CronGeneratorUI> = {
137
138
  faqTitle: 'Sıkça Sorulan Sorular',
138
139
  faq: faqData,
139
140
  bibliographyTitle: 'Referanslar ve Dokümantasyon',
140
- bibliography: [
141
- {
142
- name: 'GNU Crontab Kılavuzu: Linux\'ta Cron İfadeleri',
143
- url: 'https://www.gnu.org/software/mcron/manual/html_node/Crontab-file.html',
144
- },
145
- {
146
- name: 'Wikipedia\'da Cron: Tarihçe ve Sözdizimi',
147
- url: 'https://tr.wikipedia.org/wiki/Cron',
148
- },
149
- ],
141
+ bibliography,
150
142
  howTo: howToData,
151
143
  schemas: [faqSchema, howToSchema, appSchema],
152
144
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { CronGeneratorUI } from '../ui';
@@ -137,16 +138,7 @@ export const content: ToolLocaleContent<CronGeneratorUI> = {
137
138
  faqTitle: '常见问题',
138
139
  faq: faqData,
139
140
  bibliographyTitle: '参考资料与文档',
140
- bibliography: [
141
- {
142
- name: 'GNU Crontab 手册:Linux 上的 Cron 表达式',
143
- url: 'https://www.gnu.org/software/mcron/manual/html_node/Crontab-file.html',
144
- },
145
- {
146
- name: '维基百科 Cron:历史与语法',
147
- url: 'https://zh.wikipedia.org/wiki/Cron',
148
- },
149
- ],
141
+ bibliography,
150
142
  howTo: howToData,
151
143
  schemas: [faqSchema, howToSchema, appSchema],
152
144
  seo: [
@@ -18,6 +18,7 @@ const t = (ui ?? {}) as CssBoxShadowGeneratorUI;
18
18
  </div>
19
19
 
20
20
  <div class="bsg-presets-row">
21
+ <span class="bsg-presets-label">{t.presetsLabel}</span>
21
22
  <button class="bsg-chip" data-preset="card" type="button">{t.presetCard}</button>
22
23
  <button class="bsg-chip" data-preset="float" type="button">{t.presetFloat}</button>
23
24
  <button class="bsg-chip" data-preset="inset" type="button">{t.presetInset}</button>
@@ -75,7 +76,7 @@ const t = (ui ?? {}) as CssBoxShadowGeneratorUI;
75
76
 
76
77
  <div class="bsg-code-block">
77
78
  <div class="bsg-code-bar">
78
- <span>CSS</span>
79
+ <span>{t.codeTitle}</span>
79
80
  <button id="bsg-copy" class="bsg-copy-btn" type="button"><Icon name="mdi:content-copy" /> {t.copyCode}</button>
80
81
  </div>
81
82
  <pre id="bsg-code" class="bsg-code"></pre>
@@ -0,0 +1,28 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { buildShadowCss, buildShadowValue, type ShadowLayer } from './logic';
3
+
4
+ const layer: ShadowLayer = {
5
+ offsetX: 2,
6
+ offsetY: 4,
7
+ blur: 8,
8
+ spread: 1,
9
+ color: '#336699',
10
+ opacity: 0.5,
11
+ inset: false,
12
+ };
13
+
14
+ describe('CSS box shadow logic', () => {
15
+ it('returns a valid empty declaration', () => {
16
+ expect(buildShadowCss([])).toBe('box-shadow: none;');
17
+ expect(buildShadowValue([])).toBe('');
18
+ });
19
+
20
+ it('converts a layer to rgba CSS', () => {
21
+ expect(buildShadowCss([layer])).toBe('box-shadow: 2px 4px 8px 1px rgba(51, 102, 153, 0.5);');
22
+ });
23
+
24
+ it('keeps inset and joins multiple layers', () => {
25
+ expect(buildShadowValue([{ ...layer, inset: true }, { ...layer, offsetX: -1 }])).toContain('inset 2px 4px');
26
+ expect(buildShadowValue([layer, { ...layer, offsetX: -1 }])).toContain(', ');
27
+ });
28
+ });
@@ -1,14 +1,6 @@
1
1
  ---
2
2
  import { Bibliography as SharedBibliography } from '@jjlmoya/utils-shared';
3
- import { cssSpecificityCalculator } 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 cssSpecificityCalculator.i18n[locale]?.();
3
+ import { bibliography } from './bibliography';
12
4
  ---
13
5
 
14
- {content && <SharedBibliography links={content.bibliography} />}
6
+ <SharedBibliography links={bibliography} />
@@ -0,0 +1,6 @@
1
+ import type { BibliographyEntry } from '../../types';
2
+
3
+ export const bibliography: BibliographyEntry[] = [
4
+ { name: 'MDN Web Docs: CSS Specificity', url: 'https://developer.mozilla.org/en/docs/Web/CSS/Specificity' },
5
+ { name: 'W3C: Selectors Level 3 - Specificity', url: 'https://www.w3.org/TR/selectors-3/#specificity' },
6
+ ];
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { CssSpecificityCalculatorUI } from '../ui';
@@ -99,16 +100,7 @@ export const content: ToolLocaleContent<CssSpecificityCalculatorUI> = {
99
100
  faqTitle: 'Häufig gestellte Fragen',
100
101
  faq: faqData,
101
102
  bibliographyTitle: 'Referenzen und Dokumentation',
102
- bibliography: [
103
- {
104
- name: 'MDN Web Docs: CSS-Spezifität',
105
- url: 'https://developer.mozilla.org/en/docs/Web/CSS/Specificity',
106
- },
107
- {
108
- name: 'W3C: Selektoren Level 3 - Spezifität',
109
- url: 'https://www.w3.org/TR/selectors-3/#specificity',
110
- },
111
- ],
103
+ bibliography,
112
104
  howTo: howToData,
113
105
  schemas: [faqSchema, howToSchema, appSchema],
114
106
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { CssSpecificityCalculatorUI } from '../ui';
@@ -99,16 +100,7 @@ export const content: ToolLocaleContent<CssSpecificityCalculatorUI> = {
99
100
  faqTitle: 'Frequently Asked Questions',
100
101
  faq: faqData,
101
102
  bibliographyTitle: 'References and Documentation',
102
- bibliography: [
103
- {
104
- name: 'MDN Web Docs: CSS Specificity',
105
- url: 'https://developer.mozilla.org/en/docs/Web/CSS/Specificity',
106
- },
107
- {
108
- name: 'W3C: Selectors Level 3 - Specificity',
109
- url: 'https://www.w3.org/TR/selectors-3/#specificity',
110
- },
111
- ],
103
+ bibliography,
112
104
  howTo: howToData,
113
105
  schemas: [faqSchema, howToSchema, appSchema],
114
106
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { CssSpecificityCalculatorUI } from '../ui';
@@ -99,16 +100,7 @@ export const content: ToolLocaleContent<CssSpecificityCalculatorUI> = {
99
100
  faqTitle: 'Preguntas Frecuentes',
100
101
  faq: faqData,
101
102
  bibliographyTitle: 'Referencias y Documentación',
102
- bibliography: [
103
- {
104
- name: 'MDN Web Docs: Especificidad en CSS',
105
- url: 'https://developer.mozilla.org/es/docs/Web/CSS/Specificity',
106
- },
107
- {
108
- name: 'W3C: Selectors Level 3 - Especificidad',
109
- url: 'https://www.w3.org/TR/selectors-3/#specificity',
110
- },
111
- ],
103
+ bibliography,
112
104
  howTo: howToData,
113
105
  schemas: [faqSchema, howToSchema, appSchema],
114
106
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { CssSpecificityCalculatorUI } from '../ui';
@@ -99,16 +100,7 @@ export const content: ToolLocaleContent<CssSpecificityCalculatorUI> = {
99
100
  faqTitle: 'Questions Fréquentes',
100
101
  faq: faqData,
101
102
  bibliographyTitle: 'Références et Documentation',
102
- bibliography: [
103
- {
104
- name: 'MDN Web Docs: Spécificité CSS',
105
- url: 'https://developer.mozilla.org/fr/docs/Web/CSS/Specificity',
106
- },
107
- {
108
- name: 'W3C: Selectors Level 3 - Spécificité',
109
- url: 'https://www.w3.org/TR/selectors-3/#specificity',
110
- },
111
- ],
103
+ bibliography,
112
104
  howTo: howToData,
113
105
  schemas: [faqSchema, howToSchema, appSchema],
114
106
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { CssSpecificityCalculatorUI } from '../ui';
@@ -99,16 +100,7 @@ export const content: ToolLocaleContent<CssSpecificityCalculatorUI> = {
99
100
  faqTitle: 'Pertanyaan yang Sering Diajukan',
100
101
  faq: faqData,
101
102
  bibliographyTitle: 'Referensi dan Dokumentasi',
102
- bibliography: [
103
- {
104
- name: 'MDN Web Docs: CSS Specificity',
105
- url: 'https://developer.mozilla.org/en/docs/Web/CSS/Specificity',
106
- },
107
- {
108
- name: 'W3C: Selectors Level 3 - Specificity',
109
- url: 'https://www.w3.org/TR/selectors-3/#specificity',
110
- },
111
- ],
103
+ bibliography,
112
104
  howTo: howToData,
113
105
  schemas: [faqSchema, howToSchema, appSchema],
114
106
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { CssSpecificityCalculatorUI } from '../ui';
@@ -99,16 +100,7 @@ export const content: ToolLocaleContent<CssSpecificityCalculatorUI> = {
99
100
  faqTitle: 'Domande Frequenti',
100
101
  faq: faqData,
101
102
  bibliographyTitle: 'Riferimenti e Documentazione',
102
- bibliography: [
103
- {
104
- name: 'MDN Web Docs: Specificità CSS',
105
- url: 'https://developer.mozilla.org/it/docs/Web/CSS/Specificity',
106
- },
107
- {
108
- name: 'W3C: Selectors Level 3 - Specificità',
109
- url: 'https://www.w3.org/TR/selectors-3/#specificity',
110
- },
111
- ],
103
+ bibliography,
112
104
  howTo: howToData,
113
105
  schemas: [faqSchema, howToSchema, appSchema],
114
106
  seo: [