@jjlmoya/utils-nautical 1.5.0 → 1.7.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.
- package/package.json +72 -71
- package/src/tests/i18n_coverage.test.ts +36 -0
- package/src/tests/locale_completeness.test.ts +42 -0
- package/src/tests/no_h1_in_components.test.ts +48 -0
- package/src/tests/schemas_fulfillment.test.ts +23 -0
- package/src/tests/slug_uniqueness.test.ts +81 -0
- package/src/tests/title_quality.test.ts +55 -0
- package/src/tool/endurance/component.astro +340 -1
- package/src/tool/endurance/i18n/de.ts +249 -0
- package/src/tool/endurance/i18n/id.ts +249 -0
- package/src/tool/endurance/i18n/it.ts +249 -0
- package/src/tool/endurance/i18n/ja.ts +249 -0
- package/src/tool/endurance/i18n/ko.ts +249 -0
- package/src/tool/endurance/i18n/nl.ts +249 -0
- package/src/tool/endurance/i18n/pl.ts +249 -0
- package/src/tool/endurance/i18n/pt.ts +249 -0
- package/src/tool/endurance/i18n/ru.ts +249 -0
- package/src/tool/endurance/i18n/sv.ts +249 -0
- package/src/tool/endurance/i18n/tr.ts +249 -0
- package/src/tool/endurance/i18n/zh.ts +249 -0
- package/src/tool/endurance/index.ts +12 -0
- package/src/tool/nauticalConverter/component.astro +208 -1
- package/src/tool/nauticalConverter/i18n/de.ts +239 -0
- package/src/tool/nauticalConverter/i18n/id.ts +239 -0
- package/src/tool/nauticalConverter/i18n/it.ts +239 -0
- package/src/tool/nauticalConverter/i18n/ja.ts +239 -0
- package/src/tool/nauticalConverter/i18n/ko.ts +239 -0
- package/src/tool/nauticalConverter/i18n/nl.ts +239 -0
- package/src/tool/nauticalConverter/i18n/pl.ts +239 -0
- package/src/tool/nauticalConverter/i18n/pt.ts +239 -0
- package/src/tool/nauticalConverter/i18n/ru.ts +239 -0
- package/src/tool/nauticalConverter/i18n/sv.ts +239 -0
- package/src/tool/nauticalConverter/i18n/tr.ts +239 -0
- package/src/tool/nauticalConverter/i18n/zh.ts +239 -0
- package/src/tool/nauticalConverter/index.ts +12 -0
- package/src/tool/sailArea/component.astro +355 -2
- package/src/tool/sailArea/i18n/de.ts +275 -0
- package/src/tool/sailArea/i18n/id.ts +275 -0
- package/src/tool/sailArea/i18n/it.ts +275 -0
- package/src/tool/sailArea/i18n/ja.ts +275 -0
- package/src/tool/sailArea/i18n/ko.ts +275 -0
- package/src/tool/sailArea/i18n/nl.ts +275 -0
- package/src/tool/sailArea/i18n/pl.ts +275 -0
- package/src/tool/sailArea/i18n/pt.ts +275 -0
- package/src/tool/sailArea/i18n/ru.ts +275 -0
- package/src/tool/sailArea/i18n/sv.ts +275 -0
- package/src/tool/sailArea/i18n/tr.ts +275 -0
- package/src/tool/sailArea/i18n/zh.ts +275 -0
- package/src/tool/sailArea/index.ts +12 -0
- package/src/tool/speedConverter/component.astro +242 -1
- package/src/tool/speedConverter/i18n/de.ts +271 -0
- package/src/tool/speedConverter/i18n/id.ts +271 -0
- package/src/tool/speedConverter/i18n/it.ts +271 -0
- package/src/tool/speedConverter/i18n/ja.ts +271 -0
- package/src/tool/speedConverter/i18n/ko.ts +271 -0
- package/src/tool/speedConverter/i18n/nl.ts +271 -0
- package/src/tool/speedConverter/i18n/pl.ts +271 -0
- package/src/tool/speedConverter/i18n/pt.ts +271 -0
- package/src/tool/speedConverter/i18n/ru.ts +194 -0
- package/src/tool/speedConverter/i18n/sv.ts +271 -0
- package/src/tool/speedConverter/i18n/tr.ts +225 -0
- package/src/tool/speedConverter/i18n/zh.ts +271 -0
- package/src/tool/speedConverter/index.ts +12 -0
- package/src/tool/tideCalculator/component.astro +313 -1
- package/src/tool/tideCalculator/i18n/de.ts +203 -0
- package/src/tool/tideCalculator/i18n/id.ts +203 -0
- package/src/tool/tideCalculator/i18n/it.ts +203 -0
- package/src/tool/tideCalculator/i18n/ja.ts +203 -0
- package/src/tool/tideCalculator/i18n/ko.ts +203 -0
- package/src/tool/tideCalculator/i18n/nl.ts +203 -0
- package/src/tool/tideCalculator/i18n/pl.ts +203 -0
- package/src/tool/tideCalculator/i18n/pt.ts +203 -0
- package/src/tool/tideCalculator/i18n/ru.ts +203 -0
- package/src/tool/tideCalculator/i18n/sv.ts +203 -0
- package/src/tool/tideCalculator/i18n/tr.ts +203 -0
- package/src/tool/tideCalculator/i18n/zh.ts +203 -0
- package/src/tool/tideCalculator/index.ts +12 -0
- package/src/tool/underKeel/component.astro +321 -1
- package/src/tool/underKeel/i18n/de.ts +189 -0
- package/src/tool/underKeel/i18n/en.ts +2 -2
- package/src/tool/underKeel/i18n/fr.ts +2 -2
- package/src/tool/underKeel/i18n/id.ts +189 -0
- package/src/tool/underKeel/i18n/it.ts +176 -0
- package/src/tool/underKeel/i18n/ja.ts +185 -0
- package/src/tool/underKeel/i18n/ko.ts +185 -0
- package/src/tool/underKeel/i18n/nl.ts +176 -0
- package/src/tool/underKeel/i18n/pl.ts +176 -0
- package/src/tool/underKeel/i18n/pt.ts +176 -0
- package/src/tool/underKeel/i18n/ru.ts +176 -0
- package/src/tool/underKeel/i18n/sv.ts +176 -0
- package/src/tool/underKeel/i18n/tr.ts +185 -0
- package/src/tool/underKeel/i18n/zh.ts +185 -0
- package/src/tool/underKeel/index.ts +12 -0
- package/src/tool/endurance/style.css +0 -337
- package/src/tool/nauticalConverter/style.css +0 -205
- package/src/tool/sailArea/style.css +0 -351
- package/src/tool/speedConverter/style.css +0 -239
- package/src/tool/tideCalculator/style.css +0 -310
- package/src/tool/underKeel/style.css +0 -318
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
---
|
|
2
|
-
import './style.css';
|
|
3
2
|
import type { SailAreaUI } from './index';
|
|
4
3
|
|
|
5
4
|
interface Props {
|
|
@@ -374,7 +373,7 @@ const { ui } = Astro.props;
|
|
|
374
373
|
function buildPdfHtml(): string {
|
|
375
374
|
const date = new Date().toLocaleDateString();
|
|
376
375
|
const header = `<div style="border-bottom:3px solid #003b73;padding-bottom:20px;margin-bottom:30px;display:flex;justify-content:space-between;align-items:flex-end;">
|
|
377
|
-
<div><
|
|
376
|
+
<div><h2 style="margin:0;color:#003b73;font-size:28px;text-transform:uppercase;">Informe Tecnico de Superficie Velica</h2>
|
|
378
377
|
<p style="margin:5px 0 0;color:#666;font-size:14px;">Generado por jjlmoya.es • ${date}</p></div>
|
|
379
378
|
<div style="text-align:right;"><span style="font-size:12px;font-weight:bold;color:#003b73;">VERSION PROFESIONAL</span></div>
|
|
380
379
|
</div>`;
|
|
@@ -416,3 +415,357 @@ const { ui } = Astro.props;
|
|
|
416
415
|
|
|
417
416
|
loadFromLocal();
|
|
418
417
|
</script>
|
|
418
|
+
|
|
419
|
+
<style>
|
|
420
|
+
.sail-area-calculator {
|
|
421
|
+
--sa-primary: #003b73;
|
|
422
|
+
--sa-primary-light: #0055a4;
|
|
423
|
+
--sa-secondary: #ef4135;
|
|
424
|
+
--sa-radius: 16px;
|
|
425
|
+
--n-bg: #fff;
|
|
426
|
+
--n-bg-muted: #f1f5f9;
|
|
427
|
+
--n-text: #0f172a;
|
|
428
|
+
--n-text-muted: #475569;
|
|
429
|
+
--n-text-dim: #64748b;
|
|
430
|
+
--n-border: #e2e8f0;
|
|
431
|
+
--n-shadow: rgba(0, 0, 0, 0.05);
|
|
432
|
+
--n-primary: #3b82f6;
|
|
433
|
+
--n-primary-on: #fff;
|
|
434
|
+
--n-accent: #6366f1;
|
|
435
|
+
--n-cyan: #0891b2;
|
|
436
|
+
--n-success: #10b981;
|
|
437
|
+
--n-warning: #f59e0b;
|
|
438
|
+
--n-error: #f43f5e;
|
|
439
|
+
|
|
440
|
+
padding: 1rem;
|
|
441
|
+
max-width: 1200px;
|
|
442
|
+
margin: 0 auto;
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
:global(.theme-dark) .sail-area-calculator {
|
|
446
|
+
--n-bg: #0f172a;
|
|
447
|
+
--n-bg-muted: #1e293b;
|
|
448
|
+
--n-text: #f8fafc;
|
|
449
|
+
--n-text-muted: #94a3b8;
|
|
450
|
+
--n-text-dim: #64748b;
|
|
451
|
+
--n-border: #334155;
|
|
452
|
+
--n-shadow: rgba(0, 0, 0, 0.3);
|
|
453
|
+
--n-primary: #60a5fa;
|
|
454
|
+
--n-primary-on: #fff;
|
|
455
|
+
--n-accent: #818cf8;
|
|
456
|
+
--n-cyan: #22d3ee;
|
|
457
|
+
--n-success: #34d399;
|
|
458
|
+
--n-warning: #fbbf24;
|
|
459
|
+
--n-error: #fb7185;
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
.sa-calculator-wrapper {
|
|
463
|
+
background: var(--n-bg);
|
|
464
|
+
border: 1px solid var(--n-border);
|
|
465
|
+
border-radius: var(--sa-radius);
|
|
466
|
+
padding: 1.5rem;
|
|
467
|
+
display: flex;
|
|
468
|
+
flex-direction: column;
|
|
469
|
+
gap: 2rem;
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
.sa-main-controls {
|
|
473
|
+
display: flex;
|
|
474
|
+
flex-direction: column;
|
|
475
|
+
gap: 1.5rem;
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
.sa-section-group h3 {
|
|
479
|
+
font-size: 0.75rem;
|
|
480
|
+
text-transform: uppercase;
|
|
481
|
+
letter-spacing: 0.1em;
|
|
482
|
+
color: var(--n-text-muted);
|
|
483
|
+
margin-bottom: 1rem;
|
|
484
|
+
display: flex;
|
|
485
|
+
align-items: center;
|
|
486
|
+
gap: 0.5rem;
|
|
487
|
+
opacity: 0.8;
|
|
488
|
+
border-bottom: 1px solid var(--n-border);
|
|
489
|
+
padding-bottom: 0.4rem;
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
.sa-compact-grid {
|
|
493
|
+
display: grid;
|
|
494
|
+
grid-template-columns: repeat(2, 1fr);
|
|
495
|
+
gap: 1rem;
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
.sa-input-row {
|
|
499
|
+
display: flex;
|
|
500
|
+
flex-direction: column;
|
|
501
|
+
gap: 0.4rem;
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
.sa-input-row label {
|
|
505
|
+
font-size: 0.7rem;
|
|
506
|
+
font-weight: 700;
|
|
507
|
+
color: var(--n-text-muted);
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
.sa-elegant-input {
|
|
511
|
+
background: var(--n-bg-muted);
|
|
512
|
+
border: 1.5px solid var(--n-border);
|
|
513
|
+
border-radius: 10px;
|
|
514
|
+
padding: 0.7rem 0.9rem;
|
|
515
|
+
font-size: 0.95rem;
|
|
516
|
+
color: var(--n-text);
|
|
517
|
+
font-weight: 600;
|
|
518
|
+
width: 100%;
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
.sa-elegant-input:focus {
|
|
522
|
+
border-color: var(--sa-primary-light);
|
|
523
|
+
outline: none;
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
.sa-input-with-unit {
|
|
527
|
+
position: relative;
|
|
528
|
+
display: flex;
|
|
529
|
+
align-items: center;
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
.sa-unit-tag {
|
|
533
|
+
position: absolute;
|
|
534
|
+
right: 10px;
|
|
535
|
+
font-size: 0.65rem;
|
|
536
|
+
font-weight: 900;
|
|
537
|
+
color: var(--n-text-muted);
|
|
538
|
+
background: var(--n-bg);
|
|
539
|
+
border: 1px solid var(--n-border);
|
|
540
|
+
padding: 2px 6px;
|
|
541
|
+
border-radius: 4px;
|
|
542
|
+
}
|
|
543
|
+
|
|
544
|
+
.sa-unit-tag select {
|
|
545
|
+
color: var(--n-text-muted);
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
.sa-sidebar-results {
|
|
549
|
+
background: var(--n-bg-muted);
|
|
550
|
+
padding: 1.5rem;
|
|
551
|
+
border-radius: var(--sa-radius);
|
|
552
|
+
border: 1px solid var(--n-border);
|
|
553
|
+
text-align: center;
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
.sad-value-large {
|
|
557
|
+
font-size: 3.5rem;
|
|
558
|
+
font-weight: 950;
|
|
559
|
+
letter-spacing: -0.04em;
|
|
560
|
+
color: var(--sa-primary);
|
|
561
|
+
line-height: 1;
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
:global(.theme-dark) .sail-area-calculator .sad-value-large {
|
|
565
|
+
color: var(--n-accent);
|
|
566
|
+
}
|
|
567
|
+
|
|
568
|
+
.sad-label {
|
|
569
|
+
font-size: 0.75rem;
|
|
570
|
+
font-weight: 850;
|
|
571
|
+
color: var(--n-text-muted);
|
|
572
|
+
text-transform: uppercase;
|
|
573
|
+
letter-spacing: 0.15em;
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
.sa-gauge-track {
|
|
577
|
+
height: 4px;
|
|
578
|
+
background: var(--n-border);
|
|
579
|
+
border-radius: 2px;
|
|
580
|
+
margin: 1.5rem 0;
|
|
581
|
+
position: relative;
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
.sa-gauge-indicator {
|
|
585
|
+
position: absolute;
|
|
586
|
+
top: 50%;
|
|
587
|
+
width: 14px;
|
|
588
|
+
height: 14px;
|
|
589
|
+
background: var(--sa-secondary);
|
|
590
|
+
border: 3px solid var(--n-bg-muted);
|
|
591
|
+
border-radius: 50%;
|
|
592
|
+
transform: translate(-50%, -50%);
|
|
593
|
+
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.15);
|
|
594
|
+
transition: left 0.8s cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
.sa-verdict-box {
|
|
598
|
+
background: var(--n-bg);
|
|
599
|
+
padding: 1rem;
|
|
600
|
+
border-radius: 12px;
|
|
601
|
+
border: 1px solid var(--n-border);
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
.sa-verdict-box h4 {
|
|
605
|
+
font-size: 0.95rem;
|
|
606
|
+
margin-bottom: 0.4rem;
|
|
607
|
+
color: var(--n-text);
|
|
608
|
+
}
|
|
609
|
+
|
|
610
|
+
.sa-verdict-box p {
|
|
611
|
+
font-size: 0.8rem;
|
|
612
|
+
line-height: 1.5;
|
|
613
|
+
color: var(--n-text-muted);
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
.sa-stats-summary {
|
|
617
|
+
display: grid;
|
|
618
|
+
grid-template-columns: 1fr 1fr;
|
|
619
|
+
gap: 1rem;
|
|
620
|
+
margin-top: 1.5rem;
|
|
621
|
+
padding-top: 1.5rem;
|
|
622
|
+
border-top: 1px dashed var(--n-border);
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
.sa-stat-item span {
|
|
626
|
+
font-size: 0.75rem;
|
|
627
|
+
color: var(--n-text-muted);
|
|
628
|
+
display: block;
|
|
629
|
+
}
|
|
630
|
+
|
|
631
|
+
.sa-stat-item span:last-child {
|
|
632
|
+
font-size: 1.2rem;
|
|
633
|
+
font-weight: 900;
|
|
634
|
+
color: var(--n-text);
|
|
635
|
+
}
|
|
636
|
+
|
|
637
|
+
.sa-export-btn-premium {
|
|
638
|
+
width: 100%;
|
|
639
|
+
margin-top: 1.5rem;
|
|
640
|
+
padding: 1rem;
|
|
641
|
+
background: var(--sa-primary);
|
|
642
|
+
color: var(--n-primary-on);
|
|
643
|
+
border: none;
|
|
644
|
+
border-radius: 10px;
|
|
645
|
+
font-size: 0.75rem;
|
|
646
|
+
font-weight: 800;
|
|
647
|
+
letter-spacing: 0.05em;
|
|
648
|
+
cursor: pointer;
|
|
649
|
+
display: flex;
|
|
650
|
+
align-items: center;
|
|
651
|
+
justify-content: center;
|
|
652
|
+
gap: 0.5rem;
|
|
653
|
+
}
|
|
654
|
+
|
|
655
|
+
.sa-slider-box {
|
|
656
|
+
background: var(--n-bg-muted);
|
|
657
|
+
padding: 1.5rem;
|
|
658
|
+
border-radius: 12px;
|
|
659
|
+
border: 1px solid var(--n-border);
|
|
660
|
+
}
|
|
661
|
+
|
|
662
|
+
.sa-slider-header {
|
|
663
|
+
display: flex;
|
|
664
|
+
justify-content: space-between;
|
|
665
|
+
align-items: center;
|
|
666
|
+
margin-bottom: 1.5rem;
|
|
667
|
+
}
|
|
668
|
+
|
|
669
|
+
.sa-slider-header label {
|
|
670
|
+
font-size: 0.85rem;
|
|
671
|
+
font-weight: 800;
|
|
672
|
+
color: var(--n-text);
|
|
673
|
+
}
|
|
674
|
+
|
|
675
|
+
.sa-percentage-badge {
|
|
676
|
+
background: var(--sa-primary);
|
|
677
|
+
color: var(--n-primary-on);
|
|
678
|
+
padding: 4px 10px;
|
|
679
|
+
border-radius: 20px;
|
|
680
|
+
font-size: 0.8rem;
|
|
681
|
+
font-weight: 900;
|
|
682
|
+
}
|
|
683
|
+
|
|
684
|
+
.sa-slider-wrapper {
|
|
685
|
+
padding: 0 5px;
|
|
686
|
+
}
|
|
687
|
+
|
|
688
|
+
.sa-modern-slider {
|
|
689
|
+
appearance: none;
|
|
690
|
+
width: 100%;
|
|
691
|
+
height: 6px;
|
|
692
|
+
background: var(--n-border);
|
|
693
|
+
border-radius: 10px;
|
|
694
|
+
outline: none;
|
|
695
|
+
margin: 1rem 0;
|
|
696
|
+
}
|
|
697
|
+
|
|
698
|
+
.sa-modern-slider::-webkit-slider-thumb {
|
|
699
|
+
appearance: none;
|
|
700
|
+
width: 24px;
|
|
701
|
+
height: 24px;
|
|
702
|
+
background: var(--sa-primary);
|
|
703
|
+
border: 4px solid var(--n-bg-muted);
|
|
704
|
+
border-radius: 50%;
|
|
705
|
+
cursor: pointer;
|
|
706
|
+
box-shadow: 0 2px 10px rgba(0, 59, 115, 0.2);
|
|
707
|
+
transition: transform 0.2s;
|
|
708
|
+
}
|
|
709
|
+
|
|
710
|
+
.sa-modern-slider::-webkit-slider-thumb:hover {
|
|
711
|
+
transform: scale(1.1);
|
|
712
|
+
}
|
|
713
|
+
|
|
714
|
+
.sa-modern-slider::-moz-range-thumb {
|
|
715
|
+
width: 24px;
|
|
716
|
+
height: 24px;
|
|
717
|
+
background: var(--sa-primary);
|
|
718
|
+
border: 4px solid var(--n-bg-muted);
|
|
719
|
+
border-radius: 50%;
|
|
720
|
+
cursor: pointer;
|
|
721
|
+
}
|
|
722
|
+
|
|
723
|
+
.sa-modern-slider::-moz-range-track {
|
|
724
|
+
height: 6px;
|
|
725
|
+
background: var(--n-border);
|
|
726
|
+
border-radius: 10px;
|
|
727
|
+
}
|
|
728
|
+
|
|
729
|
+
.sa-slider-ticks {
|
|
730
|
+
display: flex;
|
|
731
|
+
justify-content: space-between;
|
|
732
|
+
margin-top: 0.5rem;
|
|
733
|
+
}
|
|
734
|
+
|
|
735
|
+
.sa-slider-ticks span {
|
|
736
|
+
font-size: 0.65rem;
|
|
737
|
+
font-weight: 700;
|
|
738
|
+
color: var(--n-text-muted);
|
|
739
|
+
}
|
|
740
|
+
|
|
741
|
+
@media (min-width: 1024px) {
|
|
742
|
+
.sail-area-calculator {
|
|
743
|
+
padding: 2rem;
|
|
744
|
+
}
|
|
745
|
+
|
|
746
|
+
.sa-calculator-wrapper {
|
|
747
|
+
display: grid;
|
|
748
|
+
grid-template-columns: 1fr 400px;
|
|
749
|
+
gap: 3rem;
|
|
750
|
+
padding: 2.5rem;
|
|
751
|
+
}
|
|
752
|
+
|
|
753
|
+
.sa-compact-grid {
|
|
754
|
+
grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
|
|
755
|
+
}
|
|
756
|
+
|
|
757
|
+
.sa-main-controls {
|
|
758
|
+
gap: 2.5rem;
|
|
759
|
+
}
|
|
760
|
+
|
|
761
|
+
.sa-sidebar-results {
|
|
762
|
+
position: sticky;
|
|
763
|
+
top: 2rem;
|
|
764
|
+
padding: 2.5rem;
|
|
765
|
+
}
|
|
766
|
+
|
|
767
|
+
.sad-value-large {
|
|
768
|
+
font-size: 5.5rem;
|
|
769
|
+
}
|
|
770
|
+
}
|
|
771
|
+
</style>
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { SailAreaUI, SailAreaLocaleContent } from '../index';
|
|
3
|
+
|
|
4
|
+
const slug = 'segelflaechen-rechner-de';
|
|
5
|
+
const title = 'Segelflächen und SAD Verhältnis Rechner';
|
|
6
|
+
const description =
|
|
7
|
+
'Berechnen Sie die Gesamtsegelfläche und das Verhältnis von Segelfläche zu Verdrängung (SA/D) Ihres Bootes. Nautische Leistungsanalyse basierend auf I-, J-, P- und E-Maßen.';
|
|
8
|
+
|
|
9
|
+
const ui: SailAreaUI = {
|
|
10
|
+
hullSectionLabel: 'Rumpfdaten',
|
|
11
|
+
totalMassLabel: 'Verdrängung',
|
|
12
|
+
rigSystemLabel: 'Rigg',
|
|
13
|
+
intendedUseLabel: 'Verwendungszweck',
|
|
14
|
+
rigGeometryLabel: 'Rigg-Geometrie',
|
|
15
|
+
sailConfigLabel: 'Riggtyp',
|
|
16
|
+
genoaOverlapLabel: 'Genua-Überlappung',
|
|
17
|
+
foqueLabel: 'Fock',
|
|
18
|
+
genovaLabel: 'Genua',
|
|
19
|
+
sadRatioLabel: 'SA/D-Verhältnis',
|
|
20
|
+
totalAreaLabel: 'Gesamtfläche',
|
|
21
|
+
performanceLabel: 'Leistung',
|
|
22
|
+
sloopLabel: 'Slup (ein Mast)',
|
|
23
|
+
cutterLabel: 'Kutter (zwei Vorsegel)',
|
|
24
|
+
ketchLabel: 'Ketsch (zwei Masten)',
|
|
25
|
+
cruiserLabel: 'Fahrtenyacht',
|
|
26
|
+
performanceTypeLabel: 'Leistungstyp',
|
|
27
|
+
racerLabel: 'Regattayacht',
|
|
28
|
+
exportPdfLabel: 'TECHNISCHEN BERICHT ERSTELLEN',
|
|
29
|
+
faqTitle: 'Häufig gestellte Fragen',
|
|
30
|
+
bibliographyTitle: 'Bibliografie',
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
const faq: SailAreaLocaleContent['faq'] = [
|
|
34
|
+
{
|
|
35
|
+
question: 'Warum ist mein Boot bei leichtem Wind so langsam?',
|
|
36
|
+
answer: 'Wahrscheinlich liegt Ihr SA/D-Verhältnis unter 15, was auf ein Boot mit großer Verdrängung und wenig Segelfläche im Verhältnis zum Gewicht hindeutet. Solche Boote benötigen Windstärken über 12 Knoten, um richtig in Fahrt zu kommen.',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
question: 'Sollte ich die Wassertanks leeren, um die Leistung zu steigern?',
|
|
40
|
+
answer: 'Ja, das Boot leichter zu machen verbessert direkt das SA/D-Verhältnis, da die tatsächliche Verdrängung sinkt. Das Leeren von Wasser- und Kraftstofftanks kann die Verdrängung um mehrere hundert Kilogramm reduzieren und das Verhältnis deutlich steigern.',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
question: 'Was ist das "Roach" (Segelausstellung) bei einem Segel?',
|
|
44
|
+
answer: 'Das Roach ist die konvexe Krümmung des Achterlieks (Hinterkante) des Großsegels. Sie bietet zusätzliche Segelfläche über das geometrische Dreieck hinaus, das durch P und E definiert ist. Regattaboote haben oft ein ausgeprägtes Roach mit durchgehenden Latten.',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
question: 'Wie messe ich die reale Verdrängung meines Bootes?',
|
|
48
|
+
answer: 'Die verlässlichste Methode ist die Verwendung der beladenen Verdrängung (mit Ausrüstung, Wasser, Kraftstoff und Crew an Bord). Die Leerverdrängung laut Herstellerhandbuch ist meist optimistisch. Nutzen Sie die tatsächliche Verdrängung unter normalen Segelbedingungen.',
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
question: 'Wo finde ich die Maße I, J, P und E für mein Boot?',
|
|
52
|
+
answer: 'Diese finden Sie im Eignerhandbuch, in Messbriefen (ORC oder IRC) oder in der Dokumentation des Klassenzertifikats. Sie können sie auch direkt an Bord mit einem Maßband messen oder beim Hersteller anfragen.',
|
|
53
|
+
},
|
|
54
|
+
];
|
|
55
|
+
|
|
56
|
+
const howTo: SailAreaLocaleContent['howTo'] = [
|
|
57
|
+
{
|
|
58
|
+
name: 'Wählen Sie den Riggtyp aus',
|
|
59
|
+
text: 'Wählen Sie zwischen Slup (ein Mast), Kutter (Fock und Klüver) oder Ketsch (mit Besanmast). Dies entscheidet darüber, wie die Gesamtsegelfläche berechnet wird.',
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
name: 'Geben Sie die Verdrängung ein',
|
|
63
|
+
text: 'Nutzen Sie die tatsächliche beladene Verdrängung Ihres Bootes in kg oder lbs. Dieser Wert ist entscheidend für die Berechnung des SA/D-Verhältnisses.',
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
name: 'Messen Sie die Rigg-Geometrie',
|
|
67
|
+
text: 'Tragen Sie die Maße P (Masthöhe), E (Großbaum), I (Vordreieckshöhe) und J (Vordreiecksbasis) in Metern oder Fuß ein.',
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
name: 'Passen Sie die Genua-Überlappung an',
|
|
71
|
+
text: 'Nutzen Sie den Schieberegler für die Überlappung: 100% ist eine nicht überlappende Fock, 130% eine Standard-Genua, 155% eine große Genua.',
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
name: 'Interpretieren Sie das SA/D-Verhältnis',
|
|
75
|
+
text: 'Ein Verhältnis zwischen 16 und 20 kennzeichnet eine ausgewogene Fahrtenyacht. Über 20 wird das Boot bei leichtem Wind sehr lebendig, ist aber bei Starkwind anspruchsvoll.',
|
|
76
|
+
},
|
|
77
|
+
];
|
|
78
|
+
|
|
79
|
+
const bibliography: SailAreaLocaleContent['bibliography'] = [
|
|
80
|
+
{
|
|
81
|
+
name: 'Society of Naval Architects and Marine Engineers - SNAME',
|
|
82
|
+
url: 'https://www.sname.org/',
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
name: 'ORC - Offshore Racing Congress',
|
|
86
|
+
url: 'https://orc.org/',
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
name: 'Elvstrom Sailmakers - Sail Manual',
|
|
90
|
+
url: 'https://www.elvstromsails.com/',
|
|
91
|
+
},
|
|
92
|
+
];
|
|
93
|
+
|
|
94
|
+
const seo: SailAreaLocaleContent['seo'] = [
|
|
95
|
+
{
|
|
96
|
+
type: 'title',
|
|
97
|
+
text: 'Segelflächen-Rechner: Kompletter Leitfaden zu Leistung und Kennzahlen',
|
|
98
|
+
level: 2,
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
type: 'paragraph',
|
|
102
|
+
html: 'Die Segelfläche ist der aerodynamische Motor jedes Segelschiffs. Sie bestimmt, wie viel Windenergie das Boot einfangen kann, und definiert zusammen mit der Verdrängung seinen Charakter: Ob es ein gemütlicher Tourer oder eine sensible Rennmaschine ist. Die korrekte Berechnung dieses Wertes ist der erste Schritt zum Verständnis des Verhaltens jeder Segelyacht.',
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
type: 'paragraph',
|
|
106
|
+
html: 'Segeln ist ein ständiges Zusammenspiel zwischen der Windkraft in den Segeln und dem Wasserwiderstand am Rumpf. Das <strong>Verhältnis von Segelfläche zu Verdrängung (SA/D)</strong> fasst diese Beziehung in einer Zahl zusammen, die es erlaubt, Boote jeglicher Länge und Verdrängung direkt miteinander zu vergleichen.',
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
type: 'stats',
|
|
110
|
+
items: [
|
|
111
|
+
{ label: 'Ideales Cruiser-Verhältnis', value: '15-18', icon: 'mdi:anchor' },
|
|
112
|
+
{ label: 'Regattaboote', value: '+24', icon: 'mdi:sailing' },
|
|
113
|
+
{ label: 'Fehlermarge', value: '5-10%', icon: 'mdi:alert-circle-outline' },
|
|
114
|
+
],
|
|
115
|
+
columns: 3,
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
type: 'title',
|
|
119
|
+
text: 'Wofür wird das SA/D-Verhältnis verwendet?',
|
|
120
|
+
level: 3,
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
type: 'paragraph',
|
|
124
|
+
html: 'Das <strong>SA/D-Verhältnis</strong> ist ein Diagnosewerkzeug, das es erlaubt, das Verhalten eines Bootes vorherzusagen, bevor man die Segel setzt. Ein niedriges Verhältnis deutet auf ein robustes und sicheres, aber bei Leichtwind langsames Boot hin; ein hohes Verhältnis bietet Speed und ein Gefühl von Leichtigkeit, erfordert aber mehr Können der Crew, wenn der Wind zunimmt. Keines ist dem anderen überlegen: Alles hängt vom Einsatzzweck ab.',
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
type: 'title',
|
|
128
|
+
text: 'SA/D-Referenztabelle',
|
|
129
|
+
level: 4,
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
type: 'table',
|
|
133
|
+
headers: ['Verhältnis', 'Bootstyp', 'Verhalten auf See'],
|
|
134
|
+
rows: [
|
|
135
|
+
['< 14', 'Schwere Verdränger / Lastensegler', 'Stabil, langsam, braucht konstanten Wind'],
|
|
136
|
+
['14 - 16.5', 'Hochsee-Fahrtenyacht', 'Ausgewogen, komfortabel, gute Amwind-Eigenschaften'],
|
|
137
|
+
['16.5 - 20', 'Standard Fahrtenyacht', 'Lebendig bei Brise, gut beherrschbar, vielseitig'],
|
|
138
|
+
['20 - 25', 'Performance Cruiser / Sport', 'Schnell, fordernd, aufregend bei Leichtwind'],
|
|
139
|
+
['> 25', 'Racer / Extremsport', 'Sehr schnell, nervös, benötigt Profi-Crew'],
|
|
140
|
+
],
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
type: 'title',
|
|
144
|
+
text: 'Technisches Glossar der Maße (I, J, P, E)',
|
|
145
|
+
level: 3,
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
type: 'glossary',
|
|
149
|
+
items: [
|
|
150
|
+
{
|
|
151
|
+
term: 'I (Vordreieckshöhe)',
|
|
152
|
+
definition: 'Vertikaler Abstand vom Deck bis zum Punkt am Mast, an dem das Vorsegel-Fall angeschlagen ist. Definiert die Höhe des Vordreiecks.',
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
term: 'J (Vordreiecksbasis)',
|
|
156
|
+
definition: 'Horizontaler Abstand vom Mast bis zum Vorsteven (Bug). Definiert die Basis des Vordreiecks, an der Vorsegel gefahren werden.',
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
term: 'P (Masthöhe)',
|
|
160
|
+
definition: 'Abstand vom Großbaum bis zum Austritt des Großfalls am Masttopp. Definiert die wirksame Höhe des Großsegels.',
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
term: 'E (Großbaum-Länge)',
|
|
164
|
+
definition: 'Abstand vom Mast bis zum Schothorn des Großsegels am Ende des Baums. Definiert die Basis des Großsegels.',
|
|
165
|
+
},
|
|
166
|
+
],
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
type: 'title',
|
|
170
|
+
text: 'Berechnungen für Segelscheine (Sportseeschifferschein)',
|
|
171
|
+
level: 3,
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
type: 'paragraph',
|
|
175
|
+
html: 'Die Berechnung der Segelfläche und des SA/D-Verhältnisses ist Teil des Lehrplans für fortgeschrittene <strong>Segelscheine</strong>. Das Verständnis der Rigg-Geometrie und ihrer Beziehung zur Verdrängung ist essentiell für Sicherheitsentscheidungen auf See: rechtzeitiges Reffen, Wahl der richtigen Genua oder die Einschätzung des Bootverhaltens vor einer Böenfront.',
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
type: 'tip',
|
|
179
|
+
title: 'Vorgewendete Segel und Sicherheit',
|
|
180
|
+
html: 'Für Blauwassersegeln oder Langstrecken bietet ein SA/D-Verhältnis zwischen 16 und 18 die beste Balance zwischen Speed und Sicherheit. Boote mit einem Verhältnis über 22 müssen oft schon bei Windstärken von 4-5 Beaufort reffen.',
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
type: 'title',
|
|
184
|
+
text: 'Wie beeinflusst die Genua-Überlappung die Leistung?',
|
|
185
|
+
level: 4,
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
type: 'paragraph',
|
|
189
|
+
html: 'Die <strong>Genua</strong> ist das größte Vorsegel, dessen Schothorn hinter dem Mast liegt und das Großsegel "überlappt". Der Prozentsatz der Überlappung gibt an, wie viel länger das Lot auf das Vorliek (LP) im Vergleich zum J-Maß ist. Eine 150%-Genua hat ein LP, das 150% von J entspricht, was eine deutlich größere Fläche als eine einfache Arbeitsfock bietet.',
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
type: 'comparative',
|
|
193
|
+
items: [
|
|
194
|
+
{
|
|
195
|
+
title: 'Dacron (Cruising)',
|
|
196
|
+
description: 'Klassisches Material für Fahrtensegel. Robust und leicht zu pflegen.',
|
|
197
|
+
points: [
|
|
198
|
+
'Hohe Langlebigkeit und UV-Beständigkeit',
|
|
199
|
+
'Geringe Wartungskosten',
|
|
200
|
+
'Höheres Gewicht und Dehnung unter Last',
|
|
201
|
+
'Ideal für Küsten- und Langfahrtsegeln',
|
|
202
|
+
],
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
title: 'Laminate (Racing)',
|
|
206
|
+
description: 'Hochleistungsmaterialien wie Kevlar, Spectra oder Dyneema.',
|
|
207
|
+
highlight: true,
|
|
208
|
+
points: [
|
|
209
|
+
'Minimale Dehnung: maximale aerodynamische Effizienz',
|
|
210
|
+
'Deutlich leichter als Dacron',
|
|
211
|
+
'Höhere Kosten und kürzere Lebensdauer',
|
|
212
|
+
'Essentiell auf Booten mit einem SA/D-Verhältnis > 22',
|
|
213
|
+
],
|
|
214
|
+
},
|
|
215
|
+
],
|
|
216
|
+
columns: 2,
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
type: 'title',
|
|
220
|
+
text: 'Physik des Segelns und Stabilität',
|
|
221
|
+
level: 3,
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
type: 'paragraph',
|
|
225
|
+
html: 'Die Segelfläche erzeugt vortreibende Kraft, aber auch ein <strong>Krängungsmoment</strong>, das das Boot zum Neigen bringt. Die Stabilität wird durch das aufrichtende Moment gemessen, das das Boot dieser Kraft entgegensetzt. Ein hohes SA/D-Verhältnis bei einem Boot mit wenig Ballast kann gefährlich sein, während dasselbe Verhältnis bei einer Yacht mit tiefem, schwerem Kiel völlig unproblematisch ist.',
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
type: 'paragraph',
|
|
229
|
+
html: 'Um die real verfügbare Power zu berechnen, nutzen Schiffbauingenieure oft das <strong>Verdrängungs-Längen-Verhältnis (DLR)</strong> in Kombination mit dem SA/D. Beide Werte zusammen beschreiben präzise, ob ein Boot ein schwerer Verdränger oder ein rasanter Gleiter ist.',
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
type: 'tip',
|
|
233
|
+
title: 'Stabilität und Sicherheit',
|
|
234
|
+
html: 'Bewerten Sie SA/D niemals isoliert. Eine Segelyacht mit einem Verhältnis von 22 und einem Aufrichtwinkel von 90 Grad ist weitaus sicherer als eine mit einem Verhältnis von 18 und einem Winkel von 60 Grad. Konsultieren Sie immer die Stabilitätskurve Ihres Bootes.',
|
|
235
|
+
},
|
|
236
|
+
];
|
|
237
|
+
|
|
238
|
+
const schemas: SailAreaLocaleContent['schemas'] = [
|
|
239
|
+
{
|
|
240
|
+
'@context': 'https://schema.org',
|
|
241
|
+
'@type': 'SoftwareApplication',
|
|
242
|
+
name: title,
|
|
243
|
+
description,
|
|
244
|
+
applicationCategory: 'UtilityApplication',
|
|
245
|
+
operatingSystem: 'Web',
|
|
246
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
247
|
+
} as WithContext<SoftwareApplication>,
|
|
248
|
+
{
|
|
249
|
+
'@context': 'https://schema.org',
|
|
250
|
+
'@type': 'FAQPage',
|
|
251
|
+
mainEntity: faq.map((item) => ({
|
|
252
|
+
'@type': 'Question',
|
|
253
|
+
name: item.question,
|
|
254
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
255
|
+
})),
|
|
256
|
+
} as WithContext<FAQPage>,
|
|
257
|
+
{
|
|
258
|
+
'@context': 'https://schema.org',
|
|
259
|
+
'@type': 'HowTo',
|
|
260
|
+
name: `Bedienungsanleitung: ${title}`,
|
|
261
|
+
step: howTo.map((s) => ({ '@type': 'HowToStep', name: s.name, text: s.text })),
|
|
262
|
+
} as WithContext<HowTo>,
|
|
263
|
+
];
|
|
264
|
+
|
|
265
|
+
export const content: SailAreaLocaleContent = {
|
|
266
|
+
slug,
|
|
267
|
+
title,
|
|
268
|
+
description,
|
|
269
|
+
ui,
|
|
270
|
+
seo,
|
|
271
|
+
faq,
|
|
272
|
+
bibliography,
|
|
273
|
+
howTo,
|
|
274
|
+
schemas,
|
|
275
|
+
};
|