diff --git a/bt/theme1/filled/button.css b/bt/theme1/filled/button.css new file mode 100644 index 0000000..e9636fd --- /dev/null +++ b/bt/theme1/filled/button.css @@ -0,0 +1,46 @@ +.ripple-button { + border-radius: 30px; + border: 1px solid; + margin: 8px; + padding: 5px 20px; + background: #81aedc; + color: #f0f5fb; + border-color: #89a8c9; + overflow: hidden; + position: relative; + gap: 10px; + } + +.ripple-button:hover{ + background-color: #5287bd; + border-color: #485e77; +} + + .ripple-button > .ripple { + width: 20px; + height: 20px; + position: absolute; + background: #7aa0c5; + display: block; + content: ""; + border-radius: 9999px; + opacity: 1; + animation: 0.9s ease 1 forwards ripple-effect; + } + + @keyframes ripple-effect { + 0% { + transform: scale(1); + opacity: 1; + } + 50% { + transform: scale(10); + opacity: 0.375; + } + 100% { + transform: scale(35); + opacity: 0; + } + } + + \ No newline at end of file diff --git a/bt/theme1/filled/button.jsx b/bt/theme1/filled/button.jsx new file mode 100644 index 0000000..528c818 --- /dev/null +++ b/bt/theme1/filled/button.jsx @@ -0,0 +1,61 @@ +import React from "react"; +import './button.css'; + +export default function Theme1filled({ onClick }) { + const [coords, setCoords] = React.useState({ x: -1, y: -1 }); + const [isRippling, setIsRippling] = React.useState(false); + const [isDisabled, setIsDisabled] = React.useState(false); + const [backgroundColor, setBackgroundColor] = React.useState(''); + const [textColor, setTextColor] = React.useState(''); // New state for text color + const [borderColor, setBorderColor] = React.useState(''); // New state for border color + + React.useEffect(() => { + if (coords.x !== -1 && coords.y !== -1) { + setIsRippling(true); + + setTimeout(() => { + setIsRippling(false); + setIsDisabled(true); + setBackgroundColor('#415469'); + setTextColor('#8c97a4'); // Change text color + setBorderColor('#404955'); // Change border color + }, 300); + } else { + setIsRippling(false); + } + }, [coords]); + + React.useEffect(() => { + if (!isRippling) { + setCoords({ x: -1, y: -1 }); + } + }, [isRippling]); + + return ( + + ); +}; diff --git a/bt/theme1/ghost/button.css b/bt/theme1/ghost/button.css new file mode 100644 index 0000000..d978386 --- /dev/null +++ b/bt/theme1/ghost/button.css @@ -0,0 +1,46 @@ +.ripple-button { + border-radius: 30px; + border: 1px solid; + margin: 8px; + padding: 5px 20px; + background: #212630; + color: #7ba5d1; + border-color: #212630; + overflow: hidden; + position: relative; + gap: 10px; + } + +.ripple-button:hover{ + background-color: #212630; + border-color: #2b3340; +} + + .ripple-button > .ripple { + width: 20px; + height: 20px; + position: absolute; + background: #212630; + display: block; + content: ""; + border-radius: 9999px; + opacity: 1; + animation: 0.9s ease 1 forwards ripple-effect; + } + + @keyframes ripple-effect { + 0% { + transform: scale(1); + opacity: 1; + } + 50% { + transform: scale(10); + opacity: 0.375; + } + 100% { + transform: scale(35); + opacity: 0; + } + } + + \ No newline at end of file diff --git a/bt/theme1/ghost/button.jsx b/bt/theme1/ghost/button.jsx new file mode 100644 index 0000000..4edfa8e --- /dev/null +++ b/bt/theme1/ghost/button.jsx @@ -0,0 +1,61 @@ +import React from "react"; +import './button.css'; + +export default function Theme1ghost({ onClick }) { + const [coords, setCoords] = React.useState({ x: -1, y: -1 }); + const [isRippling, setIsRippling] = React.useState(false); + const [isDisabled, setIsDisabled] = React.useState(false); + const [backgroundColor, setBackgroundColor] = React.useState(''); + const [textColor, setTextColor] = React.useState(''); // New state for text color + const [borderColor, setBorderColor] = React.useState(''); // New state for border color + + React.useEffect(() => { + if (coords.x !== -1 && coords.y !== -1) { + setIsRippling(true); + + setTimeout(() => { + setIsRippling(false); + setIsDisabled(true); + setBackgroundColor('#212630'); + setTextColor('#41536a'); // Change text color + setBorderColor('#212630'); // Change border color + }, 300); + } else { + setIsRippling(false); + } + }, [coords]); + + React.useEffect(() => { + if (!isRippling) { + setCoords({ x: -1, y: -1 }); + } + }, [isRippling]); + + return ( + + ); +}; diff --git a/bt/theme1/link/button.css b/bt/theme1/link/button.css new file mode 100644 index 0000000..aeba4e1 --- /dev/null +++ b/bt/theme1/link/button.css @@ -0,0 +1,53 @@ +.ripple-button { + border-radius: 30px; + border: 1px solid; + margin: 8px; + padding: 5px 20px; + background: #16171d; + color: #6d92b8; + border-color: #16171d; + overflow: hidden; + position: relative; + gap: 10px; + } + +.ripple-button:hover{ + background-color: #16171d; + border-color: #16171d; + text-decoration: underline; +} + + .ripple-button > .ripple { + width: 20px; + height: 20px; + position: absolute; + background: #16171d; + display: block; + content: ""; + border-radius: 9999px; + opacity: 1; + animation: 0.9s ease 1 forwards ripple-effect; + text-decoration: underline; + } + + @keyframes ripple-effect { + 0% { + transform: scale(1); + opacity: 1; + } + 50% { + transform: scale(10); + opacity: 0.375; + } + 100% { + transform: scale(35); + opacity: 0; + } + } + + .ripple-button > .content { + position: relative; + z-index: 2; + color: white; + background-color: transparent; + } \ No newline at end of file diff --git a/bt/theme1/link/button.jsx b/bt/theme1/link/button.jsx new file mode 100644 index 0000000..e06656e --- /dev/null +++ b/bt/theme1/link/button.jsx @@ -0,0 +1,61 @@ +import React from "react"; +import './button.css'; + +export default function Theme1link({ onClick }) { + const [coords, setCoords] = React.useState({ x: -1, y: -1 }); + const [isRippling, setIsRippling] = React.useState(false); + const [isDisabled, setIsDisabled] = React.useState(false); + const [backgroundColor, setBackgroundColor] = React.useState(''); + const [textColor, setTextColor] = React.useState(''); // New state for text color + const [borderColor, setBorderColor] = React.useState(''); // New state for border color + + React.useEffect(() => { + if (coords.x !== -1 && coords.y !== -1) { + setIsRippling(true); + + setTimeout(() => { + setIsRippling(false); + setIsDisabled(true); + setBackgroundColor('#16171d'); + setTextColor('#2a3340'); // Change text color + setBorderColor('#16171d'); // Change border color + }, 300); + } else { + setIsRippling(false); + } + }, [coords]); + + React.useEffect(() => { + if (!isRippling) { + setCoords({ x: -1, y: -1 }); + } + }, [isRippling]); + + return ( + + ); +}; diff --git a/bt/theme1/outlined/button.css b/bt/theme1/outlined/button.css new file mode 100644 index 0000000..f898e0e --- /dev/null +++ b/bt/theme1/outlined/button.css @@ -0,0 +1,51 @@ +.ripple-button { + border-radius: 30px; + border: 1px solid; + margin: 8px; + padding: 5px 20px; + background: #16171d; + color: #516a86; + border-color: #7197bf; + overflow: hidden; + position: relative; + gap: 10px; + } + +.ripple-button:hover{ + background-color: #212630; + border-color: #6d91b8; +} + + .ripple-button > .ripple { + width: 20px; + height: 20px; + position: absolute; + background: #16171d; + display: block; + content: ""; + border-radius: 9999px; + opacity: 1; + animation: 0.9s ease 1 forwards ripple-effect; + } + + @keyframes ripple-effect { + 0% { + transform: scale(1); + opacity: 1; + } + 50% { + transform: scale(10); + opacity: 0.375; + } + 100% { + transform: scale(35); + opacity: 0; + } + } + + .ripple-button > .content { + position: relative; + z-index: 2; + color: white; + background-color: transparent; + } \ No newline at end of file diff --git a/bt/theme1/outlined/button.jsx b/bt/theme1/outlined/button.jsx new file mode 100644 index 0000000..5cf5ac6 --- /dev/null +++ b/bt/theme1/outlined/button.jsx @@ -0,0 +1,61 @@ +import React from "react"; +import './button.css'; + +export default function Theme1outlined({ onClick }) { + const [coords, setCoords] = React.useState({ x: -1, y: -1 }); + const [isRippling, setIsRippling] = React.useState(false); + const [isDisabled, setIsDisabled] = React.useState(false); + const [backgroundColor, setBackgroundColor] = React.useState(''); + const [textColor, setTextColor] = React.useState(''); // New state for text color + const [borderColor, setBorderColor] = React.useState(''); // New state for border color + + React.useEffect(() => { + if (coords.x !== -1 && coords.y !== -1) { + setIsRippling(true); + + setTimeout(() => { + setIsRippling(false); + setIsDisabled(true); + setBackgroundColor('#16171d'); + setTextColor('#3f5065'); // Change text color + setBorderColor('#384659'); // Change border color + }, 300); + } else { + setIsRippling(false); + } + }, [coords]); + + React.useEffect(() => { + if (!isRippling) { + setCoords({ x: -1, y: -1 }); + } + }, [isRippling]); + + return ( + + ); +}; diff --git a/bt/theme1/text/button.css b/bt/theme1/text/button.css new file mode 100644 index 0000000..452792a --- /dev/null +++ b/bt/theme1/text/button.css @@ -0,0 +1,51 @@ +.ripple-button { + border-radius: 30px; + border: 1px solid; + margin: 8px; + padding: 5px 20px; + background: #16171d; + color: #6d92b8; + border-color: #16171d; + overflow: hidden; + position: relative; + gap: 10px; + } + +.ripple-button:hover{ + background-color: #212630; + border-color: #212630; +} + + .ripple-button > .ripple { + width: 20px; + height: 20px; + position: absolute; + background: #7aa0c5; + display: block; + content: ""; + border-radius: 9999px; + opacity: 1; + animation: 0.9s ease 1 forwards ripple-effect; + } + + @keyframes ripple-effect { + 0% { + transform: scale(1); + opacity: 1; + } + 50% { + transform: scale(10); + opacity: 0.375; + } + 100% { + transform: scale(35); + opacity: 0; + } + } + + .ripple-button > .content { + position: relative; + z-index: 2; + color: white; + background-color: transparent; + } \ No newline at end of file diff --git a/bt/theme1/text/button.jsx b/bt/theme1/text/button.jsx new file mode 100644 index 0000000..3fc8ec5 --- /dev/null +++ b/bt/theme1/text/button.jsx @@ -0,0 +1,61 @@ +import React from "react"; +import './button.css'; + +export default function Theme1text({ onClick }) { + const [coords, setCoords] = React.useState({ x: -1, y: -1 }); + const [isRippling, setIsRippling] = React.useState(false); + const [isDisabled, setIsDisabled] = React.useState(false); + const [backgroundColor, setBackgroundColor] = React.useState(''); + const [textColor, setTextColor] = React.useState(''); // New state for text color + const [borderColor, setBorderColor] = React.useState(''); // New state for border color + + React.useEffect(() => { + if (coords.x !== -1 && coords.y !== -1) { + setIsRippling(true); + + setTimeout(() => { + setIsRippling(false); + setIsDisabled(true); + setBackgroundColor('#16171d'); + setTextColor('#3f5066'); // Change text color + setBorderColor('#16171d'); // Change border color + }, 300); + } else { + setIsRippling(false); + } + }, [coords]); + + React.useEffect(() => { + if (!isRippling) { + setCoords({ x: -1, y: -1 }); + } + }, [isRippling]); + + return ( + + ); +}; diff --git a/bt/theme2/filled/button.css b/bt/theme2/filled/button.css new file mode 100644 index 0000000..d1625ce --- /dev/null +++ b/bt/theme2/filled/button.css @@ -0,0 +1,46 @@ +.ripple-button { + border-radius: 30px; + border: 1px solid; + margin: 8px; + padding: 5px 20px; + background: #ffffff; + color: #262626; + border-color: #ffffff; + overflow: hidden; + position: relative; + gap: 10px; + } + +.ripple-button:hover{ + background-color: #cecece; + border-color: #b1b1b3; +} + + .ripple-button > .ripple { + width: 20px; + height: 20px; + position: absolute; + background: #dddddd; + display: block; + content: ""; + border-radius: 9999px; + opacity: 1; + animation: 0.9s ease 1 forwards ripple-effect; + } + + @keyframes ripple-effect { + 0% { + transform: scale(1); + opacity: 1; + } + 50% { + transform: scale(10); + opacity: 0.375; + } + 100% { + transform: scale(35); + opacity: 0; + } + } + + \ No newline at end of file diff --git a/bt/theme2/filled/button.jsx b/bt/theme2/filled/button.jsx new file mode 100644 index 0000000..e3763d4 --- /dev/null +++ b/bt/theme2/filled/button.jsx @@ -0,0 +1,61 @@ +import React from "react"; +import './button.css'; + +export default function Theme2filled({ onClick }) { + const [coords, setCoords] = React.useState({ x: -1, y: -1 }); + const [isRippling, setIsRippling] = React.useState(false); + const [isDisabled, setIsDisabled] = React.useState(false); + const [backgroundColor, setBackgroundColor] = React.useState(''); + const [textColor, setTextColor] = React.useState(''); // New state for text color + const [borderColor, setBorderColor] = React.useState(''); // New state for border color + + React.useEffect(() => { + if (coords.x !== -1 && coords.y !== -1) { + setIsRippling(true); + + setTimeout(() => { + setIsRippling(false); + setIsDisabled(true); + setBackgroundColor('#737477'); + setTextColor('#4a494f'); // Change text color + setBorderColor('#838487'); // Change border color + }, 300); + } else { + setIsRippling(false); + } + }, [coords]); + + React.useEffect(() => { + if (!isRippling) { + setCoords({ x: -1, y: -1 }); + } + }, [isRippling]); + + return ( + + ); +}; diff --git a/bt/theme2/ghost/button.css b/bt/theme2/ghost/button.css new file mode 100644 index 0000000..3c8ec40 --- /dev/null +++ b/bt/theme2/ghost/button.css @@ -0,0 +1,46 @@ +.ripple-button { + border-radius: 30px; + border: 1px solid; + margin: 8px; + padding: 5px 20px; + background: #2d2e34; + color: #e2e2e3; + border-color: #2d2e34; + overflow: hidden; + position: relative; + gap: 10px; + } + +.ripple-button:hover{ + background-color: #2d2e34; + border-color: #414247; +} + + .ripple-button > .ripple { + width: 20px; + height: 20px; + position: absolute; + background: #2d2e34; + display: block; + content: ""; + border-radius: 9999px; + opacity: 1; + animation: 0.9s ease 1 forwards ripple-effect; + } + + @keyframes ripple-effect { + 0% { + transform: scale(1); + opacity: 1; + } + 50% { + transform: scale(10); + opacity: 0.375; + } + 100% { + transform: scale(35); + opacity: 0; + } + } + + \ No newline at end of file diff --git a/bt/theme2/ghost/button.jsx b/bt/theme2/ghost/button.jsx new file mode 100644 index 0000000..a2855a3 --- /dev/null +++ b/bt/theme2/ghost/button.jsx @@ -0,0 +1,61 @@ +import React from "react"; +import './button.css'; + +export default function Theme2ghost({ onClick }) { + const [coords, setCoords] = React.useState({ x: -1, y: -1 }); + const [isRippling, setIsRippling] = React.useState(false); + const [isDisabled, setIsDisabled] = React.useState(false); + const [backgroundColor, setBackgroundColor] = React.useState(''); + const [textColor, setTextColor] = React.useState(''); // New state for text color + const [borderColor, setBorderColor] = React.useState(''); // New state for border color + + React.useEffect(() => { + if (coords.x !== -1 && coords.y !== -1) { + setIsRippling(true); + + setTimeout(() => { + setIsRippling(false); + setIsDisabled(true); + setBackgroundColor('#2d2e34'); + setTextColor('#7b7c80'); // Change text color + setBorderColor('#24252b'); // Change border color + }, 300); + } else { + setIsRippling(false); + } + }, [coords]); + + React.useEffect(() => { + if (!isRippling) { + setCoords({ x: -1, y: -1 }); + } + }, [isRippling]); + + return ( + + ); +}; diff --git a/bt/theme2/link/button.css b/bt/theme2/link/button.css new file mode 100644 index 0000000..b2200ea --- /dev/null +++ b/bt/theme2/link/button.css @@ -0,0 +1,53 @@ +.ripple-button { + border-radius: 30px; + border: 1px solid; + margin: 8px; + padding: 5px 20px; + background: #16171d; + color: #eaeaea; + border-color: #16171d; + overflow: hidden; + position: relative; + gap: 10px; + } + +.ripple-button:hover{ + background-color: #16171d; + border-color: #16171d; + text-decoration: underline; +} + + .ripple-button > .ripple { + width: 20px; + height: 20px; + position: absolute; + background: #16171d; + display: block; + content: ""; + border-radius: 9999px; + opacity: 1; + animation: 0.9s ease 1 forwards ripple-effect; + text-decoration: underline; + } + + @keyframes ripple-effect { + 0% { + transform: scale(1); + opacity: 1; + } + 50% { + transform: scale(10); + opacity: 0.375; + } + 100% { + transform: scale(35); + opacity: 0; + } + } + + .ripple-button > .content { + position: relative; + z-index: 2; + color: white; + background-color: transparent; + } \ No newline at end of file diff --git a/bt/theme2/link/button.jsx b/bt/theme2/link/button.jsx new file mode 100644 index 0000000..bc4c74f --- /dev/null +++ b/bt/theme2/link/button.jsx @@ -0,0 +1,61 @@ +import React from "react"; +import './button.css'; + +export default function Theme2link({ onClick }) { + const [coords, setCoords] = React.useState({ x: -1, y: -1 }); + const [isRippling, setIsRippling] = React.useState(false); + const [isDisabled, setIsDisabled] = React.useState(false); + const [backgroundColor, setBackgroundColor] = React.useState(''); + const [textColor, setTextColor] = React.useState(''); // New state for text color + const [borderColor, setBorderColor] = React.useState(''); // New state for border color + + React.useEffect(() => { + if (coords.x !== -1 && coords.y !== -1) { + setIsRippling(true); + + setTimeout(() => { + setIsRippling(false); + setIsDisabled(true); + setBackgroundColor('#16171d'); + setTextColor('#6e6f72'); // Change text color + setBorderColor('#16171d'); // Change border color + }, 300); + } else { + setIsRippling(false); + } + }, [coords]); + + React.useEffect(() => { + if (!isRippling) { + setCoords({ x: -1, y: -1 }); + } + }, [isRippling]); + + return ( + + ); +}; diff --git a/bt/theme2/outlined/button.css b/bt/theme2/outlined/button.css new file mode 100644 index 0000000..a41eba4 --- /dev/null +++ b/bt/theme2/outlined/button.css @@ -0,0 +1,51 @@ +.ripple-button { + border-radius: 30px; + border: 1px solid; + margin: 8px; + padding: 5px 20px; + background: #16171d; + color: #f9f9f9; + border-color: #6b6b6f; + overflow: hidden; + position: relative; + gap: 10px; + } + +.ripple-button:hover{ + background-color:#404147; + border-color: #6d91b8; +} + + .ripple-button > .ripple { + width: 20px; + height: 20px; + position: absolute; + background: #16171d; + display: block; + content: ""; + border-radius: 9999px; + opacity: 1; + animation: 0.9s ease 1 forwards ripple-effect; + } + + @keyframes ripple-effect { + 0% { + transform: scale(1); + opacity: 1; + } + 50% { + transform: scale(10); + opacity: 0.375; + } + 100% { + transform: scale(35); + opacity: 0; + } + } + + .ripple-button > .content { + position: relative; + z-index: 2; + color: white; + background-color: transparent; + } \ No newline at end of file diff --git a/bt/theme2/outlined/button.jsx b/bt/theme2/outlined/button.jsx new file mode 100644 index 0000000..10f667f --- /dev/null +++ b/bt/theme2/outlined/button.jsx @@ -0,0 +1,61 @@ +import React from "react"; +import './button.css'; + +export default function Theme2outlined({ onClick }) { + const [coords, setCoords] = React.useState({ x: -1, y: -1 }); + const [isRippling, setIsRippling] = React.useState(false); + const [isDisabled, setIsDisabled] = React.useState(false); + const [backgroundColor, setBackgroundColor] = React.useState(''); + const [textColor, setTextColor] = React.useState(''); // New state for text color + const [borderColor, setBorderColor] = React.useState(''); // New state for border color + + React.useEffect(() => { + if (coords.x !== -1 && coords.y !== -1) { + setIsRippling(true); + + setTimeout(() => { + setIsRippling(false); + setIsDisabled(true); + setBackgroundColor('#16171d'); + setTextColor('#626367'); // Change text color + setBorderColor('#545558'); // Change border color + }, 300); + } else { + setIsRippling(false); + } + }, [coords]); + + React.useEffect(() => { + if (!isRippling) { + setCoords({ x: -1, y: -1 }); + } + }, [isRippling]); + + return ( + + ); +}; diff --git a/bt/theme2/text/button.css b/bt/theme2/text/button.css new file mode 100644 index 0000000..917b7f8 --- /dev/null +++ b/bt/theme2/text/button.css @@ -0,0 +1,51 @@ +.ripple-button { + border-radius: 30px; + border: 1px solid; + margin: 8px; + padding: 5px 20px; + background: #16171d; + color: #bbbbbd; + border-color: #16171d; + overflow: hidden; + position: relative; + gap: 10px; + } + +.ripple-button:hover{ + background-color: #2d2e34; + border-color: #2d2e34; +} + + .ripple-button > .ripple { + width: 20px; + height: 20px; + position: absolute; + background: #25262c; + display: block; + content: ""; + border-radius: 9999px; + opacity: 1; + animation: 0.9s ease 1 forwards ripple-effect; + } + + @keyframes ripple-effect { + 0% { + transform: scale(1); + opacity: 1; + } + 50% { + transform: scale(10); + opacity: 0.375; + } + 100% { + transform: scale(35); + opacity: 0; + } + } + + .ripple-button > .content { + position: relative; + z-index: 2; + color: white; + background-color: transparent; + } \ No newline at end of file diff --git a/bt/theme2/text/button.jsx b/bt/theme2/text/button.jsx new file mode 100644 index 0000000..e198dfe --- /dev/null +++ b/bt/theme2/text/button.jsx @@ -0,0 +1,61 @@ +import React from "react"; +import './button.css'; + +export default function Theme2text({ onClick }) { + const [coords, setCoords] = React.useState({ x: -1, y: -1 }); + const [isRippling, setIsRippling] = React.useState(false); + const [isDisabled, setIsDisabled] = React.useState(false); + const [backgroundColor, setBackgroundColor] = React.useState(''); + const [textColor, setTextColor] = React.useState(''); // New state for text color + const [borderColor, setBorderColor] = React.useState(''); // New state for border color + + React.useEffect(() => { + if (coords.x !== -1 && coords.y !== -1) { + setIsRippling(true); + + setTimeout(() => { + setIsRippling(false); + setIsDisabled(true); + setBackgroundColor('#16171d'); + setTextColor('#6e6f72'); // Change text color + setBorderColor('#16171d'); // Change border color + }, 300); + } else { + setIsRippling(false); + } + }, [coords]); + + React.useEffect(() => { + if (!isRippling) { + setCoords({ x: -1, y: -1 }); + } + }, [isRippling]); + + return ( + + ); +}; diff --git a/bt/theme3/filled/button.css b/bt/theme3/filled/button.css new file mode 100644 index 0000000..174e8e9 --- /dev/null +++ b/bt/theme3/filled/button.css @@ -0,0 +1,46 @@ +.ripple-button { + border-radius: 30px; + border: 1px solid; + margin: 8px; + padding: 5px 20px; + background: #292929; + color: #fbfbfb; + border-color: #cdcdcd; + overflow: hidden; + position: relative; + gap: 10px; + } + +.ripple-button:hover{ + background-color: #111111; + border-color: #d1d1d1; +} + + .ripple-button > .ripple { + width: 20px; + height: 20px; + position: absolute; + background: #585858; + display: block; + content: ""; + border-radius: 9999px; + opacity: 1; + animation: 0.9s ease 1 forwards ripple-effect; + } + + @keyframes ripple-effect { + 0% { + transform: scale(1); + opacity: 1; + } + 50% { + transform: scale(10); + opacity: 0.375; + } + 100% { + transform: scale(35); + opacity: 0; + } + } + + \ No newline at end of file diff --git a/bt/theme3/filled/button.jsx b/bt/theme3/filled/button.jsx new file mode 100644 index 0000000..5c3da37 --- /dev/null +++ b/bt/theme3/filled/button.jsx @@ -0,0 +1,61 @@ +import React from "react"; +import './button.css'; + +export default function Theme3filled({ onClick }) { + const [coords, setCoords] = React.useState({ x: -1, y: -1 }); + const [isRippling, setIsRippling] = React.useState(false); + const [isDisabled, setIsDisabled] = React.useState(false); + const [backgroundColor, setBackgroundColor] = React.useState(''); + const [textColor, setTextColor] = React.useState(''); // New state for text color + const [borderColor, setBorderColor] = React.useState(''); // New state for border color + + React.useEffect(() => { + if (coords.x !== -1 && coords.y !== -1) { + setIsRippling(true); + + setTimeout(() => { + setIsRippling(false); + setIsDisabled(true); + setBackgroundColor('#878689'); + setTextColor('#b4b4b5'); // Change text color + setBorderColor('#99989b'); // Change border color + }, 300); + } else { + setIsRippling(false); + } + }, [coords]); + + React.useEffect(() => { + if (!isRippling) { + setCoords({ x: -1, y: -1 }); + } + }, [isRippling]); + + return ( + + ); +}; diff --git a/bt/theme3/ghost/button.css b/bt/theme3/ghost/button.css new file mode 100644 index 0000000..d30afd5 --- /dev/null +++ b/bt/theme3/ghost/button.css @@ -0,0 +1,46 @@ +.ripple-button { + border-radius: 30px; + border: 1px solid; + margin: 8px; + padding: 5px 20px; + background: #cdcdcd; + color: #151515; + border-color: #cdcdcd; + overflow: hidden; + position: relative; + gap: 10px; + } + +.ripple-button:hover{ + background-color: #cdcdcd; + border-color: #acacac; +} + + .ripple-button > .ripple { + width: 20px; + height: 20px; + position: absolute; + background: #cdcdcd; + display: block; + content: ""; + border-radius: 9999px; + opacity: 1; + animation: 0.9s ease 1 forwards ripple-effect; + } + + @keyframes ripple-effect { + 0% { + transform: scale(1); + opacity: 1; + } + 50% { + transform: scale(10); + opacity: 0.375; + } + 100% { + transform: scale(35); + opacity: 0; + } + } + + \ No newline at end of file diff --git a/bt/theme3/ghost/button.jsx b/bt/theme3/ghost/button.jsx new file mode 100644 index 0000000..3b4cc72 --- /dev/null +++ b/bt/theme3/ghost/button.jsx @@ -0,0 +1,61 @@ +import React from "react"; +import './button.css'; + +export default function Theme3ghost({ onClick }) { + const [coords, setCoords] = React.useState({ x: -1, y: -1 }); + const [isRippling, setIsRippling] = React.useState(false); + const [isDisabled, setIsDisabled] = React.useState(false); + const [backgroundColor, setBackgroundColor] = React.useState(''); + const [textColor, setTextColor] = React.useState(''); // New state for text color + const [borderColor, setBorderColor] = React.useState(''); // New state for border color + + React.useEffect(() => { + if (coords.x !== -1 && coords.y !== -1) { + setIsRippling(true); + + setTimeout(() => { + setIsRippling(false); + setIsDisabled(true); + setBackgroundColor('#cdcdcd'); + setTextColor('#79787b'); // Change text color + setBorderColor('#cdcdcd'); // Change border color + }, 300); + } else { + setIsRippling(false); + } + }, [coords]); + + React.useEffect(() => { + if (!isRippling) { + setCoords({ x: -1, y: -1 }); + } + }, [isRippling]); + + return ( + + ); +}; diff --git a/bt/theme3/link/button.css b/bt/theme3/link/button.css new file mode 100644 index 0000000..30f088b --- /dev/null +++ b/bt/theme3/link/button.css @@ -0,0 +1,53 @@ +.ripple-button { + border-radius: 30px; + border: 1px solid; + margin: 8px; + padding: 5px 20px; + background: #f6f6f6; + color: #282828; + border-color: #f6f6f6; + overflow: hidden; + position: relative; + gap: 10px; + } + +.ripple-button:hover{ + background-color: #f6f6f6; + border-color: #f6f6f6; + text-decoration: underline; +} + + .ripple-button > .ripple { + width: 20px; + height: 20px; + position: absolute; + background: #f6f6f6; + display: block; + content: ""; + border-radius: 9999px; + opacity: 1; + animation: 0.9s ease 1 forwards ripple-effect; + text-decoration: underline; + } + + @keyframes ripple-effect { + 0% { + transform: scale(1); + opacity: 1; + } + 50% { + transform: scale(10); + opacity: 0.375; + } + 100% { + transform: scale(35); + opacity: 0; + } + } + + .ripple-button > .content { + position: relative; + z-index: 2; + color: white; + background-color: transparent; + } \ No newline at end of file diff --git a/bt/theme3/link/button.jsx b/bt/theme3/link/button.jsx new file mode 100644 index 0000000..237739d --- /dev/null +++ b/bt/theme3/link/button.jsx @@ -0,0 +1,61 @@ +import React from "react"; +import './button.css'; + +export default function Theme3link({ onClick }) { + const [coords, setCoords] = React.useState({ x: -1, y: -1 }); + const [isRippling, setIsRippling] = React.useState(false); + const [isDisabled, setIsDisabled] = React.useState(false); + const [backgroundColor, setBackgroundColor] = React.useState(''); + const [textColor, setTextColor] = React.useState(''); // New state for text color + const [borderColor, setBorderColor] = React.useState(''); // New state for border color + + React.useEffect(() => { + if (coords.x !== -1 && coords.y !== -1) { + setIsRippling(true); + + setTimeout(() => { + setIsRippling(false); + setIsDisabled(true); + setBackgroundColor('#f6f6f6'); + setTextColor('#8f8e90'); // Change text color + setBorderColor('#f6f6f6'); // Change border color + }, 300); + } else { + setIsRippling(false); + } + }, [coords]); + + React.useEffect(() => { + if (!isRippling) { + setCoords({ x: -1, y: -1 }); + } + }, [isRippling]); + + return ( + + ); +}; diff --git a/bt/theme3/outlined/button.css b/bt/theme3/outlined/button.css new file mode 100644 index 0000000..086c0f6 --- /dev/null +++ b/bt/theme3/outlined/button.css @@ -0,0 +1,51 @@ +.ripple-button { + border-radius: 30px; + border: 1px solid; + margin: 8px; + padding: 5px 20px; + background: #f6f6f6; + color: #595959; + border-color: #858585; + overflow: hidden; + position: relative; + gap: 10px; + } + +.ripple-button:hover{ + background-color: #cdcdcd; + border-color: #858585; +} + + .ripple-button > .ripple { + width: 20px; + height: 20px; + position: absolute; + background: #f6f6f6; + display: block; + content: ""; + border-radius: 9999px; + opacity: 1; + animation: 0.9s ease 1 forwards ripple-effect; + } + + @keyframes ripple-effect { + 0% { + transform: scale(1); + opacity: 1; + } + 50% { + transform: scale(10); + opacity: 0.375; + } + 100% { + transform: scale(35); + opacity: 0; + } + } + + .ripple-button > .content { + position: relative; + z-index: 2; + color: white; + background-color: transparent; + } \ No newline at end of file diff --git a/bt/theme3/outlined/button.jsx b/bt/theme3/outlined/button.jsx new file mode 100644 index 0000000..e3b0d10 --- /dev/null +++ b/bt/theme3/outlined/button.jsx @@ -0,0 +1,61 @@ +import React from "react"; +import './button.css'; + +export default function Theme3outlined({ onClick }) { + const [coords, setCoords] = React.useState({ x: -1, y: -1 }); + const [isRippling, setIsRippling] = React.useState(false); + const [isDisabled, setIsDisabled] = React.useState(false); + const [backgroundColor, setBackgroundColor] = React.useState(''); + const [textColor, setTextColor] = React.useState(''); // New state for text color + const [borderColor, setBorderColor] = React.useState(''); // New state for border color + + React.useEffect(() => { + if (coords.x !== -1 && coords.y !== -1) { + setIsRippling(true); + + setTimeout(() => { + setIsRippling(false); + setIsDisabled(true); + setBackgroundColor('#f6f6f6'); + setTextColor('#929194'); // Change text color + setBorderColor('#cdcdcd9'); // Change border color + }, 300); + } else { + setIsRippling(false); + } + }, [coords]); + + React.useEffect(() => { + if (!isRippling) { + setCoords({ x: -1, y: -1 }); + } + }, [isRippling]); + + return ( + + ); +}; diff --git a/bt/theme3/text/button.css b/bt/theme3/text/button.css new file mode 100644 index 0000000..af8b687 --- /dev/null +++ b/bt/theme3/text/button.css @@ -0,0 +1,51 @@ +.ripple-button { + border-radius: 30px; + border: 1px solid; + margin: 8px; + padding: 5px 20px; + background: #f6f6f6; + color: #272727; + border-color: #f6f6f6; + overflow: hidden; + position: relative; + gap: 10px; + } + +.ripple-button:hover{ + background-color: #cdcdcd; + border-color: #cdcdcd; +} + + .ripple-button > .ripple { + width: 20px; + height: 20px; + position: absolute; + background: #f6f6f6; + display: block; + content: ""; + border-radius: 9999px; + opacity: 1; + animation: 0.9s ease 1 forwards ripple-effect; + } + + @keyframes ripple-effect { + 0% { + transform: scale(1); + opacity: 1; + } + 50% { + transform: scale(10); + opacity: 0.375; + } + 100% { + transform: scale(35); + opacity: 0; + } + } + + .ripple-button > .content { + position: relative; + z-index: 2; + color: white; + background-color: transparent; + } \ No newline at end of file diff --git a/bt/theme3/text/button.jsx b/bt/theme3/text/button.jsx new file mode 100644 index 0000000..4ff4cf0 --- /dev/null +++ b/bt/theme3/text/button.jsx @@ -0,0 +1,61 @@ +import React from "react"; +import './button.css'; + +export default function Theme3text({ onClick }) { + const [coords, setCoords] = React.useState({ x: -1, y: -1 }); + const [isRippling, setIsRippling] = React.useState(false); + const [isDisabled, setIsDisabled] = React.useState(false); + const [backgroundColor, setBackgroundColor] = React.useState(''); + const [textColor, setTextColor] = React.useState(''); // New state for text color + const [borderColor, setBorderColor] = React.useState(''); // New state for border color + + React.useEffect(() => { + if (coords.x !== -1 && coords.y !== -1) { + setIsRippling(true); + + setTimeout(() => { + setIsRippling(false); + setIsDisabled(true); + setBackgroundColor('#f6f6f6'); + setTextColor('#908f91'); // Change text color + setBorderColor('#f6f6f6'); // Change border color + }, 300); + } else { + setIsRippling(false); + } + }, [coords]); + + React.useEffect(() => { + if (!isRippling) { + setCoords({ x: -1, y: -1 }); + } + }, [isRippling]); + + return ( + + ); +}; diff --git a/ic/1st/filled/button.css b/ic/1st/filled/button.css new file mode 100644 index 0000000..57dd6dd --- /dev/null +++ b/ic/1st/filled/button.css @@ -0,0 +1,50 @@ +.ripple-button { + border-radius: 30px; + border: 1px solid; + margin: 8px; + padding: 5px 20px ; + background: #81aedc; + color: #f0f5fb; + border-color: #89a8c9; + overflow: hidden; + position: relative; + gap: 10px; + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + } + +.ripple-button:hover{ + background-color: #5287bd; + border-color: #485e77; +} + + .ripple-button > .ripple { + width: 20px; + height: 20px; + position: absolute; + background: #7aa0c5; + display: block; + content: ""; + border-radius: 9999px; + opacity: 1; + animation: 0.9s ease 1 forwards ripple-effect; + } + + @keyframes ripple-effect { + 0% { + transform: scale(1); + opacity: 1; + } + 50% { + transform: scale(10); + opacity: 0.375; + } + 100% { + transform: scale(35); + opacity: 0; + } + } + + \ No newline at end of file diff --git a/ic/1st/filled/button.jsx b/ic/1st/filled/button.jsx new file mode 100644 index 0000000..ec26d3c --- /dev/null +++ b/ic/1st/filled/button.jsx @@ -0,0 +1,62 @@ +import React from "react"; +import './button.css'; +import KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight'; + +export default function Button1({ onClick }) { + const [coords, setCoords] = React.useState({ x: -1, y: -1 }); + const [isRippling, setIsRippling] = React.useState(false); + const [isDisabled, setIsDisabled] = React.useState(false); + const [backgroundColor, setBackgroundColor] = React.useState(''); + const [textColor, setTextColor] = React.useState(''); // New state for text color + const [borderColor, setBorderColor] = React.useState(''); // New state for border color + + React.useEffect(() => { + if (coords.x !== -1 && coords.y !== -1) { + setIsRippling(true); + + setTimeout(() => { + setIsRippling(false); + setIsDisabled(true); + setBackgroundColor('#415469'); + setTextColor('#8c97a4'); // Change text color + setBorderColor('#404955'); // Change border color + }, 300); + } else { + setIsRippling(false); + } + }, [coords]); + + React.useEffect(() => { + if (!isRippling) { + setCoords({ x: -1, y: -1 }); + } + }, [isRippling]); + + return ( + + ); +}; diff --git a/ic/2nd/button.css b/ic/2nd/button.css new file mode 100644 index 0000000..57dd6dd --- /dev/null +++ b/ic/2nd/button.css @@ -0,0 +1,50 @@ +.ripple-button { + border-radius: 30px; + border: 1px solid; + margin: 8px; + padding: 5px 20px ; + background: #81aedc; + color: #f0f5fb; + border-color: #89a8c9; + overflow: hidden; + position: relative; + gap: 10px; + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + } + +.ripple-button:hover{ + background-color: #5287bd; + border-color: #485e77; +} + + .ripple-button > .ripple { + width: 20px; + height: 20px; + position: absolute; + background: #7aa0c5; + display: block; + content: ""; + border-radius: 9999px; + opacity: 1; + animation: 0.9s ease 1 forwards ripple-effect; + } + + @keyframes ripple-effect { + 0% { + transform: scale(1); + opacity: 1; + } + 50% { + transform: scale(10); + opacity: 0.375; + } + 100% { + transform: scale(35); + opacity: 0; + } + } + + \ No newline at end of file diff --git a/ic/2nd/button.jsx b/ic/2nd/button.jsx new file mode 100644 index 0000000..350c5a0 --- /dev/null +++ b/ic/2nd/button.jsx @@ -0,0 +1,62 @@ +import React from "react"; +import './button.css'; +import KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight'; + +export default function Button2({ onClick }) { + const [coords, setCoords] = React.useState({ x: -1, y: -1 }); + const [isRippling, setIsRippling] = React.useState(false); + const [isDisabled, setIsDisabled] = React.useState(false); + const [backgroundColor, setBackgroundColor] = React.useState(''); + const [textColor, setTextColor] = React.useState(''); // New state for text color + const [borderColor, setBorderColor] = React.useState(''); // New state for border color + + React.useEffect(() => { + if (coords.x !== -1 && coords.y !== -1) { + setIsRippling(true); + + setTimeout(() => { + setIsRippling(false); + setIsDisabled(true); + setBackgroundColor('#415469'); + setTextColor('#8c97a4'); // Change text color + setBorderColor('#404955'); // Change border color + }, 300); + } else { + setIsRippling(false); + } + }, [coords]); + + React.useEffect(() => { + if (!isRippling) { + setCoords({ x: -1, y: -1 }); + } + }, [isRippling]); + + return ( + + ); +}; diff --git a/ic/3rs/button.css b/ic/3rs/button.css new file mode 100644 index 0000000..4179766 --- /dev/null +++ b/ic/3rs/button.css @@ -0,0 +1,46 @@ +.ripple-button { + border-radius: 30px; + border: 1px solid; + margin: 8px; + padding: 7.5px 10px ; + background: #81aedc; + color: #f0f5fb; + border-color: #89a8c9; + overflow: hidden; + position: relative; + gap: 10px; + } + +.ripple-button:hover{ + background-color: #5287bd; + border-color: #485e77; +} + + .ripple-button > .ripple { + width: 20px; + height: 20px; + position: absolute; + background: #7aa0c5; + display: block; + content: ""; + border-radius: 9999px; + opacity: 1; + animation: 0.9s ease 1 forwards ripple-effect; + } + + @keyframes ripple-effect { + 0% { + transform: scale(1); + opacity: 1; + } + 50% { + transform: scale(10); + opacity: 0.375; + } + 100% { + transform: scale(35); + opacity: 0; + } + } + + \ No newline at end of file diff --git a/ic/3rs/button.jsx b/ic/3rs/button.jsx new file mode 100644 index 0000000..ac828aa --- /dev/null +++ b/ic/3rs/button.jsx @@ -0,0 +1,62 @@ +import React from "react"; +import './button.css'; +import KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight'; + +export default function Button3({ onClick }) { + const [coords, setCoords] = React.useState({ x: -1, y: -1 }); + const [isRippling, setIsRippling] = React.useState(false); + const [isDisabled, setIsDisabled] = React.useState(false); + const [backgroundColor, setBackgroundColor] = React.useState(''); + const [textColor, setTextColor] = React.useState(''); // New state for text color + const [borderColor, setBorderColor] = React.useState(''); // New state for border color + + React.useEffect(() => { + if (coords.x !== -1 && coords.y !== -1) { + setIsRippling(true); + + setTimeout(() => { + setIsRippling(false); + setIsDisabled(true); + setBackgroundColor('#415469'); + setTextColor('#8c97a4'); // Change text color + setBorderColor('#404955'); // Change border color + }, 300); + } else { + setIsRippling(false); + } + }, [coords]); + + React.useEffect(() => { + if (!isRippling) { + setCoords({ x: -1, y: -1 }); + } + }, [isRippling]); + + return ( + + ); +};