@jjlmoya/utils-science 1.20.0 → 1.21.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 (89) hide show
  1. package/package.json +2 -1
  2. package/src/category/i18n/de.ts +1 -1
  3. package/src/category/i18n/fr.ts +6 -6
  4. package/src/category/i18n/ru.ts +1 -1
  5. package/src/category/index.ts +3 -1
  6. package/src/category/seo.astro +2 -2
  7. package/src/entries.ts +5 -1
  8. package/src/index.ts +2 -0
  9. package/src/pages/[locale]/[slug].astro +5 -4
  10. package/src/tests/locale_completeness.test.ts +2 -2
  11. package/src/tests/no_en_dash.test.ts +70 -0
  12. package/src/tests/seo_length.test.ts +5 -3
  13. package/src/tests/title_quality.test.ts +1 -1
  14. package/src/tests/tool_validation.test.ts +2 -2
  15. package/src/tool/asteroid-impact/bibliography.astro +2 -2
  16. package/src/tool/asteroid-impact/component.astro +16 -9
  17. package/src/tool/asteroid-impact/i18n/fr.ts +6 -6
  18. package/src/tool/asteroid-impact/i18n/ru.ts +4 -4
  19. package/src/tool/asteroid-impact/index.ts +1 -0
  20. package/src/tool/asteroid-impact/script.ts +13 -7
  21. package/src/tool/cellular-renewal/bibliography.astro +2 -2
  22. package/src/tool/cellular-renewal/i18n/fr.ts +13 -13
  23. package/src/tool/cellular-renewal/i18n/ru.ts +17 -17
  24. package/src/tool/cellular-renewal/i18n/zh.ts +9 -9
  25. package/src/tool/cellular-renewal/index.ts +1 -0
  26. package/src/tool/colony-counter/bibliography.astro +2 -2
  27. package/src/tool/colony-counter/i18n/ru.ts +5 -5
  28. package/src/tool/colony-counter/i18n/zh.ts +2 -2
  29. package/src/tool/colony-counter/index.ts +1 -0
  30. package/src/tool/cosmic-inflation/bibliography.astro +14 -0
  31. package/src/tool/cosmic-inflation/bibliography.ts +12 -0
  32. package/src/tool/cosmic-inflation/component.astro +270 -0
  33. package/src/tool/cosmic-inflation/cosmic-inflation-calculator.css +277 -0
  34. package/src/tool/cosmic-inflation/entry.ts +26 -0
  35. package/src/tool/cosmic-inflation/i18n/de.ts +188 -0
  36. package/src/tool/cosmic-inflation/i18n/en.ts +188 -0
  37. package/src/tool/cosmic-inflation/i18n/es.ts +168 -0
  38. package/src/tool/cosmic-inflation/i18n/fr.ts +188 -0
  39. package/src/tool/cosmic-inflation/i18n/id.ts +188 -0
  40. package/src/tool/cosmic-inflation/i18n/it.ts +188 -0
  41. package/src/tool/cosmic-inflation/i18n/ja.ts +188 -0
  42. package/src/tool/cosmic-inflation/i18n/ko.ts +188 -0
  43. package/src/tool/cosmic-inflation/i18n/nl.ts +188 -0
  44. package/src/tool/cosmic-inflation/i18n/pl.ts +188 -0
  45. package/src/tool/cosmic-inflation/i18n/pt.ts +188 -0
  46. package/src/tool/cosmic-inflation/i18n/ru.ts +188 -0
  47. package/src/tool/cosmic-inflation/i18n/sv.ts +188 -0
  48. package/src/tool/cosmic-inflation/i18n/tr.ts +188 -0
  49. package/src/tool/cosmic-inflation/i18n/zh.ts +188 -0
  50. package/src/tool/cosmic-inflation/index.ts +11 -0
  51. package/src/tool/cosmic-inflation/logic/CosmicInflationEngine.ts +21 -0
  52. package/src/tool/cosmic-inflation/seo.astro +15 -0
  53. package/src/tool/microwave-detector/bibliography.astro +2 -2
  54. package/src/tool/microwave-detector/component.astro +9 -7
  55. package/src/tool/microwave-detector/i18n/fr.ts +4 -4
  56. package/src/tool/microwave-detector/i18n/ru.ts +18 -18
  57. package/src/tool/microwave-detector/i18n/zh.ts +10 -10
  58. package/src/tool/microwave-detector/index.ts +1 -0
  59. package/src/tool/microwave-detector/logic/MicrowaveEngine.ts +5 -1
  60. package/src/tool/simulation-probability/bibliography.astro +2 -2
  61. package/src/tool/simulation-probability/i18n/fr.ts +5 -5
  62. package/src/tool/simulation-probability/i18n/ru.ts +7 -7
  63. package/src/tool/simulation-probability/i18n/zh.ts +4 -4
  64. package/src/tool/simulation-probability/index.ts +1 -0
  65. package/src/tool/temperature-timeline/bibliography.astro +14 -0
  66. package/src/tool/temperature-timeline/bibliography.ts +12 -0
  67. package/src/tool/temperature-timeline/component.astro +289 -0
  68. package/src/tool/temperature-timeline/entry.ts +26 -0
  69. package/src/tool/temperature-timeline/i18n/de.ts +213 -0
  70. package/src/tool/temperature-timeline/i18n/en.ts +213 -0
  71. package/src/tool/temperature-timeline/i18n/es.ts +178 -0
  72. package/src/tool/temperature-timeline/i18n/fr.ts +213 -0
  73. package/src/tool/temperature-timeline/i18n/id.ts +213 -0
  74. package/src/tool/temperature-timeline/i18n/it.ts +213 -0
  75. package/src/tool/temperature-timeline/i18n/ja.ts +213 -0
  76. package/src/tool/temperature-timeline/i18n/ko.ts +213 -0
  77. package/src/tool/temperature-timeline/i18n/nl.ts +213 -0
  78. package/src/tool/temperature-timeline/i18n/pl.ts +213 -0
  79. package/src/tool/temperature-timeline/i18n/pt.ts +213 -0
  80. package/src/tool/temperature-timeline/i18n/ru.ts +213 -0
  81. package/src/tool/temperature-timeline/i18n/sv.ts +213 -0
  82. package/src/tool/temperature-timeline/i18n/tr.ts +213 -0
  83. package/src/tool/temperature-timeline/i18n/zh.ts +213 -0
  84. package/src/tool/temperature-timeline/index.ts +11 -0
  85. package/src/tool/temperature-timeline/logic/TemperatureTimelineEngine.ts +58 -0
  86. package/src/tool/temperature-timeline/planet-temperature-timeline.css +158 -0
  87. package/src/tool/temperature-timeline/seo.astro +15 -0
  88. package/src/tools.ts +4 -0
  89. package/src/types.ts +1 -1
@@ -0,0 +1,213 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+
4
+ const slug = 'planet-sicaklik-kronolojisi';
5
+ const description = 'Jeolojik donemler boyunca Dunyanin ortalama sicaklik gecmisini kesfedin.';
6
+ const title = 'Gezegen Ortalama Sicaklik Kronolojisi';
7
+
8
+ const howTo = [
9
+ {
10
+ name: 'Bir donem secin',
11
+ text: 'Olcek cetvelindeki bir celtige tiklayin.',
12
+ },
13
+ {
14
+ name: 'Sicakligi kontrol edin',
15
+ text: 'Kuresel ortalama sicakligi okuyun.',
16
+ },
17
+ {
18
+ name: 'Gezegeni gozlemleyin',
19
+ text: 'Tuvalin termal duruma nasil tepki verdigini izleyin.',
20
+ },
21
+ ];
22
+
23
+ const faq = [
24
+ {
25
+ "question": "Dunya gecmiste bugunden daha mi sicakti?",
26
+ "answer": "Evet, Dunya bugunkunden cok daha sicak iklimler yasamistir. Mezozoyik (dinozorlar cagi) ve erken Eosen doneminde, gezegen kutup buzullari olmayan bir sera durumundaydi ve kuresel ortalama sicakliklar bugunku ortalamanin yaklasik 7 ila 8 derece uzerinde, 22 dereceyi asiyordu. Ancak bu donemlere gecisler milyonlarca yillik zaman dilimlerinde gerceklesti ve bu da evrimsel adaptasyona olanak tanidi."
27
+ },
28
+ {
29
+ "question": "Kartopu Dunya fenomenine ne sebep oldu?",
30
+ "answer": "Kartopu Dunya (kuresel buzul cagi) esas olarak Neoproterozoyik donemde (yaklasik 700 milyon yil once) meydana geldi. Rodinya superkıtasının parcalanmasının ardından silikat kayaclarinin hizlanan kimyasal asinmasi nedeniyle sera gazlarindaki asiri azalma ile tetiklendi. Buzullar kutuplardan ekvatora kadar uzanarak gunes radyasyonunu yansitti (albedo etkisi) ve gezegeni milyonlarca yillik volkanik CO2 birikiminden sonra kirilabilen kuresel bir donma dongusune soktu."
31
+ },
32
+ {
33
+ "question": "Dunya uzun vadede sicakligini nasil duzenler?",
34
+ "answer": "Dunya, esas olarak levha tektonigi ve silikat asinmasi ile duzenlenen, jeolojik karbon dongusu tarafından kontrol edilen dogal bir termostata sahiptir. Gezegen isindiginda, asit yagmuru silikat kayaclariyla daha hizli reaksiyona girerek CO2'yi atmosferden ceker ve okyanus tabanina karbonat olarak depolayarak sera etkisini azaltir. Gezegen sogursa, asinma azalir ancak volkanik aktivite CO2 salmaya devam ederek gezegeni yavasca tekrar isitir."
35
+ },
36
+ {
37
+ "question": "Antroposen iklim degisikliginin jeolojik gecmistten farkı nedir?",
38
+ "answer": "Temel fark degisimin hizinda yatmaktadir. Jeolojik gecmisteki dogal iklim gecisleri genellikle on binlerce veya milyonlarca yil boyunca gerceklesirken (biyolojik goc ve evrim icin pay birakirken), Antroposen isinmasi onlarca yil icinde gerceklesmektedir. Bu termal degisim orani, belgelenmis hemen hemen her onceki olaydan ustel olarak daha hizlidir, mevcut biosferin uyum kapasitesini asmakta ve hizlanmis kitlesel yok olusa neden olmaktadir."
39
+ },
40
+ {
41
+ "question": "Paleosen-Eosen Termal Maksimumu (PETM) neydi?",
42
+ "answer": "PETM, yaklasik 56 milyon yil once meydana gelen asiri bir kuresel isinma olayıdır. Atmosfere hizli ve kitlesel bir karbon enjeksiyonundan kaynaklanmıstir (muhtemelen okyanus metan hidratlarinin salinmasindan veya Kuzey Atlantik volkanizmasindan), kuresel sicakliklari birkaç bin yilda 5 ila 8 derece artirmistir. Modern iklim degisikligi icin en iyi jeolojik analog olarak kabul edilir ve okyanus asitlenmesine ve bentik organizmalarin kitlesel yok olusuna yol acmistir."
43
+ }
44
+ ];
45
+
46
+ export const content: ToolLocaleContent = {
47
+ slug,
48
+ title,
49
+ description,
50
+ ui: {
51
+ title: 'Dunyanin Sicaklik Kronolojisi',
52
+ sub: 'Dunyanin jeolojik iklim donemlerini kesfedin',
53
+ ageLabel: 'Yas:',
54
+ tempLabel: 'Ortalama Sicaklik:',
55
+ selectPrompt: 'Jeolojik bir donem secin.',
56
+ epoch_archean_name: 'Arkeyan Devir',
57
+ epoch_archean_age: '4,0 ila 2,5 milyar yil once',
58
+ epoch_archean_desc: 'Metan ve CO2 zengini asiri sicak dunya.',
59
+ epoch_proterozoic_name: 'Proterozoyik Devir',
60
+ epoch_proterozoic_age: '2,5 milyar ila 541 milyon yil once',
61
+ epoch_proterozoic_desc: 'Oksijen artisi Huron buzul cagina yol acti.',
62
+ epoch_paleozoic_name: 'Paleozoyik Zaman',
63
+ epoch_paleozoic_age: '541 ila 252 milyon yil once',
64
+ epoch_paleozoic_desc: 'Denizlerde yasam patlamasi ve karaya gecis.',
65
+ epoch_mesozoic_name: 'Mezozoyik Zaman',
66
+ epoch_mesozoic_age: '252 ila 66 milyon yil once',
67
+ epoch_mesozoic_desc: 'Sera kosullarinin hakim oldugu dinozorlar cagi.',
68
+ epoch_cenozoic_name: 'Senozoyik Zaman',
69
+ epoch_cenozoic_age: '66 milyon yil once ila Gunumuz',
70
+ epoch_cenozoic_desc: 'Kuvaterner buzul caglarina giden soguma.',
71
+ epoch_anthropocene_name: 'Antroposen Donem',
72
+ epoch_anthropocene_age: 'Gunumuz ve Gelecek',
73
+ epoch_anthropocene_desc: 'Sera gazi salinimi kaynakli hizli isinma.',
74
+ },
75
+ seo: [
76
+ {
77
+ "type": "title",
78
+ "text": "TARİHSEL İKLİMBİLİM: Jeolojik Donemler Boyunca Dunyanin Termal Evrimi",
79
+ "level": 2
80
+ },
81
+ {
82
+ "type": "paragraph",
83
+ "html": "Dunyanin iklimi hicbir zaman statik olmamistir. 4,5 milyar yillik varolusu boyunca gezegenimiz iki temel durum arasinda gidip gelmistir: sera (greenhouse) durumu ve buzul cagi (icehouse) durumu. Bu buyuk olcekli dalgalanmalari anlamak sadece jeolojik bir merak degil, ayni zamanda insan kaynakli kuresel isinmanin hizini ve ciddiyetini anlamlandirmak icin vazgecilmez bir aractir. Paleoklimatologlar, deniz fosillerindeki oksijen izotoplarini ve buz cekirdeklerinde hapsolmus hava kabarciklarini inceleyerek, gecmisteki Dunya sicakliklarinin kesin bir kaydini cikarmislardir."
84
+ },
85
+ {
86
+ "type": "title",
87
+ "text": "Jeolojik Eon ve Doneme Gore Sicaklik Kaydi",
88
+ "level": 3
89
+ },
90
+ {
91
+ "type": "paragraph",
92
+ "html": "Dunya tarihi, biyolojik ve jeolojik degisimlerle tanimlanan ana zaman araliklarina bolunmustur. Asagida, bu kronolojide mevcut olan her donem icin tahmini ortalama sicakliklarin listesi yer almaktadir:"
93
+ },
94
+ {
95
+ "type": "table",
96
+ "headers": [
97
+ "Jeolojik Donem",
98
+ "Yaklasik Yas",
99
+ "Ortalama Sicaklik",
100
+ "İklimsel Donum Noktalari ve Ozellikler"
101
+ ],
102
+ "rows": [
103
+ [
104
+ "<strong>Arkeyan Devir</strong>",
105
+ "4.0 ila 2.5 Ga",
106
+ "30 °C",
107
+ "Erken sicak Dunya. Sonuk sönük Gunes, metan bakimindan zengin asiri sera etkisiyle telafi edilmisti."
108
+ ],
109
+ [
110
+ "<strong>Proterozoyik Devir</strong>",
111
+ "2.5 Ga ila 541 Ma",
112
+ "12 °C",
113
+ "Serbest oksijenin artisi; metanin cokmesine neden oldu ve kuresel buzul caglarini (\"Kartopu Dunya\") tetikledi."
114
+ ],
115
+ [
116
+ "<strong>Paleozoyik Zaman</strong>",
117
+ "541 ila 252 Ma",
118
+ "20 °C",
119
+ "Buyuk denizel biyo-cesitlilik ve karaya gecis. Volkanik patlamalar ve asiri isinma ile sona erdi."
120
+ ],
121
+ [
122
+ "<strong>Mezozoyik Zaman</strong>",
123
+ "252 ila 66 Ma",
124
+ "22 °C",
125
+ "Sera donemi par excellence (kutup buzu olmayan super-sera). Dinozorlarin altin cagi."
126
+ ],
127
+ [
128
+ "<strong>Senozoyik Zaman</strong>",
129
+ "66 Ma ila bugun",
130
+ "14 °C",
131
+ "Kuvaterner buzul cagi dongulerine yol acan, kitalarin konumlanmasi ve okyanus akintilariyla yonlendirilen kademeli soguma."
132
+ ],
133
+ [
134
+ "<strong>Antroposen</strong>",
135
+ "Bugun & gelecek",
136
+ "15.2 °C",
137
+ "İnsan kaynakli sera gazi salinimlari nedeniyle gerceklesen ani ve siradisi isinma."
138
+ ]
139
+ ]
140
+ },
141
+ {
142
+ "type": "title",
143
+ "text": "Gecmisin Termal Uclari: Kuresel Donmadan Mezozoyik Sicaklarina",
144
+ "level": 3
145
+ },
146
+ {
147
+ "type": "paragraph",
148
+ "html": "Gezegen tarihi asiri iklim olaylarini icerir. Proterozoyik Devirde, ilkel fotosentez buyuk olcekte oksijen salarak atmosferik metani oksitledi ve gezegeni, buzyallarin ekvator enlemlerine ulastigi \"Kartopu Dunya\" donemlerinden biri olan Huron buzul cagina soktu. Bunun tam tersi sekilde, Mezozoyik Zaman ve Paleosen sirasinda, yogun levha hareketlerine bagli volkanik aktivite atmosferi CO2 ile doyurarak ortalama kuresel sicakligi bugunku seviyelerin 10 derece uzerine cikardi. Bu donemlerde kutuplarda hic buz yoktu, Arktik enlemlerde iliman ormanlar yayilmisti ve dinozorlar gibi sogukkanli surungenler gelisti."
149
+ },
150
+ {
151
+ "type": "title",
152
+ "text": "Jeolojik Olcekte Gezegen İklimini Yonlendiren Faktorler",
153
+ "level": 3
154
+ },
155
+ {
156
+ "type": "paragraph",
157
+ "html": "Dunyanin uzun vadeli iklimi, birbiriyle baglantili birkac dogal mekanizma tarafından yonlendirilen hassas bir termodinamik dengenin sonucudur:"
158
+ },
159
+ {
160
+ "type": "list",
161
+ "items": [
162
+ "<strong>Milankovitch Donguleri:</strong> Gezegenin yorungesel eksantrikligi, egikligi ve presesyonundaki kucuk periyodik degisimler, alinan gunes radyasyonunu degistirir.",
163
+ "<strong>Silikat-Karbonat Karbon Dongusu:</strong> Uzun vadeli jeokimyasal termostat. Yagmur CO2'yi atmosferden uzaklastirarak okyanus tabaninda silikat olarak biriktirir.",
164
+ "<strong>Levha Tektonigi:</strong> Kita kaymasi kuresel deniz akintilarini degistirir ve CO2'nin kimyasal asinmasini hizlandiran dag siralari olusturur.",
165
+ "<strong>Albedo Geri Besleme Etkisi:</strong> Kar ve buzun varligi gunes isigini yansitir, geri besleme donguleri yoluyla gezegeni daha da sogutur."
166
+ ]
167
+ },
168
+ {
169
+ "type": "title",
170
+ "text": "Antroposen: Biyosferde Gorulmemis Bir Termal Hizlanma",
171
+ "level": 3
172
+ },
173
+ {
174
+ "type": "paragraph",
175
+ "html": "Kararli Holosen doneminden Antroposen'e gecis, insanligin gezegen sistemleri uzerindeki dogrudan etkisinin baslangicini isaret eder. Orbitel veya volkanik nedenleri on binlerce yil boyunca etki eden gecmisteki termal olaylarin aksine, modern isinma milyonlarca yilda biriken fosil karbonun sadece birkac on yilda kitleler halinde yakilmasindan kaynaklanmaktadir. Mevcut sera gazi birikim hizi ve kuresel ortalama sicaklik artis hizi, Permiyen sonu kitlesel yok olusundan veya PETM doneminden cok daha hizlidir ve gezegenin biyolojik cesitligine gorulmemis bir uyum meydan okumasi sunmaktadir."
176
+ }
177
+ ],
178
+ faq,
179
+ bibliography,
180
+ howTo,
181
+ schemas: [
182
+ {
183
+ '@context': 'https://schema.org',
184
+ '@type': 'SoftwareApplication',
185
+ name: title,
186
+ description: description,
187
+ applicationCategory: 'ScientificApplication',
188
+ operatingSystem: 'Any',
189
+ },
190
+ {
191
+ '@context': 'https://schema.org',
192
+ '@type': 'FAQPage',
193
+ mainEntity: faq.map((item) => ({
194
+ '@type': 'Question',
195
+ name: item.question,
196
+ acceptedAnswer: {
197
+ '@type': 'Answer',
198
+ text: item.answer,
199
+ },
200
+ })),
201
+ },
202
+ {
203
+ '@context': 'https://schema.org',
204
+ '@type': 'HowTo',
205
+ name: title,
206
+ step: howTo.map((step) => ({
207
+ '@type': 'HowToStep',
208
+ name: step.name,
209
+ text: step.text,
210
+ })),
211
+ },
212
+ ],
213
+ };
@@ -0,0 +1,213 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+
4
+ const slug = 'planet-temperature-timeline';
5
+ const description = '探索地球在整个地质时期的平均气温历史。';
6
+ const title = '地球平均气温时间线';
7
+
8
+ const howTo = [
9
+ {
10
+ name: '选择地质时期',
11
+ text: '点击刻度尺上的刻度。',
12
+ },
13
+ {
14
+ name: '检查温度',
15
+ text: '读取全球平均温度。',
16
+ },
17
+ {
18
+ name: '观察行星',
19
+ text: '观察画布对热状态的反应。',
20
+ },
21
+ ];
22
+
23
+ const faq = [
24
+ {
25
+ "question": "地球过去的温度比现在高吗?",
26
+ "answer": "是的,地球曾经历过比现在温暖得多的气候。在中生代(恐龙时代)和始新世早期,地球处于没有极地冰帽的温室状态,全球平均气温超过 22 度,比今天的平均气温高出约 7 到 8 度。然而,向这些时期的过渡是在数百万年的时间尺度上发生的,从而允许生物进行进化适应。"
27
+ },
28
+ {
29
+ "question": "是什么导致了'雪球地球'现象?",
30
+ "answer": "雪球地球(全球冰期)主要发生在新生代(约 7 亿年前)。它是由于超大陆罗迪尼亚裂解后,硅酸盐岩石的化学风化加速,导致温室气体极端减少而触发的。冰从两极延伸到赤道,反射太阳辐射(反照率效应),并将地球锁在全球冻结循环中,直到数百万年火山二氧化碳积累后才被打破。"
31
+ },
32
+ {
33
+ "question": "地球如何长期调节自身温度?",
34
+ "answer": "地球拥有一个由地质碳循环控制的自然温室,主要由板块构造和硅酸盐风化调节。当行星变暖时,酸雨与硅酸盐岩石反应更快,将二氧化碳从大气中吸收到海底沉积为碳酸盐,从而减少温室效应。如果行星变冷,风化减少,但火山活动继续释放二氧化碳,使地球逐渐再次变暖。"
35
+ },
36
+ {
37
+ "question": "人新世的气候变化与地质过去有何不同?",
38
+ "answer": "根本区别在于变化的速度。虽然地质过去的自然气候过渡通常发生在数万年或数百万年的时间尺度上(为生物迁移和进化留出余地),但人新世的变暖发生在几十年内。这种热变化速度比几乎所有记录在案的先前事件都要快指数级,超出了当前生物圈的适应能力,导致加速的物种大灭绝。"
39
+ },
40
+ {
41
+ "question": "什么是古新世-始新世极热事件(PETM)?",
42
+ "answer": "PETM 是发生在大约 5600 万年前的极端全球变暖事件。它是由于碳快速而大量地注入大气(可能来自海洋甲烷水合物的释放或北大西洋火山活动)引起的,在几千年中将全球温度提高了 5 到 8 度。它被认为是现代气候变化的最佳地质模拟,导致了严重的海洋酸化和底栖生物的大规模灭绝。"
43
+ }
44
+ ];
45
+
46
+ export const content: ToolLocaleContent = {
47
+ slug,
48
+ title,
49
+ description,
50
+ ui: {
51
+ title: '地球气温时间线',
52
+ sub: '探索地球的地质气候时期',
53
+ ageLabel: '年龄:',
54
+ tempLabel: '平均气温:',
55
+ selectPrompt: '选择地质时期。',
56
+ epoch_archean_name: '太古宙',
57
+ epoch_archean_age: '40亿至25亿年前',
58
+ epoch_archean_desc: '富含甲烷和二氧化碳的极热地球。',
59
+ epoch_proterozoic_name: '元古宙',
60
+ epoch_proterozoic_age: '25亿至5.41亿年前',
61
+ epoch_proterozoic_desc: '氧气上升导致休伦冰期及雪球地球。',
62
+ epoch_paleozoic_name: '古生代',
63
+ epoch_paleozoic_age: '5.41亿至2.52亿年前',
64
+ epoch_paleozoic_desc: '海洋生命爆发与向陆地迁移。',
65
+ epoch_mesozoic_name: '中生代',
66
+ epoch_mesozoic_age: '2.52亿至6600万年前',
67
+ epoch_mesozoic_desc: '温室气候下的恐龙时代。',
68
+ epoch_cenozoic_name: '新生代',
69
+ epoch_cenozoic_age: '6600万年前至今',
70
+ epoch_cenozoic_desc: '逐渐冷却并走向第四纪冰期。',
71
+ epoch_anthropocene_name: '人新世',
72
+ epoch_anthropocene_age: '现代与未来',
73
+ epoch_anthropocene_desc: '温室气体排放导致的快速变暖。',
74
+ },
75
+ seo: [
76
+ {
77
+ "type": "title",
78
+ "text": "历史气候学:地球在整个地质时期的热演化",
79
+ "level": 2
80
+ },
81
+ {
82
+ "type": "paragraph",
83
+ "html": "地球的气候从未停滞不前。在它存在了 45 亿年的历史中,我们的星球一直在两个基本状态之间摆动:温室状态(greenhouse)和冰室状态(icehouse)。理解这些大尺度的波动不仅是一个地质学上的好奇,而且是理解当前人为地球变暖速度和严重性的不可或缺的工具。通过研究海洋化石中的氧同位素和冰芯中捕获的气泡,古气候学家们已经重建了过去地球温度的精确记录。"
84
+ },
85
+ {
86
+ "type": "title",
87
+ "text": "按地质宙和代划分的温度记录",
88
+ "level": 3
89
+ },
90
+ {
91
+ "type": "paragraph",
92
+ "html": "地球的历史分为由生物学和地质学变化定义的主要时间间隔。以下是该时间线中可用的每个时期的估计平均温度列表:"
93
+ },
94
+ {
95
+ "type": "table",
96
+ "headers": [
97
+ "地质年代",
98
+ "大约年龄",
99
+ "平均温度",
100
+ "气候学里程碑和特征"
101
+ ],
102
+ "rows": [
103
+ [
104
+ "<strong>太古宙</strong>",
105
+ "40 亿至 25 亿年前",
106
+ "30 °C",
107
+ "早期炎热的地球。微弱的年轻太阳由富含甲烷的极端温室效应补偿。"
108
+ ],
109
+ [
110
+ "<strong>元古宙</strong>",
111
+ "25 亿至 5.41 亿年前",
112
+ "12 °C",
113
+ "游离氧的增加;导致甲烷崩溃并引发全球冰期('雪球地球')。"
114
+ ],
115
+ [
116
+ "<strong>古生代</strong>",
117
+ "5.41 亿至 2.52 亿年前",
118
+ "20 °C",
119
+ "巨大的海洋生物多样性和陆地殖民。以火山爆发和极端变暖结束。"
120
+ ],
121
+ [
122
+ "<strong>中生代</strong>",
123
+ "2.52 亿至 6600 万年前",
124
+ "22 °C",
125
+ "极地无冰的温室时代代表(超级温室)。恐龙的黄金时代。"
126
+ ],
127
+ [
128
+ "<strong>新生代</strong>",
129
+ "6600 万年前至今",
130
+ "14 °C",
131
+ "由大陆洋流驱动的渐进式冷却,导致第四纪冰期循环。"
132
+ ],
133
+ [
134
+ "<strong>人新世</strong>",
135
+ "现代与未来",
136
+ "15.2 °C",
137
+ "人为温室气体排放引起的急剧而异常的变暖。"
138
+ ]
139
+ ]
140
+ },
141
+ {
142
+ "type": "title",
143
+ "text": "过去的热极端:从全球冰期到中生代酷热",
144
+ "level": 3
145
+ },
146
+ {
147
+ "type": "paragraph",
148
+ "html": "行星的历史包括极端的极端气候事件。在元古宙,原始光合作用大规模释放氧气,氧化了大气中的甲烷,使地球陷入休伦冰期,这是'雪球地球'时期之一,冰川延伸到赤道纬度。相反,在中生代和古新世期间,强烈的板块火山活动使大气中的二氧化碳饱和,将全球平均温度提高到当前水平的 10 度以上。这些时期完全没有极地冰,在北极纬度地区生长着温带森林,并允许恐龙等变温动物繁衍。"
149
+ },
150
+ {
151
+ "type": "title",
152
+ "text": "在地质尺度上驱动行星气候的因素",
153
+ "level": 3
154
+ },
155
+ {
156
+ "type": "paragraph",
157
+ "html": "地球的长期气候是受几个相互关联的自然机制支配的微妙热力学平衡的结果:"
158
+ },
159
+ {
160
+ "type": "list",
161
+ "items": [
162
+ "<strong>米兰科维奇循环:</strong> 地球轨道离心率、自转轴倾角和岁差的微小周期性变化改变了接收到的太阳辐射。",
163
+ "<strong>硅酸盐-碳酸盐碳循环:</strong> 长期地球化学温室。雨水吸收二氧化碳并将其转化为硅酸盐沉积在海洋中。",
164
+ "<strong>板块构造:</strong> 大陆漂移改变了全球洋流,并形成了加速二氧化碳化学风化的山脉。",
165
+ "<strong>反照率反馈效应:</strong> 冰雪的存在反射阳光,通过反馈循环进一步冷却行星。"
166
+ ]
167
+ },
168
+ {
169
+ "type": "title",
170
+ "text": "人新世:生物圈中前所未有的热加速度",
171
+ "level": 3
172
+ },
173
+ {
174
+ "type": "paragraph",
175
+ "html": "从稳定的全新世向人新世的过渡标志着人类对地球系统产生直接影响的时代到来。与过去热事件(其轨道或火山原因在数万年的时间尺度上发生作用)不同,当前的变暖是由数十年来大量燃烧数百万年积累的化石碳所驱动的。当前温室气体的积累速度和全球平均温度的上升速度明显快于二叠纪末大灭绝或 PETM 时期,给地球的生物多样性带来了前所未有的适应挑战。"
176
+ }
177
+ ],
178
+ faq,
179
+ bibliography,
180
+ howTo,
181
+ schemas: [
182
+ {
183
+ '@context': 'https://schema.org',
184
+ '@type': 'SoftwareApplication',
185
+ name: title,
186
+ description: description,
187
+ applicationCategory: 'ScientificApplication',
188
+ operatingSystem: 'Any',
189
+ },
190
+ {
191
+ '@context': 'https://schema.org',
192
+ '@type': 'FAQPage',
193
+ mainEntity: faq.map((item) => ({
194
+ '@type': 'Question',
195
+ name: item.question,
196
+ acceptedAnswer: {
197
+ '@type': 'Answer',
198
+ text: item.answer,
199
+ },
200
+ })),
201
+ },
202
+ {
203
+ '@context': 'https://schema.org',
204
+ '@type': 'HowTo',
205
+ name: title,
206
+ step: howTo.map((step) => ({
207
+ '@type': 'HowToStep',
208
+ name: step.name,
209
+ text: step.text,
210
+ })),
211
+ },
212
+ ],
213
+ };
@@ -0,0 +1,11 @@
1
+ import { temperatureTimeline } from './entry';
2
+ import type { ToolDefinition } from '../../types';
3
+
4
+ export * from './entry';
5
+
6
+ export const TEMPERATURE_TIMELINE_TOOL: ToolDefinition = {
7
+ entry: temperatureTimeline,
8
+ Component: () => import('./component.astro'),
9
+ SEOComponent: () => import('./seo.astro'),
10
+ BibliographyComponent: () => import('./bibliography.astro'),
11
+ };
@@ -0,0 +1,58 @@
1
+ export interface GeologicEpoch {
2
+ id: string;
3
+ name: string;
4
+ ageRange: string;
5
+ avgTemp: number;
6
+ description: string;
7
+ }
8
+
9
+ export class TemperatureTimelineEngine {
10
+ private epochs: GeologicEpoch[] = [
11
+ {
12
+ id: 'archean',
13
+ name: 'Archean Eon',
14
+ ageRange: '4.0 to 2.5 billion years ago',
15
+ avgTemp: 30,
16
+ description: 'Extremely hot earth with a methane and carbon dioxide rich atmosphere. Liquid oceans existed despite a faint young sun due to greenhouse effect.',
17
+ },
18
+ {
19
+ id: 'proterozoic',
20
+ name: 'Proterozoic Eon',
21
+ ageRange: '2.5 billion to 541 million years ago',
22
+ avgTemp: 12,
23
+ description: 'Rise of oxygen causes the Huronian glaciation, leading to one of the first Snowball Earth periods, followed by stabilization.',
24
+ },
25
+ {
26
+ id: 'paleozoic',
27
+ name: 'Paleozoic Era',
28
+ ageRange: '541 to 252 million years ago',
29
+ avgTemp: 20,
30
+ description: 'Explosion of life in oceans and migration to land. Ended with the Permian-Triassic extinction, the warmest phase of this era.',
31
+ },
32
+ {
33
+ id: 'mesozoic',
34
+ name: 'Mesozoic Era',
35
+ ageRange: '252 to 66 million years ago',
36
+ avgTemp: 22,
37
+ description: 'The age of dinosaurs. Greenhouse conditions prevailed worldwide with no polar ice caps, resulting in high ocean levels and warm climates.',
38
+ },
39
+ {
40
+ id: 'cenozoic',
41
+ name: 'Cenozoic Era',
42
+ ageRange: '66 million years ago to Present',
43
+ avgTemp: 14,
44
+ description: 'Gradual cooling trend culminating in the Quaternary glaciations (Ice Ages) and the modern Holocene epoch.',
45
+ },
46
+ {
47
+ id: 'anthropocene',
48
+ name: 'Anthropocene Epoch',
49
+ ageRange: 'Present Day and Future',
50
+ avgTemp: 15.2,
51
+ description: 'Rapid warming driven by greenhouse gas emissions, deviating from the long term natural cooling trend of the late Cenozoic.',
52
+ },
53
+ ];
54
+
55
+ public getEpochs(): GeologicEpoch[] {
56
+ return this.epochs;
57
+ }
58
+ }
@@ -0,0 +1,158 @@
1
+ :root {
2
+ --timeline-bg: #fff;
3
+ --timeline-border: rgba(0, 0, 0, 0.08);
4
+ --timeline-text: #0f172a;
5
+ --timeline-text-muted: #4b5563;
6
+ --timeline-divider: rgba(0, 0, 0, 0.1);
7
+ --timeline-highlight: #ea580c;
8
+ --timeline-ruler-text: #6b7280;
9
+ }
10
+
11
+ .theme-dark {
12
+ --timeline-bg: #030712;
13
+ --timeline-border: rgba(255, 255, 255, 0.05);
14
+ --timeline-text: #f3f4f6;
15
+ --timeline-text-muted: #9ca3af;
16
+ --timeline-divider: rgba(255, 255, 255, 0.1);
17
+ --timeline-highlight: #fb923c;
18
+ --timeline-ruler-text: #9ca3af;
19
+ }
20
+
21
+ .timeline-root {
22
+ position: relative;
23
+ display: flex;
24
+ flex-direction: column;
25
+ justify-content: center;
26
+ align-items: center;
27
+ padding: 3rem;
28
+ background: var(--timeline-bg);
29
+ color: var(--timeline-text);
30
+ border-radius: 2rem;
31
+ border: 1px solid var(--timeline-border);
32
+ max-width: 800px;
33
+ margin: 0 auto;
34
+ min-height: 580px;
35
+ overflow: hidden;
36
+ user-select: none;
37
+ transition: box-shadow 0.5s ease;
38
+ }
39
+
40
+ .timeline-canvas-container {
41
+ position: absolute;
42
+ inset: 0;
43
+ z-index: 1;
44
+ cursor: ns-resize;
45
+ pointer-events: auto;
46
+ }
47
+
48
+ .timeline-canvas-container canvas {
49
+ width: 100%;
50
+ height: 100%;
51
+ display: block;
52
+ }
53
+
54
+ .timeline-info-panel {
55
+ position: relative;
56
+ z-index: 2;
57
+ display: flex;
58
+ flex-direction: column;
59
+ align-items: center;
60
+ text-align: center;
61
+ gap: 1.5rem;
62
+ pointer-events: none;
63
+ }
64
+
65
+ .timeline-meta-header {
66
+ display: flex;
67
+ flex-direction: column;
68
+ gap: 0.25rem;
69
+ }
70
+
71
+ .timeline-age {
72
+ font-size: 0.75rem;
73
+ font-weight: 600;
74
+ text-transform: uppercase;
75
+ letter-spacing: 0.2em;
76
+ color: var(--timeline-text-muted);
77
+ }
78
+
79
+ .timeline-era-name {
80
+ font-size: clamp(2rem, 5vw, 3rem);
81
+ font-weight: 300;
82
+ margin: 0;
83
+ letter-spacing: -0.01em;
84
+ color: var(--timeline-text);
85
+ }
86
+
87
+ .timeline-temp {
88
+ font-size: clamp(5rem, 16vw, 8.5rem);
89
+ font-weight: 100;
90
+ line-height: 1;
91
+ letter-spacing: -0.05em;
92
+ color: var(--timeline-text);
93
+ margin: 0;
94
+ }
95
+
96
+ .timeline-temp-unit {
97
+ font-size: 2.5rem;
98
+ font-weight: 200;
99
+ vertical-align: super;
100
+ margin-left: 0.25rem;
101
+ }
102
+
103
+ .timeline-ruler-container {
104
+ position: absolute;
105
+ right: 1.5rem;
106
+ top: 50%;
107
+ transform: translateY(-50%);
108
+ display: flex;
109
+ flex-direction: column;
110
+ justify-content: space-between;
111
+ height: 280px;
112
+ align-items: flex-end;
113
+ z-index: 3;
114
+ }
115
+
116
+ .timeline-ruler-track {
117
+ position: absolute;
118
+ right: 8px;
119
+ top: 0;
120
+ bottom: 0;
121
+ width: 2px;
122
+ background: var(--timeline-divider);
123
+ }
124
+
125
+ .timeline-ruler-notch {
126
+ display: flex;
127
+ align-items: center;
128
+ gap: 0.5rem;
129
+ cursor: pointer;
130
+ padding: 0.25rem 0.5rem;
131
+ transition: transform 0.2s;
132
+ }
133
+
134
+ .timeline-notch-label {
135
+ font-size: 0.75rem;
136
+ font-weight: 700;
137
+ color: var(--timeline-ruler-text);
138
+ opacity: 0.5;
139
+ transition: opacity 0.2s, color 0.2s, text-shadow 0.2s;
140
+ letter-spacing: 0.05em;
141
+ }
142
+
143
+ .timeline-notch-line {
144
+ width: 12px;
145
+ height: 2px;
146
+ background: var(--timeline-divider);
147
+ transition: width 0.2s, background-color 0.2s;
148
+ }
149
+
150
+ .timeline-ruler-notch.active .timeline-notch-label {
151
+ opacity: 1;
152
+ color: var(--timeline-highlight);
153
+ }
154
+
155
+ .timeline-ruler-notch.active .timeline-notch-line {
156
+ width: 24px;
157
+ background: var(--timeline-highlight);
158
+ }
@@ -0,0 +1,15 @@
1
+ ---
2
+ import { SEORenderer } from '@jjlmoya/utils-shared';
3
+ import { temperatureTimeline } from './index';
4
+ import type { KnownLocale } from '../../types';
5
+
6
+ interface Props {
7
+ locale?: KnownLocale;
8
+ }
9
+
10
+ const { locale = 'en' } = Astro.props;
11
+ const content = await temperatureTimeline.i18n[locale]?.();
12
+ if (!content) return null;
13
+ ---
14
+
15
+ {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}