Skip to content

Commit b90dc56

Browse files
committed
UI : contraste amélioré pour la modale d'installation, corrections texte et traductions avancées
1 parent 4b63334 commit b90dc56

File tree

4 files changed

+125
-61
lines changed

4 files changed

+125
-61
lines changed

index.html

Lines changed: 48 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -123,23 +123,57 @@ <h2 class="panel-heading-xl" data-i18n="updates.title">Mettre à jour AM et tout
123123
</section>
124124
<section id="advancedPanel" class="panel-lite advanced-panel" hidden>
125125
<h2 class="panel-heading-sm centered" data-i18n="advanced.title">Mode avancé</h2>
126-
<p class="placeholder-strong"><span data-i18n="advanced.waiting">Fonctions avancées encore non disponibles dans l’UI — utilisez le terminal : am -h pour la liste complète des commandes.</span></p>
126+
<p class="placeholder-strong"><span data-i18n="advanced.waiting">Fonctions avancées encore indisponibles dans l’UI — utilisez le terminal :</span></p>
127+
<p class="note"><em><span data-i18n-html="advanced.note.appman">Les commandes <span class="note-cmd">am</span> ou <span class="note-cmd">appman</span> dépendent de votre installation ; si vous avez choisi l’installation rapide, utilisez <span class="note-cmd">appman</span>.</span></em></p>
128+
<p class="placeholder-sub" data-i18n="advanced.basicIntro">Quelques commandes utiles :</p>
127129

128-
<ul class="commands condensed" aria-label="Commandes AM">
129-
<li><code>am -h</code><span data-i18n="advanced.cmd.help">aide</span></li>
130-
<li><code>am -l</code><span data-i18n="advanced.cmd.list">lister les apps disponibles</span></li>
131-
<li><code>am -a &lt;PROGRAM&gt;</code><span data-i18n="advanced.cmd.about">informations sur l'app</span></li>
132-
<li><code>am -i &lt;PROGRAM&gt;</code><span data-i18n="advanced.cmd.install">installer (ajouter --user pour local)</span></li>
133-
<li><code>am -q &lt;mot-clé&gt;</code><span data-i18n="advanced.cmd.query">rechercher</span></li>
134-
<li><code>am -u</code><span data-i18n="advanced.cmd.update">mettre à jour (ou am -u &lt;PROGRAM&gt;)</span></li>
135-
<li><code>am -s</code><span data-i18n="advanced.cmd.updatemodules">mettre à jour AM/modules</span></li>
136-
<li><code>am -R &lt;PROGRAM&gt;</code><span data-i18n="advanced.cmd.remove">supprimer</span></li>
137-
<li><code>am -e &lt;git-url&gt; &lt;appname&gt; [keyword]</code><span data-i18n="advanced.cmd.extra">installer depuis GitHub</span></li>
138-
<li><code>am translate</code><span data-i18n="advanced.cmd.translate">gérer traductions</span></li>
130+
<ul class="commands condensed advanced-commands" aria-label="Commandes AM/AppMan">
131+
<li class="cmd-row">
132+
<button type="button" class="copy-cmd" data-copy="am -h">am -h</button>
133+
<button type="button" class="copy-cmd" data-copy="appman -h">appman -h</button>
134+
<span class="cmd-desc" data-i18n="advanced.cmd.help">aide</span>
135+
</li>
136+
<li class="cmd-row">
137+
<button type="button" class="copy-cmd" data-copy="am -l">am -l</button>
138+
<button type="button" class="copy-cmd" data-copy="appman -l">appman -l</button>
139+
<span class="cmd-desc" data-i18n="advanced.cmd.list">lister les apps disponibles</span>
140+
</li>
141+
<li class="cmd-row">
142+
<button type="button" class="copy-cmd" data-copy="am -a &lt;PROGRAM&gt;">am -a &lt;PROGRAM&gt;</button>
143+
<button type="button" class="copy-cmd" data-copy="appman -a &lt;PROGRAM&gt;">appman -a &lt;PROGRAM&gt;</button>
144+
<span class="cmd-desc" data-i18n="advanced.cmd.about">informations sur l'app</span>
145+
</li>
146+
<li class="cmd-row">
147+
<button type="button" class="copy-cmd" data-copy="am -i &lt;PROGRAM&gt;">am -i &lt;PROGRAM&gt;</button>
148+
<button type="button" class="copy-cmd" data-copy="appman -i &lt;PROGRAM&gt;">appman -i &lt;PROGRAM&gt;</button>
149+
<span class="cmd-desc" data-i18n="advanced.cmd.install">installer une app</span>
150+
</li>
151+
<li class="cmd-row">
152+
<button type="button" class="copy-cmd" data-copy="am -q &lt;mot-clé&gt;">am -q &lt;mot-clé&gt;</button>
153+
<button type="button" class="copy-cmd" data-copy="appman -q &lt;mot-clé&gt;">appman -q &lt;mot-clé&gt;</button>
154+
<span class="cmd-desc" data-i18n="advanced.cmd.query">rechercher</span>
155+
</li>
156+
<li class="cmd-row">
157+
<button type="button" class="copy-cmd" data-copy="am -u">am -u</button>
158+
<button type="button" class="copy-cmd" data-copy="appman -u">appman -u</button>
159+
<span class="cmd-desc" data-i18n="advanced.cmd.update">mettre à jour AM et toutes les apps</span>
160+
</li>
161+
<li class="cmd-row">
162+
<button type="button" class="copy-cmd" data-copy="am -R &lt;PROGRAM&gt;">am -R &lt;PROGRAM&gt;</button>
163+
<button type="button" class="copy-cmd" data-copy="appman -R &lt;PROGRAM&gt;">appman -R &lt;PROGRAM&gt;</button>
164+
<span class="cmd-desc" data-i18n="advanced.cmd.remove">supprimer une app</span>
165+
</li>
166+
<li class="cmd-row">
167+
<button type="button" class="copy-cmd" data-copy="am -e &lt;git-url&gt; &lt;appname&gt; [keyword]">am -e &lt;git-url&gt; &lt;appname&gt; [keyword]</button>
168+
<button type="button" class="copy-cmd" data-copy="appman -e &lt;git-url&gt; &lt;appname&gt; [keyword]">appman -e &lt;git-url&gt; &lt;appname&gt; [keyword]</button>
169+
<span class="cmd-desc" data-i18n="advanced.cmd.extra">installer une app personnalisée depuis GitHub</span>
170+
</li>
171+
<li class="cmd-row">
172+
<button type="button" class="copy-cmd" data-copy="am translate">am translate</button>
173+
<span class="cmd-desc" data-i18n="advanced.cmd.translate">gérer traductions</span>
174+
</li>
139175
</ul>
140176

141-
<p class="note"><em><span data-i18n-html="advanced.note.appman">Pour la version sans privilèges, remplacez <code>am</code> par <code>appman</code>.</span></em></p>
142-
143177
<p class="docs-link"><a href="https://github.com/ivan-hc/AM" target="_blank" rel="noopener"><span data-i18n="advanced.docs">Documentation complète & guides →</span> AM (GitHub)</a></p>
144178
</section>
145179

src/renderer/i18n/translations.js

Lines changed: 30 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -108,18 +108,20 @@
108108
'advanced.title': 'Mode avancé',
109109
'advanced.coming': 'À venir',
110110
'advanced.future': 'De nouvelles options seront ajoutées ici prochainement.',
111-
'advanced.waiting': 'Fonctions avancées encore non disponibles dans l’UI — utilisez le terminal : am -h pour la liste complète des commandes.',
112-
'advanced.cmd.help': 'aide',
111+
'advanced.waiting': 'Fonctions avancées encore indisponibles dans l’UI — utilisez le terminal :',
112+
'advanced.basicIntro': 'Quelques commandes utiles :',
113+
'advanced.cmd.help': 'aide (liste et explique toutes les commandes disponibles)',
113114
'advanced.cmd.list': 'lister les apps disponibles',
114115
'advanced.cmd.about': "informations sur l'app",
115-
'advanced.cmd.install': 'installer (ajouter --user pour local)',
116+
'advanced.cmd.install': 'installer une app',
116117
'advanced.cmd.query': 'rechercher',
117-
'advanced.cmd.update': 'mettre à jour (ou am -u {PROGRAM})',
118-
'advanced.cmd.updatemodules': 'mettre à jour AM/modules',
119-
'advanced.cmd.remove': 'supprimer',
120-
'advanced.cmd.extra': 'installer depuis GitHub',
118+
'advanced.cmd.update': 'mettre à jour AM et toutes les apps',
119+
'advanced.cmd.remove': 'supprimer une app',
120+
'advanced.cmd.extra': 'installer une app personnalisée depuis GitHub',
121121
'advanced.cmd.translate': 'gérer traductions',
122-
'advanced.note.appman': 'Pour la version sans privilèges, remplacez <code>am</code> par <code>appman</code>.',
122+
'advanced.note.appman': 'Les commandes <span class="note-cmd">am</span> ou <span class="note-cmd">appman</span> dépendent de votre installation (si vous avez choisi l’installation rapide, utilisez <span class="note-cmd">appman</span>).',
123+
'advanced.copySuccess': 'Commande copiée.',
124+
'advanced.copyError': 'Impossible de copier la commande.',
123125
'advanced.docs': 'Documentation complète & guides →',
124126
'sandbox.title': 'Sandbox',
125127
'sandbox.subtitle': 'Isolez l’application avec SAS/Aisap et contrôlez ses accès fichiers.',
@@ -293,18 +295,20 @@
293295
'advanced.title': 'Advanced mode',
294296
'advanced.coming': 'Coming soon',
295297
'advanced.future': 'New options will be added here soon.',
296-
'advanced.waiting': 'Advanced features are not yet available in the UI — use the terminal: am -h for the full command list.',
297-
'advanced.cmd.help': 'help',
298+
'advanced.waiting': 'Advanced features are not yet available in the UI — use the terminal:',
299+
'advanced.basicIntro': 'Some useful commands:',
300+
'advanced.cmd.help': 'help (lists and explains all available commands)',
298301
'advanced.cmd.list': 'list available apps',
299302
'advanced.cmd.about': 'show app information',
300-
'advanced.cmd.install': 'install (add --user for local)',
303+
'advanced.cmd.install': 'install an app',
301304
'advanced.cmd.query': 'search',
302-
'advanced.cmd.update': 'update (or am -u {PROGRAM})',
303-
'advanced.cmd.updatemodules': 'update AM/modules',
304-
'advanced.cmd.remove': 'remove',
305-
'advanced.cmd.extra': 'install from GitHub',
305+
'advanced.cmd.update': 'update AM and all apps',
306+
'advanced.cmd.remove': 'remove an app',
307+
'advanced.cmd.extra': 'install a custom app from GitHub',
306308
'advanced.cmd.translate': 'manage translations',
307-
'advanced.note.appman': 'For the non-privileged version, replace <code>am</code> with <code>appman</code>.',
309+
'advanced.note.appman': 'The <span class="note-cmd">am</span> or <span class="note-cmd">appman</span> commands depend on your setup (if you chose the quick installation, use <span class="note-cmd">appman</span>).',
310+
'advanced.copySuccess': 'Command copied.',
311+
'advanced.copyError': 'Unable to copy the command.',
308312
'advanced.docs': 'Complete documentation & guides →',
309313
'sandbox.title': 'Sandbox',
310314
'sandbox.subtitle': 'Keep the app isolated with SAS/Aisap and decide which folders remain visible.',
@@ -478,18 +482,20 @@
478482
'advanced.title': 'Modalità avanzata',
479483
'advanced.coming': 'In arrivo',
480484
'advanced.future': 'Nuove opzioni saranno aggiunte presto.',
481-
'advanced.waiting': "Le funzionalités avanzate non sono ancora disponibili nell'interfaccia — usa il terminale: am -h per la lista completa dei comandi.",
482-
'advanced.cmd.help': 'aiuto',
485+
'advanced.waiting': 'Funzionalità avanzate non ancora disponibili nell’UI — usa il terminale:',
486+
'advanced.basicIntro': 'Alcuni comandi utili:',
487+
'advanced.cmd.help': 'aiuto (elenca e spiega tutti i comandi disponibili)',
483488
'advanced.cmd.list': 'elenca le app disponibili',
484489
'advanced.cmd.about': "informazioni sull'app",
485-
'advanced.cmd.install': 'installa (aggiungi --user per locale)',
490+
'advanced.cmd.install': 'installare un’app',
486491
'advanced.cmd.query': 'cerca',
487-
'advanced.cmd.update': 'aggiorna (o am -u {PROGRAM})',
488-
'advanced.cmd.updatemodules': 'aggiorna AM/modules',
489-
'advanced.cmd.remove': 'rimuovi',
490-
'advanced.cmd.extra': 'installa da GitHub',
492+
'advanced.cmd.update': 'aggiornare AM e tutte le app',
493+
'advanced.cmd.remove': 'rimuovere un’app',
494+
'advanced.cmd.extra': 'installare un’app personalizzata da GitHub',
491495
'advanced.cmd.translate': 'gestisci traduzioni',
492-
'advanced.note.appman': 'Per la versione senza privilegi, sostituisci <code>am</code> con <code>appman</code>.',
496+
'advanced.note.appman': 'I comandi <span class="note-cmd">am</span> o <span class="note-cmd">appman</span> dipendono dalla tua installazione (se hai scelto l’installazione rapida, usa <span class="note-cmd">appman</span>).',
497+
'advanced.copySuccess': 'Comando copiato.',
498+
'advanced.copyError': 'Impossibile copiare il comando.',
493499
'advanced.docs': 'Documentazione completa & guide →',
494500
'sandbox.title': 'Sandbox',
495501
'sandbox.subtitle': 'Isola l’app con SAS/Aisap e scegli quali cartelle restano accessibili.',

src/renderer/renderer.js

Lines changed: 35 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1681,6 +1681,23 @@ async function openPmDocs() {
16811681
}
16821682
}
16831683

1684+
async function copyTextToClipboard(text) {
1685+
if (!text) throw new Error('nothing to copy');
1686+
if (navigator?.clipboard?.writeText) {
1687+
await navigator.clipboard.writeText(text);
1688+
return;
1689+
}
1690+
const textarea = document.createElement('textarea');
1691+
textarea.value = text;
1692+
textarea.style.position = 'fixed';
1693+
textarea.style.opacity = '0';
1694+
document.body.appendChild(textarea);
1695+
textarea.focus();
1696+
textarea.select();
1697+
document.execCommand('copy');
1698+
textarea.remove();
1699+
}
1700+
16841701
async function runAutoInstallAppMan() {
16851702
if (pmAutoInstallRunning) return;
16861703
const api = window.electronAPI;
@@ -1713,19 +1730,7 @@ async function runAutoInstallAppMan() {
17131730
async function handleManualInstallClick() {
17141731
const command = AM_INSTALLER_COMMAND;
17151732
try {
1716-
if (navigator?.clipboard?.writeText) {
1717-
await navigator.clipboard.writeText(command);
1718-
} else {
1719-
const textarea = document.createElement('textarea');
1720-
textarea.value = command;
1721-
textarea.style.position = 'fixed';
1722-
textarea.style.opacity = '0';
1723-
document.body.appendChild(textarea);
1724-
textarea.focus();
1725-
textarea.select();
1726-
document.execCommand('copy');
1727-
textarea.remove();
1728-
}
1733+
await copyTextToClipboard(command);
17291734
showToast(t('missingPm.manual.copied'));
17301735
setPmPopupStatus('missingPm.manual.copied');
17311736
} catch (err) {
@@ -2028,6 +2033,23 @@ if (!localStorage.getItem('defaultMode')) {
20282033
localStorage.setItem('defaultMode', state.viewMode || 'grid');
20292034
}
20302035

2036+
// Copier une commande (am/appman) au clic
2037+
document.addEventListener('click', async (ev) => {
2038+
const btn = ev.target.closest && ev.target.closest('.copy-cmd');
2039+
if (!btn) return;
2040+
const cmd = btn.getAttribute('data-copy');
2041+
if (!cmd) return;
2042+
ev.preventDefault();
2043+
ev.stopPropagation();
2044+
try {
2045+
await copyTextToClipboard(cmd);
2046+
showToast(t('advanced.copySuccess'));
2047+
} catch (err) {
2048+
console.error('copy command failed', err);
2049+
showToast(t('advanced.copyError') || 'Copy failed');
2050+
}
2051+
}, { capture: true });
2052+
20312053
// Liens externes
20322054
document.addEventListener('click', (ev) => {
20332055
const a = ev.target.closest && ev.target.closest('a');

style.css

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -979,8 +979,16 @@ body.details-mode #appDetails { opacity:1; transform:translateY(0); }
979979
.updates-terminal { background:rgba(9,12,18,0.85); border-color:#101a27; box-shadow:0 18px 40px rgba(0,0,0,.55); }
980980
.updates-terminal-body { border-color:#101a27; background:#03080f; }
981981
}
982-
.advanced-panel .placeholder-strong { margin:0 0 6px; font-size:13px; font-weight:600; opacity:.8; }
982+
.advanced-panel .placeholder-strong { margin:0 0 8px; font-size:15px; font-weight:700; opacity:.9; }
983983
.advanced-panel .placeholder-sub { margin:0; font-size:12px; opacity:.7; }
984+
.advanced-panel .advanced-commands { list-style:none; padding:0; margin:12px 0 10px; display:flex; flex-direction:column; gap:8px; }
985+
.advanced-panel .cmd-row { display:flex; align-items:center; gap:10px; flex-wrap:wrap; font-size:13px; }
986+
.advanced-panel .copy-cmd { border:1px solid var(--border); background:var(--card); color:var(--fg); font-family:'JetBrains Mono','SFMono-Regular',Menlo,Consolas,monospace; padding:4px 8px; border-radius:8px; cursor:pointer; transition:background .15s ease, border-color .15s ease, transform .1s ease; }
987+
.advanced-panel .copy-cmd:hover { background:var(--border); }
988+
.advanced-panel .copy-cmd:active { transform:translateY(1px); }
989+
.advanced-panel .copy-cmd:focus-visible { outline:2px solid var(--primary); outline-offset:2px; }
990+
.advanced-panel .cmd-desc { color:var(--muted); font-size:12px; }
991+
.advanced-panel .note-cmd { font-style: normal; font-weight: 700; color: var(--fg); }
984992
/* Centrage léger uniquement pour le panneau mises à jour (onglet updates) */
985993
#updatesPanel { text-align:center; }
986994
#updatesPanel h2, #updatesPanel p { text-align:center; }
@@ -1038,8 +1046,8 @@ body.pm-popup-open { overflow: hidden; }
10381046
width:min(720px,94vw);
10391047
border-radius:32px;
10401048
padding:36px;
1041-
background:linear-gradient(165deg,var(--card),rgba(255,255,255,0.85));
1042-
border:1px solid rgba(255,255,255,0.08);
1049+
background:var(--bg);
1050+
border:1px solid var(--border);
10431051
box-shadow:0 40px 120px rgba(7,10,25,.55);
10441052
color:var(--fg);
10451053
}
@@ -1126,16 +1134,10 @@ body.pm-popup-open { overflow: hidden; }
11261134
box-shadow:0 12px 40px rgba(6,10,25,.25);
11271135
min-height:240px;
11281136
background:var(--card);
1129-
border:1px solid var(--border);
1137+
border:1.5px solid var(--border);
11301138
color:var(--fg);
11311139
}
11321140

1133-
.pm-popup-option--auto,
1134-
.pm-popup-option--manual {
1135-
background:inherit;
1136-
border:inherit;
1137-
}
1138-
11391141
.pm-popup-option h3 {
11401142
margin:0 0 8px;
11411143
font-size:1.15rem;

0 commit comments

Comments
 (0)