@jjlmoya/utils-cooking 1.9.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/component.astro +590 -2
- 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 +478 -1
- package/src/tool/cookware-guide/i18n/fr.ts +109 -110
- package/src/tool/ingredient-rescaler/component.astro +298 -1
- 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 +301 -2
- package/src/tool/mold-scaler/component.astro +367 -1
- package/src/tool/roux-guide/component.astro +480 -1
- 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/src/tool/banana-ripeness/BananaCare.css +0 -587
- package/src/tool/cookware-guide/CookwareGuide.css +0 -487
- package/src/tool/ingredient-rescaler/IngredientRescaler.css +0 -308
- package/src/tool/meringue-peak/MeringueCalculator.css +0 -298
- package/src/tool/mold-scaler/MoldScaler.css +0 -406
- package/src/tool/roux-guide/RouxGuide.css +0 -483
|
@@ -1,41 +1,41 @@
|
|
|
1
1
|
import type { ToolLocaleContent } from '../../../types';
|
|
2
2
|
|
|
3
|
-
const title = "
|
|
4
|
-
const description = "
|
|
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: '
|
|
8
|
-
answer:
|
|
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: '
|
|
12
|
-
answer: '
|
|
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: '
|
|
16
|
-
answer: '
|
|
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: '
|
|
20
|
-
answer: '
|
|
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: '
|
|
24
|
-
answer: '
|
|
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: '
|
|
30
|
-
text: '
|
|
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: '
|
|
34
|
-
text: '
|
|
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: '
|
|
38
|
-
text: '
|
|
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: '
|
|
77
|
-
description: '
|
|
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: '
|
|
83
|
-
answer:
|
|
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: '
|
|
87
|
-
answer: '
|
|
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: '
|
|
91
|
-
answer: '
|
|
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: '
|
|
95
|
-
answer: '
|
|
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: '
|
|
99
|
-
answer: '
|
|
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 -
|
|
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 (
|
|
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: '
|
|
120
|
-
text: '
|
|
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: '
|
|
124
|
-
text: '
|
|
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: '
|
|
128
|
-
text: '
|
|
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: '
|
|
133
|
+
text: 'Matériaux de Poêle : Science et Pratique',
|
|
135
134
|
level: 2,
|
|
136
135
|
},
|
|
137
136
|
{
|
|
138
137
|
type: 'paragraph',
|
|
139
|
-
html: '
|
|
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: '
|
|
142
|
+
text: 'Fonte : Le Classique',
|
|
144
143
|
level: 3,
|
|
145
144
|
},
|
|
146
145
|
{
|
|
147
146
|
type: 'paragraph',
|
|
148
|
-
html: '<strong>
|
|
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: '
|
|
151
|
+
text: 'Acier Inoxydable : Le Polyvalent',
|
|
153
152
|
level: 3,
|
|
154
153
|
},
|
|
155
154
|
{
|
|
156
155
|
type: 'paragraph',
|
|
157
|
-
html: '<strong>
|
|
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: '
|
|
160
|
+
text: 'Téflon/PTFE : Le Pratique',
|
|
162
161
|
level: 3,
|
|
163
162
|
},
|
|
164
163
|
{
|
|
165
164
|
type: 'paragraph',
|
|
166
|
-
html: '<strong>
|
|
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: '
|
|
171
|
-
material: '
|
|
172
|
-
highHeat: '
|
|
173
|
-
sear: '
|
|
174
|
-
delicate: '
|
|
175
|
-
fry: '
|
|
176
|
-
stew: '
|
|
177
|
-
slowCook: '
|
|
178
|
-
fast: '
|
|
179
|
-
quick: '
|
|
180
|
-
recommendation: '
|
|
181
|
-
characteristics: '
|
|
182
|
-
castIron: '
|
|
183
|
-
stainlessSteel: '
|
|
184
|
-
carbon: '
|
|
185
|
-
copper: '
|
|
186
|
-
nonstick: '
|
|
187
|
-
advantages: '
|
|
188
|
-
disadvantages: '
|
|
189
|
-
maintenance: '
|
|
190
|
-
durability: '
|
|
191
|
-
heatRetention: '
|
|
192
|
-
price: '
|
|
193
|
-
step1: '
|
|
194
|
-
step2: '
|
|
195
|
-
maintenanceLazy: '
|
|
196
|
-
maintenanceLazyDesc: '
|
|
197
|
-
maintenanceCare: '
|
|
198
|
-
maintenanceCareDesc: '
|
|
199
|
-
maintenanceRitual: '
|
|
200
|
-
maintenanceRitualDesc: '
|
|
201
|
-
idealPan: '
|
|
202
|
-
selectOptions: '
|
|
203
|
-
seeRecommendation: '
|
|
204
|
-
pro: '
|
|
205
|
-
con: '
|
|
206
|
-
masterTip: '
|
|
207
|
-
defaultTip: '
|
|
208
|
-
stainlessName: '
|
|
209
|
-
stainlessTag: '
|
|
210
|
-
stainlessPro: '
|
|
211
|
-
stainlessCon: '
|
|
212
|
-
stainlessTip: '
|
|
213
|
-
nonstickName: '
|
|
214
|
-
nonstickTag: 'Maximum
|
|
215
|
-
nonstickPro: '
|
|
216
|
-
nonstickCon: '
|
|
217
|
-
nonstickTip: '
|
|
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: '
|
|
220
|
-
castironPro: '
|
|
221
|
-
castironCon: '
|
|
222
|
-
castironTip: '
|
|
223
|
-
carbonName: '
|
|
224
|
-
carbonTag: '
|
|
225
|
-
carbonPro: '
|
|
226
|
-
carbonCon: '
|
|
227
|
-
carbonTip: '
|
|
228
|
-
enamelName: '
|
|
229
|
-
enamelTag: 'Gourmet
|
|
230
|
-
enamelPro: '
|
|
231
|
-
enamelCon: '
|
|
232
|
-
enamelTip: '
|
|
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
|
};
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
---
|
|
2
2
|
import { Icon } from 'astro-icon/components';
|
|
3
|
-
import './IngredientRescaler.css';
|
|
4
3
|
|
|
5
4
|
interface Props {
|
|
6
5
|
ui: Record<string, string>;
|
|
@@ -105,3 +104,301 @@ ${ui.exampleLine4}`;
|
|
|
105
104
|
init();
|
|
106
105
|
}
|
|
107
106
|
</script>
|
|
107
|
+
|
|
108
|
+
<style is:global>
|
|
109
|
+
:root {
|
|
110
|
+
--ir-primary: hsl(220deg, 90%, 56%);
|
|
111
|
+
--ir-primary-light: hsl(220deg, 90%, 92%);
|
|
112
|
+
--ir-bg-card: hsl(0deg, 0%, 100%);
|
|
113
|
+
--ir-bg-app: hsl(210deg, 20%, 98%);
|
|
114
|
+
--ir-border: hsl(210deg, 20%, 90%);
|
|
115
|
+
--ir-text-main: hsl(210deg, 30%, 20%);
|
|
116
|
+
--ir-text-muted: hsl(210deg, 15%, 50%);
|
|
117
|
+
--ir-shadow-lg: 0 10px 15px -3px rgb(0, 0, 0, 0.1);
|
|
118
|
+
--ir-radius: 1rem;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.theme-dark {
|
|
122
|
+
--ir-bg-card: hsl(220deg, 25%, 12%);
|
|
123
|
+
--ir-bg-app: hsl(220deg, 30%, 7%);
|
|
124
|
+
--ir-border: hsl(220deg, 20%, 20%);
|
|
125
|
+
--ir-text-main: hsl(210deg, 20%, 95%);
|
|
126
|
+
--ir-text-muted: hsl(210deg, 15%, 70%);
|
|
127
|
+
--ir-primary-light: hsl(220deg, 90%, 12%);
|
|
128
|
+
}
|
|
129
|
+
</style>
|
|
130
|
+
|
|
131
|
+
<style>
|
|
132
|
+
.ingredient-rescaler-container {
|
|
133
|
+
max-width: 100%;
|
|
134
|
+
padding: 1.5rem;
|
|
135
|
+
background: var(--ir-bg-card);
|
|
136
|
+
border: 1px solid var(--ir-border);
|
|
137
|
+
border-radius: var(--ir-radius);
|
|
138
|
+
box-shadow: var(--ir-shadow-lg);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
.ir-grid {
|
|
142
|
+
display: grid;
|
|
143
|
+
grid-template-columns: 1fr;
|
|
144
|
+
gap: 2rem;
|
|
145
|
+
margin-bottom: 2rem;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
@media (min-width: 768px) {
|
|
149
|
+
.ir-grid {
|
|
150
|
+
grid-template-columns: 1fr 1fr;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
.ir-section {
|
|
155
|
+
background: var(--ir-bg-app);
|
|
156
|
+
padding: 1.5rem;
|
|
157
|
+
border-radius: 1.25rem;
|
|
158
|
+
border: 1px solid var(--ir-border);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.ir-section-primary {
|
|
162
|
+
background: var(--ir-bg-card);
|
|
163
|
+
border: 2px solid var(--ir-primary);
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
.ir-section-title {
|
|
167
|
+
font-size: 1.125rem;
|
|
168
|
+
font-weight: 700;
|
|
169
|
+
color: var(--ir-text-main);
|
|
170
|
+
margin-bottom: 1rem;
|
|
171
|
+
display: flex;
|
|
172
|
+
align-items: center;
|
|
173
|
+
gap: 0.5rem;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
.ir-section-primary .ir-section-title {
|
|
177
|
+
color: var(--ir-primary);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
.ir-fields {
|
|
181
|
+
display: grid;
|
|
182
|
+
grid-template-columns: 1fr 1fr;
|
|
183
|
+
gap: 1rem;
|
|
184
|
+
margin-bottom: 1.5rem;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
.ir-field {
|
|
188
|
+
display: flex;
|
|
189
|
+
flex-direction: column;
|
|
190
|
+
gap: 0.5rem;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
.ir-label {
|
|
194
|
+
font-size: 0.75rem;
|
|
195
|
+
font-weight: 700;
|
|
196
|
+
color: var(--ir-text-muted);
|
|
197
|
+
text-transform: uppercase;
|
|
198
|
+
letter-spacing: 0.05em;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
.ir-input {
|
|
202
|
+
width: 100%;
|
|
203
|
+
padding: 0.75rem 1rem;
|
|
204
|
+
border-radius: 0.75rem;
|
|
205
|
+
border: 1px solid var(--ir-border);
|
|
206
|
+
background: var(--ir-bg-card);
|
|
207
|
+
color: var(--ir-text-main);
|
|
208
|
+
font-weight: 600;
|
|
209
|
+
font-size: 1.125rem;
|
|
210
|
+
text-align: center;
|
|
211
|
+
transition: all 0.3s ease;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
.ir-input:focus {
|
|
215
|
+
outline: none;
|
|
216
|
+
border-color: var(--ir-primary);
|
|
217
|
+
box-shadow: 0 0 0 3px hsl(220deg, 90%, 56%, 0.1);
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
.ir-factor-display {
|
|
221
|
+
margin-top: 1rem;
|
|
222
|
+
padding: 1rem;
|
|
223
|
+
background: var(--ir-primary-light);
|
|
224
|
+
border-radius: 0.75rem;
|
|
225
|
+
border: 1px solid var(--ir-primary);
|
|
226
|
+
display: flex;
|
|
227
|
+
justify-content: space-between;
|
|
228
|
+
align-items: center;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
.ir-factor-label {
|
|
232
|
+
font-size: 0.875rem;
|
|
233
|
+
font-weight: 600;
|
|
234
|
+
color: var(--ir-text-muted);
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
.ir-factor-value {
|
|
238
|
+
font-size: 2rem;
|
|
239
|
+
font-weight: 800;
|
|
240
|
+
color: var(--ir-primary);
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
.ir-textarea-container {
|
|
244
|
+
display: flex;
|
|
245
|
+
flex-direction: column;
|
|
246
|
+
height: 100%;
|
|
247
|
+
gap: 0.5rem;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
.ir-textarea {
|
|
251
|
+
width: 100%;
|
|
252
|
+
flex: 1;
|
|
253
|
+
min-height: 200px;
|
|
254
|
+
padding: 1rem;
|
|
255
|
+
border-radius: 0.75rem;
|
|
256
|
+
border: 1px solid var(--ir-border);
|
|
257
|
+
background: var(--ir-bg-card);
|
|
258
|
+
color: var(--ir-text-main);
|
|
259
|
+
font-size: 0.875rem;
|
|
260
|
+
resize: none;
|
|
261
|
+
line-height: 1.6;
|
|
262
|
+
transition: all 0.3s ease;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
.ir-textarea:focus {
|
|
266
|
+
outline: none;
|
|
267
|
+
border-color: var(--ir-primary);
|
|
268
|
+
box-shadow: 0 0 0 3px hsl(220deg, 90%, 56%, 0.1);
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
.ir-textarea::placeholder {
|
|
272
|
+
color: hsl(210deg, 15%, 75%);
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
.ir-results-card {
|
|
276
|
+
background: var(--ir-text-main);
|
|
277
|
+
border-radius: 1.25rem;
|
|
278
|
+
border: 1px solid var(--ir-border);
|
|
279
|
+
overflow: hidden;
|
|
280
|
+
box-shadow: var(--ir-shadow-lg);
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
.ir-results-header {
|
|
284
|
+
padding: 1rem 1.5rem;
|
|
285
|
+
background: hsl(210deg, 30%, 15%);
|
|
286
|
+
border-bottom: 1px solid hsl(210deg, 30%, 25%);
|
|
287
|
+
display: flex;
|
|
288
|
+
justify-content: space-between;
|
|
289
|
+
align-items: center;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
:global(.theme-dark) .ir-results-header {
|
|
293
|
+
background: hsl(220deg, 25%, 8%);
|
|
294
|
+
border-bottom-color: hsl(220deg, 25%, 20%);
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
.ir-results-title {
|
|
298
|
+
color: var(--ir-bg-card);
|
|
299
|
+
font-weight: 700;
|
|
300
|
+
display: flex;
|
|
301
|
+
align-items: center;
|
|
302
|
+
gap: 0.5rem;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
:global(.theme-dark) .ir-results-title {
|
|
306
|
+
color: var(--ir-text-main);
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
.ir-copy-btn {
|
|
310
|
+
font-size: 0.75rem;
|
|
311
|
+
background: hsl(210deg, 30%, 35%);
|
|
312
|
+
color: var(--ir-bg-card);
|
|
313
|
+
padding: 0.5rem 1rem;
|
|
314
|
+
border-radius: 0.5rem;
|
|
315
|
+
border: none;
|
|
316
|
+
cursor: pointer;
|
|
317
|
+
transition: all 0.3s ease;
|
|
318
|
+
font-weight: 600;
|
|
319
|
+
display: flex;
|
|
320
|
+
align-items: center;
|
|
321
|
+
gap: 0.5rem;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
:global(.theme-dark) .ir-copy-btn {
|
|
325
|
+
background: hsl(220deg, 25%, 30%);
|
|
326
|
+
color: var(--ir-text-main);
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
.ir-copy-btn:hover {
|
|
330
|
+
background: hsl(210deg, 30%, 45%);
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
:global(.theme-dark) .ir-copy-btn:hover {
|
|
334
|
+
background: hsl(220deg, 25%, 40%);
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
.ir-copy-btn.ir-copied {
|
|
338
|
+
background: hsl(142deg, 72%, 45%);
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
.ir-results-container {
|
|
342
|
+
padding: 2rem;
|
|
343
|
+
font-size: 1rem;
|
|
344
|
+
display: flex;
|
|
345
|
+
flex-direction: column;
|
|
346
|
+
gap: 0.75rem;
|
|
347
|
+
min-height: 200px;
|
|
348
|
+
background: var(--ir-bg-card);
|
|
349
|
+
color: var(--ir-text-main);
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
.ir-empty-state {
|
|
353
|
+
height: 100%;
|
|
354
|
+
display: flex;
|
|
355
|
+
flex-direction: column;
|
|
356
|
+
align-items: center;
|
|
357
|
+
justify-content: center;
|
|
358
|
+
gap: 1rem;
|
|
359
|
+
opacity: 0.5;
|
|
360
|
+
color: var(--ir-text-muted);
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
.ir-empty-icon {
|
|
364
|
+
width: 3rem;
|
|
365
|
+
height: 3rem;
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
:global(.ir-result-row) {
|
|
369
|
+
display: flex;
|
|
370
|
+
justify-content: space-between;
|
|
371
|
+
align-items: center;
|
|
372
|
+
background: var(--ir-bg-app);
|
|
373
|
+
padding: 0.75rem;
|
|
374
|
+
border-radius: 0.5rem;
|
|
375
|
+
border-left: 4px solid transparent;
|
|
376
|
+
transition: all 0.3s ease;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
:global(.ir-result-row):hover {
|
|
380
|
+
background: var(--ir-primary-light);
|
|
381
|
+
border-left-color: var(--ir-primary);
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
.ir-original-amount {
|
|
385
|
+
color: hsl(210deg, 15%, 75%);
|
|
386
|
+
font-size: 0.75rem;
|
|
387
|
+
text-decoration: line-through;
|
|
388
|
+
opacity: 0.75;
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
.ir-new-value {
|
|
392
|
+
color: var(--ir-primary);
|
|
393
|
+
font-weight: 800;
|
|
394
|
+
font-size: 1.125rem;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
:global(.ir-no-amount-row) {
|
|
398
|
+
color: var(--ir-text-muted);
|
|
399
|
+
font-style: italic;
|
|
400
|
+
font-size: 0.875rem;
|
|
401
|
+
padding: 0.5rem;
|
|
402
|
+
background: transparent;
|
|
403
|
+
}
|
|
404
|
+
</style>
|