···1616import NumberInput from "@/components/inputs/number-input";
1717import SelectMenu from "@/components/inputs/select-menu";
1818import Switch from "@/components/inputs/switch";
1919+import TextInput from "@/components/inputs/text-input";
1920import { ScreenMessage } from "@/components/screen-message";
2021import { cacheOptions, getData } from "@/lib/api";
2122import SadWumpusPic from "@/public/sad-wumpus.gif";
···208209 onSave={(o) => edit("emoji", o.value as string)}
209210 />
210211 </div>
211211-212212 <div className="lg:w-1/2">
213213 <SelectMenu
214214 name="Profile display style"
···269269 max={500}
270270 disabled={!data.enabled}
271271 onSave={(o) => edit("blacklistChannelIds", o.map(({ value }) => value as string))}
272272+ />
273273+ </div>
274274+ </div>
275275+276276+ <div className="lg:flex gap-3">
277277+ <div className="w-1/2">
278278+ <TextInput
279279+ name="Color"
280280+ url={url}
281281+ dataName="embedColor"
282282+ description="Color used for the side of the embed."
283283+ type="color"
284284+ defaultState={data.embedColor ?? 0}
285285+ onSave={(o) => edit("embedColor", o as number)}
272286 />
273287 </div>
274288 </div>
+80-89
app/profile/rank/page.tsx
···15151616 if (user?.id && !user.extended) return <></>;
17171818- return (
1919- <div>
1818+ return (<>
1919+ <div className="lg:flex gap-3">
2020+ <div className="lg:w-1/2">
2121+ <SelectInput
2222+ name="Secondary text"
2323+ url="/users/@me/rank"
2424+ dataName="subText.type"
2525+ description="This text will be displayed bellow the /rank progressbar."
2626+ items={[
2727+ {
2828+ name: "None",
2929+ value: 0
3030+ },
3131+ {
3232+ name: "ETA to next milestone reach date",
3333+ value: 1
3434+ },
3535+ {
3636+ name: "ETA to next milestone reach relative date",
3737+ value: 2
3838+ },
3939+ {
4040+ name: "Custom text",
4141+ value: 3,
4242+ error: "Not done yet"
4343+ }
4444+ ]}
4545+ defaultState={user?.extended?.rank?.subText?.type}
4646+ onSave={(options) => {
4747+ userStore.setState(deepMerge<User>(user, { extended: { rank: { subText: { type: Number(options.value) as 0 | 1 | 2 | 3 } } } }));
4848+ }}
4949+ />
5050+ </div>
20512121- <div className="lg:flex gap-3">
2222- <div className="lg:w-1/2">
2323- <SelectInput
2424- name="Secondary text"
5252+ <div className="lg:w-1/2 flex gap-2 w-full">
5353+ <div className="w-1/2">
5454+ <TextInput
5555+ name="Text color"
2556 url="/users/@me/rank"
2626- dataName="subText.type"
2727- description="This text will be displayed bellow the /rank progressbar."
2828- items={[
2929- {
3030- name: "None",
3131- value: 0
3232- },
3333- {
3434- name: "ETA to next milestone reach date",
3535- value: 1
3636- },
3737- {
3838- name: "ETA to next milestone reach relative date",
3939- value: 2
4040- },
4141- {
4242- name: "Custom text",
4343- value: 3,
4444- error: "Not done yet"
4545- }
4646- ]}
4747- defaultState={user?.extended?.rank?.subText?.type}
4848- onSave={(options) => {
4949- userStore.setState(deepMerge<User>(user, { extended: { rank: { subText: { type: Number(options.value) as 0 | 1 | 2 | 3 } } } }));
5757+ dataName="textColor"
5858+ description="Color used for your username."
5959+ type="color"
6060+ defaultState={user?.extended?.rank?.textColor ?? 0}
6161+ onSave={(value) => {
6262+ userStore.setState(deepMerge<User>(user, { extended: { rank: { textColor: Number(value) } } }));
5063 }}
5164 />
5265 </div>
5353-5454- <div className="lg:w-1/2 flex gap-2 w-full">
5555-5656- <div className="w-1/2">
5757- <TextInput
5858- key="textColor"
5959- name="Text color"
6060- url="/users/@me/rank"
6161- dataName="textColor"
6262- description="Color used for your username."
6363- type="color"
6464- defaultState={user?.extended?.rank?.textColor ?? 0}
6565- onSave={(value) => {
6666- userStore.setState(deepMerge<User>(user, { extended: { rank: { textColor: Number(value) } } }));
6767- }}
6868- />
6969- </div>
7070-7171- <div className="w-1/2">
7272- <TextInput
7373- key="barColor"
7474- name="Bar color"
7575- url="/users/@me/rank"
7676- dataName="barColor"
7777- description="Color used for the progress bar."
7878- type="color"
7979- defaultState={user?.extended?.rank?.barColor ?? 0}
8080- onSave={(value) => {
8181- userStore.setState(deepMerge<User>(user, { extended: { rank: { barColor: Number(value) } } }));
8282- }}
8383- />
8484- </div>
8585-6666+ <div className="w-1/2">
6767+ <TextInput
6868+ name="Bar color"
6969+ url="/users/@me/rank"
7070+ dataName="barColor"
7171+ description="Color used for the progress bar."
7272+ type="color"
7373+ defaultState={user?.extended?.rank?.barColor ?? 0}
7474+ onSave={(value) => {
7575+ userStore.setState(deepMerge<User>(user, { extended: { rank: { barColor: Number(value) } } }));
7676+ }}
7777+ />
8678 </div>
8779 </div>
8888-8989- <ImageUrlInput
9090- name="Background"
9191- url="/users/@me/rank"
9292- ratio="aspect-[4/1]"
9393- dataName="background"
9494- description="Enter a url which should be the background of your /rank card. The recomended image ration is 4:1 and recommended resolution 1024x256px."
9595- defaultState={user?.extended?.rank?.background || ""}
9696- onSave={(value) => {
9797- userStore.setState(deepMerge<User>(user, { extended: { rank: { background: value } } }));
9898- }}
9999- />
8080+ </div>
10081101101- <Section
102102- title="/leaderboard style"
103103- >
104104- Choose how your personal /leaderboard should look like.
105105- </Section>
8282+ <ImageUrlInput
8383+ name="Background"
8484+ url="/users/@me/rank"
8585+ ratio="aspect-[4/1]"
8686+ dataName="background"
8787+ description="Enter a url which should be the background of your /rank card. The recomended image ration is 4:1 and recommended resolution 1024x256px."
8888+ defaultState={user?.extended?.rank?.background || ""}
8989+ onSave={(value) => {
9090+ userStore.setState(deepMerge<User>(user, { extended: { rank: { background: value } } }));
9191+ }}
9292+ />
10693107107- <LeaderboardStyle />
9494+ <Section
9595+ title="/leaderboard style"
9696+ >
9797+ Choose how your personal /leaderboard should look like.
9898+ </Section>
10899109109- <Section
110110- title="Web leaderboard card style"
111111- >
112112- Customize your card for web leaderboards.
113113- </Section>
100100+ <LeaderboardStyle />
114101115115- <CardSyle />
102102+ <Section
103103+ title="Web leaderboard card style"
104104+ >
105105+ Customize your card for web leaderboards.
106106+ </Section>
116107117117- </div>
118118- );
108108+ <CardSyle />
109109+ </>);
119110}
+3
public/docs/starboard.md
···5151- Guild Nickname & Per-Guild Avatar (`Luna`)
5252- Anonymous (removes the username & avatar)
53535454+### ⭐ Custom color
5555+Select any RGB color for the message embed.
5656+5457### 🤚 Blacklist roles
5558Specify roles that are restricted from starring other people's messages and prevent their own messages from appearing on the starboard.
5659