{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "task",
  "registryDependencies": [
    "https://taki-ui.com/r/disclosure.json"
  ],
  "files": [
    {
      "path": "registry/new-york/ai-elements/task.tsx",
      "content": "\"use client\"\n\nimport type { ComponentProps } from \"react\"\nimport { useContext } from \"react\"\nimport { ChevronDownIcon, ChevronRightIcon, SearchIcon } from \"lucide-react\"\nimport { Button, DisclosureStateContext } from \"react-aria-components\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Disclosure, DisclosurePanel } from \"@/registry/new-york/ui/disclosure\"\n\nexport type TaskItemFileProps = ComponentProps<\"div\">\n\nexport const TaskItemFile = ({\n  children,\n  className,\n  ...props\n}: TaskItemFileProps) => (\n  <div\n    className={cn(\n      \"bg-secondary text-foreground inline-flex items-center gap-1 rounded-md border px-1.5 py-0.5 text-xs\",\n      className\n    )}\n    {...props}\n  >\n    {children}\n  </div>\n)\n\nexport type TaskItemProps = ComponentProps<\"div\">\n\nexport const TaskItem = ({ children, className, ...props }: TaskItemProps) => (\n  <div className={cn(\"text-muted-foreground text-sm\", className)} {...props}>\n    {children}\n  </div>\n)\n\nexport type TaskProps = ComponentProps<typeof Disclosure>\n\nexport const Task = ({\n  defaultOpen = true,\n  className,\n  ...props\n}: TaskProps) => (\n  <Disclosure className={cn(className)} defaultOpen={defaultOpen} {...props} />\n)\n\nexport type TaskTriggerProps = ComponentProps<typeof DisclosureHeader> & {\n  title: string\n  icon?: ComponentProps<\"svg\">\n}\n\nexport const TaskTrigger = ({\n  children,\n  className,\n  title,\n  icon: Icon = SearchIcon,\n  ...props\n}: TaskTriggerProps) => {\n  const state = useContext(DisclosureStateContext)\n\n  return (\n    <Button slot=\"trigger\" className={cn(\"group\", className)} {...props}>\n      {children ?? (\n        <div className=\"text-muted-foreground hover:text-foreground flex w-full cursor-pointer items-center gap-2 text-sm transition-colors\">\n          <div className=\"group relative\">\n            <ChevronRightIcon\n              aria-hidden\n              className={cn(\n                \"absolute top-0 left-0 size-4 transition-opacity group-hover:opacity-100\",\n                state?.isExpanded ? \"rotate-90\" : \"opacity-0\"\n              )}\n            />\n            <Icon\n              className={cn(\n                \"size-4 transition-transform group-hover:scale-0\",\n                state?.isExpanded ? \"scale-0\" : \"\"\n              )}\n            />\n          </div>\n          <p className=\"text-sm\">{title}</p>\n        </div>\n      )}\n    </Button>\n  )\n}\n\nexport type TaskContentProps = ComponentProps<typeof DisclosurePanel>\n\nexport const TaskContent = ({\n  children,\n  className,\n  ...props\n}: TaskContentProps) => (\n  <DisclosurePanel\n    className={cn(\n      \"data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-top-2 data-[state=open]:slide-in-from-top-2 text-popover-foreground data-[state=closed]:animate-out data-[state=open]:animate-in outline-none\",\n      className\n    )}\n    {...props}\n  >\n    <div className=\"border-muted mt-2 space-y-2 border-l-2 pl-4\">\n      {children}\n    </div>\n  </DisclosurePanel>\n)\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}