@jjlmoya/utils-developer 1.11.0 → 1.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/package.json +7 -4
  2. package/scripts/postinstall.mjs +27 -0
  3. package/src/entries.ts +74 -0
  4. package/src/tool/aspectRatio/aspect-ratio-calculator.css +276 -0
  5. package/src/tool/aspectRatio/component.astro +0 -278
  6. package/src/tool/aspectRatio/entry.ts +30 -0
  7. package/src/tool/aspectRatio/index.ts +2 -32
  8. package/src/tool/calculadoraTiempoDatos/component.astro +0 -524
  9. package/src/tool/calculadoraTiempoDatos/data-time-calculator-web-speed-impact.css +522 -0
  10. package/src/tool/calculadoraTiempoDatos/entry.ts +29 -0
  11. package/src/tool/calculadoraTiempoDatos/index.ts +2 -31
  12. package/src/tool/colorConverter/color-converter-rgb-hex-hsl.css +262 -0
  13. package/src/tool/colorConverter/component.astro +0 -264
  14. package/src/tool/colorConverter/entry.ts +29 -0
  15. package/src/tool/colorConverter/index.ts +2 -31
  16. package/src/tool/conversorExcelCsvHtml/component.astro +0 -360
  17. package/src/tool/conversorExcelCsvHtml/entry.ts +29 -0
  18. package/src/tool/conversorExcelCsvHtml/excel-csv-html-table-converter.css +358 -0
  19. package/src/tool/conversorExcelCsvHtml/index.ts +2 -31
  20. package/src/tool/cronGenerator/component.astro +0 -317
  21. package/src/tool/cronGenerator/cron.css +315 -0
  22. package/src/tool/cronGenerator/entry.ts +30 -0
  23. package/src/tool/cronGenerator/index.ts +2 -32
  24. package/src/tool/cssSpecificityCalculator/component.astro +0 -205
  25. package/src/tool/cssSpecificityCalculator/css-specificity-calculator.css +203 -0
  26. package/src/tool/cssSpecificityCalculator/entry.ts +30 -0
  27. package/src/tool/cssSpecificityCalculator/index.ts +2 -32
  28. package/src/tool/cssToInlineConverter/component.astro +0 -150
  29. package/src/tool/cssToInlineConverter/css-to-inline-converter.css +148 -0
  30. package/src/tool/cssToInlineConverter/entry.ts +30 -0
  31. package/src/tool/cssToInlineConverter/index.ts +2 -32
  32. package/src/tool/duplicateCssRemover/component.astro +0 -197
  33. package/src/tool/duplicateCssRemover/duplicate-css-remover.css +195 -0
  34. package/src/tool/duplicateCssRemover/entry.ts +30 -0
  35. package/src/tool/duplicateCssRemover/index.ts +2 -32
  36. package/src/tool/generadorSecurityTxt/component.astro +0 -231
  37. package/src/tool/generadorSecurityTxt/entry.ts +29 -0
  38. package/src/tool/generadorSecurityTxt/index.ts +2 -31
  39. package/src/tool/generadorSecurityTxt/security-txt-generator-rfc-9116.css +229 -0
  40. package/src/tool/hashGenerator/component.astro +0 -229
  41. package/src/tool/hashGenerator/entry.ts +29 -0
  42. package/src/tool/hashGenerator/hash-generator.css +227 -0
  43. package/src/tool/hashGenerator/index.ts +2 -31
  44. package/src/tool/inspectorCertificadosSsl/component.astro +0 -261
  45. package/src/tool/inspectorCertificadosSsl/entry.ts +45 -0
  46. package/src/tool/inspectorCertificadosSsl/index.ts +2 -47
  47. package/src/tool/inspectorCertificadosSsl/ssl-tls-certificate-inspector.css +259 -0
  48. package/src/tool/jsonFormatter/component.astro +0 -346
  49. package/src/tool/jsonFormatter/entry.ts +30 -0
  50. package/src/tool/jsonFormatter/index.ts +2 -32
  51. package/src/tool/jsonFormatter/json-formatter.css +344 -0
  52. package/src/tool/keycode/component.astro +0 -298
  53. package/src/tool/keycode/entry.ts +30 -0
  54. package/src/tool/keycode/index.ts +2 -32
  55. package/src/tool/keycode/keycode.css +296 -0
  56. package/src/tool/llmCostCalculator/component.astro +0 -253
  57. package/src/tool/llmCostCalculator/entry.ts +46 -0
  58. package/src/tool/llmCostCalculator/index.ts +2 -48
  59. package/src/tool/llmCostCalculator/llm-cost-calculator.css +251 -0
  60. package/src/tool/mobileMockupGenerator/component.astro +0 -906
  61. package/src/tool/mobileMockupGenerator/entry.ts +45 -0
  62. package/src/tool/mobileMockupGenerator/index.ts +2 -47
  63. package/src/tool/mobileMockupGenerator/mobile-mockup-generator.css +904 -0
  64. package/src/tool/musicalTypography/component.astro +0 -291
  65. package/src/tool/musicalTypography/entry.ts +29 -0
  66. package/src/tool/musicalTypography/index.ts +2 -31
  67. package/src/tool/musicalTypography/musical-typography.css +289 -0
  68. package/src/tool/placeholderGenerator/component.astro +0 -255
  69. package/src/tool/placeholderGenerator/entry.ts +46 -0
  70. package/src/tool/placeholderGenerator/index.ts +2 -48
  71. package/src/tool/placeholderGenerator/placeholder-image-generator.css +253 -0
  72. package/src/tool/promptLibrary/component.astro +0 -689
  73. package/src/tool/promptLibrary/entry.ts +45 -0
  74. package/src/tool/promptLibrary/index.ts +2 -47
  75. package/src/tool/promptLibrary/prompt-library.css +687 -0
  76. package/src/tool/readabilityCalculator/component.astro +0 -322
  77. package/src/tool/readabilityCalculator/entry.ts +45 -0
  78. package/src/tool/readabilityCalculator/index.ts +2 -47
  79. package/src/tool/readabilityCalculator/visual-readability-calculator-wcag-apca.css +320 -0
  80. package/src/tool/svgSanitizer/component.astro +0 -289
  81. package/src/tool/svgSanitizer/entry.ts +45 -0
  82. package/src/tool/svgSanitizer/index.ts +2 -47
  83. package/src/tool/svgSanitizer/svg-sanitizer.css +287 -0
  84. package/src/tool/svgToCss/component.astro +0 -196
  85. package/src/tool/svgToCss/entry.ts +30 -0
  86. package/src/tool/svgToCss/index.ts +2 -32
  87. package/src/tool/svgToCss/svg-to-css-converter.css +194 -0
  88. package/src/tool/urlCleaner/component.astro +0 -282
  89. package/src/tool/urlCleaner/entry.ts +45 -0
  90. package/src/tool/urlCleaner/index.ts +2 -47
  91. package/src/tool/urlCleaner/url-tracking-cleaner.css +280 -0
  92. package/src/tool/urlEncoderDecoder/component.astro +0 -168
  93. package/src/tool/urlEncoderDecoder/entry.ts +30 -0
  94. package/src/tool/urlEncoderDecoder/index.ts +2 -32
  95. package/src/tool/urlEncoderDecoder/url-encoder-decoder.css +166 -0
  96. package/src/tool/utmGenerator/component.astro +0 -156
  97. package/src/tool/utmGenerator/entry.ts +29 -0
  98. package/src/tool/utmGenerator/index.ts +2 -31
  99. package/src/tool/utmGenerator/utm-generator.css +154 -0
  100. package/src/tools.ts +1 -1
@@ -0,0 +1,259 @@
1
+ .ics-root {
2
+ width: 100%;
3
+ }
4
+
5
+ .ics-container {
6
+ display: flex;
7
+ flex-direction: column;
8
+ gap: 2rem;
9
+ width: 100%;
10
+ }
11
+
12
+ .ics-drop-zone {
13
+ border: 2px dashed rgba(16, 185, 129, 0.3);
14
+ border-radius: 1.5rem;
15
+ padding: 4rem 2rem;
16
+ text-align: center;
17
+ background: rgba(255, 255, 255, 0.05);
18
+ backdrop-filter: blur(10px);
19
+ transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
20
+ cursor: pointer;
21
+ position: relative;
22
+ overflow: hidden;
23
+ }
24
+
25
+ :global(.theme-dark) .ics-drop-zone {
26
+ background: rgba(255, 255, 255, 0.03);
27
+ }
28
+
29
+ .ics-drop-zone:hover,
30
+ .ics-drop-zone.ics-drag-active {
31
+ border-color: var(--ics-theme-color, #10b981);
32
+ background: rgba(16, 185, 129, 0.05);
33
+ transform: translateY(-4px);
34
+ box-shadow: 0 12px 40px rgba(0, 0, 0, 0.3);
35
+ }
36
+
37
+ .ics-drop-zone-content {
38
+ display: flex;
39
+ flex-direction: column;
40
+ align-items: center;
41
+ gap: 1rem;
42
+ pointer-events: none;
43
+ }
44
+
45
+ .ics-icon-wrapper {
46
+ width: 80px;
47
+ height: 80px;
48
+ background: linear-gradient(135deg, rgba(16, 185, 129, 0.2), rgba(16, 185, 129, 0.05));
49
+ border-radius: 50%;
50
+ display: flex;
51
+ align-items: center;
52
+ justify-content: center;
53
+ font-size: 2.5rem;
54
+ color: var(--ics-theme-color, #10b981);
55
+ margin-bottom: 1rem;
56
+ box-shadow: 0 0 20px rgba(16, 185, 129, 0.2);
57
+ }
58
+
59
+ .ics-certificate-icon {
60
+ width: 2.5rem;
61
+ height: 2.5rem;
62
+ }
63
+
64
+ .ics-drop-zone-title {
65
+ font-size: 1.5rem;
66
+ font-weight: 700;
67
+ color: rgb(30, 41, 59);
68
+ margin: 0;
69
+ }
70
+
71
+ :global(.theme-dark) .ics-drop-zone-title {
72
+ color: rgb(226, 232, 240);
73
+ }
74
+
75
+ .ics-drop-zone-text {
76
+ color: rgb(100, 116, 139);
77
+ margin: 0;
78
+ }
79
+
80
+ :global(.theme-dark) .ics-drop-zone-text {
81
+ color: rgb(148, 163, 184);
82
+ }
83
+
84
+ .ics-drop-zone-subtext {
85
+ color: rgb(148, 163, 184);
86
+ margin: 0;
87
+ }
88
+
89
+ :global(.theme-dark) .ics-drop-zone-subtext {
90
+ color: rgb(100, 116, 139);
91
+ }
92
+
93
+ .ics-file-input {
94
+ position: absolute;
95
+ inset: 0;
96
+ opacity: 0;
97
+ cursor: pointer;
98
+ }
99
+
100
+ .ics-results-grid {
101
+ display: none;
102
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
103
+ gap: 1.5rem;
104
+ opacity: 0;
105
+ transform: translateY(20px);
106
+ transition: all 0.5s ease;
107
+ }
108
+
109
+ .ics-results-grid.ics-visible {
110
+ display: grid;
111
+ opacity: 1;
112
+ transform: translateY(0);
113
+ }
114
+
115
+ .ics-card {
116
+ background: rgba(255, 255, 255, 0.5);
117
+ border: 1px solid rgba(0, 0, 0, 0.05);
118
+ border-radius: 1.25rem;
119
+ padding: 1.5rem;
120
+ backdrop-filter: blur(10px);
121
+ display: flex;
122
+ flex-direction: column;
123
+ gap: 1rem;
124
+ transition: transform 0.3s ease, background 0.3s ease;
125
+ }
126
+
127
+ :global(.theme-dark) .ics-card {
128
+ background: rgba(255, 255, 255, 0.03);
129
+ border: 1px solid rgba(255, 255, 255, 0.08);
130
+ }
131
+
132
+ .ics-card:hover {
133
+ transform: translateY(-2px);
134
+ border-color: rgba(255, 255, 255, 0.15);
135
+ }
136
+
137
+ .ics-card-header {
138
+ display: flex;
139
+ align-items: center;
140
+ gap: 0.75rem;
141
+ padding-bottom: 0.75rem;
142
+ border-bottom: 1px solid rgba(255, 255, 255, 0.05);
143
+ }
144
+
145
+ .ics-card-icon {
146
+ font-size: 1.25rem;
147
+ color: var(--ics-theme-color, #10b981);
148
+ width: 1.25rem;
149
+ height: 1.25rem;
150
+ }
151
+
152
+ .ics-card-header h4 {
153
+ margin: 0;
154
+ font-size: 0.9rem;
155
+ font-weight: 700;
156
+ text-transform: uppercase;
157
+ letter-spacing: 0.05em;
158
+ color: rgb(30, 41, 59);
159
+ opacity: 0.8;
160
+ }
161
+
162
+ :global(.theme-dark) .ics-card-header h4 {
163
+ color: rgb(226, 232, 240);
164
+ }
165
+
166
+ .ics-card-content {
167
+ overflow-wrap: break-word;
168
+ }
169
+
170
+ .ics-data-item {
171
+ display: flex;
172
+ flex-direction: column;
173
+ gap: 0.25rem;
174
+ margin-bottom: 1rem;
175
+ }
176
+
177
+ .ics-data-label {
178
+ font-size: 0.75rem;
179
+ color: rgb(71, 85, 105);
180
+ font-weight: 600;
181
+ text-transform: uppercase;
182
+ letter-spacing: 0.025em;
183
+ }
184
+
185
+ :global(.theme-dark) .ics-data-label {
186
+ color: rgb(148, 163, 184);
187
+ }
188
+
189
+ .ics-data-value {
190
+ font-size: 1rem;
191
+ color: rgb(15, 23, 42);
192
+ line-height: 1.5;
193
+ word-break: break-all;
194
+ }
195
+
196
+ :global(.theme-dark) .ics-data-value {
197
+ color: rgb(226, 232, 240);
198
+ }
199
+
200
+ .ics-status-badge {
201
+ display: inline-flex;
202
+ align-items: center;
203
+ padding: 0.25rem 0.75rem;
204
+ border-radius: 2rem;
205
+ font-size: 0.75rem;
206
+ font-weight: 600;
207
+ }
208
+
209
+ .ics-status-symbol {
210
+ font-weight: bold;
211
+ }
212
+
213
+ .ics-status-valid {
214
+ background: rgba(34, 197, 94, 0.1);
215
+ color: #22c55e;
216
+ border: 1px solid rgba(34, 197, 94, 0.2);
217
+ }
218
+
219
+ .ics-status-expired {
220
+ background: rgba(239, 68, 68, 0.1);
221
+ color: #ef4444;
222
+ border: 1px solid rgba(239, 68, 68, 0.2);
223
+ }
224
+
225
+ .ics-fingerprint {
226
+ background: rgba(0, 0, 0, 0.05);
227
+ padding: 0.75rem;
228
+ border-radius: 0.75rem;
229
+ font-size: 0.85rem;
230
+ color: rgb(30, 41, 59);
231
+ word-break: break-all;
232
+ border: 1px solid rgba(0, 0, 0, 0.05);
233
+ }
234
+
235
+ :global(.theme-dark) .ics-fingerprint {
236
+ background: rgba(0, 0, 0, 0.2);
237
+ color: rgb(212, 212, 212);
238
+ border: 1px solid rgba(255, 255, 255, 0.03);
239
+ }
240
+
241
+ .ics-error-message {
242
+ background: rgba(239, 68, 68, 0.1);
243
+ border: 1px solid rgba(239, 68, 68, 0.2);
244
+ color: #ef4444;
245
+ padding: 1rem;
246
+ border-radius: 1rem;
247
+ text-align: center;
248
+ display: none;
249
+ }
250
+
251
+ @media (max-width: 768px) {
252
+ .ics-drop-zone {
253
+ padding: 3rem 1.5rem;
254
+ }
255
+
256
+ .ics-results-grid {
257
+ grid-template-columns: 1fr;
258
+ }
259
+ }
@@ -76,352 +76,6 @@ const t = (ui ?? {}) as JsonFormatterUI;
76
76
  <div id="jf-toast" class="jf-toast"></div>
77
77
  </div>
78
78
 
79
- <style>
80
- .jf-root {
81
- width: 100%;
82
- max-width: 72rem;
83
- margin: 0 auto;
84
- display: flex;
85
- flex-direction: column;
86
- gap: 1.5rem;
87
- }
88
-
89
- .jf-toolbar {
90
- display: flex;
91
- flex-wrap: wrap;
92
- align-items: center;
93
- justify-content: space-between;
94
- gap: 1rem;
95
- background: rgba(255, 255, 255, 0.5);
96
- backdrop-filter: blur(8px);
97
- padding: 1rem;
98
- border-radius: 1rem;
99
- border: 1px solid rgba(0, 0, 0, 0.08);
100
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
101
- }
102
-
103
- .jf-status-pill {
104
- display: flex;
105
- align-items: center;
106
- gap: 0.5rem;
107
- padding: 0.375rem 0.75rem;
108
- background: #f1f5f9;
109
- border-radius: 0.5rem;
110
- font-size: 0.75rem;
111
- text-transform: uppercase;
112
- letter-spacing: 0.05em;
113
- }
114
-
115
- .jf-badge {
116
- width: 0.5rem;
117
- height: 0.5rem;
118
- border-radius: 50%;
119
- flex-shrink: 0;
120
- transition: background 0.2s, box-shadow 0.2s;
121
- }
122
-
123
- .jf-status-text {
124
- transition: color 0.2s;
125
- }
126
-
127
- .jf-actions {
128
- display: flex;
129
- flex-wrap: wrap;
130
- align-items: center;
131
- gap: 0.5rem;
132
- }
133
-
134
- .jf-btn {
135
- display: inline-flex;
136
- align-items: center;
137
- gap: 0.5rem;
138
- padding: 0.5rem 1rem;
139
- font-size: 0.875rem;
140
- font-weight: 500;
141
- border: none;
142
- border-radius: 0.5rem;
143
- cursor: pointer;
144
- transition: background 0.15s, transform 0.1s;
145
- line-height: 1;
146
- }
147
-
148
- .jf-btn-muted {
149
- color: #475569;
150
- background: transparent;
151
- }
152
-
153
- .jf-btn-muted:hover {
154
- background: #f1f5f9;
155
- }
156
-
157
- .jf-btn-amber {
158
- color: #d97706;
159
- background: transparent;
160
- }
161
-
162
- .jf-btn-amber:hover {
163
- background: #fef3c7;
164
- }
165
-
166
- .jf-btn-emerald {
167
- color: #fff;
168
- background: #10b981;
169
- box-shadow: 0 4px 14px rgba(16, 185, 129, 0.25);
170
- font-weight: 700;
171
- padding-inline: 1.5rem;
172
- }
173
-
174
- .jf-btn-emerald:hover {
175
- background: #059669;
176
- }
177
-
178
- .jf-btn-emerald:active {
179
- transform: scale(0.96);
180
- }
181
-
182
- .jf-divider {
183
- width: 1px;
184
- height: 2rem;
185
- background: #e2e8f0;
186
- margin-inline: 0.5rem;
187
- }
188
-
189
- .jf-grid {
190
- display: grid;
191
- gap: 1.5rem;
192
- }
193
-
194
- @media (min-width: 1024px) {
195
- .jf-grid {
196
- grid-template-columns: 1fr 1fr;
197
- }
198
- }
199
-
200
- .jf-panel {
201
- position: relative;
202
- height: 600px;
203
- display: flex;
204
- flex-direction: column;
205
- border-radius: 1rem;
206
- border: 1px solid #e2e8f0;
207
- overflow: hidden;
208
- background: #fff;
209
- }
210
-
211
- .jf-panel-header {
212
- display: flex;
213
- justify-content: space-between;
214
- align-items: center;
215
- padding: 0.5rem 1rem;
216
- background: #f8fafc;
217
- border-bottom: 1px solid #e2e8f0;
218
- font-size: 0.75rem;
219
- text-transform: uppercase;
220
- letter-spacing: 0.05em;
221
- color: #64748b;
222
- flex-shrink: 0;
223
- }
224
-
225
- .jf-size-info {
226
- color: #94a3b8;
227
- }
228
-
229
- .jf-textarea {
230
- flex: 1;
231
- width: 100%;
232
- padding: 1rem;
233
- background: transparent;
234
- font-size: 0.875rem;
235
- line-height: 1.6;
236
- color: #334155;
237
- resize: none;
238
- border: none;
239
- outline: none;
240
- }
241
-
242
- .jf-textarea::placeholder {
243
- color: #cbd5e1;
244
- }
245
-
246
- .jf-output {
247
- flex: 1;
248
- min-height: 0;
249
- padding: 1rem;
250
- overflow: auto;
251
- font-size: 0.875rem;
252
- line-height: 1.6;
253
- color: #334155;
254
- background: #f8fafc;
255
- margin: 0;
256
- white-space: pre-wrap;
257
- overflow-wrap: break-word;
258
- outline: none;
259
- }
260
-
261
- .jf-output:focus {
262
- box-shadow: inset 0 0 0 2px rgba(168, 85, 247, 0.3);
263
- }
264
-
265
- .jf-toast {
266
- position: fixed;
267
- bottom: 2rem;
268
- right: 2rem;
269
- padding: 0.5rem 1rem;
270
- background: #0f172a;
271
- color: #fff;
272
- border-radius: 0.5rem;
273
- box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);
274
- font-size: 0.875rem;
275
- font-weight: 500;
276
- transform: translateY(5rem);
277
- opacity: 0;
278
- transition: transform 0.3s, opacity 0.3s;
279
- pointer-events: none;
280
- z-index: 50;
281
- }
282
-
283
- :global(.theme-dark) .jf-toolbar {
284
- background: rgba(15, 23, 42, 0.5);
285
- border-color: rgba(255, 255, 255, 0.08);
286
- }
287
-
288
- :global(.theme-dark) .jf-status-pill {
289
- background: #1e293b;
290
- }
291
-
292
- :global(.theme-dark) .jf-btn-muted {
293
- color: #cbd5e1;
294
- }
295
-
296
- :global(.theme-dark) .jf-btn-muted:hover {
297
- background: #1e293b;
298
- }
299
-
300
- :global(.theme-dark) .jf-btn-amber {
301
- color: #fbbf24;
302
- }
303
-
304
- :global(.theme-dark) .jf-btn-amber:hover {
305
- background: rgba(251, 191, 36, 0.1);
306
- }
307
-
308
- :global(.theme-dark) .jf-divider {
309
- background: #334155;
310
- }
311
-
312
- :global(.theme-dark) .jf-panel {
313
- background: #0f172a;
314
- border-color: #1e293b;
315
- }
316
-
317
- :global(.theme-dark) .jf-panel-header {
318
- background: rgba(30, 41, 59, 0.5);
319
- border-color: #1e293b;
320
- }
321
-
322
- :global(.theme-dark) .jf-textarea {
323
- color: #cbd5e1;
324
- }
325
-
326
- :global(.theme-dark) .jf-textarea::placeholder {
327
- color: #334155;
328
- }
329
-
330
- :global(.theme-dark) .jf-output {
331
- background: #0d1117;
332
- color: #cbd5e1;
333
- }
334
-
335
- :global(.theme-dark) .jf-toast {
336
- background: #f8fafc;
337
- color: #0f172a;
338
- }
339
-
340
- :global(.jf-badge-empty) {
341
- background: #94a3b8;
342
- }
343
-
344
- :global(.jf-badge-valid) {
345
- background: #10b981;
346
- box-shadow: 0 0 8px rgba(16, 185, 129, 0.5);
347
- }
348
-
349
- :global(.jf-badge-invalid) {
350
- background: #ef4444;
351
- box-shadow: 0 0 8px rgba(239, 68, 68, 0.5);
352
- }
353
-
354
- :global(.jf-text-empty) {
355
- color: #64748b;
356
- }
357
-
358
- :global(.jf-text-valid) {
359
- color: #10b981;
360
- font-weight: 600;
361
- }
362
-
363
- :global(.theme-dark) :global(.jf-text-valid) {
364
- color: #34d399;
365
- }
366
-
367
- :global(.jf-text-invalid) {
368
- color: #ef4444;
369
- font-weight: 600;
370
- }
371
-
372
- :global(.theme-dark) :global(.jf-text-invalid) {
373
- color: #f87171;
374
- }
375
-
376
- :global(.jf-toast-visible) {
377
- transform: translateY(0);
378
- opacity: 1;
379
- }
380
-
381
- :global(.jf-token-key) {
382
- color: #7c3aed;
383
- }
384
-
385
- :global(.theme-dark) :global(.jf-token-key) {
386
- color: #a78bfa;
387
- }
388
-
389
- :global(.jf-token-string) {
390
- color: #16a34a;
391
- }
392
-
393
- :global(.theme-dark) :global(.jf-token-string) {
394
- color: #4ade80;
395
- }
396
-
397
- :global(.jf-token-number) {
398
- color: #c2410c;
399
- }
400
-
401
- :global(.theme-dark) :global(.jf-token-number) {
402
- color: #fb923c;
403
- }
404
-
405
- :global(.jf-token-boolean) {
406
- color: #1d4ed8;
407
- }
408
-
409
- :global(.theme-dark) :global(.jf-token-boolean) {
410
- color: #60a5fa;
411
- }
412
-
413
- :global(.jf-token-null) {
414
- color: #dc2626;
415
- }
416
-
417
- :global(.theme-dark) :global(.jf-token-null) {
418
- color: #f87171;
419
- }
420
-
421
- :global(.jf-token-error) {
422
- color: #ef4444;
423
- }
424
- </style>
425
79
 
426
80
  <script>
427
81
  const root = document.querySelector('.jf-root') as HTMLElement | null;
@@ -0,0 +1,30 @@
1
+ import type { DeveloperToolEntry, ToolLocaleContent } from '../../types';
2
+
3
+ import type { JsonFormatterUI } from './ui';
4
+
5
+ export type JsonFormatterLocaleContent = ToolLocaleContent<JsonFormatterUI>;
6
+
7
+ export const jsonFormatter: DeveloperToolEntry<JsonFormatterUI> = {
8
+ id: 'json-formatter',
9
+ icons: {
10
+ bg: 'mdi:code-json',
11
+ fg: 'mdi:code-braces',
12
+ },
13
+ i18n: {
14
+ de: async () => (await import('./i18n/de')).content,
15
+ en: async () => (await import('./i18n/en')).content,
16
+ es: async () => (await import('./i18n/es')).content,
17
+ fr: async () => (await import('./i18n/fr')).content,
18
+ id: async () => (await import('./i18n/id')).content,
19
+ it: async () => (await import('./i18n/it')).content,
20
+ ja: async () => (await import('./i18n/ja')).content,
21
+ ko: async () => (await import('./i18n/ko')).content,
22
+ nl: async () => (await import('./i18n/nl')).content,
23
+ pl: async () => (await import('./i18n/pl')).content,
24
+ pt: async () => (await import('./i18n/pt')).content,
25
+ ru: async () => (await import('./i18n/ru')).content,
26
+ sv: async () => (await import('./i18n/sv')).content,
27
+ tr: async () => (await import('./i18n/tr')).content,
28
+ zh: async () => (await import('./i18n/zh')).content,
29
+ },
30
+ };
@@ -1,35 +1,5 @@
1
- import type { DeveloperToolEntry, ToolLocaleContent, ToolDefinition } from '../../types';
2
-
3
- import type { JsonFormatterUI } from './ui';
4
-
5
- export type JsonFormatterLocaleContent = ToolLocaleContent<JsonFormatterUI>;
6
-
7
- export const jsonFormatter: DeveloperToolEntry<JsonFormatterUI> = {
8
- id: 'json-formatter',
9
- icons: {
10
- bg: 'mdi:code-json',
11
- fg: 'mdi:code-braces',
12
- },
13
- i18n: {
14
- de: async () => (await import('./i18n/de')).content,
15
- en: async () => (await import('./i18n/en')).content,
16
- es: async () => (await import('./i18n/es')).content,
17
- fr: async () => (await import('./i18n/fr')).content,
18
- id: async () => (await import('./i18n/id')).content,
19
- it: async () => (await import('./i18n/it')).content,
20
- ja: async () => (await import('./i18n/ja')).content,
21
- ko: async () => (await import('./i18n/ko')).content,
22
- nl: async () => (await import('./i18n/nl')).content,
23
- pl: async () => (await import('./i18n/pl')).content,
24
- pt: async () => (await import('./i18n/pt')).content,
25
- ru: async () => (await import('./i18n/ru')).content,
26
- sv: async () => (await import('./i18n/sv')).content,
27
- tr: async () => (await import('./i18n/tr')).content,
28
- zh: async () => (await import('./i18n/zh')).content,
29
- },
30
- };
31
-
32
-
1
+ import { jsonFormatter } from './entry';
2
+ export * from './entry';
33
3
  export const JSON_FORMATTER_TOOL: ToolDefinition = {
34
4
  entry: jsonFormatter,
35
5
  Component: () => import('./component.astro'),