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