Skip to content

Commit 852ff1d

Browse files
committed
Add tooltips for input field help icons
1 parent 7de6fbc commit 852ff1d

File tree

7 files changed

+178
-6
lines changed

7 files changed

+178
-6
lines changed

_locales/en/messages.json

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,38 @@
140140
"errorTopkTopp": {
141141
"message": "topK and topP are mutually exclusive.",
142142
"description": "Error message when topK and topP are not between 0 and 1."
143+
},
144+
"apiKeyTip": {
145+
"message": "Your Perplexity API key can be found in your account settings.",
146+
"description": "Tip for the API key input field."
147+
},
148+
"modelTip": {
149+
"message": "The model to use for generating the abstract.",
150+
"description": "Tip for the model input field."
151+
},
152+
"temperatureTip": {
153+
"message": "The temperature to use for generating the abstract. Higher values will result in more creative text, while lower values will result in more conservative text.",
154+
"description": "Tip for the temperature input field."
155+
},
156+
"frequencyPenaltyTip": {
157+
"message": "The frequency penalty to use for generating the abstract. Higher values will result in more diverse text, while lower values will result in more repetitive text.",
158+
"description": "Tip for the frequency penalty input field."
159+
},
160+
"presencePenaltyTip": {
161+
"message": "The presence penalty to use for generating the abstract. Higher values will result in more focused text, while lower values will result in more general text.",
162+
"description": "Tip for the presence penalty input field."
163+
},
164+
"topkTip": {
165+
"message": "The top-k value to use for generating the abstract. Higher values will result in more focused text, while lower values will result in more general text.",
166+
"description": "Tip for the top-k input field."
167+
},
168+
"toppTip": {
169+
"message": "The top-p value to use for generating the abstract. Higher values will result in more focused text, while lower values will result in more general text.",
170+
"description": "Tip for the top-p input field."
171+
},
172+
"maxTokensTip": {
173+
"message": "The maximum number of tokens to generate for the abstract. Higher values will result in longer text, while lower values will result in shorter text.",
174+
"description": "Tip for the max tokens input field."
143175
}
144176

145177
}

_locales/es/messages.json

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,5 +140,38 @@
140140
"errorTopkTopp": {
141141
"message": "topK y topP son mutuamente exclusivos.",
142142
"description": "Mensaje de error para topK y topP."
143+
},
144+
"apiKeyTip": {
145+
"message": "Tu clave de Perplexity API se puede encontrar en la página de ajustes de tu cuenta de Perplexity.",
146+
"description": "Consejo para obtener una clave API de Perplexity."
147+
},
148+
"modelTip": {
149+
"message": "El modelo de Perplexity AI que se utilizará para generar el resumen.",
150+
"description": "Consejo para seleccionar un modelo."
151+
},
152+
"temperatureTip": {
153+
"message": "La temperatura de muestreo para la generación de texto. Un valor más alto da como resultado texto más diverso.",
154+
"description": "Consejo para seleccionar una temperatura."
155+
},
156+
"frequencyPenaltyTip": {
157+
"message": "Un valor más alto penaliza las palabras clave que aparecen con demasiada frecuencia.",
158+
"description": "Consejo para seleccionar una penalización de frecuencia."
159+
},
160+
"presencePenaltyTip": {
161+
"message": "Un valor más alto penaliza las palabras clave que no aparecen en el texto.",
162+
"description": "Consejo para seleccionar una penalización de presencia."
163+
},
164+
"topkTip": {
165+
"message": "Un valor más alto da como resultado una mayor diversidad de palabras clave.",
166+
"description": "Consejo para seleccionar un valor topK."
167+
},
168+
"toppTip": {
169+
"message": "Un valor más alto da como resultado una mayor diversidad de palabras clave.",
170+
"description": "Consejo para seleccionar un valor topP."
171+
},
172+
"maxTokensTip": {
173+
"message": "El número máximo de tokens en el resumen.",
174+
"description": "Consejo para seleccionar el número máximo de tokens."
143175
}
176+
144177
}

_locales/fr/messages.json

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,5 +140,39 @@
140140
"errorTopkTopp": {
141141
"message": "top_k et top_p ne peuvent pas être définis en même temps.",
142142
"description": "Message d'erreur pour top_k et top_p."
143+
},
144+
"apiKeyTip": {
145+
"message": "Vous pouvez obtenir tu clé API Perplexity sur ton compte Perplexity AI.",
146+
"description": "Conseil pour obtenir une clé API."
147+
},
148+
"modelTip": {
149+
"message": "Le modèle à utiliser pour générer le résumé.",
150+
"description": "Conseil pour le modèle."
151+
},
152+
"temperatureTip": {
153+
"message": "La température à utiliser pour générer le résumé.",
154+
"description": "Conseil pour la température."
155+
},
156+
"frequencyPenaltyTip": {
157+
"message": "La fréquence des mots-clés à utiliser pour générer le résumé.",
158+
"description": "Conseil pour la fréquence des mots-clés."
159+
},
160+
"presencePenaltyTip": {
161+
"message": "La présence des mots-clés à utiliser pour générer le résumé.",
162+
"description": "Conseil pour la présence des mots-clés."
163+
},
164+
"topkTip": {
165+
"message": "Le nombre de mots-clés à utiliser pour générer le résumé.",
166+
"description": "Conseil pour le nombre de mots-clés."
167+
},
168+
"toppTip": {
169+
"message": "La probabilité cumulative des mots-clés à utiliser pour générer le résumé.",
170+
"description": "Conseil pour la probabilité cumulative des mots-clés."
171+
},
172+
"maxTokensTip": {
173+
"message": "Le nombre maximum de jetons à générer pour le résumé.",
174+
"description": "Conseil pour le nombre maximum de jetons."
143175
}
176+
177+
144178
}

manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"manifest_version": 3,
33
"name": "__MSG_extensionName__",
4-
"version": "0.5.1",
4+
"version": "0.5.2",
55
"description": "__MSG_extensionDescription__",
66
"default_locale": "en",
77
"homepage_url": "https://github.com/imigueldiaz/firefox-quick-abstract",

popup/extension.html

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,9 @@
5353
<fieldset role="group" aria-labelledby="api-settings">
5454
<legend id="api-settings"></legend>
5555
<label for="apiKey" id="apiKeyLabel"></label>
56-
<input type="password" id="apiKey" name="apiKey" value="pplx-xxxxxxxxxxx" aria-required="true"><br>
56+
57+
<input type="password" id="apiKey" name="apiKey" value="pplx-xxxxxxxxxxx" aria-required="true">
58+
<span class="help-icon" data-tooltip-i18n="apiKeyTip">?</span><br>
5759
<label for="model" id="modelLabel"></label>
5860
<select id="model" name="model" aria-required="true">
5961
<optgroup label="Perplexity Models">
@@ -67,36 +69,43 @@
6769
<option value="mistral-7b-instruct">mistral-7b-instruct (7B)</option>
6870
<option value="mixtral-8x7b-instruct">mixtral-8x7b-instruct (8x7B)</option>
6971
</optgroup>
70-
</select>
72+
</select><span class="help-icon" data-tooltip-i18n="modelTip">?</span>
7173

7274
<div class="input-row">
7375
<div class="input-group">
7476
<label for="temperature" id="tempLabel"></label>
7577
<input type="number" id="temperature" name="temperature" value="1" step="0.01" min="0" max="2" aria-required="true">
78+
<span class="help-icon" data-tooltip-i18n="temperatureTip">?</span>
79+
7680
</div>
7781
<div class="input-group">
7882
<label for="maxTokens" id="maxTokensLabel">Max Tokens</label>
7983
<input type="number" id="maxTokens" name="maxTokens" value="" step="1" min="1" max="2048" aria-required="true">
84+
<span class="help-icon" data-tooltip-i18n="maxTokensTip">?</span>
8085
</div>
8186
</div>
8287
<div class="input-row">
8388
<div class="input-group">
8489
<label for="topP" id="topPLabel">Top-p</label>
8590
<input type="number" id="topP" name="topP" value="" step="0.01" min="0" max="1" aria-required="true">
91+
<span class="help-icon" data-tooltip-i18n="toppTip">?</span>
8692
</div>
8793
<div class="input-group">
8894
<label for="topK" id="topKLabel">Top-k</label>
8995
<input type="number" id="topK" name="topK" value="" step="1" min="1" max="2048" aria-required="true">
96+
<span class="help-icon" data-tooltip-i18n="topkTip">?</span>
9097
</div>
9198
</div>
9299
<div class="input-row">
93100
<div class="input-group">
94101
<label for="frequencyPenalty" id="frequencyPenaltyLabel">Frequency penalty</label>
95102
<input type="number" id="frequencyPenalty" name="frequencyPenalty" value="" step="0.1" min="-2" max="2" aria-required="true">
103+
<span class="help-icon" data-tooltip-i18n="frequencyPenaltyTip">?</span>
96104
</div>
97105
<div class="input-group">
98106
<label for="presencePenalty" id="presencePenaltyLabel">Presence penalty</label>
99107
<input type="number" id="presencePenalty" name="presencePenalty" value="" step="0.1" min="0" max="2" aria-required="true">
108+
<span class="help-icon" data-tooltip-i18n="presencePenaltyTip">?</span>
100109
</div>
101110
</div>
102111
<div class="button-row">

popup/popup.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,7 @@ async function copyToClipboard(text) {
386386
}
387387
}
388388

389-
389+
// Load the initial text in the popup
390390
function loadInitialText() {
391391
let initialText = browser.i18n.getMessage('initialText');
392392

@@ -411,6 +411,14 @@ document.getElementById('resume').addEventListener('click', triggerAPI);
411411
// Add event listeners to the tabs to load the initial text.
412412
document.querySelector("#popupTab").addEventListener("click", loadInitialText);
413413

414+
// Loop the help icons and set the tooltip text
415+
document.querySelectorAll('.help-icon').forEach(icon => {
416+
const tooltipKey = icon.getAttribute('data-tooltip-i18n');
417+
const tooltipMessage = browser.i18n.getMessage(tooltipKey);
418+
icon.setAttribute('data-tooltip', tooltipMessage);
419+
});
420+
421+
414422
// Add an event listener to the popup's elements.
415423
document.addEventListener("DOMContentLoaded", function() {
416424
// Set the focus on the resume button

style/style.css

Lines changed: 58 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ body {
99
height: 620px;
1010
display: flex;
1111
flex-direction: column;
12-
overflow-y: hidden;
12+
overflow: hidden;
1313
}
1414
body#popup {
1515
padding: 5px;
@@ -116,7 +116,7 @@ button.ok:hover {
116116
#options-form input[type="text"],
117117
#options-form input[type="number"],
118118
#options-form input[type="password"] {
119-
width: 90%;
119+
width: 80%;
120120
padding: 8px;
121121
margin-bottom: 8px;
122122
background-color: #FFFFFF;
@@ -127,6 +127,10 @@ button.ok:hover {
127127
font-size: 13px;
128128
}
129129

130+
#apiKey {
131+
width: 90%!important;
132+
}
133+
130134
#options-form select {
131135
width: 100%;
132136
padding: 8px;
@@ -345,6 +349,50 @@ img#logo {
345349
}
346350
}
347351

352+
.help-icon {
353+
display: inline-block;
354+
width: 16px;
355+
height: 16px;
356+
line-height: 16px;
357+
text-align: center;
358+
border-radius: 50%;
359+
background-color: #007AFF;
360+
color: #FFFFFF;
361+
font-size: 12px;
362+
font-weight: bold;
363+
margin-left: 2px;
364+
cursor: help;
365+
position: relative;
366+
}
367+
368+
.help-icon::before {
369+
content: attr(data-tooltip);
370+
position: absolute;
371+
bottom: 125%;
372+
left: 50%;
373+
transform: translateX(-95%);
374+
padding: 8px;
375+
background-color: #2C2C2E;
376+
color: #F2F2F7;
377+
border-radius: 8px;
378+
font-size: 12px;
379+
white-space: pre-wrap;
380+
opacity: 0;
381+
visibility: hidden;
382+
transition: opacity 0.8s ease-in-out;
383+
z-index: 1;
384+
width: 200px;
385+
border : 1px solid #4a4a4a;
386+
box-shadow: 0 0 10px 0 #4a4a4a
387+
388+
389+
}
390+
391+
.help-icon:hover::before {
392+
opacity: 1;
393+
visibility: visible;
394+
}
395+
348396
/* Dark Mode */
349397

350398
@media (prefers-color-scheme: dark) {
@@ -446,5 +494,13 @@ img#logo {
446494
background-color: #2c2c2e;
447495
border-bottom: 1px solid #007AFF55;
448496

497+
}
498+
.help-icon {
499+
background-color: #4A90E2;
500+
}
501+
502+
.help-icon::before {
503+
background-color: #1C1C1E;
504+
color: #F2F2F7;
449505
}
450506
}

0 commit comments

Comments
 (0)