@jjlmoya/utils-home 1.27.0 → 1.29.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 (31) hide show
  1. package/package.json +1 -1
  2. package/src/entries.ts +4 -1
  3. package/src/index.ts +2 -0
  4. package/src/tests/locale_completeness.test.ts +2 -2
  5. package/src/tests/tool_validation.test.ts +2 -2
  6. package/src/tool/deskErgonomics/bibliography.astro +14 -0
  7. package/src/tool/deskErgonomics/bibliography.ts +5 -0
  8. package/src/tool/deskErgonomics/component.astro +192 -0
  9. package/src/tool/deskErgonomics/desk-ergonomics.css +361 -0
  10. package/src/tool/deskErgonomics/entry.ts +29 -0
  11. package/src/tool/deskErgonomics/i18n/de.ts +237 -0
  12. package/src/tool/deskErgonomics/i18n/en.ts +215 -0
  13. package/src/tool/deskErgonomics/i18n/es.ts +237 -0
  14. package/src/tool/deskErgonomics/i18n/fr.ts +237 -0
  15. package/src/tool/deskErgonomics/i18n/id.ts +215 -0
  16. package/src/tool/deskErgonomics/i18n/it.ts +237 -0
  17. package/src/tool/deskErgonomics/i18n/ja.ts +215 -0
  18. package/src/tool/deskErgonomics/i18n/ko.ts +215 -0
  19. package/src/tool/deskErgonomics/i18n/nl.ts +215 -0
  20. package/src/tool/deskErgonomics/i18n/pl.ts +215 -0
  21. package/src/tool/deskErgonomics/i18n/pt.ts +237 -0
  22. package/src/tool/deskErgonomics/i18n/ru.ts +215 -0
  23. package/src/tool/deskErgonomics/i18n/sv.ts +215 -0
  24. package/src/tool/deskErgonomics/i18n/tr.ts +215 -0
  25. package/src/tool/deskErgonomics/i18n/zh.ts +215 -0
  26. package/src/tool/deskErgonomics/index.ts +9 -0
  27. package/src/tool/deskErgonomics/logic.ts +49 -0
  28. package/src/tool/deskErgonomics/seo.astro +15 -0
  29. package/src/tool/deskErgonomics/ui.ts +28 -0
  30. package/src/tool/vampireDrawSimulator/bibliography.ts +3 -3
  31. package/src/tools.ts +2 -0
@@ -0,0 +1,215 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { DeskErgonomicsUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
5
+
6
+ const slug = 'masa-ergonomisi';
7
+ const title = 'Masa Ergonomisi ve Çalışma Alanı Düzen Hizalama';
8
+ const description =
9
+ 'Boyunuzu girin ve sandalyenizi, masanızı ve monitörünüzü ev ofisinizde sırt ve boyun ağrısını ortadan kaldırmak için nasıl ayarlayacağınızı anında görün.';
10
+
11
+ const faqData = [
12
+ {
13
+ question: 'Masa yüksekliği neden önemlidir?',
14
+ answer:
15
+ 'Çok yüksek bir masa omuzlarınızı kaldırmaya zorlar, boyun ve üst sırtınızda gerilme yaratır. Çok alçak bir masa öne eğilmenize neden olarak bel disklerinizi sıkıştırır. Doğru yükseklik, ön kollarınızı yere paralel tutar ve dirseklerinizi 90 derece açıda kalmasını sağlar.',
16
+ },
17
+ {
18
+ question: 'Monitörüm ne kadar yüksekte olmalı?',
19
+ answer:
20
+ 'Monitörünüzün üst kısmı göz hizanızda veya hafif altında olmalı, ekran 10 ila 20 derece geriye eğilmiş olmalı. Bu boynunuzu nötr pozisyonda tutar ve hafifçe aşağı bakarak göz yorgunluğunu azaltır, bu da insan görüşünün doğal dinlenme açısıdır.',
21
+ },
22
+ {
23
+ question: 'Ekranıma ne kadar uzaklıkta oturmalıyım?',
24
+ answer:
25
+ 'İdeal mesafe bir kol uzunluğu kadar, yaklaşık 50 ila 70 santimetredir. Bu mesafede gözleriniz odaklanmak için fazla çaba harcamaz ve başınızı hareket ettirmeden tüm ekranı görebilirsiniz. Daha büyük ekranlar için mesafeyi orantılı olarak artırın.',
26
+ },
27
+ {
28
+ question: 'Ayakta çalışma masası daha mı iyi?',
29
+ answer:
30
+ 'Ayakta çalışma masaları uzun süre oturmayı azaltır, bu da kalp-damar ve metabolik sorunlarla bağlantılıdır. Ancak bütün gün ayakta kalmak damar ve ayak sorunlarına yol açabilir. En iyi yaklaşım değiştirmektir: 30 dakika oturun, 15 ila 30 dakika ayakta durun ve düzenli hareket edin.',
31
+ },
32
+ {
33
+ question: 'Ayaklarım yere değmeli mi?',
34
+ answer:
35
+ 'Evet. Ayaklarınız yere düz bir şekilde basmalı ve dizleriniz 90 derece açıda olmalı. Sandalyeniz çok yüksekse bir ayak desteği kullanın. Ayaklarınız sallanırsa, uyluklarınızın arkasında basınç oluşur, bu kan akışını kısıtlar ve uyuşukluk yapar.',
36
+ },
37
+ {
38
+ question: 'En iyi sandalye yüksekliği nedir?',
39
+ answer:
40
+ 'Koltuk, ayaklarınız yere düz basarken dizlerinizin yaklaşık 90 derece bükülmesine izin vermelidir. Kalçalarınız dizlerinizle aynı hizada veya hafif üstünde olmalı. Bu ağırlığı oturma kemiklerinize eşit şekilde dağıtır ve bel bölgenizdeki basıncı azaltır.',
41
+ },
42
+ ];
43
+
44
+ const howToData = [
45
+ {
46
+ name: 'Boyunuzu ölçün',
47
+ text: 'Çıplak ayakla bir duvara yaslanın ve başınızın tepesini işaretleyin. Yerden işarete kadar santimetre cinsinden ölçüm yapın.',
48
+ },
49
+ {
50
+ name: 'Çalışma modunuzu seçin',
51
+ text: 'Oturarak çalışma masası mı yoksa ayakta çalışma masası mı için öneriler istediğinizi seçin. Her mod farklı vücut oranlarını kullanır.',
52
+ },
53
+ {
54
+ name: 'Önce sandalyenizi ayarlayın',
55
+ text: 'Sandalyenizi ayaklarınız yere düz bassın ve dizleriniz 90 derece açıda olsun diye ayarlayın. Kalçalarınız dizlerinizle aynı hizada veya hafif üstünde olmalı.',
56
+ },
57
+ {
58
+ name: 'Masa yüksekliğini ayarlayın',
59
+ text: 'Yazarken ön kollarınız yere paralel olacak şekilde masanızı yükseltin veya alçaltın. Dirsekleriniz 90 derece açıda olmalı.',
60
+ },
61
+ {
62
+ name: 'Monitörünüzü konumlandırın',
63
+ text: 'Monitörü bir kol uzunluğu kadar uzağa yerleştirin. Ekranın üst kısmı göz hizanızda veya hafif altında olmalı, 10 ila 20 derece geriye eğilmiş.',
64
+ },
65
+ {
66
+ name: 'Avatar ile doğrulayın',
67
+ text: 'Ekrandaki avatarı kullanarak tüm açıların yeşil olduğunu kontrol edin. Herhangi bir eklem kırmızıya dönerse, ilgili mobilyayı ayarlayın.',
68
+ },
69
+ ];
70
+
71
+ const faqSchema: WithContext<FAQPage> = {
72
+ '@context': 'https://schema.org',
73
+ '@type': 'FAQPage',
74
+ mainEntity: faqData.map((item) => ({
75
+ '@type': 'Question',
76
+ name: item.question,
77
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
78
+ })),
79
+ };
80
+
81
+ const howToSchema: WithContext<HowTo> = {
82
+ '@context': 'https://schema.org',
83
+ '@type': 'HowTo',
84
+ name: title,
85
+ description,
86
+ step: howToData.map((step) => ({
87
+ '@type': 'HowToStep',
88
+ name: step.name,
89
+ text: step.text,
90
+ })),
91
+ };
92
+
93
+ const appSchema: WithContext<SoftwareApplication> = {
94
+ '@context': 'https://schema.org',
95
+ '@type': 'SoftwareApplication',
96
+ name: title,
97
+ description,
98
+ applicationCategory: 'UtilityApplication',
99
+ operatingSystem: 'All',
100
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'TRY' },
101
+ inLanguage: 'tr',
102
+ };
103
+
104
+ export const content: ToolLocaleContent<DeskErgonomicsUI> = {
105
+ slug,
106
+ title,
107
+ description,
108
+ faq: faqData,
109
+ bibliography,
110
+ howTo: howToData,
111
+ schemas: [faqSchema, howToSchema, appSchema],
112
+ seo: [
113
+ {
114
+ type: 'title',
115
+ text: 'Kötü Bir Masa Düzeninin Gizli Maliyeti',
116
+ level: 2,
117
+ },
118
+ {
119
+ type: 'paragraph',
120
+ html: 'Çoğu insan günlük sekiz saatten fazla bir masada geçiriyor, ancak çok az kişi sandalyesinin, masasının veya monitörünün vücuduna uyup uymadığını ölçüyor. Sadece birkaç santimetrelik bir uyumsuzluk, boyunda, omuzlarında ve belinde kronik gerilme yaratabilir. Aylar ve yıllar içinde bu gerilme ağrıya, ağrı da yaralanmaya dönüşür. İyi haber şu ki, optimum ergonomi tek bir ölçümden tam olarak hesaplanabilir: boyunuz.',
121
+ },
122
+ {
123
+ type: 'stats',
124
+ items: [
125
+ { value: '8h', label: 'Ortalama Masa Süresi', icon: 'mdi:desk' },
126
+ { value: '90°', label: 'İdeal Dirsek Açısı', icon: 'mdi:angle-acute' },
127
+ { value: '60cm', label: 'En İyi Ekran Mesafesi', icon: 'mdi:monitor' },
128
+ ],
129
+ columns: 3,
130
+ },
131
+ {
132
+ type: 'title',
133
+ text: 'Neden Tek Bir Boyut Hiçbir Zaman Herkese Uymaz',
134
+ level: 3,
135
+ },
136
+ {
137
+ type: 'paragraph',
138
+ html: 'Standart masalar 73 santimetre yüksekliğinde ve standart sandalyeler 45 santimetre. Bu ölçüler onlarca yıl önce ortalama boydaki erkek ofis çalışanları için tasarlandı. 175 santimetreden kısa veya 185 santimetreden uzunsanız, bu varsayılanlar duruşunuzu aktif olarak bozuyor. Kadınlar, gençler ve ortalamanın üstünde veya altında torsoya sahip kişiler, standart mobilyalardan özellikle kötü hizmet görüyor.',
139
+ },
140
+ {
141
+ type: 'comparative',
142
+ items: [
143
+ {
144
+ title: 'Kötü Düzen',
145
+ description: 'Zamanla gerilme yaratan yaygın mobilya varsayılanları.',
146
+ icon: 'mdi:alert',
147
+ points: ['Monitör çok yüksek veya çok alçak', 'Masa omuzları kaldırmaya zorlar', 'Ayaklar yere değmiyor', 'Sandalye bel desteği sağlamıyor'],
148
+ },
149
+ {
150
+ title: 'Optimal Düzen',
151
+ description: 'Vücut oranlarınıza göre kişiselleştirilmiş ölçümler.',
152
+ icon: 'mdi:check-circle',
153
+ points: ['Monitör göz hizasında', 'Dirsekler 90 derece', 'Ayaklar yere düz basıyor', 'Alt sırt tamamen destekleniyor'],
154
+ },
155
+ ],
156
+ columns: 2,
157
+ },
158
+ {
159
+ type: 'diagnostic',
160
+ variant: 'info',
161
+ title: 'Hızlı Duruş Kontrol Listesi',
162
+ icon: 'mdi:clipboard-check',
163
+ badge: 'Eylem',
164
+ html: '<p style="margin:0">Sırtınız sandalyeye yaslanarak oturun. Dizlerinizin arkasıyla koltuk kenarı arasında küçük bir boşluk olduğunu kontrol edin. Yazarken bileklerinizin düz olduğundan emin olun. Monitörünüzün üst kısmı gözlerinizden daha yüksek olmamalı. Her 30 dakikada 2 dakikalık bir yürüyüş molası verin.</p>',
165
+ },
166
+ {
167
+ type: 'title',
168
+ text: 'Oturma ve Ayakta Durma Bilimi',
169
+ level: 3,
170
+ },
171
+ {
172
+ type: 'paragraph',
173
+ html: 'İnsan vücutları saatlerce tek bir pozisyonda kalmak için tasarlanmamıştır. Otururken, bel disklerine uygulanan basınç ayakta durmaya göre yüzde 40 artar. Hareketsiz ayakta dururken, kan bacaklarda birikir ve kalp tekrar yukarı pompalamak için daha çok çalışmak zorunda kalır. En sağlıklı çalışma ritmi, oturma ve ayakta durmayı her 30 ila 60 dakikada bir değiştirmek ve kısa yürüyüşler eklemektir. Bu araç her iki modu da hesaplayarak dönüştürülebilir bir masayı doğru şekilde ayarlamanızı sağlar.',
174
+ },
175
+ {
176
+ type: 'summary',
177
+ title: 'Ergonomik Bir Çalışma Alanı Nasıl Kurulur',
178
+ items: [
179
+ 'Çıplak ayak boyunuzu santimetre cinsinden ölçün.',
180
+ 'Tam sandalye, masa ve monitör yüksekliklerini almak için bu simülatörü kullanın.',
181
+ 'Önce sandalyeyi, sonra masayı, sonra monitörü ayarlayın.',
182
+ 'Ayakta çalışma masası kullanıyorsanız, oturarak masa yüksekliğinin 30 santimetre üzerine ayarlayın.',
183
+ 'Monitörü bir kol uzunluğu kadar uzağa yerleştirin ve 10 ila 20 derece geriye eğin.',
184
+ 'Her 30 dakikada 2 dakikalık yürüyüş veya esneme molası verin.',
185
+ ],
186
+ },
187
+ ],
188
+ ui: {
189
+ labelMode: 'Çalışma modu',
190
+ modeSit: 'Oturarak',
191
+ modeStand: 'Ayakta',
192
+ labelHeight: 'Boyunuz',
193
+ unitCm: 'cm',
194
+ labelGender: 'Vücut yapısı',
195
+ genderMale: 'Erkek',
196
+ genderFemale: 'Kadın',
197
+ labelChair: 'Sandalye',
198
+ labelDesk: 'Masa',
199
+ labelMonitor: 'Monitör',
200
+ labelDistance: 'Mesafe',
201
+ labelAngle: 'Açı',
202
+ labelGood: 'İyi',
203
+ labelAdjust: 'Ayarla',
204
+ badgeChair: 'Oturma',
205
+ badgeDesk: 'Yüzey',
206
+ badgeMonitor: 'Ekran',
207
+ tipScreenLow: 'Monitörünüzü yükseltin',
208
+ tipScreenHigh: 'Monitörünüzü alçaltın',
209
+ tipDeskLow: 'Masanızı yükseltin',
210
+ tipDeskHigh: 'Masanızı alçaltın',
211
+ tipChairLow: 'Sandalyenizi yükseltin',
212
+ tipChairHigh: 'Sandalyenizi alçaltın',
213
+ tipDistance: 'Ekranı bir kol uzunluğu kadar uzağa getirin',
214
+ },
215
+ };
@@ -0,0 +1,215 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { DeskErgonomicsUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
5
+
6
+ const slug = 'desk-ergonomics';
7
+ const title = '桌面人体工学与工作站布局调整';
8
+ const description =
9
+ '输入您的身高,立即查看如何调整椅子、桌子和显示器,以消除居家办公时的背部和颈部疼痛。';
10
+
11
+ const faqData = [
12
+ {
13
+ question: '桌子高度为什么重要?',
14
+ answer:
15
+ '桌子过高会迫使肩膀抬起,导致颈部和上背部紧张。桌子过低会使身体前倾,压迫腰椎间盘。正确的高度能让前臂与地面平行,肘部保持90度。',
16
+ },
17
+ {
18
+ question: '显示器应该多高?',
19
+ answer:
20
+ '显示器顶部应与眼睛水平或略低,屏幕向后倾斜10到20度。这样能让颈部保持中立位置,同时微微向下看,这是人类视觉的自然休息角度,可减少眼睛疲劳。',
21
+ },
22
+ {
23
+ question: '我应该离屏幕多远?',
24
+ answer:
25
+ '理想距离约为一个臂长,大致50到70厘米。在这个距离下,眼睛不需要费力聚焦,而且无需移动头部就能看到整个屏幕。对于更大的屏幕,请按比例增加距离。',
26
+ },
27
+ {
28
+ question: '升降桌更好吗?',
29
+ answer:
30
+ '升降桌可以减少久坐,久坐与心血管和代谢问题有关。然而,整天站立可能会导致静脉和足部问题。最佳方法是交替进行:坐30分钟,站15到30分钟,并定期活动。',
31
+ },
32
+ {
33
+ question: '脚应该碰到地面吗?',
34
+ answer:
35
+ '是的。脚应该平放在地面上,膝盖保持90度。如果椅子太高,请使用脚踏板。如果脚悬空,大腿后侧会积聚压力,限制血流并导致麻木。',
36
+ },
37
+ {
38
+ question: '椅子最佳高度是多少?',
39
+ answer:
40
+ '座椅高度应使膝盖弯曲约90度,脚平放在地面上。臀部应与膝盖平齐或略高于膝盖。这样能将体重均匀分布在坐骨上,减轻下背部压力。',
41
+ },
42
+ ];
43
+
44
+ const howToData = [
45
+ {
46
+ name: '测量你的身高',
47
+ text: '赤脚靠墙站立,在头顶处做标记。测量从地面到标记处的距离,单位为厘米。',
48
+ },
49
+ {
50
+ name: '选择工作空间模式',
51
+ text: '选择您想要坐姿办公桌还是站立式办公桌的建议。每种模式使用不同的身体比例。',
52
+ },
53
+ {
54
+ name: '先调整椅子',
55
+ text: '调整椅子,使脚平放在地面上,膝盖形成90度角。臀部应与膝盖平齐或略高于膝盖。',
56
+ },
57
+ {
58
+ name: '设置桌面高度',
59
+ text: '升高或降低桌子,使打字时前臂与地面平行。肘部应保持在90度角。',
60
+ },
61
+ {
62
+ name: '摆放显示器',
63
+ text: '将显示器放在约一个臂长之外。屏幕顶部应与眼睛水平或略低,向后倾斜10到20度。',
64
+ },
65
+ {
66
+ name: '用虚拟形象验证',
67
+ text: '使用屏幕上的虚拟形象检查所有角度是否均为绿色。如果有任何关节为红色,请调整相应的家具。',
68
+ },
69
+ ];
70
+
71
+ const faqSchema: WithContext<FAQPage> = {
72
+ '@context': 'https://schema.org',
73
+ '@type': 'FAQPage',
74
+ mainEntity: faqData.map((item) => ({
75
+ '@type': 'Question',
76
+ name: item.question,
77
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
78
+ })),
79
+ };
80
+
81
+ const howToSchema: WithContext<HowTo> = {
82
+ '@context': 'https://schema.org',
83
+ '@type': 'HowTo',
84
+ name: title,
85
+ description,
86
+ step: howToData.map((step) => ({
87
+ '@type': 'HowToStep',
88
+ name: step.name,
89
+ text: step.text,
90
+ })),
91
+ };
92
+
93
+ const appSchema: WithContext<SoftwareApplication> = {
94
+ '@context': 'https://schema.org',
95
+ '@type': 'SoftwareApplication',
96
+ name: title,
97
+ description,
98
+ applicationCategory: 'UtilityApplication',
99
+ operatingSystem: 'All',
100
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'CNY' },
101
+ inLanguage: 'zh',
102
+ };
103
+
104
+ export const content: ToolLocaleContent<DeskErgonomicsUI> = {
105
+ slug,
106
+ title,
107
+ description,
108
+ faq: faqData,
109
+ bibliography,
110
+ howTo: howToData,
111
+ schemas: [faqSchema, howToSchema, appSchema],
112
+ seo: [
113
+ {
114
+ type: 'title',
115
+ text: '糟糕桌面环境的隐性代价',
116
+ level: 2,
117
+ },
118
+ {
119
+ type: 'paragraph',
120
+ html: '大多数人每天在桌前度过超过八个小时,但很少有人测量自己的椅子、桌子或显示器是否适合身体。仅仅几厘米的不匹配就可能在颈部、肩部和下背部造成慢性紧张。数月乃至数年后,这种紧张会变成疼痛,疼痛则会演变成损伤。好消息是,最佳人体工学可以从一个测量值-你的身高-精确计算出来。',
121
+ },
122
+ {
123
+ type: 'stats',
124
+ items: [
125
+ { value: '8h', label: '平均桌边时间', icon: 'mdi:desk' },
126
+ { value: '90°', label: '理想肘部角度', icon: 'mdi:angle-acute' },
127
+ { value: '60cm', label: '最佳屏幕距离', icon: 'mdi:monitor' },
128
+ ],
129
+ columns: 3,
130
+ },
131
+ {
132
+ type: 'title',
133
+ text: '为什么统一尺寸无法适合所有人',
134
+ level: 3,
135
+ },
136
+ {
137
+ type: 'paragraph',
138
+ html: '标准桌子高度为73厘米,标准椅子高度为45厘米。这些尺寸是几十年前为平均身高的男性办公室职员设计的。如果你身高低于175厘米或高于185厘米,这些默认值正在损害你的姿势。女性、青少年以及躯干比平均值更长或更短的人,尤其不适合现成家具。',
139
+ },
140
+ {
141
+ type: 'comparative',
142
+ items: [
143
+ {
144
+ title: '不良设置',
145
+ description: '常见的家具默认值,长期会造成劳损。',
146
+ icon: 'mdi:alert',
147
+ points: ['显示器过高或过低', '桌子迫使肩膀抬高', '脚够不到地面', '椅子没有腰部支撑'],
148
+ },
149
+ {
150
+ title: '最佳设置',
151
+ description: '基于你身体比例的个性化测量值。',
152
+ icon: 'mdi:check-circle',
153
+ points: ['显示器与眼睛平齐', '肘部保持90度', '脚平放在地面', '下背部完全支撑'],
154
+ },
155
+ ],
156
+ columns: 2,
157
+ },
158
+ {
159
+ type: 'diagnostic',
160
+ variant: 'info',
161
+ title: '快速姿势检查清单',
162
+ icon: 'mdi:clipboard-check',
163
+ badge: '行动',
164
+ html: '<p style="margin:0">背靠椅子坐好。检查膝盖后侧与座椅边缘之间是否有小间隙。确保打字时手腕是直的。显示器顶部不应高于眼睛。每30分钟休息2分钟走动一下。</p>',
165
+ },
166
+ {
167
+ type: 'title',
168
+ text: '坐与站的科学',
169
+ level: 3,
170
+ },
171
+ {
172
+ type: 'paragraph',
173
+ html: '人体并非设计为长时间保持同一姿势。坐着时,腰椎间盘承受的压力比站立时增加40%。静止站立时,血液会在腿部淤积,心脏需要更努力地将血液泵回。最健康的工作节奏是每30到60分钟交替坐与站,并结合短距离步行。本工具可计算两种模式,帮助你正确设置升降桌。',
174
+ },
175
+ {
176
+ type: 'summary',
177
+ title: '如何打造人体工学工作空间',
178
+ items: [
179
+ '测量你的赤脚身高,单位为厘米。',
180
+ '使用本模拟器获取椅子、桌子和显示器的精确高度。',
181
+ '先调整椅子,再调整桌子,最后调整显示器。',
182
+ '如果使用升降桌,将其设置为比坐姿桌高30厘米。',
183
+ '将显示器放在约一个臂长之外,向后倾斜10到20度。',
184
+ '每30分钟休息2分钟,走动或拉伸一下。',
185
+ ],
186
+ },
187
+ ],
188
+ ui: {
189
+ labelMode: '工作空间模式',
190
+ modeSit: '坐姿',
191
+ modeStand: '站姿',
192
+ labelHeight: '你的身高',
193
+ unitCm: 'cm',
194
+ labelGender: '体型',
195
+ genderMale: '男性',
196
+ genderFemale: '女性',
197
+ labelChair: '椅子',
198
+ labelDesk: '桌子',
199
+ labelMonitor: '显示器',
200
+ labelDistance: '距离',
201
+ labelAngle: '角度',
202
+ labelGood: '良好',
203
+ labelAdjust: '调整',
204
+ badgeChair: '座面',
205
+ badgeDesk: '台面',
206
+ badgeMonitor: '屏幕',
207
+ tipScreenLow: '抬高显示器',
208
+ tipScreenHigh: '降低显示器',
209
+ tipDeskLow: '抬高桌子',
210
+ tipDeskHigh: '降低桌子',
211
+ tipChairLow: '抬高椅子',
212
+ tipChairHigh: '降低椅子',
213
+ tipDistance: '将屏幕移至臂长距离',
214
+ },
215
+ };
@@ -0,0 +1,9 @@
1
+ import type { ToolDefinition } from '../../types';
2
+ import { deskErgonomics } from './entry';
3
+ export * from './entry';
4
+ export const DESK_ERGONOMICS_TOOL: ToolDefinition = {
5
+ entry: deskErgonomics,
6
+ Component: () => import('./component.astro'),
7
+ SEOComponent: () => import('./seo.astro'),
8
+ BibliographyComponent: () => import('./bibliography.astro'),
9
+ };
@@ -0,0 +1,49 @@
1
+ export interface ErgoResult {
2
+ chairHeight: number;
3
+ deskHeight: number;
4
+ monitorHeight: number;
5
+ monitorDistance: number;
6
+ viewAngle: number;
7
+ elbowAngle: number;
8
+ isGood: boolean;
9
+ }
10
+
11
+ function sitValues(h: number) {
12
+ return {
13
+ chairHeight: Math.round(h * 0.25),
14
+ deskHeight: Math.round(h * 0.28),
15
+ monitorHeight: Math.round(h * 0.48),
16
+ monitorDistance: Math.round(h * 0.38),
17
+ viewAngle: -15,
18
+ elbowAngle: 90,
19
+ };
20
+ }
21
+
22
+ function standValues(h: number) {
23
+ return {
24
+ chairHeight: 0,
25
+ deskHeight: Math.round(h * 0.43),
26
+ monitorHeight: Math.round(h * 0.72),
27
+ monitorDistance: Math.round(h * 0.38),
28
+ viewAngle: -15,
29
+ elbowAngle: 90,
30
+ };
31
+ }
32
+
33
+ export function calculateErgonomics(
34
+ heightCm: number,
35
+ gender: 'male' | 'female',
36
+ mode: 'sit' | 'stand',
37
+ ): ErgoResult {
38
+ const ratio = gender === 'female' ? 0.96 : 1.0;
39
+ const vals = mode === 'sit' ? sitValues(heightCm * ratio) : standValues(heightCm * ratio);
40
+ return { ...vals, isGood: heightCm >= 150 && heightCm <= 200 };
41
+ }
42
+
43
+ export function fmt0(n: number): string {
44
+ return Math.round(n).toString();
45
+ }
46
+
47
+ export function clamp(val: number, min: number, max: number): number {
48
+ return Math.min(max, Math.max(min, val));
49
+ }
@@ -0,0 +1,15 @@
1
+ ---
2
+ import { SEORenderer } from '@jjlmoya/utils-shared';
3
+ import { deskErgonomics } from './index';
4
+ import type { KnownLocale } from '../../types';
5
+
6
+ interface Props {
7
+ locale?: KnownLocale;
8
+ }
9
+
10
+ const { locale = 'es' } = Astro.props;
11
+ const content = await deskErgonomics.i18n[locale]?.();
12
+ if (!content) return null;
13
+ ---
14
+
15
+ {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
@@ -0,0 +1,28 @@
1
+ export interface DeskErgonomicsUI extends Record<string, string> {
2
+ labelMode: string;
3
+ modeSit: string;
4
+ modeStand: string;
5
+ labelHeight: string;
6
+ unitCm: string;
7
+ labelGender: string;
8
+ genderMale: string;
9
+ genderFemale: string;
10
+ labelChair: string;
11
+ labelDesk: string;
12
+ labelMonitor: string;
13
+ labelDistance: string;
14
+ labelAngle: string;
15
+ labelGood: string;
16
+ labelAdjust: string;
17
+ badgeChair: string;
18
+ badgeDesk: string;
19
+ badgeMonitor: string;
20
+ badgeDistance: string;
21
+ tipScreenLow: string;
22
+ tipScreenHigh: string;
23
+ tipDeskLow: string;
24
+ tipDeskHigh: string;
25
+ tipChairLow: string;
26
+ tipChairHigh: string;
27
+ tipDistance: string;
28
+ }
@@ -1,14 +1,14 @@
1
1
  export const bibliography = [
2
2
  {
3
3
  name: 'Standby Power and Vampire Draw: Lawrence Berkeley National Laboratory',
4
- url: 'https://standby.lbl.gov/',
4
+ url: 'https://standby.lbl.gov/standby-power-definitions',
5
5
  },
6
6
  {
7
7
  name: 'Energy Consumption of Household Appliances: U.S. Department of Energy',
8
- url: 'https://www.energy.gov/energysaver/energy-saver',
8
+ url: 'https://www.energy.gov/energysaver/appliances-and-electronics',
9
9
  },
10
10
  {
11
11
  name: 'Phantom Load Calculator: Natural Resources Canada',
12
- url: 'https://www.nrcan.gc.ca/energy-efficiency/energy-efficiency-residential/14227',
12
+ url: 'https://www.hydroquebec.com/residential/customer-space/electricity-use/tools/phantom-power-calculator.html',
13
13
  },
14
14
  ];
package/src/tools.ts CHANGED
@@ -11,6 +11,7 @@ import { WIFI_RANGE_SIMULATOR_TOOL } from './tool/wifiRangeSimulator/index';
11
11
  import { AC_TONNAGE_CALCULATOR_TOOL } from './tool/acTonnageCalculator/index';
12
12
  import { WALL_PAINTING_CALCULATOR_TOOL } from './tool/wallPaintingCalculator/index';
13
13
  import { VAMPIRE_DRAW_SIMULATOR_TOOL } from './tool/vampireDrawSimulator/index';
14
+ import { DESK_ERGONOMICS_TOOL } from './tool/deskErgonomics/index';
14
15
 
15
16
  export const ALL_TOOLS: ToolDefinition[] = [
16
17
  QR_GENERATOR_TOOL,
@@ -24,5 +25,6 @@ export const ALL_TOOLS: ToolDefinition[] = [
24
25
  AC_TONNAGE_CALCULATOR_TOOL,
25
26
  WALL_PAINTING_CALCULATOR_TOOL,
26
27
  VAMPIRE_DRAW_SIMULATOR_TOOL,
28
+ DESK_ERGONOMICS_TOOL,
27
29
  ];
28
30