{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "sticker",
  "title": "Sticker",
  "description": "Rotated labels and stamps with tape effect and double borders - neubrutalist decorative elements",
  "dependencies": [
    "class-variance-authority"
  ],
  "registryDependencies": [
    "@boldkit/utils"
  ],
  "files": [
    {
      "path": "registry/default/ui/sticker.tsx",
      "content": "/* eslint-disable react-refresh/only-export-components */\nimport * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '@/lib/utils'\n\nconst stickerVariants = cva(\n  'relative inline-flex items-center justify-center border-3 border-foreground font-bold uppercase tracking-wide transition-transform',\n  {\n    variants: {\n      variant: {\n        default: 'bg-accent text-accent-foreground',\n        primary: 'bg-primary text-primary-foreground',\n        secondary: 'bg-secondary text-secondary-foreground',\n        destructive: 'bg-destructive text-destructive-foreground',\n        outline: 'bg-background text-foreground',\n        neon: 'bg-[#ff2d78] text-white',\n      },\n      size: {\n        sm: 'px-2 py-1 text-xs',\n        default: 'px-3 py-1.5 text-sm',\n        lg: 'px-4 py-2 text-base',\n        xl: 'px-6 py-3 text-lg',\n      },\n      rotation: {\n        none: 'rotate-0',\n        slight: '-rotate-2',\n        medium: '-rotate-6',\n        heavy: '-rotate-12',\n        'slight-right': 'rotate-2',\n        'medium-right': 'rotate-6',\n        'heavy-right': 'rotate-12',\n      },\n      shadow: {\n        none: '',\n        default: 'shadow-[4px_4px_0px_hsl(var(--shadow-color))]',\n        colored:\n          'shadow-[4px_4px_0px_hsl(var(--primary))]',\n        double:\n          'shadow-[3px_3px_0px_hsl(var(--primary)),6px_6px_0px_hsl(var(--shadow-color))]',\n      },\n    },\n    defaultVariants: {\n      variant: 'default',\n      size: 'default',\n      rotation: 'slight',\n      shadow: 'default',\n    },\n  }\n)\n\nexport interface StickerProps\n  extends React.HTMLAttributes<HTMLDivElement>,\n    VariantProps<typeof stickerVariants> {\n  /** Show dashed outline effect */\n  dashed?: boolean\n  /** Show tape decoration on top */\n  tape?: boolean\n  /** Interactive hover effect */\n  interactive?: boolean\n}\n\nconst Sticker = React.forwardRef<HTMLDivElement, StickerProps>(\n  (\n    {\n      className,\n      variant,\n      size,\n      rotation,\n      shadow,\n      dashed = false,\n      tape = false,\n      interactive = false,\n      children,\n      ...props\n    },\n    ref\n  ) => {\n    return (\n      <div\n        ref={ref}\n        className={cn(\n          stickerVariants({ variant, size, rotation, shadow }),\n          dashed && 'before:absolute before:inset-[-6px] before:border-2 before:border-dashed before:border-foreground/50',\n          tape && 'after:absolute after:left-1/2 after:top-[-8px] after:-translate-x-1/2 after:rotate-[-2deg] after:w-[50px] after:h-[16px] after:bg-accent/80 after:border-2 after:border-foreground',\n          interactive && 'cursor-pointer hover:translate-x-[4px] hover:translate-y-[4px] hover:shadow-none active:translate-x-[4px] active:translate-y-[4px] active:shadow-none',\n          className\n        )}\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n)\nSticker.displayName = 'Sticker'\n\nconst stampVariants = cva(\n  'relative inline-flex items-center justify-center rounded-full border-4 border-foreground font-black uppercase tracking-widest',\n  {\n    variants: {\n      variant: {\n        default: 'bg-primary text-primary-foreground',\n        secondary: 'bg-secondary text-secondary-foreground',\n        accent: 'bg-accent text-accent-foreground',\n        destructive: 'bg-destructive text-destructive-foreground',\n        outline: 'bg-background text-foreground',\n      },\n      size: {\n        sm: 'h-16 w-16 text-[10px]',\n        default: 'h-24 w-24 text-xs',\n        lg: 'h-32 w-32 text-sm',\n        xl: 'h-40 w-40 text-base',\n      },\n      rotation: {\n        none: 'rotate-0',\n        slight: '-rotate-12',\n        medium: '-rotate-[25deg]',\n        heavy: '-rotate-45',\n      },\n    },\n    defaultVariants: {\n      variant: 'default',\n      size: 'default',\n      rotation: 'slight',\n    },\n  }\n)\n\nexport interface StampProps\n  extends React.HTMLAttributes<HTMLDivElement>,\n    VariantProps<typeof stampVariants> {\n  /** Show double ring effect */\n  doubleRing?: boolean\n}\n\nconst Stamp = React.forwardRef<HTMLDivElement, StampProps>(\n  ({ className, variant, size, rotation, doubleRing = false, children, ...props }, ref) => {\n    return (\n      <div\n        ref={ref}\n        className={cn(\n          stampVariants({ variant, size, rotation }),\n          'shadow-[4px_4px_0px_hsl(var(--shadow-color))]',\n          doubleRing && 'ring-2 ring-foreground ring-offset-2 ring-offset-background',\n          className\n        )}\n        {...props}\n      >\n        <span className=\"text-center leading-tight\">{children}</span>\n      </div>\n    )\n  }\n)\nStamp.displayName = 'Stamp'\n\nconst stickyNoteVariants = cva(\n  'relative border-3 border-foreground font-medium shadow-[4px_4px_0px_hsl(var(--shadow-color))]',\n  {\n    variants: {\n      variant: {\n        yellow: 'bg-accent text-accent-foreground',\n        pink: 'bg-primary text-primary-foreground',\n        blue: 'bg-info text-info-foreground',\n        green: 'bg-success text-success-foreground',\n        purple: 'bg-secondary text-secondary-foreground',\n      },\n      size: {\n        sm: 'p-3 text-sm min-w-[120px]',\n        default: 'p-4 text-base min-w-[160px]',\n        lg: 'p-6 text-lg min-w-[200px]',\n      },\n      rotation: {\n        none: 'rotate-0',\n        left: '-rotate-2',\n        right: 'rotate-2',\n        'tilt-left': '-rotate-6',\n        'tilt-right': 'rotate-6',\n      },\n    },\n    defaultVariants: {\n      variant: 'yellow',\n      size: 'default',\n      rotation: 'left',\n    },\n  }\n)\n\nexport interface StickyNoteProps\n  extends React.HTMLAttributes<HTMLDivElement>,\n    VariantProps<typeof stickyNoteVariants> {\n  /** Show pin decoration on top */\n  pin?: boolean\n  /** Show folded corner effect */\n  folded?: boolean\n}\n\nconst StickyNote = React.forwardRef<HTMLDivElement, StickyNoteProps>(\n  ({ className, variant, size, rotation, pin = false, folded = true, children, ...props }, ref) => {\n    return (\n      <div\n        ref={ref}\n        className={cn(\n          stickyNoteVariants({ variant, size, rotation }),\n          folded && 'before:absolute before:bottom-0 before:right-0 before:w-0 before:h-0 before:border-l-[20px] before:border-l-transparent before:border-b-[20px] before:border-b-foreground/20',\n          className\n        )}\n        {...props}\n      >\n        {pin && (\n          <div className=\"absolute -top-3 left-1/2 -translate-x-1/2 w-4 h-4 rounded-full bg-destructive border-2 border-foreground shadow-[2px_2px_0px_hsl(var(--shadow-color))]\" />\n        )}\n        {children}\n      </div>\n    )\n  }\n)\nStickyNote.displayName = 'StickyNote'\n\nexport { Sticker, stickerVariants, Stamp, stampVariants, StickyNote, stickyNoteVariants }\n",
      "type": "registry:ui",
      "target": "components/ui/sticker.tsx"
    }
  ],
  "type": "registry:ui"
}