@jjlmoya/utils-chrono 1.4.0 → 1.6.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/index.ts +4 -0
- package/src/entries.ts +7 -1
- package/src/index.ts +2 -0
- package/src/tests/locale_completeness.test.ts +1 -1
- package/src/tests/no_en_dash.test.ts +41 -0
- package/src/tests/tool_validation.test.ts +1 -1
- package/src/tool/beat-rate-converter/i18n/en.ts +1 -1
- package/src/tool/demagnetizing-timer/components/TimerPanel.astro +45 -17
- package/src/tool/demagnetizing-timer/i18n/de.ts +2 -2
- package/src/tool/demagnetizing-timer/i18n/en.ts +1 -1
- package/src/tool/demagnetizing-timer/i18n/es.ts +1 -1
- package/src/tool/demagnetizing-timer/i18n/id.ts +1 -1
- package/src/tool/demagnetizing-timer/i18n/it.ts +1 -1
- package/src/tool/demagnetizing-timer/i18n/nl.ts +1 -1
- package/src/tool/demagnetizing-timer/i18n/pl.ts +1 -1
- package/src/tool/demagnetizing-timer/i18n/pt.ts +1 -1
- package/src/tool/demagnetizing-timer/i18n/ru.ts +3 -3
- package/src/tool/demagnetizing-timer/i18n/sv.ts +1 -1
- package/src/tool/demagnetizing-timer/i18n/tr.ts +1 -1
- package/src/tool/lume-color-simulator/i18n/de.ts +13 -13
- package/src/tool/lume-color-simulator/i18n/en.ts +8 -8
- package/src/tool/lume-color-simulator/i18n/es.ts +7 -7
- package/src/tool/lume-color-simulator/i18n/fr.ts +4 -4
- package/src/tool/lume-color-simulator/i18n/id.ts +7 -7
- package/src/tool/lume-color-simulator/i18n/it.ts +7 -7
- package/src/tool/lume-color-simulator/i18n/ko.ts +3 -3
- package/src/tool/lume-color-simulator/i18n/nl.ts +8 -8
- package/src/tool/lume-color-simulator/i18n/pl.ts +13 -13
- package/src/tool/lume-color-simulator/i18n/pt.ts +4 -4
- package/src/tool/lume-color-simulator/i18n/ru.ts +8 -8
- package/src/tool/lume-color-simulator/i18n/sv.ts +16 -16
- package/src/tool/lume-color-simulator/i18n/tr.ts +8 -8
- package/src/tool/lume-color-simulator/i18n/zh.ts +7 -7
- package/src/tool/moon-phase-visualizer/i18n/de.ts +10 -10
- package/src/tool/moon-phase-visualizer/i18n/en.ts +6 -6
- package/src/tool/moon-phase-visualizer/i18n/es.ts +4 -4
- package/src/tool/moon-phase-visualizer/i18n/fr.ts +4 -4
- package/src/tool/moon-phase-visualizer/i18n/id.ts +4 -4
- package/src/tool/moon-phase-visualizer/i18n/it.ts +4 -4
- package/src/tool/moon-phase-visualizer/i18n/ko.ts +2 -2
- package/src/tool/moon-phase-visualizer/i18n/nl.ts +6 -6
- package/src/tool/moon-phase-visualizer/i18n/pl.ts +9 -9
- package/src/tool/moon-phase-visualizer/i18n/pt.ts +4 -4
- package/src/tool/moon-phase-visualizer/i18n/ru.ts +4 -4
- package/src/tool/moon-phase-visualizer/i18n/sv.ts +10 -10
- package/src/tool/moon-phase-visualizer/i18n/tr.ts +6 -6
- package/src/tool/moon-phase-visualizer/i18n/zh.ts +4 -4
- package/src/tool/power-reserve-estimator/i18n/de.ts +2 -2
- package/src/tool/power-reserve-estimator/i18n/es.ts +2 -2
- package/src/tool/power-reserve-estimator/i18n/fr.ts +2 -2
- package/src/tool/power-reserve-estimator/i18n/id.ts +2 -2
- package/src/tool/power-reserve-estimator/i18n/it.ts +2 -2
- package/src/tool/power-reserve-estimator/i18n/nl.ts +2 -2
- package/src/tool/power-reserve-estimator/i18n/pt.ts +2 -2
- package/src/tool/service-interval-tracker/bibliography.astro +16 -0
- package/src/tool/service-interval-tracker/bibliography.ts +12 -0
- package/src/tool/service-interval-tracker/client.ts +233 -0
- package/src/tool/service-interval-tracker/component.astro +50 -0
- package/src/tool/service-interval-tracker/components/AddEditModal.astro +75 -0
- package/src/tool/service-interval-tracker/components/DashboardHeader.astro +14 -0
- package/src/tool/service-interval-tracker/components/EmptyState.astro +26 -0
- package/src/tool/service-interval-tracker/entry.ts +56 -0
- package/src/tool/service-interval-tracker/helpers.ts +82 -0
- package/src/tool/service-interval-tracker/i18n/de.ts +117 -0
- package/src/tool/service-interval-tracker/i18n/en.ts +170 -0
- package/src/tool/service-interval-tracker/i18n/es.ts +117 -0
- package/src/tool/service-interval-tracker/i18n/fr.ts +98 -0
- package/src/tool/service-interval-tracker/i18n/id.ts +89 -0
- package/src/tool/service-interval-tracker/i18n/it.ts +88 -0
- package/src/tool/service-interval-tracker/i18n/ja.ts +88 -0
- package/src/tool/service-interval-tracker/i18n/ko.ts +88 -0
- package/src/tool/service-interval-tracker/i18n/nl.ts +88 -0
- package/src/tool/service-interval-tracker/i18n/pl.ts +88 -0
- package/src/tool/service-interval-tracker/i18n/pt.ts +88 -0
- package/src/tool/service-interval-tracker/i18n/ru.ts +88 -0
- package/src/tool/service-interval-tracker/i18n/sv.ts +88 -0
- package/src/tool/service-interval-tracker/i18n/tr.ts +88 -0
- package/src/tool/service-interval-tracker/i18n/zh.ts +88 -0
- package/src/tool/service-interval-tracker/index.ts +11 -0
- package/src/tool/service-interval-tracker/renderer.ts +91 -0
- package/src/tool/service-interval-tracker/seo.astro +16 -0
- package/src/tool/service-interval-tracker/service-interval-tracker.css +767 -0
- package/src/tool/service-interval-tracker/utils.ts +58 -0
- package/src/tool/strap-taper-calculator/i18n/ru.ts +1 -1
- package/src/tool/tachymeter-calculator/bibliography.astro +16 -0
- package/src/tool/tachymeter-calculator/bibliography.ts +16 -0
- package/src/tool/tachymeter-calculator/client.ts +180 -0
- package/src/tool/tachymeter-calculator/component.astro +15 -0
- package/src/tool/tachymeter-calculator/components/CalculatorPanel.astro +121 -0
- package/src/tool/tachymeter-calculator/entry.ts +43 -0
- package/src/tool/tachymeter-calculator/i18n/de.ts +172 -0
- package/src/tool/tachymeter-calculator/i18n/en.ts +172 -0
- package/src/tool/tachymeter-calculator/i18n/es.ts +172 -0
- package/src/tool/tachymeter-calculator/i18n/fr.ts +172 -0
- package/src/tool/tachymeter-calculator/i18n/id.ts +172 -0
- package/src/tool/tachymeter-calculator/i18n/it.ts +172 -0
- package/src/tool/tachymeter-calculator/i18n/ja.ts +172 -0
- package/src/tool/tachymeter-calculator/i18n/ko.ts +172 -0
- package/src/tool/tachymeter-calculator/i18n/nl.ts +172 -0
- package/src/tool/tachymeter-calculator/i18n/pl.ts +172 -0
- package/src/tool/tachymeter-calculator/i18n/pt.ts +172 -0
- package/src/tool/tachymeter-calculator/i18n/ru.ts +172 -0
- package/src/tool/tachymeter-calculator/i18n/sv.ts +172 -0
- package/src/tool/tachymeter-calculator/i18n/tr.ts +172 -0
- package/src/tool/tachymeter-calculator/i18n/zh.ts +172 -0
- package/src/tool/tachymeter-calculator/index.ts +11 -0
- package/src/tool/tachymeter-calculator/seo.astro +16 -0
- package/src/tool/tachymeter-calculator/tachymeter-calculator.css +492 -0
- package/src/tool/tachymeter-calculator/utils.ts +10 -0
- package/src/tool/watch-accuracy-tracker/i18n/pl.ts +1 -1
- package/src/tool/watch-accuracy-tracker/i18n/ru.ts +4 -4
- package/src/tool/watch-savings-planner/i18n/en.ts +3 -3
- package/src/tool/watch-size-comparator/i18n/de.ts +30 -30
- package/src/tool/watch-size-comparator/i18n/en.ts +20 -20
- package/src/tool/watch-size-comparator/i18n/es.ts +16 -16
- package/src/tool/watch-size-comparator/i18n/fr.ts +18 -18
- package/src/tool/watch-size-comparator/i18n/id.ts +18 -18
- package/src/tool/watch-size-comparator/i18n/it.ts +18 -18
- package/src/tool/watch-size-comparator/i18n/ko.ts +11 -11
- package/src/tool/watch-size-comparator/i18n/nl.ts +20 -20
- package/src/tool/watch-size-comparator/i18n/pl.ts +27 -27
- package/src/tool/watch-size-comparator/i18n/pt.ts +17 -17
- package/src/tool/watch-size-comparator/i18n/ru.ts +18 -18
- package/src/tool/watch-size-comparator/i18n/sv.ts +29 -29
- package/src/tool/watch-size-comparator/i18n/tr.ts +20 -20
- package/src/tool/watch-size-comparator/i18n/zh.ts +17 -17
- package/src/tool/water-resistance-converter/i18n/de.ts +1 -1
- package/src/tool/water-resistance-converter/i18n/en.ts +1 -1
- package/src/tool/water-resistance-converter/i18n/es.ts +1 -1
- package/src/tool/water-resistance-converter/i18n/id.ts +1 -1
- package/src/tool/water-resistance-converter/i18n/ja.ts +1 -1
- package/src/tool/water-resistance-converter/i18n/ko.ts +1 -1
- package/src/tool/water-resistance-converter/i18n/nl.ts +1 -1
- package/src/tool/water-resistance-converter/i18n/pl.ts +1 -1
- package/src/tool/water-resistance-converter/i18n/pt.ts +1 -1
- package/src/tool/water-resistance-converter/i18n/ru.ts +1 -1
- package/src/tool/water-resistance-converter/i18n/sv.ts +1 -1
- package/src/tool/water-resistance-converter/i18n/tr.ts +1 -1
- package/src/tool/water-resistance-converter/i18n/zh.ts +1 -1
- package/src/tool/wrist-presence-calculator/i18n/de.ts +1 -1
- package/src/tool/wrist-presence-calculator/i18n/ru.ts +18 -18
- package/src/tools.ts +4 -0
|
@@ -41,7 +41,7 @@ export const content: ToolLocaleContent<WristPresenceCalculatorUI> = {
|
|
|
41
41
|
},
|
|
42
42
|
seo: [
|
|
43
43
|
{ type: 'title', text: 'Die perfekte Uhrengröße finden: Der Proportions-Ratgeber', level: 2 },
|
|
44
|
-
{ type: 'paragraph', html: 'Die richtige Uhrengröße zu finden ist eine Kombination aus Mathematik, Geometrie und persönlichem Stil. In der Uhrmacherei bezeichnet man das Erscheinungsbild einer Uhr am Arm als <strong>Handgelenkpräsenz</strong>. Eine Uhr sollte ausgewogen wirken
|
|
44
|
+
{ type: 'paragraph', html: 'Die richtige Uhrengröße zu finden ist eine Kombination aus Mathematik, Geometrie und persönlichem Stil. In der Uhrmacherei bezeichnet man das Erscheinungsbild einer Uhr am Arm als <strong>Handgelenkpräsenz</strong>. Eine Uhr sollte ausgewogen wirken - weder mit unschönem Überhang dominieren noch wie ein winziger Punkt verschwinden. Um diese Balance zu erreichen, analysieren Sammler drei Hauptmerkmale: Gehäusedurchmesser, Steg-zu-Steg-Abstand und Handgelenkform.' },
|
|
45
45
|
{ type: 'title', text: 'Das Gehäuse-zu-Handgelenk-Verhältnis verstehen', level: 3 },
|
|
46
46
|
{ type: 'paragraph', html: 'Eine klassische Methode zur Beurteilung von Uhrenproportionen ist das Gehäuse-zu-Handgelenk-Verhältnis. Dazu teilt man den Handgelenkumfang in Millimetern durch den Gehäusedurchmesser. Verhältnisse zwischen <strong>4,5 und 5,0</strong> gelten als klassischer Sweet Spot. Verhältnisse von <strong>4,0 bis 4,5</strong> wirken mutig und modern. Über 5,0 entsteht ein Vintage-Dresswatches-Feeling, unter 4,0 wirkt die Uhr überdimensioniert.' },
|
|
47
47
|
{ type: 'title', text: 'Warum der Steg-zu-Steg-Abstand wichtiger ist als der Durchmesser', level: 3 },
|
|
@@ -17,7 +17,7 @@ export const content: ToolLocaleContent<WristPresenceCalculatorUI> = {
|
|
|
17
17
|
unitInches: 'ДЮЙ',
|
|
18
18
|
unitMm: 'ММ',
|
|
19
19
|
fitAnalysisTitle: 'Анализ посадки на запястье',
|
|
20
|
-
caseWristRatioLabel: 'Соотношение
|
|
20
|
+
caseWristRatioLabel: 'Соотношение корпус-запястье',
|
|
21
21
|
wristCoverageLabel: 'Покрытие запястья',
|
|
22
22
|
verdictLabel: 'Вывод',
|
|
23
23
|
verdictOversized: 'Слишком большой корпус',
|
|
@@ -41,26 +41,26 @@ export const content: ToolLocaleContent<WristPresenceCalculatorUI> = {
|
|
|
41
41
|
},
|
|
42
42
|
seo: [
|
|
43
43
|
{ type: 'title', text: 'Как выбрать идеальный размер часов: руководство по пропорциям', level: 2 },
|
|
44
|
-
{ type: 'paragraph', html: 'Подбор правильного размера часов-это сочетание математики, геометрии и личного стиля. В часовом искусстве то, как часы лежат на запястье, называют <strong>присутствием на запястье</strong>. Часы должны выглядеть сбалансированно: не доминировать над рукой некрасивым выступом ушек и не теряться крохотным пятнышком. Для достижения этого баланса коллекционеры анализируют три ключевых параметра: диаметр корпуса, расстояние
|
|
45
|
-
{ type: 'title', text: 'Соотношение
|
|
46
|
-
{ type: 'paragraph', html: 'Традиционный способ оценки пропорций часов-соотношение
|
|
47
|
-
{ type: 'title', text: 'Почему расстояние
|
|
48
|
-
{ type: 'paragraph', html: 'Хотя диаметр корпуса привлекает всё внимание, именно <strong>расстояние
|
|
44
|
+
{ type: 'paragraph', html: 'Подбор правильного размера часов-это сочетание математики, геометрии и личного стиля. В часовом искусстве то, как часы лежат на запястье, называют <strong>присутствием на запястье</strong>. Часы должны выглядеть сбалансированно: не доминировать над рукой некрасивым выступом ушек и не теряться крохотным пятнышком. Для достижения этого баланса коллекционеры анализируют три ключевых параметра: диаметр корпуса, расстояние ушко-ушко и форму запястья.' },
|
|
45
|
+
{ type: 'title', text: 'Соотношение корпус-запястье: как его понять', level: 3 },
|
|
46
|
+
{ type: 'paragraph', html: 'Традиционный способ оценки пропорций часов-соотношение корпус-запястье. Оно вычисляется делением обхвата запястья в миллиметрах на диаметр корпуса. Значения от <strong>4,5 до 5,0</strong> соответствуют классической золотой зоне. От <strong>4,0 до 4,5</strong> часы смотрятся современно и спортивно. Выше 5,0 преобладает винтажная эстетика; ниже 4,0 корпус кажется слишком крупным.' },
|
|
47
|
+
{ type: 'title', text: 'Почему расстояние ушко-ушко важнее диаметра корпуса', level: 3 },
|
|
48
|
+
{ type: 'paragraph', html: 'Хотя диаметр корпуса привлекает всё внимание, именно <strong>расстояние ушко-ушко</strong> (вертикальная длина от кончика одного ушка до другого) является настоящим тестом посадки. Золотое правило: расстояние ушко-ушко не должно превышать плоскую ширину запястья. Если ушки выходят за края запястья, часы болтаются, между ремешком и кожей появляется зазор, а визуальный результат оставляет желать лучшего.' },
|
|
49
49
|
{ type: 'title', text: 'Плоские и круглые запястья: размер под конкретную анатомию', level: 3 },
|
|
50
|
-
{ type: 'paragraph', html: 'Обхват запястья рассказывает лишь половину истории. Запястья с одинаковым обхватом могут иметь разные формы поперечного сечения: плоскую или округлую. Плоские запястья имеют более широкую верхнюю поверхность и могут носить часы с большим расстоянием
|
|
50
|
+
{ type: 'paragraph', html: 'Обхват запястья рассказывает лишь половину истории. Запястья с одинаковым обхватом могут иметь разные формы поперечного сечения: плоскую или округлую. Плоские запястья имеют более широкую верхнюю поверхность и могут носить часы с большим расстоянием ушко-ушко без выступа. Округлые запястья более цилиндрические, их верхняя поверхность уже, поэтому им нужно более короткое расстояние ушко-ушко.' },
|
|
51
51
|
],
|
|
52
52
|
faq: [
|
|
53
53
|
{
|
|
54
|
-
question: 'Каково идеальное соотношение
|
|
54
|
+
question: 'Каково идеальное соотношение корпус-запястье?',
|
|
55
55
|
answer: 'Идеальное соотношение-от 4,0 до 5,0. Значение 4,5 считается золотой зоной классического часового искусства. От 4,0 до 4,5 создаётся современное, смелое присутствие на запястье; выше 5,0 часы подходят для винтажного стиля; ниже 4,0 корпус кажется чрезмерно большим.',
|
|
56
56
|
},
|
|
57
57
|
{
|
|
58
|
-
question: 'Почему расстояние
|
|
59
|
-
answer: 'Диаметр корпуса измеряет лишь ширину циферблата, тогда как расстояние
|
|
58
|
+
question: 'Почему расстояние ушко-ушко важнее диаметра корпуса?',
|
|
59
|
+
answer: 'Диаметр корпуса измеряет лишь ширину циферблата, тогда как расстояние ушко-ушко определяет полную длину часов на запястье. Если оно превышает плоскую ширину запястья, ушки выступают, ремешок свисает вертикально, а часы выглядят нестабильно и несоразмерно большими.',
|
|
60
60
|
},
|
|
61
61
|
{
|
|
62
62
|
question: 'Как плоское и округлое запястье влияет на посадку часов?',
|
|
63
|
-
answer: 'Два запястья с одинаковым обхватом (например, 17 см) могут носить часы совершенно по-разному. Плоское запястье имеет более широкую верхнюю поверхность и позволяет носить часы с большим расстоянием
|
|
63
|
+
answer: 'Два запястья с одинаковым обхватом (например, 17 см) могут носить часы совершенно по-разному. Плоское запястье имеет более широкую верхнюю поверхность и позволяет носить часы с большим расстоянием ушко-ушко без выступа. Округлое запястье уже сверху и требует более короткого расстояния ушко-ушко для стабильной посадки.',
|
|
64
64
|
},
|
|
65
65
|
{
|
|
66
66
|
question: 'Как толщина и ширина безеля влияют на визуальный размер часов?',
|
|
@@ -75,11 +75,11 @@ export const content: ToolLocaleContent<WristPresenceCalculatorUI> = {
|
|
|
75
75
|
},
|
|
76
76
|
{
|
|
77
77
|
name: 'Введите размеры часов',
|
|
78
|
-
text: 'Укажите диаметр корпуса и расстояние
|
|
78
|
+
text: 'Укажите диаметр корпуса и расстояние ушко-ушко часов, которые вы хотите оценить.',
|
|
79
79
|
},
|
|
80
80
|
{
|
|
81
81
|
name: 'Проанализируйте посадку и симулятор',
|
|
82
|
-
text: 'Проверьте соотношение
|
|
82
|
+
text: 'Проверьте соотношение корпус-запястье, предупреждение о выступе ушек и изучите диаграмму симуляции в реальном времени.',
|
|
83
83
|
},
|
|
84
84
|
],
|
|
85
85
|
schemas: [
|
|
@@ -89,7 +89,7 @@ export const content: ToolLocaleContent<WristPresenceCalculatorUI> = {
|
|
|
89
89
|
'mainEntity': [
|
|
90
90
|
{
|
|
91
91
|
'@type': 'Question',
|
|
92
|
-
'name': 'Каково идеальное соотношение
|
|
92
|
+
'name': 'Каково идеальное соотношение корпус-запястье?',
|
|
93
93
|
'acceptedAnswer': {
|
|
94
94
|
'@type': 'Answer',
|
|
95
95
|
'text': 'Идеальное соотношение-от 4,0 до 5,0. Значение 4,5 считается золотой зоной классического часового искусства. От 4,0 до 4,5 создаётся современное, смелое присутствие на запястье; выше 5,0 часы подходят для винтажного стиля; ниже 4,0 корпус кажется чрезмерно большим.'
|
|
@@ -97,10 +97,10 @@ export const content: ToolLocaleContent<WristPresenceCalculatorUI> = {
|
|
|
97
97
|
},
|
|
98
98
|
{
|
|
99
99
|
'@type': 'Question',
|
|
100
|
-
'name': 'Почему расстояние
|
|
100
|
+
'name': 'Почему расстояние ушко-ушко важнее диаметра корпуса?',
|
|
101
101
|
'acceptedAnswer': {
|
|
102
102
|
'@type': 'Answer',
|
|
103
|
-
'text': 'Диаметр корпуса измеряет лишь ширину циферблата, тогда как расстояние
|
|
103
|
+
'text': 'Диаметр корпуса измеряет лишь ширину циферблата, тогда как расстояние ушко-ушко определяет полную длину часов на запястье. Если оно превышает плоскую ширину запястья, ушки выступают, ремешок свисает вертикально, а часы выглядят нестабильно и несоразмерно большими.'
|
|
104
104
|
}
|
|
105
105
|
}
|
|
106
106
|
]
|
|
@@ -126,12 +126,12 @@ export const content: ToolLocaleContent<WristPresenceCalculatorUI> = {
|
|
|
126
126
|
{
|
|
127
127
|
'@type': 'HowToStep',
|
|
128
128
|
'name': 'Введите размеры часов',
|
|
129
|
-
'text': 'Укажите диаметр корпуса и расстояние
|
|
129
|
+
'text': 'Укажите диаметр корпуса и расстояние ушко-ушко часов, которые вы хотите оценить.'
|
|
130
130
|
},
|
|
131
131
|
{
|
|
132
132
|
'@type': 'HowToStep',
|
|
133
133
|
'name': 'Проанализируйте посадку и симулятор',
|
|
134
|
-
'text': 'Проверьте соотношение
|
|
134
|
+
'text': 'Проверьте соотношение корпус-запястье, предупреждение о выступе ушек и изучите диаграмму симуляции в реальном времени.'
|
|
135
135
|
}
|
|
136
136
|
]
|
|
137
137
|
}
|
package/src/tools.ts
CHANGED
|
@@ -12,6 +12,8 @@ import { STRAP_TAPER_CALCULATOR_TOOL } from './tool/strap-taper-calculator';
|
|
|
12
12
|
import { WATCH_SIZE_COMPARATOR_TOOL } from './tool/watch-size-comparator';
|
|
13
13
|
import { LUME_COLOR_SIMULATOR_TOOL } from './tool/lume-color-simulator';
|
|
14
14
|
import { MOON_PHASE_VISUALIZER_TOOL } from './tool/moon-phase-visualizer';
|
|
15
|
+
import { TACHYMETER_CALCULATOR_TOOL } from './tool/tachymeter-calculator';
|
|
16
|
+
import { SERVICE_INTERVAL_TRACKER_TOOL } from './tool/service-interval-tracker';
|
|
15
17
|
|
|
16
18
|
export const ALL_TOOLS: ToolDefinition[] = [
|
|
17
19
|
WATCH_ACCURACY_TRACKER_TOOL,
|
|
@@ -26,6 +28,8 @@ export const ALL_TOOLS: ToolDefinition[] = [
|
|
|
26
28
|
WATCH_SIZE_COMPARATOR_TOOL,
|
|
27
29
|
LUME_COLOR_SIMULATOR_TOOL,
|
|
28
30
|
MOON_PHASE_VISUALIZER_TOOL,
|
|
31
|
+
TACHYMETER_CALCULATOR_TOOL,
|
|
32
|
+
SERVICE_INTERVAL_TRACKER_TOOL,
|
|
29
33
|
];
|
|
30
34
|
|
|
31
35
|
|