@jjlmoya/utils-chrono 1.22.0 → 1.24.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 (35) hide show
  1. package/package.json +1 -1
  2. package/src/layouts/PreviewLayout.astro +1 -1
  3. package/src/tests/diacritics_density.test.ts +118 -0
  4. package/src/tests/inverted_punctuation.test.ts +84 -0
  5. package/src/tests/script_density.test.ts +94 -0
  6. package/src/tool/gear-train-explorer/client.ts +13 -12
  7. package/src/tool/gear-train-explorer/component.astro +1 -1
  8. package/src/tool/gear-train-explorer/gear-train-explorer.css +49 -24
  9. package/src/tool/mainspring-finder/i18n/es.ts +6 -6
  10. package/src/tool/mainspring-finder/i18n/it.ts +1 -1
  11. package/src/tool/power-reserve-estimator/client.ts +13 -12
  12. package/src/tool/power-reserve-estimator/component.astro +1 -1
  13. package/src/tool/power-reserve-estimator/power-reserve-estimator.css +69 -53
  14. package/src/tool/quartz-battery-health/client.ts +20 -20
  15. package/src/tool/quartz-battery-health/component.astro +1 -1
  16. package/src/tool/quartz-battery-health/i18n/es.ts +1 -1
  17. package/src/tool/quartz-battery-health/i18n/fr.ts +1 -1
  18. package/src/tool/quartz-battery-health/i18n/pt.ts +1 -1
  19. package/src/tool/quartz-battery-health/quartz-battery-health.css +77 -59
  20. package/src/tool/sidereal-time-tracker/component.astro +1 -1
  21. package/src/tool/sidereal-time-tracker/sidereal-time-tracker.css +60 -1
  22. package/src/tool/tachymeter-calculator/i18n/es.ts +6 -6
  23. package/src/tool/tachymeter-calculator/i18n/fr.ts +1 -1
  24. package/src/tool/tachymeter-calculator/i18n/it.ts +1 -1
  25. package/src/tool/tachymeter-calculator/i18n/pl.ts +1 -1
  26. package/src/tool/tachymeter-calculator/i18n/pt.ts +1 -1
  27. package/src/tool/tachymeter-calculator/i18n/tr.ts +1 -1
  28. package/src/tool/telemeter-calculator/component.astro +1 -1
  29. package/src/tool/telemeter-calculator/i18n/es.ts +1 -1
  30. package/src/tool/telemeter-calculator/telemeter-calculator.css +51 -6
  31. package/src/tool/watch-savings-planner/i18n/es.ts +2 -2
  32. package/src/tool/watch-savings-planner/i18n/pl.ts +1 -1
  33. package/src/tool/wrist-presence-calculator/client.ts +1 -1
  34. package/src/tool/wrist-presence-calculator/component.astro +3 -3
  35. package/src/tool/wrist-presence-calculator/wrist-presence-calculator.css +30 -8
@@ -56,13 +56,13 @@
56
56
 
57
57
  .tel-grid {
58
58
  display: grid;
59
- grid-template-columns: 1fr;
59
+ grid-template-columns: minmax(0, 1fr);
60
60
  gap: 1.5rem;
61
61
  }
62
62
 
63
63
  @media (min-width: 768px) {
64
64
  .tel-grid {
65
- grid-template-columns: 1.2fr 1fr;
65
+ grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr);
66
66
  }
67
67
  }
68
68
 
@@ -77,6 +77,8 @@
77
77
  padding: 2rem 1rem;
78
78
  position: relative;
79
79
  min-height: 380px;
80
+ min-width: 0;
81
+ overflow: hidden;
80
82
  }
81
83
 
82
84
  .tel-lightning-overlay {
@@ -108,8 +110,9 @@
108
110
 
109
111
  .tel-watch-container {
110
112
  position: relative;
111
- width: 290px;
112
- height: 290px;
113
+ width: min(290px, 100%);
114
+ aspect-ratio: 1;
115
+ height: auto;
113
116
  display: flex;
114
117
  align-items: center;
115
118
  justify-content: center;
@@ -169,8 +172,8 @@
169
172
  }
170
173
 
171
174
  .tel-svg-dial {
172
- width: 270px;
173
- height: 270px;
175
+ width: min(270px, 100%);
176
+ height: auto;
174
177
  border-radius: 50%;
175
178
  box-shadow: 0 10px 25px rgba(0, 0, 0, 0.15);
176
179
  z-index: 1;
@@ -309,6 +312,7 @@
309
312
  display: flex;
310
313
  flex-direction: column;
311
314
  gap: 1.25rem;
315
+ min-width: 0;
312
316
  }
313
317
 
314
318
  .tel-trigger-dashboard {
@@ -601,6 +605,8 @@
601
605
  letter-spacing: -0.04em;
602
606
  font-variant-numeric: tabular-nums;
603
607
  line-height: 1;
608
+ overflow-wrap: anywhere;
609
+ text-align: center;
604
610
  }
605
611
 
606
612
  .tel-results-subval {
@@ -615,6 +621,7 @@
615
621
  display: flex;
616
622
  justify-content: space-around;
617
623
  padding-top: 0.75rem;
624
+ gap: 0.75rem;
618
625
  }
619
626
 
620
627
  .tel-detail-item {
@@ -680,6 +687,7 @@
680
687
  font-size: 0.75rem;
681
688
  font-variant-numeric: tabular-nums;
682
689
  animation: slide-in-history 0.25s ease-out;
690
+ gap: 0.5rem;
683
691
  }
684
692
 
685
693
  @keyframes slide-in-history {
@@ -854,3 +862,40 @@
854
862
  fill: var(--text-base);
855
863
  opacity: 0.65;
856
864
  }
865
+
866
+ @media (max-width: 520px) {
867
+ .tel-card {
868
+ padding: 1rem;
869
+ border-radius: 0.875rem;
870
+ max-width: 100%;
871
+ }
872
+
873
+ .tel-visualizer-section {
874
+ min-height: 0;
875
+ padding: 1rem 0.25rem;
876
+ }
877
+
878
+ .tel-trigger-dashboard {
879
+ grid-template-columns: 1fr;
880
+ }
881
+
882
+ .tel-slider-wrapper,
883
+ .tel-results-details,
884
+ .tel-history-item {
885
+ align-items: stretch;
886
+ flex-direction: column;
887
+ }
888
+
889
+ .tel-speed-badge {
890
+ align-self: stretch;
891
+ text-align: center;
892
+ }
893
+
894
+ .tel-results-val {
895
+ font-size: 2rem;
896
+ }
897
+
898
+ .tel-detail-item {
899
+ align-items: flex-start;
900
+ }
901
+ }
@@ -80,7 +80,7 @@ export const content: ToolLocaleContent<WatchSavingsPlannerUI> = {
80
80
  },
81
81
  {
82
82
  name: 'Celebra',
83
- text: '¡Cuando el anillo llegue al 100 %, habrás alcanzado tu meta. Es hora de comprar ese reloj!',
83
+ text: '¡Cuando el anillo llegue al 100 %, habrás alcanzado tu meta. ¡Es hora de comprar ese reloj!',
84
84
  },
85
85
  ],
86
86
  schemas: [
@@ -145,7 +145,7 @@ export const content: ToolLocaleContent<WatchSavingsPlannerUI> = {
145
145
  {
146
146
  '@type': 'HowToStep',
147
147
  'name': 'Celebra',
148
- 'text': '¡Cuando el anillo llegue al 100 %, habrás alcanzado tu meta. Es hora de comprar ese reloj!',
148
+ 'text': '¡Cuando el anillo llegue al 100 %, habrás alcanzado tu meta. ¡Es hora de comprar ese reloj!',
149
149
  },
150
150
  ],
151
151
  },
@@ -5,7 +5,7 @@ import { bibliography } from '../bibliography';
5
5
  export const content: ToolLocaleContent<WatchSavingsPlannerUI> = {
6
6
  slug: 'plan-oszczedzania-na-zegarek',
7
7
  title: 'Planer Oszczedzania na Zegarek',
8
- description: 'Ustawiaj i sledz cele oszczednosciowe na zakup nastepnego zegarka. Wizualizuj postepy, obliczaj harmonogramy i pozostan zmotywowany.',
8
+ description: 'Ustawiaj i śledź cele oszczędnościowe na zakup następnego zegarka. Wizualizuj postępy, obliczaj harmonogramy i pozostań zmotywowany.',
9
9
  ui: {
10
10
  title: 'Ustawienia Celu Oszczednosciowego',
11
11
  addGoalTitle: 'Nowy Cel Oszczednosciowy',
@@ -8,7 +8,7 @@ import {
8
8
  import { drawFitVisualizer } from './helpers/canvas';
9
9
  import { getRatioText, getCoverageText, getVerdictHtml, formatWristValue, formatRecValue } from './helpers/results';
10
10
 
11
- const mainEl = document.querySelector('.tool-main-card') as HTMLElement;
11
+ const mainEl = document.querySelector('.wrist-presence-card') as HTMLElement;
12
12
  const ui = mainEl ? JSON.parse(mainEl.dataset.ui || '{}') : {};
13
13
 
14
14
  const wristCircSlider = document.getElementById('wrist-circumference') as HTMLInputElement;
@@ -10,9 +10,9 @@ interface Props {
10
10
  const { ui } = Astro.props;
11
11
  ---
12
12
 
13
- <div class="tool-main-card" data-ui={JSON.stringify(ui)}>
14
- <div class="wrist-calculator-layout">
15
- <div class="calc-panel">
13
+ <div class="wrist-presence-card" data-ui={JSON.stringify(ui)}>
14
+ <div class="wrist-presence-layout">
15
+ <div class="wrist-presence-calc-panel">
16
16
  <CalculatorInputs labels={ui} />
17
17
  <Visualizer labels={ui} />
18
18
  </div>
@@ -1,4 +1,4 @@
1
- .tool-main-card {
1
+ .wrist-presence-card {
2
2
  background: var(--bg-surface);
3
3
  border: 1px solid var(--border-color);
4
4
  border-radius: 1rem;
@@ -32,7 +32,7 @@
32
32
  --color-fit-vintage-border: rgba(245, 158, 11, 0.25);
33
33
  }
34
34
 
35
- .theme-light .tool-main-card {
35
+ .theme-light .wrist-presence-card {
36
36
  --visualizer-wrist-fill: rgba(0, 0, 0, 0.04);
37
37
  --visualizer-wrist-stroke: rgba(0, 0, 0, 0.12);
38
38
  --visualizer-outer-circle: rgba(0, 0, 0, 0.02);
@@ -56,20 +56,20 @@
56
56
  --color-fit-vintage-border: rgba(245, 158, 11, 0.2);
57
57
  }
58
58
 
59
- .wrist-calculator-layout {
59
+ .wrist-presence-layout {
60
60
  display: grid;
61
61
  grid-template-columns: 1.1fr 0.9fr;
62
62
  gap: 2.5rem;
63
63
  }
64
64
 
65
65
  @media (max-width: 992px) {
66
- .wrist-calculator-layout {
66
+ .wrist-presence-layout {
67
67
  grid-template-columns: 1fr;
68
68
  gap: 2rem;
69
69
  }
70
70
  }
71
71
 
72
- .calc-panel {
72
+ .wrist-presence-calc-panel {
73
73
  display: flex;
74
74
  flex-direction: column;
75
75
  gap: 2rem;
@@ -110,11 +110,11 @@
110
110
  color: var(--text-base);
111
111
  }
112
112
 
113
- .input-group {
113
+ .wrist-presence-card .input-group {
114
114
  margin-bottom: 1.25rem;
115
115
  }
116
116
 
117
- .input-group:last-child {
117
+ .wrist-presence-card .input-group:last-child {
118
118
  margin-bottom: 0;
119
119
  }
120
120
 
@@ -210,7 +210,7 @@
210
210
  color: var(--color-white);
211
211
  }
212
212
 
213
- .canvas-wrapper {
213
+ .wrist-presence-card .canvas-wrapper {
214
214
  position: relative;
215
215
  width: 100%;
216
216
  aspect-ratio: 16 / 9;
@@ -370,3 +370,25 @@
370
370
  font-weight: 600;
371
371
  color: var(--text-base);
372
372
  }
373
+
374
+ @media (max-width: 520px) {
375
+ .wrist-presence-card {
376
+ padding: 1rem;
377
+ border-radius: 0.875rem;
378
+ max-width: 100%;
379
+ overflow: hidden;
380
+ }
381
+
382
+ .wrist-presence-card .section-header {
383
+ align-items: flex-start;
384
+ gap: 0.75rem;
385
+ }
386
+
387
+ .wrist-presence-card .canvas-wrapper {
388
+ aspect-ratio: 4 / 3;
389
+ }
390
+
391
+ .wrist-presence-card .recommendations-table {
392
+ min-width: 360px;
393
+ }
394
+ }