@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
@@ -0,0 +1,369 @@
1
+ :root {
2
+ --sc-primary: hsl(38deg, 92%, 50%);
3
+ --sc-primary-light: hsl(38deg, 92%, 90%);
4
+ --sc-success: hsl(142deg, 72%, 45%);
5
+ --sc-bg-card: hsl(0deg, 0%, 100%);
6
+ --sc-bg-app: hsl(210deg, 20%, 98%);
7
+ --sc-border: hsl(210deg, 20%, 90%);
8
+ --sc-text-main: hsl(210deg, 30%, 20%);
9
+ --sc-text-muted: hsl(210deg, 15%, 50%);
10
+ --sc-text-disabled: hsl(210deg, 15%, 75%);
11
+ --sc-shadow-md: 0 4px 6px -1px rgb(0, 0, 0, 0.1);
12
+ --sc-shadow-lg: 0 10px 15px -3px rgb(0, 0, 0, 0.1);
13
+ --sc-radius: 1rem;
14
+ --sc-transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
15
+ }
16
+
17
+ :global(.theme-dark) {
18
+ --sc-bg-card: hsl(220deg, 25%, 12%);
19
+ --sc-bg-app: hsl(220deg, 30%, 7%);
20
+ --sc-border: hsl(220deg, 20%, 20%);
21
+ --sc-text-main: hsl(210deg, 20%, 95%);
22
+ --sc-text-muted: hsl(210deg, 15%, 70%);
23
+ --sc-text-disabled: hsl(210deg, 15%, 50%);
24
+ --sc-primary-light: hsl(38deg, 92%, 12%);
25
+ }
26
+
27
+ .sourdough-calculator {
28
+ width: 100%;
29
+ max-width: 100%;
30
+ padding: 2rem;
31
+ background: var(--sc-bg-card);
32
+ border: 1px solid var(--sc-border);
33
+ border-radius: var(--sc-radius);
34
+ box-shadow: var(--sc-shadow-lg);
35
+ }
36
+
37
+ .sc-header {
38
+ width: 100%;
39
+ height: 0.5rem;
40
+ background: var(--sc-primary);
41
+ border-radius: var(--sc-radius) var(--sc-radius) 0 0;
42
+ margin: -2rem -2rem 2rem;
43
+ }
44
+
45
+ .sc-grid {
46
+ display: grid;
47
+ grid-template-columns: 1fr;
48
+ gap: 3rem;
49
+ }
50
+
51
+ @media (min-width: 1024px) {
52
+ .sc-grid {
53
+ grid-template-columns: 2fr 3fr;
54
+ }
55
+
56
+ .sc-grid > * {
57
+ min-width: 0;
58
+ }
59
+ }
60
+
61
+ .sc-section {
62
+ display: flex;
63
+ flex-direction: column;
64
+ gap: 2.5rem;
65
+ }
66
+
67
+ .sc-control-group {
68
+ display: flex;
69
+ flex-direction: column;
70
+ gap: 1rem;
71
+ }
72
+
73
+ .sc-label {
74
+ font-size: 0.875rem;
75
+ font-weight: 700;
76
+ color: var(--sc-text-muted);
77
+ text-transform: uppercase;
78
+ letter-spacing: 0.05em;
79
+ display: flex;
80
+ align-items: center;
81
+ gap: 0.5rem;
82
+ }
83
+
84
+ .sc-input {
85
+ width: 100%;
86
+ padding: 1rem;
87
+ border: 2px solid var(--sc-border);
88
+ border-radius: 0.75rem;
89
+ background: var(--sc-bg-app);
90
+ color: var(--sc-text-main);
91
+ font-weight: 600;
92
+ font-size: 2rem;
93
+ text-align: center;
94
+ transition: var(--sc-transition);
95
+ }
96
+
97
+ .sc-input:focus {
98
+ outline: none;
99
+ border-color: var(--sc-primary);
100
+ box-shadow: 0 0 0 3px hsl(38deg, 92%, 50%, 0.1);
101
+ }
102
+
103
+ .sc-input::placeholder {
104
+ color: var(--sc-text-disabled);
105
+ }
106
+
107
+ input[type='number']::-webkit-outer-spin-button,
108
+ input[type='number']::-webkit-inner-spin-button {
109
+ -webkit-appearance: none;
110
+ margin: 0;
111
+ }
112
+
113
+ .sc-ratio-buttons {
114
+ display: grid;
115
+ grid-template-columns: repeat(3, 1fr);
116
+ gap: 0.75rem;
117
+ }
118
+
119
+ .ratio-btn {
120
+ display: flex;
121
+ flex-direction: column;
122
+ align-items: center;
123
+ justify-content: center;
124
+ padding: 0.75rem 0.5rem;
125
+ border-radius: 0.75rem;
126
+ border: 2px solid var(--sc-border);
127
+ background: var(--sc-bg-app);
128
+ color: var(--sc-text-muted);
129
+ font-weight: 600;
130
+ cursor: pointer;
131
+ transition: var(--sc-transition);
132
+ }
133
+
134
+ .ratio-btn:hover {
135
+ border-color: var(--sc-primary);
136
+ color: var(--sc-primary);
137
+ }
138
+
139
+ .ratio-btn.ratio-active {
140
+ background: var(--sc-primary-light);
141
+ border-color: var(--sc-primary);
142
+ color: var(--sc-primary);
143
+ box-shadow: var(--sc-shadow-md);
144
+ }
145
+
146
+ .ratio-btn.ratio-inactive {
147
+ background: var(--sc-bg-app);
148
+ border-color: var(--sc-border);
149
+ color: var(--sc-text-muted);
150
+ }
151
+
152
+ .sc-ratio-label {
153
+ font-size: 0.625rem;
154
+ text-transform: uppercase;
155
+ opacity: 0.75;
156
+ margin-bottom: 0.25rem;
157
+ }
158
+
159
+ .sc-ratio-value {
160
+ font-size: 1.125rem;
161
+ font-weight: 700;
162
+ }
163
+
164
+ .sc-custom-inputs {
165
+ display: none;
166
+ gap: 1.5rem;
167
+ padding: 1.5rem;
168
+ background: var(--sc-bg-app);
169
+ border-radius: 0.75rem;
170
+ border: 1px solid var(--sc-border);
171
+ }
172
+
173
+ .sc-custom-inputs.visible {
174
+ display: flex;
175
+ justify-content: space-around;
176
+ align-items: flex-end;
177
+ }
178
+
179
+ .sc-custom-input-group {
180
+ display: flex;
181
+ flex-direction: column;
182
+ align-items: center;
183
+ gap: 0.5rem;
184
+ }
185
+
186
+ .custom-input {
187
+ padding: 0.75rem;
188
+ border: 1px solid var(--sc-border);
189
+ border-radius: 0.5rem;
190
+ background: var(--sc-bg-card);
191
+ color: var(--sc-text-main);
192
+ width: 80px;
193
+ text-align: center;
194
+ font-weight: 600;
195
+ font-size: 1rem;
196
+ transition: var(--sc-transition);
197
+ }
198
+
199
+ .custom-input:focus {
200
+ outline: none;
201
+ border-color: var(--sc-primary);
202
+ }
203
+
204
+ .sc-custom-label {
205
+ font-size: 0.625rem;
206
+ text-transform: uppercase;
207
+ font-weight: 700;
208
+ color: var(--sc-text-muted);
209
+ margin-bottom: 0.25rem;
210
+ display: block;
211
+ text-align: center;
212
+ }
213
+
214
+ .sc-results {
215
+ display: flex;
216
+ flex-direction: column;
217
+ gap: 1rem;
218
+ }
219
+
220
+ .sc-results-header {
221
+ padding: 1rem;
222
+ background: var(--sc-bg-app);
223
+ border: 1px solid var(--sc-border);
224
+ border-radius: 0.75rem;
225
+ display: flex;
226
+ justify-content: space-between;
227
+ align-items: center;
228
+ }
229
+
230
+ .sc-results-title {
231
+ font-size: 0.75rem;
232
+ font-weight: 700;
233
+ color: var(--sc-text-muted);
234
+ text-transform: uppercase;
235
+ letter-spacing: 0.05em;
236
+ }
237
+
238
+ .sc-hydration-badge {
239
+ font-size: 0.75rem;
240
+ font-weight: 600;
241
+ color: var(--sc-primary);
242
+ background: var(--sc-primary-light);
243
+ padding: 0.25rem 0.75rem;
244
+ border-radius: 9999px;
245
+ }
246
+
247
+ .sc-result-rows {
248
+ display: flex;
249
+ flex-direction: column;
250
+ gap: 0;
251
+ border: 1px solid var(--sc-border);
252
+ border-radius: 0.75rem;
253
+ overflow: hidden;
254
+ }
255
+
256
+ .sc-result-row {
257
+ display: flex;
258
+ justify-content: space-between;
259
+ align-items: center;
260
+ padding: 1rem;
261
+ border-bottom: 1px solid var(--sc-border);
262
+ transition: var(--sc-transition);
263
+ }
264
+
265
+ .sc-result-row:last-child {
266
+ border-bottom: none;
267
+ }
268
+
269
+ .sc-result-row:hover {
270
+ background: var(--sc-primary-light);
271
+ }
272
+
273
+ .sc-result-content {
274
+ display: flex;
275
+ align-items: center;
276
+ gap: 1rem;
277
+ flex: 1;
278
+ }
279
+
280
+ .sc-result-icon {
281
+ width: 3rem;
282
+ height: 3rem;
283
+ border-radius: 0.5rem;
284
+ display: flex;
285
+ align-items: center;
286
+ justify-content: center;
287
+ font-size: 1.5rem;
288
+ }
289
+
290
+ .sc-result-icon.starter {
291
+ background: hsl(38deg, 92%, 90%);
292
+ color: var(--sc-primary);
293
+ }
294
+
295
+ :global(.theme-dark) .sc-result-icon.starter {
296
+ background: hsl(38deg, 92%, 15%);
297
+ }
298
+
299
+ .sc-result-icon.flour {
300
+ background: hsl(45deg, 93%, 90%);
301
+ color: hsl(45deg, 93%, 50%);
302
+ }
303
+
304
+ :global(.theme-dark) .sc-result-icon.flour {
305
+ background: hsl(45deg, 93%, 15%);
306
+ }
307
+
308
+ .sc-result-icon.water {
309
+ background: hsl(196deg, 95%, 90%);
310
+ color: hsl(196deg, 95%, 50%);
311
+ }
312
+
313
+ :global(.theme-dark) .sc-result-icon.water {
314
+ background: hsl(196deg, 95%, 15%);
315
+ }
316
+
317
+ .sc-result-name {
318
+ font-weight: 700;
319
+ color: var(--sc-text-main);
320
+ font-size: 1.125rem;
321
+ }
322
+
323
+ .sc-result-desc {
324
+ font-size: 0.875rem;
325
+ color: var(--sc-text-muted);
326
+ }
327
+
328
+ .sc-result-value {
329
+ display: flex;
330
+ flex-direction: column;
331
+ align-items: flex-end;
332
+ gap: 0.25rem;
333
+ }
334
+
335
+ .sc-result-amount {
336
+ font-size: 1.875rem;
337
+ font-weight: 800;
338
+ color: var(--sc-text-main);
339
+ line-height: 1;
340
+ }
341
+
342
+ .sc-result-unit {
343
+ font-size: 0.875rem;
344
+ color: var(--sc-text-muted);
345
+ font-weight: 600;
346
+ }
347
+
348
+ .sc-total {
349
+ display: flex;
350
+ justify-content: flex-end;
351
+ align-items: center;
352
+ gap: 1rem;
353
+ padding: 1rem;
354
+ margin-top: 1rem;
355
+ opacity: 0.75;
356
+ }
357
+
358
+ .sc-total-label {
359
+ font-size: 0.875rem;
360
+ font-weight: 600;
361
+ color: var(--sc-text-muted);
362
+ text-transform: uppercase;
363
+ }
364
+
365
+ .sc-total-value {
366
+ font-size: 1.25rem;
367
+ font-weight: 700;
368
+ color: var(--sc-text-main);
369
+ }
package/src/tools.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export { ALL_ENTRIES } from './entries';
1
2
  import type { ToolDefinition } from './types';
2
3
  import { AMERICAN_KITCHEN_CONVERTER_TOOL } from './tool/american-kitchen-converter';
3
4
  import { MERENGUE_CALCULATOR_TOOL } from './tool/meringue-peak';
@@ -28,4 +29,3 @@ export const ALL_TOOLS: ToolDefinition[] = [
28
29
  ];
29
30
 
30
31
 
31
- export const ALL_ENTRIES = ALL_TOOLS.map(t => t.entry);