import { For, Match, Show, Switch, createSignal } from "solid-js"; import { Trans } from "@lingui-solid/solid/macro"; import { css } from "styled-system/css"; import { styled } from "styled-system/jsx"; import { useUser } from "@revolt/client"; import { UNICODE_EMOJI_PACKS, UnicodeEmoji, UnicodeEmojiPacks, } from "@revolt/markdown/emoji/UnicodeEmoji"; import { useState } from "@revolt/state"; import { Avatar, Button, Checkbox, Column, IconButton, MenuItem, MessageContainer, Row, Slider, Text, TextField, } from "@revolt/ui"; import { FONT_KEYS, Fonts, MONOSPACE_FONT_KEYS, MonospaceFonts, } from "@revolt/ui/themes/fonts"; import MDPalette from "@material-design-icons/svg/outlined/palette.svg?component-solid"; /** * All appearance options for the client */ export function AppearanceMenu() { const user = useUser(); const state = useState(); const [pickerRef, setPickerRef] = createSignal(); return ( Welcome to the new appearance menu, custom themes are not available just yet but we are looking for feedback on how to best implement them! Colours {/* */} pickerRef()?.click()} > { const colour = (e.currentTarget as HTMLInputElement).value; state.theme.setM3Accent(colour); }} style={{ position: "absolute", opacity: 0, width: "0px", height: "0px", padding: 0, border: "none", }} /> {(colour) => ( {/* */} Display & Text Enable transparency glass/blur effects (slow on older machines) } timestamp={new Date()} username={user()?.displayName} isLink="hide" > Sphinx of black quartz, judge my vow } timestamp={new Date()} username={"MysticPixie"} isLink="hide" > The quick brown fox jumped over the lazy dog Message Size (state.theme.messageSize = event.currentTarget.value) } /> Message Group Spacing (state.theme.messageGroupSpacing = event.currentTarget.value) } /> Interface Font state.theme.setInterfaceFont(e.currentTarget.value as Fonts) } > {(key) => {key}} Monospace Font state.theme.setMonospaceFont(e.currentTarget.value as MonospaceFonts) } > {(key) => {key}} Chat Input state.settings.setValue( "appearance:show_send_button", event.currentTarget.checked, ) } > Show send message button Emoji Pack (affects your messages only) state.settings.setValue( "appearance:unicode_emoji", e.currentTarget.value as never, ) } > {(pack) => } ); } /** * Render an individual emoji pack * @param pack Pack */ function EmojiPack(props: { pack: UnicodeEmojiPacks }) { return ( Fluent 3D Fluent Color Fluent Flat Mutant Remix Noto OpenMoji Twemoji ); } const Preview = styled("div", { base: { height: "126px", overflow: "hidden", borderRadius: "var(--borderRadius-lg)", background: "var(--md-sys-color-surface-container-highest)", }, }); const MessagePreview = styled("div", { base: { display: "flex", flexDirection: "column", padding: "var(--gap-md)", gap: "var(--message-group-spacing)", }, });