Add configurable sidebar nameplate background.
All checks were successful
Trigger cinny-mobile / dispatch (push) Successful in 2s
All checks were successful
Trigger cinny-mobile / dispatch (push) Successful in 2s
Render the equipped nameplate behind the larger settings avatar with blur-aware sidebar controls, adjustable opacity, and immediate collectible cache invalidation.
This commit is contained in:
@@ -9,6 +9,7 @@ import React, {
|
||||
import dayjs from 'dayjs';
|
||||
import { as, Box, Button, Chip, color, config, Header, IconButton, Input, Menu, MenuItem, PopOut, RectCords, Scroll, Switch, Text, toRem } from 'folds';
|
||||
import { useSetAtom } from 'jotai';
|
||||
import { Range } from 'react-range';
|
||||
import { Icon, Icons } from '../../../components/icons';
|
||||
import { HexColorPicker } from 'react-colorful';
|
||||
import { isKeyHotkey } from 'is-hotkey';
|
||||
@@ -334,6 +335,66 @@ const emojiStyleNames: Record<EmojiStyle, string> = {
|
||||
[EmojiStyle.Twemoji]: 'Twemoji',
|
||||
};
|
||||
|
||||
function SidebarNameplate() {
|
||||
const [sidebarNameplateOpacity, setSidebarNameplateOpacity] = useSetting(
|
||||
settingsAtom,
|
||||
'sidebarNameplateOpacity'
|
||||
);
|
||||
|
||||
return (
|
||||
<Box direction="Column" gap="100">
|
||||
<Text size="L400">Collectibles</Text>
|
||||
<SequenceCard className={SequenceCardStyle} variant="SurfaceVariant" direction="Column">
|
||||
<SettingTile
|
||||
title="Sidebar Nameplate Opacity"
|
||||
description="Set to 0% to hide your equipped nameplate behind the bottom sidebar avatar."
|
||||
after={
|
||||
<Box gap="200" alignItems="Center" style={{ width: toRem(180) }}>
|
||||
<Range
|
||||
step={1}
|
||||
min={0}
|
||||
max={100}
|
||||
values={[sidebarNameplateOpacity]}
|
||||
onChange={(values) => setSidebarNameplateOpacity(values[0])}
|
||||
renderTrack={(params) => (
|
||||
<div
|
||||
{...params.props}
|
||||
style={{
|
||||
...params.props.style,
|
||||
width: '100%',
|
||||
height: toRem(8),
|
||||
borderRadius: toRem(4),
|
||||
background: `linear-gradient(to right, ${color.Primary.Main} ${sidebarNameplateOpacity}%, ${color.Surface.ContainerLine} ${sidebarNameplateOpacity}%)`,
|
||||
}}
|
||||
>
|
||||
{params.children}
|
||||
</div>
|
||||
)}
|
||||
renderThumb={(params) => (
|
||||
<div
|
||||
{...params.props}
|
||||
style={{
|
||||
...params.props.style,
|
||||
width: toRem(16),
|
||||
height: toRem(16),
|
||||
borderRadius: '50%',
|
||||
backgroundColor: color.Primary.Main,
|
||||
border: `${toRem(2)} solid ${color.Surface.Container}`,
|
||||
}}
|
||||
/>
|
||||
)}
|
||||
/>
|
||||
<Text size="T300" style={{ minWidth: toRem(32), textAlign: 'right' }}>
|
||||
{sidebarNameplateOpacity}%
|
||||
</Text>
|
||||
</Box>
|
||||
}
|
||||
/>
|
||||
</SequenceCard>
|
||||
</Box>
|
||||
);
|
||||
}
|
||||
|
||||
type EmojiStyleSelectorProps = {
|
||||
selected: EmojiStyle;
|
||||
onSelect: (style: EmojiStyle) => void;
|
||||
@@ -1222,6 +1283,7 @@ export function General({ requestClose }: GeneralProps) {
|
||||
<PageContent>
|
||||
<Box direction="Column" gap="700">
|
||||
<Appearance />
|
||||
<SidebarNameplate />
|
||||
<DateAndTime />
|
||||
<Editor />
|
||||
<Spaces />
|
||||
|
||||
Reference in New Issue
Block a user