Files
HiveGrid-Wireframes/03 Quellen und Referenzen/hivegrid-cloud/apps/web/app/ui/components/CheckboxCard/CheckboxCard.tsx
T

69 lines
2.7 KiB
TypeScript

"use client";
/*
* Documentation:
* Checkbox Card — https://app.subframe.com/f023064a5ca0/library?component=Checkbox+Card_de0b4dfb-3946-4702-be52-5678dd71925a
*/
import React from "react";
import { FeatherCheck } from "@subframe/core";
import * as SubframeCore from "@subframe/core";
import * as SubframeUtils from "../../utils";
export interface CheckboxCardRootProps
extends React.ComponentProps<typeof SubframeCore.Checkbox.Root> {
disabled?: boolean;
checked?: boolean;
hideCheckbox?: boolean;
children?: React.ReactNode;
onCheckedChange?: (checked: boolean) => void;
className?: string;
}
const CheckboxCardRoot = React.forwardRef<
HTMLButtonElement,
CheckboxCardRootProps
>(function CheckboxCardRoot(
{
disabled = false,
checked = false,
hideCheckbox = false,
children,
className,
...otherProps
}: CheckboxCardRootProps,
ref
) {
return (
<SubframeCore.Checkbox.Root
checked={checked}
disabled={disabled}
asChild={true}
{...otherProps}
>
<button
className={SubframeUtils.twClassNames(
"group/de0b4dfb flex cursor-pointer items-center gap-4 rounded-md border border-solid border-[#e5e5e5] bg-[#ffffff] px-4 py-3 text-left hover:bg-[#fafafa] aria-[checked=true]:border aria-[checked=true]:border-solid aria-[checked=true]:border-[#bfdbfe] aria-[checked=true]:bg-[#eff6ff] hover:aria-[checked=true]:bg-[#eff6ff] disabled:cursor-default disabled:border disabled:border-solid disabled:border-[#f5f5f5] disabled:bg-[#f5f5f5] hover:disabled:cursor-default hover:disabled:bg-[#f5f5f5]",
className
)}
ref={ref}
>
<div
className={SubframeUtils.twClassNames(
"flex h-4 w-4 flex-none flex-col items-center justify-center gap-2 rounded-[2px] border-2 border-solid border-[#d4d4d4] group-aria-[checked=true]/de0b4dfb:border group-aria-[checked=true]/de0b4dfb:border-solid group-aria-[checked=true]/de0b4dfb:border-[#2563eb] group-aria-[checked=true]/de0b4dfb:bg-[#2563eb] group-disabled/de0b4dfb:border-2 group-disabled/de0b4dfb:border-solid group-disabled/de0b4dfb:border-[#e5e5e5] group-disabled/de0b4dfb:bg-[#f5f5f5]",
{ hidden: hideCheckbox }
)}
>
<FeatherCheck className="hidden font-['Inter'] text-[16px] font-[400] leading-[16px] text-[#ffffff] group-aria-[checked=true]/de0b4dfb:inline-flex group-disabled/de0b4dfb:text-[#a3a3a3]" />
</div>
{children ? (
<div className="flex grow shrink-0 basis-0 items-center gap-4">
{children}
</div>
) : null}
</button>
</SubframeCore.Checkbox.Root>
);
});
export const CheckboxCard = CheckboxCardRoot;