@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
@@ -70,203 +70,6 @@ const t = (ui ?? {}) as DuplicateCssRemoverUI;
70
70
  </div>
71
71
  </div>
72
72
 
73
- <style>
74
- .dupcss-root {
75
- --dupcss-primary: #10b981;
76
- --dupcss-primary-dark: #059669;
77
- --dupcss-card-bg: #fff;
78
- --dupcss-bg: #f8fafc;
79
- --dupcss-text: #0f172a;
80
- --dupcss-text-muted: #64748b;
81
- --dupcss-border: #e2e8f0;
82
- --dupcss-output-bg: rgba(16, 185, 129, 0.04);
83
- --dupcss-saving-color: #f59e0b;
84
-
85
- max-width: 1000px;
86
- margin: 2rem auto;
87
- color: var(--dupcss-text);
88
- }
89
-
90
- :global(.theme-dark) .dupcss-root {
91
- --dupcss-card-bg: #1e293b;
92
- --dupcss-bg: #0f172a;
93
- --dupcss-text: #f1f5f9;
94
- --dupcss-text-muted: #94a3b8;
95
- --dupcss-border: #334155;
96
- --dupcss-output-bg: rgba(16, 185, 129, 0.08);
97
- }
98
-
99
- .dupcss-card {
100
- background: var(--dupcss-card-bg);
101
- border: 1px solid var(--dupcss-border);
102
- border-radius: 1.25rem;
103
- box-shadow: 0 4px 24px rgba(0, 0, 0, 0.06);
104
- padding: 1.75rem;
105
- display: flex;
106
- flex-direction: column;
107
- gap: 1.25rem;
108
- }
109
-
110
- .dupcss-stats {
111
- display: none;
112
- gap: 0;
113
- background: var(--dupcss-bg);
114
- border: 1px solid var(--dupcss-border);
115
- border-radius: 0.875rem;
116
- overflow: hidden;
117
- }
118
-
119
- :global(.dupcss-stats-visible) {
120
- display: flex;
121
- }
122
-
123
- .dupcss-stat-item {
124
- flex: 1;
125
- display: flex;
126
- flex-direction: column;
127
- align-items: center;
128
- padding: 0.875rem 1rem;
129
- gap: 0.25rem;
130
- }
131
-
132
- .dupcss-stat-sep {
133
- width: 1px;
134
- background: var(--dupcss-border);
135
- align-self: stretch;
136
- }
137
-
138
- .dupcss-stat-value {
139
- font-size: 1.375rem;
140
- font-weight: 800;
141
- color: var(--dupcss-primary);
142
- line-height: 1;
143
- }
144
-
145
- .dupcss-stat-value-saving {
146
- color: var(--dupcss-saving-color);
147
- }
148
-
149
- .dupcss-stat-label {
150
- font-size: 0.7rem;
151
- text-transform: uppercase;
152
- font-weight: 600;
153
- color: var(--dupcss-text-muted);
154
- letter-spacing: 0.06em;
155
- }
156
-
157
- .dupcss-grid {
158
- display: grid;
159
- grid-template-columns: 1fr 1fr;
160
- gap: 1.25rem;
161
- }
162
-
163
- @media (max-width: 768px) {
164
- .dupcss-grid {
165
- grid-template-columns: 1fr;
166
- }
167
- }
168
-
169
- .dupcss-field {
170
- display: flex;
171
- flex-direction: column;
172
- gap: 0.5rem;
173
- }
174
-
175
- .dupcss-field-header {
176
- display: flex;
177
- justify-content: space-between;
178
- align-items: center;
179
- }
180
-
181
- .dupcss-field-label {
182
- font-size: 0.8rem;
183
- font-weight: 700;
184
- color: var(--dupcss-text-muted);
185
- text-transform: uppercase;
186
- letter-spacing: 0.06em;
187
- }
188
-
189
- .dupcss-copy-btn {
190
- background: transparent;
191
- border: 1px solid var(--dupcss-border);
192
- color: var(--dupcss-text-muted);
193
- padding: 0.2rem 0.6rem;
194
- border-radius: 0.4rem;
195
- font-size: 0.75rem;
196
- font-weight: 600;
197
- cursor: pointer;
198
- transition: all 0.15s;
199
- }
200
-
201
- .dupcss-copy-btn:hover {
202
- background: var(--dupcss-bg);
203
- color: var(--dupcss-primary);
204
- border-color: var(--dupcss-primary);
205
- }
206
-
207
- .dupcss-textarea {
208
- width: 100%;
209
- height: 320px;
210
- padding: 1rem 1.25rem;
211
- font-size: 0.875rem;
212
- color: var(--dupcss-text);
213
- background: var(--dupcss-bg);
214
- border: 1px solid var(--dupcss-border);
215
- border-radius: 0.875rem;
216
- resize: vertical;
217
- transition: border-color 0.2s, box-shadow 0.2s;
218
- outline: none;
219
- white-space: pre;
220
- overflow: auto;
221
- line-height: 1.6;
222
- }
223
-
224
- .dupcss-textarea:focus {
225
- border-color: var(--dupcss-primary);
226
- box-shadow: 0 0 0 3px rgba(16, 185, 129, 0.12);
227
- }
228
-
229
- .dupcss-textarea-output {
230
- border-color: var(--dupcss-primary);
231
- background: var(--dupcss-output-bg);
232
- }
233
-
234
- .dupcss-textarea-output:focus {
235
- box-shadow: 0 0 0 3px rgba(16, 185, 129, 0.12);
236
- }
237
-
238
- .dupcss-actions {
239
- display: flex;
240
- justify-content: center;
241
- }
242
-
243
- .dupcss-btn {
244
- display: flex;
245
- align-items: center;
246
- gap: 0.5rem;
247
- background: var(--dupcss-primary);
248
- color: #fff;
249
- font-weight: 700;
250
- font-size: 0.95rem;
251
- padding: 0.875rem 2rem;
252
- border-radius: 0.875rem;
253
- border: none;
254
- cursor: pointer;
255
- transition: transform 0.15s, box-shadow 0.15s, background 0.15s;
256
- box-shadow: 0 4px 12px rgba(16, 185, 129, 0.3);
257
- }
258
-
259
- .dupcss-btn:hover {
260
- background: var(--dupcss-primary-dark);
261
- transform: translateY(-2px);
262
- box-shadow: 0 6px 16px rgba(16, 185, 129, 0.4);
263
- }
264
-
265
- .dupcss-btn-icon {
266
- width: 18px;
267
- height: 18px;
268
- }
269
- </style>
270
73
 
271
74
  <script>
272
75
  const root = document.querySelector('.dupcss-root') as HTMLElement | null;
@@ -0,0 +1,195 @@
1
+ .dupcss-root {
2
+ --dupcss-primary: #10b981;
3
+ --dupcss-primary-dark: #059669;
4
+ --dupcss-card-bg: #fff;
5
+ --dupcss-bg: #f8fafc;
6
+ --dupcss-text: #0f172a;
7
+ --dupcss-text-muted: #64748b;
8
+ --dupcss-border: #e2e8f0;
9
+ --dupcss-output-bg: rgba(16, 185, 129, 0.04);
10
+ --dupcss-saving-color: #f59e0b;
11
+
12
+ max-width: 1000px;
13
+ margin: 2rem auto;
14
+ color: var(--dupcss-text);
15
+ }
16
+
17
+ :global(.theme-dark) .dupcss-root {
18
+ --dupcss-card-bg: #1e293b;
19
+ --dupcss-bg: #0f172a;
20
+ --dupcss-text: #f1f5f9;
21
+ --dupcss-text-muted: #94a3b8;
22
+ --dupcss-border: #334155;
23
+ --dupcss-output-bg: rgba(16, 185, 129, 0.08);
24
+ }
25
+
26
+ .dupcss-card {
27
+ background: var(--dupcss-card-bg);
28
+ border: 1px solid var(--dupcss-border);
29
+ border-radius: 1.25rem;
30
+ box-shadow: 0 4px 24px rgba(0, 0, 0, 0.06);
31
+ padding: 1.75rem;
32
+ display: flex;
33
+ flex-direction: column;
34
+ gap: 1.25rem;
35
+ }
36
+
37
+ .dupcss-stats {
38
+ display: none;
39
+ gap: 0;
40
+ background: var(--dupcss-bg);
41
+ border: 1px solid var(--dupcss-border);
42
+ border-radius: 0.875rem;
43
+ overflow: hidden;
44
+ }
45
+
46
+ :global(.dupcss-stats-visible) {
47
+ display: flex;
48
+ }
49
+
50
+ .dupcss-stat-item {
51
+ flex: 1;
52
+ display: flex;
53
+ flex-direction: column;
54
+ align-items: center;
55
+ padding: 0.875rem 1rem;
56
+ gap: 0.25rem;
57
+ }
58
+
59
+ .dupcss-stat-sep {
60
+ width: 1px;
61
+ background: var(--dupcss-border);
62
+ align-self: stretch;
63
+ }
64
+
65
+ .dupcss-stat-value {
66
+ font-size: 1.375rem;
67
+ font-weight: 800;
68
+ color: var(--dupcss-primary);
69
+ line-height: 1;
70
+ }
71
+
72
+ .dupcss-stat-value-saving {
73
+ color: var(--dupcss-saving-color);
74
+ }
75
+
76
+ .dupcss-stat-label {
77
+ font-size: 0.7rem;
78
+ text-transform: uppercase;
79
+ font-weight: 600;
80
+ color: var(--dupcss-text-muted);
81
+ letter-spacing: 0.06em;
82
+ }
83
+
84
+ .dupcss-grid {
85
+ display: grid;
86
+ grid-template-columns: 1fr 1fr;
87
+ gap: 1.25rem;
88
+ }
89
+
90
+ @media (max-width: 768px) {
91
+ .dupcss-grid {
92
+ grid-template-columns: 1fr;
93
+ }
94
+ }
95
+
96
+ .dupcss-field {
97
+ display: flex;
98
+ flex-direction: column;
99
+ gap: 0.5rem;
100
+ }
101
+
102
+ .dupcss-field-header {
103
+ display: flex;
104
+ justify-content: space-between;
105
+ align-items: center;
106
+ }
107
+
108
+ .dupcss-field-label {
109
+ font-size: 0.8rem;
110
+ font-weight: 700;
111
+ color: var(--dupcss-text-muted);
112
+ text-transform: uppercase;
113
+ letter-spacing: 0.06em;
114
+ }
115
+
116
+ .dupcss-copy-btn {
117
+ background: transparent;
118
+ border: 1px solid var(--dupcss-border);
119
+ color: var(--dupcss-text-muted);
120
+ padding: 0.2rem 0.6rem;
121
+ border-radius: 0.4rem;
122
+ font-size: 0.75rem;
123
+ font-weight: 600;
124
+ cursor: pointer;
125
+ transition: all 0.15s;
126
+ }
127
+
128
+ .dupcss-copy-btn:hover {
129
+ background: var(--dupcss-bg);
130
+ color: var(--dupcss-primary);
131
+ border-color: var(--dupcss-primary);
132
+ }
133
+
134
+ .dupcss-textarea {
135
+ width: 100%;
136
+ height: 320px;
137
+ padding: 1rem 1.25rem;
138
+ font-size: 0.875rem;
139
+ color: var(--dupcss-text);
140
+ background: var(--dupcss-bg);
141
+ border: 1px solid var(--dupcss-border);
142
+ border-radius: 0.875rem;
143
+ resize: vertical;
144
+ transition: border-color 0.2s, box-shadow 0.2s;
145
+ outline: none;
146
+ white-space: pre;
147
+ overflow: auto;
148
+ line-height: 1.6;
149
+ }
150
+
151
+ .dupcss-textarea:focus {
152
+ border-color: var(--dupcss-primary);
153
+ box-shadow: 0 0 0 3px rgba(16, 185, 129, 0.12);
154
+ }
155
+
156
+ .dupcss-textarea-output {
157
+ border-color: var(--dupcss-primary);
158
+ background: var(--dupcss-output-bg);
159
+ }
160
+
161
+ .dupcss-textarea-output:focus {
162
+ box-shadow: 0 0 0 3px rgba(16, 185, 129, 0.12);
163
+ }
164
+
165
+ .dupcss-actions {
166
+ display: flex;
167
+ justify-content: center;
168
+ }
169
+
170
+ .dupcss-btn {
171
+ display: flex;
172
+ align-items: center;
173
+ gap: 0.5rem;
174
+ background: var(--dupcss-primary);
175
+ color: #fff;
176
+ font-weight: 700;
177
+ font-size: 0.95rem;
178
+ padding: 0.875rem 2rem;
179
+ border-radius: 0.875rem;
180
+ border: none;
181
+ cursor: pointer;
182
+ transition: transform 0.15s, box-shadow 0.15s, background 0.15s;
183
+ box-shadow: 0 4px 12px rgba(16, 185, 129, 0.3);
184
+ }
185
+
186
+ .dupcss-btn:hover {
187
+ background: var(--dupcss-primary-dark);
188
+ transform: translateY(-2px);
189
+ box-shadow: 0 6px 16px rgba(16, 185, 129, 0.4);
190
+ }
191
+
192
+ .dupcss-btn-icon {
193
+ width: 18px;
194
+ height: 18px;
195
+ }
@@ -240,234 +240,3 @@ const t = (ui ?? {}) as GeneradorSecurityTxtUI;
240
240
  btnDownload.addEventListener('click', downloadFile);
241
241
  </script>
242
242
 
243
- <style>
244
- .gst-root {
245
- width: 100%;
246
- }
247
-
248
- .gst-container {
249
- max-width: 900px;
250
- margin: 0 auto;
251
- display: flex;
252
- flex-direction: column;
253
- gap: 1.5rem;
254
- padding-bottom: 2rem;
255
- }
256
-
257
- .gst-glass-card {
258
- background: rgba(255, 255, 255, 0.7);
259
- backdrop-filter: blur(12px);
260
- border: 1px solid rgba(255, 255, 255, 0.3);
261
- border-radius: 1.5rem;
262
- padding: 1.5rem;
263
- box-shadow: 0 8px 32px rgba(31, 38, 135, 0.07);
264
- }
265
-
266
- :global(.theme-dark) .gst-glass-card {
267
- background: rgba(20, 20, 25, 0.7);
268
- border: 1px solid rgba(255, 255, 255, 0.05);
269
- }
270
-
271
- .gst-sections {
272
- display: grid;
273
- grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
274
- gap: 1.5rem;
275
- }
276
-
277
- .gst-section-group {
278
- display: flex;
279
- flex-direction: column;
280
- gap: 1.25rem;
281
- }
282
-
283
- .gst-group-title {
284
- font-size: 0.875rem;
285
- font-weight: 700;
286
- color: rgb(100, 116, 139);
287
- text-transform: uppercase;
288
- letter-spacing: 0.05em;
289
- display: flex;
290
- align-items: center;
291
- gap: 0.5rem;
292
- margin-bottom: 0.5rem;
293
- }
294
-
295
- :global(.theme-dark) .gst-group-title {
296
- color: rgb(148, 163, 184);
297
- }
298
-
299
- .gst-icon {
300
- width: 1rem;
301
- height: 1rem;
302
- color: var(--gst-theme-color, #4f46e5);
303
- }
304
-
305
- .gst-input-field {
306
- display: flex;
307
- flex-direction: column;
308
- gap: 0.5rem;
309
- }
310
-
311
- .gst-input-field label {
312
- font-size: 0.875rem;
313
- font-weight: 600;
314
- color: rgb(51, 65, 85);
315
- display: flex;
316
- align-items: center;
317
- gap: 0.5rem;
318
- }
319
-
320
- :global(.theme-dark) .gst-input-field label {
321
- color: rgb(203, 213, 225);
322
- }
323
-
324
- .gst-icon-small {
325
- width: 0.875rem;
326
- height: 0.875rem;
327
- }
328
-
329
- .gst-premium-input {
330
- background: white;
331
- border: 1px solid rgb(226, 232, 240);
332
- border-radius: 0.75rem;
333
- padding: 0.75rem 1rem;
334
- font-size: 1rem;
335
- outline: none;
336
- transition: all 0.2s ease;
337
- width: 100%;
338
- box-sizing: border-box;
339
- }
340
-
341
- :global(.theme-dark) .gst-premium-input {
342
- background: rgb(15, 23, 42);
343
- border-color: rgb(51, 65, 85);
344
- color: white;
345
- }
346
-
347
- .gst-premium-input:focus {
348
- border-color: var(--gst-theme-color, #4f46e5);
349
- box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.1);
350
- }
351
-
352
- .gst-field-tip {
353
- font-size: 0.75rem;
354
- color: rgb(100, 116, 139);
355
- }
356
-
357
- :global(.theme-dark) .gst-field-tip {
358
- color: rgb(148, 163, 184);
359
- }
360
-
361
- .gst-result-header {
362
- display: flex;
363
- justify-content: space-between;
364
- align-items: center;
365
- margin-bottom: 1rem;
366
- flex-wrap: wrap;
367
- gap: 1rem;
368
- }
369
-
370
- .gst-result-title {
371
- font-size: 1.125rem;
372
- font-weight: 700;
373
- color: rgb(30, 41, 59);
374
- }
375
-
376
- :global(.theme-dark) .gst-result-title {
377
- color: white;
378
- }
379
-
380
- .gst-code-display {
381
- background: rgba(0, 0, 0, 0.03);
382
- padding: 1.25rem;
383
- border-radius: 1rem;
384
- font-size: 0.9rem;
385
- line-height: 1.5;
386
- color: rgb(51, 65, 85);
387
- min-height: 200px;
388
- max-height: 400px;
389
- overflow-y: auto;
390
- border: 1px solid rgba(0, 0, 0, 0.05);
391
- }
392
-
393
- :global(.theme-dark) .gst-code-display {
394
- background: rgba(255, 255, 255, 0.03);
395
- color: rgb(203, 213, 225);
396
- border-color: rgba(255, 255, 255, 0.05);
397
- }
398
-
399
- .gst-code-display pre {
400
- margin: 0;
401
- white-space: pre-wrap;
402
- word-break: break-all;
403
- }
404
-
405
- .gst-actions {
406
- display: flex;
407
- gap: 0.75rem;
408
- }
409
-
410
- .gst-btn-primary {
411
- background: var(--gst-theme-color, #4f46e5);
412
- color: white;
413
- border: none;
414
- border-radius: 0.75rem;
415
- padding: 0.6rem 1.25rem;
416
- font-weight: 600;
417
- cursor: pointer;
418
- display: flex;
419
- align-items: center;
420
- gap: 0.5rem;
421
- transition: all 0.2s ease;
422
- }
423
-
424
- .gst-btn-primary:hover {
425
- opacity: 0.9;
426
- transform: translateY(-1px);
427
- }
428
-
429
- .gst-btn-secondary {
430
- background: white;
431
- color: rgb(30, 41, 59);
432
- border: 1px solid rgb(226, 232, 240);
433
- border-radius: 0.75rem;
434
- padding: 0.6rem 1.25rem;
435
- font-weight: 600;
436
- cursor: pointer;
437
- display: flex;
438
- align-items: center;
439
- gap: 0.5rem;
440
- transition: all 0.2s ease;
441
- }
442
-
443
- :global(.theme-dark) .gst-btn-secondary {
444
- background: rgb(30, 41, 59);
445
- color: white;
446
- border-color: rgb(51, 65, 85);
447
- }
448
-
449
- .gst-btn-secondary:hover {
450
- background: rgb(248, 250, 252);
451
- }
452
-
453
- :global(.theme-dark) .gst-btn-secondary:hover {
454
- background: rgb(51, 65, 85);
455
- }
456
-
457
- @media (max-width: 640px) {
458
- .gst-result-header {
459
- flex-direction: column;
460
- align-items: stretch;
461
- }
462
-
463
- .gst-actions {
464
- flex-direction: column;
465
- width: 100%;
466
- }
467
-
468
- .gst-actions button {
469
- width: 100%;
470
- justify-content: center;
471
- }
472
- }
473
- </style>