Ghribi Ouassim

useToggle

Buttons 35

About

Easily manage a boolean state with useToggle.

Built with React and Tailwind. Copy the prompt and paste it into Claude Code, Cursor or Lovable: your agent adds useToggle to your project and fits it to your theme.

Code

How useToggle is used: the demo's code. The component's own source comes with a free account.

Usage.tsx

'use client'

import { useToggle } from "@/components/hooks/use-toggle"

import { Button } from "@/components/ui/button"
import { Card } from "@/components/ui/card"
import { Switch } from "@/components/ui/switch"

export function UseToggleDemo() {
  const [value, toggle, setValue] = useToggle(false)

  return (
    <Card className="p-6 max-w-md mx-auto">
      <div className="space-y-6">
        {/* Current State Display */}
        <div className="flex items-center justify-between">
          <div className="space-y-0.5">
            <div className="text-sm font-medium">Toggle State</div>
            <div className="text-sm text-muted-foreground">
              Current value: <code className="px-2 py-0.5 rounded bg-muted">{value.toString()}</code>
            </div>
          </div>
          <Switch
            checked={value}
            onCheckedChange={toggle}
            className="data-[state=checked]:bg-primary"
          />
        </div>

        <div className="grid grid-cols-2 gap-3">
          {/* Direct State Control */}
          <Button 
            variant={value ? "default" : "outline"}
            onClick={() => setValue(true)}
            className="w-full"
          >
            Set True
          </Button>
          
          <Button 
            variant={!value ? "default" : "outline"}
            onClick={() => setValue(false)}
            className="w-full"
          >
            Set False
          </Button>

          {/* Toggle Methods */}
          <Button 
            variant="secondary"
            onClick={toggle}
            className="w-full"
          >
            Toggle
          </Button>

          <Button 
            variant="secondary"
            onClick={() => setValue(prev => !prev)}
            className="w-full"
          >
            Custom Toggle
          </Button>
        </div>

        {/* Documentation */}
        <div className="text-sm text-muted-foreground border-t pt-4">
          <p className="font-medium mb-2">Hook Return Values:</p>
          <ul className="list-disc list-inside space-y-1">
            <li><code>value</code>: boolean state</li>
            <li><code>toggle()</code>: toggle function</li>
            <li><code>setValue()</code>: state setter</li>
          </ul>
        </div>

        {/* Example Code */}
        <div className="text-sm bg-muted p-3 rounded-md">
          <pre className="text-xs">
{`const [value, toggle, setValue] = useToggle(false)

// Basic toggle
toggle()

// Direct state control
setValue(true)
setValue(false)

// Custom toggle
setValue(prev => !prev)`}
          </pre>
        </div>
      </div>
    </Card>
  )
}

More by Ghribi Ouassim

View all
  • useCopyToClipboard

    useCopyToClipboard

    70
  • useDebounceCallback

    useDebounceCallback

    23
  • useTimeout

    useTimeout

    13
  • useInterval

    useInterval

    12
  • useCounter

    useCounter

    10
  • useIsomorphicLayoutEffect

    useIsomorphicLayoutEffect

    10
  • useUnmount

    useUnmount

    10
  • useBoolean

    useBoolean

    8

More in Buttons

View all
  • Button

    Button

    5
  • App Store Button

    App Store Button

    453
  • Button

    Button

    47
  • Eclipse Button

    Eclipse Button

    39
  • Texture Button

    Texture Button

    92
  • Button

    Button

    4
  • Split Button

    Split Button

    14
  • Button

    Button

    32