@jjlmoya/utils-developer 1.12.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 (50) hide show
  1. package/package.json +5 -3
  2. package/scripts/postinstall.mjs +27 -0
  3. package/src/tool/aspectRatio/aspect-ratio-calculator.css +276 -0
  4. package/src/tool/aspectRatio/component.astro +0 -278
  5. package/src/tool/calculadoraTiempoDatos/component.astro +0 -524
  6. package/src/tool/calculadoraTiempoDatos/data-time-calculator-web-speed-impact.css +522 -0
  7. package/src/tool/colorConverter/color-converter-rgb-hex-hsl.css +262 -0
  8. package/src/tool/colorConverter/component.astro +0 -264
  9. package/src/tool/conversorExcelCsvHtml/component.astro +0 -360
  10. package/src/tool/conversorExcelCsvHtml/excel-csv-html-table-converter.css +358 -0
  11. package/src/tool/cronGenerator/component.astro +0 -317
  12. package/src/tool/cronGenerator/cron.css +315 -0
  13. package/src/tool/cssSpecificityCalculator/component.astro +0 -205
  14. package/src/tool/cssSpecificityCalculator/css-specificity-calculator.css +203 -0
  15. package/src/tool/cssToInlineConverter/component.astro +0 -150
  16. package/src/tool/cssToInlineConverter/css-to-inline-converter.css +148 -0
  17. package/src/tool/duplicateCssRemover/component.astro +0 -197
  18. package/src/tool/duplicateCssRemover/duplicate-css-remover.css +195 -0
  19. package/src/tool/generadorSecurityTxt/component.astro +0 -231
  20. package/src/tool/generadorSecurityTxt/security-txt-generator-rfc-9116.css +229 -0
  21. package/src/tool/hashGenerator/component.astro +0 -229
  22. package/src/tool/hashGenerator/hash-generator.css +227 -0
  23. package/src/tool/inspectorCertificadosSsl/component.astro +0 -261
  24. package/src/tool/inspectorCertificadosSsl/ssl-tls-certificate-inspector.css +259 -0
  25. package/src/tool/jsonFormatter/component.astro +0 -346
  26. package/src/tool/jsonFormatter/json-formatter.css +344 -0
  27. package/src/tool/keycode/component.astro +0 -298
  28. package/src/tool/keycode/keycode.css +296 -0
  29. package/src/tool/llmCostCalculator/component.astro +0 -253
  30. package/src/tool/llmCostCalculator/llm-cost-calculator.css +251 -0
  31. package/src/tool/mobileMockupGenerator/component.astro +0 -906
  32. package/src/tool/mobileMockupGenerator/mobile-mockup-generator.css +904 -0
  33. package/src/tool/musicalTypography/component.astro +0 -291
  34. package/src/tool/musicalTypography/musical-typography.css +289 -0
  35. package/src/tool/placeholderGenerator/component.astro +0 -255
  36. package/src/tool/placeholderGenerator/placeholder-image-generator.css +253 -0
  37. package/src/tool/promptLibrary/component.astro +0 -689
  38. package/src/tool/promptLibrary/prompt-library.css +687 -0
  39. package/src/tool/readabilityCalculator/component.astro +0 -322
  40. package/src/tool/readabilityCalculator/visual-readability-calculator-wcag-apca.css +320 -0
  41. package/src/tool/svgSanitizer/component.astro +0 -289
  42. package/src/tool/svgSanitizer/svg-sanitizer.css +287 -0
  43. package/src/tool/svgToCss/component.astro +0 -196
  44. package/src/tool/svgToCss/svg-to-css-converter.css +194 -0
  45. package/src/tool/urlCleaner/component.astro +0 -282
  46. package/src/tool/urlCleaner/url-tracking-cleaner.css +280 -0
  47. package/src/tool/urlEncoderDecoder/component.astro +0 -168
  48. package/src/tool/urlEncoderDecoder/url-encoder-decoder.css +166 -0
  49. package/src/tool/utmGenerator/component.astro +0 -156
  50. package/src/tool/utmGenerator/utm-generator.css +154 -0
@@ -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,344 @@
1
+ .jf-root {
2
+ width: 100%;
3
+ max-width: 72rem;
4
+ margin: 0 auto;
5
+ display: flex;
6
+ flex-direction: column;
7
+ gap: 1.5rem;
8
+ }
9
+
10
+ .jf-toolbar {
11
+ display: flex;
12
+ flex-wrap: wrap;
13
+ align-items: center;
14
+ justify-content: space-between;
15
+ gap: 1rem;
16
+ background: rgba(255, 255, 255, 0.5);
17
+ backdrop-filter: blur(8px);
18
+ padding: 1rem;
19
+ border-radius: 1rem;
20
+ border: 1px solid rgba(0, 0, 0, 0.08);
21
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
22
+ }
23
+
24
+ .jf-status-pill {
25
+ display: flex;
26
+ align-items: center;
27
+ gap: 0.5rem;
28
+ padding: 0.375rem 0.75rem;
29
+ background: #f1f5f9;
30
+ border-radius: 0.5rem;
31
+ font-size: 0.75rem;
32
+ text-transform: uppercase;
33
+ letter-spacing: 0.05em;
34
+ }
35
+
36
+ .jf-badge {
37
+ width: 0.5rem;
38
+ height: 0.5rem;
39
+ border-radius: 50%;
40
+ flex-shrink: 0;
41
+ transition: background 0.2s, box-shadow 0.2s;
42
+ }
43
+
44
+ .jf-status-text {
45
+ transition: color 0.2s;
46
+ }
47
+
48
+ .jf-actions {
49
+ display: flex;
50
+ flex-wrap: wrap;
51
+ align-items: center;
52
+ gap: 0.5rem;
53
+ }
54
+
55
+ .jf-btn {
56
+ display: inline-flex;
57
+ align-items: center;
58
+ gap: 0.5rem;
59
+ padding: 0.5rem 1rem;
60
+ font-size: 0.875rem;
61
+ font-weight: 500;
62
+ border: none;
63
+ border-radius: 0.5rem;
64
+ cursor: pointer;
65
+ transition: background 0.15s, transform 0.1s;
66
+ line-height: 1;
67
+ }
68
+
69
+ .jf-btn-muted {
70
+ color: #475569;
71
+ background: transparent;
72
+ }
73
+
74
+ .jf-btn-muted:hover {
75
+ background: #f1f5f9;
76
+ }
77
+
78
+ .jf-btn-amber {
79
+ color: #d97706;
80
+ background: transparent;
81
+ }
82
+
83
+ .jf-btn-amber:hover {
84
+ background: #fef3c7;
85
+ }
86
+
87
+ .jf-btn-emerald {
88
+ color: #fff;
89
+ background: #10b981;
90
+ box-shadow: 0 4px 14px rgba(16, 185, 129, 0.25);
91
+ font-weight: 700;
92
+ padding-inline: 1.5rem;
93
+ }
94
+
95
+ .jf-btn-emerald:hover {
96
+ background: #059669;
97
+ }
98
+
99
+ .jf-btn-emerald:active {
100
+ transform: scale(0.96);
101
+ }
102
+
103
+ .jf-divider {
104
+ width: 1px;
105
+ height: 2rem;
106
+ background: #e2e8f0;
107
+ margin-inline: 0.5rem;
108
+ }
109
+
110
+ .jf-grid {
111
+ display: grid;
112
+ gap: 1.5rem;
113
+ }
114
+
115
+ @media (min-width: 1024px) {
116
+ .jf-grid {
117
+ grid-template-columns: 1fr 1fr;
118
+ }
119
+ }
120
+
121
+ .jf-panel {
122
+ position: relative;
123
+ height: 600px;
124
+ display: flex;
125
+ flex-direction: column;
126
+ border-radius: 1rem;
127
+ border: 1px solid #e2e8f0;
128
+ overflow: hidden;
129
+ background: #fff;
130
+ }
131
+
132
+ .jf-panel-header {
133
+ display: flex;
134
+ justify-content: space-between;
135
+ align-items: center;
136
+ padding: 0.5rem 1rem;
137
+ background: #f8fafc;
138
+ border-bottom: 1px solid #e2e8f0;
139
+ font-size: 0.75rem;
140
+ text-transform: uppercase;
141
+ letter-spacing: 0.05em;
142
+ color: #64748b;
143
+ flex-shrink: 0;
144
+ }
145
+
146
+ .jf-size-info {
147
+ color: #94a3b8;
148
+ }
149
+
150
+ .jf-textarea {
151
+ flex: 1;
152
+ width: 100%;
153
+ padding: 1rem;
154
+ background: transparent;
155
+ font-size: 0.875rem;
156
+ line-height: 1.6;
157
+ color: #334155;
158
+ resize: none;
159
+ border: none;
160
+ outline: none;
161
+ }
162
+
163
+ .jf-textarea::placeholder {
164
+ color: #cbd5e1;
165
+ }
166
+
167
+ .jf-output {
168
+ flex: 1;
169
+ min-height: 0;
170
+ padding: 1rem;
171
+ overflow: auto;
172
+ font-size: 0.875rem;
173
+ line-height: 1.6;
174
+ color: #334155;
175
+ background: #f8fafc;
176
+ margin: 0;
177
+ white-space: pre-wrap;
178
+ overflow-wrap: break-word;
179
+ outline: none;
180
+ }
181
+
182
+ .jf-output:focus {
183
+ box-shadow: inset 0 0 0 2px rgba(168, 85, 247, 0.3);
184
+ }
185
+
186
+ .jf-toast {
187
+ position: fixed;
188
+ bottom: 2rem;
189
+ right: 2rem;
190
+ padding: 0.5rem 1rem;
191
+ background: #0f172a;
192
+ color: #fff;
193
+ border-radius: 0.5rem;
194
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);
195
+ font-size: 0.875rem;
196
+ font-weight: 500;
197
+ transform: translateY(5rem);
198
+ opacity: 0;
199
+ transition: transform 0.3s, opacity 0.3s;
200
+ pointer-events: none;
201
+ z-index: 50;
202
+ }
203
+
204
+ :global(.theme-dark) .jf-toolbar {
205
+ background: rgba(15, 23, 42, 0.5);
206
+ border-color: rgba(255, 255, 255, 0.08);
207
+ }
208
+
209
+ :global(.theme-dark) .jf-status-pill {
210
+ background: #1e293b;
211
+ }
212
+
213
+ :global(.theme-dark) .jf-btn-muted {
214
+ color: #cbd5e1;
215
+ }
216
+
217
+ :global(.theme-dark) .jf-btn-muted:hover {
218
+ background: #1e293b;
219
+ }
220
+
221
+ :global(.theme-dark) .jf-btn-amber {
222
+ color: #fbbf24;
223
+ }
224
+
225
+ :global(.theme-dark) .jf-btn-amber:hover {
226
+ background: rgba(251, 191, 36, 0.1);
227
+ }
228
+
229
+ :global(.theme-dark) .jf-divider {
230
+ background: #334155;
231
+ }
232
+
233
+ :global(.theme-dark) .jf-panel {
234
+ background: #0f172a;
235
+ border-color: #1e293b;
236
+ }
237
+
238
+ :global(.theme-dark) .jf-panel-header {
239
+ background: rgba(30, 41, 59, 0.5);
240
+ border-color: #1e293b;
241
+ }
242
+
243
+ :global(.theme-dark) .jf-textarea {
244
+ color: #cbd5e1;
245
+ }
246
+
247
+ :global(.theme-dark) .jf-textarea::placeholder {
248
+ color: #334155;
249
+ }
250
+
251
+ :global(.theme-dark) .jf-output {
252
+ background: #0d1117;
253
+ color: #cbd5e1;
254
+ }
255
+
256
+ :global(.theme-dark) .jf-toast {
257
+ background: #f8fafc;
258
+ color: #0f172a;
259
+ }
260
+
261
+ :global(.jf-badge-empty) {
262
+ background: #94a3b8;
263
+ }
264
+
265
+ :global(.jf-badge-valid) {
266
+ background: #10b981;
267
+ box-shadow: 0 0 8px rgba(16, 185, 129, 0.5);
268
+ }
269
+
270
+ :global(.jf-badge-invalid) {
271
+ background: #ef4444;
272
+ box-shadow: 0 0 8px rgba(239, 68, 68, 0.5);
273
+ }
274
+
275
+ :global(.jf-text-empty) {
276
+ color: #64748b;
277
+ }
278
+
279
+ :global(.jf-text-valid) {
280
+ color: #10b981;
281
+ font-weight: 600;
282
+ }
283
+
284
+ :global(.theme-dark) :global(.jf-text-valid) {
285
+ color: #34d399;
286
+ }
287
+
288
+ :global(.jf-text-invalid) {
289
+ color: #ef4444;
290
+ font-weight: 600;
291
+ }
292
+
293
+ :global(.theme-dark) :global(.jf-text-invalid) {
294
+ color: #f87171;
295
+ }
296
+
297
+ :global(.jf-toast-visible) {
298
+ transform: translateY(0);
299
+ opacity: 1;
300
+ }
301
+
302
+ :global(.jf-token-key) {
303
+ color: #7c3aed;
304
+ }
305
+
306
+ :global(.theme-dark) :global(.jf-token-key) {
307
+ color: #a78bfa;
308
+ }
309
+
310
+ :global(.jf-token-string) {
311
+ color: #16a34a;
312
+ }
313
+
314
+ :global(.theme-dark) :global(.jf-token-string) {
315
+ color: #4ade80;
316
+ }
317
+
318
+ :global(.jf-token-number) {
319
+ color: #c2410c;
320
+ }
321
+
322
+ :global(.theme-dark) :global(.jf-token-number) {
323
+ color: #fb923c;
324
+ }
325
+
326
+ :global(.jf-token-boolean) {
327
+ color: #1d4ed8;
328
+ }
329
+
330
+ :global(.theme-dark) :global(.jf-token-boolean) {
331
+ color: #60a5fa;
332
+ }
333
+
334
+ :global(.jf-token-null) {
335
+ color: #dc2626;
336
+ }
337
+
338
+ :global(.theme-dark) :global(.jf-token-null) {
339
+ color: #f87171;
340
+ }
341
+
342
+ :global(.jf-token-error) {
343
+ color: #ef4444;
344
+ }