@jjlmoya/utils-drones 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.
@@ -0,0 +1,370 @@
1
+ .flight-calculator-ui {
2
+ --dft-accent: #f59e0b;
3
+ --dft-accent-rgb: 245, 158, 11;
4
+ --dft-bg: #fff;
5
+ --dft-bg-muted: #f8fafc;
6
+ --dft-bg-surface: #f1f5f9;
7
+ --dft-bg-overlay: #fdfdfd;
8
+ --dft-text: #1e293b;
9
+ --dft-text-muted: #64748b;
10
+ --dft-text-dim: #94a3b8;
11
+ --dft-border: #e2e8f0;
12
+ --dft-border-light: #f1f5f9;
13
+ --dft-shadow: 0 40px 100px -20px rgba(0, 0, 0, 0.08);
14
+ --dft-success: #10b981;
15
+ --dft-success-bg: rgba(16, 185, 129, 0.1);
16
+ --dft-warning: #f59e0b;
17
+ --dft-warning-bg: rgba(245, 158, 11, 0.1);
18
+ --dft-danger: #ef4444;
19
+ --dft-danger-bg: rgba(239, 68, 68, 0.1);
20
+
21
+ width: 100%;
22
+ max-width: 1200px;
23
+ margin: 2rem auto;
24
+ padding: 0 1.5rem;
25
+ }
26
+
27
+ [data-theme="dark"] .flight-calculator-ui,
28
+ .theme-dark .flight-calculator-ui {
29
+ --dft-bg: #0f172a;
30
+ --dft-bg-muted: #1e293b;
31
+ --dft-bg-surface: #334155;
32
+ --dft-bg-overlay: #1e293b;
33
+ --dft-text: #f1f5f9;
34
+ --dft-text-muted: #94a3b8;
35
+ --dft-text-dim: #64748b;
36
+ --dft-border: #334155;
37
+ --dft-border-light: #1e293b;
38
+ --dft-shadow: 0 40px 100px -20px rgba(0, 0, 0, 0.4);
39
+ }
40
+
41
+ .flight-calculator-ui .tech-mega-card {
42
+ background: var(--dft-bg);
43
+ backdrop-filter: blur(24px) saturate(180%);
44
+ -webkit-backdrop-filter: blur(24px) saturate(180%);
45
+ border: 1px solid var(--dft-border);
46
+ border-radius: 40px;
47
+ box-shadow: var(--dft-shadow);
48
+ overflow: hidden;
49
+ position: relative;
50
+ transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
51
+ }
52
+
53
+ .flight-calculator-ui .tech-mega-card::before {
54
+ content: '';
55
+ position: absolute;
56
+ top: 0;
57
+ left: 0;
58
+ right: 0;
59
+ height: 6px;
60
+ background: linear-gradient(90deg, #f59e0b, #fbbf24, #f59e0b);
61
+ background-size: 200% 100%;
62
+ animation: gradient-shift-dft 4s linear infinite;
63
+ z-index: 10;
64
+ }
65
+
66
+ @keyframes gradient-shift-dft {
67
+ 0% { background-position: 0% 50%; }
68
+ 100% { background-position: 200% 50%; }
69
+ }
70
+
71
+ .flight-calculator-ui .card-grid {
72
+ display: grid;
73
+ grid-template-columns: 400px 1fr;
74
+ min-height: 700px;
75
+ }
76
+
77
+ .flight-calculator-ui .config-sidebar {
78
+ padding: 3.5rem 3rem;
79
+ background: var(--dft-bg-overlay);
80
+ border-right: 1px solid var(--dft-border-light);
81
+ display: flex;
82
+ flex-direction: column;
83
+ gap: 3rem;
84
+ }
85
+
86
+ .flight-calculator-ui .main-display {
87
+ padding: 3.5rem 3rem;
88
+ display: flex;
89
+ flex-direction: column;
90
+ gap: 3rem;
91
+ background: var(--dft-bg);
92
+ }
93
+
94
+ .flight-calculator-ui .divider {
95
+ height: 1px;
96
+ width: 100%;
97
+ background: linear-gradient(90deg, transparent, var(--dft-border-light), transparent);
98
+ }
99
+
100
+ .flight-calculator-ui .tech-section {
101
+ display: flex;
102
+ flex-direction: column;
103
+ gap: 2rem;
104
+ }
105
+
106
+ .flight-calculator-ui .section-title {
107
+ font-size: 0.75rem;
108
+ font-weight: 800;
109
+ color: var(--dft-text-dim);
110
+ text-transform: uppercase;
111
+ letter-spacing: 0.15em;
112
+ margin-bottom: 0.5rem;
113
+ }
114
+
115
+ .flight-calculator-ui .input-group {
116
+ display: flex;
117
+ flex-direction: column;
118
+ gap: 1rem;
119
+ }
120
+
121
+ .flight-calculator-ui .label-row {
122
+ display: flex;
123
+ justify-content: space-between;
124
+ align-items: center;
125
+ }
126
+
127
+ .flight-calculator-ui .input-group label {
128
+ font-size: 0.8rem;
129
+ font-weight: 800;
130
+ color: var(--dft-text-muted);
131
+ }
132
+
133
+ .flight-calculator-ui .value-badge {
134
+ padding: 0.4rem 1rem;
135
+ background: var(--dft-bg-surface);
136
+ border-radius: 12px;
137
+ color: var(--dft-accent);
138
+ font-weight: 850;
139
+ font-size: 0.85rem;
140
+ box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.05);
141
+ }
142
+
143
+ .flight-calculator-ui .tech-slider {
144
+ width: 100%;
145
+ height: 6px;
146
+ appearance: none;
147
+ -webkit-appearance: none;
148
+ background: var(--dft-border);
149
+ border-radius: 100px;
150
+ outline: none;
151
+ transition: all 0.3s ease;
152
+ }
153
+
154
+ .flight-calculator-ui .tech-slider:hover {
155
+ background: var(--dft-border-light);
156
+ }
157
+
158
+ .flight-calculator-ui .tech-slider::-webkit-slider-thumb {
159
+ appearance: none;
160
+ -webkit-appearance: none;
161
+ width: 22px;
162
+ height: 22px;
163
+ background: var(--dft-accent);
164
+ border: 4px solid var(--dft-bg);
165
+ border-radius: 50%;
166
+ cursor: pointer;
167
+ box-shadow: 0 4px 10px rgba(var(--dft-accent-rgb), 0.3);
168
+ transition: all 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275);
169
+ }
170
+
171
+ .flight-calculator-ui .tech-select,
172
+ .flight-calculator-ui .tech-input {
173
+ width: 100%;
174
+ padding: 1rem 1.25rem;
175
+ background: var(--dft-bg-surface);
176
+ border: 1px solid var(--dft-border);
177
+ border-radius: 16px;
178
+ font-weight: 700;
179
+ color: var(--dft-text);
180
+ font-size: 1rem;
181
+ transition: all 0.3s ease;
182
+ cursor: pointer;
183
+ }
184
+
185
+ .flight-calculator-ui .tech-select:focus,
186
+ .flight-calculator-ui .tech-input:focus {
187
+ outline: none;
188
+ border-color: var(--dft-accent);
189
+ background: var(--dft-bg);
190
+ box-shadow: 0 0 0 4px var(--dft-accent-glow);
191
+ }
192
+
193
+ .flight-calculator-ui .presets {
194
+ display: flex;
195
+ gap: 0.5rem;
196
+ flex-wrap: wrap;
197
+ margin-top: 0.5rem;
198
+ }
199
+
200
+ .flight-calculator-ui .preset-btn {
201
+ padding: 0.5rem 1rem;
202
+ background: var(--dft-bg-surface);
203
+ border: 1px solid transparent;
204
+ border-radius: 12px;
205
+ font-size: 0.75rem;
206
+ font-weight: 800;
207
+ color: var(--dft-text-muted);
208
+ cursor: pointer;
209
+ transition: all 0.2s;
210
+ }
211
+
212
+ .flight-calculator-ui .preset-btn:hover {
213
+ background: var(--dft-bg);
214
+ border-color: var(--dft-accent);
215
+ color: var(--dft-accent);
216
+ transform: translateY(-2px);
217
+ }
218
+
219
+ .flight-calculator-ui .hint {
220
+ font-size: 0.7rem;
221
+ color: var(--dft-text-dim);
222
+ font-style: italic;
223
+ line-height: 1.4;
224
+ }
225
+
226
+ .flight-calculator-ui .dashboard-section {
227
+ display: flex;
228
+ flex-direction: column;
229
+ align-items: center;
230
+ gap: 3.5rem;
231
+ }
232
+
233
+ .flight-calculator-ui .radial-container {
234
+ position: relative;
235
+ width: 320px;
236
+ height: 320px;
237
+ display: flex;
238
+ justify-content: center;
239
+ align-items: center;
240
+ }
241
+
242
+ .flight-calculator-ui .radial-svg {
243
+ transform: rotate(-90deg);
244
+ width: 100%;
245
+ height: 100%;
246
+ filter: drop-shadow(0 10px 30px rgba(var(--dft-accent-rgb), 0.15));
247
+ }
248
+
249
+ .flight-calculator-ui .bg-circle {
250
+ fill: none;
251
+ stroke: var(--dft-bg-surface);
252
+ stroke-width: 10;
253
+ }
254
+
255
+ .flight-calculator-ui .fg-circle {
256
+ fill: none;
257
+ stroke: url("#statGradient");
258
+ stroke-width: 10;
259
+ stroke-linecap: round;
260
+ stroke-dasharray: 283;
261
+ stroke-dashoffset: 0;
262
+ transition: stroke-dashoffset 1s cubic-bezier(0.34, 1.56, 0.64, 1);
263
+ }
264
+
265
+ .flight-calculator-ui .result-text {
266
+ position: absolute;
267
+ display: flex;
268
+ flex-direction: column;
269
+ align-items: center;
270
+ }
271
+
272
+ .flight-calculator-ui .time-primary {
273
+ font-size: 7rem;
274
+ font-weight: 950;
275
+ color: var(--dft-text);
276
+ letter-spacing: -0.08em;
277
+ line-height: 1;
278
+ }
279
+
280
+ .flight-calculator-ui .time-label {
281
+ font-size: 1rem;
282
+ font-weight: 850;
283
+ color: var(--dft-text-muted);
284
+ text-transform: uppercase;
285
+ letter-spacing: 0.2em;
286
+ margin-top: 0.5rem;
287
+ }
288
+
289
+ .flight-calculator-ui .secondary-stats {
290
+ display: grid;
291
+ grid-template-columns: repeat(3, 1fr);
292
+ gap: 2rem;
293
+ width: 100%;
294
+ }
295
+
296
+ .flight-calculator-ui .stat-box {
297
+ display: flex;
298
+ flex-direction: column;
299
+ align-items: center;
300
+ gap: 0.5rem;
301
+ padding: 2rem 1.5rem;
302
+ background: var(--dft-bg-overlay);
303
+ border: 1px solid var(--dft-border-light);
304
+ border-radius: 32px;
305
+ transition: all 0.3s ease;
306
+ }
307
+
308
+ .flight-calculator-ui .stat-box:hover {
309
+ transform: translateY(-5px);
310
+ box-shadow: 0 20px 40px rgba(0, 0, 0, 0.04);
311
+ border-color: var(--dft-accent);
312
+ }
313
+
314
+ .flight-calculator-ui .stat-label {
315
+ font-size: 0.75rem;
316
+ font-weight: 800;
317
+ color: var(--dft-text-dim);
318
+ text-transform: uppercase;
319
+ letter-spacing: 0.1em;
320
+ }
321
+
322
+ .flight-calculator-ui .stat-value {
323
+ font-size: 1.75rem;
324
+ font-weight: 950;
325
+ color: var(--dft-text);
326
+ }
327
+
328
+ .flight-calculator-ui .chart-header {
329
+ display: flex;
330
+ justify-content: space-between;
331
+ align-items: center;
332
+ margin-bottom: 2rem;
333
+ }
334
+
335
+ .flight-calculator-ui .chart-subtitle {
336
+ font-size: 0.85rem;
337
+ font-weight: 700;
338
+ color: var(--dft-text-muted);
339
+ }
340
+
341
+ .flight-calculator-ui .chart-body {
342
+ position: relative;
343
+ height: 350px;
344
+ width: 100%;
345
+ background: var(--dft-bg-surface);
346
+ border-radius: 32px;
347
+ padding: 1.5rem;
348
+ border: 1px solid var(--dft-border-light);
349
+ }
350
+
351
+ @media (max-width: 1200px) {
352
+ .flight-calculator-ui .card-grid {
353
+ grid-template-columns: 1fr;
354
+ }
355
+ .flight-calculator-ui .config-sidebar {
356
+ border-right: none;
357
+ border-bottom: 1px solid var(--dft-border-light);
358
+ }
359
+ }
360
+
361
+ @media (max-width: 600px) {
362
+ .flight-calculator-ui { padding: 0.5rem; }
363
+ .flight-calculator-ui .secondary-stats { grid-template-columns: 1fr; }
364
+ .flight-calculator-ui .radial-container {
365
+ width: 240px;
366
+ height: 240px;
367
+ }
368
+ .flight-calculator-ui .time-primary { font-size: 4.5rem; }
369
+ .flight-calculator-ui .stat-box { padding: 1.5rem; }
370
+ }
@@ -271,312 +271,5 @@ const { ui } = Astro.props;
271
271
  checkLeaflet();
272
272
  </script>
273
273
 
274
- <style>
275
- .gps-converter-ui {
276
- --gps-accent: #0ea5e9;
277
- --gps-accent-rgb: 14, 165, 233;
278
- --gps-accent-glow: rgba(14, 165, 233, 0.15);
279
- --gps-bg: #fff;
280
- --gps-bg-muted: #f8fafc;
281
- --gps-bg-surface: #f1f5f9;
282
- --gps-bg-overlay: #fdfdfd;
283
- --gps-text: #1e293b;
284
- --gps-text-muted: #64748b;
285
- --gps-text-dim: #94a3b8;
286
- --gps-border: #e2e8f0;
287
- --gps-border-light: #f1f5f9;
288
- --gps-shadow: 0 40px 100px -20px rgba(0, 0, 0, 0.08);
289
- --gps-danger: #ef4444;
290
- --gps-danger-bg: rgba(239, 68, 68, 0.1);
291
274
 
292
- width: 100%;
293
- max-width: 1200px;
294
- margin: 2rem auto;
295
- padding: 0 1.5rem;
296
- }
297
-
298
- :global([data-theme="dark"]) .gps-converter-ui,
299
- :global(.theme-dark) .gps-converter-ui {
300
- --gps-bg: #0f172a;
301
- --gps-bg-muted: #1e293b;
302
- --gps-bg-surface: #334155;
303
- --gps-bg-overlay: #1e293b;
304
- --gps-text: #f1f5f9;
305
- --gps-text-muted: #94a3b8;
306
- --gps-text-dim: #64748b;
307
- --gps-border: #334155;
308
- --gps-border-light: #1e293b;
309
- --gps-shadow: 0 40px 100px -20px rgba(0, 0, 0, 0.4);
310
- }
311
-
312
- .gps-converter-ui .tech-mega-card {
313
- background: var(--gps-bg);
314
- backdrop-filter: blur(24px) saturate(180%);
315
- -webkit-backdrop-filter: blur(24px) saturate(180%);
316
- border: 1px solid var(--gps-border);
317
- border-radius: 40px;
318
- box-shadow: var(--gps-shadow);
319
- position: relative;
320
- overflow: hidden;
321
- }
322
-
323
- .gps-converter-ui .tech-mega-card::before {
324
- content: '';
325
- position: absolute;
326
- top: 0;
327
- left: 0;
328
- right: 0;
329
- height: 6px;
330
- background: linear-gradient(90deg, #0ea5e9, #6366f1, #0ea5e9);
331
- background-size: 200% 100%;
332
- animation: gradient-shift-gps 4s linear infinite;
333
- z-index: 10;
334
- }
335
-
336
- @keyframes gradient-shift-gps {
337
- 0% { background-position: 0% 50%; }
338
- 100% { background-position: 200% 50%; }
339
- }
340
-
341
- .gps-converter-ui .card-grid {
342
- display: grid;
343
- grid-template-columns: 400px 1fr;
344
- min-height: 700px;
345
- }
346
-
347
- .gps-converter-ui .config-sidebar {
348
- padding: 3.5rem 3rem;
349
- background: var(--gps-bg-overlay);
350
- border-right: 1px solid var(--gps-border-light);
351
- display: flex;
352
- flex-direction: column;
353
- gap: 3rem;
354
- }
355
-
356
- .gps-converter-ui .main-display {
357
- padding: 3.5rem 3rem;
358
- display: flex;
359
- flex-direction: column;
360
- gap: 3rem;
361
- background: var(--gps-bg);
362
- }
363
-
364
- .gps-converter-ui .divider {
365
- height: 1px;
366
- width: 100%;
367
- background: linear-gradient(90deg, transparent, var(--gps-border-light), transparent);
368
- }
369
-
370
- .gps-converter-ui :global(.tech-section) {
371
- display: flex;
372
- flex-direction: column;
373
- gap: 1.5rem;
374
- }
375
-
376
- .gps-converter-ui :global(.section-title) {
377
- font-size: 0.75rem;
378
- font-weight: 800;
379
- color: var(--gps-text-muted);
380
- text-transform: uppercase;
381
- letter-spacing: 0.15em;
382
- }
383
-
384
- .gps-converter-ui :global(.field-label) {
385
- font-size: 0.7rem;
386
- font-weight: 800;
387
- color: var(--gps-text-dim);
388
- text-transform: uppercase;
389
- letter-spacing: 0.05em;
390
- margin-bottom: 0.5rem;
391
- display: block;
392
- }
393
-
394
- .gps-converter-ui :global(.tech-input) {
395
- width: 100%;
396
- padding: 1rem 1.25rem;
397
- background: var(--gps-bg-surface);
398
- border: 1px solid var(--gps-border);
399
- border-radius: 16px;
400
- font-weight: 700;
401
- color: var(--gps-text);
402
- font-size: 1rem;
403
- transition: all 0.3s ease;
404
- }
405
-
406
- .gps-converter-ui :global(.tech-input:focus) {
407
- outline: none;
408
- border-color: var(--gps-accent);
409
- box-shadow: 0 0 0 4px var(--gps-accent-glow);
410
- background: var(--gps-bg);
411
- }
412
-
413
- .gps-converter-ui :global(.mode-switch) {
414
- display: flex;
415
- background: var(--gps-bg-surface);
416
- padding: 0.4rem;
417
- border-radius: 18px;
418
- gap: 0.25rem;
419
- }
420
-
421
- .gps-converter-ui :global(.mode-btn) {
422
- flex: 1;
423
- padding: 0.75rem;
424
- border-radius: 14px;
425
- border: none;
426
- background: transparent;
427
- font-size: 0.75rem;
428
- font-weight: 800;
429
- color: var(--gps-text-muted);
430
- cursor: pointer;
431
- transition: all 0.3s ease;
432
- }
433
-
434
- .gps-converter-ui :global(.mode-btn.active) {
435
- background: var(--gps-bg);
436
- color: var(--gps-accent);
437
- box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.1);
438
- }
439
-
440
- .gps-converter-ui :global(.map-container) {
441
- max-width: 100%;
442
- height: 400px;
443
- border-radius: 32px;
444
- overflow: hidden;
445
- background: var(--gps-bg-surface);
446
- border: 1px solid var(--gps-border-light);
447
- }
448
-
449
- .gps-converter-ui :global(.results-area) {
450
- display: grid;
451
- grid-template-columns: repeat(2, 1fr);
452
- gap: 2rem;
453
- }
454
-
455
- .gps-converter-ui :global(.result-box) {
456
- background: var(--gps-bg-overlay);
457
- border: 1px solid var(--gps-border-light);
458
- border-radius: 28px;
459
- padding: 2.5rem;
460
- display: flex;
461
- flex-direction: column;
462
- gap: 1rem;
463
- transition: all 0.3s ease;
464
- }
465
-
466
- .gps-converter-ui :global(.result-box:hover) {
467
- transform: translateY(-5px);
468
- box-shadow: 0 20px 40px rgba(0, 0, 0, 0.04);
469
- border-color: var(--gps-accent);
470
- }
471
-
472
- .gps-converter-ui :global(.res-header) {
473
- display: flex;
474
- justify-content: space-between;
475
- align-items: center;
476
- }
477
-
478
- .gps-converter-ui :global(.copy-btn) {
479
- background: var(--gps-bg-surface);
480
- border: 1px solid var(--gps-border);
481
- color: var(--gps-text-muted);
482
- padding: 0.5rem 1rem;
483
- border-radius: 12px;
484
- font-size: 0.7rem;
485
- font-weight: 800;
486
- cursor: pointer;
487
- display: flex;
488
- align-items: center;
489
- gap: 0.5rem;
490
- transition: all 0.3s ease;
491
- }
492
-
493
- .gps-converter-ui :global(.copy-btn:hover) {
494
- background: var(--gps-accent);
495
- color: white;
496
- border-color: var(--gps-accent);
497
- }
498
-
499
- .gps-converter-ui :global(.val-display) {
500
- font-size: 1.5rem;
501
- font-weight: 900;
502
- color: var(--gps-text);
503
- word-break: break-all;
504
- letter-spacing: -0.01em;
505
- }
506
-
507
- .gps-converter-ui :global(.history-item) {
508
- padding: 1.25rem 1.5rem;
509
- background: var(--gps-bg-surface);
510
- border-radius: 20px;
511
- display: flex;
512
- justify-content: space-between;
513
- align-items: center;
514
- transition: all 0.3s ease;
515
- border: 1px solid transparent;
516
- }
517
-
518
- .gps-converter-ui :global(.history-item:hover) {
519
- background: var(--gps-bg);
520
- border-color: var(--gps-accent);
521
- transform: translateX(5px);
522
- }
523
-
524
- .gps-converter-ui :global(.hist-info) {
525
- display: flex;
526
- flex-direction: column;
527
- cursor: pointer;
528
- flex: 1;
529
- }
530
-
531
- .gps-converter-ui :global(.hist-coords) {
532
- font-size: 0.9rem;
533
- font-weight: 800;
534
- color: var(--gps-text);
535
- }
536
-
537
- .gps-converter-ui :global(.hist-time) {
538
- font-size: 0.7rem;
539
- color: var(--gps-text-dim);
540
- font-weight: 700;
541
- text-transform: uppercase;
542
- }
543
-
544
- .gps-converter-ui :global(.action-btn) {
545
- background: var(--gps-bg-overlay);
546
- border: 1px solid var(--gps-border);
547
- padding: 0.6rem;
548
- border-radius: 12px;
549
- color: var(--gps-text-dim);
550
- cursor: pointer;
551
- display: flex;
552
- align-items: center;
553
- justify-content: center;
554
- transition: all 0.2s ease;
555
- }
556
-
557
- .gps-converter-ui :global(.no-history) {
558
- text-align: center;
559
- padding: 3rem;
560
- color: var(--gps-text-dim);
561
- font-style: italic;
562
- font-size: 0.9rem;
563
- }
564
-
565
- @media (max-width: 1200px) {
566
- .gps-converter-ui .card-grid {
567
- grid-template-columns: 1fr;
568
- }
569
- .gps-converter-ui .config-sidebar {
570
- border-right: none;
571
- border-bottom: 1px solid var(--gps-border-light);
572
- }
573
- }
574
-
575
- @media (max-width: 600px) {
576
- .gps-converter-ui { padding: 0.5rem; }
577
- .gps-converter-ui .config-sidebar,
578
- .gps-converter-ui .main-display { padding: 2rem 1.5rem; }
579
- .gps-converter-ui :global(.results-area) { grid-template-columns: 1fr; }
580
- }
581
- </style>
582
275