export const CDN_URL = 'https://d2f70xi62kby8n.cloudfront.net' type DPR = 1 | 2 | 3 | 4 | 5 type SearchParams = { border?: string 'border-radius'?: number txt?: string w?: number h?: number dpr?: DPR bg?: string auto?: string pad?: number txt64?: string 'txt-font'?: string 'txt-color'?: string 'txt-align'?: string 'txt-size'?: string 'txt-fit'?: string fit?: 'fillmax' fill?: 'solid' trim?: string } export function buildUrl(baseUrl: string, params: SearchParams = {}) { const url = new URL(baseUrl) Object.entries(params).forEach(([key, val]) => { if (val) { url.searchParams.set(key, val.toString()) } }) return url.toString() } export function getImageUrl(imagePath: string, params?: SearchParams) { return buildUrl(`${CDN_URL}${imagePath}`, { auto: 'compress,format', ...params, }) } export function getIconUrl(iconName: string) { return getImageUrl(`/icons/${iconName}.svg`) } /** * Usefull for token icons in CCIP-UI * @param iconName the name of the icon to get without the extension * @returns */ export function getTokenIcon(iconName: string) { const iconEncoded = encodeURIComponent(iconName) return getImageUrl(`/tokens/${iconEncoded}.webp`) }