From a430284aa21e3ae1f0d5654e55b2ad2852519cc2 Mon Sep 17 00:00:00 2001
From: wwf <yearningwang@iqtogether.com>
Date: 星期三, 04 六月 2025 15:17:49 +0800
Subject: [PATCH] 初始化

---
 app/components/base/checkbox/index.tsx |   49 ++++++++++++++++++++++++-------------------------
 1 files changed, 24 insertions(+), 25 deletions(-)

diff --git a/app/components/base/checkbox/index.tsx b/app/components/base/checkbox/index.tsx
index 3e47967..df2c368 100644
--- a/app/components/base/checkbox/index.tsx
+++ b/app/components/base/checkbox/index.tsx
@@ -1,49 +1,48 @@
 import { RiCheckLine } from '@remixicon/react'
+import s from './index.module.css'
 import cn from '@/utils/classnames'
-import IndeterminateIcon from './assets/indeterminate-icon'
 
 type CheckboxProps = {
-  id?: string
   checked?: boolean
   onCheck?: () => void
   className?: string
   disabled?: boolean
-  indeterminate?: boolean
+  mixed?: boolean
 }
 
-const Checkbox = ({
-    id,
-    checked,
-    onCheck,
-    className,
-    disabled,
-    indeterminate,
-}: CheckboxProps) => {
-  const checkClassName = (checked || indeterminate)
-    ? 'bg-components-checkbox-bg text-components-checkbox-icon hover:bg-components-checkbox-bg-hover'
-    : 'border border-components-checkbox-border bg-components-checkbox-bg-unchecked hover:bg-components-checkbox-bg-unchecked-hover hover:border-components-checkbox-border-hover'
-  const disabledClassName = (checked || indeterminate)
-    ? 'cursor-not-allowed bg-components-checkbox-bg-disabled-checked text-components-checkbox-icon-disabled hover:bg-components-checkbox-bg-disabled-checked'
-    : 'cursor-not-allowed border-components-checkbox-border-disabled bg-components-checkbox-bg-disabled hover:border-components-checkbox-border-disabled hover:bg-components-checkbox-bg-disabled'
-
+const Checkbox = ({ checked, onCheck, className, disabled, mixed }: CheckboxProps) => {
+  if (!checked) {
+    return (
+      <div
+        className={cn(
+          'w-4 h-4 rounded-[4px] bg-components-checkbox-bg-unchecked border border-components-checkbox-border hover:bg-components-checkbox-bg-unchecked-hover hover:border-components-checkbox-border-hover shadow-xs cursor-pointer',
+          disabled && 'border-components-checkbox-border-disabled bg-components-checkbox-bg-disabled hover:border-components-checkbox-border-disabled hover:bg-components-checkbox-bg-disabled cursor-not-allowed',
+          mixed && s.mixed,
+          className,
+        )}
+        onClick={() => {
+          if (disabled)
+            return
+          onCheck?.()
+        }}
+      ></div>
+    )
+  }
   return (
     <div
-      id={id}
       className={cn(
-        'flex h-4 w-4 cursor-pointer items-center justify-center rounded-[4px] shadow-xs shadow-shadow-shadow-3',
-        checkClassName,
-        disabled && disabledClassName,
+        'w-4 h-4 flex items-center justify-center rounded-[4px] bg-components-checkbox-bg hover:bg-components-checkbox-bg-hover text-components-checkbox-icon shadow-xs cursor-pointer',
+        disabled && 'bg-components-checkbox-bg-disabled-checked hover:bg-components-checkbox-bg-disabled-checked text-components-checkbox-icon-disabled cursor-not-allowed',
         className,
       )}
       onClick={() => {
         if (disabled)
           return
+
         onCheck?.()
       }}
-      data-testid={`checkbox-${id}`}
     >
-      {!checked && indeterminate && <IndeterminateIcon />}
-      {checked && <RiCheckLine className='h-3 w-3' data-testid={`check-icon-${id}`} />}
+      <RiCheckLine className={cn('w-3 h-3')} />
     </div>
   )
 }

--
Gitblit v1.8.0