@jjlmoya/utils-drones 1.10.0 → 1.12.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
+ :global([data-theme="dark"]) .flight-calculator-ui,
28
+ :global(.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 :global(.tech-section) {
101
+ display: flex;
102
+ flex-direction: column;
103
+ gap: 2rem;
104
+ }
105
+
106
+ .flight-calculator-ui :global(.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 :global(.input-group) {
116
+ display: flex;
117
+ flex-direction: column;
118
+ gap: 1rem;
119
+ }
120
+
121
+ .flight-calculator-ui :global(.label-row) {
122
+ display: flex;
123
+ justify-content: space-between;
124
+ align-items: center;
125
+ }
126
+
127
+ .flight-calculator-ui :global(.input-group label) {
128
+ font-size: 0.8rem;
129
+ font-weight: 800;
130
+ color: var(--dft-text-muted);
131
+ }
132
+
133
+ .flight-calculator-ui :global(.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 :global(.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 :global(.tech-slider:hover) {
155
+ background: var(--dft-border-light);
156
+ }
157
+
158
+ .flight-calculator-ui :global(.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 :global(.tech-select),
172
+ .flight-calculator-ui :global(.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 :global(.tech-select:focus),
186
+ .flight-calculator-ui :global(.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 :global(.presets) {
194
+ display: flex;
195
+ gap: 0.5rem;
196
+ flex-wrap: wrap;
197
+ margin-top: 0.5rem;
198
+ }
199
+
200
+ .flight-calculator-ui :global(.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 :global(.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 :global(.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 :global(.dashboard-section) {
227
+ display: flex;
228
+ flex-direction: column;
229
+ align-items: center;
230
+ gap: 3.5rem;
231
+ }
232
+
233
+ .flight-calculator-ui :global(.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 :global(.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 :global(.bg-circle) {
250
+ fill: none;
251
+ stroke: var(--dft-bg-surface);
252
+ stroke-width: 10;
253
+ }
254
+
255
+ .flight-calculator-ui :global(.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 :global(.result-text) {
266
+ position: absolute;
267
+ display: flex;
268
+ flex-direction: column;
269
+ align-items: center;
270
+ }
271
+
272
+ .flight-calculator-ui :global(.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 :global(.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 :global(.secondary-stats) {
290
+ display: grid;
291
+ grid-template-columns: repeat(3, 1fr);
292
+ gap: 2rem;
293
+ width: 100%;
294
+ }
295
+
296
+ .flight-calculator-ui :global(.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 :global(.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 :global(.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 :global(.stat-value) {
323
+ font-size: 1.75rem;
324
+ font-weight: 950;
325
+ color: var(--dft-text);
326
+ }
327
+
328
+ .flight-calculator-ui :global(.chart-header) {
329
+ display: flex;
330
+ justify-content: space-between;
331
+ align-items: center;
332
+ margin-bottom: 2rem;
333
+ }
334
+
335
+ .flight-calculator-ui :global(.chart-subtitle) {
336
+ font-size: 0.85rem;
337
+ font-weight: 700;
338
+ color: var(--dft-text-muted);
339
+ }
340
+
341
+ .flight-calculator-ui :global(.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 :global(.secondary-stats) { grid-template-columns: 1fr; }
364
+ .flight-calculator-ui :global(.radial-container) {
365
+ width: 240px;
366
+ height: 240px;
367
+ }
368
+ .flight-calculator-ui :global(.time-primary) { font-size: 4.5rem; }
369
+ .flight-calculator-ui :global(.stat-box) { padding: 1.5rem; }
370
+ }
@@ -0,0 +1,29 @@
1
+ import type { DronesToolEntry, ToolLocaleContent } from '../../types';
2
+
3
+ export interface DroneFlightTimeUI {
4
+ [key: string]: string;
5
+ }
6
+
7
+ export type DroneFlightTimeLocaleContent = ToolLocaleContent<DroneFlightTimeUI>;
8
+
9
+ export const droneFlightTime: DronesToolEntry<DroneFlightTimeUI> = {
10
+ id: 'drone-flight-time',
11
+ icons: { bg: 'mdi:drone', fg: 'mdi:timer-sand' },
12
+ i18n: {
13
+ es: () => import('./i18n/es').then((m) => m.content),
14
+ en: () => import('./i18n/en').then((m) => m.content),
15
+ fr: () => import('./i18n/fr').then((m) => m.content),
16
+ de: () => import('./i18n/de').then((m) => m.content),
17
+ it: () => import('./i18n/it').then((m) => m.content),
18
+ pt: () => import('./i18n/pt').then((m) => m.content),
19
+ nl: () => import('./i18n/nl').then((m) => m.content),
20
+ pl: () => import('./i18n/pl').then((m) => m.content),
21
+ ru: () => import('./i18n/ru').then((m) => m.content),
22
+ ja: () => import('./i18n/ja').then((m) => m.content),
23
+ ko: () => import('./i18n/ko').then((m) => m.content),
24
+ zh: () => import('./i18n/zh').then((m) => m.content),
25
+ tr: () => import('./i18n/tr').then((m) => m.content),
26
+ sv: () => import('./i18n/sv').then((m) => m.content),
27
+ id: () => import('./i18n/id').then((m) => m.content),
28
+ },
29
+ };
@@ -1,33 +1,5 @@
1
- import type { DronesToolEntry, ToolDefinition, ToolLocaleContent } from '../../types';
2
-
3
- export interface DroneFlightTimeUI {
4
- [key: string]: string;
5
- }
6
-
7
- export type DroneFlightTimeLocaleContent = ToolLocaleContent<DroneFlightTimeUI>;
8
-
9
- export const droneFlightTime: DronesToolEntry<DroneFlightTimeUI> = {
10
- id: 'drone-flight-time',
11
- icons: { bg: 'mdi:drone', fg: 'mdi:timer-sand' },
12
- i18n: {
13
- es: () => import('./i18n/es').then((m) => m.content),
14
- en: () => import('./i18n/en').then((m) => m.content),
15
- fr: () => import('./i18n/fr').then((m) => m.content),
16
- de: () => import('./i18n/de').then((m) => m.content),
17
- it: () => import('./i18n/it').then((m) => m.content),
18
- pt: () => import('./i18n/pt').then((m) => m.content),
19
- nl: () => import('./i18n/nl').then((m) => m.content),
20
- pl: () => import('./i18n/pl').then((m) => m.content),
21
- ru: () => import('./i18n/ru').then((m) => m.content),
22
- ja: () => import('./i18n/ja').then((m) => m.content),
23
- ko: () => import('./i18n/ko').then((m) => m.content),
24
- zh: () => import('./i18n/zh').then((m) => m.content),
25
- tr: () => import('./i18n/tr').then((m) => m.content),
26
- sv: () => import('./i18n/sv').then((m) => m.content),
27
- id: () => import('./i18n/id').then((m) => m.content),
28
- },
29
- };
30
-
1
+ import { droneFlightTime } from './entry';
2
+ export * from './entry';
31
3
  export const DRONE_FLIGHT_TIME_TOOL: ToolDefinition = {
32
4
  entry: droneFlightTime,
33
5
  Component: () => import('./component.astro'),