91 lines
3.1 KiB
TypeScript
Raw Normal View History

2023-10-29 12:47:16 +00:00
import { Author } from "./Author";
import { Title } from "./Title";
import { Description } from "./Description";
2023-10-30 18:07:07 +00:00
import { Footer } from "./Footer";
import { Color } from "./Color";
2023-11-10 15:31:04 +00:00
import { Fields } from "./Fields";
2023-10-30 20:31:07 +00:00
import { Reminder } from "../../../api";
2023-11-03 19:17:16 +00:00
import { ImagePicker } from "../ImagePicker";
2023-11-05 12:41:59 +00:00
import { useReminder } from "../ReminderContext";
2023-10-30 20:31:07 +00:00
2023-11-03 22:40:57 +00:00
function intToColor(num: number) {
return `#${num.toString(16).padStart(6, "0")}`;
2023-10-30 20:31:07 +00:00
}
2023-11-03 22:40:57 +00:00
const DEFAULT_COLOR = 9418359;
2023-11-05 12:41:59 +00:00
export const Embed = () => {
const [reminder, setReminder] = useReminder();
2023-10-29 12:47:16 +00:00
return (
2023-11-03 22:40:57 +00:00
<div
class="discord-embed"
style={{
borderLeftColor: intToColor(reminder.embed_color || DEFAULT_COLOR),
}}
>
2023-10-29 12:47:16 +00:00
<div class="embed-body">
2023-10-30 20:31:07 +00:00
<Color
2023-11-03 22:40:57 +00:00
color={intToColor(reminder.embed_color || DEFAULT_COLOR)}
setReminder={setReminder}
2023-10-30 20:31:07 +00:00
></Color>
2023-10-29 12:47:16 +00:00
<div class="a">
2023-11-03 22:40:57 +00:00
<Author
name={reminder.embed_author}
icon={reminder.embed_author_url}
setReminder={setReminder}
></Author>
2023-10-30 20:31:07 +00:00
<Title
title={reminder.embed_title}
2023-11-04 23:05:44 +00:00
onInput={(title: string) =>
2023-10-30 20:31:07 +00:00
setReminder((reminder: Reminder) => ({
...reminder,
embed_title: title,
}))
}
></Title>
2023-10-29 12:47:16 +00:00
<br></br>
2023-10-30 20:31:07 +00:00
<Description
description={reminder.embed_description}
2023-11-04 23:05:44 +00:00
onInput={(description: string) =>
2023-10-30 20:31:07 +00:00
setReminder((reminder: Reminder) => ({
...reminder,
embed_description: description,
}))
}
></Description>
2023-10-29 12:47:16 +00:00
<br></br>
2023-11-10 15:31:04 +00:00
<Fields />
2023-10-29 12:47:16 +00:00
</div>
<div class="b">
<p class="image thumbnail customizable">
2023-11-03 19:17:16 +00:00
<ImagePicker
class="embed_thumbnail_url"
2023-11-03 22:40:57 +00:00
url={reminder.embed_thumbnail_url}
2023-11-03 19:17:16 +00:00
alt="Square thumbnail embedded image"
setImage={() => {}}
></ImagePicker>
2023-10-29 12:47:16 +00:00
</p>
</div>
</div>
<p class="image is-400x300 customizable">
2023-11-03 19:17:16 +00:00
<ImagePicker
class="embed_image_url"
2023-11-03 22:40:57 +00:00
url={reminder.embed_image_url}
2023-11-03 19:17:16 +00:00
alt="Large embedded image"
setImage={() => {}}
></ImagePicker>
2023-10-29 12:47:16 +00:00
</p>
2023-11-03 22:40:57 +00:00
<Footer
footer={reminder.embed_footer}
icon={reminder.embed_footer_url}
setReminder={setReminder}
></Footer>
2023-10-29 12:47:16 +00:00
</div>
);
};