MCPcopy Create free account
hub / github.com/SyntaxUI/syntaxui / LabeledToggle

Function LabeledToggle

src/showcase/components/toggle/LabeledToggle.tsx:11–119  ·  view source on GitHub ↗
({
  onToggle,
  initialToggleOn = true,
  disableText,
}: {
  onToggle?: (toggled: boolean) => void
  initialToggleOn?: boolean
  disableText?: boolean
})

Source from the content-addressed store, hash-verified

9 */
10
11const LabeledToggle = ({
12 onToggle,
13 initialToggleOn = true,
14 disableText,
15}: {
16 onToggle?: (toggled: boolean) => void
17 initialToggleOn?: boolean
18 disableText?: boolean
19}) => {
20 const [toggled, setToggled] = useState<boolean>(initialToggleOn || false)
21 const springConfig = { type: 'spring', stiffness: 500, damping: 30 }
22
23 const handleToggle = () => {
24 const newState = !toggled
25 setToggled(newState)
26 if (onToggle) {
27 onToggle(newState)
28 }
29 }
30
31 const spanVariantBuilder = (side: string) => {
32 return {
33 initial: {
34 transformOrigin: side + ' center',
35 scaleX: 1.8,
36 opacity: 0,
37 },
38 exit: {
39 transformOrigin: side + ' center',
40 scaleX: 1.8,
41 opacity: 0,
42 },
43 animate: {
44 transformOrigin: side + ' center',
45 scaleX: 1,
46 opacity: 1,
47 },
48 }
49 }
50
51 const spanTransition = {
52 duration: 0.4,
53 delay: 0.07,
54 type: 'spring',
55 }
56
57 return (
58 <motion.button
59 className={`relative h-[25px] w-[45px] cursor-pointer rounded-full outline-offset-2 duration-200 focus-within:outline-red-500 ${
60 toggled ? 'bg-red-500' : 'bg-gray-700/50'
61 }`}
62 onClick={handleToggle}
63 whileTap="tapping"
64 >
65 <motion.span
66 className="inline-block aspect-square h-full transform rounded-full bg-white shadow-lg"
67 variants={{
68 tapping: {

Callers

nothing calls this directly

Calls 1

spanVariantBuilderFunction · 0.85

Tested by

no test coverage detected