Fixed the ui for mobile and fixed some visual ui bugs for the modals
This commit is contained in:
parent
34ab8ccf68
commit
a35be81985
Binary file not shown.
|
Before Width: | Height: | Size: 203 KiB After Width: | Height: | Size: 66 KiB |
98
src/App.css
98
src/App.css
@ -9,11 +9,12 @@ body {
|
|||||||
|
|
||||||
.about-container {
|
.about-container {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
margin-top: 5vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
.typewriter-text {
|
.typewriter-text {
|
||||||
font-family: 'Courier New', monospace;
|
font-family: 'Courier New', monospace;
|
||||||
font-size: 3rem;
|
font-size: clamp(2rem, 5vw, 3rem);
|
||||||
background: linear-gradient(45deg, #ff6b6b, #4ecdc4, #45b7d1);
|
background: linear-gradient(45deg, #ff6b6b, #4ecdc4, #45b7d1);
|
||||||
-webkit-background-clip: text;
|
-webkit-background-clip: text;
|
||||||
background-clip: text;
|
background-clip: text;
|
||||||
@ -71,23 +72,30 @@ body {
|
|||||||
.social-cards {
|
.social-cards {
|
||||||
margin-top: 3rem;
|
margin-top: 3rem;
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
|
grid-template-columns: repeat(auto-fit, minmax(200px, 200px));
|
||||||
gap: 2rem;
|
gap: 1rem;
|
||||||
padding: 0 2rem;
|
padding: 0 2rem;
|
||||||
max-width: 1200px;
|
max-width: 1200px;
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
margin-right: auto;
|
margin-right: auto;
|
||||||
|
justify-content: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.social-card {
|
.social-card {
|
||||||
background: rgba(255, 255, 255, 0.05);
|
background: rgba(255, 255, 255, 0.05);
|
||||||
border-radius: 16px;
|
border-radius: 16px;
|
||||||
padding: 2rem;
|
justify-content: center;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
color: white !important;
|
color: white !important;
|
||||||
transition: all 0.3s ease;
|
transition: all 0.3s ease;
|
||||||
border: 1px solid rgba(255, 255, 255, 0.1);
|
border: 1px solid rgba(255, 255, 255, 0.1);
|
||||||
backdrop-filter: blur(10px);
|
backdrop-filter: blur(10px);
|
||||||
|
width: 200px;
|
||||||
|
height: 200px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.social-card:hover {
|
.social-card:hover {
|
||||||
@ -110,7 +118,7 @@ body {
|
|||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
gap: 1rem;
|
gap: 0rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.social-card-icon {
|
.social-card-icon {
|
||||||
@ -122,18 +130,18 @@ body {
|
|||||||
|
|
||||||
.social-card h3 {
|
.social-card h3 {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
font-size: 1.5rem;
|
font-size: clamp(1.2rem, 3vw, 1.5rem);
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
}
|
}
|
||||||
|
|
||||||
.social-card p {
|
.social-card p {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
color: rgba(255, 255, 255, 0.7);
|
color: rgba(255, 255, 255, 0.7);
|
||||||
font-size: 1rem;
|
font-size: clamp(0.9rem, 2.5vw, 1rem);
|
||||||
}
|
}
|
||||||
|
|
||||||
.animated-paragraph {
|
.animated-paragraph {
|
||||||
font-size: 1.15rem;
|
font-size: clamp(0.9rem, 2.5vw, 1.15rem);
|
||||||
color: #e0e0e0;
|
color: #e0e0e0;
|
||||||
margin: 24px 0 32px 0;
|
margin: 24px 0 32px 0;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
@ -142,6 +150,7 @@ body {
|
|||||||
margin-right: auto;
|
margin-right: auto;
|
||||||
letter-spacing: 0.01em;
|
letter-spacing: 0.01em;
|
||||||
line-height: 1.6;
|
line-height: 1.6;
|
||||||
|
padding: 0 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.animated-paragraph .cursor {
|
.animated-paragraph .cursor {
|
||||||
@ -167,13 +176,11 @@ body {
|
|||||||
.modal-content {
|
.modal-content {
|
||||||
background: rgba(35, 39, 47, 0.85);
|
background: rgba(35, 39, 47, 0.85);
|
||||||
border-radius: 16px;
|
border-radius: 16px;
|
||||||
padding: 32px 24px 24px 24px;
|
|
||||||
box-shadow: 0 8px 32px rgba(0,0,0,0.45);
|
box-shadow: 0 8px 32px rgba(0,0,0,0.45);
|
||||||
position: relative;
|
position: relative;
|
||||||
min-width: 340px;
|
width: 90%;
|
||||||
max-width: 380px;
|
max-width: 380px;
|
||||||
width: 100%;
|
padding: 2.5rem 1.5rem 1.5rem 1.5rem;
|
||||||
max-height: 90vh;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@ -182,39 +189,35 @@ body {
|
|||||||
-webkit-backdrop-filter: blur(16px);
|
-webkit-backdrop-filter: blur(16px);
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal-image {
|
|
||||||
max-width: 320px;
|
|
||||||
width: 100%;
|
|
||||||
height: auto;
|
|
||||||
border-radius: 12px;
|
|
||||||
margin-bottom: 16px;
|
|
||||||
background: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.modal-caption {
|
|
||||||
color: #e0e0e0;
|
|
||||||
font-size: 1.1rem;
|
|
||||||
margin-top: 8px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.modal-close {
|
.modal-close {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 12px;
|
top: 8px;
|
||||||
right: 16px;
|
right: 8px;
|
||||||
background: none;
|
background: none;
|
||||||
border: none;
|
border: none;
|
||||||
font-size: 2rem;
|
font-size: 1.5rem;
|
||||||
color: #aaa;
|
color: #aaa;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
transition: color 0.2s;
|
transition: color 0.2s;
|
||||||
|
padding: 8px;
|
||||||
|
line-height: 1;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal-close:hover {
|
.modal-close:hover {
|
||||||
color: #EA4335;
|
color: #EA4335;
|
||||||
}
|
}
|
||||||
|
|
||||||
.discord-tag-row {
|
.modal-caption {
|
||||||
|
color: #e0e0e0;
|
||||||
|
font-size: 1.1rem;
|
||||||
|
margin-top: 0.5rem;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-tag-row {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 1rem;
|
gap: 1rem;
|
||||||
@ -222,7 +225,7 @@ body {
|
|||||||
margin-top: 8px;
|
margin-top: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.discord-tag {
|
.modal-tag {
|
||||||
font-size: 1.3rem;
|
font-size: 1.3rem;
|
||||||
font-family: 'Courier New', monospace;
|
font-family: 'Courier New', monospace;
|
||||||
color: #e0e0e0;
|
color: #e0e0e0;
|
||||||
@ -233,7 +236,7 @@ body {
|
|||||||
letter-spacing: 0.03em;
|
letter-spacing: 0.03em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.copy-btn {
|
.modal-copy-btn {
|
||||||
background: #5865F2;
|
background: #5865F2;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
border: none;
|
border: none;
|
||||||
@ -245,7 +248,32 @@ body {
|
|||||||
font-family: inherit;
|
font-family: inherit;
|
||||||
}
|
}
|
||||||
|
|
||||||
.copy-btn:hover, .copy-btn:focus {
|
.modal-copy-btn:hover, .modal-copy-btn:focus {
|
||||||
background: #4752c4;
|
background: #4752c4;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.modal-qr {
|
||||||
|
width: 100%;
|
||||||
|
max-width: 280px;
|
||||||
|
height: auto;
|
||||||
|
border-radius: 12px;
|
||||||
|
margin: 0.5rem 0 1rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1000px) {
|
||||||
|
.social-cards {
|
||||||
|
grid-template-columns: 200px;
|
||||||
|
padding: 0rem 0;
|
||||||
|
margin-bottom: 5vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-content {
|
||||||
|
width: 85%;
|
||||||
|
padding: 2rem 1rem 1rem 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-qr {
|
||||||
|
max-width: 240px;
|
||||||
|
}
|
||||||
|
}
|
||||||
29
src/App.tsx
29
src/App.tsx
@ -69,14 +69,24 @@ function SocialCard({ title, icon, description, href, onClick }: {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
function SignalPopup({ show, onClose }: { show: boolean, onClose: () => void }) {
|
function SignalPopup({ show, onClose, username }: { show: boolean, onClose: () => void, username: string }) {
|
||||||
|
const [copied, setCopied] = useState(false)
|
||||||
if (!show) return null
|
if (!show) return null
|
||||||
|
const handleCopy = () => {
|
||||||
|
navigator.clipboard.writeText(username)
|
||||||
|
setCopied(true)
|
||||||
|
setTimeout(() => setCopied(false), 1200)
|
||||||
|
}
|
||||||
return (
|
return (
|
||||||
<div className="modal-backdrop" onClick={onClose}>
|
<div className="modal-backdrop" onClick={onClose}>
|
||||||
<div className="modal-content" onClick={e => e.stopPropagation()}>
|
<div className="modal-content" onClick={e => e.stopPropagation()}>
|
||||||
<button className="modal-close" onClick={onClose}>×</button>
|
<button className="modal-close" onClick={onClose}>×</button>
|
||||||
<img src="/shikoro-signal.png" alt="Signal QR" className="modal-image" />
|
<img src="/shikoro-signal.png" alt="Signal QR" className="modal-qr" />
|
||||||
<div className="modal-caption">Scan to chat with me on Signal!</div>
|
<div className="modal-tag-row">
|
||||||
|
<span className="modal-tag">{username}</span>
|
||||||
|
<button className="modal-copy-btn" onClick={handleCopy}>{copied ? 'Copied!' : 'Copy'}</button>
|
||||||
|
</div>
|
||||||
|
<div className="modal-caption">Scan or use Username!</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
@ -94,11 +104,10 @@ function DiscordPopup({ show, onClose, tag }: { show: boolean, onClose: () => vo
|
|||||||
<div className="modal-backdrop" onClick={onClose}>
|
<div className="modal-backdrop" onClick={onClose}>
|
||||||
<div className="modal-content" onClick={e => e.stopPropagation()}>
|
<div className="modal-content" onClick={e => e.stopPropagation()}>
|
||||||
<button className="modal-close" onClick={onClose}>×</button>
|
<button className="modal-close" onClick={onClose}>×</button>
|
||||||
<img src="/discord-logo.png" alt="Discord Logo" className="modal-image" style={{background:'#5865F2',padding:'16px'}} />
|
<div className="modal-caption" style={{marginBottom:'12px'}}>My Discord Tag:</div>
|
||||||
<div className="modal-caption" style={{marginBottom:'12px'}}>Add me on Discord:</div>
|
<div className="modal-tag-row">
|
||||||
<div className="discord-tag-row">
|
<span className="modal-tag">{tag}</span>
|
||||||
<span className="discord-tag">{tag}</span>
|
<button className="modal-copy-btn" onClick={handleCopy}>{copied ? 'Copied!' : 'Copy'}</button>
|
||||||
<button className="copy-btn" onClick={handleCopy}>{copied ? 'Copied!' : 'Copy'}</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -142,10 +151,10 @@ function App() {
|
|||||||
href="#"
|
href="#"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<SignalPopup show={showSignalPopup} onClose={() => setShowSignalPopup(false)} />
|
<SignalPopup show={showSignalPopup} onClose={() => setShowSignalPopup(false)} username="shikoro.31" />
|
||||||
<DiscordPopup show={showDiscordPopup} onClose={() => setShowDiscordPopup(false)} tag="shikoro.1" />
|
<DiscordPopup show={showDiscordPopup} onClose={() => setShowDiscordPopup(false)} tag="shikoro.1" />
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
export default App
|
export default App
|
||||||
Loading…
x
Reference in New Issue
Block a user