120 lines
4.6 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-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>
<div class="embed-multifield-box">
<div data-inlined="1" class="embed-field-box">
<label class="is-sr-only" for="embedFieldTitle">
Field Title
</label>
<div class="is-flex">
<textarea
class="discord-field-title field-input message-input autoresize"
placeholder="Field Title..."
rows={1}
maxlength={256}
name="embed_field_title[]"
></textarea>
<button class="button is-small inline-btn">
<span class="is-sr-only">Toggle field inline</span>
<i class="fas fa-arrows-h"></i>
</button>
</div>
<label class="is-sr-only" for="embedFieldValue">
Field Value
</label>
<textarea
class="discord-field-value field-input message-input autoresize "
placeholder="Field Value..."
maxlength={1024}
name="embed_field_value[]"
rows={1}
></textarea>
</div>
</div>
</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>
);
};