--- import DefaultLayout from '@shared/layouts/DefaultLayout.astro'; import Icon from '@shared/components/Icon.astro'; import freeIllustrations from '@data/free-illustrations.json'; import illustrationsList from '@data/illustrations.json'; import siteData from '@data/site.json'; import { addPageScript } from '@shared/lib/page-scripts'; const autodark = (freeIllustrations as { autodark: Record }).autodark; const autodarkEntries = Object.entries(autodark); // first-illustration: the Liquid loop overwrites each pass → last value wins. const firstIllustration = autodarkEntries.length ? autodarkEntries[autodarkEntries.length - 1][1] : ''; // Page-local transform: replace: ' svg.replaceAll('; const skinColors = siteData.skinColors as Record; const colorEntries = Object.values(colors); const skinEntries = Object.values(skinColors); // skinColor = site.skinColors | first → the first value object (Rose). const skinFirst = skinEntries[0]; const buyLink = (siteData.illustrations as { buy_link: string }).buy_link; // {{ illustrations | size | minus: 4 }} const moreCount = illustrationsList.length - 4; // {% capture_script %} — build the illustrations JS map from the same data. // skin_color / color[1].prop resolve to empty in Liquid → literal "var()". const illustrationsJs = autodarkEntries .map(([key, svg]) => ` "${key}": {\n svg: '${withClass(svg)}',\n },`) .join('\n \n'); addPageScript(``); ---
Primary color
{ colorEntries.map((color) => (
)) }
Skin color
{ skinEntries.map((color, i) => (
)) }
Select SVG illustration
{ autodarkEntries.map(([key, svg], i) => (
)) }

{moreCount} more SVG Illustrations

Tabler Illustrations

Access a wide range of SVG illustrations for various projects. Effortlessly customize any illustration to align perfectly with your chosen color scheme!
{ illustrationsList.map((illustration) => ( )) }