Files
UniVerse/frontend/src/icons/index.ts
T

128 lines
3.7 KiB
TypeScript
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import alarm from '@/assets/icons/alarm.svg?raw'
import alertTriangle from '@/assets/icons/alert-triangle.svg?raw'
import bell from '@/assets/icons/bell.svg?raw'
import book2 from '@/assets/icons/book-2.svg?raw'
import books from '@/assets/icons/books.svg?raw'
import building from '@/assets/icons/building.svg?raw'
import bulb from '@/assets/icons/bulb.svg?raw'
import calendar from '@/assets/icons/calendar.svg?raw'
import calendarEvent from '@/assets/icons/calendar-event.svg?raw'
import chartBar from '@/assets/icons/chart-bar.svg?raw'
import chartLine from '@/assets/icons/chart-line.svg?raw'
import circleCheck from '@/assets/icons/circle-check.svg?raw'
import circleX from '@/assets/icons/circle-x.svg?raw'
import clipboardList from '@/assets/icons/clipboard-list.svg?raw'
import clock from '@/assets/icons/clock.svg?raw'
import coin from '@/assets/icons/coin.svg?raw'
import handStop from '@/assets/icons/hand-stop.svg?raw'
import home from '@/assets/icons/home.svg?raw'
import inbox from '@/assets/icons/inbox.svg?raw'
import infoCircle from '@/assets/icons/info-circle.svg?raw'
import lock from '@/assets/icons/lock.svg?raw'
import logout from '@/assets/icons/logout.svg?raw'
import mapPin from '@/assets/icons/map-pin.svg?raw'
import messageCircle from '@/assets/icons/message-circle.svg?raw'
import moodNeutral from '@/assets/icons/mood-neutral.svg?raw'
import robot from '@/assets/icons/robot.svg?raw'
import search from '@/assets/icons/search.svg?raw'
import shield from '@/assets/icons/shield.svg?raw'
import sparkles from '@/assets/icons/sparkles.svg?raw'
import star from '@/assets/icons/star.svg?raw'
import stopwatch from '@/assets/icons/stopwatch.svg?raw'
import thumbDown from '@/assets/icons/thumb-down.svg?raw'
import thumbUp from '@/assets/icons/thumb-up.svg?raw'
import trophy from '@/assets/icons/trophy.svg?raw'
import user from '@/assets/icons/user.svg?raw'
import users from '@/assets/icons/users.svg?raw'
import world from '@/assets/icons/world.svg?raw'
export const iconSvgs = {
alarm,
'alert-triangle': alertTriangle,
bell,
'book-2': book2,
books,
building,
bulb,
calendar,
'calendar-event': calendarEvent,
'chart-bar': chartBar,
'chart-line': chartLine,
'circle-check': circleCheck,
'circle-x': circleX,
'clipboard-list': clipboardList,
clock,
coin,
'hand-stop': handStop,
home,
inbox,
'info-circle': infoCircle,
lock,
logout,
'map-pin': mapPin,
'message-circle': messageCircle,
'mood-neutral': moodNeutral,
robot,
search,
shield,
sparkles,
star,
stopwatch,
'thumb-down': thumbDown,
'thumb-up': thumbUp,
trophy,
user,
users,
world,
} as const
export type IconName = keyof typeof iconSvgs
export const emojiToIcon: Record<string, IconName> = {
'⏰': 'alarm',
'⚠️': 'alert-triangle',
'🔔': 'bell',
'📖': 'book-2',
'📚': 'books',
'🏛': 'building',
'💡': 'bulb',
'📅': 'calendar',
'🗓️': 'calendar-event',
'📊': 'chart-bar',
'📈': 'chart-line',
'✅': 'circle-check',
'❌': 'circle-x',
'📋': 'clipboard-list',
'⏱': 'stopwatch',
'⏱️': 'stopwatch',
'🕒': 'clock',
'💰': 'coin',
'👋': 'hand-stop',
'🏠': 'home',
'📭': 'inbox',
: 'info-circle',
'🔒': 'lock',
'🚪': 'logout',
'📍': 'map-pin',
'💬': 'message-circle',
'😐': 'mood-neutral',
'🤖': 'robot',
'🔍': 'search',
'🛡️': 'shield',
'✨': 'sparkles',
'⭐': 'star',
'👍': 'thumb-up',
'👎': 'thumb-down',
'🏆': 'trophy',
'👤': 'user',
'👥': 'users',
'🌍': 'world',
'🌐': 'world',
} as const
export function normalizeIconName(input?: string | null): IconName | undefined {
if (!input) return undefined
if (input in iconSvgs) return input as IconName
return emojiToIcon[input]
}