{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "mc-card",
  "title": "MicroClub Card",
  "description": "A card layout with header, body, and footer regions for MicroClub UI",
  "dependencies": [],
  "files": [
    {
      "path": "registry/ui/mc-card.tsx",
      "content": "'use client';\n\nimport * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/lib/utils';\n\nconst McCardDirectionContext = React.createContext<{ direction: 'row' | 'column' } | null>(null);\n\nconst cardVariants = cva(\n  'flex gap-4 rounded-lg border border-border bg-card p-4 text-card-foreground shadow-sm w-full',\n  {\n    variants: {\n      direction: {\n        row: 'flex-row',\n        column: 'flex-col',\n      },\n    },\n    defaultVariants: {\n      direction: 'column',\n    },\n  }\n);\n\nfunction McCard({\n  className,\n  direction = 'column',\n  children,\n  ...props\n}: React.ComponentProps<'div'> & { direction?: 'row' | 'column' }) {\n  return (\n    <McCardDirectionContext.Provider value={{ direction }}>\n      <div data-slot=\"card\" className={cn(cardVariants({ direction }), className)} {...props}>\n        {children}\n      </div>\n    </McCardDirectionContext.Provider>\n  );\n}\n\nexport interface McCardHeaderProps extends React.ComponentProps<'div'> {\n  title: string;\n  description?: string;\n}\n\nfunction McCardHeader({ className, title, description, ...props }: McCardHeaderProps) {\n  return (\n    <div data-slot=\"card-header\" className={cn('flex flex-col gap-1', className)} {...props}>\n      <h3 className=\"text-xl font-bold leading-normal tracking-normal\">{title}</h3>\n      {description && <p className=\"text-xs font-normal\">{description}</p>}\n    </div>\n  );\n}\n\nconst footerVariants = cva('flex gap-2', {\n  variants: {\n    cardDirection: {\n      row: 'self-stretch ms-auto',\n      column: '',\n    },\n    direction: {\n      row: 'flex-row',\n      column: 'flex-col',\n    },\n    align: {\n      start: '',\n      end: '',\n      center: '',\n      stretch: '',\n    },\n  },\n  compoundVariants: [\n    // cardDirection: column — matches previous footer-only (direction × align) behavior\n    {\n      cardDirection: 'column',\n      direction: 'row',\n      align: 'start',\n      className: 'items-center justify-start [&>*]:shrink-0 [&>*]:grow-0',\n    },\n    {\n      cardDirection: 'column',\n      direction: 'row',\n      align: 'end',\n      className: 'items-center justify-end [&>*]:shrink-0 [&>*]:grow-0',\n    },\n    {\n      cardDirection: 'column',\n      direction: 'row',\n      align: 'center',\n      className: 'items-center justify-center [&>*]:shrink-0 [&>*]:grow-0',\n    },\n    {\n      cardDirection: 'column',\n      direction: 'row',\n      align: 'stretch',\n      className: 'items-center justify-stretch *:min-w-0 *:flex-1',\n    },\n    {\n      cardDirection: 'column',\n      direction: 'column',\n      align: 'start',\n      className: 'items-start justify-start [&>*]:shrink-0 [&>*]:grow-0',\n    },\n    {\n      cardDirection: 'column',\n      direction: 'column',\n      align: 'end',\n      className: 'items-end justify-start [&>*]:shrink-0 [&>*]:grow-0',\n    },\n    {\n      cardDirection: 'column',\n      direction: 'column',\n      align: 'center',\n      className: 'items-center justify-start [&>*]:shrink-0 [&>*]:grow-0',\n    },\n    {\n      cardDirection: 'column',\n      direction: 'column',\n      align: 'stretch',\n      className: 'items-stretch justify-start *:min-h-0 *:flex-1',\n    },\n    // cardDirection: row — horizontal card; footer sits beside header/body, align controls vertical position\n    // footer direction: row → children horizontal, align maps to cross-axis (items-*)\n    {\n      cardDirection: 'row',\n      direction: 'row',\n      align: 'start',\n      className: 'items-start [&>*]:shrink-0 [&>*]:grow-0',\n    },\n    {\n      cardDirection: 'row',\n      direction: 'row',\n      align: 'end',\n      className: 'items-end [&>*]:shrink-0 [&>*]:grow-0',\n    },\n    {\n      cardDirection: 'row',\n      direction: 'row',\n      align: 'center',\n      className: 'items-center [&>*]:shrink-0 [&>*]:grow-0',\n    },\n    {\n      cardDirection: 'row',\n      direction: 'row',\n      align: 'stretch',\n      className: 'items-stretch *:min-w-0 *:flex-1',\n    },\n    // footer direction: column → children vertical, align maps to main-axis (justify-*)\n    {\n      cardDirection: 'row',\n      direction: 'column',\n      align: 'start',\n      className: 'justify-start [&>*]:shrink-0 [&>*]:grow-0',\n    },\n    {\n      cardDirection: 'row',\n      direction: 'column',\n      align: 'end',\n      className: 'justify-end [&>*]:shrink-0 [&>*]:grow-0',\n    },\n    {\n      cardDirection: 'row',\n      direction: 'column',\n      align: 'center',\n      className: 'justify-center [&>*]:shrink-0 [&>*]:grow-0',\n    },\n    {\n      cardDirection: 'row',\n      direction: 'column',\n      align: 'stretch',\n      className: 'items-stretch justify-start *:min-h-0 *:flex-1',\n    },\n  ],\n  defaultVariants: {\n    cardDirection: 'column',\n    direction: 'row',\n    align: 'stretch',\n  },\n});\n\nexport interface McCardFooterProps\n  extends React.ComponentProps<'div'>, VariantProps<typeof footerVariants> {}\n\nfunction McCardFooter({\n  className,\n  direction,\n  align,\n  cardDirection: cardDirectionProp,\n  ...props\n}: McCardFooterProps) {\n  const ctx = React.useContext(McCardDirectionContext);\n  const cardDirection = cardDirectionProp ?? ctx?.direction ?? 'column';\n\n  return (\n    <div\n      data-slot=\"card-footer\"\n      className={cn(footerVariants({ cardDirection, direction, align }), className)}\n      {...props}\n    />\n  );\n}\n\nexport type McCardContentProps = React.ComponentProps<'div'>;\n\nfunction McCardContent({ className, ...props }: McCardContentProps) {\n  return <div data-slot=\"card-content\" className={cn(className)} {...props} />;\n}\n\nexport { McCard, McCardHeader, McCardFooter, McCardContent };\n",
      "type": "registry:component"
    }
  ],
  "type": "registry:component"
}