SkateSpots/src/main.tsx
shakespeare.diy fad3a3323d Replace Impact with Bebas Neue + Barlow Condensed for authentic skate typography
- Install @fontsource/bebas-neue and @fontsource/barlow-condensed
- Add .font-display (Bebas Neue) and .font-condensed (Barlow Condensed) CSS utilities
- Hero headline: split into two lines SKATE / SPOTS with clamp() fluid sizing,
  Bebas Neue replaces Impact throughout
- Subtitle: Barlow Condensed 700 with wide letter-spacing
- Description: Barlow Condensed italic
- All section headings (Featured Spots, Events, The Lab, CTA, New Here?): Bebas Neue
- Section subheadings: Barlow Condensed with tracked uppercase
- Desktop + mobile header logo: Bebas Neue
- Footer logo: Bebas Neue
- Tagline badge: Barlow Condensed 600

Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
2026-06-18 00:37:32 +07:00

53 lines
1.8 KiB
TypeScript

import { createRoot } from 'react-dom/client';
// Import polyfills first
import './lib/polyfills.ts';
import { ErrorBoundary } from '@/components/ErrorBoundary';
import App from './App.tsx';
import './index.css';
// Outfit font for body text
import '@fontsource-variable/outfit';
// Bebas Neue — bold condensed display font for headlines
import '@fontsource/bebas-neue';
// Barlow Condensed — tight condensed font for subheadings and UI labels
import '@fontsource/barlow-condensed/400.css';
import '@fontsource/barlow-condensed/600.css';
import '@fontsource/barlow-condensed/700.css';
// Leaflet CSS is loaded via CDN in index.html to avoid build issues
/**
* AMBER CALLBACK PRE-CHECK
*
* PWAs can sometimes lose URL parameters during React hydration.
* This runs BEFORE React renders to capture Amber callback data.
* We store it in sessionStorage so the AmberCallbackHandler can retrieve it.
*/
(function captureAmberCallback() {
const params = new URLSearchParams(window.location.search);
const event = params.get('event');
if (event) {
console.log('[Amber Pre-Check] Detected Amber callback in URL');
console.log('[Amber Pre-Check] Full URL:', window.location.href);
console.log('[Amber Pre-Check] Event param:', event);
// Store the callback data immediately before React can interfere
try {
sessionStorage.setItem('amber_callback_event', event);
sessionStorage.setItem('amber_callback_url', window.location.href);
sessionStorage.setItem('amber_callback_timestamp', Date.now().toString());
console.log('[Amber Pre-Check] Stored callback data in sessionStorage');
} catch (e) {
console.error('[Amber Pre-Check] Failed to store callback:', e);
}
}
})();
createRoot(document.getElementById("root")!).render(
<ErrorBoundary>
<App />
</ErrorBoundary>
);