|
1 | 1 | # @discord-message-components/react
|
| 2 | + |
| 3 | +## Installation and usage |
| 4 | + |
| 5 | + |
| 6 | + |
| 7 | +```sh |
| 8 | +yarn add @discord-message-components/react |
| 9 | +# or npm install @discord-message-components/react |
| 10 | +``` |
| 11 | + |
| 12 | +```js |
| 13 | +import React from 'react' |
| 14 | +import { |
| 15 | + DiscordDefaultOptions, |
| 16 | + DiscordInteraction, |
| 17 | + DiscordMarkdown, |
| 18 | + DiscordMention, |
| 19 | + DiscordMessage, |
| 20 | + DiscordMessages, |
| 21 | + DiscordOptionsContext, |
| 22 | + DiscordReaction, |
| 23 | + DiscordReactions, |
| 24 | +} from '@discord-message-components/react' |
| 25 | +import '@discord-message-components/react/styles' |
| 26 | + |
| 27 | +// Extend the default options in order to provide your own |
| 28 | +const discordOptions = { |
| 29 | + ...DiscordDefaultOptions, |
| 30 | + profiles: { |
| 31 | + sanc: { |
| 32 | + author: 'Sanc', |
| 33 | + avatar: 'https://i.imgur.com/0TeacfY.png', |
| 34 | + roleColor: '#0099ff', |
| 35 | + }, |
| 36 | + }, |
| 37 | +} |
| 38 | + |
| 39 | +export default function App() { |
| 40 | + return ( |
| 41 | + <DiscordOptionsContext.Provider value={discordOptions}> |
| 42 | + <DiscordMessages> |
| 43 | + <DiscordMessage profile="sanc"> |
| 44 | + Hey, <DiscordMention highlight={true} /> and <DiscordMention>Dawn</DiscordMention>. Welcome to our server! |
| 45 | + <div slot="reactions"> |
| 46 | + <DiscordReactions> |
| 47 | + <DiscordReaction name="blobreach" image="https://i.imgur.com/DUAI5Pu.png" count={2} active={true} /> |
| 48 | + </DiscordReactions> |
| 49 | + </div> |
| 50 | + </DiscordMessage> |
| 51 | + <DiscordMessage author="Dawn" avatar="red"> |
| 52 | + Thank you <DiscordMention profile="sanc" />! |
| 53 | + </DiscordMessage> |
| 54 | + <DiscordMessage> |
| 55 | + Thanks! How's it going? |
| 56 | + </DiscordMessage> |
| 57 | + <DiscordMessage bot={true} author="Rinon" avatar="https://i.imgur.com/axQ9wJl.png" role-color="violet"> |
| 58 | + <div slot="interactions"> |
| 59 | + <DiscordInteraction profile="sanc" command={true}>8ball</DiscordInteraction> |
| 60 | + </div> |
| 61 | + <DiscordMarkdown> |
| 62 | + **Question**: How am I doing today? |
| 63 | + {'\n'} |
| 64 | + **Answer**: Yes. |
| 65 | + </DiscordMarkdown> |
| 66 | + </DiscordMessage> |
| 67 | + </DiscordMessages> |
| 68 | + </DiscordOptionsContext.Provider> |
| 69 | + ) |
| 70 | +} |
| 71 | +``` |
| 72 | +
|
| 73 | +### Upgrading from @danktuary/react-discord-message |
| 74 | +
|
| 75 | +The components have been kept mostly the same from [`@danktuary/react-discord-message`](https://github.com/Danktuary/react-discord-message), with many improvements and some breaking changes. |
| 76 | +
|
| 77 | +**New**: |
| 78 | +- Components: `DiscordButton(s)`, `DiscordInteraction`, `DiscordMarkdown`, and `DiscordReaction(s)` |
| 79 | +- Slots inside the `DiscordMessage` component: `actions` for buttons, `interactions` for replies and slash commands, `reactions` for reactions |
| 80 | +
|
| 81 | +**Breaking**: |
| 82 | +- These component props have been renamed: |
| 83 | + - `DiscordEmbed#authorImage` -> `DiscordEmbed#authorIcon` |
| 84 | + - `DiscordEmbed#color` -> `DiscordEmbed#borderColor` |
| 85 | + - `DiscordEmbed#footerImage` -> `DiscordEmbed#footerIcon` |
| 86 | + - `DiscordEmbed#title` -> `DiscordEmbed#embedTitle` |
| 87 | + - `Mention#color` -> `DiscordMention#roleColor` |
| 88 | +
|
| 89 | +<details> |
| 90 | +<summary>These HTML elements/CSS selectors have been moved around:</summary> |
| 91 | +
|
| 92 | +- `.discord-author-info .discord-bot-tag` -> `.discord-author-info .discord-author-bot-tag` |
| 93 | +- `.discord-embed .discord-left-border` -> `.discord-embed .discord-embed-left-border` |
| 94 | +- `.discord-embed .discord-author-image` -> `.discord-embed .discord-embed-author-icon` |
| 95 | +- `.discord-embed-footer .discord-footer-image` -> `.discord-embed-footer .discord-embed-footer-icon` |
| 96 | +- `.discord-embed-footer .discord-footer-separator` -> `.discord-embed-footer .discord-embed-footer-separator` |
| 97 | +- `.discord-embed-footer .discord-footer-separator` -> `.discord-embed-footer .discord-embed-footer-separator` |
| 98 | +- `.discord-embed-field .discord-inline-field` -> `.discord-embed-field .discord-embed-field-inline` |
| 99 | +- `.discord-embed-field .discord-field-title` -> `.discord-embed-field .discord-embed-field-title` |
| 100 | +- `.discord-message > .discord-author-image` -> `.discord-message > .discord-message-content .discord-author-avatar` |
| 101 | +- `.discord-compact-mode .discord-message-content > .discord-message-timestamp` -> `.discord-compact-mode .discord-message-content .discord-message-body .discord-message-timestamp` |
| 102 | +- `.discord-message-content .discord-embed` -> `.discord-message-content .discord-message-body .discord-embed` |
| 103 | +
|
| 104 | +</details> |
0 commit comments