{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "z-suggestion-row",
  "title": "Z Suggestion Row",
  "dependencies": [
    "@heroicons/react@2.2.0"
  ],
  "devDependencies": [],
  "registryDependencies": [
    "https://ui.orchid.ai/r/orchid-foundation.json",
    "https://ui.orchid.ai/r/orchid-theme.json",
    "https://ui.orchid.ai/r/z-action-row.json",
    "https://ui.orchid.ai/r/z-button.json"
  ],
  "files": [
    {
      "path": "registry/ui/orchid/spectrum/molecules/z-suggestion-row/z-suggestion-row.tsx",
      "content": "\"use client\";\nimport { ZActionRowText } from \"../z-action-row/z-action-row\";\nimport ZButton from \"../../atoms/z-button/z-button\";\nimport { useDismissAffordance } from \"../../../hooks/use-dismiss-affordance\";\nimport type { HeroIcon } from \"../../../lib/types\";\nimport { cn } from \"../../../lib/ui-utils\";\nimport { XMarkIcon } from '@heroicons/react/16/solid';\nimport type { ReactNode } from 'react';\ntype SuggestionAction = {\n    label?: string;\n    leadingIcon?: HeroIcon;\n    onClick: () => void;\n    ariaLabel: string;\n    variant?: 'primary' | 'transparent';\n};\ntype ZSuggestionRowProps = {\n    className?: string;\n    icon: ReactNode;\n    title: ReactNode;\n    description?: ReactNode;\n    dismissLabel: string;\n    onDismiss: () => void;\n    actions?: SuggestionAction[];\n    actionNodes?: ReactNode[];\n};\nexport default function ZSuggestionRow({ className, icon, title, description, dismissLabel, onDismiss, actions = [], actionNodes = [], }: ZSuggestionRowProps) {\n    const { hideDismissUntilHover, showDismissLabel } = useDismissAffordance();\n    const dismissButton = (<ZButton variant=\"transparent\" size=\"sm\" onClick={onDismiss} className={cn('text-neutral-subtle transition-opacity duration-150', hideDismissUntilHover &&\n            'pointer-events-none opacity-0 group-hover/suggestion-row:pointer-events-auto group-hover/suggestion-row:opacity-100 group-focus-within/suggestion-row:pointer-events-auto group-focus-within/suggestion-row:opacity-100')} aria-label={dismissLabel}>\n      {showDismissLabel ? 'Dismiss' : <XMarkIcon className=\"size-4\"/>}\n    </ZButton>);\n    return (<div className={cn('group/suggestion-row bg-surface/95 border-neutral-subtle ease-out-expo relative flex items-center gap-3 rounded-[14px] border px-3 py-2 shadow-xs backdrop-blur-sm transition-[transform,opacity] duration-200', className)}>\n      <div className=\"shrink-0\">{icon}</div>\n      <div className=\"min-w-0 flex-1\">\n        <ZActionRowText as=\"div\" className=\"text-copy text-neutral\" lines={2}>\n          {title}\n        </ZActionRowText>\n        {description ? (<ZActionRowText as=\"div\" className=\"text-copy-sm text-neutral-subtle\" lines={2}>\n            {description}\n          </ZActionRowText>) : null}\n      </div>\n      {dismissButton}\n      {actions.map((action, index) => (<ZButton key={index} variant={action.variant ?? 'transparent'} size=\"sm\" onClick={action.onClick} aria-label={action.ariaLabel} leadingIcon={action.leadingIcon}>\n          {action.label}\n        </ZButton>))}\n      {actionNodes.map((node, index) => (<div key={`action-node-${index}`}>{node}</div>))}\n    </div>);\n}\n",
      "type": "registry:ui",
      "target": "@ui/orchid/spectrum/molecules/z-suggestion-row/z-suggestion-row.tsx"
    }
  ],
  "type": "registry:ui"
}