@jjlmoya/utils-cooking 1.18.0 → 1.20.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 (53) hide show
  1. package/package.json +7 -4
  2. package/scripts/postinstall.mjs +27 -0
  3. package/src/category/index.ts +12 -12
  4. package/src/entries.ts +26 -0
  5. package/src/tool/american-kitchen-converter/component.astro +0 -498
  6. package/src/tool/american-kitchen-converter/entry.ts +26 -0
  7. package/src/tool/american-kitchen-converter/index.ts +2 -27
  8. package/src/tool/american-kitchen-converter/us-cooking-conversion-calculator-cups-to-grams-fahrenheit.css +496 -0
  9. package/src/tool/banana-ripeness/banana-ripeness.css +587 -0
  10. package/src/tool/banana-ripeness/component.astro +0 -589
  11. package/src/tool/banana-ripeness/entry.ts +26 -0
  12. package/src/tool/banana-ripeness/index.ts +2 -27
  13. package/src/tool/brine/component.astro +0 -536
  14. package/src/tool/brine/entry.ts +29 -0
  15. package/src/tool/brine/equilibrium-brining-calculator-meat-fermentation-ratios.css +534 -0
  16. package/src/tool/brine/index.ts +2 -31
  17. package/src/tool/cookware-guide/component.astro +0 -24
  18. package/src/tool/cookware-guide/cookware-selector.css +22 -0
  19. package/src/tool/cookware-guide/entry.ts +26 -0
  20. package/src/tool/cookware-guide/index.ts +2 -27
  21. package/src/tool/egg-timer/component.astro +1 -505
  22. package/src/tool/egg-timer/entry.ts +30 -0
  23. package/src/tool/egg-timer/index.ts +2 -32
  24. package/src/tool/egg-timer/perfect-boiled-egg-timer-altitude-calculator.css +503 -0
  25. package/src/tool/ingredient-rescaler/component.astro +0 -22
  26. package/src/tool/ingredient-rescaler/entry.ts +26 -0
  27. package/src/tool/ingredient-rescaler/index.ts +2 -27
  28. package/src/tool/ingredient-rescaler/recipe-ingredient-scaler-converter-servings.css +20 -0
  29. package/src/tool/kitchen-timer/component.astro +0 -340
  30. package/src/tool/kitchen-timer/entry.ts +26 -0
  31. package/src/tool/kitchen-timer/index.ts +2 -28
  32. package/src/tool/kitchen-timer/kitchen-timer.css +338 -0
  33. package/src/tool/meringue-peak/component.astro +0 -300
  34. package/src/tool/meringue-peak/entry.ts +26 -0
  35. package/src/tool/meringue-peak/index.ts +2 -27
  36. package/src/tool/meringue-peak/meringue-sugar-ratio-calculator-stiff-peaks.css +298 -0
  37. package/src/tool/mold-scaler/cake-pan-size-converter-calculator.css +364 -0
  38. package/src/tool/mold-scaler/component.astro +0 -366
  39. package/src/tool/mold-scaler/entry.ts +26 -0
  40. package/src/tool/mold-scaler/index.ts +2 -28
  41. package/src/tool/pizza/component.astro +0 -570
  42. package/src/tool/pizza/entry.ts +30 -0
  43. package/src/tool/pizza/index.ts +2 -32
  44. package/src/tool/pizza/neapolitan-pizza-dough-calculator-authentic-recipe.css +569 -0
  45. package/src/tool/roux-guide/component.astro +0 -23
  46. package/src/tool/roux-guide/entry.ts +26 -0
  47. package/src/tool/roux-guide/index.ts +2 -27
  48. package/src/tool/roux-guide/roux-ratio-calculator-thickening-sauce-guide.css +21 -0
  49. package/src/tool/sourdough-calculator/component.astro +0 -371
  50. package/src/tool/sourdough-calculator/entry.ts +26 -0
  51. package/src/tool/sourdough-calculator/index.ts +2 -27
  52. package/src/tool/sourdough-calculator/sourdough-starter-feeding-calculator-ratio-proportions.css +369 -0
  53. package/src/tools.ts +1 -1
@@ -123,370 +123,4 @@ const { ui } = Astro.props;
123
123
  }
124
124
  </script>
125
125
 
126
- <style>
127
- :root {
128
- --ms-primary: hsl(262deg, 83%, 58%);
129
- --ms-primary-light: hsl(262deg, 83%, 95%);
130
- --ms-primary-dark: hsl(262deg, 83%, 45%);
131
- --ms-bg-card: hsl(0deg, 0%, 100%);
132
- --ms-bg-app: hsl(210deg, 20%, 98%);
133
- --ms-border: hsl(210deg, 20%, 90%);
134
- --ms-text-main: hsl(210deg, 30%, 20%);
135
- --ms-text-muted: hsl(210deg, 15%, 50%);
136
- --ms-shadow-lg: 0 10px 15px -3px rgb(0, 0, 0, 0.1);
137
- --ms-radius: 1rem;
138
- --ms-transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
139
- }
140
-
141
- :global(.theme-dark) {
142
- --ms-bg-card: hsl(220deg, 25%, 12%);
143
- --ms-bg-app: hsl(220deg, 30%, 7%);
144
- --ms-border: hsl(220deg, 20%, 20%);
145
- --ms-text-main: hsl(210deg, 20%, 95%);
146
- --ms-text-muted: hsl(210deg, 15%, 70%);
147
- --ms-primary-light: hsl(262deg, 83%, 15%);
148
- }
149
-
150
- .mold-scaler-container {
151
- max-width: 1000px;
152
- margin: 0 auto;
153
- padding: 1rem;
154
- }
155
-
156
- .ms-card {
157
- background: var(--ms-bg-card);
158
- border: 1px solid var(--ms-border);
159
- border-radius: var(--ms-radius);
160
- box-shadow: var(--ms-shadow-lg);
161
- overflow: hidden;
162
- display: flex;
163
- flex-direction: column;
164
- }
165
-
166
- @media (min-width: 1024px) {
167
- .ms-card {
168
- flex-direction: row;
169
- min-height: 700px;
170
- }
171
- }
172
-
173
- .ms-sidebar {
174
- flex: 1;
175
- padding: 2rem;
176
- border-bottom: 1px solid var(--ms-border);
177
- background: linear-gradient(to bottom, var(--ms-bg-card), var(--ms-primary-light));
178
- }
179
-
180
- @media (min-width: 1024px) {
181
- .ms-sidebar {
182
- border-bottom: none;
183
- border-right: 1px solid var(--ms-border);
184
- max-width: 450px;
185
- }
186
- }
187
-
188
- .ms-main {
189
- flex: 1.5;
190
- padding: 2rem;
191
- display: flex;
192
- flex-direction: column;
193
- gap: 2rem;
194
- }
195
-
196
- .ms-section {
197
- margin-bottom: 2rem;
198
- }
199
-
200
- .ms-section-title {
201
- display: flex;
202
- align-items: center;
203
- gap: 0.75rem;
204
- font-size: 1.25rem;
205
- font-weight: 700;
206
- color: var(--ms-text-main);
207
- margin-bottom: 1.5rem;
208
- }
209
-
210
- .ms-section-badge {
211
- display: flex;
212
- align-items: center;
213
- justify-content: center;
214
- width: 1.75rem;
215
- height: 1.75rem;
216
- background: var(--ms-primary);
217
- color: var(--ms-bg-card);
218
- border-radius: 50%;
219
- font-size: 0.875rem;
220
- }
221
-
222
- .ms-shape-selector {
223
- display: grid;
224
- grid-template-columns: repeat(3, 1fr);
225
- gap: 0.75rem;
226
- margin-bottom: 1.25rem;
227
- }
228
-
229
- .ms-shape-btn {
230
- display: flex;
231
- flex-direction: column;
232
- align-items: center;
233
- padding: 0.75rem;
234
- border-radius: 0.75rem;
235
- border: 1px solid var(--ms-border);
236
- background: var(--ms-bg-card);
237
- color: var(--ms-text-muted);
238
- cursor: pointer;
239
- transition: var(--ms-transition);
240
- font-size: 0.875rem;
241
- font-weight: 600;
242
- }
243
-
244
- .ms-shape-btn:hover {
245
- border-color: var(--ms-primary);
246
- color: var(--ms-primary);
247
- }
248
-
249
- .ms-shape-btn.active {
250
- background: var(--ms-primary);
251
- color: var(--ms-bg-card);
252
- border-color: var(--ms-primary);
253
- box-shadow: 0 4px 12px hsla(262deg, 83%, 58%, 0.3);
254
- }
255
-
256
- .ms-shape-icon {
257
- width: 2rem;
258
- height: 2rem;
259
- margin-bottom: 0.5rem;
260
- border: 2px solid currentcolor;
261
- transition: var(--ms-transition);
262
- }
263
-
264
- .ms-shape-btn[data-shape="round"] .ms-shape-icon {
265
- border-radius: 50%;
266
- }
267
-
268
- .ms-shape-btn[data-shape="square"] .ms-shape-icon {
269
- border-radius: 4px;
270
- }
271
-
272
- .ms-shape-btn[data-shape="rectangular"] .ms-shape-icon {
273
- border-radius: 2px;
274
- width: 2.5rem;
275
- }
276
-
277
- :global(.ms-input-group) {
278
- display: flex;
279
- flex-direction: column;
280
- gap: 0.5rem;
281
- }
282
-
283
- :global(.ms-label) {
284
- font-size: 0.75rem;
285
- font-weight: 700;
286
- color: var(--ms-text-muted);
287
- text-transform: uppercase;
288
- letter-spacing: 0.05em;
289
- }
290
-
291
- :global(.ms-input) {
292
- width: 100%;
293
- padding: 0.75rem 1rem;
294
- border-radius: 0.5rem;
295
- border: 1px solid var(--ms-border);
296
- background: var(--ms-bg-card);
297
- color: var(--ms-text-main);
298
- font-weight: 600;
299
- transition: var(--ms-transition);
300
- }
301
-
302
- :global(.ms-input):focus {
303
- outline: none;
304
- border-color: var(--ms-primary);
305
- box-shadow: 0 0 0 3px hsla(262deg, 83%, 58%, 0.1);
306
- }
307
-
308
- .ms-hero-result {
309
- text-align: center;
310
- padding: 2.5rem;
311
- background: linear-gradient(135deg, var(--ms-primary), var(--ms-primary-dark));
312
- color: hsl(0deg, 0%, 100%);
313
- border-radius: var(--ms-radius);
314
- box-shadow: var(--ms-shadow-md);
315
- position: relative;
316
- overflow: hidden;
317
- }
318
-
319
- .ms-result-label {
320
- font-size: 0.875rem;
321
- font-weight: 600;
322
- text-transform: uppercase;
323
- letter-spacing: 0.1em;
324
- opacity: 0.8;
325
- margin-bottom: 0.5rem;
326
- }
327
-
328
- .ms-result-value {
329
- font-size: 4rem;
330
- font-weight: 800;
331
- margin-bottom: 0.5rem;
332
- line-height: 1;
333
- }
334
-
335
- .ms-result-text {
336
- font-size: 1rem;
337
- opacity: 0.9;
338
- max-width: 300px;
339
- margin: 0 auto;
340
- }
341
-
342
- .ms-viz-container {
343
- background: var(--ms-bg-app);
344
- border: 1px solid var(--ms-border);
345
- border-radius: var(--ms-radius);
346
- padding: 1.5rem;
347
- position: relative;
348
- aspect-ratio: 4 / 3;
349
- display: flex;
350
- flex-direction: column;
351
- }
352
-
353
- .ms-viz-svg {
354
- flex: 1;
355
- width: 100%;
356
- height: 100%;
357
- }
358
-
359
- .ms-viz-legend {
360
- display: flex;
361
- justify-content: center;
362
- gap: 1.5rem;
363
- padding-top: 1rem;
364
- font-size: 0.75rem;
365
- font-weight: 600;
366
- }
367
-
368
- .ms-legend-item {
369
- display: flex;
370
- align-items: center;
371
- gap: 0.5rem;
372
- }
373
-
374
- .ms-dot {
375
- width: 0.75rem;
376
- height: 0.75rem;
377
- border-radius: 50%;
378
- }
379
-
380
- .ms-dot.original {
381
- background: var(--ms-primary);
382
- opacity: 0.5;
383
- border: 1px dashed var(--ms-primary);
384
- }
385
-
386
- .ms-dot.target {
387
- background: hsl(150deg, 80%, 40%);
388
- opacity: 0.8;
389
- border: 1px solid hsl(150deg, 80%, 40%);
390
- }
391
-
392
- .ms-ingredients-card {
393
- border: 1px solid var(--ms-border);
394
- border-radius: var(--ms-radius);
395
- padding: 1.5rem;
396
- }
397
-
398
- .ms-ingredients-list {
399
- display: flex;
400
- flex-direction: column;
401
- gap: 0.75rem;
402
- margin-bottom: 1.5rem;
403
- }
404
-
405
- :global(.ms-ingredient-row) {
406
- display: grid;
407
- grid-template-columns: 1fr;
408
- gap: 0.75rem;
409
- padding: 1rem;
410
- background: var(--ms-bg-app);
411
- border-radius: 0.75rem;
412
- border: 1px solid var(--ms-border);
413
- position: relative;
414
- animation: slide-in 0.3s ease-out;
415
- }
416
-
417
- @keyframes slide-in {
418
- from {
419
- opacity: 0;
420
- transform: translateY(10px);
421
- }
422
- to {
423
- opacity: 1;
424
- transform: translateY(0);
425
- }
426
- }
427
-
428
- @media (min-width: 640px) {
429
- :global(.ms-ingredient-row) {
430
- grid-template-columns: 2fr 1fr 1fr auto;
431
- align-items: center;
432
- }
433
- }
434
-
435
- :global(.ms-ingredient-final) {
436
- font-weight: 800;
437
- color: hsl(150deg, 80%, 40%);
438
- font-size: 1.125rem;
439
- padding: 0.5rem;
440
- text-align: center;
441
- }
442
-
443
- :global(.ms-del-btn) {
444
- background: transparent;
445
- border: none;
446
- color: var(--ms-text-muted);
447
- cursor: pointer;
448
- padding: 0.5rem;
449
- border-radius: 0.5rem;
450
- transition: var(--ms-transition);
451
- }
452
-
453
- :global(.ms-del-btn):hover {
454
- background: hsl(0deg, 85%, 60%);
455
- color: var(--ms-bg-card);
456
- }
457
-
458
- .ms-add-btn {
459
- width: 100%;
460
- padding: 1rem;
461
- background: transparent;
462
- border: 2px dashed var(--ms-primary);
463
- color: var(--ms-primary);
464
- border-radius: 0.75rem;
465
- font-weight: 700;
466
- cursor: pointer;
467
- transition: var(--ms-transition);
468
- display: flex;
469
- align-items: center;
470
- justify-content: center;
471
- gap: 0.5rem;
472
- }
473
-
474
- .ms-add-btn:hover {
475
- background: var(--ms-primary-light);
476
- border-style: solid;
477
- }
478
-
479
- :global(.ms-empty-state) {
480
- text-align: center;
481
- padding: 2rem;
482
- color: var(--ms-text-muted);
483
- font-style: italic;
484
- }
485
-
486
- :global(.ms-inputs-grid) {
487
- display: grid;
488
- grid-template-columns: 1fr 1fr;
489
- gap: 1rem;
490
- }
491
- </style>
492
126
 
@@ -0,0 +1,26 @@
1
+ import type { CookingToolEntry } from '../../types';
2
+
3
+ export const moldScaler: CookingToolEntry = {
4
+ id: 'mold-scaler',
5
+ icons: {
6
+ bg: 'mdi:cake',
7
+ fg: 'mdi:resize',
8
+ },
9
+ i18n: {
10
+ es: () => import('./i18n/es').then((m) => m.content),
11
+ en: () => import('./i18n/en').then((m) => m.content),
12
+ fr: () => import('./i18n/fr').then((m) => m.content),
13
+ de: () => import('./i18n/de').then((m) => m.content),
14
+ it: () => import('./i18n/it').then((m) => m.content),
15
+ pt: () => import('./i18n/pt').then((m) => m.content),
16
+ nl: () => import('./i18n/nl').then((m) => m.content),
17
+ sv: () => import('./i18n/sv').then((m) => m.content),
18
+ ru: () => import('./i18n/ru').then((m) => m.content),
19
+ tr: () => import('./i18n/tr').then((m) => m.content),
20
+ pl: () => import('./i18n/pl').then((m) => m.content),
21
+ id: () => import('./i18n/id').then((m) => m.content),
22
+ ja: () => import('./i18n/ja').then((m) => m.content),
23
+ zh: () => import('./i18n/zh').then((m) => m.content),
24
+ ko: () => import('./i18n/ko').then((m) => m.content),
25
+ },
26
+ };
@@ -1,31 +1,5 @@
1
- import type { CookingToolEntry, ToolDefinition } from '../../types';
2
-
3
- export const moldScaler: CookingToolEntry = {
4
- id: 'mold-scaler',
5
- icons: {
6
- bg: 'mdi:cake',
7
- fg: 'mdi:resize',
8
- },
9
- i18n: {
10
- es: () => import('./i18n/es').then((m) => m.content),
11
- en: () => import('./i18n/en').then((m) => m.content),
12
- fr: () => import('./i18n/fr').then((m) => m.content),
13
- de: () => import('./i18n/de').then((m) => m.content),
14
- it: () => import('./i18n/it').then((m) => m.content),
15
- pt: () => import('./i18n/pt').then((m) => m.content),
16
- nl: () => import('./i18n/nl').then((m) => m.content),
17
- sv: () => import('./i18n/sv').then((m) => m.content),
18
- ru: () => import('./i18n/ru').then((m) => m.content),
19
- tr: () => import('./i18n/tr').then((m) => m.content),
20
- pl: () => import('./i18n/pl').then((m) => m.content),
21
- id: () => import('./i18n/id').then((m) => m.content),
22
- ja: () => import('./i18n/ja').then((m) => m.content),
23
- zh: () => import('./i18n/zh').then((m) => m.content),
24
- ko: () => import('./i18n/ko').then((m) => m.content),
25
- },
26
- };
27
-
28
-
1
+ import { moldScaler } from './entry';
2
+ export * from './entry';
29
3
  export const MOLD_SCALER_TOOL: ToolDefinition = {
30
4
  entry: moldScaler,
31
5
  Component: () => import('./component.astro'),