import React from 'react' import CreatorJourneySection from '../CreatorJourneySection' const SOCIAL_ICONS = { twitter: { icon: 'fa-brands fa-x-twitter', label: 'X / Twitter', hoverClass: 'hover:border-slate-300/30 hover:text-slate-100 hover:bg-white/[0.08]' }, deviantart: { icon: 'fa-brands fa-deviantart', label: 'DeviantArt', hoverClass: 'hover:border-green-400/35 hover:text-green-300 hover:bg-green-900/20' }, instagram: { icon: 'fa-brands fa-instagram', label: 'Instagram', hoverClass: 'hover:border-pink-400/35 hover:text-pink-300 hover:bg-pink-900/20' }, behance: { icon: 'fa-brands fa-behance', label: 'Behance', hoverClass: 'hover:border-blue-400/35 hover:text-blue-300 hover:bg-blue-900/20' }, artstation: { icon: 'fa-solid fa-palette', label: 'ArtStation', hoverClass: 'hover:border-orange-400/35 hover:text-orange-300 hover:bg-orange-900/20' }, youtube: { icon: 'fa-brands fa-youtube', label: 'YouTube', hoverClass: 'hover:border-red-400/35 hover:text-red-300 hover:bg-red-900/20' }, website: { icon: 'fa-solid fa-link', label: 'Website', hoverClass: 'hover:border-sky-400/35 hover:text-sky-200 hover:bg-sky-900/20' }, } const CATEGORY_ICONS = { animals: 'fa-solid fa-paw', birds: 'fa-solid fa-dove', flowers: 'fa-solid fa-seedling', fruit: 'fa-solid fa-apple-whole', 'sci-fi': 'fa-solid fa-rocket', scifi: 'fa-solid fa-rocket', fantasy: 'fa-solid fa-dragon', nature: 'fa-solid fa-leaf', landscape: 'fa-solid fa-mountain', abstract: 'fa-solid fa-shapes', architecture: 'fa-solid fa-building', people: 'fa-solid fa-person', portrait: 'fa-solid fa-face-smile', cars: 'fa-solid fa-car', space: 'fa-solid fa-star', games: 'fa-solid fa-gamepad', food: 'fa-solid fa-utensils', travel: 'fa-solid fa-plane', sports: 'fa-solid fa-football', ocean: 'fa-solid fa-water', underwater: 'fa-solid fa-fish', insects: 'fa-solid fa-bug', reptiles: 'fa-solid fa-dragon', cats: 'fa-solid fa-cat', dogs: 'fa-solid fa-dog', } const CONTENT_TYPE_ICONS = { photography: 'fa-solid fa-camera', wallpapers: 'fa-solid fa-desktop', 'digital art': 'fa-solid fa-wand-magic-sparkles', illustration: 'fa-solid fa-pen-nib', '3d': 'fa-solid fa-cube', vector: 'fa-solid fa-bezier-curve', fractal: 'fa-solid fa-infinity', gif: 'fa-solid fa-film', drawing: 'fa-solid fa-pencil', painting: 'fa-solid fa-paintbrush', photo: 'fa-solid fa-camera', } function getCategoryIcon(label) { const key = String(label || '').toLowerCase().trim() return CATEGORY_ICONS[key] ?? null } function getContentTypeIcon(label) { const key = String(label || '').toLowerCase().trim() return CONTENT_TYPE_ICONS[key] ?? null } function formatNumber(value) { return Number(value ?? 0).toLocaleString() } function formatRelativeDate(value) { if (!value) return null try { const date = new Date(value) if (Number.isNaN(date.getTime())) return null const now = new Date() const diffSeconds = Math.round((date.getTime() - now.getTime()) / 1000) const absSeconds = Math.abs(diffSeconds) const formatter = new Intl.RelativeTimeFormat('en', { numeric: 'auto' }) if (absSeconds < 3600) { return formatter.format(Math.round(diffSeconds / 60), 'minute') } if (absSeconds < 86400) { return formatter.format(Math.round(diffSeconds / 3600), 'hour') } if (absSeconds < 604800) { return formatter.format(Math.round(diffSeconds / 86400), 'day') } if (absSeconds < 2629800) { return formatter.format(Math.round(diffSeconds / 604800), 'week') } return formatter.format(Math.round(diffSeconds / 2629800), 'month') } catch { return null } } function formatShortDate(value) { if (!value) return null try { const date = new Date(value) if (Number.isNaN(date.getTime())) return null return date.toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric' }) } catch { return null } } function truncateText(value, maxLength = 140) { const text = String(value ?? '').trim() if (!text) return '' if (text.length <= maxLength) return text return `${text.slice(0, maxLength).trimEnd()}...` } function formatContributionDate(value) { if (!value) return null try { const date = new Date(value) if (Number.isNaN(date.getTime())) return null return date.toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric' }) } catch { return null } } function buildInterestGroups(artworks = []) { const categoryMap = new Map() const contentTypeMap = new Map() artworks.forEach((artwork) => { const categoryKey = String(artwork?.category_slug || artwork?.category || '').trim().toLowerCase() const categoryLabel = String(artwork?.category || '').trim() const contentTypeKey = String(artwork?.content_type_slug || artwork?.content_type || '').trim().toLowerCase() const contentTypeLabel = String(artwork?.content_type || '').trim() if (categoryKey && categoryLabel) { categoryMap.set(categoryKey, { label: categoryLabel, count: (categoryMap.get(categoryKey)?.count ?? 0) + 1, }) } if (contentTypeKey && contentTypeLabel) { contentTypeMap.set(contentTypeKey, { label: contentTypeLabel, count: (contentTypeMap.get(contentTypeKey)?.count ?? 0) + 1, }) } }) const toSortedList = (source) => Array.from(source.values()) .sort((left, right) => right.count - left.count || left.label.localeCompare(right.label)) .slice(0, 5) return { categories: toSortedList(categoryMap), contentTypes: toSortedList(contentTypeMap), } } function InfoRow({ icon, label, children }) { return (
{eyebrow}
{about}
This creator has not written a public bio yet.
{ e.target.style.display = 'none' }}
/>
) : null}
{countryName}
{truncateText(stories[0].excerpt, 180)}
) : null}{truncateText(comments[0].body, 180)}