@jjlmoya/utils-cooking 1.10.0 → 1.11.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.
@@ -1,41 +1,41 @@
1
1
  import type { ToolLocaleContent } from '../../../types';
2
2
 
3
- const title = "Smart Cookware Selector | Kitchen Utensils Guide";
4
- const description = "Interactive guide to choose the best pan or pot based on your cooking style. Iron vs Stainless Steel vs Teflon. Find your perfect tool.";
3
+ const title = "Sélecteur d'Ustensiles Connecté | Guide de Cuisine";
4
+ const description = "Guide interactif pour choisir la meilleure poêle ou casserole selon votre style de cuisine. Fonte vs Acier Inoxydable vs Téflon. Trouvez votre outil parfait.";
5
5
  const faq = [
6
6
  {
7
- question: 'What is the best pan for daily use?',
8
- answer: 'For most people, a high-quality stainless steel pan or a well-seasoned cast iron are the best. Stainless is versatile and eternal, while iron offers natural non-stick without chemicals.',
7
+ question: 'Quelle est la meilleure poêle pour un usage quotidien ?',
8
+ answer: "Pour la plupart des gens, une poêle en acier inoxydable de haute qualité ou eine fonte bien culottée sont les meilleures options. L'inox est polyvalent et éternel, tandis que la fonte offre un anti-adhésif naturel sans produits chimiques.",
9
9
  },
10
10
  {
11
- question: 'Why does food stick to stainless steel?',
12
- answer: 'Usually due to insufficient heat or adding food too early. Try the "Leidenfrost effect": heat the pan until a water droplet rolls like a pearl. Then it\'s ready.',
11
+ question: 'Pourquoi les aliments attachent-ils à l\'acier inoxydable ?',
12
+ answer: 'Généralement en raison d\'une chaleur insuffisante ou de l\'ajout d\'aliments trop tôt. Essayez l\'"effet Leidenfrost" : chauffez la poêle jusqu\'à ce qu\'une goutte d\'eau roule comme une perle. Elle est alors prête.',
13
13
  },
14
14
  {
15
- question: 'How do I know if my pan is safe?',
16
- answer: 'Look for "PFOA Free" labels. Cast iron, carbon steel, and stainless steel are the safest and most durable options, as they have no coatings that degrade over time.',
15
+ question: 'Comment savoir si ma poêle est sûre ?',
16
+ answer: 'Recherchez les étiquettes "Sans PFOA". La fonte, l\'acier au carbone et l\'acier inoxydable sont les options les plus sûres et les plus durables, car elles n\'ont pas de revêtements qui se dégradent avec le temps.',
17
17
  },
18
18
  {
19
- question: 'What does it mean to "season" a pan?',
20
- answer: 'It\'s the process of creating a layer of polymerized oil on the metal (iron or carbon). This protects against rust and creates a natural non-stick surface that improves with each use.',
19
+ question: 'Que signifie "culotter" une poêle ?',
20
+ answer: 'C\'est le processus de création d\'une couche d\'huile polymérisée sur le métal (fonte ou carbone). Cela protège de la rouille et crée une surface anti-adhésive naturelle qui s\'améliore à chaque utilisation.',
21
21
  },
22
22
  {
23
- question: 'How much should I spend on a good pan?',
24
- answer: 'A set of 2-3 medium-high quality pans (stainless or iron) can last 20+ years. It\'s better to invest well in one pan than to buy 5 cheap ones lasting 2 years. Quality over quantity.',
23
+ question: 'Combien devrais-je dépenser pour une bonne poêle ?',
24
+ answer: 'Un ensemble de 2-3 poêles de qualité moyenne-haute (inox ou fonte) peut durer plus de 20 ans. Il vaut mieux investir dans une bonne poêle que d\'en acheter 5 bon marché qui durent 2 ans. La qualité avant la quantité.',
25
25
  },
26
26
  ];
27
27
  const howTo = [
28
28
  {
29
- name: 'Select your cooking style',
30
- text: 'Choose between high heat (searing), delicate (eggs), stews (slow cooking) or quick cooking. Each style has distinct requirements.',
29
+ name: 'Sélectionnez votre style de cuisine',
30
+ text: 'Choisissez entre feu vif (saisir), délicat (œufs), ragoûts (cuisson lente) ou cuisine rapide. Chaque style a des exigences distinctes.',
31
31
  },
32
32
  {
33
- name: 'Choose the ideal material',
34
- text: 'Based on your style, the tool will recommend the best material: iron, stainless steel, copper, or teflon.',
33
+ name: 'Choisissez le matériau idéal',
34
+ text: 'En fonction de votre style, l\'outil recommandera le meilleur matériau : fonte, acier inoxydable, cuivre ou téflon.',
35
35
  },
36
36
  {
37
- name: 'Read the characteristics',
38
- text: 'Understand advantages, disadvantages, maintenance, and durability. Then choose the specific pan that fits your budget and needs.',
37
+ name: 'Lisez les caractéristiques',
38
+ text: 'Comprenez les avantages, les inconvénients, l\'entretien et la durabilité. Choisissez ensuite la poêle spécifique qui correspond à votre budget et à vos besoins.',
39
39
  },
40
40
  ];
41
41
 
@@ -73,40 +73,39 @@ const appSchema = {
73
73
 
74
74
  export const content: ToolLocaleContent = {
75
75
  slug: 'cookware-selector',
76
- title: 'Smart Cookware Selector | Kitchen Utensils Guide',
77
- description: 'Interactive guide to choose the best pan or pot based on your cooking style. Iron vs Stainless Steel vs Teflon. Find your perfect tool.',
76
+ title: 'Sélecteur d\'Ustensiles Connecté | Guide de Cuisine',
77
+ description: 'Guide interactif pour choisir la meilleure poêle ou casserole selon votre style de cuisine. Fonte vs Acier Inoxydable vs Téflon. Trouvez votre outil parfait.',
78
78
  faqTitle: 'Questions Fréquemment Posées',
79
- bibliographyTitle: 'Bibliographie',
79
+ bibliographyTitle: 'Sources et Bibliographie',
80
80
  faq: [
81
81
  {
82
- question: 'What is the best pan for daily use?',
83
- answer: 'For most people, a high-quality stainless steel pan or a well-seasoned cast iron are the best. Stainless is versatile and eternal, while iron offers natural non-stick without chemicals.',
82
+ question: 'Quelle est la meilleure poêle pour un usage quotidien ?',
83
+ answer: "Pour la plupart des gens, une poêle en acier inoxydable de haute qualité ou eine fonte bien culottée sont les meilleures options. L'inox est polyvalent et éternel, tandis que la fonte offre un anti-adhésif naturel sans produits chimiques.",
84
84
  },
85
85
  {
86
- question: 'Why does food stick to stainless steel?',
87
- answer: 'Usually due to insufficient heat or adding food too early. Try the "Leidenfrost effect": heat the pan until a water droplet rolls like a pearl. Then it\'s ready.',
86
+ question: 'Pourquoi les aliments attachent-ils à l\'acier inoxydable ?',
87
+ answer: 'Généralement en raison d\'une chaleur insuffisante ou de l\'ajout d\'aliments trop tôt. Essayez l\'"effet Leidenfrost" : chauffez la poêle jusqu\'à ce qu\'une goutte d\'eau roule comme une perle. Elle est alors prête.',
88
88
  },
89
89
  {
90
- question: 'How do I know if my pan is safe?',
91
- answer: 'Look for "PFOA Free" labels. Cast iron, carbon steel, and stainless steel are the safest and most durable options, as they have no coatings that degrade over time.',
90
+ question: 'Comment savoir si ma poêle est sûre ?',
91
+ answer: 'Recherchez les étiquettes "Sans PFOA". La fonte, l\'acier au carbone et l\'acier inoxydable sont les options les plus sûres et les plus durables, car elles n\'ont pas de revêtements qui se dégradent avec le temps.',
92
92
  },
93
93
  {
94
- question: 'What does it mean to "season" a pan?',
95
- answer: 'It\'s the process of creating a layer of polymerized oil on the metal (iron or carbon). This protects against rust and creates a natural non-stick surface that improves with each use.',
94
+ question: 'Que signifie "culotter" une poêle ?',
95
+ answer: 'C\'est le processus de création d\'une couche d\'huile polymérisée sur le métal (fonte ou carbone). Cela protège de la rouille et crée une surface anti-adhésive naturelle qui s\'améliore à chaque utilisation.',
96
96
  },
97
97
  {
98
- question: 'How much should I spend on a good pan?',
99
- answer: 'A set of 2-3 medium-high quality pans (stainless or iron) can last 20+ years. It\'s better to invest well in one pan than to buy 5 cheap ones lasting 2 years. Quality over quantity.',
98
+ question: 'Combien devrais-je dépenser pour une bonne poêle ?',
99
+ answer: 'Un ensemble de 2-3 poêles de qualité moyenne-haute (inox ou fonte) peut durer plus de 20 ans. Il vaut mieux investir dans une bonne poêle que d\'en acheter 5 bon marché qui durent 2 ans. La qualité avant la quantité.',
100
100
  },
101
101
  ],
102
- bibliographyTitle: 'Bibliography',
103
102
  bibliography: [
104
103
  {
105
- name: 'The Flavor Bible - Pairing and Progress in Food',
104
+ name: 'The Flavor Bible - Association et Progrès en Cuisine',
106
105
  url: 'https://www.flavorprints.com/',
107
106
  },
108
107
  {
109
- name: 'On Food and Cooking - Harold McGee (The Science of Cooking)',
108
+ name: 'On Food and Cooking - Harold McGee (La Science de la Cuisine)',
110
109
  url: 'https://www.foodscience.org/',
111
110
  },
112
111
  {
@@ -116,120 +115,120 @@ export const content: ToolLocaleContent = {
116
115
  ],
117
116
  howTo: [
118
117
  {
119
- name: 'Select your cooking style',
120
- text: 'Choose between high heat (searing), delicate (eggs), stews (slow cooking) or quick cooking. Each style has distinct requirements.',
118
+ name: 'Sélectionnez votre style de cuisine',
119
+ text: 'Choisissez entre feu vif (saisir), délicat (œufs), ragoûts (cuisson lente) ou cuisine rapide. Chaque style a des exigences distinctes.',
121
120
  },
122
121
  {
123
- name: 'Choose the ideal material',
124
- text: 'Based on your style, the tool will recommend the best material: iron, stainless steel, copper, or teflon.',
122
+ name: 'Choisissez le matériau idéal',
123
+ text: 'En fonction de votre style, l\'outil recommandera le meilleur matériau : fonte, acier inoxydable, cuivre ou téflon.',
125
124
  },
126
125
  {
127
- name: 'Read the characteristics',
128
- text: 'Understand advantages, disadvantages, maintenance, and durability. Then choose the specific pan that fits your budget and needs.',
126
+ name: 'Lisez les caractéristiques',
127
+ text: 'Comprenez les avantages, les inconvénients, l\'entretien et la durabilité. Choisissez ensuite la poêle spécifique qui correspond à votre budget et à vos besoins.',
129
128
  },
130
129
  ],
131
130
  seo: [
132
131
  {
133
132
  type: 'title',
134
- text: 'Pan Materials: Science and Practice',
133
+ text: 'Matériaux de Poêle : Science et Pratique',
135
134
  level: 2,
136
135
  },
137
136
  {
138
137
  type: 'paragraph',
139
- html: 'Not all pans are equal. Each material has distinct thermodynamic properties that affect how it distributes heat, what temperatures it tolerates, and how it interacts with food. Understanding these differences is the key to choosing the right tool.',
138
+ html: 'Toutes les poêles ne se valent pas. Chaque matériau possède des propriétés thermodynamiques distinctes qui affectent la répartition de la chaleur, les températures tolérées et l\'interaction avec les aliments. Comprendre ces différences est la clé pour choisir le bon outil.',
140
139
  },
141
140
  {
142
141
  type: 'title',
143
- text: 'Cast Iron: The Classic',
142
+ text: 'Fonte : Le Classique',
144
143
  level: 3,
145
144
  },
146
145
  {
147
146
  type: 'paragraph',
148
- html: '<strong>Advantages:</strong> Excellent heat retention, uniform distribution, natural non-stick (when seasoned), lasts centuries, improves with time. <strong>Disadvantages:</strong> Heavy, requires maintenance, can rust, takes longer to heat, not suitable for prolonged acids.',
147
+ html: '<strong>Avantages :</strong> Excellente rétention de chaleur, distribution uniforme, anti-adhésif naturel (si culottée), dure des siècles, s\'améliore avec le temps. <strong>Inconvénients :</strong> Lourde, nécessite un entretien, peut rouiller, chauffe plus lentement, ne convient pas aux acides prolongés.',
149
148
  },
150
149
  {
151
150
  type: 'title',
152
- text: 'Stainless Steel: The Versatile',
151
+ text: 'Acier Inoxydable : Le Polyvalent',
153
152
  level: 3,
154
153
  },
155
154
  {
156
155
  type: 'paragraph',
157
- html: '<strong>Advantages:</strong> Durable, requires no maintenance, suitable for acids (wines, tomatoes), easy to clean, versatile, relatively economical. <strong>Disadvantages:</strong> Not naturally non-stick, requires technique (preheat well), uneven heat distribution (better with multi-layer bottom).',
156
+ html: '<strong>Avantages :</strong> Durable, ne nécessite aucun entretien, convient aux acides (vins, tomates), facile à nettoyer, polyvalent, relativement économique. <strong>Inconvénients :</strong> Pas naturellement anti-adhésif, nécessite de la technique (bien préchauffer), distribution de chaleur inégale (meilleure avec fond multicouche).',
158
157
  },
159
158
  {
160
159
  type: 'title',
161
- text: 'Teflon/PTFE: The Convenient',
160
+ text: 'Téflon/PTFE : Le Pratique',
162
161
  level: 3,
163
162
  },
164
163
  {
165
164
  type: 'paragraph',
166
- html: '<strong>Advantages:</strong> Instant non-stick, easy cooking, easy cleaning, economical. <strong>Disadvantages:</strong> Degrades over time and temperature, needs replacement every 3-5 years, unsafe at very high temperatures (>500°F), PTFE safety is debated.',
165
+ html: '<strong>Avantages :</strong> Anti-adhésif instantané, cuisine facile, nettoyage facile, économique. <strong>Inconvénients :</strong> Se dégrade avec le temps et la température, doit être remplacé tous les 3 à 5 ans, dangereux à très haute température (>260°C), la sécurité du PTFE est débattue.',
167
166
  },
168
167
  ],
169
168
  ui: {
170
- cookingStyle: 'How do you usually cook?',
171
- material: 'Material Type',
172
- highHeat: 'High Heat',
173
- sear: 'Sear / Seal',
174
- delicate: 'Delicate',
175
- fry: 'Eggs / Omelets',
176
- stew: 'Stews',
177
- slowCook: 'Slow Cooking',
178
- fast: 'Fast',
179
- quick: 'Quick Cooking',
180
- recommendation: 'Recommendation',
181
- characteristics: 'Characteristics',
182
- castIron: 'Cast Iron',
183
- stainlessSteel: 'Stainless Steel',
184
- carbon: 'Carbon Steel',
185
- copper: 'Copper',
186
- nonstick: 'Non-stick (Teflon)',
187
- advantages: 'Advantages',
188
- disadvantages: 'Disadvantages',
189
- maintenance: 'Maintenance',
190
- durability: 'Durability',
191
- heatRetention: 'Heat Retention',
192
- price: 'Price',
193
- step1: 'How do you usually cook?',
194
- step2: 'Maintenance Level',
195
- maintenanceLazy: 'Low / None',
196
- maintenanceLazyDesc: 'No complications washing.',
197
- maintenanceCare: 'Medium',
198
- maintenanceCareDesc: 'Normal hand washing.',
199
- maintenanceRitual: 'Ritual (High)',
200
- maintenanceRitualDesc: 'I enjoy seasoning.',
201
- idealPan: 'Your Ideal Pan',
202
- selectOptions: 'Select options',
203
- seeRecommendation: 'To see your recommendation',
204
- pro: 'PRO',
205
- con: 'CONS',
206
- masterTip: 'Master Tip',
207
- defaultTip: 'Combining stainless steel for searing and non-stick for eggs is the foundation of any efficient kitchen.',
208
- stainlessName: 'Stainless Steel',
209
- stainlessTag: 'The Pro All-rounder',
210
- stainlessPro: 'Eternal and non-reactive. Perfect searing.',
211
- stainlessCon: 'Requires technique (heat) to avoid sticking.',
212
- stainlessTip: 'Use the Leidenfrost effect: heat until a water droplet rolls like a pearl.',
213
- nonstickName: 'Non-stick',
214
- nonstickTag: 'Maximum Comfort',
215
- nonstickPro: 'Nothing sticks. Easy cleanup.',
216
- nonstickCon: 'Short lifespan (2-3 years). No high heat.',
217
- nonstickTip: 'Always hand wash and use wood/silicone utensils to double its life.',
169
+ cookingStyle: 'Comment cuisinez-vous habituellement ?',
170
+ material: 'Type de Matériau',
171
+ highHeat: 'Feu Vif',
172
+ sear: 'Saisir / Sceller',
173
+ delicate: 'Délicat',
174
+ fry: 'Œufs / Omelettes',
175
+ stew: 'Mijotés',
176
+ slowCook: 'Cuisson Lente',
177
+ fast: 'Rapide',
178
+ quick: 'Cuisine Rapide',
179
+ recommendation: 'Recommandation',
180
+ characteristics: 'Caractéristiques',
181
+ castIron: 'Fonte',
182
+ stainlessSteel: 'Acier Inoxydable',
183
+ carbon: 'Acier au Carbone',
184
+ copper: 'Cuivre',
185
+ nonstick: 'Anti-adhésif (Téflon)',
186
+ advantages: 'Avantages',
187
+ disadvantages: 'Inconvénients',
188
+ maintenance: 'Entretien',
189
+ durability: 'Durabilité',
190
+ heatRetention: 'Rétention de Chaleur',
191
+ price: 'Prix',
192
+ step1: 'Comment cuisinez-vous habituellement ?',
193
+ step2: 'Niveau d\'Entretien',
194
+ maintenanceLazy: 'Faible / Aucun',
195
+ maintenanceLazyDesc: 'Pas de complications pour le lavage.',
196
+ maintenanceCare: 'Moyen',
197
+ maintenanceCareDesc: 'Lavage à la main normal.',
198
+ maintenanceRitual: 'Rituel (Élevé)',
199
+ maintenanceRitualDesc: "J'aime culotter mes poêles.",
200
+ idealPan: 'Votre Poêle Idéale',
201
+ selectOptions: 'Sélectionnez des options',
202
+ seeRecommendation: 'Pour voir votre recommandation',
203
+ pro: 'AVANTAGES',
204
+ con: 'INCONVÉNIENTS',
205
+ masterTip: 'Conseil de Chef',
206
+ defaultTip: 'Combiner l\'acier inoxydable pour saisir et l\'anti-adhésif pour les œufs est la base de toute cuisine efficace.',
207
+ stainlessName: 'Acier Inoxydable',
208
+ stainlessTag: 'Le Pro Polyvalent',
209
+ stainlessPro: 'Éternel et non réactif. Saisis parfaits.',
210
+ stainlessCon: 'Nécessite de la technique (chaleur) pour éviter d\'attacher.',
211
+ stainlessTip: 'Utilisez l\'effet Leidenfrost : chauffez jusqu\'à ce qu\'une goutte d\'eau roule comme une perle.',
212
+ nonstickName: 'Anti-adhésif',
213
+ nonstickTag: 'Confort Maximum',
214
+ nonstickPro: 'Rien n\'attache. Nettoyage facile.',
215
+ nonstickCon: 'Durée de vie courte (2-3 ans). Pas de feu vif.',
216
+ nonstickTip: 'Lavez toujours à la main et utilisez des ustensiles en bois/silicone pour doubler sa vie.',
218
217
  castironName: 'Cast Iron',
219
- castironTag: 'The Classic Forever',
220
- castironPro: 'Incredible heat retention. Eternal.',
221
- castironCon: 'Very heavy. Requires regular seasoning.',
222
- castironTip: 'Heats slowly, but once hot it\'s a tank. Ideal for steaks.',
223
- carbonName: 'Carbon Steel',
224
- carbonTag: 'Fire Agility',
225
- carbonPro: 'Light as steel, almost like iron.',
226
- carbonCon: 'Rusts if left wet. Rough aesthetics.',
227
- carbonTip: 'The darker and uglier it gets, the better it works. Wok masters\' secret.',
228
- enamelName: 'Enameled Cast Iron',
229
- enamelTag: 'Gourmet Quality',
230
- enamelPro: 'Better slow cooking. Beautiful aesthetics.',
231
- enamelCon: 'Very expensive. Enamel fragile to hard impacts.',
232
- enamelTip: 'Perfect for endless braises. Enamel handles acids (tomato) without issues.',
218
+ castironTag: 'Le Classique Éternel',
219
+ castironPro: 'Incroyable rétention de chaleur. Éternelle.',
220
+ castironCon: 'Très lourde. Nécessite un culottage régulier.',
221
+ castironTip: 'Chauffe lentement, mais une fois chaude, c\'est un tank. Idéal pour les steaks.',
222
+ carbonName: 'Acier au Carbone',
223
+ carbonTag: 'Agilité du Feu',
224
+ carbonPro: 'Léger comme l\'acier, presque comme la fonte.',
225
+ carbonCon: 'Rouille s\'il reste mouillé. Esthétique rugueuse.',
226
+ carbonTip: 'Plus elle devient sombre et moche, mieux elle fonctionne. Le secret des maîtres du wok.',
227
+ enamelName: 'Fonte Émaillée',
228
+ enamelTag: 'Qualité Gourmet',
229
+ enamelPro: 'Meilleure cuisson lente. Belle esthétique.',
230
+ enamelCon: 'Très chère. Émail fragile aux chocs violents.',
231
+ enamelTip: 'Parfait pour les braisés sans fin. L\'émail supporte les acides (tomate) sans problème.',
233
232
  },
234
233
  schemas: [faqSchema, howToSchema, appSchema],
235
234
  };
@@ -302,6 +302,10 @@ ${ui.exampleLine4}`;
302
302
  gap: 0.5rem;
303
303
  }
304
304
 
305
+ :global(.theme-dark) .ir-results-title {
306
+ color: var(--ir-text-main);
307
+ }
308
+
305
309
  .ir-copy-btn {
306
310
  font-size: 0.75rem;
307
311
  background: hsl(210deg, 30%, 35%);
@@ -319,6 +323,7 @@ ${ui.exampleLine4}`;
319
323
 
320
324
  :global(.theme-dark) .ir-copy-btn {
321
325
  background: hsl(220deg, 25%, 30%);
326
+ color: var(--ir-text-main);
322
327
  }
323
328
 
324
329
  .ir-copy-btn:hover {
@@ -360,7 +365,7 @@ ${ui.exampleLine4}`;
360
365
  height: 3rem;
361
366
  }
362
367
 
363
- .ir-result-row {
368
+ :global(.ir-result-row) {
364
369
  display: flex;
365
370
  justify-content: space-between;
366
371
  align-items: center;
@@ -371,7 +376,7 @@ ${ui.exampleLine4}`;
371
376
  transition: all 0.3s ease;
372
377
  }
373
378
 
374
- .ir-result-row:hover {
379
+ :global(.ir-result-row):hover {
375
380
  background: var(--ir-primary-light);
376
381
  border-left-color: var(--ir-primary);
377
382
  }
@@ -389,7 +394,7 @@ ${ui.exampleLine4}`;
389
394
  font-size: 1.125rem;
390
395
  }
391
396
 
392
- .ir-no-amount-row {
397
+ :global(.ir-no-amount-row) {
393
398
  color: var(--ir-text-muted);
394
399
  font-style: italic;
395
400
  font-size: 0.875rem;
@@ -8,7 +8,7 @@ interface Props {
8
8
  const { ui } = Astro.props;
9
9
  ---
10
10
 
11
- <div class="kitchen-timer-wrapper">
11
+ <div class="kitchen-timer-wrapper" id="kitchen-timer-wrapper" data-ui={JSON.stringify(ui)}>
12
12
  <div class="kitchen-timer-master-card">
13
13
  <div id="timers-grid" class="timers-grid">
14
14
  <div class="timer-card" data-index="0">
@@ -332,10 +332,13 @@ const { ui } = Astro.props;
332
332
  <script>
333
333
  import { initKitchenTimers } from "./init";
334
334
 
335
+ const wrapper = document.getElementById("kitchen-timer-wrapper");
336
+ const ui = wrapper ? JSON.parse(wrapper.dataset.ui || "{}") : {};
337
+
335
338
  if (document.readyState === "loading") {
336
- document.addEventListener("DOMContentLoaded", initKitchenTimers);
339
+ document.addEventListener("DOMContentLoaded", () => initKitchenTimers(ui));
337
340
  } else {
338
- initKitchenTimers();
341
+ initKitchenTimers(ui);
339
342
  }
340
343
  </script>
341
344
 
@@ -346,6 +349,7 @@ const { ui } = Astro.props;
346
349
  --kt-bg: #fff;
347
350
  --kt-bg-secondary: #f8fafc;
348
351
  --kt-border: #e2e8f0;
352
+ --kt-separator: #cbd5e1;
349
353
  --kt-text: #0f172a;
350
354
  --kt-text-muted: #64748b;
351
355
  --card-br: 1.5rem;
@@ -357,6 +361,7 @@ const { ui } = Astro.props;
357
361
  --kt-bg: #0f172a;
358
362
  --kt-bg-secondary: #1e293b;
359
363
  --kt-border: #334155;
364
+ --kt-separator: #64748b;
360
365
  --kt-text: #f8fafc;
361
366
  --kt-text-muted: #94a3b8;
362
367
  }
@@ -473,22 +478,35 @@ const { ui } = Astro.props;
473
478
  }
474
479
 
475
480
  .time-input {
476
- width: 80px;
481
+ width: 85px;
482
+ aspect-ratio: 1;
477
483
  background: var(--kt-bg-secondary);
478
484
  border: 2px solid var(--kt-border);
479
- border-radius: 1rem;
480
- font-size: 2.5rem;
485
+ border-radius: 1.25rem;
486
+ font-size: 2.75rem;
481
487
  font-weight: 900;
482
488
  text-align: center;
483
489
  color: var(--kt-text);
484
- padding: 0.5rem;
490
+ padding: 0;
491
+ display: flex;
492
+ align-items: center;
493
+ justify-content: center;
485
494
  outline: none;
486
495
  transition: all 0.2s;
496
+ appearance: textfield;
497
+ -moz-appearance: textfield;
498
+ }
499
+
500
+ .time-input::-webkit-outer-spin-button,
501
+ .time-input::-webkit-inner-spin-button {
502
+ -webkit-appearance: none;
503
+ margin: 0;
487
504
  }
488
505
 
489
506
  .time-input:focus {
490
507
  border-color: var(--kt-primary);
491
508
  background: var(--kt-bg);
509
+ box-shadow: 0 0 0 4px rgba(234, 88, 12, 0.1);
492
510
  }
493
511
 
494
512
  .time-label {
@@ -502,8 +520,8 @@ const { ui } = Astro.props;
502
520
  .time-separator {
503
521
  font-size: 2rem;
504
522
  font-weight: 900;
505
- color: var(--kt-border);
506
- margin-top: -1.5rem;
523
+ color: var(--kt-separator);
524
+ margin-top: -1.4rem;
507
525
  }
508
526
 
509
527
  .timer-controls {
@@ -101,12 +101,11 @@ export const content: ToolLocaleContent = {
101
101
  reset: 'Reset',
102
102
  addOneMin: '+1 min',
103
103
  addFiveMin: '+5 min',
104
- status: {
105
- ready: 'Ready',
106
- running: 'Running',
107
- paused: 'Paused',
108
- finished: 'TIME!',
109
- },
104
+ statusReady: 'Ready',
105
+ statusRunning: 'Running',
106
+ statusPaused: 'Paused',
107
+ statusFinished: 'TIME!',
108
+ finishNotification: 'Timer Finished for',
110
109
  },
111
110
 
112
111
  faq: [
@@ -225,5 +224,5 @@ export const content: ToolLocaleContent = {
225
224
  },
226
225
  ],
227
226
 
228
- schemas: [faqSchema, howToSchema, appSchema],
227
+ schemas: [faqSchema as any, howToSchema as any, appSchema as any],
229
228
  };
@@ -101,12 +101,11 @@ export const content: ToolLocaleContent = {
101
101
  reset: 'Reset',
102
102
  addOneMin: '+1 min',
103
103
  addFiveMin: '+5 min',
104
- status: {
105
- ready: 'Listo',
106
- running: 'Corriendo',
107
- paused: 'Pausado',
108
- finished: '¡TIEMPO!',
109
- },
104
+ statusReady: 'Listo',
105
+ statusRunning: 'Corriendo',
106
+ statusPaused: 'Pausado',
107
+ statusFinished: '¡TIEMPO!',
108
+ finishNotification: 'Temporizador Terminado para',
110
109
  },
111
110
 
112
111
  faq: [
@@ -216,7 +215,7 @@ export const content: ToolLocaleContent = {
216
215
  items: [
217
216
  '<strong>Escalona los tiempos de finalización:</strong> Si todo termina a la vez, te agobiarás emplatando. Intenta que los acompañamientos estén listos 5 minutos antes que el plato principal.',
218
217
  '<strong>Usa el calor residual:</strong> Apaga el fuego de las verduras o pastas 1-2 minutos antes de que el temporizador suene. El calor residual terminará la cocción suavemente.',
219
- '<strong>Nombra tus temporizadores:</strong> En una cocina ajetreada es fácil olvidar qué alarma es cual. Usa la función de renombrado de esta herramienta para etiquetar \'Horno\', \'Arroz\' o \'Salsa\'.',
218
+ '<strong>Nombra tus temporizadores:</strong> En una cocina ajetreada es fácil olvidar qué alarma es cual. Usa la función de renombrado de esta herramienta para etiquetar \'Horno\', \'Arroz\', o \'Salsa\'.',
220
219
  ],
221
220
  },
222
221
  {
@@ -225,5 +224,5 @@ export const content: ToolLocaleContent = {
225
224
  },
226
225
  ],
227
226
 
228
- schemas: [faqSchema, howToSchema, appSchema],
227
+ schemas: [faqSchema as any, howToSchema as any, appSchema as any],
229
228
  };