mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2026-02-11 23:40:24 +00:00
* feat: 统一并标准化eslint * lint: napcat.webui * lint: napcat.webui * lint: napcat.core * build: fix * lint: napcat.webui * refactor: 重构eslint * Update README.md
49 lines
1.4 KiB
TypeScript
49 lines
1.4 KiB
TypeScript
import { Switch } from '@heroui/switch';
|
|
import clsx from 'clsx';
|
|
import React, { forwardRef } from 'react';
|
|
|
|
export interface SwitchCardProps {
|
|
label?: string
|
|
description?: string
|
|
value?: boolean
|
|
onValueChange?: (value: boolean) => void
|
|
name?: string
|
|
onBlur?: React.FocusEventHandler
|
|
disabled?: boolean
|
|
onChange?: React.ChangeEventHandler<HTMLInputElement>
|
|
}
|
|
|
|
const SwitchCard = forwardRef<HTMLInputElement, SwitchCardProps>(
|
|
(props, ref) => {
|
|
const { label, description, value, onValueChange, disabled } = props;
|
|
const selectString = value ? 'true' : 'false';
|
|
|
|
return (
|
|
<Switch
|
|
classNames={{
|
|
base: clsx(
|
|
'inline-flex flex-row-reverse w-full max-w-md bg-content1 hover:bg-content2 items-center',
|
|
'justify-between cursor-pointer rounded-lg gap-2 p-3 border-2 border-transparent',
|
|
'data-[selected=true]:border-primary bg-opacity-50 backdrop-blur-sm'
|
|
),
|
|
}}
|
|
{...props}
|
|
ref={ref}
|
|
isDisabled={disabled}
|
|
isSelected={value}
|
|
value={selectString}
|
|
onValueChange={onValueChange}
|
|
>
|
|
<div className='flex flex-col gap-1'>
|
|
<p className='text-medium'>{label}</p>
|
|
<p className='text-tiny text-default-400'>{description}</p>
|
|
</div>
|
|
</Switch>
|
|
);
|
|
}
|
|
);
|
|
|
|
SwitchCard.displayName = 'SwitchCard';
|
|
|
|
export default SwitchCard;
|