@jjlmoya/utils-hardware 1.15.0 → 1.17.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 +1 -1
- package/src/category/i18n/ru.ts +5 -5
- package/src/category/index.ts +3 -1
- package/src/entries.ts +7 -1
- package/src/index.ts +2 -0
- package/src/pages/[locale]/[slug].astro +28 -12
- package/src/tests/locale_completeness.test.ts +7 -21
- package/src/tests/no_h1_in_components.test.ts +1 -1
- package/src/tests/shared-test-helpers.ts +56 -0
- package/src/tests/tool_exports.test.ts +34 -0
- package/src/tests/tool_validation.test.ts +2 -2
- package/src/tool/batteryHealthEstimator/bibliography.ts +13 -0
- package/src/tool/batteryHealthEstimator/i18n/de.ts +3 -13
- package/src/tool/batteryHealthEstimator/i18n/en.ts +3 -13
- package/src/tool/batteryHealthEstimator/i18n/es.ts +2 -12
- package/src/tool/batteryHealthEstimator/i18n/fr.ts +3 -13
- package/src/tool/batteryHealthEstimator/i18n/id.ts +3 -13
- package/src/tool/batteryHealthEstimator/i18n/it.ts +2 -12
- package/src/tool/batteryHealthEstimator/i18n/ja.ts +2 -12
- package/src/tool/batteryHealthEstimator/i18n/ko.ts +2 -12
- package/src/tool/batteryHealthEstimator/i18n/nl.ts +3 -13
- package/src/tool/batteryHealthEstimator/i18n/pl.ts +3 -13
- package/src/tool/batteryHealthEstimator/i18n/pt.ts +3 -13
- package/src/tool/batteryHealthEstimator/i18n/ru.ts +7 -17
- package/src/tool/batteryHealthEstimator/i18n/sv.ts +3 -13
- package/src/tool/batteryHealthEstimator/i18n/tr.ts +3 -13
- package/src/tool/batteryHealthEstimator/i18n/zh.ts +3 -13
- package/src/tool/batteryHealthEstimator/seo.astro +3 -2
- package/src/tool/colorAccuracyTest/bibliography.astro +14 -0
- package/src/tool/colorAccuracyTest/bibliography.ts +16 -0
- package/src/tool/colorAccuracyTest/color-accuracy-test.css +728 -0
- package/src/tool/colorAccuracyTest/component.astro +157 -0
- package/src/tool/colorAccuracyTest/entry.ts +29 -0
- package/src/tool/colorAccuracyTest/i18n/de.ts +284 -0
- package/src/tool/colorAccuracyTest/i18n/en.ts +284 -0
- package/src/tool/colorAccuracyTest/i18n/es.ts +284 -0
- package/src/tool/colorAccuracyTest/i18n/fr.ts +284 -0
- package/src/tool/colorAccuracyTest/i18n/id.ts +284 -0
- package/src/tool/colorAccuracyTest/i18n/it.ts +284 -0
- package/src/tool/colorAccuracyTest/i18n/ja.ts +284 -0
- package/src/tool/colorAccuracyTest/i18n/ko.ts +284 -0
- package/src/tool/colorAccuracyTest/i18n/nl.ts +284 -0
- package/src/tool/colorAccuracyTest/i18n/pl.ts +284 -0
- package/src/tool/colorAccuracyTest/i18n/pt.ts +284 -0
- package/src/tool/colorAccuracyTest/i18n/ru.ts +284 -0
- package/src/tool/colorAccuracyTest/i18n/sv.ts +284 -0
- package/src/tool/colorAccuracyTest/i18n/tr.ts +284 -0
- package/src/tool/colorAccuracyTest/i18n/zh.ts +284 -0
- package/src/tool/colorAccuracyTest/index.ts +9 -0
- package/src/tool/colorAccuracyTest/logic.ts +226 -0
- package/src/tool/colorAccuracyTest/seo.astro +15 -0
- package/src/tool/colorAccuracyTest/ui.ts +27 -0
- package/src/tool/deadPixelTest/bibliography.ts +13 -0
- package/src/tool/deadPixelTest/i18n/de.ts +2 -12
- package/src/tool/deadPixelTest/i18n/en.ts +2 -12
- package/src/tool/deadPixelTest/i18n/es.ts +2 -12
- package/src/tool/deadPixelTest/i18n/fr.ts +2 -12
- package/src/tool/deadPixelTest/i18n/id.ts +2 -12
- package/src/tool/deadPixelTest/i18n/it.ts +2 -12
- package/src/tool/deadPixelTest/i18n/ja.ts +2 -12
- package/src/tool/deadPixelTest/i18n/ko.ts +2 -12
- package/src/tool/deadPixelTest/i18n/nl.ts +2 -12
- package/src/tool/deadPixelTest/i18n/pl.ts +2 -12
- package/src/tool/deadPixelTest/i18n/pt.ts +2 -12
- package/src/tool/deadPixelTest/i18n/ru.ts +2 -12
- package/src/tool/deadPixelTest/i18n/sv.ts +2 -12
- package/src/tool/deadPixelTest/i18n/tr.ts +2 -12
- package/src/tool/deadPixelTest/i18n/zh.ts +2 -12
- package/src/tool/deadPixelTest/seo.astro +3 -2
- package/src/tool/gamepadTest/bibliography.ts +12 -0
- package/src/tool/gamepadTest/i18n/de.ts +2 -12
- package/src/tool/gamepadTest/i18n/en.ts +2 -12
- package/src/tool/gamepadTest/i18n/es.ts +2 -12
- package/src/tool/gamepadTest/i18n/fr.ts +2 -12
- package/src/tool/gamepadTest/i18n/id.ts +2 -12
- package/src/tool/gamepadTest/i18n/it.ts +2 -12
- package/src/tool/gamepadTest/i18n/ja.ts +2 -12
- package/src/tool/gamepadTest/i18n/ko.ts +2 -12
- package/src/tool/gamepadTest/i18n/nl.ts +2 -12
- package/src/tool/gamepadTest/i18n/pl.ts +2 -12
- package/src/tool/gamepadTest/i18n/pt.ts +2 -12
- package/src/tool/gamepadTest/i18n/ru.ts +3 -13
- package/src/tool/gamepadTest/i18n/sv.ts +2 -12
- package/src/tool/gamepadTest/i18n/tr.ts +2 -12
- package/src/tool/gamepadTest/i18n/zh.ts +2 -12
- package/src/tool/gamepadTest/seo.astro +3 -2
- package/src/tool/gamepadVibrationTester/bibliography.ts +13 -0
- package/src/tool/gamepadVibrationTester/i18n/de.ts +2 -12
- package/src/tool/gamepadVibrationTester/i18n/en.ts +2 -12
- package/src/tool/gamepadVibrationTester/i18n/es.ts +2 -12
- package/src/tool/gamepadVibrationTester/i18n/fr.ts +2 -12
- package/src/tool/gamepadVibrationTester/i18n/id.ts +2 -12
- package/src/tool/gamepadVibrationTester/i18n/it.ts +2 -12
- package/src/tool/gamepadVibrationTester/i18n/ja.ts +2 -12
- package/src/tool/gamepadVibrationTester/i18n/ko.ts +2 -12
- package/src/tool/gamepadVibrationTester/i18n/nl.ts +2 -12
- package/src/tool/gamepadVibrationTester/i18n/pl.ts +2 -12
- package/src/tool/gamepadVibrationTester/i18n/pt.ts +2 -12
- package/src/tool/gamepadVibrationTester/i18n/ru.ts +5 -15
- package/src/tool/gamepadVibrationTester/i18n/sv.ts +2 -12
- package/src/tool/gamepadVibrationTester/i18n/tr.ts +2 -12
- package/src/tool/gamepadVibrationTester/i18n/zh.ts +2 -12
- package/src/tool/gamepadVibrationTester/seo.astro +3 -2
- package/src/tool/keyboardTest/bibliography.ts +13 -0
- package/src/tool/keyboardTest/i18n/de.ts +2 -12
- package/src/tool/keyboardTest/i18n/en.ts +2 -12
- package/src/tool/keyboardTest/i18n/es.ts +2 -12
- package/src/tool/keyboardTest/i18n/fr.ts +2 -12
- package/src/tool/keyboardTest/i18n/id.ts +2 -12
- package/src/tool/keyboardTest/i18n/it.ts +2 -12
- package/src/tool/keyboardTest/i18n/ja.ts +2 -12
- package/src/tool/keyboardTest/i18n/ko.ts +2 -12
- package/src/tool/keyboardTest/i18n/nl.ts +2 -12
- package/src/tool/keyboardTest/i18n/pl.ts +2 -12
- package/src/tool/keyboardTest/i18n/pt.ts +2 -12
- package/src/tool/keyboardTest/i18n/ru.ts +2 -12
- package/src/tool/keyboardTest/i18n/sv.ts +2 -12
- package/src/tool/keyboardTest/i18n/tr.ts +2 -12
- package/src/tool/keyboardTest/i18n/zh.ts +2 -12
- package/src/tool/keyboardTest/seo.astro +3 -2
- package/src/tool/mousePollingTest/bibliography.ts +13 -0
- package/src/tool/mousePollingTest/i18n/de.ts +3 -13
- package/src/tool/mousePollingTest/i18n/en.ts +3 -13
- package/src/tool/mousePollingTest/i18n/es.ts +3 -13
- package/src/tool/mousePollingTest/i18n/fr.ts +3 -13
- package/src/tool/mousePollingTest/i18n/id.ts +3 -13
- package/src/tool/mousePollingTest/i18n/it.ts +3 -13
- package/src/tool/mousePollingTest/i18n/ja.ts +3 -13
- package/src/tool/mousePollingTest/i18n/ko.ts +3 -13
- package/src/tool/mousePollingTest/i18n/nl.ts +3 -13
- package/src/tool/mousePollingTest/i18n/pl.ts +3 -13
- package/src/tool/mousePollingTest/i18n/pt.ts +3 -13
- package/src/tool/mousePollingTest/i18n/ru.ts +5 -15
- package/src/tool/mousePollingTest/i18n/sv.ts +3 -13
- package/src/tool/mousePollingTest/i18n/tr.ts +3 -13
- package/src/tool/mousePollingTest/i18n/zh.ts +3 -13
- package/src/tool/mousePollingTest/seo.astro +3 -2
- package/src/tool/refreshRateDetector/bibliography.astro +14 -0
- package/src/tool/refreshRateDetector/bibliography.ts +12 -0
- package/src/tool/refreshRateDetector/component.astro +206 -0
- package/src/tool/refreshRateDetector/entry.ts +29 -0
- package/src/tool/refreshRateDetector/i18n/de.ts +196 -0
- package/src/tool/refreshRateDetector/i18n/en.ts +196 -0
- package/src/tool/refreshRateDetector/i18n/es.ts +196 -0
- package/src/tool/refreshRateDetector/i18n/fr.ts +196 -0
- package/src/tool/refreshRateDetector/i18n/id.ts +196 -0
- package/src/tool/refreshRateDetector/i18n/it.ts +196 -0
- package/src/tool/refreshRateDetector/i18n/ja.ts +196 -0
- package/src/tool/refreshRateDetector/i18n/ko.ts +196 -0
- package/src/tool/refreshRateDetector/i18n/nl.ts +196 -0
- package/src/tool/refreshRateDetector/i18n/pl.ts +196 -0
- package/src/tool/refreshRateDetector/i18n/pt.ts +196 -0
- package/src/tool/refreshRateDetector/i18n/ru.ts +196 -0
- package/src/tool/refreshRateDetector/i18n/sv.ts +196 -0
- package/src/tool/refreshRateDetector/i18n/tr.ts +196 -0
- package/src/tool/refreshRateDetector/i18n/zh.ts +196 -0
- package/src/tool/refreshRateDetector/index.ts +11 -0
- package/src/tool/refreshRateDetector/monitor-refresh-rate-detector.css +342 -0
- package/src/tool/refreshRateDetector/seo.astro +15 -0
- package/src/tool/refreshRateDetector/ui.ts +24 -0
- package/src/tool/toneGenerator/bibliography.ts +13 -0
- package/src/tool/toneGenerator/i18n/de.ts +3 -13
- package/src/tool/toneGenerator/i18n/en.ts +3 -13
- package/src/tool/toneGenerator/i18n/es.ts +2 -12
- package/src/tool/toneGenerator/i18n/fr.ts +3 -13
- package/src/tool/toneGenerator/i18n/id.ts +3 -13
- package/src/tool/toneGenerator/i18n/it.ts +3 -13
- package/src/tool/toneGenerator/i18n/ja.ts +2 -12
- package/src/tool/toneGenerator/i18n/ko.ts +2 -12
- package/src/tool/toneGenerator/i18n/nl.ts +3 -13
- package/src/tool/toneGenerator/i18n/pl.ts +3 -13
- package/src/tool/toneGenerator/i18n/pt.ts +3 -13
- package/src/tool/toneGenerator/i18n/ru.ts +6 -16
- package/src/tool/toneGenerator/i18n/sv.ts +3 -13
- package/src/tool/toneGenerator/i18n/tr.ts +2 -12
- package/src/tool/toneGenerator/i18n/zh.ts +2 -12
- package/src/tool/toneGenerator/seo.astro +3 -2
- package/src/tools.ts +3 -1
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
/* Variables for light mode */
|
|
2
|
+
:root {
|
|
3
|
+
--rrd-bg: #fff;
|
|
4
|
+
--rrd-text: #000;
|
|
5
|
+
--rrd-text-muted: #555;
|
|
6
|
+
--rrd-border: #d0d0d0;
|
|
7
|
+
--rrd-metric-bg: #f8f8f8;
|
|
8
|
+
--rrd-button-bg: #f0f0f0;
|
|
9
|
+
--rrd-button-border: #aaa;
|
|
10
|
+
--rrd-button-text: #222;
|
|
11
|
+
--rrd-monitor-bezel: #222;
|
|
12
|
+
--rrd-monitor-screen: #050505;
|
|
13
|
+
--rrd-hz-text: #fff;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/* Variables for dark mode */
|
|
17
|
+
.theme-dark {
|
|
18
|
+
--rrd-bg: #1a1a1a;
|
|
19
|
+
--rrd-text: #f0f0f0;
|
|
20
|
+
--rrd-text-muted: #999;
|
|
21
|
+
--rrd-border: #333;
|
|
22
|
+
--rrd-metric-bg: #2a2a2a;
|
|
23
|
+
--rrd-button-bg: #2a2a2a;
|
|
24
|
+
--rrd-button-border: #444;
|
|
25
|
+
--rrd-button-text: #e0e0e0;
|
|
26
|
+
--rrd-monitor-bezel: #f5f5f5;
|
|
27
|
+
--rrd-monitor-screen: #0a0a0a;
|
|
28
|
+
--rrd-hz-text: #fff;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.rrd-wrapper {
|
|
32
|
+
width: 100%;
|
|
33
|
+
max-width: 100%;
|
|
34
|
+
background: transparent;
|
|
35
|
+
color: var(--rrd-text);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.rrd-container {
|
|
39
|
+
width: 100%;
|
|
40
|
+
max-width: 100%;
|
|
41
|
+
display: flex;
|
|
42
|
+
justify-content: center;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.rrd-card {
|
|
46
|
+
width: 100%;
|
|
47
|
+
max-width: 800px;
|
|
48
|
+
background: var(--rrd-bg);
|
|
49
|
+
border: 1px solid var(--rrd-border);
|
|
50
|
+
border-radius: 12px;
|
|
51
|
+
padding: 2rem;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.rrd-layout {
|
|
55
|
+
display: grid;
|
|
56
|
+
grid-template-columns: 1fr 1fr;
|
|
57
|
+
gap: 2rem;
|
|
58
|
+
align-items: stretch;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/* LEFT COLUMN: METRICS */
|
|
62
|
+
.rrd-left {
|
|
63
|
+
display: flex;
|
|
64
|
+
flex-direction: column;
|
|
65
|
+
gap: 2rem;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.rrd-metrics {
|
|
69
|
+
display: grid;
|
|
70
|
+
grid-template-columns: 1fr 1fr;
|
|
71
|
+
gap: 1.5rem;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.rrd-metric-item {
|
|
75
|
+
display: flex;
|
|
76
|
+
flex-direction: column;
|
|
77
|
+
gap: 0.5rem;
|
|
78
|
+
padding: 1rem;
|
|
79
|
+
background: var(--rrd-metric-bg);
|
|
80
|
+
border: 1px solid var(--rrd-border);
|
|
81
|
+
border-radius: 8px;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.rrd-metric-label {
|
|
85
|
+
font-size: 0.75rem;
|
|
86
|
+
font-weight: 600;
|
|
87
|
+
text-transform: uppercase;
|
|
88
|
+
letter-spacing: 0.05em;
|
|
89
|
+
color: var(--rrd-text-muted);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.rrd-metric-value {
|
|
93
|
+
font-size: 1.5rem;
|
|
94
|
+
font-weight: 700;
|
|
95
|
+
color: var(--rrd-text);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.rrd-metric-unit {
|
|
99
|
+
font-size: 0.75rem;
|
|
100
|
+
color: var(--rrd-text-muted);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.rrd-mode-selector {
|
|
104
|
+
display: grid;
|
|
105
|
+
grid-template-columns: 1fr 1fr;
|
|
106
|
+
gap: 0.75rem;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.rrd-mode-btn {
|
|
110
|
+
padding: 0.75rem 1rem;
|
|
111
|
+
background: var(--rrd-button-bg);
|
|
112
|
+
border: 2px solid var(--rrd-button-border);
|
|
113
|
+
border-radius: 6px;
|
|
114
|
+
color: var(--rrd-button-text);
|
|
115
|
+
font-size: 0.875rem;
|
|
116
|
+
font-weight: 600;
|
|
117
|
+
cursor: pointer;
|
|
118
|
+
transition: all 200ms ease;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.rrd-mode-btn:hover {
|
|
122
|
+
background: var(--rrd-border);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.rrd-mode-btn.selected {
|
|
126
|
+
background: var(--rrd-text);
|
|
127
|
+
color: var(--rrd-bg);
|
|
128
|
+
border-color: var(--rrd-text);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/* RIGHT COLUMN: MONITOR */
|
|
132
|
+
.rrd-right {
|
|
133
|
+
display: flex;
|
|
134
|
+
align-items: center;
|
|
135
|
+
justify-content: center;
|
|
136
|
+
min-height: 300px;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
.rrd-monitor {
|
|
140
|
+
display: flex;
|
|
141
|
+
flex-direction: column;
|
|
142
|
+
align-items: center;
|
|
143
|
+
gap: 1rem;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
.rrd-monitor-bezel {
|
|
147
|
+
width: 280px;
|
|
148
|
+
aspect-ratio: 16 / 10;
|
|
149
|
+
background: var(--rrd-monitor-bezel);
|
|
150
|
+
border: 8px solid var(--rrd-monitor-bezel);
|
|
151
|
+
border-radius: 12px;
|
|
152
|
+
padding: 12px;
|
|
153
|
+
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
.rrd-monitor-screen {
|
|
157
|
+
width: 100%;
|
|
158
|
+
height: 100%;
|
|
159
|
+
background: var(--rrd-monitor-screen);
|
|
160
|
+
border-radius: 4px;
|
|
161
|
+
display: flex;
|
|
162
|
+
align-items: center;
|
|
163
|
+
justify-content: center;
|
|
164
|
+
overflow: hidden;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
.rrd-monitor-content {
|
|
168
|
+
width: 100%;
|
|
169
|
+
height: 100%;
|
|
170
|
+
display: flex;
|
|
171
|
+
align-items: center;
|
|
172
|
+
justify-content: center;
|
|
173
|
+
position: relative;
|
|
174
|
+
overflow: hidden;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
.rrd-monitor-content::before {
|
|
178
|
+
content: '';
|
|
179
|
+
position: absolute;
|
|
180
|
+
top: 0;
|
|
181
|
+
left: 0;
|
|
182
|
+
width: 100%;
|
|
183
|
+
height: 100%;
|
|
184
|
+
background: repeating-linear-gradient(
|
|
185
|
+
0deg,
|
|
186
|
+
rgba(255, 255, 255, 0.15) 0,
|
|
187
|
+
rgba(255, 255, 255, 0.15) 1px,
|
|
188
|
+
transparent 1px,
|
|
189
|
+
transparent 2px
|
|
190
|
+
);
|
|
191
|
+
pointer-events: none;
|
|
192
|
+
animation: rrd-scanlines 8ms linear infinite;
|
|
193
|
+
z-index: 1;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
.rrd-hz-display {
|
|
197
|
+
font-size: 4rem;
|
|
198
|
+
font-weight: 900;
|
|
199
|
+
color: var(--rrd-hz-text);
|
|
200
|
+
line-height: 1;
|
|
201
|
+
text-shadow:
|
|
202
|
+
0 0 10px rgba(255, 255, 255, 0.8),
|
|
203
|
+
0 0 20px rgba(255, 255, 255, 0.6),
|
|
204
|
+
0 0 40px rgba(255, 255, 255, 0.4);
|
|
205
|
+
position: relative;
|
|
206
|
+
z-index: 2;
|
|
207
|
+
animation: rrd-glitch 2s ease-in-out infinite;
|
|
208
|
+
letter-spacing: 0.1em;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
.rrd-monitor-stand {
|
|
212
|
+
width: 100px;
|
|
213
|
+
height: 12px;
|
|
214
|
+
background: var(--rrd-monitor-bezel);
|
|
215
|
+
border-radius: 6px;
|
|
216
|
+
position: relative;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
.rrd-monitor-stand::after {
|
|
220
|
+
content: '';
|
|
221
|
+
position: absolute;
|
|
222
|
+
bottom: -8px;
|
|
223
|
+
left: 50%;
|
|
224
|
+
transform: translateX(-50%);
|
|
225
|
+
width: 60px;
|
|
226
|
+
height: 8px;
|
|
227
|
+
background: var(--rrd-monitor-bezel);
|
|
228
|
+
border-radius: 4px;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
@keyframes rrd-scanlines {
|
|
232
|
+
0% {
|
|
233
|
+
transform: translateY(0);
|
|
234
|
+
}
|
|
235
|
+
100% {
|
|
236
|
+
transform: translateY(20px);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
@keyframes rrd-glitch {
|
|
241
|
+
0%, 100% {
|
|
242
|
+
opacity: 1;
|
|
243
|
+
transform: translate(0, 0) skewX(0deg);
|
|
244
|
+
text-shadow:
|
|
245
|
+
0 0 10px rgba(255, 255, 255, 0.8),
|
|
246
|
+
0 0 20px rgba(255, 255, 255, 0.6),
|
|
247
|
+
0 0 40px rgba(255, 255, 255, 0.4);
|
|
248
|
+
filter: contrast(1);
|
|
249
|
+
}
|
|
250
|
+
10% {
|
|
251
|
+
opacity: 0.8;
|
|
252
|
+
transform: translate(-3px, 2px) skewX(-5deg);
|
|
253
|
+
text-shadow:
|
|
254
|
+
-3px 0 15px rgba(255, 255, 255, 0.9),
|
|
255
|
+
3px 0 15px rgba(255, 255, 255, 0.5);
|
|
256
|
+
filter: contrast(1.2);
|
|
257
|
+
}
|
|
258
|
+
20% {
|
|
259
|
+
opacity: 1;
|
|
260
|
+
transform: translate(3px, -2px) skewX(5deg);
|
|
261
|
+
text-shadow:
|
|
262
|
+
3px 0 15px rgba(255, 255, 255, 0.9),
|
|
263
|
+
-3px 0 15px rgba(255, 255, 255, 0.5);
|
|
264
|
+
filter: contrast(1.3);
|
|
265
|
+
}
|
|
266
|
+
30% {
|
|
267
|
+
opacity: 0.85;
|
|
268
|
+
transform: translate(-2px, 1px) skewX(-3deg);
|
|
269
|
+
text-shadow:
|
|
270
|
+
0 0 20px rgba(255, 255, 255, 0.7),
|
|
271
|
+
0 0 40px rgba(255, 255, 255, 0.5);
|
|
272
|
+
filter: contrast(1.1);
|
|
273
|
+
}
|
|
274
|
+
40% {
|
|
275
|
+
opacity: 1;
|
|
276
|
+
transform: translate(2px, -1px) skewX(3deg);
|
|
277
|
+
text-shadow:
|
|
278
|
+
0 0 30px rgba(255, 255, 255, 0.8),
|
|
279
|
+
0 0 50px rgba(255, 255, 255, 0.6);
|
|
280
|
+
filter: contrast(1.4);
|
|
281
|
+
}
|
|
282
|
+
50% {
|
|
283
|
+
opacity: 0.9;
|
|
284
|
+
transform: translate(-1px, 0) skewX(-2deg);
|
|
285
|
+
text-shadow:
|
|
286
|
+
-2px 0 10px rgba(255, 255, 255, 0.8),
|
|
287
|
+
2px 0 10px rgba(255, 255, 255, 0.6);
|
|
288
|
+
filter: contrast(1.2);
|
|
289
|
+
}
|
|
290
|
+
60% {
|
|
291
|
+
opacity: 1;
|
|
292
|
+
transform: translate(1px, 2px) skewX(2deg);
|
|
293
|
+
text-shadow:
|
|
294
|
+
0 0 25px rgba(255, 255, 255, 0.9),
|
|
295
|
+
0 0 45px rgba(255, 255, 255, 0.7);
|
|
296
|
+
filter: contrast(1.3);
|
|
297
|
+
}
|
|
298
|
+
70% {
|
|
299
|
+
opacity: 0.8;
|
|
300
|
+
transform: translate(-2px, -2px) skewX(-4deg);
|
|
301
|
+
text-shadow:
|
|
302
|
+
-3px 0 20px rgba(255, 255, 255, 0.85),
|
|
303
|
+
3px 0 20px rgba(255, 255, 255, 0.5);
|
|
304
|
+
filter: contrast(1.25);
|
|
305
|
+
}
|
|
306
|
+
80% {
|
|
307
|
+
opacity: 1;
|
|
308
|
+
transform: translate(2px, 1px) skewX(4deg);
|
|
309
|
+
text-shadow:
|
|
310
|
+
3px 0 20px rgba(255, 255, 255, 0.85),
|
|
311
|
+
-3px 0 20px rgba(255, 255, 255, 0.5);
|
|
312
|
+
filter: contrast(1.35);
|
|
313
|
+
}
|
|
314
|
+
90% {
|
|
315
|
+
opacity: 0.9;
|
|
316
|
+
transform: translate(-1px, -1px) skewX(-2deg);
|
|
317
|
+
text-shadow:
|
|
318
|
+
0 0 15px rgba(255, 255, 255, 0.8),
|
|
319
|
+
0 0 30px rgba(255, 255, 255, 0.6);
|
|
320
|
+
filter: contrast(1.15);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
/* Responsive */
|
|
325
|
+
@media (max-width: 768px) {
|
|
326
|
+
.rrd-layout {
|
|
327
|
+
grid-template-columns: 1fr;
|
|
328
|
+
gap: 1.5rem;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
.rrd-metrics {
|
|
332
|
+
grid-template-columns: 1fr 1fr;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
.rrd-monitor-bezel {
|
|
336
|
+
width: 240px;
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
.rrd-hz-display {
|
|
340
|
+
font-size: 3rem;
|
|
341
|
+
}
|
|
342
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
import { SEORenderer } from '@jjlmoya/utils-shared';
|
|
3
|
+
import { refreshRateDetector } 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 refreshRateDetector.i18n[locale]?.();
|
|
12
|
+
if (!content) return null;
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
{content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface RefreshRateDetectorUI extends Record<string, string> {
|
|
2
|
+
badge: string;
|
|
3
|
+
title: string;
|
|
4
|
+
description: string;
|
|
5
|
+
modeStable: string;
|
|
6
|
+
modeFast: string;
|
|
7
|
+
measurementStatus: string;
|
|
8
|
+
currentHz: string;
|
|
9
|
+
averageHz: string;
|
|
10
|
+
maxHz: string;
|
|
11
|
+
minHz: string;
|
|
12
|
+
standardDetected: string;
|
|
13
|
+
frameSkippingTest: string;
|
|
14
|
+
startMeasurement: string;
|
|
15
|
+
resetMeasurement: string;
|
|
16
|
+
copyResult: string;
|
|
17
|
+
copiedFeedback: string;
|
|
18
|
+
optimalConfiguration: string;
|
|
19
|
+
suboptimalConfiguration: string;
|
|
20
|
+
unstableRefreshRate: string;
|
|
21
|
+
measurementNotStarted: string;
|
|
22
|
+
switchMonitorHint: string;
|
|
23
|
+
incompatibleBrowserMsg: string;
|
|
24
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { BibliographyEntry } from '../../../types';
|
|
2
|
+
|
|
3
|
+
export const bibliography: BibliographyEntry[] = [
|
|
4
|
+
|
|
5
|
+
{
|
|
6
|
+
name: 'MDN Web Docs -Web Audio API',
|
|
7
|
+
url: 'https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API',
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
name: 'ISO 226:2023 -Equal-loudness contours',
|
|
11
|
+
url: 'https://www.iso.org/standard/83117.html',
|
|
12
|
+
},
|
|
13
|
+
];
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
2
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
3
|
import type { ToneGeneratorUI } from '../ui';
|
|
4
|
+
import { bibliography } from '../bibliography';
|
|
4
5
|
|
|
5
6
|
const slug = 'ton-frequenz-generator-online';
|
|
6
7
|
const title = 'Online Ton und Frequenzgenerator';
|
|
@@ -87,21 +88,10 @@ export const content: ToolLocaleContent<ToneGeneratorUI> = {
|
|
|
87
88
|
slug,
|
|
88
89
|
title,
|
|
89
90
|
description,
|
|
90
|
-
faqTitle: 'Häufig gestellte Fragen',
|
|
91
91
|
faq: faqData,
|
|
92
|
-
bibliographyTitle: 'Referenzen',
|
|
93
|
-
bibliography: [
|
|
94
|
-
{
|
|
95
|
-
name: 'MDN Web Docs — Web Audio API',
|
|
96
|
-
url: 'https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API',
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
name: 'ISO 226:2023 — Equal-loudness contours',
|
|
100
|
-
url: 'https://www.iso.org/standard/83117.html',
|
|
101
|
-
},
|
|
102
|
-
],
|
|
103
92
|
howTo: howToData,
|
|
104
93
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
94
|
+
bibliography,
|
|
105
95
|
seo: [
|
|
106
96
|
{ type: 'title', text: 'Alles über Frequenzen und Schallwellen', level: 2 },
|
|
107
97
|
{
|
|
@@ -116,7 +106,7 @@ export const content: ToolLocaleContent<ToneGeneratorUI> = {
|
|
|
116
106
|
{ type: 'title', text: 'Wellenformen und ihre Verwendung', level: 3 },
|
|
117
107
|
{
|
|
118
108
|
type: 'paragraph',
|
|
119
|
-
html: '<strong>Sinus:</strong> reiner Ton ohne Oberwellen, wird in medizinischen Hörtests und zur Instrumentenkalibrierung verwendet. <strong>Rechteck:</strong> reich an ungeraden Oberwellen, klingt wie Retro-8-Bit-Konsolen. <strong>Sägezahn:</strong> enthält alle Oberwellen, die Basis für Synthesizer in der elektronischen Musik. <strong>Dreieck:</strong> Mittelpunkt zwischen Sinus und Rechteck
|
|
109
|
+
html: '<strong>Sinus:</strong> reiner Ton ohne Oberwellen, wird in medizinischen Hörtests und zur Instrumentenkalibrierung verwendet. <strong>Rechteck:</strong> reich an ungeraden Oberwellen, klingt wie Retro-8-Bit-Konsolen. <strong>Sägezahn:</strong> enthält alle Oberwellen, die Basis für Synthesizer in der elektronischen Musik. <strong>Dreieck:</strong> Mittelpunkt zwischen Sinus und Rechteck -glatter als Rechteck, aber mit mehr harmonischem Gehalt als Sinus.',
|
|
120
110
|
},
|
|
121
111
|
{ type: 'title', text: 'Lautsprechertest und Reinigung durch Vibration', level: 3 },
|
|
122
112
|
{
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
2
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
3
|
import type { ToneGeneratorUI } from '../ui';
|
|
4
|
+
import { bibliography } from '../bibliography';
|
|
4
5
|
|
|
5
6
|
const slug = 'tone-frequency-generator';
|
|
6
7
|
const title = 'Online Tone and Frequency Generator';
|
|
@@ -87,21 +88,10 @@ export const content: ToolLocaleContent<ToneGeneratorUI> = {
|
|
|
87
88
|
slug,
|
|
88
89
|
title,
|
|
89
90
|
description,
|
|
90
|
-
faqTitle: 'Frequently Asked Questions',
|
|
91
91
|
faq: faqData,
|
|
92
|
-
bibliographyTitle: 'References',
|
|
93
|
-
bibliography: [
|
|
94
|
-
{
|
|
95
|
-
name: 'MDN Web Docs — Web Audio API',
|
|
96
|
-
url: 'https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API',
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
name: 'ISO 226:2023 — Equal-loudness contours',
|
|
100
|
-
url: 'https://www.iso.org/standard/83117.html',
|
|
101
|
-
},
|
|
102
|
-
],
|
|
103
92
|
howTo: howToData,
|
|
104
93
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
94
|
+
bibliography,
|
|
105
95
|
seo: [
|
|
106
96
|
{ type: 'title', text: 'Everything About Frequencies and Sound Waves', level: 2 },
|
|
107
97
|
{
|
|
@@ -116,7 +106,7 @@ export const content: ToolLocaleContent<ToneGeneratorUI> = {
|
|
|
116
106
|
{ type: 'title', text: 'Wave Types and Their Uses', level: 3 },
|
|
117
107
|
{
|
|
118
108
|
type: 'paragraph',
|
|
119
|
-
html: '<strong>Sine:</strong> pure tone with no harmonics, used in medical hearing tests and instrument calibration. <strong>Square:</strong> rich in odd harmonics, sounds like retro 8-bit consoles. <strong>Sawtooth:</strong> contains all harmonics, the basis of electronic music synthesisers. <strong>Triangle:</strong> midpoint between sine and square
|
|
109
|
+
html: '<strong>Sine:</strong> pure tone with no harmonics, used in medical hearing tests and instrument calibration. <strong>Square:</strong> rich in odd harmonics, sounds like retro 8-bit consoles. <strong>Sawtooth:</strong> contains all harmonics, the basis of electronic music synthesisers. <strong>Triangle:</strong> midpoint between sine and square -smoother than square but with more harmonic content than sine.',
|
|
120
110
|
},
|
|
121
111
|
{ type: 'title', text: 'Speaker Testing and Vibration Cleaning', level: 3 },
|
|
122
112
|
{
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
2
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
3
|
import type { ToneGeneratorUI } from '../ui';
|
|
4
|
+
import { bibliography } from '../bibliography';
|
|
4
5
|
|
|
5
6
|
const slug = 'generador-tonos';
|
|
6
7
|
const title = 'Generador de Tonos y Frecuencias Online';
|
|
@@ -87,21 +88,10 @@ export const content: ToolLocaleContent<ToneGeneratorUI> = {
|
|
|
87
88
|
slug,
|
|
88
89
|
title,
|
|
89
90
|
description,
|
|
90
|
-
faqTitle: 'Preguntas Frecuentes',
|
|
91
91
|
faq: faqData,
|
|
92
|
-
bibliographyTitle: 'Referencias',
|
|
93
|
-
bibliography: [
|
|
94
|
-
{
|
|
95
|
-
name: 'MDN Web Docs — Web Audio API',
|
|
96
|
-
url: 'https://developer.mozilla.org/es/docs/Web/API/Web_Audio_API',
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
name: 'ISO 226:2023 — Curvas de igual sonoridad',
|
|
100
|
-
url: 'https://www.iso.org/standard/83117.html',
|
|
101
|
-
},
|
|
102
|
-
],
|
|
103
92
|
howTo: howToData,
|
|
104
93
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
94
|
+
bibliography,
|
|
105
95
|
seo: [
|
|
106
96
|
{ type: 'title', text: 'Todo sobre Frecuencias y Ondas de Sonido', level: 2 },
|
|
107
97
|
{
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
2
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
3
|
import type { ToneGeneratorUI } from '../ui';
|
|
4
|
+
import { bibliography } from '../bibliography';
|
|
4
5
|
|
|
5
6
|
const slug = 'generateur-de-frequences';
|
|
6
7
|
const title = 'Générateur de Tons et Fréquences en Ligne';
|
|
@@ -87,21 +88,10 @@ export const content: ToolLocaleContent<ToneGeneratorUI> = {
|
|
|
87
88
|
slug,
|
|
88
89
|
title,
|
|
89
90
|
description,
|
|
90
|
-
faqTitle: 'Questions Fréquentes',
|
|
91
91
|
faq: faqData,
|
|
92
|
-
bibliographyTitle: 'Références',
|
|
93
|
-
bibliography: [
|
|
94
|
-
{
|
|
95
|
-
name: 'MDN Web Docs — Web Audio API',
|
|
96
|
-
url: 'https://developer.mozilla.org/fr/docs/Web/API/Web_Audio_API',
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
name: 'ISO 226:2023 — Courbes isophoniques',
|
|
100
|
-
url: 'https://www.iso.org/standard/83117.html',
|
|
101
|
-
},
|
|
102
|
-
],
|
|
103
92
|
howTo: howToData,
|
|
104
93
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
94
|
+
bibliography,
|
|
105
95
|
seo: [
|
|
106
96
|
{ type: 'title', text: 'Tout sur les Fréquences et les Ondes Sonores', level: 2 },
|
|
107
97
|
{
|
|
@@ -116,7 +106,7 @@ export const content: ToolLocaleContent<ToneGeneratorUI> = {
|
|
|
116
106
|
{ type: 'title', text: 'Types d\'ondes et leurs utilisations', level: 3 },
|
|
117
107
|
{
|
|
118
108
|
type: 'paragraph',
|
|
119
|
-
html: "<strong>Sinusoïdale :</strong> ton pur sans harmoniques, utilisé dans les tests auditifs médicaux et la calibration d'instruments. <strong>Carrée :</strong> riche en harmoniques impaires, sonne comme les consoles rétro 8-bits. <strong>Dent de scie :</strong> contient toutes les harmoniques, base des synthétiseurs de musique électronique. <strong>Triangulaire :</strong> point médian entre sinusoïdale et carrée
|
|
109
|
+
html: "<strong>Sinusoïdale :</strong> ton pur sans harmoniques, utilisé dans les tests auditifs médicaux et la calibration d'instruments. <strong>Carrée :</strong> riche en harmoniques impaires, sonne comme les consoles rétro 8-bits. <strong>Dent de scie :</strong> contient toutes les harmoniques, base des synthétiseurs de musique électronique. <strong>Triangulaire :</strong> point médian entre sinusoïdale et carrée -plus douce que la carrée mais avec plus de contenu harmonique que la sinusoïdale.",
|
|
120
110
|
},
|
|
121
111
|
{ type: 'title', text: 'Test de haut-parleurs et nettoyage par vibration', level: 3 },
|
|
122
112
|
{
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
2
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
3
|
import type { ToneGeneratorUI } from '../ui';
|
|
4
|
+
import { bibliography } from '../bibliography';
|
|
4
5
|
|
|
5
6
|
const slug = 'generator-nada-frekuensi-online';
|
|
6
7
|
const title = 'Generator Nada dan Frekuensi Online';
|
|
@@ -87,21 +88,10 @@ export const content: ToolLocaleContent<ToneGeneratorUI> = {
|
|
|
87
88
|
slug,
|
|
88
89
|
title,
|
|
89
90
|
description,
|
|
90
|
-
faqTitle: 'Pertanyaan yang Sering Diajukan',
|
|
91
91
|
faq: faqData,
|
|
92
|
-
bibliographyTitle: 'Referensi',
|
|
93
|
-
bibliography: [
|
|
94
|
-
{
|
|
95
|
-
name: 'MDN Web Docs — Web Audio API',
|
|
96
|
-
url: 'https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API',
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
name: 'ISO 226:2023 — Equal-loudness contours',
|
|
100
|
-
url: 'https://www.iso.org/standard/83117.html',
|
|
101
|
-
},
|
|
102
|
-
],
|
|
103
92
|
howTo: howToData,
|
|
104
93
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
94
|
+
bibliography,
|
|
105
95
|
seo: [
|
|
106
96
|
{ type: 'title', text: 'Segala Hal Tentang Frekuensi dan Gelombang Suara', level: 2 },
|
|
107
97
|
{
|
|
@@ -116,7 +106,7 @@ export const content: ToolLocaleContent<ToneGeneratorUI> = {
|
|
|
116
106
|
{ type: 'title', text: 'Jenis Gelombang dan Kegunaannya', level: 3 },
|
|
117
107
|
{
|
|
118
108
|
type: 'paragraph',
|
|
119
|
-
html: '<strong>Sinus:</strong> nada murni tanpa harmonik, digunakan dalam tes pendengaran medis dan kalibrasi instrumen. <strong>Kotak:</strong> kaya akan harmonik ganjil, terdengar seperti konsol 8-bit retro. <strong>Gigi Gergaji:</strong> mengandung semua harmonik, dasar dari synthesizer musik elektronik. <strong>Segitiga:</strong> titik tengah antara sinus dan kotak
|
|
109
|
+
html: '<strong>Sinus:</strong> nada murni tanpa harmonik, digunakan dalam tes pendengaran medis dan kalibrasi instrumen. <strong>Kotak:</strong> kaya akan harmonik ganjil, terdengar seperti konsol 8-bit retro. <strong>Gigi Gergaji:</strong> mengandung semua harmonik, dasar dari synthesizer musik elektronik. <strong>Segitiga:</strong> titik tengah antara sinus dan kotak -lebih halus dari kotak tetapi dengan konten harmonik lebih banyak daripada sinus.',
|
|
120
110
|
},
|
|
121
111
|
{ type: 'title', text: 'Pengujian Speaker dan Pembersihan Getaran', level: 3 },
|
|
122
112
|
{
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
2
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
3
|
import type { ToneGeneratorUI } from '../ui';
|
|
4
|
+
import { bibliography } from '../bibliography';
|
|
4
5
|
|
|
5
6
|
const slug = 'generatore-toni-frequenza-online';
|
|
6
7
|
const title = 'Generatore di Toni e Frequenze Online';
|
|
@@ -87,21 +88,10 @@ export const content: ToolLocaleContent<ToneGeneratorUI> = {
|
|
|
87
88
|
slug,
|
|
88
89
|
title,
|
|
89
90
|
description,
|
|
90
|
-
faqTitle: 'Domande Frequenti',
|
|
91
91
|
faq: faqData,
|
|
92
|
-
bibliographyTitle: 'Riferimenti',
|
|
93
|
-
bibliography: [
|
|
94
|
-
{
|
|
95
|
-
name: 'MDN Web Docs — Web Audio API',
|
|
96
|
-
url: 'https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API',
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
name: 'ISO 226:2023 — Equal-loudness contours',
|
|
100
|
-
url: 'https://www.iso.org/standard/83117.html',
|
|
101
|
-
},
|
|
102
|
-
],
|
|
103
92
|
howTo: howToData,
|
|
104
93
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
94
|
+
bibliography,
|
|
105
95
|
seo: [
|
|
106
96
|
{ type: 'title', text: 'Tutto su Frequenze e Onde Sonore', level: 2 },
|
|
107
97
|
{
|
|
@@ -116,7 +106,7 @@ export const content: ToolLocaleContent<ToneGeneratorUI> = {
|
|
|
116
106
|
{ type: 'title', text: 'Tipi di Onde e loro utilizzi', level: 3 },
|
|
117
107
|
{
|
|
118
108
|
type: 'paragraph',
|
|
119
|
-
html: '<strong>Sinusoidale:</strong> tono puro senza armoniche, utilizzato nei test uditivi medici e nella calibrazione degli strumenti. <strong>Quadra:</strong> ricca di armoniche dispari, suona come le console retrò a 8 bit. <strong>Dente di sega:</strong> contiene tutte le armoniche, la base dei sintetizzatori musicali elettronici. <strong>Triangolare:</strong> punto di mezzo tra sinusoidale e quadra
|
|
109
|
+
html: '<strong>Sinusoidale:</strong> tono puro senza armoniche, utilizzato nei test uditivi medici e nella calibrazione degli strumenti. <strong>Quadra:</strong> ricca di armoniche dispari, suona come le console retrò a 8 bit. <strong>Dente di sega:</strong> contiene tutte le armoniche, la base dei sintetizzatori musicali elettronici. <strong>Triangolare:</strong> punto di mezzo tra sinusoidale e quadra -più liscia della quadra ma con più contenuto armonico della sinusoidale.',
|
|
120
110
|
},
|
|
121
111
|
{ type: 'title', text: 'Test degli Altoparlanti e Pulizia tramite Vibrazione', level: 3 },
|
|
122
112
|
{
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
2
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
3
|
import type { ToneGeneratorUI } from '../ui';
|
|
4
|
+
import { bibliography } from '../bibliography';
|
|
4
5
|
|
|
5
6
|
const slug = 'tone-frequency-generator';
|
|
6
7
|
const title = 'オンライン・トーン&周波数ジェネレーター';
|
|
@@ -87,21 +88,10 @@ export const content: ToolLocaleContent<ToneGeneratorUI> = {
|
|
|
87
88
|
slug,
|
|
88
89
|
title,
|
|
89
90
|
description,
|
|
90
|
-
faqTitle: 'よくある質問',
|
|
91
91
|
faq: faqData,
|
|
92
|
-
bibliographyTitle: 'リファレンス',
|
|
93
|
-
bibliography: [
|
|
94
|
-
{
|
|
95
|
-
name: 'MDN Web Docs — Web Audio API',
|
|
96
|
-
url: 'https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API',
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
name: 'ISO 226:2023 — Equal-loudness contours',
|
|
100
|
-
url: 'https://www.iso.org/standard/83117.html',
|
|
101
|
-
},
|
|
102
|
-
],
|
|
103
92
|
howTo: howToData,
|
|
104
93
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
94
|
+
bibliography,
|
|
105
95
|
seo: [
|
|
106
96
|
{ type: 'title', text: '周波数と音波のすべて', level: 2 },
|
|
107
97
|
{
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
2
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
3
|
import type { ToneGeneratorUI } from '../ui';
|
|
4
|
+
import { bibliography } from '../bibliography';
|
|
4
5
|
|
|
5
6
|
const slug = 'tone-frequency-generator';
|
|
6
7
|
const title = '온라인 톤 및 주파수 생성기';
|
|
@@ -87,21 +88,10 @@ export const content: ToolLocaleContent<ToneGeneratorUI> = {
|
|
|
87
88
|
slug,
|
|
88
89
|
title,
|
|
89
90
|
description,
|
|
90
|
-
faqTitle: '자주 묻는 질문',
|
|
91
91
|
faq: faqData,
|
|
92
|
-
bibliographyTitle: '참조',
|
|
93
|
-
bibliography: [
|
|
94
|
-
{
|
|
95
|
-
name: 'MDN Web Docs — Web Audio API',
|
|
96
|
-
url: 'https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API',
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
name: 'ISO 226:2023 — Equal-loudness contours',
|
|
100
|
-
url: 'https://www.iso.org/standard/83117.html',
|
|
101
|
-
},
|
|
102
|
-
],
|
|
103
92
|
howTo: howToData,
|
|
104
93
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
94
|
+
bibliography,
|
|
105
95
|
seo: [
|
|
106
96
|
{ type: 'title', text: '주파수와 음파에 대한 모든 것', level: 2 },
|
|
107
97
|
{
|