@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.
- package/package.json +1 -1
- package/src/tool/banana-ripeness/i18n/fr.ts +86 -86
- package/src/tool/brine/component.astro +20 -22
- package/src/tool/cookware-guide/component.astro +22 -6
- package/src/tool/cookware-guide/i18n/fr.ts +109 -110
- package/src/tool/ingredient-rescaler/component.astro +8 -3
- package/src/tool/kitchen-timer/component.astro +27 -9
- package/src/tool/kitchen-timer/i18n/en.ts +6 -7
- package/src/tool/kitchen-timer/i18n/es.ts +7 -8
- package/src/tool/kitchen-timer/i18n/fr.ts +76 -77
- package/src/tool/kitchen-timer/init.ts +23 -6
- package/src/tool/kitchen-timer/lib/KitchenTimer.ts +20 -8
- package/src/tool/meringue-peak/component.astro +4 -4
- package/src/tool/mold-scaler/component.astro +17 -11
- package/src/tool/roux-guide/i18n/en.ts +18 -1
- package/src/tool/roux-guide/i18n/es.ts +20 -3
- package/src/tool/roux-guide/i18n/fr.ts +18 -1
- package/src/tool/roux-guide/init.ts +55 -52
package/package.json
CHANGED
|
@@ -1,41 +1,41 @@
|
|
|
1
1
|
import type { ToolLocaleContent } from '../../../types';
|
|
2
2
|
|
|
3
|
-
const title = "
|
|
4
|
-
const description = "
|
|
3
|
+
const title = "Diagnostic et Conservation des Bananes : Guide Scientifique";
|
|
4
|
+
const description = "Analysez le stade de maturité de vos bananes avec une précision scientifique. Apprenez les techniques de conservation, la biochimie de l'éthylène et l'optimisation nutritionnelle.";
|
|
5
5
|
const faq = [
|
|
6
6
|
{
|
|
7
|
-
question: '
|
|
8
|
-
answer:
|
|
7
|
+
question: 'Pourquoi les bananes deviennent-elles noires au réfrigérateur ?',
|
|
8
|
+
answer: "Le froid rompt les parois cellulaires de la peau, libérant des enzymes qui oxydent les phénols et créent des polyphénols noirs. Cependant, l'intérieur reste généralement ferme et sucré plus longtemps qu'à l'extérieur.",
|
|
9
9
|
},
|
|
10
10
|
{
|
|
11
|
-
question: '
|
|
12
|
-
answer: '
|
|
11
|
+
question: 'Comment faire mûrir une banane rapidement ?',
|
|
12
|
+
answer: 'Placez-les dans un sac en papier fermé avec une pomme ou une tomate. Celles-ci émettent de l\'éthylène, un gaz qui accélère la maturité. Si vous êtes pressé, vous pouvez les mettre quelques minutes au four à basse température.',
|
|
13
13
|
},
|
|
14
14
|
{
|
|
15
|
-
question: '
|
|
16
|
-
answer: '
|
|
15
|
+
question: 'Est-il prudent de manger des bananes tachetées ?',
|
|
16
|
+
answer: 'Oui, tout à fait. Les taches indiquent que l\'amidon s\'est transformé en sucre, les rendant plus sucrées et digestes. Ne les jetez que si elles présentent de la moisissure, une mauvaise odeur ou sont excessivement molles.',
|
|
17
17
|
},
|
|
18
18
|
{
|
|
19
|
-
question: '
|
|
20
|
-
answer: '
|
|
19
|
+
question: 'Qu\'est-ce que l\'éthylène ?',
|
|
20
|
+
answer: 'C\'est une hormone végétale sous forme de gaz qui régule la croissance et la maturation. La banane est un fruit climatérique, ce qui signifie qu\'elle continue à produire de l\'éthylène et à mûrir après sa récolte.',
|
|
21
21
|
},
|
|
22
22
|
];
|
|
23
23
|
const howTo = [
|
|
24
24
|
{
|
|
25
|
-
name: '
|
|
26
|
-
text: '
|
|
25
|
+
name: 'Observer la couleur',
|
|
26
|
+
text: 'Examinez attentivement la couleur de la peau, du vert au brun foncé, pour déterminer le stade actuel de maturité.',
|
|
27
27
|
},
|
|
28
28
|
{
|
|
29
|
-
name: '
|
|
30
|
-
text: '
|
|
29
|
+
name: 'Utiliser le simulateur',
|
|
30
|
+
text: 'Faites glisser l\'indicateur de maturité pour voir des prédictions précises sur le moment où elle atteindra la prochaine étape.',
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
|
-
name: '
|
|
34
|
-
text: '
|
|
33
|
+
name: 'Ajuster les conditions',
|
|
34
|
+
text: 'Modifiez la température et l\'humidité pour voir comment elles affectent la vitesse de maturation.',
|
|
35
35
|
},
|
|
36
36
|
{
|
|
37
|
-
name: '
|
|
38
|
-
text: '
|
|
37
|
+
name: 'Appliquer la conservation',
|
|
38
|
+
text: 'Suivez les recommandations spécifiques de conservation et d\'accélération selon le stade actuel.',
|
|
39
39
|
},
|
|
40
40
|
];
|
|
41
41
|
|
|
@@ -73,75 +73,75 @@ const appSchema = {
|
|
|
73
73
|
|
|
74
74
|
export const content: ToolLocaleContent = {
|
|
75
75
|
slug: 'banana-ripeness',
|
|
76
|
-
title: '
|
|
77
|
-
description: '
|
|
76
|
+
title: 'Diagnostic et Conservation des Bananes : Guide Scientifique',
|
|
77
|
+
description: 'Analysez le stade de maturité de vos bananes avec une précision scientifique. Apprenez les techniques de conservation, la biochimie de l\'éthylène et l\'optimisation nutritionnelle.',
|
|
78
78
|
faqTitle: 'Questions Fréquemment Posées',
|
|
79
79
|
bibliographyTitle: 'Sources et Références',
|
|
80
80
|
ui: {
|
|
81
|
-
ripesnessLabel: '
|
|
82
|
-
nextStageLabel: '
|
|
83
|
-
daysUnit: '
|
|
84
|
-
tempLabel: '
|
|
85
|
-
humidityLabel: '
|
|
86
|
-
partnerToggleTitle: '
|
|
87
|
-
partnerToggleSubtitle: '
|
|
81
|
+
ripesnessLabel: 'État de Maturité',
|
|
82
|
+
nextStageLabel: 'Prochaine Étape dans',
|
|
83
|
+
daysUnit: 'Jours',
|
|
84
|
+
tempLabel: 'Température',
|
|
85
|
+
humidityLabel: 'Humidité',
|
|
86
|
+
partnerToggleTitle: 'Accompagnement Climatérique',
|
|
87
|
+
partnerToggleSubtitle: 'Effet de l\'éthylène externe',
|
|
88
88
|
conservationTitle: 'Conservation',
|
|
89
|
-
accelerationTitle: '
|
|
90
|
-
stage1Name: '
|
|
91
|
-
stage1Desc: '
|
|
92
|
-
stage1Conservation: '
|
|
93
|
-
stage1Acceleration: '
|
|
94
|
-
stage2Name: '
|
|
95
|
-
stage2Desc: '
|
|
96
|
-
stage2Conservation: '
|
|
97
|
-
stage2Acceleration: '
|
|
98
|
-
stage3Name: '
|
|
99
|
-
stage3Desc: '
|
|
100
|
-
stage3Conservation: '
|
|
101
|
-
stage3Acceleration: '
|
|
102
|
-
stage4Name: '
|
|
103
|
-
stage4Desc: '
|
|
104
|
-
stage4Conservation: '
|
|
105
|
-
stage4Acceleration: '
|
|
106
|
-
stage5Name: '
|
|
107
|
-
stage5Desc: '
|
|
108
|
-
stage5Conservation: '
|
|
89
|
+
accelerationTitle: 'Accélération',
|
|
90
|
+
stage1Name: 'Vert Émeraude',
|
|
91
|
+
stage1Desc: 'Teneur maximale en amidon résistant. Fermeté totale.',
|
|
92
|
+
stage1Conservation: 'Température ambiante (18-20°C). Éviter le froid (<12°C).',
|
|
93
|
+
stage1Acceleration: 'Sac en papier avec une pomme ou une tomate mûre.',
|
|
94
|
+
stage2Name: 'Jaune Éclatant',
|
|
95
|
+
stage2Desc: 'Équilibre parfait entre fermeté et douceur initiale.',
|
|
96
|
+
stage2Conservation: 'Endroit frais, séparer du régime pour ralentir l\'éthylène.',
|
|
97
|
+
stage2Acceleration: 'Garder en régime et envelopper dans du plastique.',
|
|
98
|
+
stage3Name: 'Tachetée Sucrée',
|
|
99
|
+
stage3Desc: 'Pic d\'antioxydants. Douceur intense et texture crémeuse.',
|
|
100
|
+
stage3Conservation: 'Réfrigérer pour préserver la pulpe (bien que la peau noircisse).',
|
|
101
|
+
stage3Acceleration: 'Chaleur douce (près d\'une source de chaleur, pas directe).',
|
|
102
|
+
stage4Name: 'Mûre Cannelle',
|
|
103
|
+
stage4Desc: 'Texture très molle. Idéal pour la pâtisserie sans sucre.',
|
|
104
|
+
stage4Conservation: 'Éplucher et congeler immédiatement.',
|
|
105
|
+
stage4Acceleration: 'A déjà atteint son apogée.',
|
|
106
|
+
stage5Name: 'Trop Mûre / Fermentée',
|
|
107
|
+
stage5Desc: 'Processus de dégradation avancé.',
|
|
108
|
+
stage5Conservation: 'Non recommandé pour la consommation directe.',
|
|
109
109
|
stage5Acceleration: 'N/A',
|
|
110
110
|
},
|
|
111
111
|
faq: [
|
|
112
112
|
{
|
|
113
|
-
question: '
|
|
114
|
-
answer:
|
|
113
|
+
question: 'Pourquoi les bananes deviennent-elles noires au réfrigérateur ?',
|
|
114
|
+
answer: "Le froid rompt les parois cellulaires de la peau, libérant des enzymes qui oxydent les phénols et créent des polyphénols noirs. Cependant, l'intérieur reste généralement ferme et sucré plus longtemps qu'à l'extérieur.",
|
|
115
115
|
},
|
|
116
116
|
{
|
|
117
|
-
question: '
|
|
118
|
-
answer: '
|
|
117
|
+
question: 'Comment faire mûrir une banane rapidement ?',
|
|
118
|
+
answer: 'Placez-les dans un sac en papier fermé avec une pomme ou une tomate. Celles-ci émettent de l\'éthylène, un gaz qui accélère la maturité. Si vous êtes pressé, vous pouvez les mettre quelques minutes au four à basse température.',
|
|
119
119
|
},
|
|
120
120
|
{
|
|
121
|
-
question: '
|
|
122
|
-
answer: '
|
|
121
|
+
question: 'Est-il prudent de manger des bananes tachetées ?',
|
|
122
|
+
answer: 'Oui, tout à fait. Les taches indiquent que l\'amidon s\'est transformé en sucre, les rendant plus sucrées et digestes. Ne les jetez que si elles présentent de la moisissure, une mauvaise odeur ou sont excessivement molles.',
|
|
123
123
|
},
|
|
124
124
|
{
|
|
125
|
-
question: '
|
|
126
|
-
answer: '
|
|
125
|
+
question: 'Qu\'est-ce que l\'éthylène ?',
|
|
126
|
+
answer: 'C\'est une hormone végétale sous forme de gaz qui régule la croissance et la maturation. La banane est un fruit climatérique, ce qui signifie qu\'elle continue à produire de l\'éthylène et à mûrir après sa récolte.',
|
|
127
127
|
},
|
|
128
128
|
],
|
|
129
129
|
howTo: [
|
|
130
130
|
{
|
|
131
|
-
name: '
|
|
132
|
-
text: '
|
|
131
|
+
name: 'Observer la couleur',
|
|
132
|
+
text: 'Examinez attentivement la couleur de la peau, du vert au brun foncé, pour déterminer le stade actuel de maturité.',
|
|
133
133
|
},
|
|
134
134
|
{
|
|
135
|
-
name: '
|
|
136
|
-
text: '
|
|
135
|
+
name: 'Utiliser le simulateur',
|
|
136
|
+
text: 'Faites glisser l\'indicateur de maturité pour voir des prédictions précises sur le moment où elle atteindra la prochaine étape.',
|
|
137
137
|
},
|
|
138
138
|
{
|
|
139
|
-
name: '
|
|
140
|
-
text: '
|
|
139
|
+
name: 'Ajuster les conditions',
|
|
140
|
+
text: 'Modifiez la température et l\'humidité pour voir comment elles affectent la vitesse de maturation.',
|
|
141
141
|
},
|
|
142
142
|
{
|
|
143
|
-
name: '
|
|
144
|
-
text: '
|
|
143
|
+
name: 'Appliquer la conservation',
|
|
144
|
+
text: 'Suivez les recommandations spécifiques de conservation et d\'accélération selon le stade actuel.',
|
|
145
145
|
},
|
|
146
146
|
],
|
|
147
147
|
bibliography: [
|
|
@@ -161,87 +161,87 @@ export const content: ToolLocaleContent = {
|
|
|
161
161
|
seo: [
|
|
162
162
|
{
|
|
163
163
|
type: 'title',
|
|
164
|
-
text: 'Science
|
|
164
|
+
text: 'Science de la maturation chez la Musa × paradisiaca',
|
|
165
165
|
level: 2,
|
|
166
166
|
},
|
|
167
167
|
{
|
|
168
168
|
type: 'paragraph',
|
|
169
|
-
html: '
|
|
169
|
+
html: 'La banane est l\'un des fruits les plus consommés au monde, mais aussi l\'un des plus mal compris biologiquement. Contrairement aux fruits non climatériques comme les agrumes ou les raisins, la banane est un <strong>fruit climatérique</strong>. Cela signifie qu\'elle continue à mûrir après la récolte, augmentant considérablement la respiration cellulaire et la production d\'une phytohormone gazeuse cruciale : <strong>l\'éthylène</strong>.',
|
|
170
170
|
},
|
|
171
171
|
{
|
|
172
172
|
type: 'paragraph',
|
|
173
|
-
html: '
|
|
173
|
+
html: 'D\'un point de vue biochimique, la maturation est une cascade d\'événements enzymatiques. Au cours de ce processus, des enzymes comme l\'amylase décomposent les glucides complexes (amidons) en sucres simples (fructose, glucose et saccharose). Ce changement alterne non seulement la saveur, la rendant plus sucrée, mais modifie également la texture en dégradant la pectine des parois cellulaires, ce qui donne cette consistance douce et crémeuse caractérisant la banane mûre.',
|
|
174
174
|
},
|
|
175
175
|
{
|
|
176
176
|
type: 'title',
|
|
177
|
-
text: '
|
|
177
|
+
text: 'Le Cycle de l\'Éthylène',
|
|
178
178
|
level: 3,
|
|
179
179
|
},
|
|
180
180
|
{
|
|
181
181
|
type: 'paragraph',
|
|
182
|
-
html: '
|
|
182
|
+
html: 'L\'éthylène fonctionne comme un interrupteur biologique. Une fois que le fruit détecte une faible concentration d\'éthylène, il active les gènes responsables de la production de plus d\'éthylène, créant une boucle de rétroaction positive. C\'est pourquoi une banane très mûre accélère la maturation de toutes ses voisines dans le compotier. Pour ralentir ce processus, il est vital d\'isoler les spécimens présentant déjà des taches brunes de ceux encore verts.',
|
|
183
183
|
},
|
|
184
184
|
{
|
|
185
185
|
type: 'title',
|
|
186
|
-
text: '
|
|
186
|
+
text: 'Le Mythe du Réfrigérateur',
|
|
187
187
|
level: 3,
|
|
188
188
|
},
|
|
189
189
|
{
|
|
190
190
|
type: 'paragraph',
|
|
191
|
-
html: '
|
|
191
|
+
html: 'Il existe une croyance populaire selon laquelle les bananes ne devraient pas aller au réfrigérateur. La réalité est plus complexe : le froid (en dessous de 12°C) cause des dommages dus au refroidissement dans les cellules de la peau, libérant des enzymes qui oxydent les phénols et font noircir la peau. Cependant, cela n\'affecte que l\'apparence. Si l\'intérieur a déjà atteint la maturité souhaitée, le froid arrêtera presque complètement le ramollissement de la pulpe, préservant la saveur et la texture pendant plusieurs jours supplémentaires.',
|
|
192
192
|
},
|
|
193
193
|
{
|
|
194
194
|
type: 'title',
|
|
195
|
-
text: '
|
|
195
|
+
text: 'Stratégies de Conservation Avancées',
|
|
196
196
|
level: 3,
|
|
197
197
|
},
|
|
198
198
|
{
|
|
199
199
|
type: 'paragraph',
|
|
200
|
-
html: '<strong>
|
|
200
|
+
html: '<strong>Emballage de la couronne :</strong> Envelopper la tige d\'un régime de bananes avec du film plastique réduit considérablement la libération d\'éthylène, prolongeant la durée de conservation commerciale jusqu\'à 72 heures supplémentaires.',
|
|
201
201
|
},
|
|
202
202
|
{
|
|
203
203
|
type: 'paragraph',
|
|
204
|
-
html: '<strong>
|
|
204
|
+
html: '<strong>Suspension Dynamique :</strong> Suspendre les bananes évite les meurtrissures dues à la pression. Les tissus endommagés libèrent de l\'éthylène plus rapidement, créant des points chauds de maturation accélérée qui se propagent à travers le fruit.',
|
|
205
205
|
},
|
|
206
206
|
{
|
|
207
207
|
type: 'paragraph',
|
|
208
|
-
html: '<strong>
|
|
208
|
+
html: '<strong>Cryothérapie (Congélation) :</strong> Pour les bananes au stade 4 (brune), la congélation est la meilleure option. Éplucher le fruit avant de le congeler empêche l\'humidité d\'être piégée, préservant la qualité des fibres.',
|
|
209
209
|
},
|
|
210
210
|
{
|
|
211
211
|
type: 'title',
|
|
212
|
-
text: '
|
|
212
|
+
text: 'Changements Nutritionnels par Étape',
|
|
213
213
|
level: 2,
|
|
214
214
|
},
|
|
215
215
|
{
|
|
216
216
|
type: 'paragraph',
|
|
217
|
-
html: '
|
|
217
|
+
html: 'À mesure que la banane mûrit, son profil nutritionnel se transforme radicalement, ce qui lui permet d\'être utilisée comme un outil diététique spécifique selon les objectifs du consommateur.',
|
|
218
218
|
},
|
|
219
219
|
{
|
|
220
220
|
type: 'table',
|
|
221
|
-
headers: ['
|
|
221
|
+
headers: ['Stade', 'Amidons Résistants', 'Caractéristiques', 'Bénéfice Principal'],
|
|
222
222
|
rows: [
|
|
223
|
-
['
|
|
224
|
-
['
|
|
225
|
-
['
|
|
226
|
-
['
|
|
223
|
+
['Vert (1-2)', '~80%', 'Très ferme, teneur maximale en amidon', 'Santé intestinale et contrôle glycémique'],
|
|
224
|
+
['Jaune (3)', '~5%', 'Équilibre entre fermeté et douceur', 'Énergie rapide et vitamines B'],
|
|
225
|
+
['Tachetée (4)', 'Minimal', 'Très molle, haute teneur en sucre', 'Potentiel antioxydant maximal'],
|
|
226
|
+
['Brune (5)', 'Pratiquement nul', 'Texture très molle, fermentation avancée', 'Non recommandé pour la consommation'],
|
|
227
227
|
],
|
|
228
228
|
},
|
|
229
229
|
{
|
|
230
230
|
type: 'title',
|
|
231
|
-
text: 'Conclusion
|
|
231
|
+
text: 'Conclusion et Application Pratique',
|
|
232
232
|
level: 2,
|
|
233
233
|
},
|
|
234
234
|
{
|
|
235
235
|
type: 'list',
|
|
236
236
|
items: [
|
|
237
|
-
'<strong>
|
|
238
|
-
'<strong>
|
|
239
|
-
'<strong>
|
|
237
|
+
'<strong>Réduire le gaspillage alimentaire :</strong> Un diagnostic précis du stade de la banane permet d\'identifier le moment de consommation optimal, évitant ainsi la perte de fruits précieux.',
|
|
238
|
+
'<strong>Optimiser les bénéfices nutritionnels :</strong> De l\'amidon résistant des bananes vertes pour la santé intestinale aux antioxydants des bananes tachetées pour un potentiel antioxydant maximal.',
|
|
239
|
+
'<strong>Planifier une consommation stratégique :</strong> Adaptez l\'utilisation des bananes selon vos objectifs de santé : contrôle glycémique, énergie rapide, digestion ou antioxydants.',
|
|
240
240
|
],
|
|
241
241
|
},
|
|
242
242
|
{
|
|
243
243
|
type: 'tip',
|
|
244
|
-
html: '<strong>
|
|
244
|
+
html: '<strong>Alerte de Dégradation :</strong> Des facteurs externes comme une humidité relative supérieure à 85 % ou des températures supérieures à 25 °C peuvent accélérer considérablement la dégradation, faisant passer la banane d\'optimale à immangeable en quelques heures. Ce simulateur vous aide à anticiper ces changements et à planifier de manière stratégique.',
|
|
245
245
|
},
|
|
246
246
|
],
|
|
247
247
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
import type { ToolLocaleContent } from "../../types";
|
|
3
|
-
|
|
4
2
|
interface Props {
|
|
5
|
-
ui:
|
|
3
|
+
ui: Record<string, string>;
|
|
6
4
|
}
|
|
7
5
|
|
|
8
6
|
const { ui } = Astro.props;
|
|
@@ -438,7 +436,7 @@ const { ui } = Astro.props;
|
|
|
438
436
|
}
|
|
439
437
|
}
|
|
440
438
|
|
|
441
|
-
.brine-visualization {
|
|
439
|
+
:global(.brine-visualization) {
|
|
442
440
|
display: flex;
|
|
443
441
|
flex-direction: column;
|
|
444
442
|
align-items: center;
|
|
@@ -448,7 +446,7 @@ const { ui } = Astro.props;
|
|
|
448
446
|
position: relative;
|
|
449
447
|
}
|
|
450
448
|
|
|
451
|
-
.brine-jar {
|
|
449
|
+
:global(.brine-jar) {
|
|
452
450
|
position: relative;
|
|
453
451
|
width: 12rem;
|
|
454
452
|
height: 16rem;
|
|
@@ -460,7 +458,7 @@ const { ui } = Astro.props;
|
|
|
460
458
|
overflow: hidden;
|
|
461
459
|
}
|
|
462
460
|
|
|
463
|
-
.brine-jar-cap {
|
|
461
|
+
:global(.brine-jar-cap) {
|
|
464
462
|
position: absolute;
|
|
465
463
|
top: -0.25rem;
|
|
466
464
|
left: 50%;
|
|
@@ -471,7 +469,7 @@ const { ui } = Astro.props;
|
|
|
471
469
|
border-radius: 0.5rem 0.5rem 0 0;
|
|
472
470
|
}
|
|
473
471
|
|
|
474
|
-
.brine-water {
|
|
472
|
+
:global(.brine-water) {
|
|
475
473
|
position: absolute;
|
|
476
474
|
bottom: 0;
|
|
477
475
|
left: 0;
|
|
@@ -481,7 +479,7 @@ const { ui } = Astro.props;
|
|
|
481
479
|
height: 50%;
|
|
482
480
|
}
|
|
483
481
|
|
|
484
|
-
.brine-water::before {
|
|
482
|
+
:global(.brine-water)::before {
|
|
485
483
|
content: '';
|
|
486
484
|
position: absolute;
|
|
487
485
|
top: 0;
|
|
@@ -511,7 +509,7 @@ const { ui } = Astro.props;
|
|
|
511
509
|
}
|
|
512
510
|
}
|
|
513
511
|
|
|
514
|
-
.brine-product {
|
|
512
|
+
:global(.brine-product) {
|
|
515
513
|
position: absolute;
|
|
516
514
|
bottom: 1rem;
|
|
517
515
|
left: 50%;
|
|
@@ -528,7 +526,7 @@ const { ui } = Astro.props;
|
|
|
528
526
|
height: 40%;
|
|
529
527
|
}
|
|
530
528
|
|
|
531
|
-
.brine-product-label {
|
|
529
|
+
:global(.brine-product-label) {
|
|
532
530
|
font-size: 0.75rem;
|
|
533
531
|
font-weight: 700;
|
|
534
532
|
color: rgba(0, 0, 0, 0.3);
|
|
@@ -536,7 +534,7 @@ const { ui } = Astro.props;
|
|
|
536
534
|
letter-spacing: 0.05em;
|
|
537
535
|
}
|
|
538
536
|
|
|
539
|
-
.brine-particles {
|
|
537
|
+
:global(.brine-particles) {
|
|
540
538
|
position: absolute;
|
|
541
539
|
inset: 0;
|
|
542
540
|
pointer-events: none;
|
|
@@ -700,10 +698,10 @@ const { ui } = Astro.props;
|
|
|
700
698
|
|
|
701
699
|
const els = {
|
|
702
700
|
inputs: {
|
|
703
|
-
product: document.getElementById("weight-product")
|
|
704
|
-
water: document.getElementById("weight-water")
|
|
705
|
-
slider: document.getElementById("salinity-slider")
|
|
706
|
-
sugar: document.getElementById("sugar-toggle")
|
|
701
|
+
product: document.getElementById("weight-product"),
|
|
702
|
+
water: document.getElementById("weight-water"),
|
|
703
|
+
slider: document.getElementById("salinity-slider"),
|
|
704
|
+
sugar: document.getElementById("sugar-toggle"),
|
|
707
705
|
presets: document.querySelectorAll(".preset-btn"),
|
|
708
706
|
},
|
|
709
707
|
displays: {
|
|
@@ -729,7 +727,7 @@ const { ui } = Astro.props;
|
|
|
729
727
|
return { salt, sugar, totalWeight };
|
|
730
728
|
};
|
|
731
729
|
|
|
732
|
-
const updateVisuals = (results
|
|
730
|
+
const updateVisuals = (results) => {
|
|
733
731
|
const maxCap = 2000;
|
|
734
732
|
const waterHeight = Math.min((state.water / maxCap) * 100, 90);
|
|
735
733
|
if (els.vis.water) els.vis.water.style.height = `${Math.max(waterHeight, 10)}%`;
|
|
@@ -755,7 +753,7 @@ const { ui } = Astro.props;
|
|
|
755
753
|
}
|
|
756
754
|
};
|
|
757
755
|
|
|
758
|
-
const createParticle = (className
|
|
756
|
+
const createParticle = (className) => {
|
|
759
757
|
if (!els.vis.particles) return;
|
|
760
758
|
const p = document.createElement("div");
|
|
761
759
|
const size = Math.random() * 4 + 2;
|
|
@@ -802,7 +800,7 @@ const { ui } = Astro.props;
|
|
|
802
800
|
return { label: ui.timePreservesLabel, text: ui.timePreservesDuration };
|
|
803
801
|
};
|
|
804
802
|
|
|
805
|
-
const updateResults = (results
|
|
803
|
+
const updateResults = (results) => {
|
|
806
804
|
if (els.displays.saltResult)
|
|
807
805
|
els.displays.saltResult.textContent = Math.round(results.salt).toString();
|
|
808
806
|
if (els.displays.sugarResult)
|
|
@@ -836,25 +834,25 @@ const { ui } = Astro.props;
|
|
|
836
834
|
|
|
837
835
|
if (els.inputs.product)
|
|
838
836
|
els.inputs.product.addEventListener("input", (e) => {
|
|
839
|
-
state.product = parseFloat(
|
|
837
|
+
state.product = parseFloat(e.target.value) || 0;
|
|
840
838
|
update();
|
|
841
839
|
});
|
|
842
840
|
|
|
843
841
|
if (els.inputs.water)
|
|
844
842
|
els.inputs.water.addEventListener("input", (e) => {
|
|
845
|
-
state.water = parseFloat(
|
|
843
|
+
state.water = parseFloat(e.target.value) || 0;
|
|
846
844
|
update();
|
|
847
845
|
});
|
|
848
846
|
|
|
849
847
|
if (els.inputs.slider)
|
|
850
848
|
els.inputs.slider.addEventListener("input", (e) => {
|
|
851
|
-
state.salinity = parseFloat(
|
|
849
|
+
state.salinity = parseFloat(e.target.value);
|
|
852
850
|
update();
|
|
853
851
|
});
|
|
854
852
|
|
|
855
853
|
if (els.inputs.sugar)
|
|
856
854
|
els.inputs.sugar.addEventListener("change", (e) => {
|
|
857
|
-
state.sugar =
|
|
855
|
+
state.sugar = e.target.checked;
|
|
858
856
|
update();
|
|
859
857
|
});
|
|
860
858
|
|
|
@@ -171,6 +171,7 @@ const { ui } = Astro.props;
|
|
|
171
171
|
--cw-border: hsl(210deg, 14%, 89%);
|
|
172
172
|
--cw-text-main: hsl(210deg, 40%, 14%);
|
|
173
173
|
--cw-text-muted: hsl(210deg, 8%, 40%);
|
|
174
|
+
--cw-text-light: hsl(210deg, 40%, 98%);
|
|
174
175
|
--cw-shadow-xl: 0 20px 25px rgba(0, 0, 0, 0.1);
|
|
175
176
|
--cw-radius: 1.5rem;
|
|
176
177
|
}
|
|
@@ -180,8 +181,9 @@ const { ui } = Astro.props;
|
|
|
180
181
|
--cw-bg-app: hsl(217deg, 39%, 8%);
|
|
181
182
|
--cw-border: hsl(217deg, 33%, 25%);
|
|
182
183
|
--cw-text-main: hsl(210deg, 40%, 98%);
|
|
183
|
-
--cw-text-muted: hsl(210deg, 14%,
|
|
184
|
-
--cw-
|
|
184
|
+
--cw-text-muted: hsl(210deg, 14%, 75%);
|
|
185
|
+
--cw-text-light: hsl(210deg, 40%, 98%);
|
|
186
|
+
--cw-primary-light: hsl(240deg, 100%, 20%);
|
|
185
187
|
}
|
|
186
188
|
</style>
|
|
187
189
|
|
|
@@ -318,7 +320,16 @@ const { ui } = Astro.props;
|
|
|
318
320
|
}
|
|
319
321
|
|
|
320
322
|
:global(.theme-dark) .cw-style-btn.active {
|
|
321
|
-
background: hsl(240deg, 100%,
|
|
323
|
+
background: hsl(240deg, 100%, 35%);
|
|
324
|
+
color: hsl(0deg, 0%, 100%);
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
:global(.theme-dark) .cw-style-btn.active .cw-style-name {
|
|
328
|
+
color: hsl(0deg, 0%, 100%);
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
:global(.theme-dark) .cw-style-btn.active .cw-style-desc {
|
|
332
|
+
color: hsl(0deg, 0%, 100%);
|
|
322
333
|
}
|
|
323
334
|
|
|
324
335
|
.cw-icon {
|
|
@@ -610,15 +621,20 @@ const { ui } = Astro.props;
|
|
|
610
621
|
font-size: 0.6875rem;
|
|
611
622
|
line-height: 1.6;
|
|
612
623
|
color: var(--cw-text-muted);
|
|
613
|
-
font-weight:
|
|
624
|
+
font-weight: 400;
|
|
614
625
|
font-style: italic;
|
|
615
|
-
background: var(--cw-
|
|
616
|
-
padding:
|
|
626
|
+
background: rgba(var(--cw-primary-rgb, 99, 102, 241), 0.03);
|
|
627
|
+
padding: 1.25rem;
|
|
617
628
|
border-radius: 0.75rem;
|
|
618
629
|
border: 1px solid var(--cw-border);
|
|
619
630
|
margin: 0;
|
|
620
631
|
}
|
|
621
632
|
|
|
633
|
+
:global(.theme-dark) .cw-tip-text {
|
|
634
|
+
color: var(--cw-text-main);
|
|
635
|
+
background: rgba(255, 255, 255, 0.03);
|
|
636
|
+
}
|
|
637
|
+
|
|
622
638
|
.cw-hidden {
|
|
623
639
|
display: none;
|
|
624
640
|
}
|