diff --git a/web/src/components/EmojiReaction/EmojiReaction.js b/web/src/components/EmojiReaction/EmojiReaction.js
new file mode 100644
index 0000000..83fb7b3
--- /dev/null
+++ b/web/src/components/EmojiReaction/EmojiReaction.js
@@ -0,0 +1,73 @@
+import { useState } from 'react'
+import Fab from '@material-ui/core/Fab'
+import IconButton from '@material-ui/core/IconButton'
+import Popover from '@material-ui/core/Popover'
+import Svg from 'src/components/Svg'
+
+const emojiMenu = ['🏆', '❤️', '👍', '😊', '😄', '🚀', '👏', '🙌']
+
+const EmojiReaction = ({ emotes, callback = () => {} }) => {
+ const [isOpen, setIsOpen] = useState(false)
+ const [anchorEl, setAnchorEl] = useState(null)
+ const [popoverId, setPopoverId] = useState(undefined)
+
+ const openPopover = (target) => {
+ setAnchorEl(target)
+ setPopoverId('simple-popover')
+ setIsOpen(true)
+ }
+
+ const closePopover = () => {
+ setAnchorEl(null)
+ setPopoverId(undefined)
+ setIsOpen(false)
+ }
+
+ const togglePopover = ({ currentTarget }) => {
+ if (isOpen) {
+ return closePopover()
+ }
+
+ openPopover(currentTarget)
+ }
+
+ const handleEmojiClick = (emoji) => {
+ callback(emoji)
+ closePopover()
+ }
+
+ return [
+
+
+
+
+
+ {emotes.map((emote) => (
+ handleEmojiClick(emote.emoji)}>
+ {emote.emoji} {emote.count}
+
+ ))}
+
+
,
+
+ {emojiMenu.map((emoji) => (
+ handleEmojiClick(emoji)}>{emoji}
+ ))}
+ ,
+ ]
+}
+
+export default EmojiReaction
diff --git a/web/src/components/EmojiReaction/EmojiReaction.stories.js b/web/src/components/EmojiReaction/EmojiReaction.stories.js
new file mode 100644
index 0000000..1f0c8ab
--- /dev/null
+++ b/web/src/components/EmojiReaction/EmojiReaction.stories.js
@@ -0,0 +1,7 @@
+import EmojiReaction from './EmojiReaction'
+
+export const generated = () => {
+ return
+}
+
+export default { title: 'Components/EmojiReaction' }
diff --git a/web/src/components/EmojiReaction/EmojiReaction.test.js b/web/src/components/EmojiReaction/EmojiReaction.test.js
new file mode 100644
index 0000000..f034533
--- /dev/null
+++ b/web/src/components/EmojiReaction/EmojiReaction.test.js
@@ -0,0 +1,11 @@
+import { render } from '@redwoodjs/testing'
+
+import EmojiReaction from './EmojiReaction'
+
+describe('EmojiReaction', () => {
+ it('renders successfully', () => {
+ expect(() => {
+ render()
+ }).not.toThrow()
+ })
+})
diff --git a/web/src/components/Svg/Svg.js b/web/src/components/Svg/Svg.js
index 8212212..43ec2ff 100644
--- a/web/src/components/Svg/Svg.js
+++ b/web/src/components/Svg/Svg.js
@@ -9,6 +9,9 @@ const Svg = ({name, className: className2, strokeWidth = 2}) => {
,
"pencil": ,
+ "dots-vertical":
}