@jjlmoya/utils-developer 1.13.0 → 1.15.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 (184) hide show
  1. package/package.json +1 -1
  2. package/src/category/i18n/fr.ts +1 -1
  3. package/src/category/i18n/ru.ts +1 -1
  4. package/src/layouts/PreviewLayout.astro +1 -0
  5. package/src/pages/[locale]/[slug].astro +29 -12
  6. package/src/tests/diacritics_density.test.ts +118 -0
  7. package/src/tests/inverted_punctuation.test.ts +113 -0
  8. package/src/tests/no_en_dash.test.ts +73 -0
  9. package/src/tests/script_density.test.ts +94 -0
  10. package/src/tests/shared-test-helpers.ts +56 -0
  11. package/src/tests/tool_exports.test.ts +34 -0
  12. package/src/tool/aspectRatio/aspect-ratio-calculator.css +1 -1
  13. package/src/tool/aspectRatio/i18n/de.ts +1 -1
  14. package/src/tool/aspectRatio/i18n/fr.ts +1 -1
  15. package/src/tool/aspectRatio/i18n/pl.ts +2 -2
  16. package/src/tool/aspectRatio/i18n/ru.ts +4 -4
  17. package/src/tool/aspectRatio/i18n/zh.ts +1 -1
  18. package/src/tool/aspectRatio/seo.astro +2 -1
  19. package/src/tool/calculadoraTiempoDatos/data-time-calculator-web-speed-impact.css +26 -26
  20. package/src/tool/calculadoraTiempoDatos/i18n/de.ts +1 -1
  21. package/src/tool/calculadoraTiempoDatos/i18n/pl.ts +1 -1
  22. package/src/tool/calculadoraTiempoDatos/i18n/ru.ts +5 -5
  23. package/src/tool/calculadoraTiempoDatos/i18n/sv.ts +5 -5
  24. package/src/tool/calculadoraTiempoDatos/i18n/zh.ts +1 -1
  25. package/src/tool/calculadoraTiempoDatos/seo.astro +2 -1
  26. package/src/tool/colorConverter/color-converter-rgb-hex-hsl.css +9 -9
  27. package/src/tool/colorConverter/i18n/de.ts +1 -1
  28. package/src/tool/colorConverter/i18n/ru.ts +2 -2
  29. package/src/tool/colorConverter/seo.astro +2 -1
  30. package/src/tool/conversorExcelCsvHtml/excel-csv-html-table-converter.css +24 -24
  31. package/src/tool/conversorExcelCsvHtml/i18n/es.ts +1 -1
  32. package/src/tool/conversorExcelCsvHtml/i18n/pl.ts +1 -1
  33. package/src/tool/conversorExcelCsvHtml/i18n/ru.ts +2 -2
  34. package/src/tool/conversorExcelCsvHtml/i18n/zh.ts +2 -2
  35. package/src/tool/conversorExcelCsvHtml/seo.astro +2 -1
  36. package/src/tool/cronGenerator/cron.css +5 -5
  37. package/src/tool/cronGenerator/i18n/de.ts +4 -4
  38. package/src/tool/cronGenerator/i18n/en.ts +1 -1
  39. package/src/tool/cronGenerator/i18n/es.ts +2 -2
  40. package/src/tool/cronGenerator/i18n/fr.ts +5 -5
  41. package/src/tool/cronGenerator/i18n/id.ts +1 -1
  42. package/src/tool/cronGenerator/i18n/nl.ts +1 -1
  43. package/src/tool/cronGenerator/i18n/pl.ts +8 -8
  44. package/src/tool/cronGenerator/i18n/pt.ts +1 -1
  45. package/src/tool/cronGenerator/i18n/ru.ts +9 -9
  46. package/src/tool/cronGenerator/i18n/sv.ts +1 -1
  47. package/src/tool/cronGenerator/i18n/zh.ts +3 -3
  48. package/src/tool/cronGenerator/seo.astro +2 -1
  49. package/src/tool/cssSpecificityCalculator/css-specificity-calculator.css +1 -1
  50. package/src/tool/cssSpecificityCalculator/i18n/de.ts +1 -1
  51. package/src/tool/cssSpecificityCalculator/i18n/fr.ts +3 -3
  52. package/src/tool/cssSpecificityCalculator/i18n/pl.ts +2 -2
  53. package/src/tool/cssSpecificityCalculator/i18n/ru.ts +2 -2
  54. package/src/tool/cssSpecificityCalculator/seo.astro +2 -1
  55. package/src/tool/cssToInlineConverter/css-to-inline-converter.css +1 -1
  56. package/src/tool/cssToInlineConverter/i18n/de.ts +6 -6
  57. package/src/tool/cssToInlineConverter/i18n/es.ts +1 -1
  58. package/src/tool/cssToInlineConverter/i18n/fr.ts +3 -3
  59. package/src/tool/cssToInlineConverter/seo.astro +2 -1
  60. package/src/tool/duplicateCssRemover/duplicate-css-remover.css +2 -2
  61. package/src/tool/duplicateCssRemover/i18n/de.ts +7 -7
  62. package/src/tool/duplicateCssRemover/i18n/fr.ts +1 -1
  63. package/src/tool/duplicateCssRemover/i18n/id.ts +1 -1
  64. package/src/tool/duplicateCssRemover/i18n/nl.ts +1 -1
  65. package/src/tool/duplicateCssRemover/i18n/pl.ts +1 -1
  66. package/src/tool/duplicateCssRemover/i18n/pt.ts +1 -1
  67. package/src/tool/duplicateCssRemover/i18n/ru.ts +3 -3
  68. package/src/tool/duplicateCssRemover/i18n/sv.ts +1 -1
  69. package/src/tool/duplicateCssRemover/seo.astro +2 -1
  70. package/src/tool/generadorSecurityTxt/i18n/de.ts +5 -5
  71. package/src/tool/generadorSecurityTxt/i18n/ru.ts +2 -2
  72. package/src/tool/generadorSecurityTxt/security-txt-generator-rfc-9116.css +9 -9
  73. package/src/tool/generadorSecurityTxt/seo.astro +2 -1
  74. package/src/tool/hashGenerator/hash-generator.css +10 -10
  75. package/src/tool/hashGenerator/i18n/ru.ts +5 -5
  76. package/src/tool/hashGenerator/i18n/zh.ts +2 -2
  77. package/src/tool/hashGenerator/seo.astro +2 -1
  78. package/src/tool/inspectorCertificadosSsl/i18n/de.ts +6 -6
  79. package/src/tool/inspectorCertificadosSsl/i18n/ru.ts +5 -5
  80. package/src/tool/inspectorCertificadosSsl/seo.astro +2 -1
  81. package/src/tool/inspectorCertificadosSsl/ssl-tls-certificate-inspector.css +9 -9
  82. package/src/tool/jsonFormatter/i18n/de.ts +4 -4
  83. package/src/tool/jsonFormatter/i18n/en.ts +4 -4
  84. package/src/tool/jsonFormatter/i18n/es.ts +4 -4
  85. package/src/tool/jsonFormatter/i18n/fr.ts +4 -4
  86. package/src/tool/jsonFormatter/i18n/id.ts +4 -4
  87. package/src/tool/jsonFormatter/i18n/it.ts +4 -4
  88. package/src/tool/jsonFormatter/i18n/ja.ts +4 -4
  89. package/src/tool/jsonFormatter/i18n/ko.ts +4 -4
  90. package/src/tool/jsonFormatter/i18n/nl.ts +4 -4
  91. package/src/tool/jsonFormatter/i18n/pl.ts +4 -4
  92. package/src/tool/jsonFormatter/i18n/pt.ts +4 -4
  93. package/src/tool/jsonFormatter/i18n/ru.ts +5 -5
  94. package/src/tool/jsonFormatter/i18n/sv.ts +4 -4
  95. package/src/tool/jsonFormatter/i18n/tr.ts +4 -4
  96. package/src/tool/jsonFormatter/i18n/zh.ts +5 -5
  97. package/src/tool/jsonFormatter/json-formatter.css +33 -33
  98. package/src/tool/jsonFormatter/seo.astro +2 -1
  99. package/src/tool/keycode/i18n/de.ts +7 -7
  100. package/src/tool/keycode/i18n/en.ts +5 -5
  101. package/src/tool/keycode/i18n/es.ts +5 -5
  102. package/src/tool/keycode/i18n/fr.ts +7 -7
  103. package/src/tool/keycode/i18n/id.ts +5 -5
  104. package/src/tool/keycode/i18n/it.ts +5 -5
  105. package/src/tool/keycode/i18n/ja.ts +5 -5
  106. package/src/tool/keycode/i18n/ko.ts +5 -5
  107. package/src/tool/keycode/i18n/nl.ts +5 -5
  108. package/src/tool/keycode/i18n/pl.ts +7 -7
  109. package/src/tool/keycode/i18n/pt.ts +5 -5
  110. package/src/tool/keycode/i18n/ru.ts +6 -6
  111. package/src/tool/keycode/i18n/sv.ts +5 -5
  112. package/src/tool/keycode/i18n/tr.ts +5 -5
  113. package/src/tool/keycode/i18n/zh.ts +5 -5
  114. package/src/tool/keycode/keycode.css +1 -1
  115. package/src/tool/keycode/seo.astro +2 -1
  116. package/src/tool/llmCostCalculator/i18n/de.ts +4 -4
  117. package/src/tool/llmCostCalculator/i18n/en.ts +3 -3
  118. package/src/tool/llmCostCalculator/i18n/fr.ts +3 -3
  119. package/src/tool/llmCostCalculator/i18n/id.ts +3 -3
  120. package/src/tool/llmCostCalculator/i18n/pt.ts +3 -3
  121. package/src/tool/llmCostCalculator/i18n/ru.ts +3 -3
  122. package/src/tool/llmCostCalculator/i18n/sv.ts +3 -3
  123. package/src/tool/llmCostCalculator/i18n/tr.ts +3 -3
  124. package/src/tool/llmCostCalculator/i18n/zh.ts +3 -3
  125. package/src/tool/llmCostCalculator/llm-cost-calculator.css +1 -1
  126. package/src/tool/llmCostCalculator/seo.astro +2 -1
  127. package/src/tool/mobileMockupGenerator/i18n/es.ts +1 -1
  128. package/src/tool/mobileMockupGenerator/mobile-mockup-generator.css +68 -68
  129. package/src/tool/mobileMockupGenerator/seo.astro +2 -1
  130. package/src/tool/musicalTypography/i18n/de.ts +1 -1
  131. package/src/tool/musicalTypography/i18n/fr.ts +1 -1
  132. package/src/tool/musicalTypography/i18n/id.ts +1 -1
  133. package/src/tool/musicalTypography/i18n/it.ts +1 -1
  134. package/src/tool/musicalTypography/i18n/ko.ts +1 -1
  135. package/src/tool/musicalTypography/i18n/ru.ts +3 -3
  136. package/src/tool/musicalTypography/musical-typography.css +8 -8
  137. package/src/tool/musicalTypography/seo.astro +2 -1
  138. package/src/tool/placeholderGenerator/i18n/de.ts +4 -4
  139. package/src/tool/placeholderGenerator/i18n/ru.ts +1 -1
  140. package/src/tool/placeholderGenerator/placeholder-image-generator.css +2 -2
  141. package/src/tool/placeholderGenerator/seo.astro +2 -1
  142. package/src/tool/promptLibrary/i18n/de.ts +1 -1
  143. package/src/tool/promptLibrary/prompt-library.css +30 -30
  144. package/src/tool/promptLibrary/seo.astro +2 -1
  145. package/src/tool/readabilityCalculator/i18n/de.ts +2 -2
  146. package/src/tool/readabilityCalculator/seo.astro +2 -1
  147. package/src/tool/readabilityCalculator/visual-readability-calculator-wcag-apca.css +98 -14
  148. package/src/tool/svgSanitizer/i18n/de.ts +2 -2
  149. package/src/tool/svgSanitizer/i18n/id.ts +1 -1
  150. package/src/tool/svgSanitizer/i18n/pl.ts +1 -1
  151. package/src/tool/svgSanitizer/i18n/ru.ts +7 -7
  152. package/src/tool/svgSanitizer/i18n/sv.ts +3 -3
  153. package/src/tool/svgSanitizer/i18n/tr.ts +3 -3
  154. package/src/tool/svgSanitizer/i18n/zh.ts +3 -3
  155. package/src/tool/svgSanitizer/seo.astro +2 -1
  156. package/src/tool/svgSanitizer/svg-sanitizer.css +7 -7
  157. package/src/tool/svgToCss/i18n/de.ts +2 -2
  158. package/src/tool/svgToCss/i18n/es.ts +1 -1
  159. package/src/tool/svgToCss/i18n/fr.ts +1 -1
  160. package/src/tool/svgToCss/i18n/pl.ts +1 -1
  161. package/src/tool/svgToCss/i18n/ru.ts +2 -2
  162. package/src/tool/svgToCss/i18n/zh.ts +2 -2
  163. package/src/tool/svgToCss/seo.astro +2 -1
  164. package/src/tool/svgToCss/svg-to-css-converter.css +2 -2
  165. package/src/tool/urlCleaner/component.astro +23 -5
  166. package/src/tool/urlCleaner/i18n/de.ts +3 -3
  167. package/src/tool/urlCleaner/i18n/es.ts +1 -1
  168. package/src/tool/urlCleaner/i18n/id.ts +1 -1
  169. package/src/tool/urlCleaner/i18n/nl.ts +1 -1
  170. package/src/tool/urlCleaner/seo.astro +2 -1
  171. package/src/tool/urlCleaner/url-tracking-cleaner.css +104 -14
  172. package/src/tool/urlEncoderDecoder/i18n/de.ts +5 -5
  173. package/src/tool/urlEncoderDecoder/i18n/fr.ts +2 -2
  174. package/src/tool/urlEncoderDecoder/i18n/pl.ts +5 -5
  175. package/src/tool/urlEncoderDecoder/i18n/ru.ts +8 -8
  176. package/src/tool/urlEncoderDecoder/i18n/sv.ts +5 -5
  177. package/src/tool/urlEncoderDecoder/i18n/zh.ts +5 -5
  178. package/src/tool/urlEncoderDecoder/seo.astro +2 -1
  179. package/src/tool/urlEncoderDecoder/url-encoder-decoder.css +1 -1
  180. package/src/tool/utmGenerator/i18n/de.ts +2 -2
  181. package/src/tool/utmGenerator/i18n/pl.ts +5 -5
  182. package/src/tool/utmGenerator/i18n/ru.ts +6 -6
  183. package/src/tool/utmGenerator/seo.astro +2 -1
  184. package/src/tool/utmGenerator/utm-generator.css +6 -6
@@ -22,7 +22,7 @@
22
22
  overflow: hidden;
23
23
  }
24
24
 
25
- :global(.theme-dark) .ics-drop-zone {
25
+ .theme-dark .ics-drop-zone {
26
26
  background: rgba(255, 255, 255, 0.03);
27
27
  }
28
28
 
@@ -68,7 +68,7 @@
68
68
  margin: 0;
69
69
  }
70
70
 
71
- :global(.theme-dark) .ics-drop-zone-title {
71
+ .theme-dark .ics-drop-zone-title {
72
72
  color: rgb(226, 232, 240);
73
73
  }
74
74
 
@@ -77,7 +77,7 @@
77
77
  margin: 0;
78
78
  }
79
79
 
80
- :global(.theme-dark) .ics-drop-zone-text {
80
+ .theme-dark .ics-drop-zone-text {
81
81
  color: rgb(148, 163, 184);
82
82
  }
83
83
 
@@ -86,7 +86,7 @@
86
86
  margin: 0;
87
87
  }
88
88
 
89
- :global(.theme-dark) .ics-drop-zone-subtext {
89
+ .theme-dark .ics-drop-zone-subtext {
90
90
  color: rgb(100, 116, 139);
91
91
  }
92
92
 
@@ -124,7 +124,7 @@
124
124
  transition: transform 0.3s ease, background 0.3s ease;
125
125
  }
126
126
 
127
- :global(.theme-dark) .ics-card {
127
+ .theme-dark .ics-card {
128
128
  background: rgba(255, 255, 255, 0.03);
129
129
  border: 1px solid rgba(255, 255, 255, 0.08);
130
130
  }
@@ -159,7 +159,7 @@
159
159
  opacity: 0.8;
160
160
  }
161
161
 
162
- :global(.theme-dark) .ics-card-header h4 {
162
+ .theme-dark .ics-card-header h4 {
163
163
  color: rgb(226, 232, 240);
164
164
  }
165
165
 
@@ -182,7 +182,7 @@
182
182
  letter-spacing: 0.025em;
183
183
  }
184
184
 
185
- :global(.theme-dark) .ics-data-label {
185
+ .theme-dark .ics-data-label {
186
186
  color: rgb(148, 163, 184);
187
187
  }
188
188
 
@@ -193,7 +193,7 @@
193
193
  word-break: break-all;
194
194
  }
195
195
 
196
- :global(.theme-dark) .ics-data-value {
196
+ .theme-dark .ics-data-value {
197
197
  color: rgb(226, 232, 240);
198
198
  }
199
199
 
@@ -232,7 +232,7 @@
232
232
  border: 1px solid rgba(0, 0, 0, 0.05);
233
233
  }
234
234
 
235
- :global(.theme-dark) .ics-fingerprint {
235
+ .theme-dark .ics-fingerprint {
236
236
  background: rgba(0, 0, 0, 0.2);
237
237
  color: rgb(212, 212, 212);
238
238
  border: 1px solid rgba(255, 255, 255, 0.03);
@@ -109,19 +109,19 @@ export const content: ToolLocaleContent<JsonFormatterUI> = {
109
109
  bibliographyTitle: 'Referenzen und Standards',
110
110
  bibliography: [
111
111
  {
112
- name: 'RFC 8259 The JavaScript Object Notation (JSON) Data Interchange Format (IETF)',
112
+ name: 'RFC 8259 - The JavaScript Object Notation (JSON) Data Interchange Format (IETF)',
113
113
  url: 'https://datatracker.ietf.org/doc/html/rfc8259',
114
114
  },
115
115
  {
116
- name: 'ECMA-404 The JSON Data Interchange Syntax (Ecma International)',
116
+ name: 'ECMA-404 - The JSON Data Interchange Syntax (Ecma International)',
117
117
  url: 'https://www.ecma-international.org/publications-and-standards/standards/ecma-404/',
118
118
  },
119
119
  {
120
- name: 'JSON.org Introducing JSON',
120
+ name: 'JSON.org - Introducing JSON',
121
121
  url: 'https://www.json.org/json-en.html',
122
122
  },
123
123
  {
124
- name: 'MDN Web Docs JSON',
124
+ name: 'MDN Web Docs - JSON',
125
125
  url: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON',
126
126
  },
127
127
  ],
@@ -109,19 +109,19 @@ export const content: ToolLocaleContent<JsonFormatterUI> = {
109
109
  bibliographyTitle: 'References and Standards',
110
110
  bibliography: [
111
111
  {
112
- name: 'RFC 8259 The JavaScript Object Notation (JSON) Data Interchange Format (IETF)',
112
+ name: 'RFC 8259 - The JavaScript Object Notation (JSON) Data Interchange Format (IETF)',
113
113
  url: 'https://datatracker.ietf.org/doc/html/rfc8259',
114
114
  },
115
115
  {
116
- name: 'ECMA-404 The JSON Data Interchange Syntax (Ecma International)',
116
+ name: 'ECMA-404 - The JSON Data Interchange Syntax (Ecma International)',
117
117
  url: 'https://www.ecma-international.org/publications-and-standards/standards/ecma-404/',
118
118
  },
119
119
  {
120
- name: 'JSON.org Introducing JSON',
120
+ name: 'JSON.org - Introducing JSON',
121
121
  url: 'https://www.json.org/json-en.html',
122
122
  },
123
123
  {
124
- name: 'MDN Web Docs JSON',
124
+ name: 'MDN Web Docs - JSON',
125
125
  url: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON',
126
126
  },
127
127
  ],
@@ -109,19 +109,19 @@ export const content: ToolLocaleContent<JsonFormatterUI> = {
109
109
  bibliographyTitle: 'Referencias y Estándares',
110
110
  bibliography: [
111
111
  {
112
- name: 'RFC 8259 The JavaScript Object Notation (JSON) Data Interchange Format (IETF)',
112
+ name: 'RFC 8259 - The JavaScript Object Notation (JSON) Data Interchange Format (IETF)',
113
113
  url: 'https://datatracker.ietf.org/doc/html/rfc8259',
114
114
  },
115
115
  {
116
- name: 'ECMA-404 The JSON Data Interchange Syntax (Ecma International)',
116
+ name: 'ECMA-404 - The JSON Data Interchange Syntax (Ecma International)',
117
117
  url: 'https://www.ecma-international.org/publications-and-standards/standards/ecma-404/',
118
118
  },
119
119
  {
120
- name: 'JSON.org Introducing JSON',
120
+ name: 'JSON.org - Introducing JSON',
121
121
  url: 'https://www.json.org/json-en.html',
122
122
  },
123
123
  {
124
- name: 'MDN Web Docs JSON',
124
+ name: 'MDN Web Docs - JSON',
125
125
  url: 'https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/JSON',
126
126
  },
127
127
  ],
@@ -109,19 +109,19 @@ export const content: ToolLocaleContent<JsonFormatterUI> = {
109
109
  bibliographyTitle: 'Références et Normes',
110
110
  bibliography: [
111
111
  {
112
- name: 'RFC 8259 The JavaScript Object Notation (JSON) Data Interchange Format (IETF)',
112
+ name: 'RFC 8259 - The JavaScript Object Notation (JSON) Data Interchange Format (IETF)',
113
113
  url: 'https://datatracker.ietf.org/doc/html/rfc8259',
114
114
  },
115
115
  {
116
- name: 'ECMA-404 The JSON Data Interchange Syntax (Ecma International)',
116
+ name: 'ECMA-404 - The JSON Data Interchange Syntax (Ecma International)',
117
117
  url: 'https://www.ecma-international.org/publications-and-standards/standards/ecma-404/',
118
118
  },
119
119
  {
120
- name: 'JSON.org Introducing JSON',
120
+ name: 'JSON.org - Introducing JSON',
121
121
  url: 'https://www.json.org/json-en.html',
122
122
  },
123
123
  {
124
- name: 'MDN Web Docs JSON',
124
+ name: 'MDN Web Docs - JSON',
125
125
  url: 'https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/JSON',
126
126
  },
127
127
  ],
@@ -109,19 +109,19 @@ export const content: ToolLocaleContent<JsonFormatterUI> = {
109
109
  bibliographyTitle: 'Referensi dan Standar',
110
110
  bibliography: [
111
111
  {
112
- name: 'RFC 8259 The JavaScript Object Notation (JSON) Data Interchange Format (IETF)',
112
+ name: 'RFC 8259 - The JavaScript Object Notation (JSON) Data Interchange Format (IETF)',
113
113
  url: 'https://datatracker.ietf.org/doc/html/rfc8259',
114
114
  },
115
115
  {
116
- name: 'ECMA-404 The JSON Data Interchange Syntax (Ecma International)',
116
+ name: 'ECMA-404 - The JSON Data Interchange Syntax (Ecma International)',
117
117
  url: 'https://www.ecma-international.org/publications-and-standards/standards/ecma-404/',
118
118
  },
119
119
  {
120
- name: 'JSON.org Mengenal JSON',
120
+ name: 'JSON.org - Mengenal JSON',
121
121
  url: 'https://www.json.org/json-en.html',
122
122
  },
123
123
  {
124
- name: 'MDN Web Docs JSON',
124
+ name: 'MDN Web Docs - JSON',
125
125
  url: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON',
126
126
  },
127
127
  ],
@@ -109,19 +109,19 @@ export const content: ToolLocaleContent<JsonFormatterUI> = {
109
109
  bibliographyTitle: 'Riferimenti e Standard',
110
110
  bibliography: [
111
111
  {
112
- name: 'RFC 8259 The JavaScript Object Notation (JSON) Data Interchange Format (IETF)',
112
+ name: 'RFC 8259 - The JavaScript Object Notation (JSON) Data Interchange Format (IETF)',
113
113
  url: 'https://datatracker.ietf.org/doc/html/rfc8259',
114
114
  },
115
115
  {
116
- name: 'ECMA-404 The JSON Data Interchange Syntax (Ecma International)',
116
+ name: 'ECMA-404 - The JSON Data Interchange Syntax (Ecma International)',
117
117
  url: 'https://www.ecma-international.org/publications-and-standards/standards/ecma-404/',
118
118
  },
119
119
  {
120
- name: 'JSON.org Introduzione a JSON',
120
+ name: 'JSON.org - Introduzione a JSON',
121
121
  url: 'https://www.json.org/json-it.html',
122
122
  },
123
123
  {
124
- name: 'MDN Web Docs JSON',
124
+ name: 'MDN Web Docs - JSON',
125
125
  url: 'https://developer.mozilla.org/it/docs/Web/JavaScript/Reference/Global_Objects/JSON',
126
126
  },
127
127
  ],
@@ -109,19 +109,19 @@ export const content: ToolLocaleContent<JsonFormatterUI> = {
109
109
  bibliographyTitle: '参考文献と標準',
110
110
  bibliography: [
111
111
  {
112
- name: 'RFC 8259 The JavaScript Object Notation (JSON) Data Interchange Format (IETF)',
112
+ name: 'RFC 8259 - The JavaScript Object Notation (JSON) Data Interchange Format (IETF)',
113
113
  url: 'https://datatracker.ietf.org/doc/html/rfc8259',
114
114
  },
115
115
  {
116
- name: 'ECMA-404 The JSON Data Interchange Syntax (Ecma International)',
116
+ name: 'ECMA-404 - The JSON Data Interchange Syntax (Ecma International)',
117
117
  url: 'https://www.ecma-international.org/publications-and-standards/standards/ecma-404/',
118
118
  },
119
119
  {
120
- name: 'JSON.org JSONの導入',
120
+ name: 'JSON.org - JSONの導入',
121
121
  url: 'https://www.json.org/json-ja.html',
122
122
  },
123
123
  {
124
- name: 'MDN Web Docs JSON',
124
+ name: 'MDN Web Docs - JSON',
125
125
  url: 'https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/JSON',
126
126
  },
127
127
  ],
@@ -109,19 +109,19 @@ export const content: ToolLocaleContent<JsonFormatterUI> = {
109
109
  bibliographyTitle: '참고 자료 및 표준',
110
110
  bibliography: [
111
111
  {
112
- name: 'RFC 8259 The JavaScript Object Notation (JSON) Data Interchange Format (IETF)',
112
+ name: 'RFC 8259 - The JavaScript Object Notation (JSON) Data Interchange Format (IETF)',
113
113
  url: 'https://datatracker.ietf.org/doc/html/rfc8259',
114
114
  },
115
115
  {
116
- name: 'ECMA-404 The JSON Data Interchange Syntax (Ecma International)',
116
+ name: 'ECMA-404 - The JSON Data Interchange Syntax (Ecma International)',
117
117
  url: 'https://www.ecma-international.org/publications-and-standards/standards/ecma-404/',
118
118
  },
119
119
  {
120
- name: 'JSON.org JSON 소개',
120
+ name: 'JSON.org - JSON 소개',
121
121
  url: 'https://www.json.org/json-ko.html',
122
122
  },
123
123
  {
124
- name: 'MDN Web Docs JSON',
124
+ name: 'MDN Web Docs - JSON',
125
125
  url: 'https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/JSON',
126
126
  },
127
127
  ],
@@ -109,19 +109,19 @@ export const content: ToolLocaleContent<JsonFormatterUI> = {
109
109
  bibliographyTitle: 'Referenties en Standaarden',
110
110
  bibliography: [
111
111
  {
112
- name: 'RFC 8259 The JavaScript Object Notation (JSON) Data Interchange Format (IETF)',
112
+ name: 'RFC 8259 - The JavaScript Object Notation (JSON) Data Interchange Format (IETF)',
113
113
  url: 'https://datatracker.ietf.org/doc/html/rfc8259',
114
114
  },
115
115
  {
116
- name: 'ECMA-404 The JSON Data Interchange Syntax (Ecma International)',
116
+ name: 'ECMA-404 - The JSON Data Interchange Syntax (Ecma International)',
117
117
  url: 'https://www.ecma-international.org/publications-and-standards/standards/ecma-404/',
118
118
  },
119
119
  {
120
- name: 'JSON.org Introductie tot JSON',
120
+ name: 'JSON.org - Introductie tot JSON',
121
121
  url: 'https://www.json.org/json-en.html',
122
122
  },
123
123
  {
124
- name: 'MDN Web Docs JSON',
124
+ name: 'MDN Web Docs - JSON',
125
125
  url: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON',
126
126
  },
127
127
  ],
@@ -109,19 +109,19 @@ export const content: ToolLocaleContent<JsonFormatterUI> = {
109
109
  bibliographyTitle: 'Referencje i Standardy',
110
110
  bibliography: [
111
111
  {
112
- name: 'RFC 8259 The JavaScript Object Notation (JSON) Data Interchange Format (IETF)',
112
+ name: 'RFC 8259 - The JavaScript Object Notation (JSON) Data Interchange Format (IETF)',
113
113
  url: 'https://datatracker.ietf.org/doc/html/rfc8259',
114
114
  },
115
115
  {
116
- name: 'ECMA-404 The JSON Data Interchange Syntax (Ecma International)',
116
+ name: 'ECMA-404 - The JSON Data Interchange Syntax (Ecma International)',
117
117
  url: 'https://www.ecma-international.org/publications-and-standards/standards/ecma-404/',
118
118
  },
119
119
  {
120
- name: 'JSON.org Wprowadzenie do JSON',
120
+ name: 'JSON.org - Wprowadzenie do JSON',
121
121
  url: 'https://www.json.org/json-en.html',
122
122
  },
123
123
  {
124
- name: 'MDN Web Docs JSON',
124
+ name: 'MDN Web Docs - JSON',
125
125
  url: 'https://developer.mozilla.org/pl/docs/Web/JavaScript/Reference/Global_Objects/JSON',
126
126
  },
127
127
  ],
@@ -109,19 +109,19 @@ export const content: ToolLocaleContent<JsonFormatterUI> = {
109
109
  bibliographyTitle: 'Referências e Padrões',
110
110
  bibliography: [
111
111
  {
112
- name: 'RFC 8259 The JavaScript Object Notation (JSON) Data Interchange Format (IETF)',
112
+ name: 'RFC 8259 - The JavaScript Object Notation (JSON) Data Interchange Format (IETF)',
113
113
  url: 'https://datatracker.ietf.org/doc/html/rfc8259',
114
114
  },
115
115
  {
116
- name: 'ECMA-404 The JSON Data Interchange Syntax (Ecma International)',
116
+ name: 'ECMA-404 - The JSON Data Interchange Syntax (Ecma International)',
117
117
  url: 'https://www.ecma-international.org/publications-and-standards/standards/ecma-404/',
118
118
  },
119
119
  {
120
- name: 'JSON.org Introdução ao JSON',
120
+ name: 'JSON.org - Introdução ao JSON',
121
121
  url: 'https://www.json.org/json-en.html',
122
122
  },
123
123
  {
124
- name: 'MDN Web Docs JSON',
124
+ name: 'MDN Web Docs - JSON',
125
125
  url: 'https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/JSON',
126
126
  },
127
127
  ],
@@ -14,7 +14,7 @@ const faqData = [
14
14
  'Безусловно. Вся обработка происходит на 100% в вашем браузере (на стороне клиента). Ваши данные JSON никогда не отправляются на сервер, что обеспечивает полную конфиденциальность ваших структур данных.',
15
15
  },
16
16
  {
17
- question: 'Что вызывает ошибку «Invalid JSON»?',
17
+ question: 'Что вызывает ошибку "Invalid JSON"?',
18
18
  answer:
19
19
  'Обычно она вызвана лишними запятыми в конце объекта, отсутствием двойных кавычек вокруг ключей или невидимыми символами. Наш инструмент подсвечивает точную строку с ошибкой, чтобы вы могли ее исправить.',
20
20
  },
@@ -109,19 +109,19 @@ export const content: ToolLocaleContent<JsonFormatterUI> = {
109
109
  bibliographyTitle: 'Ссылки и стандарты',
110
110
  bibliography: [
111
111
  {
112
- name: 'RFC 8259 The JavaScript Object Notation (JSON) Data Interchange Format (IETF)',
112
+ name: 'RFC 8259 - The JavaScript Object Notation (JSON) Data Interchange Format (IETF)',
113
113
  url: 'https://datatracker.ietf.org/doc/html/rfc8259',
114
114
  },
115
115
  {
116
- name: 'ECMA-404 The JSON Data Interchange Syntax (Ecma International)',
116
+ name: 'ECMA-404 - The JSON Data Interchange Syntax (Ecma International)',
117
117
  url: 'https://www.ecma-international.org/publications-and-standards/standards/ecma-404/',
118
118
  },
119
119
  {
120
- name: 'JSON.org Введение в JSON',
120
+ name: 'JSON.org - Введение в JSON',
121
121
  url: 'https://www.json.org/json-en.html',
122
122
  },
123
123
  {
124
- name: 'MDN Web Docs JSON',
124
+ name: 'MDN Web Docs - JSON',
125
125
  url: 'https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/JSON',
126
126
  },
127
127
  ],
@@ -109,19 +109,19 @@ export const content: ToolLocaleContent<JsonFormatterUI> = {
109
109
  bibliographyTitle: 'Referenser och Standarder',
110
110
  bibliography: [
111
111
  {
112
- name: 'RFC 8259 The JavaScript Object Notation (JSON) Data Interchange Format (IETF)',
112
+ name: 'RFC 8259 - The JavaScript Object Notation (JSON) Data Interchange Format (IETF)',
113
113
  url: 'https://datatracker.ietf.org/doc/html/rfc8259',
114
114
  },
115
115
  {
116
- name: 'ECMA-404 The JSON Data Interchange Syntax (Ecma International)',
116
+ name: 'ECMA-404 - The JSON Data Interchange Syntax (Ecma International)',
117
117
  url: 'https://www.ecma-international.org/publications-and-standards/standards/ecma-404/',
118
118
  },
119
119
  {
120
- name: 'JSON.org Introduktion till JSON',
120
+ name: 'JSON.org - Introduktion till JSON',
121
121
  url: 'https://www.json.org/json-en.html',
122
122
  },
123
123
  {
124
- name: 'MDN Web Docs JSON',
124
+ name: 'MDN Web Docs - JSON',
125
125
  url: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON',
126
126
  },
127
127
  ],
@@ -109,19 +109,19 @@ export const content: ToolLocaleContent<JsonFormatterUI> = {
109
109
  bibliographyTitle: 'Referanslar ve Standartlar',
110
110
  bibliography: [
111
111
  {
112
- name: 'RFC 8259 The JavaScript Object Notation (JSON) Data Interchange Format (IETF)',
112
+ name: 'RFC 8259 - The JavaScript Object Notation (JSON) Data Interchange Format (IETF)',
113
113
  url: 'https://datatracker.ietf.org/doc/html/rfc8259',
114
114
  },
115
115
  {
116
- name: 'ECMA-404 The JSON Data Interchange Syntax (Ecma International)',
116
+ name: 'ECMA-404 - The JSON Data Interchange Syntax (Ecma International)',
117
117
  url: 'https://www.ecma-international.org/publications-and-standards/standards/ecma-404/',
118
118
  },
119
119
  {
120
- name: 'JSON.org JSON\'a Giriş',
120
+ name: 'JSON.org - JSON\'a Giriş',
121
121
  url: 'https://www.json.org/json-en.html',
122
122
  },
123
123
  {
124
- name: 'MDN Web Docs JSON',
124
+ name: 'MDN Web Docs - JSON',
125
125
  url: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON',
126
126
  },
127
127
  ],
@@ -14,7 +14,7 @@ const faqData = [
14
14
  '绝对安全。所有处理均 100% 在您的浏览器中完成(客户端处理)。您的 JSON 数据永远不会被发送到任何服务器,确保您的数据结构完全私密。',
15
15
  },
16
16
  {
17
- question: '导致“Invalid JSON”错误的原因是什么?',
17
+ question: '导致"Invalid JSON"错误的原因是什么?',
18
18
  answer:
19
19
  '通常是由于对象末尾多余的逗号、键(key)缺少双引号或存在不可见字符引起的。我们的工具会高亮显示错误的具体行号,方便您进行修复。',
20
20
  },
@@ -109,19 +109,19 @@ export const content: ToolLocaleContent<JsonFormatterUI> = {
109
109
  bibliographyTitle: '参考资料与标准',
110
110
  bibliography: [
111
111
  {
112
- name: 'RFC 8259 The JavaScript Object Notation (JSON) Data Interchange Format (IETF)',
112
+ name: 'RFC 8259 - The JavaScript Object Notation (JSON) Data Interchange Format (IETF)',
113
113
  url: 'https://datatracker.ietf.org/doc/html/rfc8259',
114
114
  },
115
115
  {
116
- name: 'ECMA-404 The JSON Data Interchange Syntax (Ecma International)',
116
+ name: 'ECMA-404 - The JSON Data Interchange Syntax (Ecma International)',
117
117
  url: 'https://www.ecma-international.org/publications-and-standards/standards/ecma-404/',
118
118
  },
119
119
  {
120
- name: 'JSON.org JSON 介绍',
120
+ name: 'JSON.org - JSON 介绍',
121
121
  url: 'https://www.json.org/json-en.html',
122
122
  },
123
123
  {
124
- name: 'MDN Web Docs JSON',
124
+ name: 'MDN Web Docs - JSON',
125
125
  url: 'https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/JSON',
126
126
  },
127
127
  ],
@@ -201,144 +201,144 @@
201
201
  z-index: 50;
202
202
  }
203
203
 
204
- :global(.theme-dark) .jf-toolbar {
204
+ .theme-dark .jf-toolbar {
205
205
  background: rgba(15, 23, 42, 0.5);
206
206
  border-color: rgba(255, 255, 255, 0.08);
207
207
  }
208
208
 
209
- :global(.theme-dark) .jf-status-pill {
209
+ .theme-dark .jf-status-pill {
210
210
  background: #1e293b;
211
211
  }
212
212
 
213
- :global(.theme-dark) .jf-btn-muted {
213
+ .theme-dark .jf-btn-muted {
214
214
  color: #cbd5e1;
215
215
  }
216
216
 
217
- :global(.theme-dark) .jf-btn-muted:hover {
217
+ .theme-dark .jf-btn-muted:hover {
218
218
  background: #1e293b;
219
219
  }
220
220
 
221
- :global(.theme-dark) .jf-btn-amber {
221
+ .theme-dark .jf-btn-amber {
222
222
  color: #fbbf24;
223
223
  }
224
224
 
225
- :global(.theme-dark) .jf-btn-amber:hover {
225
+ .theme-dark .jf-btn-amber:hover {
226
226
  background: rgba(251, 191, 36, 0.1);
227
227
  }
228
228
 
229
- :global(.theme-dark) .jf-divider {
229
+ .theme-dark .jf-divider {
230
230
  background: #334155;
231
231
  }
232
232
 
233
- :global(.theme-dark) .jf-panel {
233
+ .theme-dark .jf-panel {
234
234
  background: #0f172a;
235
235
  border-color: #1e293b;
236
236
  }
237
237
 
238
- :global(.theme-dark) .jf-panel-header {
238
+ .theme-dark .jf-panel-header {
239
239
  background: rgba(30, 41, 59, 0.5);
240
240
  border-color: #1e293b;
241
241
  }
242
242
 
243
- :global(.theme-dark) .jf-textarea {
243
+ .theme-dark .jf-textarea {
244
244
  color: #cbd5e1;
245
245
  }
246
246
 
247
- :global(.theme-dark) .jf-textarea::placeholder {
247
+ .theme-dark .jf-textarea::placeholder {
248
248
  color: #334155;
249
249
  }
250
250
 
251
- :global(.theme-dark) .jf-output {
251
+ .theme-dark .jf-output {
252
252
  background: #0d1117;
253
253
  color: #cbd5e1;
254
254
  }
255
255
 
256
- :global(.theme-dark) .jf-toast {
256
+ .theme-dark .jf-toast {
257
257
  background: #f8fafc;
258
258
  color: #0f172a;
259
259
  }
260
260
 
261
- :global(.jf-badge-empty) {
261
+ .jf-badge-empty {
262
262
  background: #94a3b8;
263
263
  }
264
264
 
265
- :global(.jf-badge-valid) {
265
+ .jf-badge-valid {
266
266
  background: #10b981;
267
267
  box-shadow: 0 0 8px rgba(16, 185, 129, 0.5);
268
268
  }
269
269
 
270
- :global(.jf-badge-invalid) {
270
+ .jf-badge-invalid {
271
271
  background: #ef4444;
272
272
  box-shadow: 0 0 8px rgba(239, 68, 68, 0.5);
273
273
  }
274
274
 
275
- :global(.jf-text-empty) {
275
+ .jf-text-empty {
276
276
  color: #64748b;
277
277
  }
278
278
 
279
- :global(.jf-text-valid) {
279
+ .jf-text-valid {
280
280
  color: #10b981;
281
281
  font-weight: 600;
282
282
  }
283
283
 
284
- :global(.theme-dark) :global(.jf-text-valid) {
284
+ .theme-dark .jf-text-valid {
285
285
  color: #34d399;
286
286
  }
287
287
 
288
- :global(.jf-text-invalid) {
288
+ .jf-text-invalid {
289
289
  color: #ef4444;
290
290
  font-weight: 600;
291
291
  }
292
292
 
293
- :global(.theme-dark) :global(.jf-text-invalid) {
293
+ .theme-dark .jf-text-invalid {
294
294
  color: #f87171;
295
295
  }
296
296
 
297
- :global(.jf-toast-visible) {
297
+ .jf-toast-visible {
298
298
  transform: translateY(0);
299
299
  opacity: 1;
300
300
  }
301
301
 
302
- :global(.jf-token-key) {
302
+ .jf-token-key {
303
303
  color: #7c3aed;
304
304
  }
305
305
 
306
- :global(.theme-dark) :global(.jf-token-key) {
306
+ .theme-dark .jf-token-key {
307
307
  color: #a78bfa;
308
308
  }
309
309
 
310
- :global(.jf-token-string) {
310
+ .jf-token-string {
311
311
  color: #16a34a;
312
312
  }
313
313
 
314
- :global(.theme-dark) :global(.jf-token-string) {
314
+ .theme-dark .jf-token-string {
315
315
  color: #4ade80;
316
316
  }
317
317
 
318
- :global(.jf-token-number) {
318
+ .jf-token-number {
319
319
  color: #c2410c;
320
320
  }
321
321
 
322
- :global(.theme-dark) :global(.jf-token-number) {
322
+ .theme-dark .jf-token-number {
323
323
  color: #fb923c;
324
324
  }
325
325
 
326
- :global(.jf-token-boolean) {
326
+ .jf-token-boolean {
327
327
  color: #1d4ed8;
328
328
  }
329
329
 
330
- :global(.theme-dark) :global(.jf-token-boolean) {
330
+ .theme-dark .jf-token-boolean {
331
331
  color: #60a5fa;
332
332
  }
333
333
 
334
- :global(.jf-token-null) {
334
+ .jf-token-null {
335
335
  color: #dc2626;
336
336
  }
337
337
 
338
- :global(.theme-dark) :global(.jf-token-null) {
338
+ .theme-dark .jf-token-null {
339
339
  color: #f87171;
340
340
  }
341
341
 
342
- :global(.jf-token-error) {
342
+ .jf-token-error {
343
343
  color: #ef4444;
344
344
  }
@@ -9,6 +9,7 @@ interface Props {
9
9
 
10
10
  const { locale = 'es' } = Astro.props;
11
11
  const content = await jsonFormatter.i18n[locale]?.();
12
+ if (!content) return null;
12
13
  ---
13
14
 
14
- {content && <SEORenderer content={{ locale, sections: content.seo }} />}
15
+ {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}