v3: button styling consistency pass

This commit is contained in:
khannurien
2026-03-21 19:41:15 +00:00
parent 5bed03baa5
commit 39a0cc397e
12 changed files with 42 additions and 26 deletions

View File

@@ -280,7 +280,7 @@
} }
/* ── Mode toggle — segmented control ── */ /* ── Mode toggle — segmented control ── */
.dump-mode-toggle { .visibility-toggle {
display: flex; display: flex;
background: var(--color-bg); background: var(--color-bg);
border: 1.5px solid var(--color-border); border: 1.5px solid var(--color-border);
@@ -289,7 +289,7 @@
gap: 2px; gap: 2px;
} }
.dump-mode-toggle button { .visibility-toggle button {
flex: 1; flex: 1;
padding: 0.3rem 0.9rem; padding: 0.3rem 0.9rem;
border-radius: 6px; border-radius: 6px;
@@ -303,12 +303,12 @@
white-space: nowrap; white-space: nowrap;
} }
.dump-mode-toggle button.active { .visibility-toggle button.active {
background: var(--color-accent); background: var(--color-accent);
color: var(--color-on-accent); color: var(--color-on-accent);
} }
.dump-mode-toggle button:not(.active):hover { .visibility-toggle button:not(.active):hover {
background: color-mix(in srgb, var(--color-accent) 12%, transparent); background: color-mix(in srgb, var(--color-accent) 12%, transparent);
} }
@@ -1059,7 +1059,7 @@ body.has-player .fab-new {
font-weight: 600; font-weight: 600;
} }
.profile-header .logout-btn { .profile-header .btn-border {
margin-top: 0.5rem; margin-top: 0.5rem;
} }
@@ -1091,7 +1091,7 @@ body.has-player .fab-new {
margin-top: 0.5rem; margin-top: 0.5rem;
align-items: center; align-items: center;
} }
.profile-own-actions .logout-btn { .profile-own-actions .btn-border {
margin-top: 0; margin-top: 0;
} }
.invite-generate { .invite-generate {
@@ -1189,7 +1189,10 @@ body.has-player .fab-new {
color: var(--color-accent); color: var(--color-accent);
} }
.logout-btn { /* ── Border-tinted buttons ── */
.btn-border-danger,
.btn-border-success,
.btn-border {
padding: 0.3rem 0.9rem; padding: 0.3rem 0.9rem;
border: 1.5px solid var(--color-border); border: 1.5px solid var(--color-border);
border-radius: 6px; border-radius: 6px;
@@ -1197,14 +1200,22 @@ body.has-player .fab-new {
color: var(--color-text-muted); color: var(--color-text-muted);
font-size: 0.85rem; font-size: 0.85rem;
cursor: pointer; cursor: pointer;
transition: border-color 0.15s, color 0.15s; transition: border-color 0.15s, color 0.15s, background 0.15s;
} }
.logout-btn:hover { .btn-border-danger:hover,
.btn-border-danger.active,
.btn-border:hover {
border-color: var(--color-danger); border-color: var(--color-danger);
color: var(--color-danger); color: var(--color-danger);
} }
.btn-border-success:hover,
.btn-border-success.active {
border-color: var(--color-success);
color: var(--color-success);
}
/* ── ErrorCard ── */ /* ── ErrorCard ── */
.error-card-wrap { .error-card-wrap {
display: flex; display: flex;

View File

@@ -307,7 +307,7 @@ export function DumpCreateModal({ onClose }: DumpCreateModalProps) {
{phase === "create" {phase === "create"
? ( ? (
<> <>
<div className="dump-mode-toggle"> <div className="visibility-toggle">
<button <button
type="button" type="button"
className={mode === "url" ? "active" : ""} className={mode === "url" ? "active" : ""}
@@ -412,7 +412,7 @@ export function DumpCreateModal({ onClose }: DumpCreateModalProps) {
/> />
</div> </div>
<div className="dump-mode-toggle"> <div className="visibility-toggle">
<button <button
type="button" type="button"
className={!isPrivate ? "active" : ""} className={!isPrivate ? "active" : ""}

View File

@@ -73,7 +73,7 @@ export function PlaylistCreateForm(
onChange={(e) => setDescription(e.target.value)} onChange={(e) => setDescription(e.target.value)}
rows={3} rows={3}
/> />
<div className="dump-mode-toggle"> <div className="visibility-toggle">
<button <button
type="button" type="button"
className={isPublic ? "active" : ""} className={isPublic ? "active" : ""}

View File

@@ -34,6 +34,11 @@
--color-danger-bg: #a02b2b; --color-danger-bg: #a02b2b;
--color-danger-hover: #c03030; --color-danger-hover: #c03030;
/* Success */
--color-success: #4caf7d;
--color-success-bg: #1a6b3a;
--color-success-hover: #2d9e58;
/* Overlays */ /* Overlays */
--color-overlay: rgba(0, 0, 0, 0.45); --color-overlay: rgba(0, 0, 0, 0.45);
--color-header-user-bg: rgba(0, 0, 0, 0.2); --color-header-user-bg: rgba(0, 0, 0, 0.2);

View File

@@ -153,14 +153,14 @@ export function Dump() {
actions={ actions={
<> <>
<button <button
className="logout-btn" className="btn-border"
type="button" type="button"
onClick={() => globalThis.location.reload()} onClick={() => globalThis.location.reload()}
> >
Retry Retry
</button> </button>
<button <button
className="logout-btn" className="btn-border"
type="button" type="button"
onClick={() => navigate("/")} onClick={() => navigate("/")}
> >

View File

@@ -195,7 +195,7 @@ export function DumpCreate() {
<div className="dump-create-wrapper"> <div className="dump-create-wrapper">
<div className="dump-create-header"> <div className="dump-create-header">
<h1 className="dump-create-title">New dump</h1> <h1 className="dump-create-title">New dump</h1>
<div className="dump-mode-toggle"> <div className="visibility-toggle">
<button <button
type="button" type="button"
className={mode === "url" ? "active" : ""} className={mode === "url" ? "active" : ""}

View File

@@ -153,14 +153,14 @@ export function DumpEdit() {
actions={ actions={
<> <>
<button <button
className="logout-btn" className="btn-border"
type="button" type="button"
onClick={() => globalThis.location.reload()} onClick={() => globalThis.location.reload()}
> >
Retry Retry
</button> </button>
<button <button
className="logout-btn" className="btn-border"
type="button" type="button"
onClick={() => navigate("/")} onClick={() => navigate("/")}
> >
@@ -261,7 +261,7 @@ export function DumpEdit() {
/> />
</div> </div>
<div className="dump-mode-toggle"> <div className="visibility-toggle">
<button <button
type="button" type="button"
className={!isPrivate ? "active" : ""} className={!isPrivate ? "active" : ""}

View File

@@ -414,7 +414,7 @@ export function PlaylistDetail() {
message={state.error} message={state.error}
actions={ actions={
<button <button
className="logout-btn" className="btn-border"
type="button" type="button"
onClick={() => navigate("/")} onClick={() => navigate("/")}
> >
@@ -537,7 +537,7 @@ export function PlaylistDetail() {
<div className="playlist-detail-meta"> <div className="playlist-detail-meta">
{editOpen {editOpen
? ( ? (
<div className="dump-mode-toggle playlist-edit-toggle"> <div className="visibility-toggle playlist-edit-toggle">
<button <button
type="button" type="button"
className={editIsPublic ? "active" : ""} className={editIsPublic ? "active" : ""}

View File

@@ -188,7 +188,7 @@ export function UserDumps() {
<PageError <PageError
message={state.error} message={state.error}
actions={ actions={
<Link to={`/users/${username}`} className="logout-btn"> <Link to={`/users/${username}`} className="btn-border">
Back to profile Back to profile
</Link> </Link>
} }

View File

@@ -386,7 +386,7 @@ export function UserPlaylists() {
<PageError <PageError
message={state.error} message={state.error}
actions={ actions={
<Link to={`/users/${username}`} className="logout-btn"> <Link to={`/users/${username}`} className="btn-border">
Back to profile Back to profile
</Link> </Link>
} }

View File

@@ -488,14 +488,14 @@ export function UserPublicProfile() {
actions={ actions={
<> <>
<button <button
className="logout-btn" className="btn-border"
type="button" type="button"
onClick={() => navigate("/")} onClick={() => navigate("/")}
> >
Back Back
</button> </button>
{me && ( {me && (
<button className="logout-btn" type="button" onClick={logout}> <button className="btn-border" type="button" onClick={logout}>
Log out Log out
</button> </button>
)} )}
@@ -563,7 +563,7 @@ export function UserPublicProfile() {
{isOwnProfile && ( {isOwnProfile && (
<div className="profile-own-actions"> <div className="profile-own-actions">
<InviteButton /> <InviteButton />
<button type="button" className="logout-btn" onClick={logout}> <button type="button" className="btn-border" onClick={logout}>
Log out Log out
</button> </button>
</div> </div>

View File

@@ -326,7 +326,7 @@ export function UserUpvoted() {
<PageError <PageError
message={state.error} message={state.error}
actions={ actions={
<Link to={`/users/${username}`} className="logout-btn"> <Link to={`/users/${username}`} className="btn-border">
Back to profile Back to profile
</Link> </Link>
} }