@jjlmoya/utils-nautical 1.14.0 → 1.16.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.
Files changed (125) hide show
  1. package/package.json +1 -1
  2. package/src/pages/[locale]/[slug].astro +28 -12
  3. package/src/tests/locale_completeness.test.ts +1 -31
  4. package/src/tests/shared-test-helpers.ts +56 -0
  5. package/src/tests/tool_exports.test.ts +34 -0
  6. package/src/tool/endurance/bibliography.astro +1 -1
  7. package/src/tool/endurance/bibliography.ts +12 -0
  8. package/src/tool/endurance/entry.ts +2 -2
  9. package/src/tool/endurance/i18n/de.ts +1 -13
  10. package/src/tool/endurance/i18n/en.ts +1 -12
  11. package/src/tool/endurance/i18n/es.ts +1 -13
  12. package/src/tool/endurance/i18n/fr.ts +1 -13
  13. package/src/tool/endurance/i18n/id.ts +1 -13
  14. package/src/tool/endurance/i18n/it.ts +1 -13
  15. package/src/tool/endurance/i18n/ja.ts +1 -13
  16. package/src/tool/endurance/i18n/ko.ts +1 -13
  17. package/src/tool/endurance/i18n/nl.ts +1 -13
  18. package/src/tool/endurance/i18n/pl.ts +1 -13
  19. package/src/tool/endurance/i18n/pt.ts +1 -13
  20. package/src/tool/endurance/i18n/ru.ts +1 -13
  21. package/src/tool/endurance/i18n/sv.ts +1 -13
  22. package/src/tool/endurance/i18n/tr.ts +1 -13
  23. package/src/tool/endurance/i18n/zh.ts +1 -13
  24. package/src/tool/endurance/nautical-endurance-calculator.css +1 -1
  25. package/src/tool/endurance/seo.astro +2 -42
  26. package/src/tool/nauticalConverter/bibliography.astro +1 -1
  27. package/src/tool/nauticalConverter/bibliography.ts +12 -0
  28. package/src/tool/nauticalConverter/entry.ts +2 -2
  29. package/src/tool/nauticalConverter/i18n/de.ts +1 -13
  30. package/src/tool/nauticalConverter/i18n/en.ts +1 -13
  31. package/src/tool/nauticalConverter/i18n/es.ts +1 -13
  32. package/src/tool/nauticalConverter/i18n/fr.ts +1 -13
  33. package/src/tool/nauticalConverter/i18n/id.ts +1 -13
  34. package/src/tool/nauticalConverter/i18n/it.ts +1 -13
  35. package/src/tool/nauticalConverter/i18n/ja.ts +1 -13
  36. package/src/tool/nauticalConverter/i18n/ko.ts +1 -13
  37. package/src/tool/nauticalConverter/i18n/nl.ts +1 -13
  38. package/src/tool/nauticalConverter/i18n/pl.ts +1 -13
  39. package/src/tool/nauticalConverter/i18n/pt.ts +1 -13
  40. package/src/tool/nauticalConverter/i18n/ru.ts +1 -13
  41. package/src/tool/nauticalConverter/i18n/sv.ts +1 -13
  42. package/src/tool/nauticalConverter/i18n/tr.ts +1 -13
  43. package/src/tool/nauticalConverter/i18n/zh.ts +1 -13
  44. package/src/tool/nauticalConverter/nautical-units-converter.css +1 -1
  45. package/src/tool/nauticalConverter/seo.astro +2 -39
  46. package/src/tool/sailArea/bibliography.astro +1 -1
  47. package/src/tool/sailArea/bibliography.ts +16 -0
  48. package/src/tool/sailArea/entry.ts +2 -2
  49. package/src/tool/sailArea/i18n/de.ts +1 -17
  50. package/src/tool/sailArea/i18n/en.ts +1 -17
  51. package/src/tool/sailArea/i18n/es.ts +1 -17
  52. package/src/tool/sailArea/i18n/fr.ts +1 -17
  53. package/src/tool/sailArea/i18n/id.ts +1 -17
  54. package/src/tool/sailArea/i18n/it.ts +1 -17
  55. package/src/tool/sailArea/i18n/ja.ts +1 -17
  56. package/src/tool/sailArea/i18n/ko.ts +1 -17
  57. package/src/tool/sailArea/i18n/nl.ts +1 -17
  58. package/src/tool/sailArea/i18n/pl.ts +1 -17
  59. package/src/tool/sailArea/i18n/pt.ts +1 -17
  60. package/src/tool/sailArea/i18n/ru.ts +1 -17
  61. package/src/tool/sailArea/i18n/sv.ts +1 -17
  62. package/src/tool/sailArea/i18n/tr.ts +1 -17
  63. package/src/tool/sailArea/i18n/zh.ts +1 -17
  64. package/src/tool/sailArea/sail-area-calculator.css +2 -2
  65. package/src/tool/sailArea/seo.astro +2 -39
  66. package/src/tool/speedConverter/bibliography.astro +1 -1
  67. package/src/tool/speedConverter/bibliography.ts +12 -0
  68. package/src/tool/speedConverter/entry.ts +2 -2
  69. package/src/tool/speedConverter/i18n/de.ts +1 -13
  70. package/src/tool/speedConverter/i18n/en.ts +1 -13
  71. package/src/tool/speedConverter/i18n/es.ts +1 -13
  72. package/src/tool/speedConverter/i18n/fr.ts +1 -13
  73. package/src/tool/speedConverter/i18n/id.ts +1 -13
  74. package/src/tool/speedConverter/i18n/it.ts +1 -13
  75. package/src/tool/speedConverter/i18n/ja.ts +1 -13
  76. package/src/tool/speedConverter/i18n/ko.ts +1 -13
  77. package/src/tool/speedConverter/i18n/nl.ts +1 -13
  78. package/src/tool/speedConverter/i18n/pl.ts +1 -13
  79. package/src/tool/speedConverter/i18n/pt.ts +1 -13
  80. package/src/tool/speedConverter/i18n/ru.ts +1 -13
  81. package/src/tool/speedConverter/i18n/sv.ts +1 -13
  82. package/src/tool/speedConverter/i18n/tr.ts +1 -13
  83. package/src/tool/speedConverter/i18n/zh.ts +1 -13
  84. package/src/tool/speedConverter/nautical-speed-converter.css +1 -1
  85. package/src/tool/speedConverter/seo.astro +2 -30
  86. package/src/tool/tideCalculator/bibliography.astro +1 -1
  87. package/src/tool/tideCalculator/bibliography.ts +12 -0
  88. package/src/tool/tideCalculator/entry.ts +2 -2
  89. package/src/tool/tideCalculator/i18n/de.ts +1 -13
  90. package/src/tool/tideCalculator/i18n/en.ts +1 -13
  91. package/src/tool/tideCalculator/i18n/es.ts +1 -13
  92. package/src/tool/tideCalculator/i18n/fr.ts +1 -13
  93. package/src/tool/tideCalculator/i18n/id.ts +1 -13
  94. package/src/tool/tideCalculator/i18n/it.ts +1 -13
  95. package/src/tool/tideCalculator/i18n/ja.ts +1 -13
  96. package/src/tool/tideCalculator/i18n/ko.ts +1 -13
  97. package/src/tool/tideCalculator/i18n/nl.ts +1 -13
  98. package/src/tool/tideCalculator/i18n/pl.ts +1 -13
  99. package/src/tool/tideCalculator/i18n/pt.ts +1 -13
  100. package/src/tool/tideCalculator/i18n/ru.ts +1 -13
  101. package/src/tool/tideCalculator/i18n/sv.ts +1 -13
  102. package/src/tool/tideCalculator/i18n/tr.ts +1 -13
  103. package/src/tool/tideCalculator/i18n/zh.ts +1 -13
  104. package/src/tool/tideCalculator/seo.astro +2 -48
  105. package/src/tool/tideCalculator/tide-height-calculator.css +4 -4
  106. package/src/tool/underKeel/bibliography.astro +1 -1
  107. package/src/tool/underKeel/bibliography.ts +12 -0
  108. package/src/tool/underKeel/entry.ts +2 -2
  109. package/src/tool/underKeel/i18n/de.ts +1 -13
  110. package/src/tool/underKeel/i18n/en.ts +1 -13
  111. package/src/tool/underKeel/i18n/es.ts +1 -13
  112. package/src/tool/underKeel/i18n/fr.ts +1 -13
  113. package/src/tool/underKeel/i18n/id.ts +2 -14
  114. package/src/tool/underKeel/i18n/it.ts +2 -14
  115. package/src/tool/underKeel/i18n/ja.ts +2 -14
  116. package/src/tool/underKeel/i18n/ko.ts +2 -14
  117. package/src/tool/underKeel/i18n/nl.ts +2 -14
  118. package/src/tool/underKeel/i18n/pl.ts +2 -14
  119. package/src/tool/underKeel/i18n/pt.ts +2 -14
  120. package/src/tool/underKeel/i18n/ru.ts +2 -14
  121. package/src/tool/underKeel/i18n/sv.ts +2 -14
  122. package/src/tool/underKeel/i18n/tr.ts +2 -14
  123. package/src/tool/underKeel/i18n/zh.ts +2 -14
  124. package/src/tool/underKeel/seo.astro +2 -33
  125. package/src/tool/underKeel/under-keel-clearance-calculator.css +1 -1
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { TideCalculatorUI, TideCalculatorLocaleContent } from '../index';
3
4
 
@@ -23,8 +24,6 @@ const ui: TideCalculatorUI = {
23
24
  statusUpLabel: 'Auflaufend',
24
25
  statusDownLabel: 'Ablaufend',
25
26
  statusOutOfRange: 'Außerhalb des Bereichs',
26
- faqTitle: 'Häufig gestellte Fragen',
27
- bibliographyTitle: 'Bibliografie',
28
27
  };
29
28
 
30
29
  const faq: TideCalculatorLocaleContent['faq'] = [
@@ -79,17 +78,6 @@ const howTo: TideCalculatorLocaleContent['howTo'] = [
79
78
  },
80
79
  ];
81
80
 
82
- const bibliography: TideCalculatorLocaleContent['bibliography'] = [
83
- {
84
- name: 'Puertos del Estado - Tide Prediction',
85
- url: 'https://portus.puertos.es/#/',
86
- },
87
- {
88
- name: 'Instituto Hidrografico de la Marina',
89
- url: 'https://armada.defensa.gob.es/ihm/',
90
- },
91
- ];
92
-
93
81
  const seo: TideCalculatorLocaleContent['seo'] = [
94
82
  {
95
83
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { TideCalculatorUI, TideCalculatorLocaleContent } from '../index';
3
4
 
@@ -23,8 +24,6 @@ const ui: TideCalculatorUI = {
23
24
  statusUpLabel: 'Rising',
24
25
  statusDownLabel: 'Falling',
25
26
  statusOutOfRange: 'Out of range',
26
- faqTitle: 'Frequently Asked Questions',
27
- bibliographyTitle: 'Bibliography',
28
27
  };
29
28
 
30
29
  const faq: TideCalculatorLocaleContent['faq'] = [
@@ -79,17 +78,6 @@ const howTo: TideCalculatorLocaleContent['howTo'] = [
79
78
  },
80
79
  ];
81
80
 
82
- const bibliography: TideCalculatorLocaleContent['bibliography'] = [
83
- {
84
- name: 'Puertos del Estado - Tide Prediction',
85
- url: 'https://portus.puertos.es/#/',
86
- },
87
- {
88
- name: 'Instituto Hidrografico de la Marina',
89
- url: 'https://armada.defensa.gob.es/ihm/',
90
- },
91
- ];
92
-
93
81
  const seo: TideCalculatorLocaleContent['seo'] = [
94
82
  {
95
83
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { TideCalculatorUI, TideCalculatorLocaleContent } from '../index';
3
4
 
@@ -23,8 +24,6 @@ const ui: TideCalculatorUI = {
23
24
  statusUpLabel: 'Subiendo',
24
25
  statusDownLabel: 'Bajando',
25
26
  statusOutOfRange: 'Fuera de rango',
26
- faqTitle: 'Preguntas Frecuentes',
27
- bibliographyTitle: 'Referencias Bibliograficas',
28
27
  };
29
28
 
30
29
  const faq: TideCalculatorLocaleContent['faq'] = [
@@ -79,17 +78,6 @@ const howTo: TideCalculatorLocaleContent['howTo'] = [
79
78
  },
80
79
  ];
81
80
 
82
- const bibliography: TideCalculatorLocaleContent['bibliography'] = [
83
- {
84
- name: 'Puertos del Estado - Prediccion de Mareas',
85
- url: 'https://portus.puertos.es/#/',
86
- },
87
- {
88
- name: 'Instituto Hidrografico de la Marina',
89
- url: 'https://armada.defensa.gob.es/ihm/',
90
- },
91
- ];
92
-
93
81
  const seo: TideCalculatorLocaleContent['seo'] = [
94
82
  {
95
83
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { TideCalculatorUI, TideCalculatorLocaleContent } from '../index';
3
4
 
@@ -23,8 +24,6 @@ const ui: TideCalculatorUI = {
23
24
  statusUpLabel: 'Montante',
24
25
  statusDownLabel: 'Descendante',
25
26
  statusOutOfRange: 'Hors plage',
26
- faqTitle: 'Questions Frequentes',
27
- bibliographyTitle: 'Bibliographie',
28
27
  };
29
28
 
30
29
  const faq: TideCalculatorLocaleContent['faq'] = [
@@ -79,17 +78,6 @@ const howTo: TideCalculatorLocaleContent['howTo'] = [
79
78
  },
80
79
  ];
81
80
 
82
- const bibliography: TideCalculatorLocaleContent['bibliography'] = [
83
- {
84
- name: 'Puertos del Estado - Prediction des marees',
85
- url: 'https://portus.puertos.es/#/',
86
- },
87
- {
88
- name: 'Instituto Hidrografico de la Marina',
89
- url: 'https://armada.defensa.gob.es/ihm/',
90
- },
91
- ];
92
-
93
81
  const seo: TideCalculatorLocaleContent['seo'] = [
94
82
  {
95
83
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { TideCalculatorUI, TideCalculatorLocaleContent } from '../index';
3
4
 
@@ -23,8 +24,6 @@ const ui: TideCalculatorUI = {
23
24
  statusUpLabel: 'Naik',
24
25
  statusDownLabel: 'Turun',
25
26
  statusOutOfRange: 'Di luar jangkauan',
26
- faqTitle: 'Pertanyaan yang Sering Diajukan',
27
- bibliographyTitle: 'Bibliografi',
28
27
  };
29
28
 
30
29
  const faq: TideCalculatorLocaleContent['faq'] = [
@@ -79,17 +78,6 @@ const howTo: TideCalculatorLocaleContent['howTo'] = [
79
78
  },
80
79
  ];
81
80
 
82
- const bibliography: TideCalculatorLocaleContent['bibliography'] = [
83
- {
84
- name: 'Puertos del Estado - Tide Prediction',
85
- url: 'https://portus.puertos.es/#/',
86
- },
87
- {
88
- name: 'Instituto Hidrografico de la Marina',
89
- url: 'https://armada.defensa.gob.es/ihm/',
90
- },
91
- ];
92
-
93
81
  const seo: TideCalculatorLocaleContent['seo'] = [
94
82
  {
95
83
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { TideCalculatorUI, TideCalculatorLocaleContent } from '../index';
3
4
 
@@ -23,8 +24,6 @@ const ui: TideCalculatorUI = {
23
24
  statusUpLabel: 'Crescente',
24
25
  statusDownLabel: 'Calante',
25
26
  statusOutOfRange: 'Fuori intervallo',
26
- faqTitle: 'Domande Frequenti',
27
- bibliographyTitle: 'Bibliografia',
28
27
  };
29
28
 
30
29
  const faq: TideCalculatorLocaleContent['faq'] = [
@@ -79,17 +78,6 @@ const howTo: TideCalculatorLocaleContent['howTo'] = [
79
78
  },
80
79
  ];
81
80
 
82
- const bibliography: TideCalculatorLocaleContent['bibliography'] = [
83
- {
84
- name: 'Puertos del Estado - Tide Prediction',
85
- url: 'https://portus.puertos.es/#/',
86
- },
87
- {
88
- name: 'Instituto Hidrografico de la Marina',
89
- url: 'https://armada.defensa.gob.es/ihm/',
90
- },
91
- ];
92
-
93
81
  const seo: TideCalculatorLocaleContent['seo'] = [
94
82
  {
95
83
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { TideCalculatorUI, TideCalculatorLocaleContent } from '../index';
3
4
 
@@ -23,8 +24,6 @@ const ui: TideCalculatorUI = {
23
24
  statusUpLabel: '上げ潮',
24
25
  statusDownLabel: '下げ潮',
25
26
  statusOutOfRange: '範囲外',
26
- faqTitle: 'よくある質問',
27
- bibliographyTitle: '参考文献',
28
27
  };
29
28
 
30
29
  const faq: TideCalculatorLocaleContent['faq'] = [
@@ -79,17 +78,6 @@ const howTo: TideCalculatorLocaleContent['howTo'] = [
79
78
  },
80
79
  ];
81
80
 
82
- const bibliography: TideCalculatorLocaleContent['bibliography'] = [
83
- {
84
- name: 'Puertos del Estado - Tide Prediction',
85
- url: 'https://portus.puertos.es/#/',
86
- },
87
- {
88
- name: 'Instituto Hidrografico de la Marina',
89
- url: 'https://armada.defensa.gob.es/ihm/',
90
- },
91
- ];
92
-
93
81
  const seo: TideCalculatorLocaleContent['seo'] = [
94
82
  {
95
83
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { TideCalculatorUI, TideCalculatorLocaleContent } from '../index';
3
4
 
@@ -23,8 +24,6 @@ const ui: TideCalculatorUI = {
23
24
  statusUpLabel: '밀물',
24
25
  statusDownLabel: '썰물',
25
26
  statusOutOfRange: '범위 초과',
26
- faqTitle: '자주 묻는 질문',
27
- bibliographyTitle: '참고 문헌',
28
27
  };
29
28
 
30
29
  const faq: TideCalculatorLocaleContent['faq'] = [
@@ -79,17 +78,6 @@ const howTo: TideCalculatorLocaleContent['howTo'] = [
79
78
  },
80
79
  ];
81
80
 
82
- const bibliography: TideCalculatorLocaleContent['bibliography'] = [
83
- {
84
- name: 'Puertos del Estado - Tide Prediction',
85
- url: 'https://portus.puertos.es/#/',
86
- },
87
- {
88
- name: 'Instituto Hidrografico de la Marina',
89
- url: 'https://armada.defensa.gob.es/ihm/',
90
- },
91
- ];
92
-
93
81
  const seo: TideCalculatorLocaleContent['seo'] = [
94
82
  {
95
83
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { TideCalculatorUI, TideCalculatorLocaleContent } from '../index';
3
4
 
@@ -23,8 +24,6 @@ const ui: TideCalculatorUI = {
23
24
  statusUpLabel: 'Opkomend',
24
25
  statusDownLabel: 'Afnemend',
25
26
  statusOutOfRange: 'Buiten bereik',
26
- faqTitle: 'Veelgestelde Vragen',
27
- bibliographyTitle: 'Bibliografie',
28
27
  };
29
28
 
30
29
  const faq: TideCalculatorLocaleContent['faq'] = [
@@ -79,17 +78,6 @@ const howTo: TideCalculatorLocaleContent['howTo'] = [
79
78
  },
80
79
  ];
81
80
 
82
- const bibliography: TideCalculatorLocaleContent['bibliography'] = [
83
- {
84
- name: 'Puertos del Estado - Tide Prediction',
85
- url: 'https://portus.puertos.es/#/',
86
- },
87
- {
88
- name: 'Instituto Hidrografico de la Marina',
89
- url: 'https://armada.defensa.gob.es/ihm/',
90
- },
91
- ];
92
-
93
81
  const seo: TideCalculatorLocaleContent['seo'] = [
94
82
  {
95
83
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { TideCalculatorUI, TideCalculatorLocaleContent } from '../index';
3
4
 
@@ -23,8 +24,6 @@ const ui: TideCalculatorUI = {
23
24
  statusUpLabel: 'Wznoszenie',
24
25
  statusDownLabel: 'Opadanie',
25
26
  statusOutOfRange: 'Poza zakresem',
26
- faqTitle: 'Często Zadawane Pytania',
27
- bibliographyTitle: 'Bibliografia',
28
27
  };
29
28
 
30
29
  const faq: TideCalculatorLocaleContent['faq'] = [
@@ -79,17 +78,6 @@ const howTo: TideCalculatorLocaleContent['howTo'] = [
79
78
  },
80
79
  ];
81
80
 
82
- const bibliography: TideCalculatorLocaleContent['bibliography'] = [
83
- {
84
- name: 'Puertos del Estado - Tide Prediction',
85
- url: 'https://portus.puertos.es/#/',
86
- },
87
- {
88
- name: 'Instituto Hidrografico de la Marina',
89
- url: 'https://armada.defensa.gob.es/ihm/',
90
- },
91
- ];
92
-
93
81
  const seo: TideCalculatorLocaleContent['seo'] = [
94
82
  {
95
83
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { TideCalculatorUI, TideCalculatorLocaleContent } from '../index';
3
4
 
@@ -23,8 +24,6 @@ const ui: TideCalculatorUI = {
23
24
  statusUpLabel: 'A encher',
24
25
  statusDownLabel: 'A vazar',
25
26
  statusOutOfRange: 'Fora do intervalo',
26
- faqTitle: 'Perguntas Frequentes',
27
- bibliographyTitle: 'Bibliografia',
28
27
  };
29
28
 
30
29
  const faq: TideCalculatorLocaleContent['faq'] = [
@@ -79,17 +78,6 @@ const howTo: TideCalculatorLocaleContent['howTo'] = [
79
78
  },
80
79
  ];
81
80
 
82
- const bibliography: TideCalculatorLocaleContent['bibliography'] = [
83
- {
84
- name: 'Puertos del Estado - Tide Prediction',
85
- url: 'https://portus.puertos.es/#/',
86
- },
87
- {
88
- name: 'Instituto Hidrografico de la Marina',
89
- url: 'https://armada.defensa.gob.es/ihm/',
90
- },
91
- ];
92
-
93
81
  const seo: TideCalculatorLocaleContent['seo'] = [
94
82
  {
95
83
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { TideCalculatorUI, TideCalculatorLocaleContent } from '../index';
3
4
 
@@ -23,8 +24,6 @@ const ui: TideCalculatorUI = {
23
24
  statusUpLabel: 'Прилив',
24
25
  statusDownLabel: 'Отлив',
25
26
  statusOutOfRange: 'Вне диапазона',
26
- faqTitle: 'Часто задаваемые вопросы',
27
- bibliographyTitle: 'Библиография',
28
27
  };
29
28
 
30
29
  const faq: TideCalculatorLocaleContent['faq'] = [
@@ -79,17 +78,6 @@ const howTo: TideCalculatorLocaleContent['howTo'] = [
79
78
  },
80
79
  ];
81
80
 
82
- const bibliography: TideCalculatorLocaleContent['bibliography'] = [
83
- {
84
- name: 'Puertos del Estado - Tide Prediction',
85
- url: 'https://portus.puertos.es/#/',
86
- },
87
- {
88
- name: 'Instituto Hidrografico de la Marina',
89
- url: 'https://armada.defensa.gob.es/ihm/',
90
- },
91
- ];
92
-
93
81
  const seo: TideCalculatorLocaleContent['seo'] = [
94
82
  {
95
83
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { TideCalculatorUI, TideCalculatorLocaleContent } from '../index';
3
4
 
@@ -23,8 +24,6 @@ const ui: TideCalculatorUI = {
23
24
  statusUpLabel: 'Stigande',
24
25
  statusDownLabel: 'Sjunkande',
25
26
  statusOutOfRange: 'Utanför intervallet',
26
- faqTitle: 'Vanliga frågor',
27
- bibliographyTitle: 'Bibliografi',
28
27
  };
29
28
 
30
29
  const faq: TideCalculatorLocaleContent['faq'] = [
@@ -79,17 +78,6 @@ const howTo: TideCalculatorLocaleContent['howTo'] = [
79
78
  },
80
79
  ];
81
80
 
82
- const bibliography: TideCalculatorLocaleContent['bibliography'] = [
83
- {
84
- name: 'Puertos del Estado - Tide Prediction',
85
- url: 'https://portus.puertos.es/#/',
86
- },
87
- {
88
- name: 'Instituto Hidrografico de la Marina',
89
- url: 'https://armada.defensa.gob.es/ihm/',
90
- },
91
- ];
92
-
93
81
  const seo: TideCalculatorLocaleContent['seo'] = [
94
82
  {
95
83
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { TideCalculatorUI, TideCalculatorLocaleContent } from '../index';
3
4
 
@@ -23,8 +24,6 @@ const ui: TideCalculatorUI = {
23
24
  statusUpLabel: 'Yükseliyor',
24
25
  statusDownLabel: 'Alçalıyor',
25
26
  statusOutOfRange: 'Aralık dışı',
26
- faqTitle: 'Sıkça Sorulan Sorular',
27
- bibliographyTitle: 'Kaynakça',
28
27
  };
29
28
 
30
29
  const faq: TideCalculatorLocaleContent['faq'] = [
@@ -79,17 +78,6 @@ const howTo: TideCalculatorLocaleContent['howTo'] = [
79
78
  },
80
79
  ];
81
80
 
82
- const bibliography: TideCalculatorLocaleContent['bibliography'] = [
83
- {
84
- name: 'Puertos del Estado - Tide Prediction',
85
- url: 'https://portus.puertos.es/#/',
86
- },
87
- {
88
- name: 'Instituto Hidrografico de la Marina',
89
- url: 'https://armada.defensa.gob.es/ihm/',
90
- },
91
- ];
92
-
93
81
  const seo: TideCalculatorLocaleContent['seo'] = [
94
82
  {
95
83
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { TideCalculatorUI, TideCalculatorLocaleContent } from '../index';
3
4
 
@@ -23,8 +24,6 @@ const ui: TideCalculatorUI = {
23
24
  statusUpLabel: '上涨',
24
25
  statusDownLabel: '下降',
25
26
  statusOutOfRange: '超出范围',
26
- faqTitle: '常见问题',
27
- bibliographyTitle: '参考文献统计',
28
27
  };
29
28
 
30
29
  const faq: TideCalculatorLocaleContent['faq'] = [
@@ -79,17 +78,6 @@ const howTo: TideCalculatorLocaleContent['howTo'] = [
79
78
  },
80
79
  ];
81
80
 
82
- const bibliography: TideCalculatorLocaleContent['bibliography'] = [
83
- {
84
- name: 'Puertos del Estado - Tide Prediction',
85
- url: 'https://portus.puertos.es/#/',
86
- },
87
- {
88
- name: 'Instituto Hidrografico de la Marina',
89
- url: 'https://armada.defensa.gob.es/ihm/',
90
- },
91
- ];
92
-
93
81
  const seo: TideCalculatorLocaleContent['seo'] = [
94
82
  {
95
83
  type: 'title',
@@ -1,16 +1,5 @@
1
1
  ---
2
- import {
3
- SEOTitle,
4
- SEOTable,
5
- SEOTip,
6
- SEOCard,
7
- SEOStats,
8
- SEOGlossary,
9
- SEOProsCons,
10
- SEOSummary,
11
- SEODiagnostic,
12
- SEOArticle,
13
- } from '@jjlmoya/utils-shared';
2
+ import { SEORenderer } from '@jjlmoya/utils-shared';
14
3
  import { tideCalculator } from './index';
15
4
  import type { KnownLocale } from '../../types';
16
5
 
@@ -21,41 +10,6 @@ interface Props {
21
10
  const { locale = 'es' } = Astro.props;
22
11
  const content = await tideCalculator.i18n[locale]?.();
23
12
  if (!content) return null;
24
-
25
- const { seo } = content;
26
13
  ---
27
14
 
28
- <SEOArticle>
29
- {seo.map((section: any) => {
30
- switch (section.type) {
31
- case 'summary':
32
- return <SEOSummary title={section.title} items={section.items} />;
33
- case 'title':
34
- return <SEOTitle title={section.text} level={section.level || 2} />;
35
- case 'paragraph':
36
- return <p set:html={section.html} />;
37
- case 'stats':
38
- return <SEOStats stats={section.items} columns={section.columns} />;
39
- case 'card':
40
- return <SEOCard title={section.title} icon={section.icon}><Fragment set:html={section.html} /></SEOCard>;
41
- case 'tip':
42
- return <SEOTip title={section.title}><Fragment set:html={section.html} /></SEOTip>;
43
- case 'table':
44
- return (
45
- <SEOTable headers={section.headers}>
46
- {section.rows.map((row: string[]) => (
47
- <tr>{row.map((cell: string) => <td set:html={cell} />)}</tr>
48
- ))}
49
- </SEOTable>
50
- );
51
- case 'proscons':
52
- return <SEOProsCons title={section.title} items={section.items} />;
53
- case 'diagnostic':
54
- return <SEODiagnostic title={section.title} icon={section.icon} type={section.variant} badge={section.badge}><Fragment set:html={section.html} /></SEODiagnostic>;
55
- case 'glossary':
56
- return <SEOGlossary items={section.items} />;
57
- default:
58
- return null;
59
- }
60
- })}
61
- </SEOArticle>
15
+ {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
@@ -21,7 +21,7 @@
21
21
  margin: 0 auto;
22
22
  }
23
23
 
24
- :global(.theme-dark) .tide-calculator {
24
+ .theme-dark .tide-calculator {
25
25
  --n-bg: #0f172a;
26
26
  --n-bg-muted: #1e293b;
27
27
  --n-text: #f8fafc;
@@ -78,7 +78,7 @@
78
78
  opacity: 0.9;
79
79
  }
80
80
 
81
- :global(#invert-btn) {
81
+ #invert-btn {
82
82
  background: rgba(255, 255, 255, 0.1);
83
83
  border: none;
84
84
  color: var(--n-primary-on);
@@ -92,7 +92,7 @@
92
92
  transition: background 0.2s;
93
93
  }
94
94
 
95
- :global(#invert-btn:hover) {
95
+ #invert-btn:hover {
96
96
  background: rgba(255, 255, 255, 0.2);
97
97
  }
98
98
 
@@ -197,7 +197,7 @@
197
197
  margin: 0.5rem 0;
198
198
  }
199
199
 
200
- :global(#target-value) {
200
+ #target-value {
201
201
  font-size: 4rem;
202
202
  font-weight: 800;
203
203
  color: var(--n-accent);
@@ -11,4 +11,4 @@ const { locale = 'es' } = Astro.props;
11
11
  const content = await underKeel.i18n[locale]?.();
12
12
  ---
13
13
 
14
- {content && <SharedBibliography links={content.bibliography} title={content.ui.bibliographyTitle} />}
14
+ {content && <SharedBibliography links={content.bibliography} />}
@@ -0,0 +1,12 @@
1
+ import type { BibliographyEntry } from '../../types';
2
+
3
+ export const bibliography: BibliographyEntry[] = [
4
+ {
5
+ name: 'Ministerio de Transportes - Recreational Boating',
6
+ url: 'https://www.mitma.gob.es/marina-mercante/nautica-de-recreo/',
7
+ },
8
+ {
9
+ name: 'Portos de Galicia - Tide Tables',
10
+ url: 'https://portosdegalicia.gal/es/taboa-de-mareas',
11
+ },
12
+ ];
@@ -17,8 +17,6 @@ export interface UnderKeelUI {
17
17
  statusFromLabel: string;
18
18
  statusUntilLabel: string;
19
19
  bottomLabel: string;
20
- faqTitle: string;
21
- bibliographyTitle: string;
22
20
  }
23
21
 
24
22
  export type UnderKeelLocaleContent = ToolLocaleContent<UnderKeelUI>;
@@ -47,3 +45,5 @@ export const underKeel: NauticalToolEntry<UnderKeelUI> = {
47
45
  zh: () => import('./i18n/zh').then((m) => m.content),
48
46
  },
49
47
  };
48
+
49
+ export { bibliography } from './bibliography';
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { UnderKeelUI, UnderKeelLocaleContent } from '../index';
3
4
 
@@ -22,8 +23,6 @@ const ui: UnderKeelUI = {
22
23
  statusFromLabel: 'Durchfahrt ab:',
23
24
  statusUntilLabel: 'Durchfahrt bis:',
24
25
  bottomLabel: 'GRUND',
25
- faqTitle: 'Häufig gestellte Fragen',
26
- bibliographyTitle: 'Bibliografie',
27
26
  };
28
27
 
29
28
  const faq: UnderKeelLocaleContent['faq'] = [
@@ -72,17 +71,6 @@ const howTo: UnderKeelLocaleContent['howTo'] = [
72
71
  },
73
72
  ];
74
73
 
75
- const bibliography: UnderKeelLocaleContent['bibliography'] = [
76
- {
77
- name: 'Ministerio de Transportes - Recreational Boating',
78
- url: 'https://www.mitma.gob.es/marina-mercante/nautica-de-recreo/',
79
- },
80
- {
81
- name: 'Portos de Galicia - Tide Tables',
82
- url: 'https://portosdegalicia.gal/es/taboa-de-mareas',
83
- },
84
- ];
85
-
86
74
  const seo: UnderKeelLocaleContent['seo'] = [
87
75
  {
88
76
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { UnderKeelUI, UnderKeelLocaleContent } from '../index';
3
4
 
@@ -22,8 +23,6 @@ const ui: UnderKeelUI = {
22
23
  statusFromLabel: 'Passage from:',
23
24
  statusUntilLabel: 'Passage until:',
24
25
  bottomLabel: 'BOTTOM',
25
- faqTitle: 'Frequently Asked Questions',
26
- bibliographyTitle: 'Bibliography',
27
26
  };
28
27
 
29
28
  const faq: UnderKeelLocaleContent['faq'] = [
@@ -72,17 +71,6 @@ const howTo: UnderKeelLocaleContent['howTo'] = [
72
71
  },
73
72
  ];
74
73
 
75
- const bibliography: UnderKeelLocaleContent['bibliography'] = [
76
- {
77
- name: 'Ministerio de Transportes - Recreational Boating',
78
- url: 'https://www.mitma.gob.es/marina-mercante/nautica-de-recreo/',
79
- },
80
- {
81
- name: 'Portos de Galicia - Tide Tables',
82
- url: 'https://portosdegalicia.gal/es/taboa-de-mareas',
83
- },
84
- ];
85
-
86
74
  const seo: UnderKeelLocaleContent['seo'] = [
87
75
  {
88
76
  type: 'title',