@jjlmoya/utils-nautical 1.13.0 → 1.14.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.
@@ -238,323 +238,3 @@ const { ui } = Astro.props;
238
238
  new UnderKeelCalculator();
239
239
  </script>
240
240
 
241
- <style>
242
- .under-keel-calculator {
243
- --n-bg: #fff;
244
- --n-bg-muted: #f1f5f9;
245
- --n-text: #0f172a;
246
- --n-text-muted: #475569;
247
- --n-text-dim: #64748b;
248
- --n-border: #e2e8f0;
249
- --n-shadow: rgba(0, 0, 0, 0.05);
250
- --n-primary: #3b82f6;
251
- --n-primary-on: #fff;
252
- --n-accent: #6366f1;
253
- --n-cyan: #0891b2;
254
- --n-success: #10b981;
255
- --n-warning: #f59e0b;
256
- --n-error: #f43f5e;
257
- --ukc-label-size: 0.75rem;
258
- --ukc-label-weight: 800;
259
- --ukc-label-spacing: 0.06em;
260
-
261
- display: flex;
262
- flex-direction: column;
263
- gap: 1.5rem;
264
- max-width: 1000px;
265
- margin: 0 auto;
266
- }
267
-
268
- :global(.theme-dark) .under-keel-calculator {
269
- --n-bg: #0f172a;
270
- --n-bg-muted: #1e293b;
271
- --n-text: #f8fafc;
272
- --n-text-muted: #94a3b8;
273
- --n-text-dim: #64748b;
274
- --n-border: #334155;
275
- --n-shadow: rgba(0, 0, 0, 0.3);
276
- --n-primary: #60a5fa;
277
- --n-primary-on: #fff;
278
- --n-accent: #818cf8;
279
- --n-cyan: #22d3ee;
280
- --n-success: #34d399;
281
- --n-warning: #fbbf24;
282
- --n-error: #fb7185;
283
- }
284
-
285
- .ukc-main-card {
286
- background: var(--n-bg);
287
- border: 1px solid var(--n-border);
288
- border-radius: 2rem;
289
- display: grid;
290
- grid-template-columns: 320px 1fr;
291
- overflow: hidden;
292
- box-shadow: 0 20px 40px var(--n-shadow);
293
- }
294
-
295
- @media (max-width: 850px) {
296
- .ukc-main-card {
297
- grid-template-columns: 1fr;
298
- }
299
- }
300
-
301
- .ukc-calc-sidebar {
302
- background: var(--n-primary);
303
- color: var(--n-primary-on);
304
- padding: 2rem;
305
- display: flex;
306
- flex-direction: column;
307
- gap: 2rem;
308
- }
309
-
310
- .ukc-sidebar-header h3 {
311
- font-size: 1.1rem;
312
- margin: 0;
313
- font-weight: 700;
314
- text-transform: uppercase;
315
- letter-spacing: 0.05em;
316
- opacity: 0.9;
317
- }
318
-
319
- .ukc-input-set {
320
- display: flex;
321
- flex-direction: column;
322
- gap: 1.2rem;
323
- }
324
-
325
- .ukc-input-block {
326
- display: flex;
327
- flex-direction: column;
328
- gap: 0.4rem;
329
- }
330
-
331
- .ukc-input-block label {
332
- font-size: var(--ukc-label-size);
333
- font-weight: var(--ukc-label-weight);
334
- color: var(--n-primary-on);
335
- opacity: 0.9;
336
- text-transform: uppercase;
337
- letter-spacing: var(--ukc-label-spacing);
338
- }
339
-
340
- .ukc-unit-input {
341
- position: relative;
342
- display: flex;
343
- align-items: center;
344
- }
345
-
346
- .ukc-unit-input input {
347
- width: 100%;
348
- background: rgba(255, 255, 255, 0.1);
349
- border: 1px solid rgba(255, 255, 255, 0.2);
350
- border-radius: 0.8rem;
351
- padding: 0.7rem 2.5rem 0.7rem 1rem;
352
- color: var(--n-primary-on);
353
- font-size: 1rem;
354
- outline: none;
355
- }
356
-
357
- .ukc-unit-input span {
358
- position: absolute;
359
- right: 12px;
360
- font-size: 0.85rem;
361
- font-weight: 700;
362
- opacity: 0.6;
363
- }
364
-
365
- .ukc-hr-divider {
366
- height: 1px;
367
- background: rgba(255, 255, 255, 0.1);
368
- margin: 0.5rem 0;
369
- }
370
-
371
- .ukc-row {
372
- display: flex;
373
- gap: 0.5rem;
374
- }
375
-
376
- .under-keel-calculator input[type='time'],
377
- .under-keel-calculator input[type='number'] {
378
- background: rgba(255, 255, 255, 0.1);
379
- border: 1px solid rgba(255, 255, 255, 0.2);
380
- border-radius: 0.8rem;
381
- padding: 0.7rem;
382
- color: var(--n-primary-on);
383
- font-size: 1rem;
384
- outline: none;
385
- }
386
-
387
- .ukc-mini-num {
388
- width: 80px;
389
- }
390
-
391
- .ukc-calc-content {
392
- padding: 2.5rem;
393
- display: flex;
394
- flex-direction: column;
395
- gap: 2rem;
396
- background: var(--n-bg-muted);
397
- }
398
-
399
- .ukc-top-row {
400
- display: flex;
401
- justify-content: space-between;
402
- align-items: flex-start;
403
- }
404
-
405
- .ukc-result-display {
406
- display: flex;
407
- flex-direction: column;
408
- gap: 0.5rem;
409
- }
410
-
411
- .ukc-result-display .label {
412
- font-size: 0.85rem;
413
- font-weight: 600;
414
- color: var(--n-text-muted);
415
- text-transform: uppercase;
416
- letter-spacing: 0.05em;
417
- }
418
-
419
- .ukc-time-range {
420
- display: flex;
421
- align-items: center;
422
- gap: 1.5rem;
423
- font-size: 3.5rem;
424
- font-weight: 800;
425
- color: var(--n-text);
426
- line-height: 1;
427
- }
428
-
429
- .ukc-arrow-sep {
430
- color: var(--n-cyan);
431
- opacity: 0.4;
432
- }
433
-
434
- .ukc-status-indicator {
435
- padding: 0.4rem 1.2rem;
436
- border-radius: 2rem;
437
- font-size: 0.9rem;
438
- font-weight: 700;
439
- width: fit-content;
440
- background: var(--n-bg-muted);
441
- color: var(--n-text-dim);
442
- }
443
-
444
- .ukc-status-indicator.success {
445
- background: color-mix(in srgb, var(--n-success), transparent 80%);
446
- color: var(--n-success);
447
- }
448
-
449
- .ukc-status-indicator.warning {
450
- background: color-mix(in srgb, var(--n-warning), transparent 80%);
451
- color: var(--n-warning);
452
- }
453
-
454
- .ukc-status-indicator.danger {
455
- background: color-mix(in srgb, var(--n-error), transparent 80%);
456
- color: var(--n-error);
457
- }
458
-
459
- .ukc-data-group {
460
- display: flex;
461
- flex-direction: column;
462
- gap: 0.8rem;
463
- }
464
-
465
- .ukc-stat-pill {
466
- background: var(--n-bg);
467
- padding: 0.5rem 1rem;
468
- border-radius: 0.8rem;
469
- border: 1px solid var(--n-border);
470
- display: flex;
471
- justify-content: space-between;
472
- gap: 2rem;
473
- font-size: 0.9rem;
474
- }
475
-
476
- .ukc-stat-pill span {
477
- color: var(--n-text-muted);
478
- font-weight: 500;
479
- }
480
-
481
- .ukc-stat-pill strong {
482
- color: var(--n-text);
483
- font-weight: 700;
484
- }
485
-
486
- .ukc-visual-container {
487
- background: var(--n-bg);
488
- border: 1px solid var(--n-border);
489
- border-radius: 1.5rem;
490
- padding: 2rem;
491
- height: 300px;
492
- display: flex;
493
- justify-content: center;
494
- position: relative;
495
- }
496
-
497
- .ukc-ocean-frame {
498
- width: 200px;
499
- height: 100%;
500
- background: var(--n-bg-muted);
501
- border: 4px solid var(--n-border);
502
- border-radius: 1rem;
503
- position: relative;
504
- overflow: hidden;
505
- }
506
-
507
- .ukc-water-volume {
508
- position: absolute;
509
- bottom: 0;
510
- width: 100%;
511
- background: linear-gradient(to top, var(--n-primary), var(--n-cyan));
512
- opacity: 0.6;
513
- transition: height 0.6s ease;
514
- }
515
-
516
- .ukc-surface-line {
517
- position: absolute;
518
- top: 0;
519
- width: 100%;
520
- height: 3px;
521
- background: var(--n-cyan);
522
- }
523
-
524
- .ukc-ship-silhouette {
525
- position: absolute;
526
- left: 20px;
527
- right: 20px;
528
- height: 30px;
529
- color: var(--n-text);
530
- z-index: 10;
531
- transition: bottom 0.6s ease;
532
- }
533
-
534
- .ukc-sand-bottom {
535
- position: absolute;
536
- bottom: 0;
537
- width: 100%;
538
- height: 40px;
539
- background: color-mix(in srgb, var(--n-warning), transparent 40%);
540
- display: flex;
541
- align-items: center;
542
- justify-content: center;
543
- font-size: 0.7rem;
544
- font-weight: 800;
545
- color: var(--n-text);
546
- letter-spacing: 0.2em;
547
- z-index: 5;
548
- }
549
-
550
- @media (max-width: 640px) {
551
- .ukc-time-range {
552
- font-size: 2.2rem;
553
- }
554
-
555
- .ukc-top-row {
556
- flex-direction: column;
557
- gap: 2rem;
558
- }
559
- }
560
- </style>
@@ -0,0 +1,318 @@
1
+ .under-keel-calculator {
2
+ --n-bg: #fff;
3
+ --n-bg-muted: #f1f5f9;
4
+ --n-text: #0f172a;
5
+ --n-text-muted: #475569;
6
+ --n-text-dim: #64748b;
7
+ --n-border: #e2e8f0;
8
+ --n-shadow: rgba(0, 0, 0, 0.05);
9
+ --n-primary: #3b82f6;
10
+ --n-primary-on: #fff;
11
+ --n-accent: #6366f1;
12
+ --n-cyan: #0891b2;
13
+ --n-success: #10b981;
14
+ --n-warning: #f59e0b;
15
+ --n-error: #f43f5e;
16
+ --ukc-label-size: 0.75rem;
17
+ --ukc-label-weight: 800;
18
+ --ukc-label-spacing: 0.06em;
19
+
20
+ display: flex;
21
+ flex-direction: column;
22
+ gap: 1.5rem;
23
+ max-width: 1000px;
24
+ margin: 0 auto;
25
+ }
26
+
27
+ :global(.theme-dark) .under-keel-calculator {
28
+ --n-bg: #0f172a;
29
+ --n-bg-muted: #1e293b;
30
+ --n-text: #f8fafc;
31
+ --n-text-muted: #94a3b8;
32
+ --n-text-dim: #64748b;
33
+ --n-border: #334155;
34
+ --n-shadow: rgba(0, 0, 0, 0.3);
35
+ --n-primary: #60a5fa;
36
+ --n-primary-on: #fff;
37
+ --n-accent: #818cf8;
38
+ --n-cyan: #22d3ee;
39
+ --n-success: #34d399;
40
+ --n-warning: #fbbf24;
41
+ --n-error: #fb7185;
42
+ }
43
+
44
+ .ukc-main-card {
45
+ background: var(--n-bg);
46
+ border: 1px solid var(--n-border);
47
+ border-radius: 2rem;
48
+ display: grid;
49
+ grid-template-columns: 320px 1fr;
50
+ overflow: hidden;
51
+ box-shadow: 0 20px 40px var(--n-shadow);
52
+ }
53
+
54
+ @media (max-width: 850px) {
55
+ .ukc-main-card {
56
+ grid-template-columns: 1fr;
57
+ }
58
+ }
59
+
60
+ .ukc-calc-sidebar {
61
+ background: var(--n-primary);
62
+ color: var(--n-primary-on);
63
+ padding: 2rem;
64
+ display: flex;
65
+ flex-direction: column;
66
+ gap: 2rem;
67
+ }
68
+
69
+ .ukc-sidebar-header h3 {
70
+ font-size: 1.1rem;
71
+ margin: 0;
72
+ font-weight: 700;
73
+ text-transform: uppercase;
74
+ letter-spacing: 0.05em;
75
+ opacity: 0.9;
76
+ }
77
+
78
+ .ukc-input-set {
79
+ display: flex;
80
+ flex-direction: column;
81
+ gap: 1.2rem;
82
+ }
83
+
84
+ .ukc-input-block {
85
+ display: flex;
86
+ flex-direction: column;
87
+ gap: 0.4rem;
88
+ }
89
+
90
+ .ukc-input-block label {
91
+ font-size: var(--ukc-label-size);
92
+ font-weight: var(--ukc-label-weight);
93
+ color: var(--n-primary-on);
94
+ opacity: 0.9;
95
+ text-transform: uppercase;
96
+ letter-spacing: var(--ukc-label-spacing);
97
+ }
98
+
99
+ .ukc-unit-input {
100
+ position: relative;
101
+ display: flex;
102
+ align-items: center;
103
+ }
104
+
105
+ .ukc-unit-input input {
106
+ width: 100%;
107
+ background: rgba(255, 255, 255, 0.1);
108
+ border: 1px solid rgba(255, 255, 255, 0.2);
109
+ border-radius: 0.8rem;
110
+ padding: 0.7rem 2.5rem 0.7rem 1rem;
111
+ color: var(--n-primary-on);
112
+ font-size: 1rem;
113
+ outline: none;
114
+ }
115
+
116
+ .ukc-unit-input span {
117
+ position: absolute;
118
+ right: 12px;
119
+ font-size: 0.85rem;
120
+ font-weight: 700;
121
+ opacity: 0.6;
122
+ }
123
+
124
+ .ukc-hr-divider {
125
+ height: 1px;
126
+ background: rgba(255, 255, 255, 0.1);
127
+ margin: 0.5rem 0;
128
+ }
129
+
130
+ .ukc-row {
131
+ display: flex;
132
+ gap: 0.5rem;
133
+ }
134
+
135
+ .under-keel-calculator input[type='time'],
136
+ .under-keel-calculator input[type='number'] {
137
+ background: rgba(255, 255, 255, 0.1);
138
+ border: 1px solid rgba(255, 255, 255, 0.2);
139
+ border-radius: 0.8rem;
140
+ padding: 0.7rem;
141
+ color: var(--n-primary-on);
142
+ font-size: 1rem;
143
+ outline: none;
144
+ }
145
+
146
+ .ukc-mini-num {
147
+ width: 80px;
148
+ }
149
+
150
+ .ukc-calc-content {
151
+ padding: 2.5rem;
152
+ display: flex;
153
+ flex-direction: column;
154
+ gap: 2rem;
155
+ background: var(--n-bg-muted);
156
+ }
157
+
158
+ .ukc-top-row {
159
+ display: flex;
160
+ justify-content: space-between;
161
+ align-items: flex-start;
162
+ }
163
+
164
+ .ukc-result-display {
165
+ display: flex;
166
+ flex-direction: column;
167
+ gap: 0.5rem;
168
+ }
169
+
170
+ .ukc-result-display .label {
171
+ font-size: 0.85rem;
172
+ font-weight: 600;
173
+ color: var(--n-text-muted);
174
+ text-transform: uppercase;
175
+ letter-spacing: 0.05em;
176
+ }
177
+
178
+ .ukc-time-range {
179
+ display: flex;
180
+ align-items: center;
181
+ gap: 1.5rem;
182
+ font-size: 3.5rem;
183
+ font-weight: 800;
184
+ color: var(--n-text);
185
+ line-height: 1;
186
+ }
187
+
188
+ .ukc-arrow-sep {
189
+ color: var(--n-cyan);
190
+ opacity: 0.4;
191
+ }
192
+
193
+ .ukc-status-indicator {
194
+ padding: 0.4rem 1.2rem;
195
+ border-radius: 2rem;
196
+ font-size: 0.9rem;
197
+ font-weight: 700;
198
+ width: fit-content;
199
+ background: var(--n-bg-muted);
200
+ color: var(--n-text-dim);
201
+ }
202
+
203
+ .ukc-status-indicator.success {
204
+ background: color-mix(in srgb, var(--n-success), transparent 80%);
205
+ color: var(--n-success);
206
+ }
207
+
208
+ .ukc-status-indicator.warning {
209
+ background: color-mix(in srgb, var(--n-warning), transparent 80%);
210
+ color: var(--n-warning);
211
+ }
212
+
213
+ .ukc-status-indicator.danger {
214
+ background: color-mix(in srgb, var(--n-error), transparent 80%);
215
+ color: var(--n-error);
216
+ }
217
+
218
+ .ukc-data-group {
219
+ display: flex;
220
+ flex-direction: column;
221
+ gap: 0.8rem;
222
+ }
223
+
224
+ .ukc-stat-pill {
225
+ background: var(--n-bg);
226
+ padding: 0.5rem 1rem;
227
+ border-radius: 0.8rem;
228
+ border: 1px solid var(--n-border);
229
+ display: flex;
230
+ justify-content: space-between;
231
+ gap: 2rem;
232
+ font-size: 0.9rem;
233
+ }
234
+
235
+ .ukc-stat-pill span {
236
+ color: var(--n-text-muted);
237
+ font-weight: 500;
238
+ }
239
+
240
+ .ukc-stat-pill strong {
241
+ color: var(--n-text);
242
+ font-weight: 700;
243
+ }
244
+
245
+ .ukc-visual-container {
246
+ background: var(--n-bg);
247
+ border: 1px solid var(--n-border);
248
+ border-radius: 1.5rem;
249
+ padding: 2rem;
250
+ height: 300px;
251
+ display: flex;
252
+ justify-content: center;
253
+ position: relative;
254
+ }
255
+
256
+ .ukc-ocean-frame {
257
+ width: 200px;
258
+ height: 100%;
259
+ background: var(--n-bg-muted);
260
+ border: 4px solid var(--n-border);
261
+ border-radius: 1rem;
262
+ position: relative;
263
+ overflow: hidden;
264
+ }
265
+
266
+ .ukc-water-volume {
267
+ position: absolute;
268
+ bottom: 0;
269
+ width: 100%;
270
+ background: linear-gradient(to top, var(--n-primary), var(--n-cyan));
271
+ opacity: 0.6;
272
+ transition: height 0.6s ease;
273
+ }
274
+
275
+ .ukc-surface-line {
276
+ position: absolute;
277
+ top: 0;
278
+ width: 100%;
279
+ height: 3px;
280
+ background: var(--n-cyan);
281
+ }
282
+
283
+ .ukc-ship-silhouette {
284
+ position: absolute;
285
+ left: 20px;
286
+ right: 20px;
287
+ height: 30px;
288
+ color: var(--n-text);
289
+ z-index: 10;
290
+ transition: bottom 0.6s ease;
291
+ }
292
+
293
+ .ukc-sand-bottom {
294
+ position: absolute;
295
+ bottom: 0;
296
+ width: 100%;
297
+ height: 40px;
298
+ background: color-mix(in srgb, var(--n-warning), transparent 40%);
299
+ display: flex;
300
+ align-items: center;
301
+ justify-content: center;
302
+ font-size: 0.7rem;
303
+ font-weight: 800;
304
+ color: var(--n-text);
305
+ letter-spacing: 0.2em;
306
+ z-index: 5;
307
+ }
308
+
309
+ @media (max-width: 640px) {
310
+ .ukc-time-range {
311
+ font-size: 2.2rem;
312
+ }
313
+
314
+ .ukc-top-row {
315
+ flex-direction: column;
316
+ gap: 2rem;
317
+ }
318
+ }