/**
 * Vitest global setup file.
 * Imports @testing-library/jest-dom to extend vitest matchers with DOM assertions.
 *
 * Also polyfills browser APIs that jsdom does not implement but Mantine needs:
 * - window.matchMedia (Mantine uses it for color-scheme detection)
 * - ResizeObserver (Mantine uses it for responsive components)
 */
import '@testing-library/jest-dom'

// ---------------------------------------------------------------------------
// window.matchMedia polyfill (jsdom does not implement this)
// ---------------------------------------------------------------------------
Object.defineProperty(window, 'matchMedia', {
  writable: true,
  value: (query: string) => ({
    matches: false,
    media: query,
    onchange: null,
    addListener: () => {},
    removeListener: () => {},
    addEventListener: () => {},
    removeEventListener: () => {},
    dispatchEvent: () => false,
  }),
})

// ---------------------------------------------------------------------------
// ResizeObserver polyfill (jsdom does not implement this)
// ---------------------------------------------------------------------------
if (typeof ResizeObserver === 'undefined') {
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
  ;(globalThis as any).ResizeObserver = class ResizeObserver {
    observe() {}
    unobserve() {}
    disconnect() {}
  }
}
