KitlenoKitlenov2.0.0

Forms & Input / Checkbox

Checkbox

Checkboxes let users select one or more options from a set of choices, commonly used in forms, settings panels, and filters.

Checkbox

A custom-styled checkbox input with a checked-state icon, built without relying on default browser styling.

Checkbox.jsx
'use client'
import { useState } from 'react'
import { Check } from 'lucide-react'

export default function Checkbox() {
  const [checked, setChecked] = useState({ a: true, b: false })

  return (
    <div className="p-4 flex flex-col gap-3">
      {[
        { key: 'a', label: 'Email notifications' },
        { key: 'b', label: 'Marketing updates' }
      ].map((item) => (
        <label key={item.key} className="flex items-center gap-3 cursor-pointer select-none">
          <div
            onClick={() => setChecked((c) => ({ ...c, [item.key]: !c[item.key] }))}
            className={`flex h-5 w-5 items-center justify-center rounded-[6px] border-2 transition-colors duration-200
              ${checked[item.key]
                ? 'bg-[#1d1d1f] border-[#1d1d1f] dark:bg-white dark:border-white'
                : 'bg-transparent border-[#d0d0d0] dark:border-[#4c4c4c]'}`}
          >
            {checked[item.key] && <Check size={13} strokeWidth={3} className="text-white dark:text-[#1d1d1f]" />}
          </div>
          <span className="text-[14px] text-[#1d1d1f] dark:text-[#f5f5f7]">{item.label}</span>
        </label>
      ))}
    </div>
  )
}