@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,522 @@
1
+ .ctd-wrapper {
2
+ --ctd-primary: #6366f1;
3
+ --ctd-secondary: #8b5cf6;
4
+ --ctd-accent: #ec4899;
5
+
6
+ display: flex;
7
+ align-items: center;
8
+ justify-content: center;
9
+ padding: 2rem 1rem;
10
+ min-height: 100vh;
11
+ }
12
+
13
+ .ctd-card {
14
+ background: white;
15
+ border-radius: 2.5rem;
16
+ padding: 3rem;
17
+ max-width: 700px;
18
+ width: 100%;
19
+ box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.15);
20
+ }
21
+
22
+ :global(.theme-dark) .ctd-card {
23
+ background: rgb(30, 41, 59);
24
+ box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
25
+ }
26
+
27
+ .ctd-header {
28
+ display: flex;
29
+ align-items: center;
30
+ gap: 1.2rem;
31
+ margin-bottom: 3rem;
32
+ }
33
+
34
+ .ctd-icon {
35
+ width: 60px;
36
+ height: 60px;
37
+ background: linear-gradient(135deg, #6366f1 0%, #8b5cf6 50%, #ec4899 100%);
38
+ border-radius: 1.2rem;
39
+ display: flex;
40
+ align-items: center;
41
+ justify-content: center;
42
+ color: white;
43
+ box-shadow: 0 10px 25px rgba(99, 102, 241, 0.3);
44
+ flex-shrink: 0;
45
+ }
46
+
47
+ .ctd-icon :global(svg) {
48
+ width: 32px;
49
+ height: 32px;
50
+ }
51
+
52
+ .ctd-header h2 {
53
+ font-size: 2rem;
54
+ font-weight: 900;
55
+ margin: 0;
56
+ color: rgb(15, 23, 42);
57
+ letter-spacing: -0.02em;
58
+ }
59
+
60
+ :global(.theme-dark) .ctd-header h2 {
61
+ color: rgb(241, 245, 249);
62
+ }
63
+
64
+ .ctd-input-section {
65
+ margin-bottom: 2.5rem;
66
+ }
67
+
68
+ .ctd-input-section > label {
69
+ display: block;
70
+ font-size: 0.85rem;
71
+ font-weight: 700;
72
+ color: rgb(100, 116, 139);
73
+ margin-bottom: 0.8rem;
74
+ text-transform: uppercase;
75
+ letter-spacing: 0.05em;
76
+ }
77
+
78
+ :global(.theme-dark) .ctd-input-section > label {
79
+ color: rgb(203, 213, 225);
80
+ }
81
+
82
+ .ctd-input-group {
83
+ display: flex;
84
+ align-items: center;
85
+ gap: 1rem;
86
+ margin-bottom: 2rem;
87
+ }
88
+
89
+ .ctd-input {
90
+ flex: 1;
91
+ background: rgb(248, 250, 252);
92
+ border: 2px solid rgb(226, 232, 240);
93
+ border-radius: 1.3rem;
94
+ padding: 1.2rem 1.5rem;
95
+ font-size: 1.5rem;
96
+ font-weight: 800;
97
+ color: rgb(15, 23, 42);
98
+ outline: none;
99
+ transition: all 0.3s;
100
+ box-sizing: border-box;
101
+ }
102
+
103
+ :global(.theme-dark) .ctd-input {
104
+ background: rgb(15, 23, 42);
105
+ border-color: rgb(51, 65, 85);
106
+ color: rgb(241, 245, 249);
107
+ }
108
+
109
+ .ctd-input:focus {
110
+ border-color: var(--ctd-primary);
111
+ background: white;
112
+ box-shadow: 0 0 0 6px rgba(99, 102, 241, 0.1);
113
+ }
114
+
115
+ :global(.theme-dark) .ctd-input:focus {
116
+ background: rgb(30, 41, 59);
117
+ }
118
+
119
+ .ctd-input-unit {
120
+ font-size: 0.95rem;
121
+ font-weight: 700;
122
+ color: rgb(100, 116, 139);
123
+ white-space: nowrap;
124
+ }
125
+
126
+ :global(.theme-dark) .ctd-input-unit {
127
+ color: rgb(203, 213, 225);
128
+ }
129
+
130
+ .ctd-presets-label {
131
+ font-size: 0.75rem;
132
+ font-weight: 800;
133
+ color: var(--ctd-primary);
134
+ text-transform: uppercase;
135
+ letter-spacing: 0.1em;
136
+ margin-bottom: 1rem;
137
+ }
138
+
139
+ .ctd-presets {
140
+ display: grid;
141
+ grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
142
+ gap: 0.8rem;
143
+ }
144
+
145
+ .ctd-preset {
146
+ background: rgb(241, 245, 249);
147
+ border: 2px solid rgb(226, 232, 240);
148
+ border-radius: 1rem;
149
+ padding: 1rem;
150
+ font-size: 0.8rem;
151
+ font-weight: 700;
152
+ color: rgb(15, 23, 42);
153
+ cursor: pointer;
154
+ transition: all 0.2s;
155
+ display: flex;
156
+ flex-direction: column;
157
+ align-items: center;
158
+ gap: 0.5rem;
159
+ }
160
+
161
+ :global(.theme-dark) .ctd-preset {
162
+ background: rgb(15, 23, 42);
163
+ border-color: rgb(51, 65, 85);
164
+ color: rgb(241, 245, 249);
165
+ }
166
+
167
+ .ctd-preset:hover {
168
+ border-color: var(--ctd-primary);
169
+ background: rgb(219, 234, 254);
170
+ transform: translateY(-3px);
171
+ box-shadow: 0 8px 16px rgba(99, 102, 241, 0.2);
172
+ }
173
+
174
+ :global(.theme-dark) .ctd-preset:hover {
175
+ background: rgba(99, 102, 241, 0.1);
176
+ }
177
+
178
+ .ctd-preset.active {
179
+ background: linear-gradient(135deg, var(--ctd-primary), var(--ctd-secondary));
180
+ color: white;
181
+ border-color: transparent;
182
+ box-shadow: 0 8px 20px rgba(99, 102, 241, 0.3);
183
+ }
184
+
185
+ .ctd-speed-section {
186
+ margin-bottom: 2.5rem;
187
+ }
188
+
189
+ .ctd-speed-section > label {
190
+ display: block;
191
+ font-size: 0.85rem;
192
+ font-weight: 700;
193
+ color: rgb(100, 116, 139);
194
+ margin-bottom: 1rem;
195
+ text-transform: uppercase;
196
+ letter-spacing: 0.05em;
197
+ }
198
+
199
+ :global(.theme-dark) .ctd-speed-section > label {
200
+ color: rgb(203, 213, 225);
201
+ }
202
+
203
+ .ctd-speed-buttons {
204
+ display: grid;
205
+ grid-template-columns: repeat(3, 1fr);
206
+ gap: 1rem;
207
+ }
208
+
209
+ .ctd-speed-btn {
210
+ background: rgb(241, 245, 249);
211
+ border: 2px solid rgb(226, 232, 240);
212
+ border-radius: 1.1rem;
213
+ padding: 1rem;
214
+ display: flex;
215
+ flex-direction: column;
216
+ align-items: center;
217
+ gap: 0.4rem;
218
+ cursor: pointer;
219
+ transition: all 0.3s;
220
+ }
221
+
222
+ :global(.theme-dark) .ctd-speed-btn {
223
+ background: rgb(15, 23, 42);
224
+ border-color: rgb(51, 65, 85);
225
+ }
226
+
227
+ .ctd-speed-label {
228
+ font-size: 0.9rem;
229
+ font-weight: 800;
230
+ color: rgb(15, 23, 42);
231
+ }
232
+
233
+ :global(.theme-dark) .ctd-speed-label {
234
+ color: rgb(241, 245, 249);
235
+ }
236
+
237
+ .ctd-speed-value {
238
+ font-size: 0.75rem;
239
+ font-weight: 700;
240
+ color: rgb(100, 116, 139);
241
+ }
242
+
243
+ :global(.theme-dark) .ctd-speed-value {
244
+ color: rgb(203, 213, 225);
245
+ }
246
+
247
+ .ctd-speed-btn:hover {
248
+ border-color: var(--ctd-primary);
249
+ background: rgb(219, 234, 254);
250
+ transform: translateY(-3px);
251
+ box-shadow: 0 8px 16px rgba(99, 102, 241, 0.2);
252
+ }
253
+
254
+ :global(.theme-dark) .ctd-speed-btn:hover {
255
+ background: rgba(99, 102, 241, 0.1);
256
+ }
257
+
258
+ .ctd-speed-btn.active {
259
+ background: linear-gradient(135deg, var(--ctd-primary), var(--ctd-secondary));
260
+ color: white;
261
+ border-color: transparent;
262
+ box-shadow: 0 8px 20px rgba(99, 102, 241, 0.3);
263
+ }
264
+
265
+ .ctd-speed-btn.active .ctd-speed-label {
266
+ color: white;
267
+ }
268
+
269
+ .ctd-speed-btn.active .ctd-speed-value {
270
+ color: rgba(255, 255, 255, 0.9);
271
+ }
272
+
273
+ .ctd-multiplier-section {
274
+ margin-bottom: 2.5rem;
275
+ }
276
+
277
+ .ctd-multiplier-section > label {
278
+ display: block;
279
+ font-size: 0.85rem;
280
+ font-weight: 700;
281
+ color: rgb(100, 116, 139);
282
+ margin-bottom: 1rem;
283
+ text-transform: uppercase;
284
+ letter-spacing: 0.05em;
285
+ }
286
+
287
+ :global(.theme-dark) .ctd-multiplier-section > label {
288
+ color: rgb(203, 213, 225);
289
+ }
290
+
291
+ .ctd-multiplier-input {
292
+ display: flex;
293
+ gap: 0.6rem;
294
+ flex-wrap: wrap;
295
+ align-items: center;
296
+ }
297
+
298
+ .ctd-times-btn {
299
+ background: rgb(241, 245, 249);
300
+ border: 2px solid rgb(226, 232, 240);
301
+ border-radius: 0.9rem;
302
+ padding: 0.8rem 1.2rem;
303
+ font-size: 0.8rem;
304
+ font-weight: 700;
305
+ color: rgb(15, 23, 42);
306
+ cursor: pointer;
307
+ transition: all 0.2s;
308
+ }
309
+
310
+ :global(.theme-dark) .ctd-times-btn {
311
+ background: rgb(15, 23, 42);
312
+ border-color: rgb(51, 65, 85);
313
+ color: rgb(241, 245, 249);
314
+ }
315
+
316
+ .ctd-times-btn:hover {
317
+ border-color: var(--ctd-primary);
318
+ background: rgb(219, 234, 254);
319
+ }
320
+
321
+ :global(.theme-dark) .ctd-times-btn:hover {
322
+ background: rgba(99, 102, 241, 0.1);
323
+ }
324
+
325
+ .ctd-times-btn.active {
326
+ background: var(--ctd-primary);
327
+ color: white;
328
+ border-color: var(--ctd-primary);
329
+ }
330
+
331
+ .ctd-times-input {
332
+ padding: 0.8rem 1rem;
333
+ border: 2px solid rgb(226, 232, 240);
334
+ border-radius: 0.9rem;
335
+ font-size: 0.8rem;
336
+ font-weight: 700;
337
+ background: rgb(248, 250, 252);
338
+ color: rgb(15, 23, 42);
339
+ outline: none;
340
+ width: 80px;
341
+ transition: all 0.2s;
342
+ box-sizing: border-box;
343
+ }
344
+
345
+ :global(.theme-dark) .ctd-times-input {
346
+ background: rgb(15, 23, 42);
347
+ border-color: rgb(51, 65, 85);
348
+ color: rgb(241, 245, 249);
349
+ }
350
+
351
+ .ctd-times-input:focus {
352
+ border-color: var(--ctd-primary);
353
+ box-shadow: 0 0 0 4px rgba(99, 102, 241, 0.1);
354
+ }
355
+
356
+ .ctd-results {
357
+ background: linear-gradient(135deg, rgb(240, 249, 255) 0%, rgb(240, 253, 244) 100%);
358
+ border-radius: 1.5rem;
359
+ padding: 2rem;
360
+ margin-bottom: 2rem;
361
+ display: grid;
362
+ grid-template-columns: 1fr auto 1fr;
363
+ gap: 2rem;
364
+ align-items: center;
365
+ }
366
+
367
+ :global(.theme-dark) .ctd-results {
368
+ background: linear-gradient(135deg, rgba(99, 102, 241, 0.05), rgba(16, 185, 129, 0.05));
369
+ }
370
+
371
+ .ctd-result-single,
372
+ .ctd-result-total {
373
+ display: flex;
374
+ flex-direction: column;
375
+ align-items: center;
376
+ gap: 0.5rem;
377
+ }
378
+
379
+ .ctd-result-label {
380
+ font-size: 0.8rem;
381
+ font-weight: 700;
382
+ color: rgb(100, 116, 139);
383
+ text-transform: uppercase;
384
+ letter-spacing: 0.05em;
385
+ }
386
+
387
+ :global(.theme-dark) .ctd-result-label {
388
+ color: rgb(203, 213, 225);
389
+ }
390
+
391
+ .ctd-result-time,
392
+ .ctd-result-time-total {
393
+ font-size: 2rem;
394
+ font-weight: 900;
395
+ color: var(--ctd-primary);
396
+ line-height: 1;
397
+ }
398
+
399
+ .ctd-result-life,
400
+ .ctd-result-life-total {
401
+ font-size: 0.75rem;
402
+ font-weight: 700;
403
+ color: rgb(100, 116, 139);
404
+ }
405
+
406
+ :global(.theme-dark) .ctd-result-life,
407
+ :global(.theme-dark) .ctd-result-life-total {
408
+ color: rgb(203, 213, 225);
409
+ }
410
+
411
+ .ctd-divider {
412
+ width: 2px;
413
+ height: 100%;
414
+ background: linear-gradient(180deg, transparent, rgb(203, 213, 225), transparent);
415
+ }
416
+
417
+ :global(.theme-dark) .ctd-divider {
418
+ background: linear-gradient(180deg, transparent, rgba(203, 213, 225, 0.2), transparent);
419
+ }
420
+
421
+ .ctd-impact {
422
+ display: grid;
423
+ grid-template-columns: repeat(2, 1fr);
424
+ gap: 1.5rem;
425
+ margin-bottom: 2rem;
426
+ }
427
+
428
+ .ctd-impact-card {
429
+ background: linear-gradient(135deg, rgba(99, 102, 241, 0.1), rgba(255, 140, 0, 0.1));
430
+ border: 2px solid rgba(99, 102, 241, 0.2);
431
+ border-radius: 1.3rem;
432
+ padding: 2rem;
433
+ text-align: center;
434
+ transition: all 0.3s;
435
+ }
436
+
437
+ :global(.theme-dark) .ctd-impact-card {
438
+ background: linear-gradient(135deg, rgba(99, 102, 241, 0.05), rgba(255, 140, 0, 0.05));
439
+ border-color: rgba(99, 102, 241, 0.1);
440
+ }
441
+
442
+ .ctd-impact-card:hover {
443
+ transform: translateY(-4px);
444
+ box-shadow: 0 12px 24px rgba(99, 102, 241, 0.2);
445
+ }
446
+
447
+ .ctd-impact-number {
448
+ font-size: 2.5rem;
449
+ font-weight: 900;
450
+ background: linear-gradient(135deg, var(--ctd-primary), var(--ctd-accent));
451
+ background-clip: text;
452
+ -webkit-background-clip: text;
453
+ -webkit-text-fill-color: transparent;
454
+ line-height: 1;
455
+ margin-bottom: 0.5rem;
456
+ }
457
+
458
+ .ctd-impact-text {
459
+ font-size: 0.85rem;
460
+ font-weight: 700;
461
+ color: rgb(100, 116, 139);
462
+ }
463
+
464
+ :global(.theme-dark) .ctd-impact-text {
465
+ color: rgb(203, 213, 225);
466
+ }
467
+
468
+ .ctd-message {
469
+ background: linear-gradient(135deg, rgb(254, 243, 199) 0%, rgb(254, 202, 202) 100%);
470
+ border: 2px solid rgb(251, 191, 36);
471
+ border-radius: 1.3rem;
472
+ padding: 1.5rem;
473
+ text-align: center;
474
+ font-size: 1rem;
475
+ font-weight: 700;
476
+ color: rgb(146, 64, 14);
477
+ line-height: 1.6;
478
+ }
479
+
480
+ :global(.theme-dark) .ctd-message {
481
+ background: linear-gradient(135deg, rgba(254, 243, 199, 0.1), rgba(254, 202, 202, 0.1));
482
+ border-color: rgba(251, 191, 36, 0.3);
483
+ color: rgb(251, 191, 36);
484
+ }
485
+
486
+ @media (max-width: 768px) {
487
+ .ctd-wrapper {
488
+ padding: 1rem;
489
+ min-height: auto;
490
+ }
491
+
492
+ .ctd-card {
493
+ padding: 1.5rem;
494
+ }
495
+
496
+ .ctd-header {
497
+ margin-bottom: 1.2rem;
498
+ gap: 0.8rem;
499
+ }
500
+
501
+ .ctd-header h2 {
502
+ font-size: 1.3rem;
503
+ }
504
+
505
+ .ctd-results {
506
+ grid-template-columns: 1fr;
507
+ gap: 0.8rem;
508
+ padding: 1rem;
509
+ }
510
+
511
+ .ctd-divider {
512
+ display: none;
513
+ }
514
+
515
+ .ctd-speed-buttons {
516
+ grid-template-columns: 1fr;
517
+ }
518
+
519
+ .ctd-impact {
520
+ grid-template-columns: 1fr;
521
+ }
522
+ }
@@ -0,0 +1,29 @@
1
+ import type { DeveloperToolEntry, ToolLocaleContent } from '../../types';
2
+ import type { CalculadoraTiempoDatosUI } from './ui';
3
+
4
+ export type CalculadoraTiempoDatosLocaleContent = ToolLocaleContent<CalculadoraTiempoDatosUI>;
5
+
6
+ export const calculadoraTiempoDatos: DeveloperToolEntry<CalculadoraTiempoDatosUI> = {
7
+ id: 'calculadora-tiempo-datos',
8
+ icons: {
9
+ bg: 'mdi:wifi',
10
+ fg: 'mdi:clock-outline',
11
+ },
12
+ i18n: {
13
+ de: async () => (await import('./i18n/de')).content,
14
+ en: async () => (await import('./i18n/en')).content,
15
+ es: async () => (await import('./i18n/es')).content,
16
+ fr: async () => (await import('./i18n/fr')).content,
17
+ id: async () => (await import('./i18n/id')).content,
18
+ it: async () => (await import('./i18n/it')).content,
19
+ ja: async () => (await import('./i18n/ja')).content,
20
+ ko: async () => (await import('./i18n/ko')).content,
21
+ nl: async () => (await import('./i18n/nl')).content,
22
+ pl: async () => (await import('./i18n/pl')).content,
23
+ pt: async () => (await import('./i18n/pt')).content,
24
+ ru: async () => (await import('./i18n/ru')).content,
25
+ sv: async () => (await import('./i18n/sv')).content,
26
+ tr: async () => (await import('./i18n/tr')).content,
27
+ zh: async () => (await import('./i18n/zh')).content,
28
+ },
29
+ };
@@ -1,34 +1,5 @@
1
- import type { DeveloperToolEntry, ToolLocaleContent, ToolDefinition } from '../../types';
2
- import type { CalculadoraTiempoDatosUI } from './ui';
3
-
4
- export type CalculadoraTiempoDatosLocaleContent = ToolLocaleContent<CalculadoraTiempoDatosUI>;
5
-
6
- export const calculadoraTiempoDatos: DeveloperToolEntry<CalculadoraTiempoDatosUI> = {
7
- id: 'calculadora-tiempo-datos',
8
- icons: {
9
- bg: 'mdi:wifi',
10
- fg: 'mdi:clock-outline',
11
- },
12
- i18n: {
13
- de: async () => (await import('./i18n/de')).content,
14
- en: async () => (await import('./i18n/en')).content,
15
- es: async () => (await import('./i18n/es')).content,
16
- fr: async () => (await import('./i18n/fr')).content,
17
- id: async () => (await import('./i18n/id')).content,
18
- it: async () => (await import('./i18n/it')).content,
19
- ja: async () => (await import('./i18n/ja')).content,
20
- ko: async () => (await import('./i18n/ko')).content,
21
- nl: async () => (await import('./i18n/nl')).content,
22
- pl: async () => (await import('./i18n/pl')).content,
23
- pt: async () => (await import('./i18n/pt')).content,
24
- ru: async () => (await import('./i18n/ru')).content,
25
- sv: async () => (await import('./i18n/sv')).content,
26
- tr: async () => (await import('./i18n/tr')).content,
27
- zh: async () => (await import('./i18n/zh')).content,
28
- },
29
- };
30
-
31
-
1
+ import { calculadoraTiempoDatos } from './entry';
2
+ export * from './entry';
32
3
  export const CALCULADORA_TIEMPO_DATOS_TOOL: ToolDefinition = {
33
4
  entry: calculadoraTiempoDatos,
34
5
  Component: () => import('./component.astro'),