mirror of
https://github.com/cheeaun/phanpy.git
synced 2024-11-26 11:15:43 +03:00
Handle info with menu dropdown for profile page
This commit is contained in:
parent
3b975e899b
commit
fd9d8059bc
3 changed files with 135 additions and 7 deletions
|
@ -831,3 +831,58 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.handle-info {
|
||||||
|
.handle-handle {
|
||||||
|
display: inline-block;
|
||||||
|
margin-block: 5px;
|
||||||
|
|
||||||
|
b {
|
||||||
|
font-weight: 600;
|
||||||
|
padding: 2px 4px;
|
||||||
|
border-radius: 4px;
|
||||||
|
display: inline-block;
|
||||||
|
box-shadow: 0 0 0 5px var(--bg-blur-color);
|
||||||
|
|
||||||
|
&.handle-username {
|
||||||
|
color: var(--orange-fg-color);
|
||||||
|
background-color: var(--orange-bg-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.handle-server {
|
||||||
|
color: var(--purple-fg-color);
|
||||||
|
background-color: var(--purple-bg-color);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.handle-at {
|
||||||
|
display: inline-block;
|
||||||
|
margin-inline: -3px;
|
||||||
|
position: relative;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.handle-legend {
|
||||||
|
margin-top: 0.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.handle-legend-icon {
|
||||||
|
overflow: hidden;
|
||||||
|
display: inline-block;
|
||||||
|
width: 14px;
|
||||||
|
height: 14px;
|
||||||
|
border: 4px solid transparent;
|
||||||
|
border-radius: 8px;
|
||||||
|
background-clip: padding-box;
|
||||||
|
|
||||||
|
&.username {
|
||||||
|
background-color: var(--orange-fg-color);
|
||||||
|
border-color: var(--orange-bg-color);
|
||||||
|
}
|
||||||
|
&.server {
|
||||||
|
background-color: var(--purple-fg-color);
|
||||||
|
border-color: var(--purple-bg-color);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -541,13 +541,51 @@ function AccountInfo({
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
<header>
|
<header>
|
||||||
|
{standalone ? (
|
||||||
|
<Menu2
|
||||||
|
shift={64}
|
||||||
|
menuButton={
|
||||||
|
<div>
|
||||||
<AccountBlock
|
<AccountBlock
|
||||||
account={info}
|
account={info}
|
||||||
instance={instance}
|
instance={instance}
|
||||||
avatarSize="xxxl"
|
avatarSize="xxxl"
|
||||||
external={standalone}
|
onClick={() => {}}
|
||||||
internal={!standalone}
|
|
||||||
/>
|
/>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<div class="szh-menu__header">
|
||||||
|
<AccountHandleInfo acct={acct} instance={instance} />
|
||||||
|
</div>
|
||||||
|
<MenuItem
|
||||||
|
onClick={() => {
|
||||||
|
const handle = `@${acct}`;
|
||||||
|
try {
|
||||||
|
navigator.clipboard.writeText(handle);
|
||||||
|
showToast('Handle copied');
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e);
|
||||||
|
showToast('Unable to copy handle');
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Icon icon="link" />
|
||||||
|
<span>Copy handle</span>
|
||||||
|
</MenuItem>
|
||||||
|
<MenuItem href={url} target="_blank">
|
||||||
|
<Icon icon="external" />
|
||||||
|
<span>Go to original profile page</span>
|
||||||
|
</MenuItem>
|
||||||
|
</Menu2>
|
||||||
|
) : (
|
||||||
|
<AccountBlock
|
||||||
|
account={info}
|
||||||
|
instance={instance}
|
||||||
|
avatarSize="xxxl"
|
||||||
|
internal
|
||||||
|
/>
|
||||||
|
)}
|
||||||
</header>
|
</header>
|
||||||
<div class="faux-header-bg" aria-hidden="true" />
|
<div class="faux-header-bg" aria-hidden="true" />
|
||||||
<main>
|
<main>
|
||||||
|
@ -2000,4 +2038,27 @@ function FieldsAttributesRow({ name, value, disabled, index: i }) {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function AccountHandleInfo({ acct, instance }) {
|
||||||
|
// acct = username or username@server
|
||||||
|
let [username, server] = acct.split('@');
|
||||||
|
if (!server) server = instance;
|
||||||
|
return (
|
||||||
|
<div class="handle-info">
|
||||||
|
<span class="handle-handle">
|
||||||
|
<b class="handle-username">{username}</b>
|
||||||
|
<span class="handle-at">@</span>
|
||||||
|
<b class="handle-server">{server}</b>
|
||||||
|
</span>
|
||||||
|
<div class="handle-legend">
|
||||||
|
<span class="ib">
|
||||||
|
<span class="handle-legend-icon username" /> username
|
||||||
|
</span>{' '}
|
||||||
|
<span class="ib">
|
||||||
|
<span class="handle-legend-icon server" /> server domain name
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
export default AccountInfo;
|
export default AccountInfo;
|
||||||
|
|
|
@ -16,6 +16,12 @@
|
||||||
|
|
||||||
--blue-color: royalblue;
|
--blue-color: royalblue;
|
||||||
--purple-color: blueviolet;
|
--purple-color: blueviolet;
|
||||||
|
--purple-fg-color: color-mix(
|
||||||
|
in srgb-linear,
|
||||||
|
var(--purple-color) 60%,
|
||||||
|
var(--text-color) 40%
|
||||||
|
);
|
||||||
|
--purple-bg-color: color-mix(in lch, var(--purple-color) 15%, transparent);
|
||||||
--green-color: darkgreen;
|
--green-color: darkgreen;
|
||||||
--orange-color: darkorange;
|
--orange-color: darkorange;
|
||||||
--orange-light-bg-color: color-mix(
|
--orange-light-bg-color: color-mix(
|
||||||
|
@ -23,6 +29,12 @@
|
||||||
var(--orange-color) 20%,
|
var(--orange-color) 20%,
|
||||||
transparent
|
transparent
|
||||||
);
|
);
|
||||||
|
--orange-fg-color: color-mix(
|
||||||
|
in srgb-linear,
|
||||||
|
var(--orange-color) 60%,
|
||||||
|
var(--text-color) 40%
|
||||||
|
);
|
||||||
|
--orange-bg-color: color-mix(in lch, var(--orange-color) 15%, transparent);
|
||||||
--red-color: orangered;
|
--red-color: orangered;
|
||||||
--red-text-color: color-mix(
|
--red-text-color: color-mix(
|
||||||
in srgb-linear,
|
in srgb-linear,
|
||||||
|
|
Loading…
Reference in a new issue