@jjlmoya/utils-babies 1.11.0 → 1.13.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 (29) hide show
  1. package/package.json +7 -4
  2. package/scripts/postinstall.mjs +27 -0
  3. package/src/category/index.ts +6 -6
  4. package/src/entries.ts +20 -0
  5. package/src/tool/baby-feeding-calculator/baby-feeding-calculator.css +402 -0
  6. package/src/tool/baby-feeding-calculator/component.astro +0 -404
  7. package/src/tool/baby-feeding-calculator/entry.ts +47 -0
  8. package/src/tool/baby-feeding-calculator/index.ts +2 -49
  9. package/src/tool/baby-percentile-calculator/baby-weight-height-percentile.css +451 -0
  10. package/src/tool/baby-percentile-calculator/component.astro +0 -453
  11. package/src/tool/baby-percentile-calculator/entry.ts +55 -0
  12. package/src/tool/baby-percentile-calculator/index.ts +2 -57
  13. package/src/tool/baby-size-converter/baby-size-converter.css +553 -0
  14. package/src/tool/baby-size-converter/component.astro +0 -555
  15. package/src/tool/baby-size-converter/entry.ts +53 -0
  16. package/src/tool/baby-size-converter/index.ts +2 -55
  17. package/src/tool/fertile-days-estimator/component.astro +0 -551
  18. package/src/tool/fertile-days-estimator/entry.ts +47 -0
  19. package/src/tool/fertile-days-estimator/fertile-days-calculator.css +549 -0
  20. package/src/tool/fertile-days-estimator/index.ts +2 -49
  21. package/src/tool/pregnancy-calculator/component.astro +0 -1054
  22. package/src/tool/pregnancy-calculator/entry.ts +87 -0
  23. package/src/tool/pregnancy-calculator/index.ts +2 -89
  24. package/src/tool/pregnancy-calculator/pregnancy-weeks-calculator.css +1053 -0
  25. package/src/tool/vaccination-calendar/baby-vaccination-calendar-spain.css +396 -0
  26. package/src/tool/vaccination-calendar/component.astro +0 -398
  27. package/src/tool/vaccination-calendar/entry.ts +67 -0
  28. package/src/tool/vaccination-calendar/index.ts +2 -69
  29. package/src/tools.ts +1 -1
@@ -0,0 +1,451 @@
1
+ :global(.bpc-card) {
2
+ background: #fff;
3
+ border: 1px solid #e2e8f0;
4
+ border-radius: 32px;
5
+ overflow: hidden;
6
+ display: flex;
7
+ flex-direction: column;
8
+ box-shadow: 0 20px 40px rgba(0, 0, 0, 0.05);
9
+ transition: all 0.3s ease;
10
+ border-top: 8px solid #0ea5e9;
11
+ }
12
+
13
+ :global(.bpc-card:not(.bpc-boy)) {
14
+ border-top-color: #0d9488;
15
+ }
16
+
17
+ :global(.theme-dark .bpc-card) {
18
+ background: #0f172a;
19
+ border-color: #1e293b;
20
+ box-shadow: 0 20px 40px rgba(0, 0, 0, 0.4);
21
+ }
22
+
23
+ .bpc-main {
24
+ display: grid;
25
+ grid-template-columns: 1fr 1.2fr;
26
+ }
27
+
28
+ .bpc-left {
29
+ background: #f8fafc;
30
+ padding: 40px;
31
+ border-right: 1px solid #e2e8f0;
32
+ }
33
+
34
+ :global(.theme-dark .bpc-left) {
35
+ background: #1e293b;
36
+ border-right-color: #334155;
37
+ }
38
+
39
+ :global(.bpc-right) {
40
+ background: #fff;
41
+ padding: 40px;
42
+ }
43
+
44
+ :global(.theme-dark .bpc-right) {
45
+ background: #0f172a;
46
+ }
47
+
48
+ .bpc-section-marker {
49
+ display: block;
50
+ font-size: 0.8rem;
51
+ font-weight: 800;
52
+ text-transform: uppercase;
53
+ letter-spacing: 0.1em;
54
+ color: #475569;
55
+ margin-bottom: 32px;
56
+ }
57
+
58
+ :global(.theme-dark .bpc-section-marker) {
59
+ color: #94a3b8;
60
+ }
61
+
62
+ :global(.bpc-input-group) {
63
+ margin-bottom: 24px;
64
+ }
65
+
66
+ :global(.bpc-input-label) {
67
+ display: block;
68
+ font-size: 0.95rem;
69
+ font-weight: 700;
70
+ color: #1e293b;
71
+ margin-bottom: 12px;
72
+ }
73
+
74
+ :global(.theme-dark .bpc-input-label) {
75
+ color: #f8fafc;
76
+ }
77
+
78
+ .bpc-sex-selector {
79
+ display: flex;
80
+ gap: 8px;
81
+ background: #f1f5f9;
82
+ padding: 6px;
83
+ border-radius: 14px;
84
+ }
85
+
86
+ :global(.theme-dark .bpc-sex-selector) {
87
+ background: #334155;
88
+ }
89
+
90
+ :global(.bpc-sex-btn) {
91
+ flex: 1;
92
+ padding: 12px;
93
+ border: none;
94
+ background: transparent;
95
+ border-radius: 10px;
96
+ font-size: 0.9rem;
97
+ font-weight: 700;
98
+ color: #64748b;
99
+ cursor: pointer;
100
+ transition: all 0.2s ease;
101
+ }
102
+
103
+ :global(.bpc-sex-btn.bpc-active) {
104
+ background: #fff;
105
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
106
+ }
107
+
108
+ :global(.theme-dark .bpc-sex-btn.bpc-active) {
109
+ background: #0f172a;
110
+ }
111
+
112
+ :global(.bpc-boy .bpc-sex-btn[data-sex="boy"].bpc-active) {
113
+ color: #0ea5e9;
114
+ }
115
+
116
+ :global(.bpc-card:not(.bpc-boy) .bpc-sex-btn[data-sex="girl"].bpc-active) {
117
+ color: #0d9488;
118
+ }
119
+
120
+ :global(.bpc-unit-nav) {
121
+ display: flex;
122
+ background: #f1f5f9;
123
+ padding: 6px;
124
+ border-radius: 14px;
125
+ }
126
+
127
+ :global(.theme-dark .bpc-unit-nav) {
128
+ background: #334155;
129
+ }
130
+
131
+ :global(.bpc-unit-tab) {
132
+ flex: 1;
133
+ padding: 10px;
134
+ border: none;
135
+ background: transparent;
136
+ color: #64748b;
137
+ border-radius: 10px;
138
+ font-size: 0.85rem;
139
+ font-weight: 700;
140
+ cursor: pointer;
141
+ transition: all 0.2s ease;
142
+ }
143
+
144
+ :global(.bpc-unit-tab.bpc-active) {
145
+ background: #fff;
146
+ color: #0d9488;
147
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
148
+ }
149
+
150
+ :global(.bpc-boy .bpc-unit-tab.bpc-active) {
151
+ color: #0ea5e9;
152
+ }
153
+
154
+ :global(.theme-dark .bpc-unit-tab.bpc-active) {
155
+ background: #0f172a;
156
+ }
157
+
158
+ .bpc-stepper-box {
159
+ display: flex;
160
+ align-items: center;
161
+ justify-content: space-between;
162
+ background: #fff;
163
+ border: 2px solid #e2e8f0;
164
+ border-radius: 18px;
165
+ padding: 10px;
166
+ margin-bottom: 12px;
167
+ }
168
+
169
+ :global(.theme-dark .bpc-stepper-box) {
170
+ background: #334155;
171
+ border-color: #475569;
172
+ }
173
+
174
+ :global(.bpc-btn-step) {
175
+ width: 44px;
176
+ height: 44px;
177
+ border-radius: 12px;
178
+ border: none;
179
+ background: #f8fafc;
180
+ color: #1e293b;
181
+ font-size: 1.5rem;
182
+ font-weight: 700;
183
+ cursor: pointer;
184
+ transition: all 0.2s ease;
185
+ }
186
+
187
+ :global(.theme-dark .bpc-btn-step) {
188
+ background: #0f172a;
189
+ color: #fff;
190
+ }
191
+
192
+ :global(.bpc-btn-step:hover) {
193
+ background: #0d9488;
194
+ color: #fff;
195
+ }
196
+
197
+ :global(.bpc-boy .bpc-btn-step:hover) {
198
+ background: #0ea5e9;
199
+ }
200
+
201
+ .bpc-val-view {
202
+ text-align: center;
203
+ }
204
+
205
+ :global(.bpc-val-big) {
206
+ display: block;
207
+ font-size: 2.25rem;
208
+ font-weight: 900;
209
+ color: #0f172a;
210
+ }
211
+
212
+ :global(.theme-dark .bpc-val-big) {
213
+ color: #fff;
214
+ }
215
+
216
+ :global(.bpc-val-sub) {
217
+ font-size: 0.8rem;
218
+ color: #64748b;
219
+ font-weight: 700;
220
+ }
221
+
222
+ .bpc-slider {
223
+ -webkit-appearance: none;
224
+ appearance: none;
225
+ width: 100%;
226
+ margin: 16px 0;
227
+ height: 6px;
228
+ background: #e2e8f0;
229
+ border-radius: 3px;
230
+ outline: none;
231
+ }
232
+
233
+ :global(.theme-dark .bpc-slider) {
234
+ background: #475569;
235
+ }
236
+
237
+ :global(.bpc-slider::-webkit-slider-thumb) {
238
+ -webkit-appearance: none;
239
+ appearance: none;
240
+ width: 24px;
241
+ height: 24px;
242
+ border-radius: 50%;
243
+ background: #0d9488;
244
+ cursor: pointer;
245
+ border: 4px solid #fff;
246
+ box-shadow: 0 4px 10px rgba(13, 148, 136, 0.4);
247
+ }
248
+
249
+ :global(.bpc-boy .bpc-slider::-webkit-slider-thumb) {
250
+ background: #0ea5e9;
251
+ box-shadow: 0 4px 10px rgba(14, 165, 233, 0.4);
252
+ }
253
+
254
+ :global(.bpc-grid-2) {
255
+ display: grid;
256
+ grid-template-columns: 1fr 1fr;
257
+ gap: 16px;
258
+ }
259
+
260
+ :global(.bpc-num-input) {
261
+ width: 100%;
262
+ padding: 16px;
263
+ border: 2px solid #e2e8f0;
264
+ border-radius: 14px;
265
+ font-size: 1.25rem;
266
+ font-weight: 800;
267
+ color: #0f172a;
268
+ background: #fff;
269
+ transition: all 0.2s ease;
270
+ box-sizing: border-box;
271
+ }
272
+
273
+ :global(.theme-dark .bpc-num-input) {
274
+ background: #334155;
275
+ border-color: #475569;
276
+ color: #fff;
277
+ }
278
+
279
+ :global(.bpc-num-input:focus) {
280
+ border-color: #0d9488;
281
+ outline: none;
282
+ box-shadow: 0 0 0 4px rgba(13, 148, 136, 0.1);
283
+ }
284
+
285
+ :global(.bpc-boy .bpc-num-input:focus) {
286
+ border-color: #0ea5e9;
287
+ }
288
+
289
+ .bpc-history-actions {
290
+ display: flex;
291
+ flex-direction: column;
292
+ gap: 12px;
293
+ margin-top: 32px;
294
+ }
295
+
296
+ .bpc-btn-secondary {
297
+ padding: 16px;
298
+ background: #0f172a;
299
+ color: #fff;
300
+ border: none;
301
+ border-radius: 14px;
302
+ font-size: 0.95rem;
303
+ font-weight: 800;
304
+ cursor: pointer;
305
+ transition: all 0.2s ease;
306
+ }
307
+
308
+ .bpc-btn-secondary:hover {
309
+ background: #0d9488;
310
+ transform: translateY(-2px);
311
+ }
312
+
313
+ .bpc-boy .bpc-btn-secondary:hover {
314
+ background: #0ea5e9;
315
+ }
316
+
317
+ .bpc-btn-clear {
318
+ padding: 12px;
319
+ background: transparent;
320
+ color: #64748b;
321
+ border: 1px solid #e2e8f0;
322
+ border-radius: 14px;
323
+ font-size: 0.85rem;
324
+ font-weight: 700;
325
+ cursor: pointer;
326
+ transition: all 0.2s ease;
327
+ }
328
+
329
+ :global(.theme-dark) .bpc-btn-clear {
330
+ border-color: #334155;
331
+ }
332
+
333
+ .bpc-btn-clear:hover {
334
+ color: #f43f5e;
335
+ border-color: #f43f5e;
336
+ }
337
+
338
+ .bpc-res-grid {
339
+ display: grid;
340
+ grid-template-columns: repeat(3, 1fr);
341
+ gap: 20px;
342
+ margin-bottom: 24px;
343
+ }
344
+
345
+ .bpc-res-item {
346
+ background: #f8fafc;
347
+ padding: 24px 12px;
348
+ border-radius: 24px;
349
+ text-align: center;
350
+ border: 1px solid #e2e8f0;
351
+ }
352
+
353
+ :global(.theme-dark) .bpc-res-item {
354
+ background: #1e293b;
355
+ border-color: #334155;
356
+ }
357
+
358
+ .bpc-res-title {
359
+ display: block;
360
+ font-size: 0.75rem;
361
+ font-weight: 800;
362
+ text-transform: uppercase;
363
+ color: #94a3b8;
364
+ margin-bottom: 8px;
365
+ }
366
+
367
+ .bpc-percent-val {
368
+ display: block;
369
+ font-size: 2.25rem;
370
+ font-weight: 950;
371
+ color: #0d9488;
372
+ line-height: 1;
373
+ margin-bottom: 4px;
374
+ }
375
+
376
+ .bpc-boy .bpc-percent-val {
377
+ color: #0ea5e9;
378
+ }
379
+
380
+ :global(.theme-dark) .bpc-percent-val {
381
+ color: #2dd4bf;
382
+ }
383
+
384
+ .bpc-res-desc {
385
+ font-size: 0.85rem;
386
+ font-weight: 700;
387
+ color: #64748b;
388
+ }
389
+
390
+ .bpc-alert-msg {
391
+ background: #fff7ed;
392
+ border: 1px solid #fed7aa;
393
+ color: #9a3412;
394
+ padding: 16px;
395
+ border-radius: 16px;
396
+ font-size: 0.85rem;
397
+ font-weight: 600;
398
+ line-height: 1.5;
399
+ margin-bottom: 24px;
400
+ }
401
+
402
+ :global(.theme-dark) .bpc-alert-msg {
403
+ background: rgba(154, 52, 18, 0.1);
404
+ border-color: rgba(154, 52, 18, 0.2);
405
+ color: #fdba74;
406
+ }
407
+
408
+ .bpc-hidden {
409
+ display: none;
410
+ }
411
+
412
+ .bpc-chart-box {
413
+ margin-top: 16px;
414
+ height: 300px;
415
+ width: 100%;
416
+ }
417
+
418
+ .bpc-disclaimer {
419
+ margin-top: 40px;
420
+ padding: 20px;
421
+ background: #f1f5f9;
422
+ border-radius: 16px;
423
+ font-size: 0.85rem;
424
+ color: #64748b;
425
+ line-height: 1.5;
426
+ font-style: italic;
427
+ }
428
+
429
+ :global(.theme-dark) .bpc-disclaimer {
430
+ background: #1e293b;
431
+ }
432
+
433
+ @media (max-width: 900px) {
434
+ .bpc-main {
435
+ grid-template-columns: 1fr;
436
+ }
437
+
438
+ .bpc-left {
439
+ border-right: none;
440
+ border-bottom: 1px solid #e2e8f0;
441
+ padding: 40px 20px;
442
+ }
443
+
444
+ .bpc-right {
445
+ padding: 40px 20px;
446
+ }
447
+
448
+ .bpc-res-grid {
449
+ grid-template-columns: 1fr;
450
+ }
451
+ }