{"$schema":"https://ui.shadcn.com/schema/registry-item.json","name":"feedback-bar","title":"Feedback Bar","description":"Feedback prompt bar for per-message or thread ratings with action and close slots","dependencies":["@radix-ui/react-slot"],"registryDependencies":["tooltip","kbd"],"files":[{"path":"components/nexus-ui/feedback-bar.tsx","content":"import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\n\nimport { cn } from \"@/lib/utils\";\nimport { Kbd } from \"@/components/ui/kbd\";\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipProvider,\n  TooltipTrigger,\n} from \"@/components/ui/tooltip\";\n\ntype FeedbackBarTooltip =\n  | string\n  | {\n      content?: string;\n      side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n      shortcut?: string;\n    };\n\ntype FeedbackBarProps = React.HTMLAttributes<HTMLDivElement>;\n\nfunction FeedbackBar({ className, ...props }: FeedbackBarProps) {\n  return (\n    <div\n      data-slot=\"feedback-bar\"\n      role=\"group\"\n      aria-label=\"Feedback bar\"\n      className={cn(\n        \"inline-flex h-12 w-full max-w-110 rounded-xl border dark:border-accent bg-card text-sm\",\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\ntype FeedbackBarContentProps = React.HTMLAttributes<HTMLDivElement>;\n\nfunction FeedbackBarContent({ className, ...props }: FeedbackBarContentProps) {\n  return (\n    <div\n      data-slot=\"feedback-bar-content\"\n      className={cn(\"flex w-full items-center justify-between\", className)}\n      {...props}\n    />\n  );\n}\n\ntype FeedbackBarPromptProps = React.HTMLAttributes<HTMLDivElement>;\n\nfunction FeedbackBarPrompt({ className, ...props }: FeedbackBarPromptProps) {\n  return (\n    <div\n      data-slot=\"feedback-bar-prompt\"\n      className={cn(\n        \"flex h-full w-full items-center justify-start gap-2.5 pl-4\",\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\ntype FeedbackBarLabelProps = React.HTMLAttributes<HTMLSpanElement>;\n\nfunction FeedbackBarLabel({ className, ...props }: FeedbackBarLabelProps) {\n  return (\n    <span\n      data-slot=\"feedback-bar-label\"\n      className={cn(\"text-sm font-[350] text-foreground\", className)}\n      {...props}\n    />\n  );\n}\n\ntype FeedbackBarActionsProps = React.HTMLAttributes<HTMLDivElement>;\n\nfunction FeedbackBarActions({ className, ...props }: FeedbackBarActionsProps) {\n  return (\n    <div\n      data-slot=\"feedback-bar-actions\"\n      className={cn(\n        \"flex h-full items-center justify-center gap-1.5 px-2\",\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\ntype FeedbackBarActionProps = React.HTMLAttributes<HTMLDivElement> & {\n  asChild?: boolean;\n  tooltip?: FeedbackBarTooltip;\n};\n\nfunction FeedbackBarAction({\n  asChild = false,\n  tooltip,\n  className,\n  ...props\n}: FeedbackBarActionProps) {\n  const Comp = asChild ? Slot : \"div\";\n  const { content, side, shortcut } =\n    typeof tooltip === \"string\" ? { content: tooltip } : (tooltip ?? {});\n\n  if (!content) {\n    return (\n      <Comp\n        data-slot=\"feedback-bar-action\"\n        className={cn(className)}\n        {...props}\n      />\n    );\n  }\n\n  return (\n    <TooltipProvider delayDuration={200}>\n      <Tooltip>\n        <TooltipTrigger asChild>\n          <Comp\n            data-slot=\"feedback-bar-action\"\n            className={cn(className)}\n            {...props}\n          />\n        </TooltipTrigger>\n        <TooltipContent className=\"rounded-full\" side={side}>\n          {content}\n          {shortcut ? <Kbd className=\"rounded-md!\">{shortcut}</Kbd> : null}\n        </TooltipContent>\n      </Tooltip>\n    </TooltipProvider>\n  );\n}\n\ntype FeedbackBarCloseProps = React.HTMLAttributes<HTMLDivElement> & {\n  tooltip?: FeedbackBarTooltip;\n};\n\nfunction FeedbackBarClose({\n  className,\n  children,\n  ...props\n}: FeedbackBarCloseProps) {\n  return (\n    <FeedbackBarAction\n      asChild\n      className={cn(\n        \"flex h-full items-center justify-center border-l dark:border-accent px-2\",\n        className,\n      )}\n      {...props}\n    >\n      <div data-slot=\"feedback-bar-close\">{children}</div>\n    </FeedbackBarAction>\n  );\n}\n\nexport {\n  FeedbackBar,\n  FeedbackBarContent,\n  FeedbackBarPrompt,\n  FeedbackBarLabel,\n  FeedbackBarActions,\n  FeedbackBarAction,\n  FeedbackBarClose,\n};\n","type":"registry:file","target":"~/components/nexus-ui/feedback-bar.tsx"}],"type":"registry:ui"}