<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
import { apiFetchWithTimeout } from '@auto-launch/functions/helpers';
import { deepMerge } from '@shared/lib/utils';

// TODO: add zod types - this was copy/pasted from legacy launch
export const getThemeVariation = async ({ slug, fonts }, opts) => {
	const { fallback = false } = opts || {};
	const rawVariations = await apiFetchWithTimeout({
		path: 'wp/v2/global-styles/themes/extendable/variations',
	});

	const variations = rawVariations.filter(
		(v) =>
			(v.settings?.color || v.styles?.color) &&
			(v.settings?.typography || v.styles?.typography),
	);

	let variation = variations.find((v) => {
		const matchSlug =
			v.slug || v.title.toLowerCase().trim().replace(/\s+/g, '-');
		return matchSlug === slug;
	});

	// Fallback to random variation if slug doesn't match
	if (!variation && fallback) {
		variation = variations.sort(() => Math.random() - 0.5)[0];
	}

	if (!fonts) return variation;

	return deepMerge(variation, {
		styles: {
			elements: {
				heading: {
					typography: {
						fontFamily: `var(--wp--preset--font-family--${fonts.heading.slug})`,
					},
				},
			},
			typography: {
				fontFamily: `var(--wp--preset--font-family--${fonts.body.slug})`,
			},
		},
		settings: {
			typography: {
				fontFamilies: {
					custom: [fonts.heading, fonts.body].filter((font) => !!font.host),
				},
			},
		},
	});
};
