@jjlmoya/utils-health 1.29.0 → 1.31.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 (55) hide show
  1. package/package.json +1 -1
  2. package/src/category/index.ts +3 -1
  3. package/src/entries.ts +5 -1
  4. package/src/index.ts +2 -0
  5. package/src/tests/locale_completeness.test.ts +1 -1
  6. package/src/tests/tool_validation.test.ts +2 -2
  7. package/src/tool/amputationAdjustedBmiCalculator/amputation-adjusted-bmi-calculator.css +347 -0
  8. package/src/tool/amputationAdjustedBmiCalculator/bibliography.astro +14 -0
  9. package/src/tool/amputationAdjustedBmiCalculator/bibliography.ts +24 -0
  10. package/src/tool/amputationAdjustedBmiCalculator/component.astro +312 -0
  11. package/src/tool/amputationAdjustedBmiCalculator/entry.ts +27 -0
  12. package/src/tool/amputationAdjustedBmiCalculator/i18n/de.ts +340 -0
  13. package/src/tool/amputationAdjustedBmiCalculator/i18n/en.ts +340 -0
  14. package/src/tool/amputationAdjustedBmiCalculator/i18n/es.ts +340 -0
  15. package/src/tool/amputationAdjustedBmiCalculator/i18n/fr.ts +340 -0
  16. package/src/tool/amputationAdjustedBmiCalculator/i18n/id.ts +340 -0
  17. package/src/tool/amputationAdjustedBmiCalculator/i18n/it.ts +340 -0
  18. package/src/tool/amputationAdjustedBmiCalculator/i18n/ja.ts +340 -0
  19. package/src/tool/amputationAdjustedBmiCalculator/i18n/ko.ts +340 -0
  20. package/src/tool/amputationAdjustedBmiCalculator/i18n/nl.ts +340 -0
  21. package/src/tool/amputationAdjustedBmiCalculator/i18n/pl.ts +340 -0
  22. package/src/tool/amputationAdjustedBmiCalculator/i18n/pt.ts +340 -0
  23. package/src/tool/amputationAdjustedBmiCalculator/i18n/ru.ts +340 -0
  24. package/src/tool/amputationAdjustedBmiCalculator/i18n/sv.ts +340 -0
  25. package/src/tool/amputationAdjustedBmiCalculator/i18n/tr.ts +340 -0
  26. package/src/tool/amputationAdjustedBmiCalculator/i18n/zh.ts +340 -0
  27. package/src/tool/amputationAdjustedBmiCalculator/index.ts +12 -0
  28. package/src/tool/amputationAdjustedBmiCalculator/logic.ts +116 -0
  29. package/src/tool/amputationAdjustedBmiCalculator/seo.astro +15 -0
  30. package/src/tool/amputationAdjustedBmiCalculator/ui.ts +42 -0
  31. package/src/tool/correctedSodiumHyperglycemiaCalculator/bibliography.astro +14 -0
  32. package/src/tool/correctedSodiumHyperglycemiaCalculator/bibliography.ts +24 -0
  33. package/src/tool/correctedSodiumHyperglycemiaCalculator/component.astro +229 -0
  34. package/src/tool/correctedSodiumHyperglycemiaCalculator/corrected-sodium-hyperglycemia-calculator.css +474 -0
  35. package/src/tool/correctedSodiumHyperglycemiaCalculator/entry.ts +27 -0
  36. package/src/tool/correctedSodiumHyperglycemiaCalculator/i18n/de.ts +285 -0
  37. package/src/tool/correctedSodiumHyperglycemiaCalculator/i18n/en.ts +285 -0
  38. package/src/tool/correctedSodiumHyperglycemiaCalculator/i18n/es.ts +285 -0
  39. package/src/tool/correctedSodiumHyperglycemiaCalculator/i18n/fr.ts +285 -0
  40. package/src/tool/correctedSodiumHyperglycemiaCalculator/i18n/id.ts +285 -0
  41. package/src/tool/correctedSodiumHyperglycemiaCalculator/i18n/it.ts +285 -0
  42. package/src/tool/correctedSodiumHyperglycemiaCalculator/i18n/ja.ts +285 -0
  43. package/src/tool/correctedSodiumHyperglycemiaCalculator/i18n/ko.ts +285 -0
  44. package/src/tool/correctedSodiumHyperglycemiaCalculator/i18n/nl.ts +285 -0
  45. package/src/tool/correctedSodiumHyperglycemiaCalculator/i18n/pl.ts +285 -0
  46. package/src/tool/correctedSodiumHyperglycemiaCalculator/i18n/pt.ts +285 -0
  47. package/src/tool/correctedSodiumHyperglycemiaCalculator/i18n/ru.ts +285 -0
  48. package/src/tool/correctedSodiumHyperglycemiaCalculator/i18n/sv.ts +285 -0
  49. package/src/tool/correctedSodiumHyperglycemiaCalculator/i18n/tr.ts +285 -0
  50. package/src/tool/correctedSodiumHyperglycemiaCalculator/i18n/zh.ts +285 -0
  51. package/src/tool/correctedSodiumHyperglycemiaCalculator/index.ts +12 -0
  52. package/src/tool/correctedSodiumHyperglycemiaCalculator/logic.ts +51 -0
  53. package/src/tool/correctedSodiumHyperglycemiaCalculator/seo.astro +15 -0
  54. package/src/tool/correctedSodiumHyperglycemiaCalculator/ui.ts +38 -0
  55. package/src/tools.ts +3 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jjlmoya/utils-health",
3
- "version": "1.29.0",
3
+ "version": "1.31.0",
4
4
  "type": "module",
5
5
  "main": "./src/index.ts",
6
6
  "types": "./src/index.ts",
@@ -1,4 +1,5 @@
1
1
  import type { HealthCategoryEntry } from '../types';
2
+ import { amputationAdjustedBmiCalculator } from '../tool/amputationAdjustedBmiCalculator/entry';
2
3
  import { bmiCalculator } from '../tool/bmiCalculator/entry';
3
4
  import { bodyAdiposityIndexCalculator } from '../tool/bodyAdiposityIndexCalculator/entry';
4
5
  import { bodyFatPercentageCalculator } from '../tool/bodyFatPercentageCalculator/entry';
@@ -22,13 +23,14 @@ import { leanBodyMassCalculator } from '../tool/leanBodyMassCalculator/entry';
22
23
  import { metabolicAgeCalculator } from '../tool/metabolicAgeCalculator/entry';
23
24
  import { bunCreatinineCalculator } from '../tool/bunCreatinineCalculator/entry';
24
25
  import { serumOsmolalityCalculator } from '../tool/serumOsmolalityCalculator/entry';
26
+ import { correctedSodiumHyperglycemiaCalculator } from '../tool/correctedSodiumHyperglycemiaCalculator/entry';
25
27
  import { fractionalExcretionSodiumCalculator } from '../tool/fractionalExcretionSodiumCalculator/entry';
26
28
  import { targetHeightEstimator } from '../tool/targetHeightEstimator/entry';
27
29
  import { correctedReticulocyteIndex } from '../tool/correctedReticulocyteIndex/entry';
28
30
 
29
31
  export const healthCategory: HealthCategoryEntry = {
30
32
  icon: 'mdi:heart-pulse',
31
- tools: [bmiCalculator, bodyAdiposityIndexCalculator, bodyFatPercentageCalculator, waistHipRatioCalculator, waistHeightRatioCalculator, leanBodyMassCalculator, metabolicAgeCalculator, caloricDeficitCalculator, dailyProteinCalculator, macronutrientCalculator, tdeeCalculator, bunCreatinineCalculator, serumOsmolalityCalculator, fractionalExcretionSodiumCalculator, correctedReticulocyteIndex, targetHeightEstimator, daltonismSimulator, tinnitusReliever, breathingVisualizer, caffeineTracker, waterPurifier, digestionStopwatch, binauralTuner, pelliRobsonTest, peripheralVisionTrainer, epworthSleepinessScale],
33
+ tools: [bmiCalculator, amputationAdjustedBmiCalculator, bodyAdiposityIndexCalculator, bodyFatPercentageCalculator, waistHipRatioCalculator, waistHeightRatioCalculator, leanBodyMassCalculator, metabolicAgeCalculator, caloricDeficitCalculator, dailyProteinCalculator, macronutrientCalculator, tdeeCalculator, bunCreatinineCalculator, serumOsmolalityCalculator, correctedSodiumHyperglycemiaCalculator, fractionalExcretionSodiumCalculator, correctedReticulocyteIndex, targetHeightEstimator, daltonismSimulator, tinnitusReliever, breathingVisualizer, caffeineTracker, waterPurifier, digestionStopwatch, binauralTuner, pelliRobsonTest, peripheralVisionTrainer, epworthSleepinessScale],
32
34
  i18n: {
33
35
  en: () => import('./i18n/en').then((m) => m.content),
34
36
  es: () => import('./i18n/es').then((m) => m.content),
package/src/entries.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export { binauralTuner } from './tool/binauralTuner/entry';
2
2
  export { bloodUnitConverter } from './tool/bloodUnitConverter/entry';
3
3
  export { bmiCalculator } from './tool/bmiCalculator/entry';
4
+ export { amputationAdjustedBmiCalculator } from './tool/amputationAdjustedBmiCalculator/entry';
4
5
  export { bodyAdiposityIndexCalculator } from './tool/bodyAdiposityIndexCalculator/entry';
5
6
  export { bodyFatPercentageCalculator } from './tool/bodyFatPercentageCalculator/entry';
6
7
  export { waistHipRatioCalculator } from './tool/waistHipRatioCalculator/entry';
@@ -19,6 +20,7 @@ export { macronutrientCalculator } from './tool/macronutrientCalculator/entry';
19
20
  export { tdeeCalculator } from './tool/tdeeCalculator/entry';
20
21
  export { bunCreatinineCalculator } from './tool/bunCreatinineCalculator/entry';
21
22
  export { serumOsmolalityCalculator } from './tool/serumOsmolalityCalculator/entry';
23
+ export { correctedSodiumHyperglycemiaCalculator } from './tool/correctedSodiumHyperglycemiaCalculator/entry';
22
24
  export { fractionalExcretionSodiumCalculator } from './tool/fractionalExcretionSodiumCalculator/entry';
23
25
  export { targetHeightEstimator } from './tool/targetHeightEstimator/entry';
24
26
  export { correctedReticulocyteIndex } from './tool/correctedReticulocyteIndex/entry';
@@ -30,6 +32,7 @@ export { tinnitusReliever } from './tool/tinnitusReliever/entry';
30
32
  export { ubeCalculator } from './tool/ubeCalculator/entry';
31
33
  export { waterPurifier } from './tool/waterPurifier/entry';
32
34
  export { healthCategory } from './category';
35
+ import { amputationAdjustedBmiCalculator } from './tool/amputationAdjustedBmiCalculator/entry';
33
36
  import { binauralTuner } from './tool/binauralTuner/entry';
34
37
  import { bloodUnitConverter } from './tool/bloodUnitConverter/entry';
35
38
  import { bmiCalculator } from './tool/bmiCalculator/entry';
@@ -51,6 +54,7 @@ import { macronutrientCalculator } from './tool/macronutrientCalculator/entry';
51
54
  import { tdeeCalculator } from './tool/tdeeCalculator/entry';
52
55
  import { bunCreatinineCalculator } from './tool/bunCreatinineCalculator/entry';
53
56
  import { serumOsmolalityCalculator } from './tool/serumOsmolalityCalculator/entry';
57
+ import { correctedSodiumHyperglycemiaCalculator } from './tool/correctedSodiumHyperglycemiaCalculator/entry';
54
58
  import { fractionalExcretionSodiumCalculator } from './tool/fractionalExcretionSodiumCalculator/entry';
55
59
  import { targetHeightEstimator } from './tool/targetHeightEstimator/entry';
56
60
  import { correctedReticulocyteIndex } from './tool/correctedReticulocyteIndex/entry';
@@ -61,4 +65,4 @@ import { screenDecompressionTime } from './tool/screenDecompressionTime/entry';
61
65
  import { tinnitusReliever } from './tool/tinnitusReliever/entry';
62
66
  import { ubeCalculator } from './tool/ubeCalculator/entry';
63
67
  import { waterPurifier } from './tool/waterPurifier/entry';
64
- export const ALL_ENTRIES = [binauralTuner, bloodUnitConverter, bmiCalculator, bodyAdiposityIndexCalculator, bodyFatPercentageCalculator, waistHipRatioCalculator, waistHeightRatioCalculator, breathingVisualizer, caffeineTracker, caloricDeficitCalculator, dailyProteinCalculator, macronutrientCalculator, tdeeCalculator, bunCreatinineCalculator, serumOsmolalityCalculator, fractionalExcretionSodiumCalculator, correctedReticulocyteIndex, targetHeightEstimator, daltonismSimulator, digestionStopwatch, epworthSleepinessScale, hydrationCalculator, leanBodyMassCalculator, metabolicAgeCalculator, pelliRobsonTest, peripheralVisionTrainer, readingDistanceCalculator, screenDecompressionTime, tinnitusReliever, ubeCalculator, waterPurifier];
68
+ export const ALL_ENTRIES = [binauralTuner, bloodUnitConverter, bmiCalculator, amputationAdjustedBmiCalculator, bodyAdiposityIndexCalculator, bodyFatPercentageCalculator, waistHipRatioCalculator, waistHeightRatioCalculator, breathingVisualizer, caffeineTracker, caloricDeficitCalculator, dailyProteinCalculator, macronutrientCalculator, tdeeCalculator, bunCreatinineCalculator, serumOsmolalityCalculator, correctedSodiumHyperglycemiaCalculator, fractionalExcretionSodiumCalculator, correctedReticulocyteIndex, targetHeightEstimator, daltonismSimulator, digestionStopwatch, epworthSleepinessScale, hydrationCalculator, leanBodyMassCalculator, metabolicAgeCalculator, pelliRobsonTest, peripheralVisionTrainer, readingDistanceCalculator, screenDecompressionTime, tinnitusReliever, ubeCalculator, waterPurifier];
package/src/index.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './tool/bmiCalculator';
2
+ export * from './tool/amputationAdjustedBmiCalculator';
2
3
  export * from './tool/daltonismSimulator';
3
4
  export * from './tool/tinnitusReliever';
4
5
  export * from './tool/breathingVisualizer';
@@ -26,6 +27,7 @@ export * from './tool/macronutrientCalculator';
26
27
  export * from './tool/tdeeCalculator';
27
28
  export * from './tool/bunCreatinineCalculator';
28
29
  export * from './tool/serumOsmolalityCalculator';
30
+ export * from './tool/correctedSodiumHyperglycemiaCalculator';
29
31
  export * from './tool/fractionalExcretionSodiumCalculator';
30
32
  export * from './tool/targetHeightEstimator';
31
33
  export * from './tool/correctedReticulocyteIndex';
@@ -36,6 +36,6 @@ describe('Locale Completeness Validation', () => {
36
36
  });
37
37
 
38
38
  it('all tools registered', () => {
39
- expect(ALL_TOOLS.length).toBe(31);
39
+ expect(ALL_TOOLS.length).toBe(33);
40
40
  });
41
41
  });
@@ -4,8 +4,8 @@ import { healthCategory } from '../data';
4
4
 
5
5
  describe('Tool Validation Suite', () => {
6
6
  describe('Library Registration', () => {
7
- it('should have 30 tools in ALL_TOOLS', () => {
8
- expect(ALL_TOOLS.length).toBe(31);
7
+ it('should have 33 tools in ALL_TOOLS', () => {
8
+ expect(ALL_TOOLS.length).toBe(33);
9
9
  });
10
10
 
11
11
  it('healthCategory should be defined', () => {
@@ -0,0 +1,347 @@
1
+ .aabmi {
2
+ --aabmi-ink: #172033;
3
+ --aabmi-muted: #647184;
4
+ --aabmi-panel: #fff;
5
+ --aabmi-line: #dbe4ef;
6
+ --aabmi-soft: #f3f7fb;
7
+ --aabmi-accent: #0f9f9a;
8
+ --aabmi-warm: #f07c48;
9
+ --aabmi-danger: #d9485f;
10
+
11
+ color: var(--aabmi-ink);
12
+ width: 100%;
13
+ margin: 1.5rem 0;
14
+ }
15
+
16
+ .theme-dark .aabmi {
17
+ --aabmi-ink: #eef5f7;
18
+ --aabmi-muted: #a9b8c7;
19
+ --aabmi-panel: #142027;
20
+ --aabmi-line: #2d414c;
21
+ --aabmi-soft: #0d171d;
22
+ --aabmi-accent: #46d1c3;
23
+ --aabmi-warm: #ffad66;
24
+ --aabmi-danger: #ff7188;
25
+ }
26
+
27
+ .aabmi__grid {
28
+ display: grid;
29
+ grid-template-columns: minmax(230px, 0.85fr) minmax(220px, 0.7fr) minmax(260px, 1fr);
30
+ gap: 1rem;
31
+ align-items: stretch;
32
+ }
33
+
34
+ .aabmi__panel,
35
+ .aabmi__body-map {
36
+ background: var(--aabmi-panel);
37
+ border: 1px solid var(--aabmi-line);
38
+ border-radius: 8px;
39
+ box-shadow: 0 18px 45px rgba(23, 32, 51, 0.08);
40
+ }
41
+
42
+ .aabmi__panel {
43
+ padding: 1rem;
44
+ }
45
+
46
+ .aabmi__unit {
47
+ display: grid;
48
+ grid-template-columns: 1fr 1fr;
49
+ gap: 0.35rem;
50
+ padding: 0.25rem;
51
+ background: var(--aabmi-soft);
52
+ border: 1px solid var(--aabmi-line);
53
+ border-radius: 8px;
54
+ }
55
+
56
+ .aabmi__unit-btn,
57
+ .aabmi__reset,
58
+ .aabmi__chip {
59
+ border: 0;
60
+ cursor: pointer;
61
+ font: inherit;
62
+ }
63
+
64
+ .aabmi__unit-btn {
65
+ min-height: 2.25rem;
66
+ border-radius: 6px;
67
+ background: transparent;
68
+ color: var(--aabmi-muted);
69
+ font-weight: 800;
70
+ }
71
+
72
+ .aabmi__unit-btn--active {
73
+ background: var(--aabmi-panel);
74
+ color: var(--aabmi-accent);
75
+ box-shadow: 0 4px 14px rgba(15, 159, 154, 0.18);
76
+ }
77
+
78
+ .aabmi__field {
79
+ display: grid;
80
+ gap: 0.55rem;
81
+ margin-top: 1rem;
82
+ }
83
+
84
+ .aabmi__field span,
85
+ .aabmi__selected span,
86
+ .aabmi__metric span,
87
+ .aabmi__compare span {
88
+ color: var(--aabmi-muted);
89
+ font-size: 0.75rem;
90
+ font-weight: 850;
91
+ text-transform: uppercase;
92
+ }
93
+
94
+ .aabmi__field strong,
95
+ .aabmi__metric strong {
96
+ font-size: 1.8rem;
97
+ line-height: 1;
98
+ }
99
+
100
+ .aabmi__field small,
101
+ .aabmi__metric small {
102
+ color: var(--aabmi-muted);
103
+ font-size: 0.8rem;
104
+ }
105
+
106
+ .aabmi input[type='range'] {
107
+ width: 100%;
108
+ height: 0.55rem;
109
+ appearance: none;
110
+ border: 0;
111
+ border-radius: 999px;
112
+ background: linear-gradient(90deg, var(--aabmi-accent), var(--aabmi-warm));
113
+ outline: none;
114
+ }
115
+
116
+ .aabmi__selected {
117
+ display: flex;
118
+ justify-content: space-between;
119
+ gap: 0.75rem;
120
+ align-items: center;
121
+ margin-top: 1rem;
122
+ padding-top: 1rem;
123
+ border-top: 1px solid var(--aabmi-line);
124
+ }
125
+
126
+ .aabmi__selected strong {
127
+ display: block;
128
+ font-size: 1.5rem;
129
+ }
130
+
131
+ .aabmi__reset {
132
+ display: inline-flex;
133
+ gap: 0.35rem;
134
+ align-items: center;
135
+ border-radius: 999px;
136
+ padding: 0.55rem 0.8rem;
137
+ background: var(--aabmi-soft);
138
+ color: var(--aabmi-ink);
139
+ font-weight: 800;
140
+ }
141
+
142
+ .aabmi__reset svg {
143
+ width: 1rem;
144
+ height: 1rem;
145
+ }
146
+
147
+ .aabmi__chips {
148
+ display: flex;
149
+ flex-wrap: wrap;
150
+ gap: 0.45rem;
151
+ min-height: 4.6rem;
152
+ align-content: flex-start;
153
+ margin-top: 0.8rem;
154
+ }
155
+
156
+ .aabmi__chip {
157
+ border-radius: 999px;
158
+ padding: 0.45rem 0.65rem;
159
+ color: var(--aabmi-accent);
160
+ background: color-mix(in srgb, var(--aabmi-accent) 12%, transparent);
161
+ font-size: 0.78rem;
162
+ font-weight: 800;
163
+ }
164
+
165
+ .aabmi__empty {
166
+ color: var(--aabmi-muted);
167
+ font-size: 0.9rem;
168
+ }
169
+
170
+ .aabmi__body-map {
171
+ display: grid;
172
+ place-items: center;
173
+ padding: 0.75rem;
174
+ background:
175
+ linear-gradient(180deg, color-mix(in srgb, var(--aabmi-accent) 10%, transparent), transparent),
176
+ var(--aabmi-panel);
177
+ }
178
+
179
+ .aabmi__svg {
180
+ width: min(100%, 17rem);
181
+ height: auto;
182
+ }
183
+
184
+ .aabmi__core {
185
+ fill: var(--aabmi-soft);
186
+ stroke: var(--aabmi-line);
187
+ stroke-width: 4;
188
+ }
189
+
190
+ .aabmi__part path {
191
+ fill: #dfe9f1;
192
+ stroke: #fff;
193
+ stroke-width: 4;
194
+ cursor: pointer;
195
+ transition: fill 0.18s ease, transform 0.18s ease;
196
+ transform-box: fill-box;
197
+ transform-origin: center;
198
+ }
199
+
200
+ .theme-dark .aabmi__part path {
201
+ fill: #263945;
202
+ stroke: #142027;
203
+ }
204
+
205
+ .aabmi__part:hover path,
206
+ .aabmi__part:focus path {
207
+ fill: color-mix(in srgb, var(--aabmi-accent) 55%, #dfe9f1);
208
+ transform: scale(1.025);
209
+ outline: none;
210
+ }
211
+
212
+ .aabmi__part.is-selected path {
213
+ fill: var(--aabmi-warm);
214
+ }
215
+
216
+ .aabmi__body-map p {
217
+ max-width: 20ch;
218
+ margin: 0.25rem 0 0;
219
+ color: var(--aabmi-muted);
220
+ font-size: 0.82rem;
221
+ font-weight: 750;
222
+ text-align: center;
223
+ }
224
+
225
+ .aabmi__panel--results {
226
+ display: grid;
227
+ gap: 0.85rem;
228
+ }
229
+
230
+ .aabmi__metric {
231
+ display: flex;
232
+ justify-content: space-between;
233
+ gap: 1rem;
234
+ align-items: center;
235
+ padding-bottom: 0.75rem;
236
+ border-bottom: 1px solid var(--aabmi-line);
237
+ }
238
+
239
+ .aabmi__compare {
240
+ display: grid;
241
+ grid-template-columns: 1fr 1fr;
242
+ gap: 0.75rem;
243
+ }
244
+
245
+ .aabmi__compare article {
246
+ min-width: 0;
247
+ padding: 0.8rem;
248
+ background: var(--aabmi-soft);
249
+ border: 1px solid var(--aabmi-line);
250
+ border-radius: 8px;
251
+ }
252
+
253
+ .aabmi__compare strong {
254
+ display: block;
255
+ font-size: clamp(2.1rem, 6vw, 3.75rem);
256
+ line-height: 0.95;
257
+ }
258
+
259
+ .aabmi__compare em {
260
+ display: block;
261
+ min-height: 2.3rem;
262
+ margin-top: 0.3rem;
263
+ color: var(--aabmi-muted);
264
+ font-style: normal;
265
+ font-weight: 800;
266
+ }
267
+
268
+ .aabmi__compare .aabmi__adjusted {
269
+ border-color: color-mix(in srgb, var(--aabmi-accent) 35%, var(--aabmi-line));
270
+ }
271
+
272
+ .aabmi__bars {
273
+ display: grid;
274
+ gap: 0.55rem;
275
+ }
276
+
277
+ .aabmi__bar {
278
+ position: relative;
279
+ height: 0.7rem;
280
+ border-radius: 999px;
281
+ background: linear-gradient(90deg, #6ea8fe 0 12%, #50c878 12% 33%, #f6d65b 33% 50%, #f4a261 50% 67%, #e76f7a 67% 84%, #b83250 84%);
282
+ }
283
+
284
+ .aabmi__bar i {
285
+ position: absolute;
286
+ top: -0.28rem;
287
+ width: 0.28rem;
288
+ height: 1.25rem;
289
+ border-radius: 999px;
290
+ background: var(--aabmi-ink);
291
+ transform: translateX(-50%);
292
+ }
293
+
294
+ .aabmi__bar--adjusted i {
295
+ background: var(--aabmi-accent);
296
+ }
297
+
298
+ .aabmi__notice {
299
+ display: flex;
300
+ gap: 0.55rem;
301
+ align-items: center;
302
+ padding: 0.75rem;
303
+ border-radius: 8px;
304
+ background: color-mix(in srgb, var(--aabmi-accent) 12%, transparent);
305
+ color: var(--aabmi-accent);
306
+ font-weight: 850;
307
+ }
308
+
309
+ .aabmi[data-category-changed='true'] .aabmi__notice {
310
+ background: color-mix(in srgb, var(--aabmi-warm) 16%, transparent);
311
+ color: var(--aabmi-warm);
312
+ }
313
+
314
+ .aabmi__notice svg {
315
+ width: 1.25rem;
316
+ height: 1.25rem;
317
+ flex: 0 0 auto;
318
+ }
319
+
320
+ .aabmi__formula {
321
+ margin: 0;
322
+ color: var(--aabmi-muted);
323
+ font-size: 0.82rem;
324
+ line-height: 1.45;
325
+ }
326
+
327
+ @media (max-width: 900px) {
328
+ .aabmi__grid {
329
+ grid-template-columns: 1fr 1fr;
330
+ }
331
+
332
+ .aabmi__panel--results {
333
+ grid-column: 1 / -1;
334
+ }
335
+ }
336
+
337
+ @media (max-width: 640px) {
338
+ .aabmi__grid,
339
+ .aabmi__compare {
340
+ grid-template-columns: 1fr;
341
+ }
342
+
343
+ .aabmi__panel,
344
+ .aabmi__body-map {
345
+ border-radius: 8px;
346
+ }
347
+ }
@@ -0,0 +1,14 @@
1
+ ---
2
+ import { Bibliography } from '@jjlmoya/utils-shared';
3
+ import { amputationAdjustedBmiCalculator } 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 amputationAdjustedBmiCalculator.i18n[locale]?.();
12
+ ---
13
+
14
+ {content && <Bibliography links={content.bibliography} />}
@@ -0,0 +1,24 @@
1
+ import type { BibliographyEntry } from '../../types';
2
+
3
+ export const bibliography: BibliographyEntry[] = [
4
+ {
5
+ name: 'Mellor GE. Body weight adjustments for amputees. Journal of the American Dietetic Association, 1984',
6
+ url: 'https://pubmed.ncbi.nlm.nih.gov/6736384/',
7
+ },
8
+ {
9
+ name: 'Garrison DM. Calculation of body mass index in patients with limb loss. Archives of Physical Medicine and Rehabilitation, 1996',
10
+ url: 'https://pubmed.ncbi.nlm.nih.gov/8607766/',
11
+ },
12
+ {
13
+ name: 'World Health Organization: Obesity and overweight fact sheet',
14
+ url: 'https://www.who.int/news-room/fact-sheets/detail/obesity-and-overweight',
15
+ },
16
+ {
17
+ name: 'CDC: About adult BMI',
18
+ url: 'https://www.cdc.gov/bmi/adult-calculator/index.html',
19
+ },
20
+ {
21
+ name: 'Wikipedia: Human body weight',
22
+ url: 'https://en.wikipedia.org/wiki/Human_body_weight',
23
+ },
24
+ ];