maj index.html, ajout freecad
This commit is contained in:
parent
9f875eddb6
commit
f6b019b870
603
app/index.html
603
app/index.html
@ -4,138 +4,547 @@
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>GN dépôt</title>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;700&family=Sora:wght@300;400;600;700&display=swap" rel="stylesheet">
|
||||
<style>
|
||||
:root {
|
||||
--bg: #0d1117;
|
||||
--surface: #161b22;
|
||||
--surface2: #21262d;
|
||||
--border: #30363d;
|
||||
--accent: #58a6ff;
|
||||
--accent2: #3fb950;
|
||||
--accent3: #f78166;
|
||||
--text: #e6edf3;
|
||||
--text-muted: #8b949e;
|
||||
--radius: 12px;
|
||||
}
|
||||
|
||||
* { box-sizing: border-box; margin: 0; padding: 0; }
|
||||
|
||||
body {
|
||||
font-family: sans-serif;
|
||||
background-color: #f9f9f9;
|
||||
color: #333;
|
||||
margin: 2em;
|
||||
font-family: 'Sora', sans-serif;
|
||||
background-color: var(--bg);
|
||||
color: var(--text);
|
||||
line-height: 1.7;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
body::before {
|
||||
content: '';
|
||||
position: fixed;
|
||||
inset: 0;
|
||||
background-image:
|
||||
linear-gradient(rgba(88,166,255,0.03) 1px, transparent 1px),
|
||||
linear-gradient(90deg, rgba(88,166,255,0.03) 1px, transparent 1px);
|
||||
background-size: 40px 40px;
|
||||
pointer-events: none;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
.wrapper {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
max-width: 860px;
|
||||
margin: 0 auto;
|
||||
padding: 3em 1.5em 4em;
|
||||
}
|
||||
|
||||
header {
|
||||
text-align: center;
|
||||
margin-bottom: 3em;
|
||||
animation: fadeDown 0.6s ease both;
|
||||
}
|
||||
|
||||
header img.logo {
|
||||
max-width: 160px;
|
||||
margin-bottom: 1.5em;
|
||||
filter: drop-shadow(0 0 20px rgba(88,166,255,0.25));
|
||||
}
|
||||
|
||||
header h1 {
|
||||
font-size: 1.9em;
|
||||
font-weight: 700;
|
||||
color: var(--text);
|
||||
letter-spacing: -0.02em;
|
||||
}
|
||||
|
||||
header h1 span { color: var(--accent); }
|
||||
|
||||
header p {
|
||||
color: var(--text-muted);
|
||||
margin-top: 0.6em;
|
||||
font-size: 1em;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
section {
|
||||
margin-bottom: 2.5em;
|
||||
animation: fadeUp 0.5s ease both;
|
||||
}
|
||||
|
||||
section:nth-child(2) { animation-delay: 0.1s; }
|
||||
section:nth-child(3) { animation-delay: 0.2s; }
|
||||
section:nth-child(4) { animation-delay: 0.3s; }
|
||||
|
||||
.section-title {
|
||||
font-size: 0.75em;
|
||||
font-weight: 600;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.12em;
|
||||
color: var(--accent);
|
||||
margin-bottom: 1em;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.6em;
|
||||
}
|
||||
|
||||
.section-title::after {
|
||||
content: '';
|
||||
flex: 1;
|
||||
height: 1px;
|
||||
background: var(--border);
|
||||
}
|
||||
|
||||
/* --- Bloc installation principale --- */
|
||||
.install-card {
|
||||
background: var(--surface);
|
||||
border: 1px solid var(--border);
|
||||
border-radius: var(--radius);
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.install-card-header {
|
||||
padding: 1.2em 1.5em;
|
||||
border-bottom: 1px solid var(--border);
|
||||
}
|
||||
|
||||
.install-card-header p {
|
||||
color: var(--text-muted);
|
||||
font-size: 0.92em;
|
||||
margin-bottom: 0.4em;
|
||||
}
|
||||
|
||||
.install-card-header p:last-child { margin-bottom: 0; }
|
||||
|
||||
.badge-list {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 0.5em;
|
||||
margin-top: 0.8em;
|
||||
}
|
||||
|
||||
.badge {
|
||||
font-size: 0.75em;
|
||||
font-family: 'JetBrains Mono', monospace;
|
||||
background: var(--surface2);
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 20px;
|
||||
padding: 0.2em 0.7em;
|
||||
color: var(--text-muted);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.4em;
|
||||
}
|
||||
|
||||
.badge .dot {
|
||||
width: 6px;
|
||||
height: 6px;
|
||||
border-radius: 50%;
|
||||
background: var(--accent2);
|
||||
}
|
||||
|
||||
/* Code blocks */
|
||||
.code-block {
|
||||
position: relative;
|
||||
background: #0d1117;
|
||||
}
|
||||
|
||||
pre {
|
||||
font-family: 'JetBrains Mono', monospace;
|
||||
font-size: 0.85em;
|
||||
padding: 1.2em 1.4em;
|
||||
padding-right: 5em;
|
||||
overflow-x: auto;
|
||||
color: #e6edf3;
|
||||
line-height: 1.6;
|
||||
}
|
||||
.container {
|
||||
max-width: 800px;
|
||||
margin: auto;
|
||||
background: #fff;
|
||||
padding: 2em;
|
||||
box-shadow: 0 0 10px rgba(0,0,0,0.1);
|
||||
border-radius: 12px;
|
||||
|
||||
.copy-btn {
|
||||
position: absolute;
|
||||
top: 0.7em;
|
||||
right: 0.7em;
|
||||
background: var(--surface2);
|
||||
border: 1px solid var(--border);
|
||||
color: var(--text-muted);
|
||||
border-radius: 6px;
|
||||
padding: 0.3em 0.75em;
|
||||
font-size: 0.75em;
|
||||
font-family: 'Sora', sans-serif;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
white-space: nowrap;
|
||||
}
|
||||
img.logo {
|
||||
max-width: 200px;
|
||||
display: block;
|
||||
margin: 0 auto 2em;
|
||||
|
||||
.copy-btn:hover { background: var(--accent); color: var(--bg); border-color: var(--accent); }
|
||||
.copy-btn.copied { background: var(--accent2); color: var(--bg); border-color: var(--accent2); }
|
||||
|
||||
/* Détails manuels (accordéon) */
|
||||
.manual-toggle {
|
||||
width: 100%;
|
||||
background: var(--surface2);
|
||||
border: none;
|
||||
border-top: 1px solid var(--border);
|
||||
color: var(--text-muted);
|
||||
font-family: 'Sora', sans-serif;
|
||||
font-size: 0.82em;
|
||||
padding: 0.8em 1.4em;
|
||||
text-align: left;
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.5em;
|
||||
transition: color 0.2s;
|
||||
}
|
||||
pre {
|
||||
background: #f4f4f4;
|
||||
padding: 1em;
|
||||
border-left: 5px solid #007acc;
|
||||
overflow-x: auto;
|
||||
|
||||
.manual-toggle:hover { color: var(--text); }
|
||||
|
||||
.manual-toggle .arrow {
|
||||
margin-left: auto;
|
||||
transition: transform 0.25s;
|
||||
}
|
||||
h1, h2 {
|
||||
color: #007acc;
|
||||
text-align: center;
|
||||
|
||||
.manual-toggle.open .arrow { transform: rotate(180deg); }
|
||||
|
||||
.manual-steps {
|
||||
display: none;
|
||||
border-top: 1px solid var(--border);
|
||||
}
|
||||
|
||||
.manual-steps.open { display: block; }
|
||||
|
||||
.step {
|
||||
border-bottom: 1px solid var(--border);
|
||||
}
|
||||
|
||||
.step:last-child { border-bottom: none; }
|
||||
|
||||
.step-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.8em;
|
||||
padding: 0.7em 1.2em;
|
||||
background: var(--surface2);
|
||||
border-bottom: 1px solid var(--border);
|
||||
}
|
||||
|
||||
.step-num {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
border-radius: 50%;
|
||||
background: var(--accent);
|
||||
color: var(--bg);
|
||||
font-size: 0.72em;
|
||||
font-weight: 700;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.step-label {
|
||||
font-size: 0.83em;
|
||||
font-weight: 600;
|
||||
color: var(--text-muted);
|
||||
}
|
||||
|
||||
/* Inline code */
|
||||
code {
|
||||
font-family: 'JetBrains Mono', monospace;
|
||||
background: var(--surface2);
|
||||
padding: 0.15em 0.45em;
|
||||
border-radius: 5px;
|
||||
font-size: 0.87em;
|
||||
color: var(--accent);
|
||||
border: 1px solid var(--border);
|
||||
}
|
||||
|
||||
pre code {
|
||||
background: none;
|
||||
padding: 0;
|
||||
border: none;
|
||||
font-size: inherit;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
/* Syntax */
|
||||
.kw { color: #ff7b72; }
|
||||
.str { color: #a5d6ff; }
|
||||
.cmt { color: #8b949e; font-style: italic; }
|
||||
.cmd { color: #3fb950; }
|
||||
.url { color: #79c0ff; }
|
||||
|
||||
/* Packages */
|
||||
.packages {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
|
||||
gap: 1.5em;
|
||||
margin-top: 1.5em;
|
||||
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
|
||||
gap: 1em;
|
||||
}
|
||||
|
||||
.package {
|
||||
border: 1px solid #e0e0e0;
|
||||
border-radius: 12px;
|
||||
padding: 1.2em;
|
||||
background: #fafafa;
|
||||
transition: transform 0.2s, box-shadow 0.2s;
|
||||
background: var(--surface);
|
||||
border: 1px solid var(--border);
|
||||
border-radius: var(--radius);
|
||||
padding: 1.3em;
|
||||
transition: transform 0.2s, border-color 0.2s, box-shadow 0.2s;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.4em;
|
||||
}
|
||||
|
||||
.package:hover {
|
||||
transform: translateY(-4px);
|
||||
box-shadow: 0 8px 20px rgba(0,0,0,0.08);
|
||||
transform: translateY(-3px);
|
||||
border-color: var(--accent);
|
||||
box-shadow: 0 8px 24px rgba(88,166,255,0.1);
|
||||
}
|
||||
|
||||
.package-icon {
|
||||
font-size: 2.5em;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
.package-icon { font-size: 2em; }
|
||||
.package h3 { font-size: 1em; font-weight: 600; color: var(--text); }
|
||||
.package p { font-size: 0.88em; color: var(--text-muted); flex: 1; }
|
||||
|
||||
.package h3 {
|
||||
margin: 0.2em 0;
|
||||
color: #007acc;
|
||||
}
|
||||
|
||||
.package p {
|
||||
font-size: 0.95em;
|
||||
margin: 0.3em 0 0.8em;
|
||||
}
|
||||
|
||||
.package code {
|
||||
background: #eee;
|
||||
padding: 0.2em 0.4em;
|
||||
.package-install {
|
||||
font-family: 'JetBrains Mono', monospace;
|
||||
font-size: 0.8em;
|
||||
background: var(--surface2);
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 6px;
|
||||
padding: 0.4em 0.7em;
|
||||
color: var(--accent2);
|
||||
display: block;
|
||||
margin-top: 0.4em;
|
||||
}
|
||||
|
||||
.package a {
|
||||
font-size: 0.82em;
|
||||
color: var(--accent);
|
||||
text-decoration: none;
|
||||
margin-top: 0.3em;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.package a:hover { text-decoration: underline; }
|
||||
|
||||
/* Resources */
|
||||
.resource-list {
|
||||
background: var(--surface);
|
||||
border: 1px solid var(--border);
|
||||
border-radius: var(--radius);
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.resource-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 1em;
|
||||
padding: 0.9em 1.3em;
|
||||
border-bottom: 1px solid var(--border);
|
||||
text-decoration: none;
|
||||
color: var(--text);
|
||||
transition: background 0.15s;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
.resource-item:last-child { border-bottom: none; }
|
||||
.resource-item:hover { background: var(--surface2); }
|
||||
|
||||
.resource-item .ri-icon { font-size: 1.1em; width: 1.5em; text-align: center; }
|
||||
.resource-item .ri-name { font-weight: 600; color: var(--accent); font-family: 'JetBrains Mono', monospace; font-size: 0.9em; }
|
||||
.resource-item .ri-desc { color: var(--text-muted); font-size: 0.85em; margin-left: auto; }
|
||||
|
||||
@keyframes fadeDown {
|
||||
from { opacity: 0; transform: translateY(-18px); }
|
||||
to { opacity: 1; transform: translateY(0); }
|
||||
}
|
||||
|
||||
@keyframes fadeUp {
|
||||
from { opacity: 0; transform: translateY(14px); }
|
||||
to { opacity: 1; transform: translateY(0); }
|
||||
}
|
||||
|
||||
footer {
|
||||
text-align: center;
|
||||
color: var(--text-muted);
|
||||
font-size: 0.8em;
|
||||
margin-top: 3em;
|
||||
padding-top: 1.5em;
|
||||
border-top: 1px solid var(--border);
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<img src="logo.png" alt="Le Garage Numérique" class="logo" />
|
||||
<div class="wrapper">
|
||||
|
||||
<h1>Bienvenue sur le dépôt APT du Garage Numérique</h1>
|
||||
<p>Ce dépôt vous permet d’installer facilement les paquets maintenus par <strong>Le Garage Numérique</strong> sur les distributions basées sur Debian.</p>
|
||||
</div>
|
||||
<header>
|
||||
<img src="logo.png" alt="Le Garage Numérique" class="logo" />
|
||||
<h1>Dépôt APT <span>Le Garage Numérique</span></h1>
|
||||
<p>Paquets maintenus par Le Garage Numérique pour les distributions basées sur Debian</p>
|
||||
</header>
|
||||
|
||||
<h2>Instructions d'utilisation</h2>
|
||||
<!-- Installation -->
|
||||
<section>
|
||||
<div class="section-title">Installation du dépôt</div>
|
||||
<div class="install-card">
|
||||
|
||||
<div class="container">
|
||||
<p>Installer le dépôt du garage :</p>
|
||||
<pre><code>sudo wget -O /etc/apt/trusted.gpg.d/gn-depot.asc https://deb.legaragenumerique.fr/pgp-key.public
|
||||
echo 'deb [arch=amd64 signed-by=/etc/apt/trusted.gpg.d/gn-depot.asc] https://deb.legaragenumerique.fr stable main' \
|
||||
| sudo tee /etc/apt/sources.list.d/gn-depot.list
|
||||
sudo apt update</code></pre>
|
||||
<!-- Description -->
|
||||
<div class="install-card-header">
|
||||
<p>Une seule commande suffit pour configurer le dépôt, importer la clé GPG et définir la priorité automatiquement.</p>
|
||||
<div class="badge-list">
|
||||
<div class="badge"><span class="dot"></span>Clé GPG importée</div>
|
||||
<div class="badge"><span class="dot"></span>sources.list configuré</div>
|
||||
<div class="badge"><span class="dot"></span>Priorité 500 appliquée</div>
|
||||
<div class="badge"><span class="dot"></span>apt update exécuté</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p>Installer le paquet souhaité (ex. <code>geo</code>) :</p>
|
||||
<pre><code>sudo apt install geo</code></pre>
|
||||
<!-- Commande principale -->
|
||||
<div class="code-block">
|
||||
<pre id="cmd-main"><button class="copy-btn" onclick="copyCode('cmd-main', this)">Copier</button><span class="cmd">curl</span> -fsSL <span class="url">https://deb.legaragenumerique.fr/install-repo.sh</span> | <span class="cmd">sudo</span> bash</pre>
|
||||
</div>
|
||||
|
||||
<p>Et voilà 🎉 Vous êtes prêt à utiliser notre dépôt !</p>
|
||||
</div>
|
||||
<!-- Accordéon installation manuelle -->
|
||||
<button class="manual-toggle" id="toggle-manual" onclick="toggleManual()">
|
||||
⚙️ Installation manuelle étape par étape
|
||||
<span class="arrow">▾</span>
|
||||
</button>
|
||||
|
||||
<h2>Paquets disponibles</h2>
|
||||
<div class="manual-steps" id="manual-steps">
|
||||
|
||||
<div class="packages">
|
||||
<div class="package">
|
||||
<div class="package-icon">🌍</div>
|
||||
<h3>Geographical Adventures</h3>
|
||||
<p>Petit jeu sur la géographie.</p>
|
||||
<code>sudo apt install geo</code><br>
|
||||
<a href="https://sebastian.itch.io/geographical-adventures">Site web</a>
|
||||
</div>
|
||||
<div class="step">
|
||||
<div class="step-header">
|
||||
<div class="step-num">1</div>
|
||||
<div class="step-label">Ajouter la clé publique GPG</div>
|
||||
</div>
|
||||
<div class="code-block">
|
||||
<pre id="cmd1"><button class="copy-btn" onclick="copyCode('cmd1', this)">Copier</button><span class="cmd">sudo</span> wget -qO /etc/apt/trusted.gpg.d/gn-depot.asc \
|
||||
<span class="url">https://deb.legaragenumerique.fr/pgp-key.public</span></pre>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="package">
|
||||
<div class="package-icon">🔫</div>
|
||||
<h3>World of padman</h3>
|
||||
<p>Petit FPS open source.</p>
|
||||
<code>sudo apt install wop</code><br>
|
||||
<a href="https://worldofpadman.net">Site web</a>
|
||||
</div>
|
||||
<div class="step">
|
||||
<div class="step-header">
|
||||
<div class="step-num">2</div>
|
||||
<div class="step-label">Ajouter le dépôt à sources.list</div>
|
||||
</div>
|
||||
<div class="code-block">
|
||||
<pre id="cmd2"><button class="copy-btn" onclick="copyCode('cmd2', this)">Copier</button><span class="kw">echo</span> <span class="str">'deb [arch=amd64 signed-by=/etc/apt/trusted.gpg.d/gn-depot.asc] https://deb.legaragenumerique.fr stable main'</span> \
|
||||
| <span class="cmd">sudo</span> tee /etc/apt/sources.list.d/gn-depot.list</pre>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="package">
|
||||
<div class="package-icon">✒️</div>
|
||||
<h3>Scribus</h3>
|
||||
<p>Scribus svn 1.7.3.</p>
|
||||
<code>sudo apt install scribus</code><br>
|
||||
<a href="https://www.scribus.net">Site web</a>
|
||||
</div>
|
||||
<div class="step">
|
||||
<div class="step-header">
|
||||
<div class="step-num">3</div>
|
||||
<div class="step-label">Définir la priorité du dépôt</div>
|
||||
</div>
|
||||
<div class="code-block">
|
||||
<pre id="cmd3"><button class="copy-btn" onclick="copyCode('cmd3', this)">Copier</button><span class="cmd">sudo</span> wget -qO /etc/apt/preferences.d/gn-depot.pref \
|
||||
<span class="url">https://deb.legaragenumerique.fr/gn-depot.pref</span></pre>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- div class="package">
|
||||
<div class="package-icon">📦</div>
|
||||
<h3>backup-gn</h3>
|
||||
<p>Solution simple de sauvegarde automatisée.</p>
|
||||
<code>sudo apt install backup-gn</code><br>
|
||||
<a href="https://www.legaragenumerique.fr">Site web</a>
|
||||
</div> -->
|
||||
<div class="step">
|
||||
<div class="step-header">
|
||||
<div class="step-num">4</div>
|
||||
<div class="step-label">Mettre à jour et installer</div>
|
||||
</div>
|
||||
<div class="code-block">
|
||||
<pre id="cmd4"><button class="copy-btn" onclick="copyCode('cmd4', this)">Copier</button><span class="cmd">sudo</span> apt update
|
||||
<span class="cmd">sudo</span> apt install <nom-du-paquet></pre>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Packages -->
|
||||
<section>
|
||||
<div class="section-title">Paquets disponibles</div>
|
||||
<div class="packages">
|
||||
|
||||
<div class="package">
|
||||
<div class="package-icon">🌍</div>
|
||||
<h3>Geographical Adventures</h3>
|
||||
<p>Petit jeu de géographie interactif.</p>
|
||||
<code class="package-install">sudo apt install geo</code>
|
||||
<a href="https://sebastian.itch.io/geographical-adventures" target="_blank" rel="noopener">↗ Site web</a>
|
||||
</div>
|
||||
|
||||
<div class="package">
|
||||
<div class="package-icon">🔫</div>
|
||||
<h3>World of Padman</h3>
|
||||
<p>FPS open source léger et fun.</p>
|
||||
<code class="package-install">sudo apt install wop</code>
|
||||
<a href="https://worldofpadman.net" target="_blank" rel="noopener">↗ Site web</a>
|
||||
</div>
|
||||
|
||||
<div class="package">
|
||||
<div class="package-icon">✒️</div>
|
||||
<h3>Scribus 1.7.3 SVN</h3>
|
||||
<p>Logiciel de PAO — version de développement récente.</p>
|
||||
<code class="package-install">sudo apt install scribus</code>
|
||||
<a href="https://www.scribus.net" target="_blank" rel="noopener">↗ Site web</a>
|
||||
</div>
|
||||
|
||||
<div class="package">
|
||||
<div class="package-icon">🖨️</div>
|
||||
<h3>Cura </h3>
|
||||
<p>Logiciel de slicing pour imprimante 3D.</p>
|
||||
<code class="package-install">sudo apt install cura</code>
|
||||
<a href="https://ultimaker.com/software/ultimaker-cura/" target="_blank" rel="noopener">↗ Site web</a>
|
||||
</div>
|
||||
|
||||
<div class="package">
|
||||
<div class="package-icon">📐</div>
|
||||
<h3>FreeCAD </h3>
|
||||
<p>Logiciel de modeling pour imprimante 3D.</p>
|
||||
<code class="package-install">sudo apt install freecad-gn</code>
|
||||
<a href="https://www.freecad.org/index.php?lang=fr" target="_blank" rel="noopener">↗ Site web</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<footer>
|
||||
© Le Garage Numérique · Dépôt APT · <a href="https://deb.legaragenumerique.fr" style="color:var(--accent);text-decoration:none;">deb.legaragenumerique.fr</a>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function copyCode(id, btn) {
|
||||
const pre = document.getElementById(id);
|
||||
const clone = pre.cloneNode(true);
|
||||
// Supprimer le bouton du clone avant d'extraire le texte
|
||||
clone.querySelector('.copy-btn')?.remove();
|
||||
const text = clone.innerText.trim();
|
||||
navigator.clipboard.writeText(text).then(() => {
|
||||
btn.textContent = '✓ Copié';
|
||||
btn.classList.add('copied');
|
||||
setTimeout(() => {
|
||||
btn.textContent = 'Copier';
|
||||
btn.classList.remove('copied');
|
||||
}, 2000);
|
||||
});
|
||||
}
|
||||
|
||||
function toggleManual() {
|
||||
const btn = document.getElementById('toggle-manual');
|
||||
const steps = document.getElementById('manual-steps');
|
||||
btn.classList.toggle('open');
|
||||
steps.classList.toggle('open');
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
||||
Loading…
x
Reference in New Issue
Block a user