Skip to content

Commit 38f8e12

Browse files
authored
Merge pull request #2 from tutosrive/copilot/update-footer-licensing-references
[WIP] Update references in footer and license sections
2 parents 8f47e43 + 4733ef1 commit 38f8e12

7 files changed

Lines changed: 154 additions & 54 deletions

File tree

website/src/components/Footer.jsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,14 @@ const Footer = () => {
4343
</div>
4444

4545
<div className="footer-bottom">
46-
<p>© 2025 Tutos Rive - ESRM - Proyecto de código abierto bajo licencia MIT</p>
46+
<p>© 2025 Dev2Forge - ESRM - Proyecto de código abierto bajo licencia MIT</p>
4747
<div className="footer-social">
48-
<a href="https://github.com/tutosrive" target="_blank" rel="noopener noreferrer" aria-label="GitHub">
48+
<a href="https://github.com/dev2forge" target="_blank" rel="noopener noreferrer" aria-label="GitHub">
4949
<svg viewBox="0 0 24 24" width="24" height="24" fill="currentColor">
5050
<path d="M12.5.75C6.146.75 1 5.896 1 12.25c0 5.089 3.292 9.387 7.863 10.91.575.101.79-.244.79-.546 0-.273-.014-1.178-.014-2.142-2.889.532-3.636-.704-3.866-1.35-.13-.331-.69-1.352-1.18-1.625-.402-.216-.977-.748-.014-.762.906-.014 1.553.834 1.769 1.179 1.035 1.74 2.688 1.25 3.349.948.1-.747.402-1.25.733-1.538-2.559-.287-5.232-1.279-5.232-5.678 0-1.25.445-2.285 1.178-3.09-.115-.288-.517-1.467.115-3.048 0 0 .963-.302 3.163 1.179.92-.259 1.897-.388 2.875-.388.977 0 1.955.13 2.875.388 2.2-1.495 3.162-1.179 3.162-1.179.633 1.581.23 2.76.115 3.048.733.805 1.179 1.825 1.179 3.09 0 4.413-2.688 5.39-5.247 5.678.417.36.776 1.05.776 2.128 0 1.538-.014 2.774-.014 3.162 0 .302.216.662.79.547C20.709 21.637 24 17.324 24 12.25 24 5.896 18.854.75 12.5.75Z"/>
5151
</svg>
5252
</a>
53-
<a href="https://www.youtube.com/@tutosrive" target="_blank" rel="noopener noreferrer" aria-label="YouTube">
53+
<a href="https://www.youtube.com/@dev2forge" target="_blank" rel="noopener noreferrer" aria-label="YouTube">
5454
<svg viewBox="0 0 24 24" width="24" height="24" fill="currentColor">
5555
<path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/>
5656
</svg>

website/src/pages/Download.css

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,10 @@
8181
/* Download Options */
8282
.options-grid {
8383
display: grid;
84-
grid-template-columns: repeat(3, 1fr);
84+
grid-template-columns: repeat(2, 1fr);
8585
gap: 24px;
86+
max-width: 700px;
87+
margin: 0 auto;
8688
}
8789

8890
.option-card {
@@ -114,6 +116,43 @@
114116
width: 100%;
115117
}
116118

119+
/* Code Block with Copy Button */
120+
.code-block-wrapper {
121+
position: relative;
122+
margin-bottom: 20px;
123+
width: 100%;
124+
}
125+
126+
.code-block-wrapper .option-code {
127+
margin: 0;
128+
padding-right: 50px;
129+
}
130+
131+
.copy-btn {
132+
position: absolute;
133+
top: 8px;
134+
right: 8px;
135+
background: rgba(255, 255, 255, 0.1);
136+
border: 1px solid rgba(255, 255, 255, 0.2);
137+
border-radius: 6px;
138+
padding: 6px 10px;
139+
cursor: pointer;
140+
font-size: 1rem;
141+
transition: all 0.2s ease;
142+
color: var(--text-primary);
143+
}
144+
145+
.copy-btn:hover {
146+
background: rgba(255, 255, 255, 0.2);
147+
transform: translateY(-1px);
148+
}
149+
150+
.copy-btn.copied {
151+
background: rgba(34, 197, 94, 0.2);
152+
border-color: rgba(34, 197, 94, 0.4);
153+
color: #22c55e;
154+
}
155+
117156
/* Stats Row */
118157
.stats-row {
119158
display: flex;

website/src/pages/Download.jsx

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,21 @@
11
import { Link } from 'react-router-dom'
2+
import { useState } from 'react'
23
import './Download.css'
34

45
const Download = () => {
6+
const [copied, setCopied] = useState(false)
7+
8+
const copyToClipboard = (text) => {
9+
navigator.clipboard.writeText(text)
10+
.then(() => {
11+
setCopied(true)
12+
setTimeout(() => setCopied(false), 2000)
13+
})
14+
.catch((err) => {
15+
console.error('Failed to copy:', err)
16+
})
17+
}
18+
519
return (
620
<div className="download">
721
<div className="container">
@@ -73,25 +87,6 @@ const Download = () => {
7387
</a>
7488
</div>
7589

76-
{/* GitHub Releases */}
77-
<div className="option-card glass">
78-
<div className="option-icon">
79-
<svg viewBox="0 0 24 24" width="48" height="48" fill="currentColor">
80-
<path d="M12.5.75C6.146.75 1 5.896 1 12.25c0 5.089 3.292 9.387 7.863 10.91.575.101.79-.244.79-.546 0-.273-.014-1.178-.014-2.142-2.889.532-3.636-.704-3.866-1.35-.13-.331-.69-1.352-1.18-1.625-.402-.216-.977-.748-.014-.762.906-.014 1.553.834 1.769 1.179 1.035 1.74 2.688 1.25 3.349.948.1-.747.402-1.25.733-1.538-2.559-.287-5.232-1.279-5.232-5.678 0-1.25.445-2.285 1.178-3.09-.115-.288-.517-1.467.115-3.048 0 0 .963-.302 3.163 1.179.92-.259 1.897-.388 2.875-.388.977 0 1.955.13 2.875.388 2.2-1.495 3.162-1.179 3.162-1.179.633 1.581.23 2.76.115 3.048.733.805 1.179 1.825 1.179 3.09 0 4.413-2.688 5.39-5.247 5.678.417.36.776 1.05.776 2.128 0 1.538-.014 2.774-.014 3.162 0 .302.216.662.79.547C20.709 21.637 24 17.324 24 12.25 24 5.896 18.854.75 12.5.75Z"/>
81-
</svg>
82-
</div>
83-
<h3>GitHub Releases</h3>
84-
<p>Todas las versiones disponibles con changelog.</p>
85-
<a
86-
href="https://github.com/tutosrive/E-SRM/releases"
87-
target="_blank"
88-
rel="noopener noreferrer"
89-
className="btn btn-secondary"
90-
>
91-
Ver Releases
92-
</a>
93-
</div>
94-
9590
{/* PyPI */}
9691
<div className="option-card glass">
9792
<div className="option-icon">
@@ -102,7 +97,16 @@ const Download = () => {
10297
</div>
10398
<h3>PyPI</h3>
10499
<p>Instala con pip. Requiere Python 3.11.6+</p>
105-
<pre className="option-code"><code>pip install effect-srm</code></pre>
100+
<div className="code-block-wrapper">
101+
<pre className="option-code"><code>pip install effect-srm</code></pre>
102+
<button
103+
className={`copy-btn ${copied ? 'copied' : ''}`}
104+
onClick={() => copyToClipboard('pip install effect-srm')}
105+
aria-label="Copiar comando"
106+
>
107+
{copied ? '✓' : '📋'}
108+
</button>
109+
</div>
106110
<a
107111
href="https://pypi.org/project/effect-srm/"
108112
target="_blank"

website/src/pages/Install.css

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,42 @@
9292
margin: 8px 0;
9393
}
9494

95+
/* Code Block with Copy Button */
96+
.code-block-wrapper {
97+
position: relative;
98+
margin: 8px 0;
99+
}
100+
101+
.code-block-wrapper pre {
102+
margin: 0;
103+
padding-right: 50px;
104+
}
105+
106+
.copy-btn {
107+
position: absolute;
108+
top: 8px;
109+
right: 8px;
110+
background: rgba(255, 255, 255, 0.1);
111+
border: 1px solid rgba(255, 255, 255, 0.2);
112+
border-radius: 6px;
113+
padding: 6px 10px;
114+
cursor: pointer;
115+
font-size: 1rem;
116+
transition: all 0.2s ease;
117+
color: var(--text-primary);
118+
}
119+
120+
.copy-btn:hover {
121+
background: rgba(255, 255, 255, 0.2);
122+
transform: translateY(-1px);
123+
}
124+
125+
.copy-btn.copied {
126+
background: rgba(34, 197, 94, 0.2);
127+
border-color: rgba(34, 197, 94, 0.4);
128+
color: #22c55e;
129+
}
130+
95131
.step-note {
96132
font-size: 0.85rem;
97133
color: var(--text-muted);

website/src/pages/Install.jsx

Lines changed: 42 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,34 @@
11
import { Link } from 'react-router-dom'
2+
import { useState } from 'react'
23
import './Install.css'
34

5+
const CodeBlock = ({ code, id, onCopy, copiedCommand }) => (
6+
<div className="code-block-wrapper">
7+
<pre><code>{code}</code></pre>
8+
<button
9+
className={`copy-btn ${copiedCommand === id ? 'copied' : ''}`}
10+
onClick={() => onCopy(code, id)}
11+
aria-label="Copiar comando"
12+
>
13+
{copiedCommand === id ? '✓' : '📋'}
14+
</button>
15+
</div>
16+
)
17+
418
const Install = () => {
19+
const [copiedCommand, setCopiedCommand] = useState('')
20+
21+
const copyToClipboard = (text, id) => {
22+
navigator.clipboard.writeText(text)
23+
.then(() => {
24+
setCopiedCommand(id)
25+
setTimeout(() => setCopiedCommand(''), 2000)
26+
})
27+
.catch((err) => {
28+
console.error('Failed to copy:', err)
29+
})
30+
}
31+
532
return (
633
<div className="install">
734
<div className="container">
@@ -26,17 +53,17 @@ const Install = () => {
2653

2754
<div className="install-step">
2855
<h4>1. Verifica que tienes Python instalado</h4>
29-
<pre><code>python --version</code></pre>
56+
<CodeBlock code="python --version" id="python-version" onCopy={copyToClipboard} copiedCommand={copiedCommand} />
3057
</div>
3158

3259
<div className="install-step">
3360
<h4>2. Instala ESRM con pip</h4>
34-
<pre><code>pip install effect-srm</code></pre>
61+
<CodeBlock code="pip install effect-srm" id="pip-install" onCopy={copyToClipboard} copiedCommand={copiedCommand} />
3562
</div>
3663

3764
<div className="install-step">
3865
<h4>3. Ejecuta ESRM</h4>
39-
<pre><code>esrm</code></pre>
66+
<CodeBlock code="esrm" id="esrm-run" onCopy={copyToClipboard} copiedCommand={copiedCommand} />
4067
<p className="step-note">También puedes usar: <code>srm</code> o <code>effect-screen-recorder-master</code></p>
4168
</div>
4269

@@ -59,7 +86,7 @@ const Install = () => {
5986

6087
<div className="install-step">
6188
<h4>1. Descarga el instalador</h4>
62-
<p>Descarga la última versión desde GitHub Releases o SourceForge.</p>
89+
<p>Descarga la última versión desde SourceForge.</p>
6390
</div>
6491

6592
<div className="install-step">
@@ -72,24 +99,14 @@ const Install = () => {
7299
<p>Busca ESRM en el menú de inicio o ejecuta desde el escritorio.</p>
73100
</div>
74101

75-
<div className="method-buttons">
76-
<a
77-
href="https://github.com/tutosrive/E-SRM/releases"
78-
target="_blank"
79-
rel="noopener noreferrer"
80-
className="btn btn-secondary"
81-
>
82-
GitHub Releases
83-
</a>
84-
<a
85-
href="https://sourceforge.net/projects/e-srm/files/"
86-
target="_blank"
87-
rel="noopener noreferrer"
88-
className="btn btn-download"
89-
>
90-
SourceForge
91-
</a>
92-
</div>
102+
<a
103+
href="https://sourceforge.net/projects/e-srm/files/"
104+
target="_blank"
105+
rel="noopener noreferrer"
106+
className="btn btn-download"
107+
>
108+
SourceForge
109+
</a>
93110
</div>
94111

95112
{/* Local Development */}
@@ -101,17 +118,17 @@ const Install = () => {
101118

102119
<div className="install-step">
103120
<h4>1. Clona el repositorio</h4>
104-
<pre><code>git clone https://github.com/tutosrive/E-SRM.git</code></pre>
121+
<CodeBlock code="git clone https://github.com/tutosrive/E-SRM.git" id="git-clone" onCopy={copyToClipboard} copiedCommand={copiedCommand} />
105122
</div>
106123

107124
<div className="install-step">
108125
<h4>2. Instala dependencias</h4>
109-
<pre><code>pip install -r requirements.txt</code></pre>
126+
<CodeBlock code="pip install -r requirements.txt" id="pip-requirements" onCopy={copyToClipboard} copiedCommand={copiedCommand} />
110127
</div>
111128

112129
<div className="install-step">
113130
<h4>3. Ejecuta la aplicación</h4>
114-
<pre><code>python code/__main__.py</code></pre>
131+
<CodeBlock code="python code/__main__.py" id="python-run" onCopy={copyToClipboard} copiedCommand={copiedCommand} />
115132
</div>
116133

117134
<a

website/src/pages/License.css

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
/* Permissions */
4545
.permissions-grid {
4646
display: grid;
47-
grid-template-columns: repeat(5, 1fr);
47+
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
4848
gap: 20px;
4949
}
5050

@@ -180,13 +180,13 @@
180180
/* Responsive */
181181
@media (max-width: 1024px) {
182182
.permissions-grid {
183-
grid-template-columns: repeat(3, 1fr);
183+
grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
184184
}
185185
}
186186

187187
@media (max-width: 768px) {
188188
.permissions-grid {
189-
grid-template-columns: repeat(2, 1fr);
189+
grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
190190
}
191191

192192
.condition-card {
@@ -211,4 +211,8 @@
211211
.license-content {
212212
padding: 24px;
213213
}
214+
215+
.license-pre {
216+
font-size: 0.75rem;
217+
}
214218
}

website/src/pages/License.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ const License = () => {
6969
El aviso de copyright y la licencia deben incluirse en todas las copias
7070
o partes sustanciales del software.
7171
</p>
72-
<pre className="attribution-code"><code>{`"Effect Screen Recorder Master (ESRM) v0.1.0 © 2025 Tutos Rive - Licencia MIT"`}</code></pre>
72+
<pre className="attribution-code"><code>{`"Effect Screen Recorder Master (ESRM) v0.1.0 © 2025 Dev2Forge - Licencia MIT"`}</code></pre>
7373
</div>
7474
</div>
7575
</section>
@@ -80,7 +80,7 @@ const License = () => {
8080
<div className="license-content glass-strong">
8181
<pre className="license-pre"><code>{`MIT License
8282
83-
Copyright (c) 2025 Tutos Rive
83+
Copyright (c) 2025 Dev2Forge
8484
8585
Permission is hereby granted, free of charge, to any person obtaining a copy
8686
of this software and associated documentation files (the "Software"), to deal

0 commit comments

Comments
 (0)