mirror of
https://github.com/m1ngsama/chat-bubbles-for-yt.git
synced 2025-12-24 10:51:21 +00:00
Added stroke colours.
This commit is contained in:
parent
06e2b0a003
commit
c40ab4f703
3 changed files with 22 additions and 10 deletions
24
src/App.jsx
24
src/App.jsx
|
|
@ -11,7 +11,8 @@ import React from 'react'
|
||||||
function App() {
|
function App() {
|
||||||
const [messages, addMessage] = useMessages([])
|
const [messages, addMessage] = useMessages([])
|
||||||
const [newMessage, setNewMessage] = useState('')
|
const [newMessage, setNewMessage] = useState('')
|
||||||
const [colour, setColour] = useState('#f00')
|
const [fillColour, setFillColour] = useState('#eee')
|
||||||
|
const [strokeColour, setStrokeColour] = useState('#000')
|
||||||
|
|
||||||
const handleSubmit = useCallback(
|
const handleSubmit = useCallback(
|
||||||
bubbleHeight => {
|
bubbleHeight => {
|
||||||
|
|
@ -27,8 +28,13 @@ function App() {
|
||||||
[newMessage, messages]
|
[newMessage, messages]
|
||||||
)
|
)
|
||||||
|
|
||||||
const handleColourChange = (color) => {
|
const handleFillColourChange = (color) => {
|
||||||
setColour(color.hex);
|
setFillColour(color.hex);
|
||||||
|
console.log(color);
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleStrokeColourChange = (color) => {
|
||||||
|
setStrokeColour(color.hex);
|
||||||
console.log(color);
|
console.log(color);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -40,7 +46,7 @@ function App() {
|
||||||
<Chat>
|
<Chat>
|
||||||
<AnimatePresence>
|
<AnimatePresence>
|
||||||
{messages.map(m => (
|
{messages.map(m => (
|
||||||
<Bubble key={m.id} id={m.id} dy={dy} colourClass={colour}>
|
<Bubble key={m.id} id={m.id} dy={dy} fillColour={fillColour} strokeColour={strokeColour}>
|
||||||
{m.text}
|
{m.text}
|
||||||
</Bubble>
|
</Bubble>
|
||||||
))}
|
))}
|
||||||
|
|
@ -49,11 +55,17 @@ function App() {
|
||||||
value={newMessage}
|
value={newMessage}
|
||||||
onChange={setNewMessage}
|
onChange={setNewMessage}
|
||||||
onSubmit={handleSubmit}
|
onSubmit={handleSubmit}
|
||||||
colourClass={colour}
|
fillColour={fillColour}
|
||||||
|
strokeColour={strokeColour}
|
||||||
/>
|
/>
|
||||||
</Chat>
|
</Chat>
|
||||||
|
|
||||||
<SketchPicker className="picker" color={colour} onChange={handleColourChange}/>
|
<div className="picker">
|
||||||
|
<p>Fill</p>
|
||||||
|
<SketchPicker color={fillColour} onChange={handleFillColourChange}/>
|
||||||
|
<p>Stroke</p>
|
||||||
|
<SketchPicker color={strokeColour} onChange={handleStrokeColourChange}/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import React, { useCallback, useState, useRef, useEffect } from 'react'
|
import React, { useCallback, useState, useRef, useEffect } from 'react'
|
||||||
import './bubble-input.css'
|
import './bubble-input.css'
|
||||||
|
|
||||||
const BubbleInput = ({ onChange, onSubmit, value, colourClass }) => {
|
const BubbleInput = ({ onChange, onSubmit, value, fillColour, strokeColour }) => {
|
||||||
const refEditable = useRef()
|
const refEditable = useRef()
|
||||||
const refContainer = useRef()
|
const refContainer = useRef()
|
||||||
const [submitted, setSubmitted] = useState(false)
|
const [submitted, setSubmitted] = useState(false)
|
||||||
|
|
@ -42,7 +42,7 @@ const BubbleInput = ({ onChange, onSubmit, value, colourClass }) => {
|
||||||
ref={refEditable}
|
ref={refEditable}
|
||||||
className="bubble-content"
|
className="bubble-content"
|
||||||
contentEditable
|
contentEditable
|
||||||
style={{backgroundColor: colourClass}}
|
style={{backgroundColor: fillColour, color: strokeColour}}
|
||||||
spellCheck="false"
|
spellCheck="false"
|
||||||
onBlur={handleBlur}
|
onBlur={handleBlur}
|
||||||
onKeyDown={handleKeyDown}
|
onKeyDown={handleKeyDown}
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ const transition = {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const Bubble = ({ id, children, sender, dy, colourClass }) => {
|
const Bubble = ({ id, children, sender, dy, fillColour, strokeColour }) => {
|
||||||
const [isPresent, safeToRemove] = usePresence()
|
const [isPresent, safeToRemove] = usePresence()
|
||||||
|
|
||||||
const animations = {
|
const animations = {
|
||||||
|
|
@ -32,7 +32,7 @@ const Bubble = ({ id, children, sender, dy, colourClass }) => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<motion.div key={id} className="bubble" {...animations}>
|
<motion.div key={id} className="bubble" {...animations}>
|
||||||
<div className="bubble-content" style={{backgroundColor: colourClass}}>{children}</div>
|
<div className="bubble-content" style={{backgroundColor: fillColour, color: strokeColour}}>{children}</div>
|
||||||
</motion.div>
|
</motion.div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue