@jjlmoya/utils-cooking 1.34.0 → 1.36.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/category/index.ts +2 -0
  3. package/src/entries.ts +3 -1
  4. package/src/index.ts +1 -0
  5. package/src/tests/i18n-titles.test.ts +1 -1
  6. package/src/tests/locale_completeness.test.ts +2 -2
  7. package/src/tests/tool_validation.test.ts +1 -1
  8. package/src/tool/macaron-drying-predictor/bibliography.astro +6 -0
  9. package/src/tool/macaron-drying-predictor/bibliography.ts +14 -0
  10. package/src/tool/macaron-drying-predictor/component.astro +319 -0
  11. package/src/tool/macaron-drying-predictor/entry.ts +26 -0
  12. package/src/tool/macaron-drying-predictor/i18n/de.ts +245 -0
  13. package/src/tool/macaron-drying-predictor/i18n/en.ts +247 -0
  14. package/src/tool/macaron-drying-predictor/i18n/es.ts +245 -0
  15. package/src/tool/macaron-drying-predictor/i18n/fr.ts +245 -0
  16. package/src/tool/macaron-drying-predictor/i18n/id.ts +245 -0
  17. package/src/tool/macaron-drying-predictor/i18n/it.ts +245 -0
  18. package/src/tool/macaron-drying-predictor/i18n/ja.ts +245 -0
  19. package/src/tool/macaron-drying-predictor/i18n/ko.ts +245 -0
  20. package/src/tool/macaron-drying-predictor/i18n/nl.ts +245 -0
  21. package/src/tool/macaron-drying-predictor/i18n/pl.ts +245 -0
  22. package/src/tool/macaron-drying-predictor/i18n/pt.ts +245 -0
  23. package/src/tool/macaron-drying-predictor/i18n/ru.ts +245 -0
  24. package/src/tool/macaron-drying-predictor/i18n/sv.ts +245 -0
  25. package/src/tool/macaron-drying-predictor/i18n/tr.ts +245 -0
  26. package/src/tool/macaron-drying-predictor/i18n/zh.ts +245 -0
  27. package/src/tool/macaron-drying-predictor/index.ts +11 -0
  28. package/src/tool/macaron-drying-predictor/logic.ts +58 -0
  29. package/src/tool/macaron-drying-predictor/macaron-drying-predictor.css +551 -0
  30. package/src/tool/macaron-drying-predictor/seo.astro +15 -0
  31. package/src/tool/maillard-reaction-optimizer/entry.ts +14 -0
  32. package/src/tool/maillard-reaction-optimizer/i18n/ja.ts +1 -1
  33. package/src/tool/maillard-reaction-optimizer/i18n/ko.ts +1 -1
  34. package/src/tool/maillard-reaction-optimizer/i18n/zh.ts +1 -1
  35. package/src/tools.ts +2 -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 }} />}
@@ -7,6 +7,20 @@ export const maillardReaction: CookingToolEntry = {
7
7
  fg: 'mdi:flask',
8
8
  },
9
9
  i18n: {
10
+ de: () => import('./i18n/de').then((m) => m.content),
10
11
  en: () => import('./i18n/en').then((m) => m.content),
12
+ es: () => import('./i18n/es').then((m) => m.content),
13
+ fr: () => import('./i18n/fr').then((m) => m.content),
14
+ id: () => import('./i18n/id').then((m) => m.content),
15
+ it: () => import('./i18n/it').then((m) => m.content),
16
+ ja: () => import('./i18n/ja').then((m) => m.content),
17
+ ko: () => import('./i18n/ko').then((m) => m.content),
18
+ nl: () => import('./i18n/nl').then((m) => m.content),
19
+ pl: () => import('./i18n/pl').then((m) => m.content),
20
+ pt: () => import('./i18n/pt').then((m) => m.content),
21
+ ru: () => import('./i18n/ru').then((m) => m.content),
22
+ sv: () => import('./i18n/sv').then((m) => m.content),
23
+ tr: () => import('./i18n/tr').then((m) => m.content),
24
+ zh: () => import('./i18n/zh').then((m) => m.content),
11
25
  },
12
26
  };
@@ -83,7 +83,7 @@ const appSchema = {
83
83
  };
84
84
 
85
85
  export const content: ToolLocaleContent = {
86
- slug: 'meirudo-hannou-saitekika',
86
+ slug: 'maillard-reaction-optimizer',
87
87
  title: 'メイラード反応オプティマイザー',
88
88
  description: 'メイラード反応を促進するために、食品1kgあたりに加える重曹の量を正確に計算します。安全なアルカリ性の範囲内に収めることで、石鹸のような不快な風味を防ぎます。',
89
89
  faqTitle: 'よくある質問',
@@ -83,7 +83,7 @@ const appSchema = {
83
83
  };
84
84
 
85
85
  export const content: ToolLocaleContent = {
86
- slug: 'maillard-baneung-choijeoghwa',
86
+ slug: 'maillard-reaction-optimizer',
87
87
  title: '마이야르 반응 최적화 도구',
88
88
  description: '마이야르 반응을 촉진하기 위해 식품 1kg당 첨가할 베이킹소다의 정확한 양을 계산합니다. 안전한 알칼리도 한계 내에서 유지하여 비누 맛을 방지하세요.',
89
89
  faqTitle: '자주 묻는 질문',
@@ -83,7 +83,7 @@ const appSchema = {
83
83
  };
84
84
 
85
85
  export const content: ToolLocaleContent = {
86
- slug: 'meilade-fanying-youhuaqi',
86
+ slug: 'maillard-reaction-optimizer',
87
87
  title: '美拉德反应优化器',
88
88
  description: '精确计算每公斤食物应添加多少小苏打以加速美拉德反应。通过保持在安全碱度范围内来避免肥皂味。',
89
89
  faqTitle: '常见问题',
package/src/tools.ts CHANGED
@@ -20,6 +20,7 @@ import { BOTULISM_CANNING_SAFETY_TOOL } from './tool/botulism-canning-safety';
20
20
  import { MEAT_BINDER_TRANSGLUTAMINASE_TOOL } from './tool/meat-binder-transglutaminase-calculator';
21
21
  import { CARRY_OVER_COOKING_TOOL } from './tool/carry-over-cooking-predictor';
22
22
  import { MAILLARD_REACTION_TOOL } from './tool/maillard-reaction-optimizer';
23
+ import { MACARON_DRYING_TOOL } from './tool/macaron-drying-predictor';
23
24
 
24
25
  export const ALL_TOOLS: ToolDefinition[] = [
25
26
  AMERICAN_KITCHEN_CONVERTER_TOOL,
@@ -42,5 +43,6 @@ export const ALL_TOOLS: ToolDefinition[] = [
42
43
  MEAT_BINDER_TRANSGLUTAMINASE_TOOL,
43
44
  CARRY_OVER_COOKING_TOOL,
44
45
  MAILLARD_REACTION_TOOL,
46
+ MACARON_DRYING_TOOL,
45
47
  ];
46
48