Files
Dani Akash 290ee91a8b Add 'packages/browseros-agent/' from commit '90bd4be3008285bf3825aad3702aff98f872671a'
git-subtree-dir: packages/browseros-agent
git-subtree-mainline: 8f148d0918
git-subtree-split: 90bd4be300
2026-03-13 21:22:09 +05:30

93 lines
2.0 KiB
TypeScript

import { Handle, Position } from '@xyflow/react'
import type { ComponentProps } from 'react'
import {
Card,
CardAction,
CardContent,
CardDescription,
CardFooter,
CardHeader,
CardTitle,
} from '@/components/ui/card'
import { cn } from '@/lib/utils'
export type NodeProps = ComponentProps<typeof Card> & {
handles: {
target: boolean
source: boolean
}
}
/**
* @public
*/
export const Node = ({ handles, className, ...props }: NodeProps) => (
<Card
className={cn(
'node-container relative size-full h-auto w-sm gap-0 rounded-md p-0',
className,
)}
{...props}
>
{handles.target && <Handle position={Position.Left} type="target" />}
{handles.source && <Handle position={Position.Right} type="source" />}
{props.children}
</Card>
)
export type NodeHeaderProps = ComponentProps<typeof CardHeader>
/**
* @public
*/
export const NodeHeader = ({ className, ...props }: NodeHeaderProps) => (
<CardHeader
className={cn('gap-0.5 rounded-t-md border-b bg-secondary p-3!', className)}
{...props}
/>
)
export type NodeTitleProps = ComponentProps<typeof CardTitle>
/**
* @public
*/
export const NodeTitle = (props: NodeTitleProps) => <CardTitle {...props} />
export type NodeDescriptionProps = ComponentProps<typeof CardDescription>
/**
* @public
*/
export const NodeDescription = (props: NodeDescriptionProps) => (
<CardDescription {...props} />
)
export type NodeActionProps = ComponentProps<typeof CardAction>
/**
* @public
*/
export const NodeAction = (props: NodeActionProps) => <CardAction {...props} />
export type NodeContentProps = ComponentProps<typeof CardContent>
/**
* @public
*/
export const NodeContent = ({ className, ...props }: NodeContentProps) => (
<CardContent className={cn('p-3', className)} {...props} />
)
export type NodeFooterProps = ComponentProps<typeof CardFooter>
/**
* @public
*/
export const NodeFooter = ({ className, ...props }: NodeFooterProps) => (
<CardFooter
className={cn('rounded-b-md border-t bg-secondary p-3!', className)}
{...props}
/>
)