/**
 * Smoke test for Primitives adapter (UX-1)
 *
 * Verifies that the @bytelyst/ui components are properly re-exported through
 * the Primitives adapter and can be imported in tracker-web.
 *
 * @see docs/roadmaps/UX_INTEGRATION_BYTELYST.md (UX-1, task 1.4)
 */

import { describe, it, expect } from 'vitest';
import {
  Button,
  StatusBadge,
  StatusDot,
  Input,
  Field,
  FieldLabel,
  FieldError,
  FieldDescription,
  Modal,
  ConfirmDialog,
  Badge,
  EmptyState,
  Skeleton,
  TableSkeleton,
  MetricCard,
  Toast,
  ToastProvider,
  useToast,
  toast,
  dismissToast,
} from '@/components/ui/Primitives';

describe('Primitives adapter smoke test', () => {
  it('should export Button component', () => {
    expect(Button).toBeDefined();
  });

  it('should export StatusBadge component', () => {
    expect(StatusBadge).toBeDefined();
    expect(StatusDot).toBeDefined();
  });

  it('should export Input component', () => {
    expect(Input).toBeDefined();
  });

  it('should export Field components', () => {
    expect(Field).toBeDefined();
    expect(FieldLabel).toBeDefined();
    expect(FieldError).toBeDefined();
    expect(FieldDescription).toBeDefined();
  });

  it('should export Modal component', () => {
    expect(Modal).toBeDefined();
  });

  it('should export ConfirmDialog component', () => {
    expect(ConfirmDialog).toBeDefined();
  });

  it('should export Badge component', () => {
    expect(Badge).toBeDefined();
  });

  it('should export EmptyState component', () => {
    expect(EmptyState).toBeDefined();
  });

  it('should export Skeleton components', () => {
    expect(Skeleton).toBeDefined();
    expect(TableSkeleton).toBeDefined();
  });

  it('should export MetricCard component', () => {
    expect(MetricCard).toBeDefined();
  });

  it('should export Toast components and hooks', () => {
    expect(Toast).toBeDefined();
    expect(ToastProvider).toBeDefined();
    expect(useToast).toBeDefined();
    expect(typeof useToast).toBe('function');
    expect(toast).toBeDefined();
    expect(typeof toast).toBe('function');
    expect(dismissToast).toBeDefined();
    expect(typeof dismissToast).toBe('function');
  });
});
