/**
 * Блок управления партнерскими ссылками
 * Отображает ссылку, статистику и возможность копирования
 */

'use client'

import { Copy, Gift, ExternalLink } from 'lucide-react'
import React from 'react'

import { Button } from '@/components/ui/button'
import { Card } from '@/components/ui/card'

import type { PartnerLinksBlockProps } from '../types'

export const PartnerLinksBlock = React.memo(function PartnerLinksBlock({
  partnerLink,
  loading,
  onCopyLink,
  onGenerateLink,
}: PartnerLinksBlockProps) {
  if (loading) {
    return (
      <Card className="p-6">
        <div className="animate-pulse">
          <div className="space-y-4">
            <div className="h-4 bg-gray-200 rounded w-1/3"></div>
            <div className="h-10 bg-gray-200 rounded"></div>
            <div className="flex space-x-4">
              <div className="h-16 bg-gray-200 rounded flex-1"></div>
              <div className="h-16 bg-gray-200 rounded flex-1"></div>
            </div>
          </div>
        </div>
      </Card>
    )
  }

  if (!partnerLink) {
    return (
      <Card className="p-8 text-center">
        <div className="flex flex-col items-center space-y-4">
          <div className="h-16 w-16 bg-purple-100 rounded-full flex items-center justify-center">
            <Gift className="h-8 w-8 text-purple-500" />
          </div>
          <div>
            <h3 className="text-lg font-medium text-gray-900">Партнерская ссылка недоступна</h3>
            <p className="text-gray-500 mt-1">
              Обратитесь к администратору для получения партнерской ссылки
            </p>
          </div>
          {onGenerateLink && (
            <Button onClick={onGenerateLink} className="mt-4">
              <Gift className="h-4 w-4 mr-2" />
              Создать ссылку
            </Button>
          )}
        </div>
      </Card>
    )
  }

  return (
    <div className="space-y-6">
      {/* Партнерская ссылка */}
      <Card className="glass-card p-6">
        <div className="space-y-4">
          <div className="flex items-center space-x-2">
            <Gift className="h-5 w-5 text-purple-500" />
            <h3 className="text-lg font-semibold text-white">Ваша партнерская ссылка</h3>
          </div>

          <p className="text-sm text-white/60">
            Поделитесь этой ссылкой с другими организациями для прямого партнерского сотрудничества
          </p>

          <div className="flex space-x-2">
            <div className="flex-1 px-3 py-2 glass-input rounded-lg text-white/60 font-mono text-sm truncate">
              {partnerLink || 'Загрузка...'}
            </div>
            <Button
              variant="outline"
              onClick={() => onCopyLink(partnerLink || '')}
              className="glass-button"
            >
              <Copy className="h-4 w-4 mr-2" />
              Копировать
            </Button>
          </div>

          <div className="flex items-center space-x-2 text-sm text-white/50">
            <ExternalLink className="h-4 w-4" />
            <span>
              Организации, перешедшие по этой ссылке, автоматически становятся вашими партнерами
            </span>
          </div>
        </div>
      </Card>

      {/* Информация о бонусах */}
      <Card className="glass-card p-6">
        <div className="flex items-start space-x-3">
          <div className="h-8 w-8 bg-purple-500/20 rounded-lg flex items-center justify-center flex-shrink-0 border border-purple-500/30">
            <Gift className="h-5 w-5 text-purple-400" />
          </div>
          <div className="flex-1">
            <h4 className="text-lg font-semibold text-white mb-2">
              Партнерская программа
            </h4>
            <div className="space-y-2 text-sm text-white/70">
              <p>• За каждую организацию, зарегистрированную по вашей ссылке: <strong className="text-yellow-400">100 сфер</strong></p>
              <p>• Автоматическое добавление в контрагенты для упрощения сотрудничества</p>
              <p>• Приоритетная поддержка для партнерских организаций</p>
            </div>
          </div>
        </div>
      </Card>
    </div>
  )
})

PartnerLinksBlock.displayName = 'PartnerLinksBlock'