@jjlmoya/utils-cooking 1.35.0 → 1.37.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 (80) hide show
  1. package/package.json +1 -1
  2. package/src/category/index.ts +6 -0
  3. package/src/entries.ts +7 -1
  4. package/src/index.ts +3 -0
  5. package/src/tests/brix-sorbet-density-calculator.test.ts +53 -0
  6. package/src/tests/i18n-titles.test.ts +2 -2
  7. package/src/tests/locale_completeness.test.ts +2 -2
  8. package/src/tests/tool_validation.test.ts +2 -2
  9. package/src/tool/brix-sorbet-density-calculator/bibliography.astro +6 -0
  10. package/src/tool/brix-sorbet-density-calculator/bibliography.ts +10 -0
  11. package/src/tool/brix-sorbet-density-calculator/brix-sorbet-density-calculator.css +878 -0
  12. package/src/tool/brix-sorbet-density-calculator/component.astro +220 -0
  13. package/src/tool/brix-sorbet-density-calculator/entry.ts +26 -0
  14. package/src/tool/brix-sorbet-density-calculator/helpers.ts +102 -0
  15. package/src/tool/brix-sorbet-density-calculator/i18n/de.ts +295 -0
  16. package/src/tool/brix-sorbet-density-calculator/i18n/en.ts +295 -0
  17. package/src/tool/brix-sorbet-density-calculator/i18n/es.ts +295 -0
  18. package/src/tool/brix-sorbet-density-calculator/i18n/fr.ts +295 -0
  19. package/src/tool/brix-sorbet-density-calculator/i18n/id.ts +295 -0
  20. package/src/tool/brix-sorbet-density-calculator/i18n/it.ts +295 -0
  21. package/src/tool/brix-sorbet-density-calculator/i18n/ja.ts +295 -0
  22. package/src/tool/brix-sorbet-density-calculator/i18n/ko.ts +295 -0
  23. package/src/tool/brix-sorbet-density-calculator/i18n/nl.ts +295 -0
  24. package/src/tool/brix-sorbet-density-calculator/i18n/pl.ts +295 -0
  25. package/src/tool/brix-sorbet-density-calculator/i18n/pt.ts +295 -0
  26. package/src/tool/brix-sorbet-density-calculator/i18n/ru.ts +295 -0
  27. package/src/tool/brix-sorbet-density-calculator/i18n/sv.ts +295 -0
  28. package/src/tool/brix-sorbet-density-calculator/i18n/tr.ts +295 -0
  29. package/src/tool/brix-sorbet-density-calculator/i18n/zh.ts +295 -0
  30. package/src/tool/brix-sorbet-density-calculator/index.ts +11 -0
  31. package/src/tool/brix-sorbet-density-calculator/logic.ts +180 -0
  32. package/src/tool/brix-sorbet-density-calculator/script.ts +114 -0
  33. package/src/tool/brix-sorbet-density-calculator/seo.astro +15 -0
  34. package/src/tool/macaron-drying-predictor/bibliography.astro +6 -0
  35. package/src/tool/macaron-drying-predictor/bibliography.ts +14 -0
  36. package/src/tool/macaron-drying-predictor/component.astro +319 -0
  37. package/src/tool/macaron-drying-predictor/entry.ts +26 -0
  38. package/src/tool/macaron-drying-predictor/i18n/de.ts +245 -0
  39. package/src/tool/macaron-drying-predictor/i18n/en.ts +247 -0
  40. package/src/tool/macaron-drying-predictor/i18n/es.ts +245 -0
  41. package/src/tool/macaron-drying-predictor/i18n/fr.ts +245 -0
  42. package/src/tool/macaron-drying-predictor/i18n/id.ts +245 -0
  43. package/src/tool/macaron-drying-predictor/i18n/it.ts +245 -0
  44. package/src/tool/macaron-drying-predictor/i18n/ja.ts +245 -0
  45. package/src/tool/macaron-drying-predictor/i18n/ko.ts +245 -0
  46. package/src/tool/macaron-drying-predictor/i18n/nl.ts +245 -0
  47. package/src/tool/macaron-drying-predictor/i18n/pl.ts +245 -0
  48. package/src/tool/macaron-drying-predictor/i18n/pt.ts +245 -0
  49. package/src/tool/macaron-drying-predictor/i18n/ru.ts +245 -0
  50. package/src/tool/macaron-drying-predictor/i18n/sv.ts +245 -0
  51. package/src/tool/macaron-drying-predictor/i18n/tr.ts +245 -0
  52. package/src/tool/macaron-drying-predictor/i18n/zh.ts +245 -0
  53. package/src/tool/macaron-drying-predictor/index.ts +11 -0
  54. package/src/tool/macaron-drying-predictor/logic.ts +58 -0
  55. package/src/tool/macaron-drying-predictor/macaron-drying-predictor.css +551 -0
  56. package/src/tool/macaron-drying-predictor/seo.astro +15 -0
  57. package/src/tool/oil-smoke-point-tracker/bibliography.astro +6 -0
  58. package/src/tool/oil-smoke-point-tracker/bibliography.ts +10 -0
  59. package/src/tool/oil-smoke-point-tracker/component.astro +445 -0
  60. package/src/tool/oil-smoke-point-tracker/entry.ts +26 -0
  61. package/src/tool/oil-smoke-point-tracker/i18n/de.ts +285 -0
  62. package/src/tool/oil-smoke-point-tracker/i18n/en.ts +285 -0
  63. package/src/tool/oil-smoke-point-tracker/i18n/es.ts +285 -0
  64. package/src/tool/oil-smoke-point-tracker/i18n/fr.ts +285 -0
  65. package/src/tool/oil-smoke-point-tracker/i18n/id.ts +244 -0
  66. package/src/tool/oil-smoke-point-tracker/i18n/it.ts +244 -0
  67. package/src/tool/oil-smoke-point-tracker/i18n/ja.ts +244 -0
  68. package/src/tool/oil-smoke-point-tracker/i18n/ko.ts +244 -0
  69. package/src/tool/oil-smoke-point-tracker/i18n/nl.ts +244 -0
  70. package/src/tool/oil-smoke-point-tracker/i18n/pl.ts +244 -0
  71. package/src/tool/oil-smoke-point-tracker/i18n/pt.ts +244 -0
  72. package/src/tool/oil-smoke-point-tracker/i18n/ru.ts +244 -0
  73. package/src/tool/oil-smoke-point-tracker/i18n/sv.ts +244 -0
  74. package/src/tool/oil-smoke-point-tracker/i18n/tr.ts +244 -0
  75. package/src/tool/oil-smoke-point-tracker/i18n/zh.ts +244 -0
  76. package/src/tool/oil-smoke-point-tracker/index.ts +11 -0
  77. package/src/tool/oil-smoke-point-tracker/logic.ts +70 -0
  78. package/src/tool/oil-smoke-point-tracker/oil-smoke-point-tracker.css +937 -0
  79. package/src/tool/oil-smoke-point-tracker/seo.astro +15 -0
  80. package/src/tools.ts +6 -0
@@ -0,0 +1,551 @@
1
+ .md {
2
+ --md-bg: #fdf2f8;
3
+ --md-bg-dark: #140a14;
4
+ --md-surface: #fff;
5
+ --md-surface-dark: #1d1320;
6
+ --md-ink: #4a1942;
7
+ --md-ink-dark: #edd8e8;
8
+ --md-muted: #a17a92;
9
+ --md-muted-dark: #8a7488;
10
+ --md-border: #f0c4dc;
11
+ --md-border-dark: #332539;
12
+ --md-pink: #ec4899;
13
+ --md-pink-dark: #f472b6;
14
+ --md-mint: #34d399;
15
+ --md-mint-dark: #6ee7b7;
16
+ --md-amber: #f59e0b;
17
+ --md-amber-dark: #fbbf24;
18
+ --md-green: #10b981;
19
+ --md-green-dark: #34d399;
20
+ --md-gray: #9ca3af;
21
+ --md-gray-dark: #6b7280;
22
+ --md-lavender: #a78bfa;
23
+ --md-lavender-dark: #c4b5fd;
24
+ --md-green-tag: #059669;
25
+ --md-amber-tag: #d97706;
26
+ --md-lavender-tag: #7c3aed;
27
+
28
+ width: 100%;
29
+ box-sizing: border-box;
30
+ }
31
+
32
+ .md-card {
33
+ position: relative;
34
+ max-width: 800px;
35
+ margin: 0 auto;
36
+ background: var(--md-surface);
37
+ border: 1px solid var(--md-border);
38
+ border-radius: 1.5rem;
39
+ overflow: hidden;
40
+ }
41
+
42
+ .md-unit-row {
43
+ position: absolute;
44
+ top: 0.75rem;
45
+ right: 0.75rem;
46
+ display: flex;
47
+ gap: 0;
48
+ border: 1px solid var(--md-border);
49
+ border-radius: 6px;
50
+ overflow: hidden;
51
+ z-index: 2;
52
+ opacity: 0.65;
53
+ transition: opacity 0.2s;
54
+ }
55
+
56
+ .md-unit-row:hover { opacity: 1; }
57
+
58
+ .theme-dark .md-unit-row { border-color: var(--md-border-dark); }
59
+
60
+ .md-unit-btn {
61
+ font-size: 0.6rem;
62
+ font-weight: 700;
63
+ padding: 0.3rem 0.5rem;
64
+ border: none;
65
+ cursor: pointer;
66
+ background: transparent;
67
+ color: var(--md-muted);
68
+ letter-spacing: 0.04em;
69
+ transition: all 0.2s;
70
+ line-height: 1;
71
+ }
72
+
73
+ .theme-dark .md-unit-btn { color: var(--md-muted-dark); }
74
+
75
+ .md-unit-btn.active {
76
+ background: var(--md-pink);
77
+ color: var(--md-surface);
78
+ }
79
+
80
+ .theme-dark .md-unit-btn.active {
81
+ background: var(--md-pink-dark);
82
+ color: var(--md-surface-dark);
83
+ }
84
+
85
+ .theme-dark .md-card {
86
+ background: var(--md-surface-dark);
87
+ border-color: var(--md-border-dark);
88
+ }
89
+
90
+ /* ===== Body ===== */
91
+ .md-body {
92
+ display: grid;
93
+ grid-template-columns: 1fr;
94
+ gap: 0;
95
+ }
96
+
97
+ @media (min-width: 700px) {
98
+ .md-body {
99
+ grid-template-columns: 1fr 1fr;
100
+ }
101
+ }
102
+
103
+ /* ===== Controls ===== */
104
+ .md-controls {
105
+ padding: 1.25rem;
106
+ display: flex;
107
+ flex-direction: column;
108
+ gap: 1.25rem;
109
+ }
110
+
111
+ @media (min-width: 700px) {
112
+ .md-controls {
113
+ border-right: 2px solid var(--md-border);
114
+ }
115
+ .theme-dark .md-controls {
116
+ border-right-color: var(--md-border-dark);
117
+ }
118
+ }
119
+
120
+ .md-input-row {
121
+ display: flex;
122
+ flex-direction: column;
123
+ }
124
+
125
+ .md-input-group {
126
+ display: flex;
127
+ flex-direction: column;
128
+ gap: 0.4rem;
129
+ }
130
+
131
+ .md-label {
132
+ font-size: 0.9rem;
133
+ font-weight: 800;
134
+ color: var(--md-ink);
135
+ }
136
+
137
+ .theme-dark .md-label {
138
+ color: var(--md-ink-dark);
139
+ }
140
+
141
+ .md-slider-wrap {
142
+ display: flex;
143
+ align-items: center;
144
+ gap: 0.75rem;
145
+ }
146
+
147
+ .md-slider {
148
+ -webkit-appearance: none;
149
+ appearance: none;
150
+ flex: 1;
151
+ height: 8px;
152
+ border-radius: 4px;
153
+ background: var(--md-border);
154
+ outline: none;
155
+ cursor: pointer;
156
+ min-width: 0;
157
+ }
158
+
159
+ .theme-dark .md-slider {
160
+ background: var(--md-border-dark);
161
+ }
162
+
163
+ .md-slider::-webkit-slider-thumb {
164
+ -webkit-appearance: none;
165
+ appearance: none;
166
+ width: 32px;
167
+ height: 32px;
168
+ border-radius: 50%;
169
+ background: linear-gradient(135deg, var(--md-pink), var(--md-lavender));
170
+ border: 3px solid var(--md-surface);
171
+ box-shadow: 0 3px 10px rgba(236, 72, 153, 0.3);
172
+ cursor: pointer;
173
+ transition: transform 0.15s;
174
+ }
175
+
176
+ .theme-dark .md-slider::-webkit-slider-thumb {
177
+ background: linear-gradient(135deg, var(--md-pink-dark), var(--md-lavender-dark));
178
+ border-color: var(--md-surface-dark);
179
+ }
180
+
181
+ .md-slider::-webkit-slider-thumb:hover {
182
+ transform: scale(1.15);
183
+ }
184
+
185
+ .md-slider::-moz-range-thumb {
186
+ width: 32px;
187
+ height: 32px;
188
+ border-radius: 50%;
189
+ background: linear-gradient(135deg, var(--md-pink), var(--md-lavender));
190
+ border: 3px solid var(--md-surface);
191
+ box-shadow: 0 3px 10px rgba(236, 72, 153, 0.3);
192
+ cursor: pointer;
193
+ }
194
+
195
+ .theme-dark .md-slider::-moz-range-thumb {
196
+ background: linear-gradient(135deg, var(--md-pink-dark), var(--md-lavender-dark));
197
+ border-color: var(--md-surface-dark);
198
+ }
199
+
200
+ .md-value {
201
+ font-size: 1.2rem;
202
+ font-weight: 900;
203
+ color: var(--md-ink);
204
+ min-width: 4.5rem;
205
+ text-align: right;
206
+ font-variant-numeric: tabular-nums;
207
+ white-space: nowrap;
208
+ }
209
+
210
+ .theme-dark .md-value {
211
+ color: var(--md-ink-dark);
212
+ }
213
+
214
+ .md-unit {
215
+ font-size: 0.8rem;
216
+ font-weight: 700;
217
+ color: var(--md-muted);
218
+ }
219
+
220
+ .theme-dark .md-unit {
221
+ color: var(--md-muted-dark);
222
+ }
223
+
224
+ .md-tag {
225
+ display: inline-block;
226
+ font-size: 0.75rem;
227
+ font-weight: 700;
228
+ padding: 0.25rem 0.65rem;
229
+ border-radius: 100px;
230
+ text-transform: uppercase;
231
+ letter-spacing: 0.04em;
232
+ align-self: flex-start;
233
+ }
234
+
235
+ .md-tag-humid-high {
236
+ background: color-mix(in srgb, var(--md-pink) 15%, transparent);
237
+ color: var(--md-pink);
238
+ }
239
+
240
+ .md-tag-humid-normal {
241
+ background: color-mix(in srgb, var(--md-mint) 15%, transparent);
242
+ color: var(--md-green-tag);
243
+ }
244
+
245
+ .md-tag-humid-low {
246
+ background: color-mix(in srgb, var(--md-amber) 15%, transparent);
247
+ color: var(--md-amber-tag);
248
+ }
249
+
250
+ .md-tag-temp-hot {
251
+ background: color-mix(in srgb, var(--md-pink) 15%, transparent);
252
+ color: var(--md-pink);
253
+ }
254
+
255
+ .md-tag-temp-ideal {
256
+ background: color-mix(in srgb, var(--md-mint) 15%, transparent);
257
+ color: var(--md-green-tag);
258
+ }
259
+
260
+ .md-tag-temp-cool {
261
+ background: color-mix(in srgb, var(--md-lavender) 15%, transparent);
262
+ color: var(--md-lavender-tag);
263
+ }
264
+
265
+ .md-tag-size-mini {
266
+ background: color-mix(in srgb, var(--md-lavender) 15%, transparent);
267
+ color: var(--md-lavender-tag);
268
+ }
269
+
270
+ .md-tag-size-standard {
271
+ background: color-mix(in srgb, var(--md-mint) 15%, transparent);
272
+ color: var(--md-green-tag);
273
+ }
274
+
275
+ .md-tag-size-large {
276
+ background: color-mix(in srgb, var(--md-amber) 15%, transparent);
277
+ color: var(--md-amber-tag);
278
+ }
279
+
280
+ .theme-dark .md-tag-humid-high { color: var(--md-pink-dark); }
281
+ .theme-dark .md-tag-humid-normal { color: var(--md-mint-dark); }
282
+ .theme-dark .md-tag-humid-low { color: var(--md-amber-dark); }
283
+ .theme-dark .md-tag-temp-hot { color: var(--md-pink-dark); }
284
+ .theme-dark .md-tag-temp-ideal { color: var(--md-mint-dark); }
285
+ .theme-dark .md-tag-temp-cool { color: var(--md-lavender-dark); }
286
+ .theme-dark .md-tag-size-mini { color: var(--md-lavender-dark); }
287
+ .theme-dark .md-tag-size-standard { color: var(--md-mint-dark); }
288
+ .theme-dark .md-tag-size-large { color: var(--md-amber-dark); }
289
+
290
+ /* ===== Result ===== */
291
+ .md-result {
292
+ display: none;
293
+ flex-direction: column;
294
+ align-items: center;
295
+ gap: 1rem;
296
+ padding: 1.25rem;
297
+ background: radial-gradient(ellipse at 50% 30%, color-mix(in srgb, var(--md-pink) 6%, transparent) 0%, transparent 70%);
298
+ }
299
+
300
+ .md-macaron-visual {
301
+ width: 100%;
302
+ max-width: 240px;
303
+ }
304
+
305
+ .md-macaron-svg {
306
+ width: 100%;
307
+ height: auto;
308
+ }
309
+
310
+ .md-macaron-minutes {
311
+ font-size: 2.8rem;
312
+ font-weight: 900;
313
+ fill: var(--md-surface);
314
+ font-variant-numeric: tabular-nums;
315
+ filter: drop-shadow(0 2px 4px rgba(0,0,0,0.35));
316
+ }
317
+
318
+ .theme-dark .md-macaron-minutes {
319
+ fill: var(--md-surface-dark);
320
+ filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));
321
+ }
322
+
323
+ .md-macaron-unit {
324
+ font-size: 0.85rem;
325
+ font-weight: 700;
326
+ fill: var(--md-surface);
327
+ opacity: 0.85;
328
+ }
329
+
330
+ .theme-dark .md-macaron-unit {
331
+ fill: var(--md-surface-dark);
332
+ opacity: 0.85;
333
+ }
334
+
335
+ /* ===== Stats Row ===== */
336
+ .md-stats-row {
337
+ display: flex;
338
+ flex-direction: column;
339
+ align-items: center;
340
+ gap: 0.75rem;
341
+ width: 100%;
342
+ }
343
+
344
+ .md-stat {
345
+ text-align: center;
346
+ padding: 0.75rem 1rem;
347
+ border-radius: 1rem;
348
+ background: var(--md-bg);
349
+ border: 1px solid var(--md-border);
350
+ width: 100%;
351
+ }
352
+
353
+ .theme-dark .md-stat {
354
+ background: var(--md-surface-dark);
355
+ border-color: var(--md-border-dark);
356
+ }
357
+
358
+ .md-stat-label {
359
+ display: block;
360
+ font-size: 0.8rem;
361
+ font-weight: 700;
362
+ color: var(--md-muted);
363
+ text-transform: uppercase;
364
+ letter-spacing: 0.06em;
365
+ margin-bottom: 0.25rem;
366
+ }
367
+
368
+ .theme-dark .md-stat-label {
369
+ color: var(--md-muted-dark);
370
+ }
371
+
372
+ .md-stat-value {
373
+ font-size: 1.8rem;
374
+ font-weight: 900;
375
+ font-variant-numeric: tabular-nums;
376
+ }
377
+
378
+ .md-skin-badge {
379
+ display: inline-flex;
380
+ align-items: center;
381
+ padding: 0.5rem 1.25rem;
382
+ border-radius: 100px;
383
+ font-size: 0.9rem;
384
+ font-weight: 800;
385
+ letter-spacing: 0.04em;
386
+ }
387
+
388
+ .md-skin-badge.ready {
389
+ background: color-mix(in srgb, var(--md-green) 15%, transparent);
390
+ color: var(--md-green);
391
+ border: 1px solid color-mix(in srgb, var(--md-green) 25%, transparent);
392
+ }
393
+
394
+ .md-skin-badge.forming {
395
+ background: color-mix(in srgb, var(--md-amber) 15%, transparent);
396
+ color: var(--md-amber-tag);
397
+ border: 1px solid color-mix(in srgb, var(--md-amber) 25%, transparent);
398
+ }
399
+
400
+ .md-skin-badge.sticky {
401
+ background: color-mix(in srgb, var(--md-pink) 15%, transparent);
402
+ color: var(--md-pink);
403
+ border: 1px solid color-mix(in srgb, var(--md-pink) 25%, transparent);
404
+ }
405
+
406
+ .md-skin-badge.over-dry {
407
+ background: color-mix(in srgb, var(--md-gray) 15%, transparent);
408
+ color: var(--md-gray);
409
+ border: 1px solid color-mix(in srgb, var(--md-gray) 25%, transparent);
410
+ }
411
+
412
+ .theme-dark .md-skin-badge.ready { color: var(--md-green-dark); }
413
+ .theme-dark .md-skin-badge.forming { color: var(--md-amber-dark); }
414
+ .theme-dark .md-skin-badge.sticky { color: var(--md-pink-dark); }
415
+ .theme-dark .md-skin-badge.over-dry { color: var(--md-gray-dark); }
416
+
417
+ /* ===== Info card ===== */
418
+ .md-info-card {
419
+ display: flex;
420
+ align-items: center;
421
+ gap: 0.65rem;
422
+ padding: 0.85rem 1rem;
423
+ border-radius: 1rem;
424
+ border: 2px solid var(--md-border);
425
+ background: var(--md-bg);
426
+ color: var(--md-ink);
427
+ font-size: 0.8rem;
428
+ font-weight: 600;
429
+ line-height: 1.55;
430
+ letter-spacing: 0.01em;
431
+ transition: border-color 0.3s, background 0.3s;
432
+ }
433
+
434
+ .theme-dark .md-info-card {
435
+ background: var(--md-surface-dark);
436
+ border-color: var(--md-border-dark);
437
+ color: var(--md-ink-dark);
438
+ }
439
+
440
+ .md-info-svg {
441
+ width: 1.25rem;
442
+ height: 1.25rem;
443
+ flex-shrink: 0;
444
+ opacity: 0.75;
445
+ }
446
+
447
+ .md-info-card.md-info-high {
448
+ border-color: var(--md-pink);
449
+ background: color-mix(in srgb, var(--md-pink) 6%, var(--md-bg));
450
+ color: var(--md-pink);
451
+ }
452
+
453
+ .md-info-card.md-info-low {
454
+ border-color: var(--md-amber);
455
+ background: color-mix(in srgb, var(--md-amber) 6%, var(--md-bg));
456
+ color: var(--md-amber-tag);
457
+ }
458
+
459
+ .md-info-card.md-info-ok {
460
+ border-color: var(--md-mint);
461
+ background: color-mix(in srgb, var(--md-mint) 6%, var(--md-bg));
462
+ color: var(--md-green-tag);
463
+ }
464
+
465
+ .theme-dark .md-info-card.md-info-high {
466
+ background: color-mix(in srgb, var(--md-pink-dark) 10%, var(--md-surface-dark));
467
+ color: var(--md-pink-dark);
468
+ }
469
+
470
+ .theme-dark .md-info-card.md-info-low {
471
+ background: color-mix(in srgb, var(--md-amber-dark) 10%, var(--md-surface-dark));
472
+ color: var(--md-amber-dark);
473
+ }
474
+
475
+ .theme-dark .md-info-card.md-info-ok {
476
+ background: color-mix(in srgb, var(--md-mint-dark) 10%, var(--md-surface-dark));
477
+ color: var(--md-mint-dark);
478
+ }
479
+
480
+ .md-info-note {
481
+ font-size: 0.8rem;
482
+ color: var(--md-muted);
483
+ font-weight: 700;
484
+ padding: 0 0.5rem;
485
+ }
486
+
487
+ .theme-dark .md-info-note { color: var(--md-muted-dark); }
488
+
489
+ /* ===== Footer ===== */
490
+ .md-footer {
491
+ display: none;
492
+ justify-content: center;
493
+ padding: 0.75rem 1.25rem 1.25rem;
494
+ }
495
+
496
+ .md-footer-row {
497
+ display: flex;
498
+ flex-wrap: wrap;
499
+ gap: 0.5rem;
500
+ justify-content: center;
501
+ }
502
+
503
+ .md-footer-chip {
504
+ display: inline-flex;
505
+ align-items: center;
506
+ gap: 0.35rem;
507
+ padding: 0.5rem 0.85rem;
508
+ border-radius: 100px;
509
+ font-size: 0.8rem;
510
+ font-weight: 700;
511
+ border: 1px solid var(--md-border);
512
+ background: var(--md-bg);
513
+ color: var(--md-ink);
514
+ white-space: nowrap;
515
+ }
516
+
517
+ .theme-dark .md-footer-chip {
518
+ background: var(--md-surface-dark);
519
+ border-color: var(--md-border-dark);
520
+ color: var(--md-ink-dark);
521
+ }
522
+
523
+ .md-footer-chip svg {
524
+ flex-shrink: 0;
525
+ opacity: 0.7;
526
+ }
527
+
528
+ .md-footer-chip-time {
529
+ color: var(--md-pink);
530
+ border-color: var(--md-pink);
531
+ }
532
+
533
+ .md-footer-chip-humidity {
534
+ color: var(--md-green-tag);
535
+ border-color: var(--md-mint);
536
+ }
537
+
538
+ .md-footer-chip-temp {
539
+ color: var(--md-amber-tag);
540
+ border-color: var(--md-amber);
541
+ }
542
+
543
+ .md-footer-chip-size {
544
+ color: var(--md-lavender-tag);
545
+ border-color: var(--md-lavender);
546
+ }
547
+
548
+ .theme-dark .md-footer-chip-time { color: var(--md-pink-dark); }
549
+ .theme-dark .md-footer-chip-humidity { color: var(--md-mint-dark); }
550
+ .theme-dark .md-footer-chip-temp { color: var(--md-amber-dark); }
551
+ .theme-dark .md-footer-chip-size { color: var(--md-lavender-dark); }
@@ -0,0 +1,15 @@
1
+ ---
2
+ import { SEORenderer } from '@jjlmoya/utils-shared';
3
+ import { macaronDrying } from './entry';
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 macaronDrying.i18n[locale]?.();
12
+ if (!content) return null;
13
+ ---
14
+
15
+ {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
@@ -0,0 +1,6 @@
1
+ ---
2
+ import { Bibliography as BibliographyComponent } from '@jjlmoya/utils-shared';
3
+ import { bibliography } from './bibliography';
4
+ ---
5
+
6
+ <BibliographyComponent links={bibliography} />
@@ -0,0 +1,10 @@
1
+ export const bibliography = [
2
+ {
3
+ name: 'Chemical Changes in Food During Processing',
4
+ url: 'https://www.semanticscholar.org/paper/Chemical-Changes-in-Food-during-Processing-Richardson-Finley/db911ee24c10e6f490c86b869adcb0232f035c0c',
5
+ },
6
+ {
7
+ name: 'Quality assessment and degradative changes of deep-fried oils in street fried food chain',
8
+ url: 'https://www.sciencedirect.com/science/article/abs/pii/S0956713522003772',
9
+ }
10
+ ];