@digo-labs/common 0.1.16 → 0.1.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/app-config-helpers.ts","../src/common-helpers.ts","../src/constants.ts","../src/icons.ts","../src/fonts.ts","../src/images.ts","../src/models.ts","../src/local-storage.ts","../src/session-storage.ts","../src/routes.ts","../src/string-helpers.ts","../src/strings.ts","../src/schemas/primitives.ts","../src/schemas/ai.ts","../src/schemas/dmx.ts","../src/schemas/database.ts","../src/schemas/storage.ts","../src/types/common-types.ts","../src/types/websocket-types.ts","../src/videos.ts","../src/utils.ts","../src/samples.ts","../src/auth.ts"],"sourcesContent":["export class AppConfigHelpers {\n private static appName: string | undefined;\n\n public static setCurrentAppName(name: string): void {\n if (this.appName !== undefined && this.appName !== name) {\n throw new Error(\n `setCurrentAppName: already set to '${this.appName}', cannot override with '${name}'. ` +\n 'This usually means defineApp() was called twice with different names.',\n );\n }\n this.appName = name;\n }\n\n public static getCurrentAppName(): string {\n if (this.appName === undefined) {\n throw new Error(\n 'getCurrentAppName: no app name registered. ' +\n 'Call defineApp() before constructing services, or pass an explicit value to the service constructor.',\n );\n }\n return this.appName;\n }\n\n public static resetAppName(): void {\n this.appName = undefined;\n }\n\n public static sanitizeAppName(name: string): string {\n const sanitized = name.toLowerCase().replace(/-/g, '_');\n\n if (!/^[a-z][a-z0-9_]*$/.test(sanitized)) {\n throw new Error(`sanitizeAppName: invalid app name '${name}' (sanitized: '${sanitized}')`);\n }\n\n return sanitized;\n }\n}\n","import { ImagePayload, Result, Time, tryCatch } from './';\n\nimport { removeBackground } from '@imgly/background-removal';\n\nimport { formatDistanceToNow, parseISO } from 'date-fns';\nimport { decode, encode } from 'base64-arraybuffer';\n\nexport class CommonHelpers {\n public static copyToClipboard(text: string) {\n navigator.clipboard.writeText(text)\n .then(() => {\n\n })\n .catch(() => {\n console.error('Failed to copy');\n });\n }\n\n public static async removeBackground(image: ImagePayload): Promise<ImagePayload> {\n const arrayBuffer = decode(image.base64);\n const blob = new Blob([arrayBuffer], { type: image.mediaType });\n\n const resultBlob = await removeBackground(blob);\n\n const resultArrayBuffer = await resultBlob.arrayBuffer();\n const base64 = encode(resultArrayBuffer);\n\n return {\n base64: base64,\n mediaType: 'image/png',\n };\n }\n\n public static getTimeFormatted(seconds: number): Time {\n const time: Time = {\n hours: Math.floor(seconds / 3600),\n minutes: Math.floor((seconds % 3600) / 60),\n seconds: seconds % 60,\n };\n return time;\n }\n\n public static async getTextFromClipboard(): Promise<string> {\n return await navigator.clipboard.readText();\n }\n\n public static decodeBase64(base64: string): ArrayBuffer {\n const arraybuffer = decode(base64);\n return arraybuffer;\n }\n\n public static getRandomInteger(min: number, max: number): number {\n const randomInteger = Math.floor(Math.random() * (max - min + 1)) + min;\n return randomInteger;\n }\n\n public static encodeArrayBufferToBase64(arrayBuffer: ArrayBuffer): string {\n const base64 = encode(arrayBuffer);\n return base64;\n }\n\n public static hexToRgb(hex: string) {\n const m = hex.match(/^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i);\n if (!m) return { r: 0, g: 0, b: 0 };\n return {\n r: parseInt(m[1], 16),\n g: parseInt(m[2], 16),\n b: parseInt(m[3], 16),\n };\n }\n\n public static rgbArrayToHex(rgb: [number, number, number]): string {\n const hex = rgb.map((value) => {\n const hexValue = value.toString(16);\n return hexValue.length === 1 ? '0' + hexValue : hexValue;\n }).join('');\n\n return `#${hex}`;\n }\n\n public static hexToRgbArray(hex: string): [number, number, number] {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n\n if (!result) return [0, 0, 0];\n\n return [\n parseInt(result[1], 16) / 255,\n parseInt(result[2], 16) / 255,\n parseInt(result[3], 16) / 255,\n ];\n }\n\n public static getCssVariable(variable: string) {\n return getComputedStyle(document.documentElement).getPropertyValue(variable);\n }\n\n public static setCssVariable(name: string, element: HTMLElement) {\n document.documentElement.style.setProperty(name, `${element.offsetHeight}px`);\n }\n\n public static lerp(start: number, end: number, t: number): number {\n return start + (end - start) * t; ;\n }\n\n public static lerpArray(start: number[], end: number[], t: number): number[] {\n return start.map((startItem, index) => startItem + (end[index] - startItem) * t);\n }\n\n public static clamp(value: number, min: number, max: number) {\n return Math.min(Math.max(value, min), max);\n }\n\n public static async downloadURI(uri: string, name?: string) {\n const response = await fetch(uri);\n const blob = await response.blob();\n const url = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = url;\n link.download = name || 'download';\n link.click();\n URL.revokeObjectURL(url);\n }\n\n public static async getFileFromUrl(url: string, fileName?: string): Promise<File> {\n const response = await fetch(url);\n const blob = await response.blob();\n const imageFile = new File([blob], fileName ? fileName : 'untitled', { type: blob.type });\n\n return imageFile;\n }\n\n public static generateUUID(): string {\n if (crypto.randomUUID) {\n return crypto.randomUUID();\n }\n\n const fallback = `${Date.now()}-${Math.random().toString(36).substring(2, 15)}${Math.random().toString(36).substring(2, 15)}`;\n\n return fallback;\n }\n\n public static async getImagePayloadFromUrl(url: string, fileName?: string): Promise<Result<ImagePayload>> {\n const imageFile = await this.getFileFromUrl(url, fileName);\n\n return this.getImagePayloadFromFile(imageFile);\n }\n\n public static async getImagePayloadFromFile(file: File): Promise<Result<ImagePayload>> {\n const [arrayBuffer, error] = await tryCatch(file.arrayBuffer());\n\n if (error) return [null, error];\n\n const base64 = CommonHelpers.encodeArrayBufferToBase64(arrayBuffer);\n const mediaType = file.type;\n\n const imageData: ImagePayload = { base64: base64, mediaType: mediaType };\n return [imageData, null];\n }\n\n public static getFileFromImagePayload(ImagePayload: ImagePayload): File {\n const arrayBuffer = decode(ImagePayload.base64);\n const blob = new Blob([arrayBuffer], { type: ImagePayload.mediaType });\n const extension = ImagePayload.mediaType.split('/')[1] || 'png';\n const file = new File([blob], `created-file.${extension}`, { type: ImagePayload.mediaType });\n\n return file;\n }\n\n public static setTabName(name: string) {\n document.title = `${name}`;\n }\n\n public static openFileSelector(accepts: string, callback: (file: File) => void): void {\n const input = document.createElement('input');\n input.type = 'file';\n\n input.accept = accepts;\n\n input.onchange = (event: Event) => {\n const target = event.target as HTMLInputElement;\n if (target.files && target.files.length > 0) {\n const file = target.files[0];\n callback(file);\n }\n };\n\n input.click();\n }\n\n public static formatNumberTwoDigits(number: number): string {\n const formatedNumber = number.toFixed().padStart(2, '0');\n return formatedNumber;\n }\n\n public getFormatedTime(miliseconds: number, decimals: number = 2): string {\n const time = (miliseconds / 1000).toFixed(decimals);\n return time;\n }\n\n public static async preloadImage(url: string): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n const image = new Image();\n image.onload = () => resolve();\n image.onerror = () => reject(new Error(`Failed to load: ${url}`));\n image.src = url;\n });\n }\n\n public static async preloadImages(urls: string[]): Promise<void> {\n const promises = urls.map(url => CommonHelpers.preloadImage(url));\n await Promise.all(promises);\n }\n\n public static getUniqueLetters(word: string): string[] {\n const uniqueLetters = [...new Set(word.split(''))];\n\n return uniqueLetters;\n }\n\n public static async compressImage(base64: string, mediaType: string, maxWidth: number = 800, quality: number = 0.7): Promise<ImagePayload> {\n return new Promise((resolve) => {\n const img = new Image();\n img.onload = () => {\n const canvas = document.createElement('canvas');\n const ratio = Math.min(maxWidth / img.width, maxWidth / img.height, 1);\n canvas.width = img.width * ratio;\n canvas.height = img.height * ratio;\n\n const ctx = canvas.getContext('2d')!;\n ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\n\n const compressedBase64 = canvas.toDataURL('image/jpeg', quality).split(',')[1];\n\n resolve({\n base64: compressedBase64,\n mediaType: 'image/jpeg',\n });\n };\n img.src = `data:${mediaType};base64,${base64}`;\n });\n }\n\n public static async downloadCsvFromUrl(url: string) {\n const response = await fetch(url);\n\n if (!response.ok) throw new Error(`Failed to download CSV file: ${response.statusText}`);\n\n const csvData = await response.text();\n\n return csvData;\n }\n\n public static getLastUpdated(timeStamptz: string): string {\n const date = parseISO(timeStamptz);\n const formattedDate = formatDistanceToNow(date, { addSuffix: true });\n\n return formattedDate;\n }\n\n public static getUniqueIdInList(baseId: string, ids: string[]): string {\n const match = baseId.match(/^(.*?)(-\\d+)?$/);\n let base = baseId;\n let suffix = 1;\n\n if (match) {\n base = match[1];\n if (match[2]) {\n suffix = parseInt(match[2].slice(1)) + 1;\n }\n }\n\n const baseLower = base.toLowerCase();\n let newId = `${baseLower}-${suffix}`;\n\n while (ids.some(id => id.toLowerCase() === newId)) {\n suffix++;\n newId = `${baseLower}-${suffix}`;\n }\n\n return newId.toLowerCase();\n }\n\n public static scrollToBottom(container: HTMLDivElement | null) {\n if (!container) return;\n\n container.scrollTo({\n top: container.scrollHeight,\n behavior: 'smooth',\n });\n }\n}\n","import { Breakpoint, ClassGroups, CodeLanguageMetadata, ModelPayload } from './types/common-types';\n\nexport const BACKEND_URL = 'https://api.digo-labs.com';\n\nexport const DIGO_HEADERS = 'X-Digo-App';\n\nexport const DIGO_ADMIN_SECRET = 'X-Admin-Secret';\n\nexport const DIGO_STORAGE_BUCKET_SUFFIX = '-digo-labs-storage';\n\nexport const DIGO_COLORS = ['#58C2E3', '#79F2A9', '#985EFF', '#BDF279'];\n\nexport const WS_URL = 'wss://ws.digo-labs.com';\n\nexport const REPLICATE_PROXY = {\n url: `${BACKEND_URL}/api/proxy/replicate`,\n targetHeader: 'x-replicate-target-url',\n hosts: /(\\.|^)replicate\\.com$/,\n};\n\nexport const AWS_DEFAULT_REGION = 'us-east-1';\n\nexport const BREAKPOINTS: Record<Breakpoint, number> = {\n 'sm': 640,\n 'md': 768,\n 'lg': 1024,\n 'xl': 1280,\n '2xl': 1536,\n};\n\nexport const TYPO_CLASS_GROUPS: ClassGroups = {\n 'font-size': [{ typo: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18'] }],\n 'font-weight': [{ 'typo-weight': ['100', '200', '300', '400', '500', '600', '700', '800', '900'] }],\n 'typo-family': ['typo-header', 'typo-label', 'typo-body', 'typo-code'],\n};\n\nexport const AI_MODELS: ModelPayload[] = [\n {\n name: 'Claude 3.7 Sonnet',\n description: 'Anthropic\\'s advanced model',\n icon: 'icon-[simple-icons--anthropic]',\n },\n {\n name: 'Gemini 2.5 Pro',\n description: 'Google\\'s latest model',\n icon: 'icon-[simple-icons--googlegemini]',\n },\n {\n name: 'GPT-4.1',\n description: 'OpenAi\\'s advanced model',\n icon: 'icon-[simple-icons--openai]',\n },\n];\n\nexport const LANGUAGE_MAP: Record<string, CodeLanguageMetadata> = {\n typescript: { icon: 'typescript', name: 'TypeScript' },\n javascript: { icon: 'javascript', name: 'JavaScript' },\n tsx: { icon: 'typescript', name: 'TSX' },\n jsx: { icon: 'javascript', name: 'JSX' },\n python: { icon: 'python', name: 'Python' },\n rust: { icon: 'code', name: 'Rust' },\n go: { icon: 'code', name: 'Go' },\n sql: { icon: 'code', name: 'SQL' },\n bash: { icon: 'terminal', name: 'Bash' },\n sh: { icon: 'terminal', name: 'Shell' },\n shell: { icon: 'terminal', name: 'Shell' },\n json: { icon: 'code', name: 'JSON' },\n css: { icon: 'code', name: 'CSS' },\n html: { icon: 'code', name: 'HTML' },\n markdown: { icon: 'code', name: 'Markdown' },\n yaml: { icon: 'code', name: 'YAML' },\n xml: { icon: 'code', name: 'XML' },\n text: { icon: 'code', name: 'Text' },\n};\n","enum IconCategory {\n Navigation = 'Navigation',\n Actions = 'Actions',\n Status = 'Status',\n Media = 'Media',\n Files = 'Files',\n UI = 'UI',\n Brands = 'Brands',\n Programming = 'Programming',\n Tools = 'Tools',\n Data = 'Data',\n Communication = 'Communication',\n Design = 'Design',\n AI = 'AI',\n Numbers = 'Numbers',\n Misc = 'Misc',\n}\n\ninterface IconProperties {\n icon: string;\n category: IconCategory;\n}\n\ninterface IconEntry extends IconProperties {\n id: string;\n}\n\nexport type CuratedIcons = keyof typeof CURATED_ICONS;\n\nconst CURATED_ICONS = {\n arrowUp: { category: IconCategory.Navigation, icon: 'icon-[lucide--arrow-up]' },\n arrowDown: { category: IconCategory.Navigation, icon: 'icon-[lucide--arrow-down]' },\n arrowLeft: { category: IconCategory.Navigation, icon: 'icon-[lucide--arrow-left]' },\n arrowRight: { category: IconCategory.Navigation, icon: 'icon-[lucide--arrow-right]' },\n arrowUpLeft: { category: IconCategory.Navigation, icon: 'icon-[lucide--arrow-up-left]' },\n arrowUpRight: { category: IconCategory.Navigation, icon: 'icon-[lucide--arrow-up-right]' },\n arrowDownLeft: { category: IconCategory.Navigation, icon: 'icon-[lucide--arrow-down-left]' },\n arrowDownRight: { category: IconCategory.Navigation, icon: 'icon-[lucide--arrow-down-right]' },\n arrowLeftRight: { category: IconCategory.Navigation, icon: 'icon-[lucide--arrow-left-right]' },\n arrowUpDown: { category: IconCategory.Navigation, icon: 'icon-[lucide--arrow-up-down]' },\n circleArrowUp: { category: IconCategory.Navigation, icon: 'icon-[lucide--circle-arrow-up]' },\n circleArrowDown: { category: IconCategory.Navigation, icon: 'icon-[lucide--circle-arrow-down]' },\n circleArrowLeft: { category: IconCategory.Navigation, icon: 'icon-[lucide--circle-arrow-left]' },\n circleArrowRight: { category: IconCategory.Navigation, icon: 'icon-[lucide--circle-arrow-right]' },\n chevronUp: { category: IconCategory.Navigation, icon: 'icon-[lucide--chevron-up]' },\n chevronDown: { category: IconCategory.Navigation, icon: 'icon-[lucide--chevron-down]' },\n chevronLeft: { category: IconCategory.Navigation, icon: 'icon-[lucide--chevron-left]' },\n chevronRight: { category: IconCategory.Navigation, icon: 'icon-[lucide--chevron-right]' },\n chevronsUp: { category: IconCategory.Navigation, icon: 'icon-[lucide--chevrons-up]' },\n chevronsDown: { category: IconCategory.Navigation, icon: 'icon-[lucide--chevrons-down]' },\n chevronsLeft: { category: IconCategory.Navigation, icon: 'icon-[lucide--chevrons-left]' },\n chevronsRight: { category: IconCategory.Navigation, icon: 'icon-[lucide--chevrons-right]' },\n chevronsUpDown: { category: IconCategory.Navigation, icon: 'icon-[lucide--chevrons-up-down]' },\n cornerDownLeft: { category: IconCategory.Navigation, icon: 'icon-[lucide--corner-down-left]' },\n cornerDownRight: { category: IconCategory.Navigation, icon: 'icon-[lucide--corner-down-right]' },\n cornerLeftDown: { category: IconCategory.Navigation, icon: 'icon-[lucide--corner-left-down]' },\n cornerLeftUp: { category: IconCategory.Navigation, icon: 'icon-[lucide--corner-left-up]' },\n cornerRightDown: { category: IconCategory.Navigation, icon: 'icon-[lucide--corner-right-down]' },\n cornerRightUp: { category: IconCategory.Navigation, icon: 'icon-[lucide--corner-right-up]' },\n cornerUpLeft: { category: IconCategory.Navigation, icon: 'icon-[lucide--corner-up-left]' },\n cornerUpRight: { category: IconCategory.Navigation, icon: 'icon-[lucide--corner-up-right]' },\n home: { category: IconCategory.Navigation, icon: 'icon-[lucide--house]' },\n compass: { category: IconCategory.Navigation, icon: 'icon-[lucide--compass]' },\n menu: { category: IconCategory.Navigation, icon: 'icon-[lucide--menu]' },\n anchor: { category: IconCategory.Navigation, icon: 'icon-[lucide--anchor]' },\n route: { category: IconCategory.Navigation, icon: 'icon-[lucide--route]' },\n router: { category: IconCategory.Navigation, icon: 'icon-[lucide--router]' },\n externalLink: { category: IconCategory.Navigation, icon: 'icon-[lucide--external-link]' },\n move: { category: IconCategory.Navigation, icon: 'icon-[lucide--move]' },\n expand: { category: IconCategory.Navigation, icon: 'icon-[material-symbols--expand-more-rounded]' },\n collapse: { category: IconCategory.Navigation, icon: 'icon-[material-symbols--expand-less-rounded]' },\n firstPage: { category: IconCategory.Navigation, icon: 'icon-[material-symbols--first-page-rounded]' },\n lastPage: { category: IconCategory.Navigation, icon: 'icon-[material-symbols--last-page-rounded]' },\n openInNew: { category: IconCategory.Navigation, icon: 'icon-[material-symbols--open-in-new-rounded]' },\n select: { category: IconCategory.Navigation, icon: 'icon-[mi--select]' },\n signIn: { category: IconCategory.Navigation, icon: 'icon-[lucide--log-in]' },\n login: { category: IconCategory.Navigation, icon: 'icon-[lucide--log-in]' },\n logout: { category: IconCategory.Navigation, icon: 'icon-[lucide--log-out]' },\n squareMenu: { category: IconCategory.Navigation, icon: 'icon-[lucide--square-menu]' },\n add: { category: IconCategory.Actions, icon: 'icon-[lucide--plus]' },\n remove: { category: IconCategory.Actions, icon: 'icon-[lucide--minus]' },\n close: { category: IconCategory.Actions, icon: 'icon-[lucide--x]' },\n check: { category: IconCategory.Actions, icon: 'icon-[lucide--check]' },\n checkCheck: { category: IconCategory.Actions, icon: 'icon-[lucide--check-check]' },\n checkIndeterminate: { category: IconCategory.Actions, icon: 'icon-[material-symbols--check-indeterminate-small-rounded]' },\n search: { category: IconCategory.Actions, icon: 'icon-[lucide--search]' },\n zoomIn: { category: IconCategory.Actions, icon: 'icon-[lucide--zoom-in]' },\n zoomOut: { category: IconCategory.Actions, icon: 'icon-[lucide--zoom-out]' },\n edit: { category: IconCategory.Actions, icon: 'icon-[lucide--pencil]' },\n pencilLine: { category: IconCategory.Actions, icon: 'icon-[lucide--pencil-line]' },\n delete: { category: IconCategory.Actions, icon: 'icon-[lucide--trash]' },\n trash: { category: IconCategory.Actions, icon: 'icon-[lucide--trash-2]' },\n copy: { category: IconCategory.Actions, icon: 'icon-[lucide--copy]' },\n paste: { category: IconCategory.Actions, icon: 'icon-[lucide--clipboard-paste]' },\n cut: { category: IconCategory.Actions, icon: 'icon-[lucide--scissors]' },\n save: { category: IconCategory.Actions, icon: 'icon-[lucide--save]' },\n download: { category: IconCategory.Actions, icon: 'icon-[lucide--download]' },\n upload: { category: IconCategory.Actions, icon: 'icon-[lucide--upload]' },\n refresh: { category: IconCategory.Actions, icon: 'icon-[lucide--refresh-cw]' },\n refreshCcw: { category: IconCategory.Actions, icon: 'icon-[lucide--refresh-ccw]' },\n rotateCw: { category: IconCategory.Actions, icon: 'icon-[lucide--rotate-cw]' },\n rotateCcw: { category: IconCategory.Actions, icon: 'icon-[lucide--rotate-ccw]' },\n sync: { category: IconCategory.Actions, icon: 'icon-[material-symbols--sync-rounded]' },\n undo: { category: IconCategory.Actions, icon: 'icon-[lucide--undo-2]' },\n redo: { category: IconCategory.Actions, icon: 'icon-[lucide--redo-2]' },\n send: { category: IconCategory.Actions, icon: 'icon-[lucide--send]' },\n share: { category: IconCategory.Actions, icon: 'icon-[lucide--share]' },\n share2: { category: IconCategory.Actions, icon: 'icon-[lucide--share-2]' },\n attach: { category: IconCategory.Actions, icon: 'icon-[lucide--paperclip]' },\n link: { category: IconCategory.Actions, icon: 'icon-[lucide--link]' },\n link2: { category: IconCategory.Actions, icon: 'icon-[lucide--link-2]' },\n unlink: { category: IconCategory.Actions, icon: 'icon-[lucide--unlink]' },\n filter: { category: IconCategory.Actions, icon: 'icon-[lucide--filter]' },\n listFilter: { category: IconCategory.Actions, icon: 'icon-[lucide--list-filter]' },\n sort: { category: IconCategory.Actions, icon: 'icon-[lucide--arrow-up-down]' },\n sortAsc: { category: IconCategory.Actions, icon: 'icon-[lucide--arrow-up-narrow-wide]' },\n sortDesc: { category: IconCategory.Actions, icon: 'icon-[lucide--arrow-down-wide-narrow]' },\n lock: { category: IconCategory.Actions, icon: 'icon-[lucide--lock]' },\n lockOpen: { category: IconCategory.Actions, icon: 'icon-[lucide--lock-open]' },\n unlock: { category: IconCategory.Actions, icon: 'icon-[lucide--lock-open]' },\n print: { category: IconCategory.Actions, icon: 'icon-[lucide--printer]' },\n backspace: { category: IconCategory.Actions, icon: 'icon-[lucide--delete]' },\n crop: { category: IconCategory.Actions, icon: 'icon-[lucide--crop]' },\n textSearch: { category: IconCategory.Actions, icon: 'icon-[lucide--text-search]' },\n clipboardCopy: { category: IconCategory.Actions, icon: 'icon-[lucide--clipboard-copy]' },\n replace: { category: IconCategory.Actions, icon: 'icon-[lucide--replace]' },\n searchCheck: { category: IconCategory.Actions, icon: 'icon-[lucide--search-check]' },\n success: { category: IconCategory.Status, icon: 'icon-[lucide--circle-check]' },\n checkCircle: { category: IconCategory.Status, icon: 'icon-[lucide--circle-check-big]' },\n info: { category: IconCategory.Status, icon: 'icon-[lucide--info]' },\n warning: { category: IconCategory.Status, icon: 'icon-[lucide--triangle-alert]' },\n error: { category: IconCategory.Status, icon: 'icon-[lucide--circle-x]' },\n help: { category: IconCategory.Status, icon: 'icon-[lucide--circle-help]' },\n spinner: { category: IconCategory.Status, icon: 'icon-[line-md--loading-twotone-loop]' },\n spinnerDots: { category: IconCategory.Status, icon: 'icon-[svg-spinners--3-dots-move]' },\n loading: { category: IconCategory.Status, icon: 'icon-[line-md--loading-twotone-loop]' },\n loaderCircle: { category: IconCategory.Status, icon: 'icon-[lucide--loader-circle]' },\n verified: { category: IconCategory.Status, icon: 'icon-[lucide--badge-check]' },\n visibility: { category: IconCategory.Status, icon: 'icon-[lucide--eye]' },\n visibilityOff: { category: IconCategory.Status, icon: 'icon-[lucide--eye-off]' },\n online: { category: IconCategory.Status, icon: 'icon-[lucide--circle-dot]' },\n circleCheck: { category: IconCategory.Status, icon: 'icon-[lucide--circle-check]' },\n squareCheck: { category: IconCategory.Status, icon: 'icon-[lucide--square-check]' },\n loader: { category: IconCategory.Status, icon: 'icon-[lucide--loader]' },\n gauge: { category: IconCategory.Status, icon: 'icon-[lucide--gauge]' },\n play: { category: IconCategory.Media, icon: 'icon-[lucide--play]' },\n pause: { category: IconCategory.Media, icon: 'icon-[lucide--pause]' },\n stop: { category: IconCategory.Media, icon: 'icon-[lucide--square]' },\n stopCircle: { category: IconCategory.Media, icon: 'icon-[lucide--circle-stop]' },\n skipBack: { category: IconCategory.Media, icon: 'icon-[lucide--skip-back]' },\n skipForward: { category: IconCategory.Media, icon: 'icon-[lucide--skip-forward]' },\n skipNext: { category: IconCategory.Media, icon: 'icon-[lucide--skip-forward]' },\n skipPrevious: { category: IconCategory.Media, icon: 'icon-[lucide--skip-back]' },\n fastForward: { category: IconCategory.Media, icon: 'icon-[lucide--fast-forward]' },\n fastRewind: { category: IconCategory.Media, icon: 'icon-[lucide--rewind]' },\n rewind: { category: IconCategory.Media, icon: 'icon-[lucide--rewind]' },\n loop: { category: IconCategory.Media, icon: 'icon-[lucide--repeat]' },\n shuffle: { category: IconCategory.Media, icon: 'icon-[lucide--shuffle]' },\n volumeUp: { category: IconCategory.Media, icon: 'icon-[lucide--volume-2]' },\n volumeDown: { category: IconCategory.Media, icon: 'icon-[lucide--volume-1]' },\n volumeOff: { category: IconCategory.Media, icon: 'icon-[lucide--volume-off]' },\n image: { category: IconCategory.Media, icon: 'icon-[lucide--image]' },\n imagePlus: { category: IconCategory.Media, icon: 'icon-[lucide--image-plus]' },\n video: { category: IconCategory.Media, icon: 'icon-[lucide--video]' },\n videoOff: { category: IconCategory.Media, icon: 'icon-[lucide--video-off]' },\n camera: { category: IconCategory.Media, icon: 'icon-[lucide--camera]' },\n mic: { category: IconCategory.Media, icon: 'icon-[lucide--mic]' },\n micOff: { category: IconCategory.Media, icon: 'icon-[lucide--mic-off]' },\n webcam: { category: IconCategory.Media, icon: 'icon-[lucide--webcam]' },\n music: { category: IconCategory.Media, icon: 'icon-[lucide--music]' },\n music2: { category: IconCategory.Media, icon: 'icon-[lucide--music-2]' },\n headset: { category: IconCategory.Media, icon: 'icon-[lucide--headset]' },\n captions: { category: IconCategory.Media, icon: 'icon-[lucide--captions]' },\n playCircle: { category: IconCategory.Media, icon: 'icon-[lucide--circle-play]' },\n pauseCircle: { category: IconCategory.Media, icon: 'icon-[lucide--circle-pause]' },\n imageUp: { category: IconCategory.Media, icon: 'icon-[lucide--image-up]' },\n images: { category: IconCategory.Media, icon: 'icon-[lucide--images]' },\n file: { category: IconCategory.Files, icon: 'icon-[lucide--file]' },\n fileText: { category: IconCategory.Files, icon: 'icon-[lucide--file-text]' },\n fileAdd: { category: IconCategory.Files, icon: 'icon-[lucide--file-plus]' },\n fileZip: { category: IconCategory.Files, icon: 'icon-[lucide--file-archive]' },\n fileSymlink: { category: IconCategory.Files, icon: 'icon-[lucide--file-symlink]' },\n fileSearch: { category: IconCategory.Files, icon: 'icon-[lucide--file-search]' },\n folder: { category: IconCategory.Files, icon: 'icon-[lucide--folder]' },\n folderOpen: { category: IconCategory.Files, icon: 'icon-[lucide--folder-open]' },\n folderClosed: { category: IconCategory.Files, icon: 'icon-[lucide--folder-closed]' },\n folderPlus: { category: IconCategory.Files, icon: 'icon-[lucide--folder-plus]' },\n folderMinus: { category: IconCategory.Files, icon: 'icon-[lucide--folder-minus]' },\n folderGit: { category: IconCategory.Files, icon: 'icon-[lucide--folder-git-2]' },\n folderSymlink: { category: IconCategory.Files, icon: 'icon-[lucide--folder-symlink]' },\n document: { category: IconCategory.Files, icon: 'icon-[lucide--file-text]' },\n code: { category: IconCategory.Files, icon: 'icon-[lucide--code]' },\n codeBlock: { category: IconCategory.Files, icon: 'icon-[lucide--square-code]' },\n codeBracket: { category: IconCategory.Files, icon: 'icon-[lucide--braces]' },\n codeWrap: { category: IconCategory.Files, icon: 'icon-[lucide--wrap-text]' },\n archive: { category: IconCategory.Files, icon: 'icon-[lucide--archive]' },\n notebook: { category: IconCategory.Files, icon: 'icon-[lucide--notebook]' },\n notes: { category: IconCategory.Files, icon: 'icon-[lucide--sticky-note]' },\n clipboard: { category: IconCategory.Files, icon: 'icon-[lucide--clipboard]' },\n floppyDisk: { category: IconCategory.Files, icon: 'icon-[lucide--save]' },\n fileUp: { category: IconCategory.Files, icon: 'icon-[lucide--file-up]' },\n clipboardList: { category: IconCategory.Files, icon: 'icon-[lucide--clipboard-list]' },\n files: { category: IconCategory.Files, icon: 'icon-[lucide--files]' },\n filePen: { category: IconCategory.Files, icon: 'icon-[lucide--file-pen]' },\n panelLeft: { category: IconCategory.UI, icon: 'icon-[lucide--panel-left]' },\n panelRight: { category: IconCategory.UI, icon: 'icon-[lucide--panel-right]' },\n panelTop: { category: IconCategory.UI, icon: 'icon-[lucide--panel-top]' },\n panelBottom: { category: IconCategory.UI, icon: 'icon-[lucide--panel-bottom]' },\n sidebar: { category: IconCategory.UI, icon: 'icon-[lucide--panel-left]' },\n moreHorizontal: { category: IconCategory.UI, icon: 'icon-[lucide--ellipsis]' },\n moreVertical: { category: IconCategory.UI, icon: 'icon-[lucide--ellipsis-vertical]' },\n dragHandle: { category: IconCategory.UI, icon: 'icon-[lucide--grip-horizontal]' },\n dragIndicator: { category: IconCategory.UI, icon: 'icon-[lucide--grip-vertical]' },\n gridView: { category: IconCategory.UI, icon: 'icon-[lucide--grid-2x2]' },\n gridSquare: { category: IconCategory.UI, icon: 'icon-[lucide--grid-2x2]' },\n colorSwatch: { category: IconCategory.UI, icon: 'icon-[heroicons-solid--color-swatch]' },\n layoutGrid: { category: IconCategory.UI, icon: 'icon-[lucide--layout-grid]' },\n listView: { category: IconCategory.UI, icon: 'icon-[lucide--list]' },\n listOrdered: { category: IconCategory.UI, icon: 'icon-[lucide--list-ordered]' },\n settings: { category: IconCategory.UI, icon: 'icon-[lucide--settings]' },\n tune: { category: IconCategory.UI, icon: 'icon-[lucide--sliders-horizontal]' },\n slidersVertical: { category: IconCategory.UI, icon: 'icon-[lucide--sliders-vertical]' },\n notifications: { category: IconCategory.UI, icon: 'icon-[lucide--bell]' },\n bellDot: { category: IconCategory.UI, icon: 'icon-[lucide--bell-dot]' },\n bellOff: { category: IconCategory.UI, icon: 'icon-[lucide--bell-off]' },\n person: { category: IconCategory.UI, icon: 'icon-[lucide--user]' },\n group: { category: IconCategory.UI, icon: 'icon-[lucide--users]' },\n userCheck: { category: IconCategory.UI, icon: 'icon-[lucide--user-check]' },\n userPlus: { category: IconCategory.UI, icon: 'icon-[lucide--user-plus]' },\n userMinus: { category: IconCategory.UI, icon: 'icon-[lucide--user-minus]' },\n userX: { category: IconCategory.UI, icon: 'icon-[lucide--user-x]' },\n userCog: { category: IconCategory.UI, icon: 'icon-[lucide--user-cog]' },\n keyboard: { category: IconCategory.UI, icon: 'icon-[lucide--keyboard]' },\n keyboardReturn: { category: IconCategory.UI, icon: 'icon-[material-symbols--keyboard-return-rounded]' },\n keyboardCommand: { category: IconCategory.UI, icon: 'icon-[lucide--command]' },\n fullscreen: { category: IconCategory.UI, icon: 'icon-[lucide--maximize]' },\n fullscreenExit: { category: IconCategory.UI, icon: 'icon-[lucide--minimize]' },\n dashboard: { category: IconCategory.UI, icon: 'icon-[lucide--layout-dashboard]' },\n widgets: { category: IconCategory.UI, icon: 'icon-[material-symbols--widgets-rounded]' },\n apps: { category: IconCategory.UI, icon: 'icon-[lucide--grid-3x3]' },\n pictureInPicture: { category: IconCategory.UI, icon: 'icon-[lucide--picture-in-picture]' },\n toggleOn: { category: IconCategory.UI, icon: 'icon-[lucide--toggle-right]' },\n toggleOff: { category: IconCategory.UI, icon: 'icon-[lucide--toggle-left]' },\n appWindow: { category: IconCategory.UI, icon: 'icon-[lucide--app-window]' },\n terminalWindow: { category: IconCategory.UI, icon: 'icon-[lucide--square-terminal]' },\n scrollArea: { category: IconCategory.UI, icon: 'icon-[lucide--scroll]' },\n inspectSearch: { category: IconCategory.UI, icon: 'icon-[lucide--scan-search]' },\n option: { category: IconCategory.UI, icon: 'icon-[lucide--option]' },\n cube: { category: IconCategory.UI, icon: 'icon-[iconoir--select-face-3d]' },\n textCursorInput: { category: IconCategory.UI, icon: 'icon-[lucide--text-cursor-input]' },\n blocks: { category: IconCategory.UI, icon: 'icon-[lucide--blocks]' },\n listTree: { category: IconCategory.UI, icon: 'icon-[lucide--list-tree]' },\n squareChevronDown: { category: IconCategory.UI, icon: 'icon-[lucide--square-chevron-down]' },\n letterText: { category: IconCategory.UI, icon: 'icon-[lucide--letter-text]' },\n squareMousePointer: { category: IconCategory.UI, icon: 'icon-[lucide--square-mouse-pointer]' },\n columns3: { category: IconCategory.UI, icon: 'icon-[lucide--columns-3]' },\n listCollapse: { category: IconCategory.UI, icon: 'icon-[lucide--list-collapse]' },\n foldVertical: { category: IconCategory.UI, icon: 'icon-[lucide--fold-vertical]' },\n inbox: { category: IconCategory.UI, icon: 'icon-[lucide--inbox]' },\n squareDashed: { category: IconCategory.UI, icon: 'icon-[lucide--square-dashed]' },\n tableOfContents: { category: IconCategory.UI, icon: 'icon-[lucide--table-of-contents]' },\n grid3x3: { category: IconCategory.UI, icon: 'icon-[lucide--grid-3x3]' },\n fieldGroup: { category: IconCategory.UI, icon: 'icon-[lucide--group]' },\n rectangleEllipsis: { category: IconCategory.UI, icon: 'icon-[lucide--rectangle-ellipsis]' },\n inputGroup: { category: IconCategory.UI, icon: 'icon-[lucide--between-horizontal-end]' },\n groupItems: { category: IconCategory.UI, icon: 'icon-[lucide--group]' },\n separator: { category: IconCategory.UI, icon: 'icon-[lucide--separator-horizontal]' },\n stretchHorizontal: { category: IconCategory.UI, icon: 'icon-[lucide--stretch-horizontal]' },\n squareStack: { category: IconCategory.UI, icon: 'icon-[lucide--square-stack]' },\n textCursor: { category: IconCategory.UI, icon: 'icon-[lucide--text-cursor]' },\n component: { category: IconCategory.UI, icon: 'icon-[lucide--component]' },\n layoutTemplate: { category: IconCategory.UI, icon: 'icon-[lucide--layout-template]' },\n google: { category: IconCategory.Brands, icon: 'icon-[logos--google-icon]' },\n googleMono: { category: IconCategory.Brands, icon: 'icon-[simple-icons--google]' },\n github: { category: IconCategory.Brands, icon: 'icon-[mdi--github]' },\n apple: { category: IconCategory.Brands, icon: 'icon-[mdi--apple]' },\n openai: { category: IconCategory.Brands, icon: 'icon-[simple-icons--openai]' },\n anthropic: { category: IconCategory.Brands, icon: 'icon-[simple-icons--anthropic]' },\n gemini: { category: IconCategory.Brands, icon: 'icon-[simple-icons--googlegemini]' },\n discord: { category: IconCategory.Brands, icon: 'icon-[simple-icons--discord]' },\n slack: { category: IconCategory.Brands, icon: 'icon-[simple-icons--slack]' },\n figma: { category: IconCategory.Brands, icon: 'icon-[simple-icons--figma]' },\n linkedin: { category: IconCategory.Brands, icon: 'icon-[lucide--linkedin]' },\n codepen: { category: IconCategory.Brands, icon: 'icon-[lucide--codepen]' },\n rss: { category: IconCategory.Brands, icon: 'icon-[lucide--rss]' },\n typescript: { category: IconCategory.Programming, icon: 'icon-[simple-icons--typescript]' },\n javascript: { category: IconCategory.Programming, icon: 'icon-[simple-icons--javascript]' },\n python: { category: IconCategory.Programming, icon: 'icon-[simple-icons--python]' },\n react: { category: IconCategory.Programming, icon: 'icon-[simple-icons--react]' },\n tailwindcss: { category: IconCategory.Programming, icon: 'icon-[simple-icons--tailwindcss]' },\n json: { category: IconCategory.Programming, icon: 'icon-[lucide--braces]' },\n html: { category: IconCategory.Programming, icon: 'icon-[simple-icons--html5]' },\n css: { category: IconCategory.Programming, icon: 'icon-[simple-icons--css3]' },\n terminal: { category: IconCategory.Programming, icon: 'icon-[lucide--terminal]' },\n api: { category: IconCategory.Programming, icon: 'icon-[lucide--webhook]' },\n variable: { category: IconCategory.Programming, icon: 'icon-[lucide--variable]' },\n webhook: { category: IconCategory.Programming, icon: 'icon-[lucide--webhook]' },\n functionIcon: { category: IconCategory.Programming, icon: 'icon-[lucide--function-square]' },\n cursor: { category: IconCategory.Tools, icon: 'icon-[lucide--mouse-pointer]' },\n cursorClick: { category: IconCategory.Tools, icon: 'icon-[lucide--mouse-pointer-click]' },\n hand: { category: IconCategory.Tools, icon: 'icon-[lucide--hand]' },\n pen: { category: IconCategory.Tools, icon: 'icon-[lucide--pen]' },\n brush: { category: IconCategory.Tools, icon: 'icon-[lucide--paintbrush]' },\n eraser: { category: IconCategory.Tools, icon: 'icon-[lucide--eraser]' },\n colorize: { category: IconCategory.Tools, icon: 'icon-[lucide--pipette]' },\n straighten: { category: IconCategory.Tools, icon: 'icon-[lucide--ruler]' },\n wrench: { category: IconCategory.Tools, icon: 'icon-[lucide--wrench]' },\n plug: { category: IconCategory.Tools, icon: 'icon-[lucide--plug]' },\n scan: { category: IconCategory.Tools, icon: 'icon-[lucide--scan]' },\n aperture: { category: IconCategory.Tools, icon: 'icon-[lucide--aperture]' },\n pencilRuler: { category: IconCategory.Tools, icon: 'icon-[lucide--pencil-ruler]' },\n mousePointer2: { category: IconCategory.Tools, icon: 'icon-[lucide--mouse-pointer-2]' },\n table: { category: IconCategory.Data, icon: 'icon-[lucide--table]' },\n barChart: { category: IconCategory.Data, icon: 'icon-[lucide--chart-bar]' },\n chartBarStacked: { category: IconCategory.Data, icon: 'icon-[lucide--chart-bar-stacked]' },\n pieChart: { category: IconCategory.Data, icon: 'icon-[lucide--chart-pie]' },\n lineChart: { category: IconCategory.Data, icon: 'icon-[lucide--line-chart]' },\n chartActivity: { category: IconCategory.Data, icon: 'icon-[lucide--activity]' },\n trendingUp: { category: IconCategory.Data, icon: 'icon-[lucide--trending-up]' },\n trendingDown: { category: IconCategory.Data, icon: 'icon-[lucide--trending-down]' },\n analytics: { category: IconCategory.Data, icon: 'icon-[lucide--chart-no-axes-combined]' },\n array: { category: IconCategory.Data, icon: 'icon-[material-symbols--data-array-rounded]' },\n database: { category: IconCategory.Data, icon: 'icon-[lucide--database]' },\n tag: { category: IconCategory.Data, icon: 'icon-[lucide--tag]' },\n label: { category: IconCategory.Data, icon: 'icon-[material-symbols--label-rounded]' },\n hash: { category: IconCategory.Data, icon: 'icon-[lucide--hash]' },\n percent: { category: IconCategory.Data, icon: 'icon-[lucide--percent]' },\n tally5: { category: IconCategory.Data, icon: 'icon-[lucide--tally-5]' },\n chat: { category: IconCategory.Communication, icon: 'icon-[lucide--message-square]' },\n chatBubble: { category: IconCategory.Communication, icon: 'icon-[lucide--message-circle]' },\n messageTyping: { category: IconCategory.Communication, icon: 'icon-[lucide--message-square-more]' },\n comment: { category: IconCategory.Communication, icon: 'icon-[lucide--message-square-text]' },\n email: { category: IconCategory.Communication, icon: 'icon-[lucide--mail]' },\n call: { category: IconCategory.Communication, icon: 'icon-[lucide--phone]' },\n thumbUp: { category: IconCategory.Communication, icon: 'icon-[lucide--thumbs-up]' },\n thumbDown: { category: IconCategory.Communication, icon: 'icon-[lucide--thumbs-down]' },\n messageSquareMore: { category: IconCategory.Communication, icon: 'icon-[lucide--message-square-more]' },\n messageCircle: { category: IconCategory.Communication, icon: 'icon-[lucide--message-circle]' },\n messagesSquare: { category: IconCategory.Communication, icon: 'icon-[lucide--messages-square]' },\n palette: { category: IconCategory.Design, icon: 'icon-[lucide--palette]' },\n paintBucket: { category: IconCategory.Design, icon: 'icon-[lucide--paint-bucket]' },\n formatPaint: { category: IconCategory.Design, icon: 'icon-[lucide--paint-roller]' },\n autoAwesome: { category: IconCategory.Design, icon: 'icon-[material-symbols--auto-awesome-rounded]' },\n style: { category: IconCategory.Design, icon: 'icon-[material-symbols--style]' },\n opacity: { category: IconCategory.Design, icon: 'icon-[material-symbols--opacity-rounded]' },\n gradient: { category: IconCategory.Design, icon: 'icon-[material-symbols--gradient]' },\n contrast: { category: IconCategory.Design, icon: 'icon-[carbon--contrast]' },\n brightness: { category: IconCategory.Design, icon: 'icon-[lucide--sun]' },\n layers: { category: IconCategory.Design, icon: 'icon-[lucide--layers]' },\n blendMode: { category: IconCategory.Design, icon: 'icon-[lucide--blend]' },\n shadow: { category: IconCategory.Design, icon: 'icon-[material-symbols--ev-shadow]' },\n roundedCorner: { category: IconCategory.Design, icon: 'icon-[material-symbols--rounded-corner-rounded]' },\n formatSpacing: { category: IconCategory.Design, icon: 'icon-[material-symbols--format-letter-spacing-rounded]' },\n shapes: { category: IconCategory.Design, icon: 'icon-[lucide--shapes]' },\n swatchBook: { category: IconCategory.Design, icon: 'icon-[lucide--swatch-book]' },\n droplets: { category: IconCategory.Design, icon: 'icon-[lucide--droplets]' },\n sunMedium: { category: IconCategory.Design, icon: 'icon-[lucide--sun-medium]' },\n spline: { category: IconCategory.Design, icon: 'icon-[lucide--spline]' },\n robot: { category: IconCategory.AI, icon: 'icon-[lucide--bot]' },\n sparkles: { category: IconCategory.AI, icon: 'icon-[lucide--sparkles]' },\n sparkle: { category: IconCategory.AI, icon: 'icon-[lucide--sparkle]' },\n brain: { category: IconCategory.AI, icon: 'icon-[lucide--brain]' },\n magic: { category: IconCategory.AI, icon: 'icon-[lucide--wand-sparkles]' },\n experiment: { category: IconCategory.AI, icon: 'icon-[lucide--flask-conical]' },\n psychology: { category: IconCategory.AI, icon: 'icon-[material-symbols--psychology-rounded]' },\n botMessageSquare: { category: IconCategory.AI, icon: 'icon-[lucide--bot-message-square]' },\n one: { category: IconCategory.Numbers, icon: 'icon-[material-symbols--counter-1-rounded]' },\n two: { category: IconCategory.Numbers, icon: 'icon-[material-symbols--counter-2-rounded]' },\n three: { category: IconCategory.Numbers, icon: 'icon-[material-symbols--counter-3-rounded]' },\n four: { category: IconCategory.Numbers, icon: 'icon-[material-symbols--counter-4-rounded]' },\n five: { category: IconCategory.Numbers, icon: 'icon-[material-symbols--counter-5-rounded]' },\n six: { category: IconCategory.Numbers, icon: 'icon-[material-symbols--counter-6-rounded]' },\n seven: { category: IconCategory.Numbers, icon: 'icon-[material-symbols--counter-7-rounded]' },\n eight: { category: IconCategory.Numbers, icon: 'icon-[material-symbols--counter-8]' },\n nine: { category: IconCategory.Numbers, icon: 'icon-[material-symbols--counter-9-rounded]' },\n favorite: { category: IconCategory.Misc, icon: 'icon-[lucide--heart]' },\n star: { category: IconCategory.Misc, icon: 'icon-[lucide--star]' },\n bookmark: { category: IconCategory.Misc, icon: 'icon-[lucide--bookmark]' },\n flag: { category: IconCategory.Misc, icon: 'icon-[lucide--flag]' },\n flagTriangle: { category: IconCategory.Misc, icon: 'icon-[lucide--flag-triangle-right]' },\n creditCard: { category: IconCategory.Misc, icon: 'icon-[lucide--credit-card]' },\n shoppingCart: { category: IconCategory.Misc, icon: 'icon-[lucide--shopping-cart]' },\n store: { category: IconCategory.Misc, icon: 'icon-[lucide--store]' },\n coins: { category: IconCategory.Misc, icon: 'icon-[lucide--coins]' },\n dollarSign: { category: IconCategory.Misc, icon: 'icon-[lucide--dollar-sign]' },\n receipt: { category: IconCategory.Misc, icon: 'icon-[lucide--receipt]' },\n location: { category: IconCategory.Misc, icon: 'icon-[lucide--map-pin]' },\n calendar: { category: IconCategory.Misc, icon: 'icon-[lucide--calendar]' },\n clock: { category: IconCategory.Misc, icon: 'icon-[lucide--clock]' },\n clockRewind: { category: IconCategory.Misc, icon: 'icon-[lucide--history]' },\n schedule: { category: IconCategory.Misc, icon: 'icon-[lucide--clock]' },\n timer: { category: IconCategory.Misc, icon: 'icon-[lucide--timer]' },\n stopwatch: { category: IconCategory.Misc, icon: 'icon-[lucide--timer]' },\n alarmClock: { category: IconCategory.Misc, icon: 'icon-[lucide--alarm-clock]' },\n lightbulb: { category: IconCategory.Misc, icon: 'icon-[lucide--lightbulb]' },\n bolt: { category: IconCategory.Misc, icon: 'icon-[lucide--zap]' },\n cloud: { category: IconCategory.Misc, icon: 'icon-[lucide--cloud]' },\n cloudUpload: { category: IconCategory.Misc, icon: 'icon-[lucide--cloud-upload]' },\n cloudDownload: { category: IconCategory.Misc, icon: 'icon-[lucide--cloud-download]' },\n lightMode: { category: IconCategory.Misc, icon: 'icon-[lucide--sun]' },\n darkMode: { category: IconCategory.Misc, icon: 'icon-[lucide--moon]' },\n moonStar: { category: IconCategory.Misc, icon: 'icon-[lucide--moon-star]' },\n sunDim: { category: IconCategory.Misc, icon: 'icon-[lucide--sun-dim]' },\n power: { category: IconCategory.Misc, icon: 'icon-[lucide--power]' },\n shield: { category: IconCategory.Misc, icon: 'icon-[lucide--shield]' },\n shieldCheck: { category: IconCategory.Misc, icon: 'icon-[lucide--shield-check]' },\n shieldOff: { category: IconCategory.Misc, icon: 'icon-[lucide--shield-off]' },\n key: { category: IconCategory.Misc, icon: 'icon-[lucide--key]' },\n keyRound: { category: IconCategory.Misc, icon: 'icon-[lucide--key-round]' },\n fingerprint: { category: IconCategory.Misc, icon: 'icon-[lucide--fingerprint]' },\n pin: { category: IconCategory.Misc, icon: 'icon-[lucide--pin]' },\n paperclip: { category: IconCategory.Misc, icon: 'icon-[lucide--paperclip]' },\n globe: { category: IconCategory.Misc, icon: 'icon-[lucide--globe]' },\n globeLock: { category: IconCategory.Misc, icon: 'icon-[lucide--globe-lock]' },\n gps: { category: IconCategory.Misc, icon: 'icon-[lucide--locate]' },\n network: { category: IconCategory.Misc, icon: 'icon-[lucide--network]' },\n cpu: { category: IconCategory.Misc, icon: 'icon-[lucide--cpu]' },\n monitor: { category: IconCategory.Misc, icon: 'icon-[lucide--monitor]' },\n smartphone: { category: IconCategory.Misc, icon: 'icon-[lucide--smartphone]' },\n tablet: { category: IconCategory.Misc, icon: 'icon-[lucide--tablet]' },\n monitorSmartphone: { category: IconCategory.Misc, icon: 'icon-[lucide--monitor-smartphone]' },\n server: { category: IconCategory.Misc, icon: 'icon-[lucide--server]' },\n hardDrive: { category: IconCategory.Misc, icon: 'icon-[lucide--hard-drive]' },\n box: { category: IconCategory.Misc, icon: 'icon-[lucide--box]' },\n puzzle: { category: IconCategory.Misc, icon: 'icon-[lucide--puzzle]' },\n briefcase: { category: IconCategory.Misc, icon: 'icon-[lucide--briefcase]' },\n calculator: { category: IconCategory.Misc, icon: 'icon-[lucide--calculator]' },\n buildings: { category: IconCategory.Misc, icon: 'icon-[lucide--building-2]' },\n bug: { category: IconCategory.Misc, icon: 'icon-[lucide--bug]' },\n droplet: { category: IconCategory.Misc, icon: 'icon-[lucide--droplet]' },\n bookOpen: { category: IconCategory.Misc, icon: 'icon-[lucide--book-open]' },\n bookClosed: { category: IconCategory.Misc, icon: 'icon-[lucide--book-marked]' },\n lifebuoy: { category: IconCategory.Misc, icon: 'icon-[lucide--life-buoy]' },\n accessibility: { category: IconCategory.Misc, icon: 'icon-[lucide--accessibility]' },\n workflow: { category: IconCategory.Misc, icon: 'icon-[lucide--workflow]' },\n gitBranch: { category: IconCategory.Misc, icon: 'icon-[lucide--git-branch]' },\n gitBranchPlus: { category: IconCategory.Misc, icon: 'icon-[lucide--git-branch-plus]' },\n gitCommit: { category: IconCategory.Misc, icon: 'icon-[lucide--git-commit-horizontal]' },\n gitMerge: { category: IconCategory.Misc, icon: 'icon-[lucide--git-merge]' },\n gitPullRequest: { category: IconCategory.Misc, icon: 'icon-[lucide--git-pull-request]' },\n crosshair: { category: IconCategory.Misc, icon: 'icon-[lucide--crosshair]' },\n target: { category: IconCategory.Misc, icon: 'icon-[lucide--target]' },\n smile: { category: IconCategory.Misc, icon: 'icon-[lucide--smile]' },\n frown: { category: IconCategory.Misc, icon: 'icon-[lucide--frown]' },\n smilePlus: { category: IconCategory.Misc, icon: 'icon-[lucide--smile-plus]' },\n bold: { category: IconCategory.Misc, icon: 'icon-[lucide--bold]' },\n italic: { category: IconCategory.Misc, icon: 'icon-[lucide--italic]' },\n strikethrough: { category: IconCategory.Misc, icon: 'icon-[lucide--strikethrough]' },\n underline: { category: IconCategory.Misc, icon: 'icon-[lucide--underline]' },\n heading: { category: IconCategory.Misc, icon: 'icon-[lucide--heading]' },\n type: { category: IconCategory.Misc, icon: 'icon-[lucide--type]' },\n caseSensitive: { category: IconCategory.Misc, icon: 'icon-[lucide--case-sensitive]' },\n alignLeft: { category: IconCategory.Misc, icon: 'icon-[lucide--align-left]' },\n alignCenter: { category: IconCategory.Misc, icon: 'icon-[lucide--align-center]' },\n alignRight: { category: IconCategory.Misc, icon: 'icon-[lucide--align-right]' },\n sunMoon: { category: IconCategory.Misc, icon: 'icon-[lucide--sun-moon]' },\n tv: { category: IconCategory.Misc, icon: 'icon-[lucide--tv]' },\n tvMinimal: { category: IconCategory.Misc, icon: 'icon-[lucide--tv-minimal]' },\n orbit: { category: IconCategory.Misc, icon: 'icon-[lucide--orbit]' },\n gitFork: { category: IconCategory.Misc, icon: 'icon-[lucide--git-fork]' },\n bookOpenText: { category: IconCategory.Misc, icon: 'icon-[lucide--book-open-text]' },\n serverOff: { category: IconCategory.Misc, icon: 'icon-[lucide--server-off]' },\n packagePlus: { category: IconCategory.Misc, icon: 'icon-[lucide--package-plus]' },\n\n} satisfies Record<string, IconProperties>;\n\nexport class IconHelpers {\n public static getIcon(name: string): string {\n return name in CURATED_ICONS ? CURATED_ICONS[name as CuratedIcons].icon : name;\n }\n\n public static getCategory(name: CuratedIcons): IconCategory {\n return CURATED_ICONS[name].category;\n }\n\n public static getCategories(): IconCategory[] {\n const usedCategories = new Set<IconCategory>();\n\n for (const icon of Object.values(CURATED_ICONS)) {\n usedCategories.add(icon.category);\n }\n\n return Object.values(IconCategory).filter(cat => usedCategories.has(cat));\n }\n\n public static getByCategory(): Record<IconCategory, IconEntry[]> {\n const grouped = {} as Record<IconCategory, IconEntry[]>;\n\n for (const category of Object.values(IconCategory)) {\n grouped[category] = [];\n }\n\n for (const [id, data] of Object.entries(CURATED_ICONS)) {\n grouped[data.category].push({\n id: id,\n category: data.category,\n icon: data.icon,\n });\n }\n\n return grouped;\n }\n}\n","import indexCss from './index.css?raw';\n\nexport type FontFormat = 'ttf' | 'otf' | 'woff2';\n\nexport interface FontFaceData {\n family: string;\n weightMin: number;\n weightMax: number;\n style: string;\n format: FontFormat;\n filePath: string;\n fileName: string;\n cssVariable: string | null;\n}\n\nconst FONT_VAR_REGEX = /--font-([\\w-]+):\\s*'([^']+)'/g;\n\nconst familyToVariable = new Map<string, string>();\n\nlet varMatch: RegExpExecArray | null;\n\nwhile ((varMatch = FONT_VAR_REGEX.exec(indexCss)) !== null) {\n const variableName = `--font-${varMatch[1]}`;\n const familyName = varMatch[2];\n familyToVariable.set(familyName.toLowerCase(), variableName);\n}\n\nconst FONT_FACE_REGEX = /@font-face\\s*\\{([^}]*)\\}/gs;\n\nconst parsedFonts: FontFaceData[] = [];\n\nlet faceMatch: RegExpExecArray | null;\n\nwhile ((faceMatch = FONT_FACE_REGEX.exec(indexCss)) !== null) {\n const block = faceMatch[1];\n\n const familyMatch = block.match(/font-family:\\s*'([^']+)'/);\n const weightMatch = block.match(/font-weight:\\s*([\\d\\s]+)/);\n const styleMatch = block.match(/font-style:\\s*(\\w+)/);\n const srcMatch = block.match(/src:\\s*url\\([^)]*?\\/fonts\\/([^)]+)\\)\\s*format\\('(\\w+)'\\)/);\n\n if (!familyMatch || !weightMatch || !styleMatch || !srcMatch) continue;\n\n const family = familyMatch[1];\n const weightRaw = weightMatch[1].trim();\n const style = styleMatch[1];\n const fileName = srcMatch[1];\n const format = srcMatch[2] === 'truetype' ? 'ttf' : srcMatch[2] === 'opentype' ? 'otf' : 'woff2';\n\n const weights = weightRaw.split(/\\s+/).map(Number);\n const weightMin = Math.min(...weights);\n const weightMax = Math.max(...weights);\n\n parsedFonts.push({\n family: family,\n weightMin: weightMin,\n weightMax: weightMax,\n style: style,\n format: format as FontFormat,\n filePath: `/fonts/${fileName}`,\n fileName: fileName,\n cssVariable: familyToVariable.get(family.toLowerCase()) ?? null,\n });\n}\n\nparsedFonts.sort((a, b) => a.family.localeCompare(b.family));\n\nexport const FONT_FACES: FontFaceData[] = parsedFonts;\n","export const IMAGES = {\n digoLogo: 'https://cdn.digo-labs.com/images/digo-logo.png',\n digoLogoSvg: 'https://cdn.digo-labs.com/images/digo-logo.svg',\n pcLogoV1Svg: 'https://cdn.digo-labs.com/images/pc-logo-v1.svg',\n pcLogo3d: 'https://cdn.digo-labs.com/images/pc-logo-3d.png',\n userPlaceholder: 'https://cdn.digo-labs.com/images/user-placeholder.png',\n audio3d: 'https://cdn.digo-labs.com/images/audio-3d.jpg',\n blocks3d: 'https://cdn.digo-labs.com/images/blocks-3d.jpg',\n components3d: 'https://cdn.digo-labs.com/images/components-3d.jpg',\n effects3d: 'https://cdn.digo-labs.com/images/effects-3d.jpg',\n fonts3d: 'https://cdn.digo-labs.com/images/fonts-3d.jpg',\n icons3d: 'https://cdn.digo-labs.com/images/icons-3d.jpg',\n image3d: 'https://cdn.digo-labs.com/images/image-3d.jpg',\n llms3d: 'https://cdn.digo-labs.com/images/llms-3d.jpg',\n pages3d: 'https://cdn.digo-labs.com/images/pages-3d.jpg',\n text3d: 'https://cdn.digo-labs.com/images/text-3d.jpg',\n video3d: 'https://cdn.digo-labs.com/images/video-3d.jpg',\n\n terminalScreenFrame: 'https://cdn.digo-labs.com/images/terminal-screen-frame.png',\n terminalScreenGlass: 'https://cdn.digo-labs.com/images/terminal-screen-glass.png',\n terminalSideGlass: 'https://cdn.digo-labs.com/images/terminal-side-glass.png',\n};\n","export const MODELS = {\n porsche: 'https://cdn.digo-labs.com/models/porsche.glb',\n};\n","export class LocalStorage {\n public static setValue<T>(key: string, value: T): void {\n localStorage.setItem(key, JSON.stringify(value));\n }\n\n public static loadValue<T>(key: string, defaultValue: T): T {\n const storedValue = localStorage.getItem(key);\n\n if (!storedValue || storedValue === 'undefined') {\n return defaultValue;\n }\n\n try {\n return JSON.parse(storedValue);\n } catch {\n return defaultValue;\n }\n }\n}\n","export class SessionStorage {\n public static setValue<T>(key: string, value: T): void {\n sessionStorage.setItem(key, JSON.stringify(value));\n }\n\n public static loadValue<T>(key: string, defaultValue: T): T {\n const storedValue = sessionStorage.getItem(key);\n\n if (!storedValue || storedValue === 'undefined') {\n return defaultValue;\n }\n\n try {\n return JSON.parse(storedValue);\n } catch {\n return defaultValue;\n }\n }\n}\n","export const ROUTES = {\n bedrockText: 'bedrock-text',\n dmxSend: 'dmx-send',\n storagePresignUpload: 'storage-presign-upload',\n storagePresignDownload: 'storage-presign-download',\n storageList: 'storage-list',\n storageDelete: 'storage-delete',\n databaseGetAll: 'database-get-all',\n databaseGet: 'database-get',\n databaseGetBy: 'database-get-by',\n databaseCreate: 'database-create',\n databaseUpdate: 'database-update',\n databaseDelete: 'database-delete',\n refreshSchemas: 'refresh-schemas',\n} as const;\n","import LZString from 'lz-string';\n\nimport {\n base64StringToBlob,\n blobToBase64String,\n} from 'blob-util';\n\nexport class StringHelpers {\n public static hashCode(data: string) {\n return [...data].reduce(\n (hash, c) => (Math.imul(31, hash) + c.charCodeAt(0)) | 0,\n 0,\n );\n }\n\n public static compress(data: string): string {\n return LZString.compress(data);\n }\n\n public static compressToBase64(data: string): string {\n return LZString.compressToBase64(data);\n }\n\n public static compressToUint8Array(data: string): Uint8Array {\n return LZString.compressToUint8Array(data);\n }\n\n public static decompress(data: string): string {\n return LZString.decompress(data);\n }\n\n public static decompressFromBase64(data: string): string {\n return LZString.decompressFromBase64(data);\n }\n\n public static decompressFromUint8Array(data: Uint8Array): string {\n return LZString.decompressFromUint8Array(data);\n }\n\n public static blobToBase64(blob: Blob): Promise<string> {\n return blobToBase64String(blob);\n }\n\n public static base64ToBlob(base64: string): Blob {\n return base64StringToBlob(base64);\n }\n\n public static getFirstLetter(string: string | undefined): string {\n if (!string) return 'X';\n return string.charAt(0).toUpperCase();\n }\n}\n","export const STRINGS = {\n digo: 'Digo',\n refresh: 'Refresh',\n code: 'Code',\n score: 'Score',\n preview: 'Preview',\n weights: 'Weights',\n examples: 'Examples',\n typography: 'Typography',\n sizes: 'Sizes',\n icons: 'Icons',\n neutral: 'Neutral',\n info: 'Info',\n selected: 'Selected',\n noneSelected: 'None selected',\n highlights: 'Highlights',\n shadows: 'Shadows',\n color: 'Color',\n untitled: 'Untitled',\n columns: 'Columns',\n save: 'Save',\n accent: 'Accent',\n applying: 'Applying',\n viewing: 'Viewing',\n clearMessages: 'Clear messages',\n clearNextMessages: 'Clear next messages',\n apply: 'Apply',\n import: 'Import',\n search: 'Search...',\n where: 'Where',\n noTimeArray: 'No time array',\n success: 'Success',\n error: 'Error',\n warning: 'Warning',\n attach: 'Attach',\n attachImage: 'Attach Image',\n actions: 'Actions',\n addNewColumn: 'Add new column',\n addNewRow: 'Add new row',\n addFilter: 'Add filter',\n addSort: 'Add sort',\n applySorting: 'Apply sorting',\n applyFilters: 'Apply filters',\n filter: 'Filter',\n sort: 'Sort',\n resetFilters: 'Reset filters',\n resetSorting: 'Reset sorting',\n description: 'Description',\n name: 'Name',\n loremIpsumSmall: 'Lorem ipsum dolor sit amet.',\n loremIpsumMedium: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam nec purus ac libero vehicula ultricies.',\n loremIpsumLong: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam nec purus ac libero vehicula ultricies. Nulla facilisi. Sed nec nisl in turpis tincidunt tincidunt. Nulla facilisi. Sed nec nisl in turpis tincidunt tincidunt.',\n selectAgent: 'Select Agent',\n selectModel: 'Select Model',\n sendPrompt: 'Send Prompt',\n view: 'View',\n toggleColumns: 'Toggle columns',\n toggleOpen: 'Toggle open',\n reset: 'Reset',\n noResultsFound: 'No results found.',\n clearFilters: 'Clear filters',\n rowsPerPage: 'Rows per page',\n id: 'Id',\n noSortsTitle: 'No sorts apply to this view',\n noSortsDescription: 'Add a column below to sort the view',\n noFiltersTitle: 'No filters apply to this view',\n noFiltersDescription: 'Add a column below to filter the view',\n defaultValue: 'Default value',\n default: 'Default',\n stepDuration: 'Step duration (ms)',\n min: 'Min',\n max: 'Max',\n icon: 'Icon',\n step: 'Step',\n decimals: 'Decimals',\n units: 'Units',\n play: 'Play',\n pause: 'Pause',\n next: 'Next',\n previous: 'Previous',\n loop: 'Loop',\n rewind: 'Rewind',\n forward: 'Forward',\n start: 'Start',\n emptyCode: 'Select a file to view its content',\n generate: 'Generate',\n savePreset: 'Save Preset',\n image: 'Image',\n};\n","import { z } from 'zod';\n\nexport const filePayloadSchema = z.object({\n mediaType: z.string(),\n base64: z.string(),\n});\n\nexport type FilePayload = z.infer<typeof filePayloadSchema>;\n\nexport const imagePayloadSchema = z.object({\n mediaType: z.string(),\n base64: z.string(),\n});\n\nexport type ImagePayload = z.infer<typeof imagePayloadSchema>;\n\nexport const sizeFormattedSchema = z\n .string()\n .regex(/^\\d+x\\d+$/)\n .transform(s => s as `${number}x${number}`);\n\nexport type SizeFormatted = z.infer<typeof sizeFormattedSchema>;\n\nexport const aspectRatioSchema = z\n .string()\n .regex(/^\\d+:\\d+$/)\n .transform(s => s as `${number}:${number}`);\n\nexport type AspectRatio = z.infer<typeof aspectRatioSchema>;\n","import { z } from 'zod';\n\nimport { aspectRatioSchema } from './primitives';\n\nexport interface ModelMetadata {\n id: string;\n provider: string;\n name: string;\n version: string;\n description: string;\n}\n\nexport const imageGenerateBodySchema = z.object({\n prompt: z.string().min(1),\n aspectRatio: aspectRatioSchema.optional(),\n seed: z.number().int().optional(),\n});\n\nexport type ImageGenerateBody = z.infer<typeof imageGenerateBodySchema>;\n\nexport const imageEditBodySchema = z.object({\n prompt: z.string().min(1),\n image: z.string().url(),\n strength: z.number().min(0).max(1).optional(),\n});\n\nexport type ImageEditBody = z.infer<typeof imageEditBodySchema>;\n\nexport const imageUpscaleBodySchema = z.object({\n image: z.string().url(),\n factor: z.number().positive().optional(),\n});\n\nexport type ImageUpscaleBody = z.infer<typeof imageUpscaleBodySchema>;\n\nexport const imageRemoveBackgroundBodySchema = z.object({\n image: z.string().url(),\n});\n\nexport type ImageRemoveBackgroundBody = z.infer<typeof imageRemoveBackgroundBodySchema>;\n\nexport const generatedImageSchema = z.object({\n url: z.string().url(),\n contentType: z.string().optional(),\n width: z.number().optional(),\n height: z.number().optional(),\n seed: z.number().optional(),\n model: z.string().optional(),\n});\n\nexport type GeneratedImage = z.infer<typeof generatedImageSchema>;\n\nexport const videoGenerateBodySchema = z.object({\n prompt: z.string().min(1),\n aspectRatio: aspectRatioSchema.optional(),\n durationSeconds: z.number().positive().optional(),\n});\n\nexport type VideoGenerateBody = z.infer<typeof videoGenerateBodySchema>;\n\nexport const generatedVideoSchema = z.object({\n url: z.string().url(),\n contentType: z.string().optional(),\n durationSeconds: z.number().optional(),\n model: z.string().optional(),\n});\n\nexport type GeneratedVideo = z.infer<typeof generatedVideoSchema>;\n\nexport const audioSpeechBodySchema = z.object({\n text: z.string().min(1),\n voice: z.string().optional(),\n speed: z.number().positive().optional(),\n});\n\nexport type AudioSpeechBody = z.infer<typeof audioSpeechBodySchema>;\n\nexport const audioMusicBodySchema = z.object({\n prompt: z.string().min(1),\n durationSeconds: z.number().positive().optional(),\n});\n\nexport type AudioMusicBody = z.infer<typeof audioMusicBodySchema>;\n\nexport const audioTranscribeBodySchema = z.object({\n audio: z.string().url(),\n language: z.string().optional(),\n});\n\nexport type AudioTranscribeBody = z.infer<typeof audioTranscribeBodySchema>;\n\nexport const generatedAudioSchema = z.object({\n url: z.string().url(),\n contentType: z.string().optional(),\n durationSeconds: z.number().optional(),\n model: z.string().optional(),\n});\n\nexport type GeneratedAudio = z.infer<typeof generatedAudioSchema>;\n\nexport const transcriptionSegmentSchema = z.object({\n text: z.string(),\n startSecond: z.number(),\n endSecond: z.number(),\n});\n\nexport type TranscriptionSegment = z.infer<typeof transcriptionSegmentSchema>;\n\nexport const transcriptionSchema = z.object({\n text: z.string(),\n segments: z.array(transcriptionSegmentSchema).optional(),\n language: z.string().optional(),\n model: z.string().optional(),\n});\n\nexport type Transcription = z.infer<typeof transcriptionSchema>;\n\nconst textContentPartSchema = z.object({\n type: z.literal('text'),\n text: z.string(),\n});\n\nconst imageContentPartSchema = z.object({\n type: z.literal('image'),\n source: z.object({\n base64: z.string(),\n mediaType: z.string(),\n }),\n});\n\nconst messageContentSchema = z.union([\n z.string(),\n z.array(z.union([textContentPartSchema, imageContentPartSchema])),\n]);\n\nexport const textMessageSchema = z.object({\n role: z.enum(['user', 'assistant']),\n content: messageContentSchema,\n});\n\nexport type TextMessage = z.infer<typeof textMessageSchema>;\n\nexport const textBodySchema = z.object({\n model: z.string().optional(),\n messages: z.array(textMessageSchema).min(1),\n systemPrompt: z.string().optional(),\n temperature: z.number().min(0).max(2).optional(),\n maxTokens: z.number().int().positive().optional(),\n stopSequences: z.array(z.string()).optional(),\n providerOptions: z.record(z.string(), z.record(z.string(), z.any())).optional(),\n});\n\nexport type TextBody = z.infer<typeof textBodySchema>;\n\nexport const textGenerateBodySchema = textBodySchema.omit({\n model: true,\n stopSequences: true,\n providerOptions: true,\n});\n\nexport type TextGenerateBody = z.infer<typeof textGenerateBodySchema>;\n\nexport type TextStreamChunk = { text: string; };\n\nexport type TextStreamResult = { text: string; stopReason: string; };\n\nexport interface TextStream extends AsyncIterable<TextStreamChunk> {\n readonly text: string;\n readonly stopReason: string | null;\n collect(): Promise<TextStreamResult>;\n}\n","import { z } from 'zod';\n\nexport const dmxSendBodySchema = z.object({\n channel: z.number().int().min(1).max(512),\n value: z.number().int().min(0).max(255),\n});\n\nexport type DmxSendBody = z.infer<typeof dmxSendBodySchema>;\n\nexport const dmxSendResponseSchema = z.object({\n success: z.boolean(),\n});\n\nexport type DmxSendResponse = z.infer<typeof dmxSendResponseSchema>;\n","import { z } from 'zod';\n\nconst identifier = z.string().min(1);\nconst scalarValue = z.union([z.string(), z.number(), z.boolean(), z.null()]);\nconst recordValue = z.record(z.string(), z.unknown());\n\nexport const databaseGetAllBodySchema = z.object({\n table: identifier,\n limit: z.number().int().positive().max(1000).default(100),\n offset: z.number().int().nonnegative().optional(),\n});\n\nexport type DatabaseGetAllBody = z.infer<typeof databaseGetAllBodySchema>;\n\nexport const databaseGetAllResponseSchema = z.object({\n rows: z.array(recordValue),\n});\n\nexport type DatabaseGetAllResponse = z.infer<typeof databaseGetAllResponseSchema>;\n\nexport const databaseGetBodySchema = z.object({\n table: identifier,\n pk: identifier,\n value: scalarValue,\n});\n\nexport type DatabaseGetBody = z.infer<typeof databaseGetBodySchema>;\n\nexport const databaseGetResponseSchema = z.object({\n row: recordValue.nullable(),\n});\n\nexport type DatabaseGetResponse = z.infer<typeof databaseGetResponseSchema>;\n\nexport const databaseGetByBodySchema = z.object({\n table: identifier,\n column: identifier,\n value: scalarValue,\n limit: z.number().int().positive().max(1000).default(100),\n offset: z.number().int().nonnegative().optional(),\n});\n\nexport type DatabaseGetByBody = z.infer<typeof databaseGetByBodySchema>;\n\nexport const databaseGetByResponseSchema = z.object({\n rows: z.array(recordValue),\n});\n\nexport type DatabaseGetByResponse = z.infer<typeof databaseGetByResponseSchema>;\n\nexport const databaseCreateBodySchema = z.object({\n table: identifier,\n record: recordValue,\n});\n\nexport type DatabaseCreateBody = z.infer<typeof databaseCreateBodySchema>;\n\nexport const databaseCreateResponseSchema = z.object({\n row: recordValue,\n});\n\nexport type DatabaseCreateResponse = z.infer<typeof databaseCreateResponseSchema>;\n\nexport const databaseUpdateBodySchema = z.object({\n table: identifier,\n pk: identifier,\n value: scalarValue,\n changes: recordValue,\n});\n\nexport type DatabaseUpdateBody = z.infer<typeof databaseUpdateBodySchema>;\n\nexport const databaseUpdateResponseSchema = z.object({\n success: z.boolean(),\n});\n\nexport type DatabaseUpdateResponse = z.infer<typeof databaseUpdateResponseSchema>;\n\nexport const databaseDeleteBodySchema = z.object({\n table: identifier,\n pk: identifier,\n value: scalarValue,\n});\n\nexport type DatabaseDeleteBody = z.infer<typeof databaseDeleteBodySchema>;\n\nexport const databaseDeleteResponseSchema = z.object({\n success: z.boolean(),\n});\n\nexport type DatabaseDeleteResponse = z.infer<typeof databaseDeleteResponseSchema>;\n","import { z } from 'zod';\n\nexport const presignUploadBodySchema = z.object({\n bucket: z.string().min(1),\n path: z.string().min(1),\n contentType: z.string().min(1),\n expiresIn: z.number().int().positive().max(604800).optional(),\n});\n\nexport type PresignUploadBody = z.infer<typeof presignUploadBodySchema>;\n\nexport const presignUploadResponseSchema = z.object({\n url: z.string().url(),\n expiresAt: z.number(),\n});\n\nexport type PresignUploadResponse = z.infer<typeof presignUploadResponseSchema>;\n\nexport const presignDownloadBodySchema = z.object({\n bucket: z.string().min(1),\n path: z.string().min(1),\n expiresIn: z.number().int().positive().max(604800).optional(),\n});\n\nexport type PresignDownloadBody = z.infer<typeof presignDownloadBodySchema>;\n\nexport const presignDownloadResponseSchema = presignUploadResponseSchema;\n\nexport type PresignDownloadResponse = z.infer<typeof presignDownloadResponseSchema>;\n\nexport const listBodySchema = z.object({\n bucket: z.string().min(1),\n prefix: z.string().optional(),\n limit: z.number().int().positive().max(1000).optional(),\n});\n\nexport type ListBody = z.infer<typeof listBodySchema>;\n\nexport const storageObjectSchema = z.object({\n key: z.string(),\n size: z.number(),\n lastModified: z.string(),\n etag: z.string().optional(),\n});\n\nexport type StorageObject = z.infer<typeof storageObjectSchema>;\n\nexport const listResponseSchema = z.object({\n objects: z.array(storageObjectSchema),\n});\n\nexport type ListResponse = z.infer<typeof listResponseSchema>;\n\nexport const deleteBodySchema = z.object({\n bucket: z.string().min(1),\n paths: z.array(z.string().min(1)).min(1),\n});\n\nexport type DeleteBody = z.infer<typeof deleteBodySchema>;\n\nexport const deleteResponseSchema = z.object({\n success: z.boolean(),\n deleted: z.array(z.string()),\n});\n\nexport type DeleteResponse = z.infer<typeof deleteResponseSchema>;\n","export interface Time {\n hours: number;\n minutes: number;\n seconds: number;\n}\n\nexport type Vector3 = [number, number, number];\n\nexport type Side = 'top' | 'right' | 'bottom' | 'left';\n\nexport enum BedrockStyle {\n ANIMATED_FILM = '3D_ANIMATED_FAMILY_FILM',\n FLAT_VECTOR_ILLUSTRATION = 'FLAT_VECTOR_ILLUSTRATION',\n GRAPHIC_NOVEL_ILLUSTRATION = 'GRAPHIC_NOVEL_ILLUSTRATION',\n MAXIMALISM = 'MAXIMALISM',\n MIDCENTURY_RETRO = 'MIDCENTURY_RETRO',\n PHOTOREALISM = 'PHOTOREALISM',\n SOFT_DIGITAL_PAINTING = 'SOFT_DIGITAL_PAINTING',\n}\n\nexport interface Size {\n width: number;\n height: number;\n}\n\nexport interface GradientStop {\n color: string;\n percent: number;\n}\n\nexport interface ModelPayload {\n name: string;\n description: string;\n icon: string;\n}\n\nexport interface CommonMetadata {\n name: string;\n description?: string;\n image?: File;\n tags?: string[];\n icon?: string;\n}\n\ntype SuccessResult<T> = readonly[T, null];\n\ntype ErrorResult<E = Error> = readonly[null, E];\n\nexport type Result<T, E = Error> = SuccessResult<T> | ErrorResult<E>;\n\nexport interface CodeLanguageMetadata {\n icon: string;\n name: string;\n}\n\nexport type Orientation = 'horizontal' | 'vertical';\n\nexport type Alignment = 'left' | 'center' | 'right';\n\nexport type Breakpoint = 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n\nexport type ClassGroups = Record<string, (string | Record<string, string[]>)[]>;\n","export type WebsocketChannelsTypes = Record<string, unknown>;\n\nexport type WebsocketListener<T = unknown> = (data: T) => void;\n\nexport enum WebsocketClientEvent {\n IDENTIFY = 'IDENTIFY',\n SUBSCRIBE = 'SUBSCRIBE',\n UNSUBSCRIBE = 'UNSUBSCRIBE',\n MESSAGE = 'MESSAGE',\n STATE = 'STATE',\n}\n\nexport type WebsocketClientMessage =\n | { type: WebsocketClientEvent.IDENTIFY; id: string; app: string; }\n | { type: WebsocketClientEvent.SUBSCRIBE; channels: string[]; }\n | { type: WebsocketClientEvent.UNSUBSCRIBE; channels: string[]; }\n | { type: WebsocketClientEvent.MESSAGE; channel: string; data?: unknown; }\n | { type: WebsocketClientEvent.STATE; channel: string; data?: unknown; };\n\nexport enum WebSocketHubEvent {\n MESSAGE = 'MESSAGE',\n STATE = 'STATE',\n}\n\nexport interface WebsocketHubMessage {\n type: WebSocketHubEvent;\n channel: string;\n data?: unknown;\n}\n\nexport interface WebsocketsHubConfig {\n port: number;\n}\n\nexport interface WebsocketConnectionConfig {\n app?: string;\n url?: string;\n id?: string;\n reconnect?: boolean;\n reconnectInterval?: number;\n maxReconnectInterval?: number;\n}\n\nexport const WEBSOCKET_HUB_CHANNEL = '_hub';\n\nexport interface WebsocketHubStatusClient {\n id: string;\n app: string;\n channels: string[];\n}\n\nexport enum WebsocketLogEvent {\n CONNECT = 'CONNECT',\n DISCONNECT = 'DISCONNECT',\n SUBSCRIBE = 'SUBSCRIBE',\n UNSUBSCRIBE = 'UNSUBSCRIBE',\n MESSAGE = 'MESSAGE',\n STATE = 'STATE',\n}\n\nexport interface WebsocketHubLogEntry {\n timestamp: number;\n sender: string;\n app: string;\n type: WebsocketLogEvent;\n channel: string;\n data?: unknown;\n}\n\nexport interface WebsocketHubStatus {\n clients: WebsocketHubStatusClient[];\n state: Record<string, unknown>;\n logs: WebsocketHubLogEntry[];\n}\n","export const VIDEOS = {\n pcLogo3D: 'https://cdn.digo-labs.com/videos/pc-logo-3d.mp4',\n};\n","import { TYPO_CLASS_GROUPS } from './constants';\nimport { Result } from './types/common-types';\n\nimport clsx, { ClassValue } from 'clsx';\nimport { extendTailwindMerge } from 'tailwind-merge';\n\nexport async function tryCatch<T, E = Error>(promise: Promise<T>): Promise<Result<T, E>> {\n try {\n const data = await promise;\n return [data, null] as const;\n } catch (error) {\n return [null, error as E] as const;\n }\n}\n\nconst twMerge = extendTailwindMerge({ extend: { classGroups: TYPO_CLASS_GROUPS } });\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","export const CITIES: string[] = [\n 'New York',\n 'Tokyo',\n 'Paris',\n 'London',\n 'Barcelona',\n 'Berlin',\n 'Amsterdam',\n 'Sydney',\n 'São Paulo',\n 'Mumbai',\n 'Dubai',\n 'Singapore',\n 'Hong Kong',\n 'Rome',\n 'Vienna',\n 'Prague',\n 'Lisbon',\n 'Stockholm',\n 'Seoul',\n 'Istanbul',\n 'Buenos Aires',\n 'Cairo',\n 'Mexico City',\n 'Oslo',\n 'Zürich',\n];\n\nexport const EXCERPTS: string[] = [\n 'The quick brown fox jumps over the lazy dog.',\n 'Pack my box with five dozen liquor jugs.',\n 'How vexingly quick daft zebras jump.',\n 'Sphinx of black quartz, judge my vow.',\n 'The five boxing wizards jump quickly.',\n 'Bright vixens jump dozing fowl quack.',\n 'Jackdaws love my big sphinx of quartz.',\n 'Sixty zippers were quickly picked from the woven jute bag.',\n 'We promptly judged antique ivory buckles for the next prize.',\n 'A mad boxer shot a quick, gloved jab to the jaw of his dizzy opponent.',\n];\n","export const AUTH_PROJECTS = {\n monorepo: {\n trustedOrigins: [\n 'http://localhost:*',\n 'http://127.0.0.1:*',\n 'https://*.digo-labs.com',\n ],\n },\n} as const;\n\nexport type AuthProject = keyof typeof AUTH_PROJECTS;\n\nexport type AuthTier = 'public' | 'user' | 'org' | 'admin';\n\nexport type SignInProvider = 'google';\n\nexport interface AccessTiers {\n read: AuthTier;\n write: AuthTier;\n}\n\nexport type AccessOperation = keyof AccessTiers;\n\nexport interface TableAccessRule extends AccessTiers {\n owner?: string;\n}\n\nexport const ORG_EMAIL_DOMAIN = 'productionclub.net';\n\nconst ADMIN_ROLE = 'admin';\n\nconst TIER_RANK: Record<AuthTier, number> = {\n public: 0,\n user: 1,\n org: 2,\n admin: 3,\n};\n\nexport interface AuthTierUser {\n email: string;\n emailVerified: boolean;\n role?: string | null;\n}\n\nexport class AuthTierHelpers {\n public static deriveTier(user: AuthTierUser | null | undefined): AuthTier {\n if (!user) return 'public';\n if (this.hasAdminRole(user.role)) return 'admin';\n if (this.isOrgUser(user)) return 'org';\n\n return 'user';\n }\n\n public static meetsTier(tier: AuthTier, required: AuthTier): boolean {\n if (!this.isTier(tier) || !this.isTier(required)) return false;\n\n return TIER_RANK[tier] >= TIER_RANK[required];\n }\n\n public static isTier(value: unknown): value is AuthTier {\n return typeof value === 'string' && Object.hasOwn(TIER_RANK, value);\n }\n\n private static hasAdminRole(role: string | null | undefined): boolean {\n if (!role) return false;\n\n return role.split(',').includes(ADMIN_ROLE);\n }\n\n private static isOrgUser(user: AuthTierUser): boolean {\n if (!user.emailVerified) return false;\n\n return user.email.toLowerCase().endsWith(`@${ORG_EMAIL_DOMAIN}`);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/app-config-helpers.ts","../src/common-helpers.ts","../src/constants.ts","../src/icons.ts","../src/fonts.ts","../src/glyphs.ts","../src/images.ts","../src/models.ts","../src/local-storage.ts","../src/session-storage.ts","../src/routes.ts","../src/string-helpers.ts","../src/strings.ts","../src/schemas/primitives.ts","../src/schemas/ai.ts","../src/schemas/dmx.ts","../src/schemas/database.ts","../src/schemas/storage.ts","../src/types/common-types.ts","../src/types/websocket-types.ts","../src/videos.ts","../src/utils.ts","../src/samples.ts","../src/auth.ts"],"sourcesContent":["export class AppConfigHelpers {\n private static appName: string | undefined;\n\n public static setCurrentAppName(name: string): void {\n if (this.appName !== undefined && this.appName !== name) {\n throw new Error(\n `setCurrentAppName: already set to '${this.appName}', cannot override with '${name}'. ` +\n 'This usually means defineApp() was called twice with different names.',\n );\n }\n this.appName = name;\n }\n\n public static getCurrentAppName(): string {\n if (this.appName === undefined) {\n throw new Error(\n 'getCurrentAppName: no app name registered. ' +\n 'Call defineApp() before constructing services, or pass an explicit value to the service constructor.',\n );\n }\n return this.appName;\n }\n\n public static resetAppName(): void {\n this.appName = undefined;\n }\n\n public static sanitizeAppName(name: string): string {\n const sanitized = name.toLowerCase().replace(/-/g, '_');\n\n if (!/^[a-z][a-z0-9_]*$/.test(sanitized)) {\n throw new Error(`sanitizeAppName: invalid app name '${name}' (sanitized: '${sanitized}')`);\n }\n\n return sanitized;\n }\n}\n","import { FilePayload, ImagePayload, Result, Time, tryCatch } from './';\n\nimport { removeBackground } from '@imgly/background-removal';\n\nimport { formatDistanceToNow, parseISO } from 'date-fns';\nimport { decode, encode } from 'base64-arraybuffer';\n\nexport class CommonHelpers {\n public static isImagePayload(file: FilePayload): boolean {\n return file.mediaType.startsWith('image/');\n }\n\n public static getFileExtensionLabel(file: FilePayload): string {\n const subtype = file.mediaType.split('/')[1] ?? 'file';\n const simplified = subtype.split('.').pop() ?? subtype;\n\n return simplified.slice(0, 4).toUpperCase();\n }\n\n public static getFileSizeLabel(file: FilePayload): string {\n const padding = file.base64.endsWith('==') ? 2 : file.base64.endsWith('=') ? 1 : 0;\n const bytes = Math.max(0, (file.base64.length * 3) / 4 - padding);\n\n if (bytes < 1024) return `${Math.round(bytes)} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n }\n\n public static copyToClipboard(text: string) {\n navigator.clipboard.writeText(text)\n .then(() => {\n\n })\n .catch(() => {\n console.error('Failed to copy');\n });\n }\n\n public static async removeBackground(image: ImagePayload): Promise<ImagePayload> {\n const arrayBuffer = decode(image.base64);\n const blob = new Blob([arrayBuffer], { type: image.mediaType });\n\n const resultBlob = await removeBackground(blob);\n\n const resultArrayBuffer = await resultBlob.arrayBuffer();\n const base64 = encode(resultArrayBuffer);\n\n return {\n base64: base64,\n mediaType: 'image/png',\n };\n }\n\n public static getTimeFormatted(seconds: number): Time {\n const time: Time = {\n hours: Math.floor(seconds / 3600),\n minutes: Math.floor((seconds % 3600) / 60),\n seconds: seconds % 60,\n };\n return time;\n }\n\n public static async getTextFromClipboard(): Promise<string> {\n return await navigator.clipboard.readText();\n }\n\n public static decodeBase64(base64: string): ArrayBuffer {\n const arraybuffer = decode(base64);\n return arraybuffer;\n }\n\n public static getRandomInteger(min: number, max: number): number {\n const randomInteger = Math.floor(Math.random() * (max - min + 1)) + min;\n return randomInteger;\n }\n\n public static encodeArrayBufferToBase64(arrayBuffer: ArrayBuffer): string {\n const base64 = encode(arrayBuffer);\n return base64;\n }\n\n public static hexToRgb(hex: string) {\n const m = hex.match(/^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i);\n if (!m) return { r: 0, g: 0, b: 0 };\n return {\n r: parseInt(m[1], 16),\n g: parseInt(m[2], 16),\n b: parseInt(m[3], 16),\n };\n }\n\n public static rgbArrayToHex(rgb: [number, number, number]): string {\n const hex = rgb.map((value) => {\n const hexValue = value.toString(16);\n return hexValue.length === 1 ? '0' + hexValue : hexValue;\n }).join('');\n\n return `#${hex}`;\n }\n\n public static hexToRgbArray(hex: string): [number, number, number] {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n\n if (!result) return [0, 0, 0];\n\n return [\n parseInt(result[1], 16) / 255,\n parseInt(result[2], 16) / 255,\n parseInt(result[3], 16) / 255,\n ];\n }\n\n public static getCssVariable(variable: string) {\n return getComputedStyle(document.documentElement).getPropertyValue(variable);\n }\n\n public static setCssVariable(name: string, element: HTMLElement) {\n document.documentElement.style.setProperty(name, `${element.offsetHeight}px`);\n }\n\n public static lerp(start: number, end: number, t: number): number {\n return start + (end - start) * t; ;\n }\n\n public static lerpArray(start: number[], end: number[], t: number): number[] {\n return start.map((startItem, index) => startItem + (end[index] - startItem) * t);\n }\n\n public static clamp(value: number, min: number, max: number) {\n return Math.min(Math.max(value, min), max);\n }\n\n public static async downloadURI(uri: string, name?: string) {\n const response = await fetch(uri);\n const blob = await response.blob();\n const url = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = url;\n link.download = name || 'download';\n link.click();\n URL.revokeObjectURL(url);\n }\n\n public static async getFileFromUrl(url: string, fileName?: string): Promise<File> {\n const response = await fetch(url);\n const blob = await response.blob();\n const imageFile = new File([blob], fileName ? fileName : 'untitled', { type: blob.type });\n\n return imageFile;\n }\n\n public static generateUUID(): string {\n if (crypto.randomUUID) {\n return crypto.randomUUID();\n }\n\n const fallback = `${Date.now()}-${Math.random().toString(36).substring(2, 15)}${Math.random().toString(36).substring(2, 15)}`;\n\n return fallback;\n }\n\n public static async getImagePayloadFromUrl(url: string, fileName?: string): Promise<Result<ImagePayload>> {\n const imageFile = await this.getFileFromUrl(url, fileName);\n\n return this.getImagePayloadFromFile(imageFile);\n }\n\n public static async getImagePayloadFromFile(file: File): Promise<Result<ImagePayload>> {\n const [arrayBuffer, error] = await tryCatch(file.arrayBuffer());\n\n if (error) return [null, error];\n\n const base64 = CommonHelpers.encodeArrayBufferToBase64(arrayBuffer);\n const mediaType = file.type;\n\n const imageData: ImagePayload = { base64: base64, mediaType: mediaType, name: file.name };\n return [imageData, null];\n }\n\n public static getFileFromImagePayload(ImagePayload: ImagePayload): File {\n const arrayBuffer = decode(ImagePayload.base64);\n const blob = new Blob([arrayBuffer], { type: ImagePayload.mediaType });\n const extension = ImagePayload.mediaType.split('/')[1] || 'png';\n const file = new File([blob], `created-file.${extension}`, { type: ImagePayload.mediaType });\n\n return file;\n }\n\n public static setTabName(name: string) {\n document.title = `${name}`;\n }\n\n public static openFileSelector(accepts: string, callback: (file: File) => void): void {\n const input = document.createElement('input');\n input.type = 'file';\n\n input.accept = accepts;\n\n input.onchange = (event: Event) => {\n const target = event.target as HTMLInputElement;\n if (target.files && target.files.length > 0) {\n const file = target.files[0];\n callback(file);\n }\n };\n\n input.click();\n }\n\n public static formatNumberTwoDigits(number: number): string {\n const formatedNumber = number.toFixed().padStart(2, '0');\n return formatedNumber;\n }\n\n public getFormatedTime(miliseconds: number, decimals: number = 2): string {\n const time = (miliseconds / 1000).toFixed(decimals);\n return time;\n }\n\n public static async preloadImage(url: string): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n const image = new Image();\n image.onload = () => resolve();\n image.onerror = () => reject(new Error(`Failed to load: ${url}`));\n image.src = url;\n });\n }\n\n public static async preloadImages(urls: string[]): Promise<void> {\n const promises = urls.map(url => CommonHelpers.preloadImage(url));\n await Promise.all(promises);\n }\n\n public static getUniqueLetters(word: string): string[] {\n const uniqueLetters = [...new Set(word.split(''))];\n\n return uniqueLetters;\n }\n\n public static async compressImage(base64: string, mediaType: string, maxWidth: number = 800, quality: number = 0.7): Promise<ImagePayload> {\n return new Promise((resolve) => {\n const img = new Image();\n img.onload = () => {\n const canvas = document.createElement('canvas');\n const ratio = Math.min(maxWidth / img.width, maxWidth / img.height, 1);\n canvas.width = img.width * ratio;\n canvas.height = img.height * ratio;\n\n const ctx = canvas.getContext('2d')!;\n ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\n\n const compressedBase64 = canvas.toDataURL('image/jpeg', quality).split(',')[1];\n\n resolve({\n base64: compressedBase64,\n mediaType: 'image/jpeg',\n });\n };\n img.src = `data:${mediaType};base64,${base64}`;\n });\n }\n\n public static async downloadCsvFromUrl(url: string) {\n const response = await fetch(url);\n\n if (!response.ok) throw new Error(`Failed to download CSV file: ${response.statusText}`);\n\n const csvData = await response.text();\n\n return csvData;\n }\n\n public static getLastUpdated(timeStamptz: string): string {\n const date = parseISO(timeStamptz);\n const formattedDate = formatDistanceToNow(date, { addSuffix: true });\n\n return formattedDate;\n }\n\n public static getUniqueIdInList(baseId: string, ids: string[]): string {\n const match = baseId.match(/^(.*?)(-\\d+)?$/);\n let base = baseId;\n let suffix = 1;\n\n if (match) {\n base = match[1];\n if (match[2]) {\n suffix = parseInt(match[2].slice(1)) + 1;\n }\n }\n\n const baseLower = base.toLowerCase();\n let newId = `${baseLower}-${suffix}`;\n\n while (ids.some(id => id.toLowerCase() === newId)) {\n suffix++;\n newId = `${baseLower}-${suffix}`;\n }\n\n return newId.toLowerCase();\n }\n\n public static scrollToBottom(container: HTMLDivElement | null) {\n if (!container) return;\n\n container.scrollTo({\n top: container.scrollHeight,\n behavior: 'smooth',\n });\n }\n}\n","import { Breakpoint, ClassGroups, CodeLanguageMetadata, ModelPayload } from './types/common-types';\n\nexport const BACKEND_URL = 'https://api.digo-labs.com';\n\nexport const DIGO_HEADERS = 'X-Digo-App';\n\nexport const DIGO_ADMIN_SECRET = 'X-Admin-Secret';\n\nexport const DIGO_STORAGE_BUCKET_SUFFIX = '-digo-labs-storage';\n\nexport const DIGO_COLORS = ['#58C2E3', '#79F2A9', '#985EFF', '#BDF279'];\n\nexport const WS_URL = 'wss://ws.digo-labs.com';\n\nexport const REPLICATE_PROXY = {\n url: `${BACKEND_URL}/api/proxy/replicate`,\n targetHeader: 'x-replicate-target-url',\n hosts: /(\\.|^)replicate\\.com$/,\n};\n\nexport const AWS_DEFAULT_REGION = 'us-east-1';\n\nexport const BREAKPOINTS: Record<Breakpoint, number> = {\n 'sm': 640,\n 'md': 768,\n 'lg': 1024,\n 'xl': 1280,\n '2xl': 1536,\n};\n\nexport const TYPO_CLASS_GROUPS: ClassGroups = {\n 'font-size': [{ typo: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18'] }],\n 'font-weight': [{ 'typo-weight': ['100', '200', '300', '400', '500', '600', '700', '800', '900'] }],\n 'typo-family': ['typo-header', 'typo-label', 'typo-body', 'typo-code'],\n};\n\nexport const AI_MODELS: ModelPayload[] = [\n {\n name: 'Claude 3.7 Sonnet',\n description: 'Anthropic\\'s advanced model',\n icon: 'icon-[simple-icons--anthropic]',\n },\n {\n name: 'Gemini 2.5 Pro',\n description: 'Google\\'s latest model',\n icon: 'icon-[simple-icons--googlegemini]',\n },\n {\n name: 'GPT-4.1',\n description: 'OpenAi\\'s advanced model',\n icon: 'icon-[simple-icons--openai]',\n },\n];\n\nexport const LANGUAGE_MAP: Record<string, CodeLanguageMetadata> = {\n typescript: { icon: 'typescript', name: 'TypeScript' },\n javascript: { icon: 'javascript', name: 'JavaScript' },\n tsx: { icon: 'typescript', name: 'TSX' },\n jsx: { icon: 'javascript', name: 'JSX' },\n python: { icon: 'python', name: 'Python' },\n rust: { icon: 'code', name: 'Rust' },\n go: { icon: 'code', name: 'Go' },\n sql: { icon: 'code', name: 'SQL' },\n bash: { icon: 'terminal', name: 'Bash' },\n sh: { icon: 'terminal', name: 'Shell' },\n shell: { icon: 'terminal', name: 'Shell' },\n json: { icon: 'code', name: 'JSON' },\n css: { icon: 'code', name: 'CSS' },\n html: { icon: 'code', name: 'HTML' },\n markdown: { icon: 'code', name: 'Markdown' },\n yaml: { icon: 'code', name: 'YAML' },\n xml: { icon: 'code', name: 'XML' },\n text: { icon: 'code', name: 'Text' },\n};\n","enum IconCategory {\n Navigation = 'Navigation',\n Actions = 'Actions',\n Status = 'Status',\n Media = 'Media',\n Files = 'Files',\n UI = 'UI',\n Brands = 'Brands',\n Programming = 'Programming',\n Tools = 'Tools',\n Data = 'Data',\n Communication = 'Communication',\n Design = 'Design',\n AI = 'AI',\n Numbers = 'Numbers',\n Misc = 'Misc',\n}\n\ninterface IconProperties {\n icon: string;\n category: IconCategory;\n}\n\ninterface IconEntry extends IconProperties {\n id: string;\n}\n\nexport type CuratedIcons = keyof typeof CURATED_ICONS;\n\nconst CURATED_ICONS = {\n arrowUp: { category: IconCategory.Navigation, icon: 'icon-[lucide--arrow-up]' },\n arrowDown: { category: IconCategory.Navigation, icon: 'icon-[lucide--arrow-down]' },\n arrowLeft: { category: IconCategory.Navigation, icon: 'icon-[lucide--arrow-left]' },\n arrowRight: { category: IconCategory.Navigation, icon: 'icon-[lucide--arrow-right]' },\n arrowUpLeft: { category: IconCategory.Navigation, icon: 'icon-[lucide--arrow-up-left]' },\n arrowUpRight: { category: IconCategory.Navigation, icon: 'icon-[lucide--arrow-up-right]' },\n arrowDownLeft: { category: IconCategory.Navigation, icon: 'icon-[lucide--arrow-down-left]' },\n arrowDownRight: { category: IconCategory.Navigation, icon: 'icon-[lucide--arrow-down-right]' },\n arrowLeftRight: { category: IconCategory.Navigation, icon: 'icon-[lucide--arrow-left-right]' },\n arrowUpDown: { category: IconCategory.Navigation, icon: 'icon-[lucide--arrow-up-down]' },\n circleArrowUp: { category: IconCategory.Navigation, icon: 'icon-[lucide--circle-arrow-up]' },\n circleArrowDown: { category: IconCategory.Navigation, icon: 'icon-[lucide--circle-arrow-down]' },\n circleArrowLeft: { category: IconCategory.Navigation, icon: 'icon-[lucide--circle-arrow-left]' },\n circleArrowRight: { category: IconCategory.Navigation, icon: 'icon-[lucide--circle-arrow-right]' },\n chevronUp: { category: IconCategory.Navigation, icon: 'icon-[lucide--chevron-up]' },\n chevronDown: { category: IconCategory.Navigation, icon: 'icon-[lucide--chevron-down]' },\n chevronLeft: { category: IconCategory.Navigation, icon: 'icon-[lucide--chevron-left]' },\n chevronRight: { category: IconCategory.Navigation, icon: 'icon-[lucide--chevron-right]' },\n chevronsUp: { category: IconCategory.Navigation, icon: 'icon-[lucide--chevrons-up]' },\n chevronsDown: { category: IconCategory.Navigation, icon: 'icon-[lucide--chevrons-down]' },\n chevronsLeft: { category: IconCategory.Navigation, icon: 'icon-[lucide--chevrons-left]' },\n chevronsRight: { category: IconCategory.Navigation, icon: 'icon-[lucide--chevrons-right]' },\n chevronsUpDown: { category: IconCategory.Navigation, icon: 'icon-[lucide--chevrons-up-down]' },\n cornerDownLeft: { category: IconCategory.Navigation, icon: 'icon-[lucide--corner-down-left]' },\n cornerDownRight: { category: IconCategory.Navigation, icon: 'icon-[lucide--corner-down-right]' },\n cornerLeftDown: { category: IconCategory.Navigation, icon: 'icon-[lucide--corner-left-down]' },\n cornerLeftUp: { category: IconCategory.Navigation, icon: 'icon-[lucide--corner-left-up]' },\n cornerRightDown: { category: IconCategory.Navigation, icon: 'icon-[lucide--corner-right-down]' },\n cornerRightUp: { category: IconCategory.Navigation, icon: 'icon-[lucide--corner-right-up]' },\n cornerUpLeft: { category: IconCategory.Navigation, icon: 'icon-[lucide--corner-up-left]' },\n cornerUpRight: { category: IconCategory.Navigation, icon: 'icon-[lucide--corner-up-right]' },\n home: { category: IconCategory.Navigation, icon: 'icon-[lucide--house]' },\n compass: { category: IconCategory.Navigation, icon: 'icon-[lucide--compass]' },\n menu: { category: IconCategory.Navigation, icon: 'icon-[lucide--menu]' },\n anchor: { category: IconCategory.Navigation, icon: 'icon-[lucide--anchor]' },\n route: { category: IconCategory.Navigation, icon: 'icon-[lucide--route]' },\n router: { category: IconCategory.Navigation, icon: 'icon-[lucide--router]' },\n externalLink: { category: IconCategory.Navigation, icon: 'icon-[lucide--external-link]' },\n move: { category: IconCategory.Navigation, icon: 'icon-[lucide--move]' },\n expand: { category: IconCategory.Navigation, icon: 'icon-[material-symbols--expand-more-rounded]' },\n collapse: { category: IconCategory.Navigation, icon: 'icon-[material-symbols--expand-less-rounded]' },\n firstPage: { category: IconCategory.Navigation, icon: 'icon-[material-symbols--first-page-rounded]' },\n lastPage: { category: IconCategory.Navigation, icon: 'icon-[material-symbols--last-page-rounded]' },\n openInNew: { category: IconCategory.Navigation, icon: 'icon-[material-symbols--open-in-new-rounded]' },\n select: { category: IconCategory.Navigation, icon: 'icon-[mi--select]' },\n signIn: { category: IconCategory.Navigation, icon: 'icon-[lucide--log-in]' },\n login: { category: IconCategory.Navigation, icon: 'icon-[lucide--log-in]' },\n logout: { category: IconCategory.Navigation, icon: 'icon-[lucide--log-out]' },\n squareMenu: { category: IconCategory.Navigation, icon: 'icon-[lucide--square-menu]' },\n add: { category: IconCategory.Actions, icon: 'icon-[lucide--plus]' },\n remove: { category: IconCategory.Actions, icon: 'icon-[lucide--minus]' },\n close: { category: IconCategory.Actions, icon: 'icon-[lucide--x]' },\n check: { category: IconCategory.Actions, icon: 'icon-[lucide--check]' },\n checkCheck: { category: IconCategory.Actions, icon: 'icon-[lucide--check-check]' },\n checkIndeterminate: { category: IconCategory.Actions, icon: 'icon-[material-symbols--check-indeterminate-small-rounded]' },\n search: { category: IconCategory.Actions, icon: 'icon-[lucide--search]' },\n zoomIn: { category: IconCategory.Actions, icon: 'icon-[lucide--zoom-in]' },\n zoomOut: { category: IconCategory.Actions, icon: 'icon-[lucide--zoom-out]' },\n edit: { category: IconCategory.Actions, icon: 'icon-[lucide--pencil]' },\n pencilLine: { category: IconCategory.Actions, icon: 'icon-[lucide--pencil-line]' },\n delete: { category: IconCategory.Actions, icon: 'icon-[lucide--trash]' },\n trash: { category: IconCategory.Actions, icon: 'icon-[lucide--trash-2]' },\n copy: { category: IconCategory.Actions, icon: 'icon-[lucide--copy]' },\n paste: { category: IconCategory.Actions, icon: 'icon-[lucide--clipboard-paste]' },\n cut: { category: IconCategory.Actions, icon: 'icon-[lucide--scissors]' },\n save: { category: IconCategory.Actions, icon: 'icon-[lucide--save]' },\n download: { category: IconCategory.Actions, icon: 'icon-[lucide--download]' },\n upload: { category: IconCategory.Actions, icon: 'icon-[lucide--upload]' },\n refresh: { category: IconCategory.Actions, icon: 'icon-[lucide--refresh-cw]' },\n refreshCcw: { category: IconCategory.Actions, icon: 'icon-[lucide--refresh-ccw]' },\n rotateCw: { category: IconCategory.Actions, icon: 'icon-[lucide--rotate-cw]' },\n rotateCcw: { category: IconCategory.Actions, icon: 'icon-[lucide--rotate-ccw]' },\n sync: { category: IconCategory.Actions, icon: 'icon-[material-symbols--sync-rounded]' },\n undo: { category: IconCategory.Actions, icon: 'icon-[lucide--undo-2]' },\n redo: { category: IconCategory.Actions, icon: 'icon-[lucide--redo-2]' },\n send: { category: IconCategory.Actions, icon: 'icon-[lucide--send]' },\n share: { category: IconCategory.Actions, icon: 'icon-[lucide--share]' },\n share2: { category: IconCategory.Actions, icon: 'icon-[lucide--share-2]' },\n attach: { category: IconCategory.Actions, icon: 'icon-[lucide--paperclip]' },\n link: { category: IconCategory.Actions, icon: 'icon-[lucide--link]' },\n link2: { category: IconCategory.Actions, icon: 'icon-[lucide--link-2]' },\n unlink: { category: IconCategory.Actions, icon: 'icon-[lucide--unlink]' },\n filter: { category: IconCategory.Actions, icon: 'icon-[lucide--filter]' },\n listFilter: { category: IconCategory.Actions, icon: 'icon-[lucide--list-filter]' },\n sort: { category: IconCategory.Actions, icon: 'icon-[lucide--arrow-up-down]' },\n sortAsc: { category: IconCategory.Actions, icon: 'icon-[lucide--arrow-up-narrow-wide]' },\n sortDesc: { category: IconCategory.Actions, icon: 'icon-[lucide--arrow-down-wide-narrow]' },\n lock: { category: IconCategory.Actions, icon: 'icon-[lucide--lock]' },\n lockOpen: { category: IconCategory.Actions, icon: 'icon-[lucide--lock-open]' },\n unlock: { category: IconCategory.Actions, icon: 'icon-[lucide--lock-open]' },\n print: { category: IconCategory.Actions, icon: 'icon-[lucide--printer]' },\n backspace: { category: IconCategory.Actions, icon: 'icon-[lucide--delete]' },\n crop: { category: IconCategory.Actions, icon: 'icon-[lucide--crop]' },\n textSearch: { category: IconCategory.Actions, icon: 'icon-[lucide--text-search]' },\n clipboardCopy: { category: IconCategory.Actions, icon: 'icon-[lucide--clipboard-copy]' },\n replace: { category: IconCategory.Actions, icon: 'icon-[lucide--replace]' },\n searchCheck: { category: IconCategory.Actions, icon: 'icon-[lucide--search-check]' },\n success: { category: IconCategory.Status, icon: 'icon-[lucide--circle-check]' },\n checkCircle: { category: IconCategory.Status, icon: 'icon-[lucide--circle-check-big]' },\n info: { category: IconCategory.Status, icon: 'icon-[lucide--info]' },\n warning: { category: IconCategory.Status, icon: 'icon-[lucide--triangle-alert]' },\n error: { category: IconCategory.Status, icon: 'icon-[lucide--circle-x]' },\n help: { category: IconCategory.Status, icon: 'icon-[lucide--circle-help]' },\n spinner: { category: IconCategory.Status, icon: 'icon-[line-md--loading-twotone-loop]' },\n spinnerDots: { category: IconCategory.Status, icon: 'icon-[svg-spinners--3-dots-move]' },\n loading: { category: IconCategory.Status, icon: 'icon-[line-md--loading-twotone-loop]' },\n loaderCircle: { category: IconCategory.Status, icon: 'icon-[lucide--loader-circle]' },\n verified: { category: IconCategory.Status, icon: 'icon-[lucide--badge-check]' },\n visibility: { category: IconCategory.Status, icon: 'icon-[lucide--eye]' },\n visibilityOff: { category: IconCategory.Status, icon: 'icon-[lucide--eye-off]' },\n online: { category: IconCategory.Status, icon: 'icon-[lucide--circle-dot]' },\n circleCheck: { category: IconCategory.Status, icon: 'icon-[lucide--circle-check]' },\n squareCheck: { category: IconCategory.Status, icon: 'icon-[lucide--square-check]' },\n loader: { category: IconCategory.Status, icon: 'icon-[lucide--loader]' },\n gauge: { category: IconCategory.Status, icon: 'icon-[lucide--gauge]' },\n play: { category: IconCategory.Media, icon: 'icon-[lucide--play]' },\n pause: { category: IconCategory.Media, icon: 'icon-[lucide--pause]' },\n stop: { category: IconCategory.Media, icon: 'icon-[lucide--square]' },\n stopCircle: { category: IconCategory.Media, icon: 'icon-[lucide--circle-stop]' },\n skipBack: { category: IconCategory.Media, icon: 'icon-[lucide--skip-back]' },\n skipForward: { category: IconCategory.Media, icon: 'icon-[lucide--skip-forward]' },\n skipNext: { category: IconCategory.Media, icon: 'icon-[lucide--skip-forward]' },\n skipPrevious: { category: IconCategory.Media, icon: 'icon-[lucide--skip-back]' },\n fastForward: { category: IconCategory.Media, icon: 'icon-[lucide--fast-forward]' },\n fastRewind: { category: IconCategory.Media, icon: 'icon-[lucide--rewind]' },\n rewind: { category: IconCategory.Media, icon: 'icon-[lucide--rewind]' },\n loop: { category: IconCategory.Media, icon: 'icon-[lucide--repeat]' },\n shuffle: { category: IconCategory.Media, icon: 'icon-[lucide--shuffle]' },\n volumeUp: { category: IconCategory.Media, icon: 'icon-[lucide--volume-2]' },\n volumeDown: { category: IconCategory.Media, icon: 'icon-[lucide--volume-1]' },\n volumeOff: { category: IconCategory.Media, icon: 'icon-[lucide--volume-off]' },\n image: { category: IconCategory.Media, icon: 'icon-[lucide--image]' },\n imagePlus: { category: IconCategory.Media, icon: 'icon-[lucide--image-plus]' },\n video: { category: IconCategory.Media, icon: 'icon-[lucide--video]' },\n videoOff: { category: IconCategory.Media, icon: 'icon-[lucide--video-off]' },\n camera: { category: IconCategory.Media, icon: 'icon-[lucide--camera]' },\n mic: { category: IconCategory.Media, icon: 'icon-[lucide--mic]' },\n micOff: { category: IconCategory.Media, icon: 'icon-[lucide--mic-off]' },\n webcam: { category: IconCategory.Media, icon: 'icon-[lucide--webcam]' },\n music: { category: IconCategory.Media, icon: 'icon-[lucide--music]' },\n music2: { category: IconCategory.Media, icon: 'icon-[lucide--music-2]' },\n headset: { category: IconCategory.Media, icon: 'icon-[lucide--headset]' },\n captions: { category: IconCategory.Media, icon: 'icon-[lucide--captions]' },\n playCircle: { category: IconCategory.Media, icon: 'icon-[lucide--circle-play]' },\n pauseCircle: { category: IconCategory.Media, icon: 'icon-[lucide--circle-pause]' },\n imageUp: { category: IconCategory.Media, icon: 'icon-[lucide--image-up]' },\n images: { category: IconCategory.Media, icon: 'icon-[lucide--images]' },\n file: { category: IconCategory.Files, icon: 'icon-[lucide--file]' },\n fileText: { category: IconCategory.Files, icon: 'icon-[lucide--file-text]' },\n fileAdd: { category: IconCategory.Files, icon: 'icon-[lucide--file-plus]' },\n fileZip: { category: IconCategory.Files, icon: 'icon-[lucide--file-archive]' },\n fileSymlink: { category: IconCategory.Files, icon: 'icon-[lucide--file-symlink]' },\n fileSearch: { category: IconCategory.Files, icon: 'icon-[lucide--file-search]' },\n folder: { category: IconCategory.Files, icon: 'icon-[lucide--folder]' },\n folderOpen: { category: IconCategory.Files, icon: 'icon-[lucide--folder-open]' },\n folderClosed: { category: IconCategory.Files, icon: 'icon-[lucide--folder-closed]' },\n folderPlus: { category: IconCategory.Files, icon: 'icon-[lucide--folder-plus]' },\n folderMinus: { category: IconCategory.Files, icon: 'icon-[lucide--folder-minus]' },\n folderGit: { category: IconCategory.Files, icon: 'icon-[lucide--folder-git-2]' },\n folderSymlink: { category: IconCategory.Files, icon: 'icon-[lucide--folder-symlink]' },\n document: { category: IconCategory.Files, icon: 'icon-[lucide--file-text]' },\n code: { category: IconCategory.Files, icon: 'icon-[lucide--code]' },\n codeBlock: { category: IconCategory.Files, icon: 'icon-[lucide--square-code]' },\n codeBracket: { category: IconCategory.Files, icon: 'icon-[lucide--braces]' },\n codeWrap: { category: IconCategory.Files, icon: 'icon-[lucide--wrap-text]' },\n archive: { category: IconCategory.Files, icon: 'icon-[lucide--archive]' },\n notebook: { category: IconCategory.Files, icon: 'icon-[lucide--notebook]' },\n notes: { category: IconCategory.Files, icon: 'icon-[lucide--sticky-note]' },\n clipboard: { category: IconCategory.Files, icon: 'icon-[lucide--clipboard]' },\n floppyDisk: { category: IconCategory.Files, icon: 'icon-[lucide--save]' },\n fileUp: { category: IconCategory.Files, icon: 'icon-[lucide--file-up]' },\n clipboardList: { category: IconCategory.Files, icon: 'icon-[lucide--clipboard-list]' },\n files: { category: IconCategory.Files, icon: 'icon-[lucide--files]' },\n filePen: { category: IconCategory.Files, icon: 'icon-[lucide--file-pen]' },\n panelLeft: { category: IconCategory.UI, icon: 'icon-[lucide--panel-left]' },\n panelRight: { category: IconCategory.UI, icon: 'icon-[lucide--panel-right]' },\n panelTop: { category: IconCategory.UI, icon: 'icon-[lucide--panel-top]' },\n panelBottom: { category: IconCategory.UI, icon: 'icon-[lucide--panel-bottom]' },\n sidebar: { category: IconCategory.UI, icon: 'icon-[lucide--panel-left]' },\n moreHorizontal: { category: IconCategory.UI, icon: 'icon-[lucide--ellipsis]' },\n moreVertical: { category: IconCategory.UI, icon: 'icon-[lucide--ellipsis-vertical]' },\n dragHandle: { category: IconCategory.UI, icon: 'icon-[lucide--grip-horizontal]' },\n dragIndicator: { category: IconCategory.UI, icon: 'icon-[lucide--grip-vertical]' },\n gridView: { category: IconCategory.UI, icon: 'icon-[lucide--grid-2x2]' },\n gridSquare: { category: IconCategory.UI, icon: 'icon-[lucide--grid-2x2]' },\n colorSwatch: { category: IconCategory.UI, icon: 'icon-[heroicons-solid--color-swatch]' },\n layoutGrid: { category: IconCategory.UI, icon: 'icon-[lucide--layout-grid]' },\n listView: { category: IconCategory.UI, icon: 'icon-[lucide--list]' },\n listOrdered: { category: IconCategory.UI, icon: 'icon-[lucide--list-ordered]' },\n settings: { category: IconCategory.UI, icon: 'icon-[lucide--settings]' },\n tune: { category: IconCategory.UI, icon: 'icon-[lucide--sliders-horizontal]' },\n slidersVertical: { category: IconCategory.UI, icon: 'icon-[lucide--sliders-vertical]' },\n notifications: { category: IconCategory.UI, icon: 'icon-[lucide--bell]' },\n bellDot: { category: IconCategory.UI, icon: 'icon-[lucide--bell-dot]' },\n bellOff: { category: IconCategory.UI, icon: 'icon-[lucide--bell-off]' },\n person: { category: IconCategory.UI, icon: 'icon-[lucide--user]' },\n group: { category: IconCategory.UI, icon: 'icon-[lucide--users]' },\n userCheck: { category: IconCategory.UI, icon: 'icon-[lucide--user-check]' },\n userPlus: { category: IconCategory.UI, icon: 'icon-[lucide--user-plus]' },\n userMinus: { category: IconCategory.UI, icon: 'icon-[lucide--user-minus]' },\n userX: { category: IconCategory.UI, icon: 'icon-[lucide--user-x]' },\n userCog: { category: IconCategory.UI, icon: 'icon-[lucide--user-cog]' },\n keyboard: { category: IconCategory.UI, icon: 'icon-[lucide--keyboard]' },\n keyboardReturn: { category: IconCategory.UI, icon: 'icon-[material-symbols--keyboard-return-rounded]' },\n keyboardCommand: { category: IconCategory.UI, icon: 'icon-[lucide--command]' },\n fullscreen: { category: IconCategory.UI, icon: 'icon-[lucide--maximize]' },\n fullscreenExit: { category: IconCategory.UI, icon: 'icon-[lucide--minimize]' },\n dashboard: { category: IconCategory.UI, icon: 'icon-[lucide--layout-dashboard]' },\n widgets: { category: IconCategory.UI, icon: 'icon-[material-symbols--widgets-rounded]' },\n apps: { category: IconCategory.UI, icon: 'icon-[lucide--grid-3x3]' },\n pictureInPicture: { category: IconCategory.UI, icon: 'icon-[lucide--picture-in-picture]' },\n toggleOn: { category: IconCategory.UI, icon: 'icon-[lucide--toggle-right]' },\n toggleOff: { category: IconCategory.UI, icon: 'icon-[lucide--toggle-left]' },\n appWindow: { category: IconCategory.UI, icon: 'icon-[lucide--app-window]' },\n terminalWindow: { category: IconCategory.UI, icon: 'icon-[lucide--square-terminal]' },\n scrollArea: { category: IconCategory.UI, icon: 'icon-[lucide--scroll]' },\n inspectSearch: { category: IconCategory.UI, icon: 'icon-[lucide--scan-search]' },\n option: { category: IconCategory.UI, icon: 'icon-[lucide--option]' },\n cube: { category: IconCategory.UI, icon: 'icon-[iconoir--select-face-3d]' },\n textCursorInput: { category: IconCategory.UI, icon: 'icon-[lucide--text-cursor-input]' },\n blocks: { category: IconCategory.UI, icon: 'icon-[lucide--blocks]' },\n listTree: { category: IconCategory.UI, icon: 'icon-[lucide--list-tree]' },\n squareChevronDown: { category: IconCategory.UI, icon: 'icon-[lucide--square-chevron-down]' },\n letterText: { category: IconCategory.UI, icon: 'icon-[lucide--letter-text]' },\n squareMousePointer: { category: IconCategory.UI, icon: 'icon-[lucide--square-mouse-pointer]' },\n columns3: { category: IconCategory.UI, icon: 'icon-[lucide--columns-3]' },\n listCollapse: { category: IconCategory.UI, icon: 'icon-[lucide--list-collapse]' },\n foldVertical: { category: IconCategory.UI, icon: 'icon-[lucide--fold-vertical]' },\n inbox: { category: IconCategory.UI, icon: 'icon-[lucide--inbox]' },\n squareDashed: { category: IconCategory.UI, icon: 'icon-[lucide--square-dashed]' },\n tableOfContents: { category: IconCategory.UI, icon: 'icon-[lucide--table-of-contents]' },\n grid3x3: { category: IconCategory.UI, icon: 'icon-[lucide--grid-3x3]' },\n fieldGroup: { category: IconCategory.UI, icon: 'icon-[lucide--group]' },\n rectangleEllipsis: { category: IconCategory.UI, icon: 'icon-[lucide--rectangle-ellipsis]' },\n inputGroup: { category: IconCategory.UI, icon: 'icon-[lucide--between-horizontal-end]' },\n groupItems: { category: IconCategory.UI, icon: 'icon-[lucide--group]' },\n separator: { category: IconCategory.UI, icon: 'icon-[lucide--separator-horizontal]' },\n stretchHorizontal: { category: IconCategory.UI, icon: 'icon-[lucide--stretch-horizontal]' },\n squareStack: { category: IconCategory.UI, icon: 'icon-[lucide--square-stack]' },\n textCursor: { category: IconCategory.UI, icon: 'icon-[lucide--text-cursor]' },\n component: { category: IconCategory.UI, icon: 'icon-[lucide--component]' },\n layoutTemplate: { category: IconCategory.UI, icon: 'icon-[lucide--layout-template]' },\n google: { category: IconCategory.Brands, icon: 'icon-[logos--google-icon]' },\n googleMono: { category: IconCategory.Brands, icon: 'icon-[simple-icons--google]' },\n github: { category: IconCategory.Brands, icon: 'icon-[mdi--github]' },\n apple: { category: IconCategory.Brands, icon: 'icon-[mdi--apple]' },\n openai: { category: IconCategory.Brands, icon: 'icon-[simple-icons--openai]' },\n anthropic: { category: IconCategory.Brands, icon: 'icon-[simple-icons--anthropic]' },\n aws: { category: IconCategory.Brands, icon: 'icon-[simple-icons--amazonwebservices]' },\n gemini: { category: IconCategory.Brands, icon: 'icon-[simple-icons--googlegemini]' },\n discord: { category: IconCategory.Brands, icon: 'icon-[simple-icons--discord]' },\n slack: { category: IconCategory.Brands, icon: 'icon-[simple-icons--slack]' },\n figma: { category: IconCategory.Brands, icon: 'icon-[simple-icons--figma]' },\n linkedin: { category: IconCategory.Brands, icon: 'icon-[lucide--linkedin]' },\n codepen: { category: IconCategory.Brands, icon: 'icon-[lucide--codepen]' },\n rss: { category: IconCategory.Brands, icon: 'icon-[lucide--rss]' },\n typescript: { category: IconCategory.Programming, icon: 'icon-[simple-icons--typescript]' },\n javascript: { category: IconCategory.Programming, icon: 'icon-[simple-icons--javascript]' },\n python: { category: IconCategory.Programming, icon: 'icon-[simple-icons--python]' },\n react: { category: IconCategory.Programming, icon: 'icon-[simple-icons--react]' },\n tailwindcss: { category: IconCategory.Programming, icon: 'icon-[simple-icons--tailwindcss]' },\n json: { category: IconCategory.Programming, icon: 'icon-[lucide--braces]' },\n html: { category: IconCategory.Programming, icon: 'icon-[simple-icons--html5]' },\n css: { category: IconCategory.Programming, icon: 'icon-[simple-icons--css3]' },\n terminal: { category: IconCategory.Programming, icon: 'icon-[lucide--terminal]' },\n api: { category: IconCategory.Programming, icon: 'icon-[lucide--webhook]' },\n variable: { category: IconCategory.Programming, icon: 'icon-[lucide--variable]' },\n webhook: { category: IconCategory.Programming, icon: 'icon-[lucide--webhook]' },\n functionIcon: { category: IconCategory.Programming, icon: 'icon-[lucide--function-square]' },\n cursor: { category: IconCategory.Tools, icon: 'icon-[lucide--mouse-pointer]' },\n cursorClick: { category: IconCategory.Tools, icon: 'icon-[lucide--mouse-pointer-click]' },\n hand: { category: IconCategory.Tools, icon: 'icon-[lucide--hand]' },\n pen: { category: IconCategory.Tools, icon: 'icon-[lucide--pen]' },\n brush: { category: IconCategory.Tools, icon: 'icon-[lucide--paintbrush]' },\n eraser: { category: IconCategory.Tools, icon: 'icon-[lucide--eraser]' },\n colorize: { category: IconCategory.Tools, icon: 'icon-[lucide--pipette]' },\n straighten: { category: IconCategory.Tools, icon: 'icon-[lucide--ruler]' },\n wrench: { category: IconCategory.Tools, icon: 'icon-[lucide--wrench]' },\n plug: { category: IconCategory.Tools, icon: 'icon-[lucide--plug]' },\n scan: { category: IconCategory.Tools, icon: 'icon-[lucide--scan]' },\n aperture: { category: IconCategory.Tools, icon: 'icon-[lucide--aperture]' },\n pencilRuler: { category: IconCategory.Tools, icon: 'icon-[lucide--pencil-ruler]' },\n mousePointer2: { category: IconCategory.Tools, icon: 'icon-[lucide--mouse-pointer-2]' },\n table: { category: IconCategory.Data, icon: 'icon-[lucide--table]' },\n barChart: { category: IconCategory.Data, icon: 'icon-[lucide--chart-bar]' },\n chartBarStacked: { category: IconCategory.Data, icon: 'icon-[lucide--chart-bar-stacked]' },\n pieChart: { category: IconCategory.Data, icon: 'icon-[lucide--chart-pie]' },\n lineChart: { category: IconCategory.Data, icon: 'icon-[lucide--line-chart]' },\n chartActivity: { category: IconCategory.Data, icon: 'icon-[lucide--activity]' },\n trendingUp: { category: IconCategory.Data, icon: 'icon-[lucide--trending-up]' },\n trendingDown: { category: IconCategory.Data, icon: 'icon-[lucide--trending-down]' },\n analytics: { category: IconCategory.Data, icon: 'icon-[lucide--chart-no-axes-combined]' },\n array: { category: IconCategory.Data, icon: 'icon-[material-symbols--data-array-rounded]' },\n database: { category: IconCategory.Data, icon: 'icon-[lucide--database]' },\n tag: { category: IconCategory.Data, icon: 'icon-[lucide--tag]' },\n label: { category: IconCategory.Data, icon: 'icon-[material-symbols--label-rounded]' },\n hash: { category: IconCategory.Data, icon: 'icon-[lucide--hash]' },\n percent: { category: IconCategory.Data, icon: 'icon-[lucide--percent]' },\n tally5: { category: IconCategory.Data, icon: 'icon-[lucide--tally-5]' },\n chat: { category: IconCategory.Communication, icon: 'icon-[lucide--message-square]' },\n chatBubble: { category: IconCategory.Communication, icon: 'icon-[lucide--message-circle]' },\n messageTyping: { category: IconCategory.Communication, icon: 'icon-[lucide--message-square-more]' },\n comment: { category: IconCategory.Communication, icon: 'icon-[lucide--message-square-text]' },\n email: { category: IconCategory.Communication, icon: 'icon-[lucide--mail]' },\n call: { category: IconCategory.Communication, icon: 'icon-[lucide--phone]' },\n thumbUp: { category: IconCategory.Communication, icon: 'icon-[lucide--thumbs-up]' },\n thumbDown: { category: IconCategory.Communication, icon: 'icon-[lucide--thumbs-down]' },\n messageSquareMore: { category: IconCategory.Communication, icon: 'icon-[lucide--message-square-more]' },\n messageCircle: { category: IconCategory.Communication, icon: 'icon-[lucide--message-circle]' },\n messageCircleMore: { category: IconCategory.Communication, icon: 'icon-[lucide--message-circle-more]' },\n messagesSquare: { category: IconCategory.Communication, icon: 'icon-[lucide--messages-square]' },\n palette: { category: IconCategory.Design, icon: 'icon-[lucide--palette]' },\n paintBucket: { category: IconCategory.Design, icon: 'icon-[lucide--paint-bucket]' },\n formatPaint: { category: IconCategory.Design, icon: 'icon-[lucide--paint-roller]' },\n autoAwesome: { category: IconCategory.Design, icon: 'icon-[material-symbols--auto-awesome-rounded]' },\n style: { category: IconCategory.Design, icon: 'icon-[material-symbols--style]' },\n opacity: { category: IconCategory.Design, icon: 'icon-[material-symbols--opacity-rounded]' },\n gradient: { category: IconCategory.Design, icon: 'icon-[material-symbols--gradient]' },\n contrast: { category: IconCategory.Design, icon: 'icon-[carbon--contrast]' },\n brightness: { category: IconCategory.Design, icon: 'icon-[lucide--sun]' },\n layers: { category: IconCategory.Design, icon: 'icon-[lucide--layers]' },\n blendMode: { category: IconCategory.Design, icon: 'icon-[lucide--blend]' },\n shadow: { category: IconCategory.Design, icon: 'icon-[material-symbols--ev-shadow]' },\n roundedCorner: { category: IconCategory.Design, icon: 'icon-[material-symbols--rounded-corner-rounded]' },\n formatSpacing: { category: IconCategory.Design, icon: 'icon-[material-symbols--format-letter-spacing-rounded]' },\n shapes: { category: IconCategory.Design, icon: 'icon-[lucide--shapes]' },\n swatchBook: { category: IconCategory.Design, icon: 'icon-[lucide--swatch-book]' },\n droplets: { category: IconCategory.Design, icon: 'icon-[lucide--droplets]' },\n sunMedium: { category: IconCategory.Design, icon: 'icon-[lucide--sun-medium]' },\n spline: { category: IconCategory.Design, icon: 'icon-[lucide--spline]' },\n robot: { category: IconCategory.AI, icon: 'icon-[lucide--bot]' },\n sparkles: { category: IconCategory.AI, icon: 'icon-[lucide--sparkles]' },\n sparkle: { category: IconCategory.AI, icon: 'icon-[lucide--sparkle]' },\n brain: { category: IconCategory.AI, icon: 'icon-[lucide--brain]' },\n magic: { category: IconCategory.AI, icon: 'icon-[lucide--wand-sparkles]' },\n experiment: { category: IconCategory.AI, icon: 'icon-[lucide--flask-conical]' },\n psychology: { category: IconCategory.AI, icon: 'icon-[material-symbols--psychology-rounded]' },\n botMessageSquare: { category: IconCategory.AI, icon: 'icon-[lucide--bot-message-square]' },\n one: { category: IconCategory.Numbers, icon: 'icon-[material-symbols--counter-1-rounded]' },\n two: { category: IconCategory.Numbers, icon: 'icon-[material-symbols--counter-2-rounded]' },\n three: { category: IconCategory.Numbers, icon: 'icon-[material-symbols--counter-3-rounded]' },\n four: { category: IconCategory.Numbers, icon: 'icon-[material-symbols--counter-4-rounded]' },\n five: { category: IconCategory.Numbers, icon: 'icon-[material-symbols--counter-5-rounded]' },\n six: { category: IconCategory.Numbers, icon: 'icon-[material-symbols--counter-6-rounded]' },\n seven: { category: IconCategory.Numbers, icon: 'icon-[material-symbols--counter-7-rounded]' },\n eight: { category: IconCategory.Numbers, icon: 'icon-[material-symbols--counter-8]' },\n nine: { category: IconCategory.Numbers, icon: 'icon-[material-symbols--counter-9-rounded]' },\n favorite: { category: IconCategory.Misc, icon: 'icon-[lucide--heart]' },\n star: { category: IconCategory.Misc, icon: 'icon-[lucide--star]' },\n bookmark: { category: IconCategory.Misc, icon: 'icon-[lucide--bookmark]' },\n flag: { category: IconCategory.Misc, icon: 'icon-[lucide--flag]' },\n flagTriangle: { category: IconCategory.Misc, icon: 'icon-[lucide--flag-triangle-right]' },\n creditCard: { category: IconCategory.Misc, icon: 'icon-[lucide--credit-card]' },\n shoppingCart: { category: IconCategory.Misc, icon: 'icon-[lucide--shopping-cart]' },\n store: { category: IconCategory.Misc, icon: 'icon-[lucide--store]' },\n coins: { category: IconCategory.Misc, icon: 'icon-[lucide--coins]' },\n dollarSign: { category: IconCategory.Misc, icon: 'icon-[lucide--dollar-sign]' },\n receipt: { category: IconCategory.Misc, icon: 'icon-[lucide--receipt]' },\n location: { category: IconCategory.Misc, icon: 'icon-[lucide--map-pin]' },\n calendar: { category: IconCategory.Misc, icon: 'icon-[lucide--calendar]' },\n clock: { category: IconCategory.Misc, icon: 'icon-[lucide--clock]' },\n clockRewind: { category: IconCategory.Misc, icon: 'icon-[lucide--history]' },\n schedule: { category: IconCategory.Misc, icon: 'icon-[lucide--clock]' },\n timer: { category: IconCategory.Misc, icon: 'icon-[lucide--timer]' },\n stopwatch: { category: IconCategory.Misc, icon: 'icon-[lucide--timer]' },\n alarmClock: { category: IconCategory.Misc, icon: 'icon-[lucide--alarm-clock]' },\n lightbulb: { category: IconCategory.Misc, icon: 'icon-[lucide--lightbulb]' },\n bolt: { category: IconCategory.Misc, icon: 'icon-[lucide--zap]' },\n cloud: { category: IconCategory.Misc, icon: 'icon-[lucide--cloud]' },\n cloudUpload: { category: IconCategory.Misc, icon: 'icon-[lucide--cloud-upload]' },\n cloudDownload: { category: IconCategory.Misc, icon: 'icon-[lucide--cloud-download]' },\n lightMode: { category: IconCategory.Misc, icon: 'icon-[lucide--sun]' },\n darkMode: { category: IconCategory.Misc, icon: 'icon-[lucide--moon]' },\n moonStar: { category: IconCategory.Misc, icon: 'icon-[lucide--moon-star]' },\n sunDim: { category: IconCategory.Misc, icon: 'icon-[lucide--sun-dim]' },\n power: { category: IconCategory.Misc, icon: 'icon-[lucide--power]' },\n shield: { category: IconCategory.Misc, icon: 'icon-[lucide--shield]' },\n shieldCheck: { category: IconCategory.Misc, icon: 'icon-[lucide--shield-check]' },\n shieldOff: { category: IconCategory.Misc, icon: 'icon-[lucide--shield-off]' },\n key: { category: IconCategory.Misc, icon: 'icon-[lucide--key]' },\n keyRound: { category: IconCategory.Misc, icon: 'icon-[lucide--key-round]' },\n fingerprint: { category: IconCategory.Misc, icon: 'icon-[lucide--fingerprint]' },\n pin: { category: IconCategory.Misc, icon: 'icon-[lucide--pin]' },\n paperclip: { category: IconCategory.Misc, icon: 'icon-[lucide--paperclip]' },\n globe: { category: IconCategory.Misc, icon: 'icon-[lucide--globe]' },\n globeLock: { category: IconCategory.Misc, icon: 'icon-[lucide--globe-lock]' },\n gps: { category: IconCategory.Misc, icon: 'icon-[lucide--locate]' },\n network: { category: IconCategory.Misc, icon: 'icon-[lucide--network]' },\n cpu: { category: IconCategory.Misc, icon: 'icon-[lucide--cpu]' },\n monitor: { category: IconCategory.Misc, icon: 'icon-[lucide--monitor]' },\n smartphone: { category: IconCategory.Misc, icon: 'icon-[lucide--smartphone]' },\n tablet: { category: IconCategory.Misc, icon: 'icon-[lucide--tablet]' },\n monitorSmartphone: { category: IconCategory.Misc, icon: 'icon-[lucide--monitor-smartphone]' },\n server: { category: IconCategory.Misc, icon: 'icon-[lucide--server]' },\n hardDrive: { category: IconCategory.Misc, icon: 'icon-[lucide--hard-drive]' },\n box: { category: IconCategory.Misc, icon: 'icon-[lucide--box]' },\n puzzle: { category: IconCategory.Misc, icon: 'icon-[lucide--puzzle]' },\n briefcase: { category: IconCategory.Misc, icon: 'icon-[lucide--briefcase]' },\n calculator: { category: IconCategory.Misc, icon: 'icon-[lucide--calculator]' },\n buildings: { category: IconCategory.Misc, icon: 'icon-[lucide--building-2]' },\n bug: { category: IconCategory.Misc, icon: 'icon-[lucide--bug]' },\n droplet: { category: IconCategory.Misc, icon: 'icon-[lucide--droplet]' },\n bookOpen: { category: IconCategory.Misc, icon: 'icon-[lucide--book-open]' },\n bookClosed: { category: IconCategory.Misc, icon: 'icon-[lucide--book-marked]' },\n lifebuoy: { category: IconCategory.Misc, icon: 'icon-[lucide--life-buoy]' },\n accessibility: { category: IconCategory.Misc, icon: 'icon-[lucide--accessibility]' },\n workflow: { category: IconCategory.Misc, icon: 'icon-[lucide--workflow]' },\n gitBranch: { category: IconCategory.Misc, icon: 'icon-[lucide--git-branch]' },\n gitBranchPlus: { category: IconCategory.Misc, icon: 'icon-[lucide--git-branch-plus]' },\n gitCommit: { category: IconCategory.Misc, icon: 'icon-[lucide--git-commit-horizontal]' },\n gitMerge: { category: IconCategory.Misc, icon: 'icon-[lucide--git-merge]' },\n gitPullRequest: { category: IconCategory.Misc, icon: 'icon-[lucide--git-pull-request]' },\n crosshair: { category: IconCategory.Misc, icon: 'icon-[lucide--crosshair]' },\n target: { category: IconCategory.Misc, icon: 'icon-[lucide--target]' },\n smile: { category: IconCategory.Misc, icon: 'icon-[lucide--smile]' },\n frown: { category: IconCategory.Misc, icon: 'icon-[lucide--frown]' },\n smilePlus: { category: IconCategory.Misc, icon: 'icon-[lucide--smile-plus]' },\n bold: { category: IconCategory.Misc, icon: 'icon-[lucide--bold]' },\n italic: { category: IconCategory.Misc, icon: 'icon-[lucide--italic]' },\n strikethrough: { category: IconCategory.Misc, icon: 'icon-[lucide--strikethrough]' },\n underline: { category: IconCategory.Misc, icon: 'icon-[lucide--underline]' },\n heading: { category: IconCategory.Misc, icon: 'icon-[lucide--heading]' },\n type: { category: IconCategory.Misc, icon: 'icon-[lucide--type]' },\n caseSensitive: { category: IconCategory.Misc, icon: 'icon-[lucide--case-sensitive]' },\n alignLeft: { category: IconCategory.Misc, icon: 'icon-[lucide--align-left]' },\n alignCenter: { category: IconCategory.Misc, icon: 'icon-[lucide--align-center]' },\n alignRight: { category: IconCategory.Misc, icon: 'icon-[lucide--align-right]' },\n sunMoon: { category: IconCategory.Misc, icon: 'icon-[lucide--sun-moon]' },\n tv: { category: IconCategory.Misc, icon: 'icon-[lucide--tv]' },\n tvMinimal: { category: IconCategory.Misc, icon: 'icon-[lucide--tv-minimal]' },\n orbit: { category: IconCategory.Misc, icon: 'icon-[lucide--orbit]' },\n gitFork: { category: IconCategory.Misc, icon: 'icon-[lucide--git-fork]' },\n bookOpenText: { category: IconCategory.Misc, icon: 'icon-[lucide--book-open-text]' },\n serverOff: { category: IconCategory.Misc, icon: 'icon-[lucide--server-off]' },\n packagePlus: { category: IconCategory.Misc, icon: 'icon-[lucide--package-plus]' },\n\n} satisfies Record<string, IconProperties>;\n\nexport class IconHelpers {\n public static getIcon(name: string): string {\n return name in CURATED_ICONS ? CURATED_ICONS[name as CuratedIcons].icon : name;\n }\n\n public static getCategory(name: CuratedIcons): IconCategory {\n return CURATED_ICONS[name].category;\n }\n\n public static getCategories(): IconCategory[] {\n const usedCategories = new Set<IconCategory>();\n\n for (const icon of Object.values(CURATED_ICONS)) {\n usedCategories.add(icon.category);\n }\n\n return Object.values(IconCategory).filter(cat => usedCategories.has(cat));\n }\n\n public static getByCategory(): Record<IconCategory, IconEntry[]> {\n const grouped = {} as Record<IconCategory, IconEntry[]>;\n\n for (const category of Object.values(IconCategory)) {\n grouped[category] = [];\n }\n\n for (const [id, data] of Object.entries(CURATED_ICONS)) {\n grouped[data.category].push({\n id: id,\n category: data.category,\n icon: data.icon,\n });\n }\n\n return grouped;\n }\n}\n","import indexCss from './index.css?raw';\n\nexport type FontFormat = 'ttf' | 'otf' | 'woff2';\n\nexport interface FontFaceData {\n family: string;\n weightMin: number;\n weightMax: number;\n style: string;\n format: FontFormat;\n filePath: string;\n fileName: string;\n cssVariable: string | null;\n}\n\nconst FONT_VAR_REGEX = /--font-([\\w-]+):\\s*'([^']+)'/g;\n\nconst familyToVariable = new Map<string, string>();\n\nlet varMatch: RegExpExecArray | null;\n\nwhile ((varMatch = FONT_VAR_REGEX.exec(indexCss)) !== null) {\n const variableName = `--font-${varMatch[1]}`;\n const familyName = varMatch[2];\n familyToVariable.set(familyName.toLowerCase(), variableName);\n}\n\nconst FONT_FACE_REGEX = /@font-face\\s*\\{([^}]*)\\}/gs;\n\nconst parsedFonts: FontFaceData[] = [];\n\nlet faceMatch: RegExpExecArray | null;\n\nwhile ((faceMatch = FONT_FACE_REGEX.exec(indexCss)) !== null) {\n const block = faceMatch[1];\n\n const familyMatch = block.match(/font-family:\\s*'([^']+)'/);\n const weightMatch = block.match(/font-weight:\\s*([\\d\\s]+)/);\n const styleMatch = block.match(/font-style:\\s*(\\w+)/);\n const srcMatch = block.match(/src:\\s*url\\([^)]*?\\/fonts\\/([^)]+)\\)\\s*format\\('(\\w+)'\\)/);\n\n if (!familyMatch || !weightMatch || !styleMatch || !srcMatch) continue;\n\n const family = familyMatch[1];\n const weightRaw = weightMatch[1].trim();\n const style = styleMatch[1];\n const fileName = srcMatch[1];\n const format = srcMatch[2] === 'truetype' ? 'ttf' : srcMatch[2] === 'opentype' ? 'otf' : 'woff2';\n\n const weights = weightRaw.split(/\\s+/).map(Number);\n const weightMin = Math.min(...weights);\n const weightMax = Math.max(...weights);\n\n parsedFonts.push({\n family: family,\n weightMin: weightMin,\n weightMax: weightMax,\n style: style,\n format: format as FontFormat,\n filePath: `/fonts/${fileName}`,\n fileName: fileName,\n cssVariable: familyToVariable.get(family.toLowerCase()) ?? null,\n });\n}\n\nparsedFonts.sort((a, b) => a.family.localeCompare(b.family));\n\nexport const FONT_FACES: FontFaceData[] = parsedFonts;\n","export const BRICK_GLYPH_VIEWBOX = '0 0 72 72';\n\nexport const AWS_GLYPHS = {\n scaleOne: 'M32.9873 53.559 C28.9705 57.5759 22.4578 57.5759 18.441 53.559 C14.4241 49.5421 14.4241 43.0295 18.441 39.0127 C23.5068 33.9468 27.8352 37.9669 32.9011 32.901 C37.9669 27.8352 33.9468 23.5069 39.0127 18.441 C43.0295 14.4241 49.5422 14.4241 53.559 18.441 C57.5759 22.4579 57.5759 28.9705 53.559 32.9874 C48.4932 38.0532 44.1648 34.0331 39.0989 39.099 C34.0331 44.1648 38.0532 48.4931 32.9873 53.559 Z',\n scaleTwo: 'M36 50.3989 C42.6374 50.3989 42.8394 55.8681 49.4769 55.8681 C54.74 55.8681 59.0065 51.6016 59.0065 46.3385 C59.0065 41.0755 54.7399 36.8089 49.4769 36.8089 C42.8394 36.8089 42.6375 42.2781 36 42.2781 C29.3625 42.2781 29.1606 36.8089 22.5231 36.8089 C17.26 36.8089 12.9935 41.0754 12.9935 46.3385 C12.9935 51.6016 17.26 55.8681 22.5231 55.8681 C29.1606 55.8681 29.3625 50.3989 36 50.3989 Z M22.5231 35.1911 C17.26 35.1911 12.9935 30.9245 12.9935 25.6615 C12.9935 20.3984 17.26 16.1319 22.5231 16.1319 C29.1606 16.1319 29.3625 21.6011 36 21.6011 C42.6375 21.6011 42.8394 16.1319 49.4769 16.1319 C54.7399 16.1319 59.0065 20.3984 59.0065 25.6615 C59.0065 30.9245 54.74 35.1911 49.4769 35.1911 C42.8394 35.1911 42.6374 29.7219 36 29.7219 C29.3625 29.7219 29.1606 35.1911 22.5231 35.1911 Z',\n scaleThree: 'M46.534 36 C46.534 30.1823 41.8177 25.466 36 25.466 C30.1823 25.466 25.466 30.1823 25.466 36 C25.466 41.8177 30.1823 46.534 36 46.534 C41.8177 46.534 46.534 41.8177 46.534 36 Z M10.2127 51.1055 C10.2127 43.6723 16.3429 43.4395 16.3429 35.9998 C16.3429 28.5601 10.2127 28.3338 10.2127 20.894 C10.2127 14.9949 14.9953 10.2131 20.8945 10.2131 C28.3277 10.2131 28.5606 16.3433 36.0003 16.3433 C43.4399 16.3434 43.6663 10.2131 51.106 10.2131 C57.0051 10.2131 61.7873 14.9953 61.7873 20.8945 C61.7873 28.3277 55.6571 28.5605 55.6571 36.0002 C55.6571 43.4399 61.7873 43.6662 61.7873 51.106 C61.7873 57.0051 57.0047 61.7869 51.1055 61.7869 C43.6723 61.7869 43.4394 55.6567 35.9997 55.6567 C28.5601 55.6566 28.3337 61.7869 20.894 61.7869 C14.9949 61.7869 10.2127 57.0047 10.2127 51.1055 Z',\n connectOne: 'M25.5602 35.9945 C25.5602 25.5293 33.394 16.8783 43.5673 15.4888 C45.1444 15.273 46.4401 16.5835 46.4401 18.1745 L46.4401 53.811 C46.4401 55.4022 45.1444 56.7126 43.5673 56.4966 C33.394 55.1106 25.5602 46.4598 25.5602 35.9945 Z',\n connectTwo: 'M37.9659 35.9669 C37.9659 25.6277 45.7384 17.0884 55.7966 15.7961 C57.2547 15.609 58.4536 16.8183 58.4536 18.2907 L58.4536 53.643 C58.4536 55.1116 57.2547 56.3248 55.7966 56.1342 C45.7345 54.8419 37.9659 46.3026 37.9659 35.9634 L37.9659 35.9669 Z M34.1066 35.9669 C34.1066 25.6133 26.2046 17.0667 15.977 15.7926 C14.5189 15.609 13.3201 16.8183 13.3201 18.2907 L13.3201 53.643 C13.3201 55.1155 14.5189 56.3248 15.977 56.1411 C26.2011 54.8632 34.1066 46.3169 34.1066 35.9669 Z',\n connectThree: 'M38.8462 55.6591 C37.7229 56.7859 37.7086 58.6396 39.0334 59.518 C44.6887 63.2731 52.429 62.6214 57.4582 57.5923 C62.4908 52.5592 63.139 44.8193 59.3878 39.1675 C58.5055 37.8427 56.6518 37.8531 55.5285 38.9799 L38.8462 55.6626 L38.8462 55.6591 Z M55.3197 33.5118 C56.443 34.6347 58.2971 34.6494 59.1898 33.3316 C63.0739 27.5791 62.509 19.7345 57.4616 14.691 C52.4182 9.6437 44.5736 9.0783 38.8207 12.9628 C37.5032 13.8521 37.5141 15.7062 38.6409 16.833 L55.3231 33.5153 L55.3197 33.5118 Z M16.9113 38.7676 C15.7845 37.6408 13.9338 37.63 13.0411 38.9478 C9.157 44.7003 9.7219 52.5449 14.7693 57.5884 C19.8166 62.6357 27.6573 63.2046 33.4099 59.3165 C34.7277 58.4273 34.7168 56.5732 33.59 55.4464 L16.9078 38.7641 L16.9113 38.7676 Z M14.7693 14.896 C9.7362 19.929 9.0884 27.6689 12.8431 33.3208 C13.7254 34.6456 15.5791 34.6347 16.7024 33.5079 L33.3847 16.8256 C34.5115 15.7023 34.5223 13.8447 33.1975 12.9663 C27.5422 9.2116 19.8019 9.8634 14.7727 14.8925 L14.7693 14.896 Z',\n sparkOne: 'M35.9002 53.28 C45.3524 53.28 53.015 45.6174 53.015 36.1652 C53.015 26.713 45.3524 19.0504 35.9002 19.0504 C26.448 19.0504 18.7854 26.713 18.7854 36.1652 C18.7854 45.6174 26.448 53.28 35.9002 53.28 Z',\n sparkTwo: 'M22.9409 36.6826 C29.4471 36.6826 34.7219 31.4081 34.7219 24.9015 C34.7219 18.3949 29.4471 13.1205 22.9409 13.1205 C16.4343 13.1205 11.1599 18.3949 11.1599 24.9015 C11.1599 31.4081 16.4343 36.6826 22.9409 36.6826 Z M48.7968 36.6826 C55.3034 36.6826 60.5778 31.4081 60.5778 24.9015 C60.5778 18.3949 55.3034 13.1205 48.7968 13.1205 C42.2906 13.1205 37.0162 18.3949 37.0162 24.9015 C37.0162 31.4078 42.2906 36.6826 48.7968 36.6826 Z M35.7774 59.0395 C42.2836 59.0395 47.5584 53.7651 47.5584 47.2585 C47.5584 40.7523 42.2836 35.4779 35.7774 35.4779 C29.2708 35.4779 23.996 40.7523 23.996 47.2585 C23.996 53.7651 29.2708 59.0395 35.7774 59.0395 Z',\n sparkThree: 'M11.9817 23.2892 C14.87 26.7409 20.0076 27.2013 23.464 24.3184 C26.9199 21.4355 27.3884 16.2983 24.5109 12.8377 C21.6269 9.3697 16.4761 8.9001 13.0124 11.7892 C9.5487 14.6786 9.0872 19.8302 11.9817 23.2892 Z M47.6808 23.2795 C50.5637 26.7359 55.7009 27.2044 59.1615 24.3269 C62.6295 21.4429 63.0991 16.2921 60.2101 12.8284 C57.3206 9.3647 52.169 8.9032 48.71 11.7977 C45.2583 14.686 44.7979 19.8236 47.6808 23.2795 Z M34.9048 48.9715 C42.1456 49.6264 48.5492 44.2927 49.2152 37.0526 C49.8825 29.797 44.5352 23.3764 37.2781 22.72 C30.0209 22.064 23.6089 27.4214 22.9641 34.6793 C22.3205 41.9217 27.6635 48.3171 34.9048 48.9715 Z M47.6886 58.9965 C50.5769 62.4482 55.7149 62.9085 59.1708 60.0256 C62.6268 57.1424 63.0949 52.0055 60.2174 48.5453 C57.3338 45.077 52.183 44.6073 48.7193 47.4968 C45.2559 50.3859 44.7941 55.5374 47.6886 58.9965 Z M11.9739 58.9876 C14.8568 62.4435 19.9937 62.912 23.4543 60.0346 C26.9222 57.1505 27.3923 51.9997 24.5028 48.536 C21.6137 45.0727 16.4622 44.6108 13.0031 47.5053 C9.5514 50.3936 9.0911 55.5316 11.9739 58.9876 Z',\n pivotOne: 'M55.4371 41.3248 C55.4371 40.3498 54.6466 39.5665 53.674 39.493 C42.3402 38.6354 33.2964 29.5897 32.4362 18.257 C32.3625 17.2848 31.5798 16.4916 30.6034 16.4916 L17.9249 16.4916 C16.9523 16.4916 16.158 17.2836 16.2007 18.2578 C17.0957 38.5451 33.3855 54.8323 53.674 55.7301 C54.6466 55.7732 55.4371 54.9787 55.4371 54.0038 L55.4371 41.3248 Z',\n pivotTwo: 'M59.3972 32.8542 C59.3972 32.058 58.75 31.4178 57.9557 31.3578 C48.6949 30.6568 41.3056 23.266 40.6043 14.0063 C40.5461 13.212 39.903 12.5641 39.1086 12.5641 L28.7473 12.5641 C27.953 12.5641 27.302 13.2112 27.3369 14.0071 C28.0731 30.5832 41.3792 43.8909 57.9557 44.6244 C58.75 44.6596 59.3972 44.0106 59.3972 43.2139 L59.3972 32.8542 Z M12.597 28.714 C12.597 27.9173 13.2442 27.2683 14.0423 27.3036 C30.6188 28.037 43.925 41.3447 44.6573 57.9208 C44.6922 58.7167 44.0451 59.3642 43.2469 59.3642 L32.8895 59.3642 C32.0913 59.3642 31.4519 58.716 31.3938 57.9216 C30.6925 48.6623 23.2993 41.2711 14.0423 40.5702 C13.248 40.5101 12.597 39.8704 12.597 39.0737 L12.597 28.714 Z',\n pivotThree: 'M9.102 34.5022 C22.6832 33.9012 33.5831 23.0002 34.1798 9.4247 C34.2108 8.773 33.6761 8.2441 33.0251 8.2441 L24.5393 8.2441 C23.8883 8.2441 23.3613 8.7769 23.3109 9.4247 C22.7414 17.0101 16.685 23.0653 9.0981 23.6376 C8.4471 23.688 7.9202 24.2099 7.9202 24.8616 L7.9202 33.3467 C7.9202 33.9985 8.4471 34.5313 9.0981 34.5022 L9.102 34.5022 Z M62.7915 34.7974 C63.4502 34.8265 63.9888 34.2898 63.9888 33.6276 L63.9888 25.0453 C63.9888 24.3862 63.4502 23.8573 62.7915 23.8069 C55.1232 23.2272 49.001 17.1035 48.4237 9.4356 C48.3733 8.7769 47.8425 8.2402 47.1837 8.2402 L38.601 8.2402 C37.9423 8.2402 37.4037 8.7769 37.4308 9.4356 C38.0391 23.166 49.063 34.1891 62.7915 34.7974 Z M47.1798 63.7164 C47.8386 63.7164 48.3733 63.1801 48.4198 62.5214 C48.9971 54.8531 55.1232 48.7298 62.7876 48.1501 C63.4502 48.0997 63.9849 47.5704 63.9849 46.9117 L63.9849 38.3294 C63.9849 37.6702 63.4502 37.1305 62.7876 37.1592 C49.0592 37.7675 38.0353 48.791 37.4269 62.5214 C37.3998 63.1801 37.9345 63.7164 38.5971 63.7164 L47.1798 63.7164 Z M33.029 63.7164 C33.68 63.7164 34.2108 63.1871 34.1837 62.5358 C33.5831 48.9564 22.6832 38.0554 9.1058 37.4579 C8.4549 37.4292 7.924 37.962 7.924 38.6138 L7.924 47.0988 C7.924 47.7506 8.4549 48.276 9.1058 48.3264 C16.6928 48.8987 22.7452 54.9539 23.3187 62.5392 C23.3691 63.191 23.8922 63.7199 24.547 63.7199 L33.0329 63.7199 L33.029 63.7164 Z',\n};\n\nexport type AwsGlyph = keyof typeof AWS_GLYPHS;\n\nexport const AWS_ARROW_PATH = 'M273.5,143.7c-32.9,24.3-80.7,37.2-121.8,37.2c-57.6,0-109.5-21.3-148.7-56.7c-3.1-2.8-0.3-6.6,3.4-4.4c42.4,24.6,94.7,39.5,148.8,39.5c36.5,0,76.6-7.6,113.5-23.2C274.2,133.6,278.9,139.7,273.5,143.7z M287.2,128.1c-4.2-5.4-27.8-2.6-38.5-1.3c-3.2,0.4-3.7-2.4-0.8-4.5c18.8-13.2,49.7-9.4,53.3-5c3.6,4.5-1,35.4-18.6,50.2c-2.7,2.3-5.3,1.1-4.1-1.9C282.5,155.7,291.4,133.4,287.2,128.1z';\n\nexport const AWS_COLORS = {\n orange: '#FF6200',\n yellow: '#F3C300',\n pink: '#FF4D8B',\n purple: '#B052FF',\n blue: '#0578FF',\n green: '#6EE750',\n white: '#FFFFFF',\n black: '#000000',\n};\n\nexport type AwsColor = keyof typeof AWS_COLORS;\n\nexport function getAwsColor(hex: string): AwsColor {\n const value = hex.toUpperCase();\n const entry = Object.entries(AWS_COLORS).find(([, color]) => color.toUpperCase() === value);\n\n return (entry?.[0] as AwsColor) ?? 'black';\n}\n","export const IMAGES = {\n digoLogo: 'https://cdn.digo-labs.com/images/digo-logo.png',\n digoLogoSvg: 'https://cdn.digo-labs.com/images/digo-logo.svg',\n pcLogoV1Svg: 'https://cdn.digo-labs.com/images/pc-logo-v1.svg',\n pcLogo3d: 'https://cdn.digo-labs.com/images/pc-logo-3d.png',\n userPlaceholder: 'https://cdn.digo-labs.com/images/user-placeholder.png',\n audio3d: 'https://cdn.digo-labs.com/images/audio-3d.jpg',\n blocks3d: 'https://cdn.digo-labs.com/images/blocks-3d.jpg',\n components3d: 'https://cdn.digo-labs.com/images/components-3d.jpg',\n effects3d: 'https://cdn.digo-labs.com/images/effects-3d.jpg',\n fonts3d: 'https://cdn.digo-labs.com/images/fonts-3d.jpg',\n icons3d: 'https://cdn.digo-labs.com/images/icons-3d.jpg',\n image3d: 'https://cdn.digo-labs.com/images/image-3d.jpg',\n llms3d: 'https://cdn.digo-labs.com/images/llms-3d.jpg',\n pages3d: 'https://cdn.digo-labs.com/images/pages-3d.jpg',\n text3d: 'https://cdn.digo-labs.com/images/text-3d.jpg',\n video3d: 'https://cdn.digo-labs.com/images/video-3d.jpg',\n\n terminalScreenFrame: 'https://cdn.digo-labs.com/images/terminal-screen-frame.png',\n terminalScreenGlass: 'https://cdn.digo-labs.com/images/terminal-screen-glass.png',\n terminalSideGlass: 'https://cdn.digo-labs.com/images/terminal-side-glass.png',\n\n drawingPen: 'https://cdn.digo-labs.com/images/pen.svg',\n drawingPenTip: 'https://cdn.digo-labs.com/images/pen-tip.svg',\n drawingEraser: 'https://cdn.digo-labs.com/images/eraser.png',\n};\n","export const MODELS = {\n porsche: 'https://cdn.digo-labs.com/models/porsche.glb',\n};\n","export class LocalStorage {\n public static setValue<T>(key: string, value: T): void {\n localStorage.setItem(key, JSON.stringify(value));\n }\n\n public static loadValue<T>(key: string, defaultValue: T): T {\n const storedValue = localStorage.getItem(key);\n\n if (!storedValue || storedValue === 'undefined') {\n return defaultValue;\n }\n\n try {\n return JSON.parse(storedValue);\n } catch {\n return defaultValue;\n }\n }\n}\n","export class SessionStorage {\n public static setValue<T>(key: string, value: T): void {\n sessionStorage.setItem(key, JSON.stringify(value));\n }\n\n public static loadValue<T>(key: string, defaultValue: T): T {\n const storedValue = sessionStorage.getItem(key);\n\n if (!storedValue || storedValue === 'undefined') {\n return defaultValue;\n }\n\n try {\n return JSON.parse(storedValue);\n } catch {\n return defaultValue;\n }\n }\n}\n","export const ROUTES = {\n bedrockText: 'bedrock-text',\n dmxSend: 'dmx-send',\n storagePresignUpload: 'storage-presign-upload',\n storagePresignDownload: 'storage-presign-download',\n storageList: 'storage-list',\n storageDelete: 'storage-delete',\n databaseGetAll: 'database-get-all',\n databaseGet: 'database-get',\n databaseGetBy: 'database-get-by',\n databaseCreate: 'database-create',\n databaseUpdate: 'database-update',\n databaseDelete: 'database-delete',\n refreshSchemas: 'refresh-schemas',\n} as const;\n","import LZString from 'lz-string';\n\nimport {\n base64StringToBlob,\n blobToBase64String,\n} from 'blob-util';\n\nexport class StringHelpers {\n public static hashCode(data: string) {\n return [...data].reduce(\n (hash, c) => (Math.imul(31, hash) + c.charCodeAt(0)) | 0,\n 0,\n );\n }\n\n public static compress(data: string): string {\n return LZString.compress(data);\n }\n\n public static compressToBase64(data: string): string {\n return LZString.compressToBase64(data);\n }\n\n public static compressToUint8Array(data: string): Uint8Array {\n return LZString.compressToUint8Array(data);\n }\n\n public static decompress(data: string): string {\n return LZString.decompress(data);\n }\n\n public static decompressFromBase64(data: string): string {\n return LZString.decompressFromBase64(data);\n }\n\n public static decompressFromUint8Array(data: Uint8Array): string {\n return LZString.decompressFromUint8Array(data);\n }\n\n public static blobToBase64(blob: Blob): Promise<string> {\n return blobToBase64String(blob);\n }\n\n public static base64ToBlob(base64: string): Blob {\n return base64StringToBlob(base64);\n }\n\n public static getFirstLetter(string: string | undefined): string {\n if (!string) return 'X';\n return string.charAt(0).toUpperCase();\n }\n}\n","export const STRINGS = {\n digo: 'Digo',\n refresh: 'Refresh',\n code: 'Code',\n score: 'Score',\n preview: 'Preview',\n weights: 'Weights',\n examples: 'Examples',\n typography: 'Typography',\n sizes: 'Sizes',\n icons: 'Icons',\n neutral: 'Neutral',\n info: 'Info',\n selected: 'Selected',\n noneSelected: 'None selected',\n highlights: 'Highlights',\n shadows: 'Shadows',\n color: 'Color',\n untitled: 'Untitled',\n columns: 'Columns',\n save: 'Save',\n accent: 'Accent',\n applying: 'Applying',\n viewing: 'Viewing',\n clearMessages: 'Clear messages',\n clearNextMessages: 'Clear next messages',\n apply: 'Apply',\n import: 'Import',\n search: 'Search...',\n where: 'Where',\n noTimeArray: 'No time array',\n success: 'Success',\n error: 'Error',\n warning: 'Warning',\n attach: 'Attach',\n attachImage: 'Attach Image',\n actions: 'Actions',\n addNewColumn: 'Add new column',\n addNewRow: 'Add new row',\n addFilter: 'Add filter',\n addSort: 'Add sort',\n applySorting: 'Apply sorting',\n applyFilters: 'Apply filters',\n filter: 'Filter',\n sort: 'Sort',\n resetFilters: 'Reset filters',\n resetSorting: 'Reset sorting',\n description: 'Description',\n name: 'Name',\n loremIpsumSmall: 'Lorem ipsum dolor sit amet.',\n loremIpsumMedium: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam nec purus ac libero vehicula ultricies.',\n loremIpsumLong: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam nec purus ac libero vehicula ultricies. Nulla facilisi. Sed nec nisl in turpis tincidunt tincidunt. Nulla facilisi. Sed nec nisl in turpis tincidunt tincidunt.',\n selectAgent: 'Select Agent',\n selectModel: 'Select Model',\n sendPrompt: 'Send Prompt',\n view: 'View',\n toggleColumns: 'Toggle columns',\n toggleOpen: 'Toggle open',\n reset: 'Reset',\n noResultsFound: 'No results found.',\n clearFilters: 'Clear filters',\n rowsPerPage: 'Rows per page',\n id: 'Id',\n noSortsTitle: 'No sorts apply to this view',\n noSortsDescription: 'Add a column below to sort the view',\n noFiltersTitle: 'No filters apply to this view',\n noFiltersDescription: 'Add a column below to filter the view',\n defaultValue: 'Default value',\n default: 'Default',\n stepDuration: 'Step duration (ms)',\n min: 'Min',\n max: 'Max',\n icon: 'Icon',\n step: 'Step',\n decimals: 'Decimals',\n units: 'Units',\n play: 'Play',\n pause: 'Pause',\n next: 'Next',\n previous: 'Previous',\n loop: 'Loop',\n rewind: 'Rewind',\n forward: 'Forward',\n start: 'Start',\n emptyCode: 'Select a file to view its content',\n generate: 'Generate',\n savePreset: 'Save Preset',\n image: 'Image',\n};\n","import { z } from 'zod';\n\nexport const filePayloadSchema = z.object({\n mediaType: z.string(),\n base64: z.string(),\n name: z.string().optional(),\n});\n\nexport type FilePayload = z.infer<typeof filePayloadSchema>;\n\nexport const imagePayloadSchema = z.object({\n mediaType: z.string(),\n base64: z.string(),\n name: z.string().optional(),\n});\n\nexport type ImagePayload = z.infer<typeof imagePayloadSchema>;\n\nexport const sizeFormattedSchema = z\n .string()\n .regex(/^\\d+x\\d+$/)\n .transform(s => s as `${number}x${number}`);\n\nexport type SizeFormatted = z.infer<typeof sizeFormattedSchema>;\n\nexport const aspectRatioSchema = z\n .string()\n .regex(/^\\d+:\\d+$/)\n .transform(s => s as `${number}:${number}`);\n\nexport type AspectRatio = z.infer<typeof aspectRatioSchema>;\n","import { z } from 'zod';\n\nimport { aspectRatioSchema } from './primitives';\n\nexport interface ModelMetadata {\n id: string;\n provider: string;\n name: string;\n version: string;\n description: string;\n}\n\nexport const imageGenerateBodySchema = z.object({\n prompt: z.string().min(1),\n aspectRatio: aspectRatioSchema.optional(),\n seed: z.number().int().optional(),\n});\n\nexport type ImageGenerateBody = z.infer<typeof imageGenerateBodySchema>;\n\nexport const imageEditBodySchema = z.object({\n prompt: z.string().min(1),\n image: z.string().url(),\n strength: z.number().min(0).max(1).optional(),\n});\n\nexport type ImageEditBody = z.infer<typeof imageEditBodySchema>;\n\nexport const imageUpscaleBodySchema = z.object({\n image: z.string().url(),\n factor: z.number().positive().optional(),\n});\n\nexport type ImageUpscaleBody = z.infer<typeof imageUpscaleBodySchema>;\n\nexport const imageRemoveBackgroundBodySchema = z.object({\n image: z.string().url(),\n});\n\nexport type ImageRemoveBackgroundBody = z.infer<typeof imageRemoveBackgroundBodySchema>;\n\nexport const generatedImageSchema = z.object({\n url: z.string().url(),\n contentType: z.string().optional(),\n width: z.number().optional(),\n height: z.number().optional(),\n seed: z.number().optional(),\n model: z.string().optional(),\n});\n\nexport type GeneratedImage = z.infer<typeof generatedImageSchema>;\n\nexport const videoGenerateBodySchema = z.object({\n prompt: z.string().min(1),\n aspectRatio: aspectRatioSchema.optional(),\n durationSeconds: z.number().positive().optional(),\n});\n\nexport type VideoGenerateBody = z.infer<typeof videoGenerateBodySchema>;\n\nexport const generatedVideoSchema = z.object({\n url: z.string().url(),\n contentType: z.string().optional(),\n durationSeconds: z.number().optional(),\n model: z.string().optional(),\n});\n\nexport type GeneratedVideo = z.infer<typeof generatedVideoSchema>;\n\nexport const audioSpeechBodySchema = z.object({\n text: z.string().min(1),\n voice: z.string().optional(),\n speed: z.number().positive().optional(),\n});\n\nexport type AudioSpeechBody = z.infer<typeof audioSpeechBodySchema>;\n\nexport const audioMusicBodySchema = z.object({\n prompt: z.string().min(1),\n durationSeconds: z.number().positive().optional(),\n});\n\nexport type AudioMusicBody = z.infer<typeof audioMusicBodySchema>;\n\nexport const audioTranscribeBodySchema = z.object({\n audio: z.string().url(),\n language: z.string().optional(),\n});\n\nexport type AudioTranscribeBody = z.infer<typeof audioTranscribeBodySchema>;\n\nexport const generatedAudioSchema = z.object({\n url: z.string().url(),\n contentType: z.string().optional(),\n durationSeconds: z.number().optional(),\n model: z.string().optional(),\n});\n\nexport type GeneratedAudio = z.infer<typeof generatedAudioSchema>;\n\nexport const transcriptionSegmentSchema = z.object({\n text: z.string(),\n startSecond: z.number(),\n endSecond: z.number(),\n});\n\nexport type TranscriptionSegment = z.infer<typeof transcriptionSegmentSchema>;\n\nexport const transcriptionSchema = z.object({\n text: z.string(),\n segments: z.array(transcriptionSegmentSchema).optional(),\n language: z.string().optional(),\n model: z.string().optional(),\n});\n\nexport type Transcription = z.infer<typeof transcriptionSchema>;\n\nconst textContentPartSchema = z.object({\n type: z.literal('text'),\n text: z.string(),\n});\n\nconst imageContentPartSchema = z.object({\n type: z.literal('image'),\n source: z.object({\n base64: z.string(),\n mediaType: z.string(),\n }),\n});\n\nconst messageContentSchema = z.union([\n z.string(),\n z.array(z.union([textContentPartSchema, imageContentPartSchema])),\n]);\n\nexport const textMessageSchema = z.object({\n role: z.enum(['user', 'assistant']),\n content: messageContentSchema,\n});\n\nexport type TextMessage = z.infer<typeof textMessageSchema>;\n\nexport const textBodySchema = z.object({\n model: z.string().optional(),\n messages: z.array(textMessageSchema).min(1),\n systemPrompt: z.string().optional(),\n temperature: z.number().min(0).max(2).optional(),\n maxTokens: z.number().int().positive().optional(),\n stopSequences: z.array(z.string()).optional(),\n providerOptions: z.record(z.string(), z.record(z.string(), z.any())).optional(),\n});\n\nexport type TextBody = z.infer<typeof textBodySchema>;\n\nexport const textGenerateBodySchema = textBodySchema.omit({\n model: true,\n stopSequences: true,\n providerOptions: true,\n});\n\nexport type TextGenerateBody = z.infer<typeof textGenerateBodySchema>;\n\nexport type TextStreamChunk = { text: string; };\n\nexport type TextStreamResult = { text: string; stopReason: string; };\n\nexport interface TextStream extends AsyncIterable<TextStreamChunk> {\n readonly text: string;\n readonly stopReason: string | null;\n collect(): Promise<TextStreamResult>;\n}\n","import { z } from 'zod';\n\nexport const dmxSendBodySchema = z.object({\n channel: z.number().int().min(1).max(512),\n value: z.number().int().min(0).max(255),\n});\n\nexport type DmxSendBody = z.infer<typeof dmxSendBodySchema>;\n\nexport const dmxSendResponseSchema = z.object({\n success: z.boolean(),\n});\n\nexport type DmxSendResponse = z.infer<typeof dmxSendResponseSchema>;\n","import { z } from 'zod';\n\nconst identifier = z.string().min(1);\nconst scalarValue = z.union([z.string(), z.number(), z.boolean(), z.null()]);\nconst recordValue = z.record(z.string(), z.unknown());\n\nexport const databaseGetAllBodySchema = z.object({\n table: identifier,\n limit: z.number().int().positive().max(1000).default(100),\n offset: z.number().int().nonnegative().optional(),\n});\n\nexport type DatabaseGetAllBody = z.infer<typeof databaseGetAllBodySchema>;\n\nexport const databaseGetAllResponseSchema = z.object({\n rows: z.array(recordValue),\n});\n\nexport type DatabaseGetAllResponse = z.infer<typeof databaseGetAllResponseSchema>;\n\nexport const databaseGetBodySchema = z.object({\n table: identifier,\n pk: identifier,\n value: scalarValue,\n});\n\nexport type DatabaseGetBody = z.infer<typeof databaseGetBodySchema>;\n\nexport const databaseGetResponseSchema = z.object({\n row: recordValue.nullable(),\n});\n\nexport type DatabaseGetResponse = z.infer<typeof databaseGetResponseSchema>;\n\nexport const databaseGetByBodySchema = z.object({\n table: identifier,\n column: identifier,\n value: scalarValue,\n limit: z.number().int().positive().max(1000).default(100),\n offset: z.number().int().nonnegative().optional(),\n});\n\nexport type DatabaseGetByBody = z.infer<typeof databaseGetByBodySchema>;\n\nexport const databaseGetByResponseSchema = z.object({\n rows: z.array(recordValue),\n});\n\nexport type DatabaseGetByResponse = z.infer<typeof databaseGetByResponseSchema>;\n\nexport const databaseCreateBodySchema = z.object({\n table: identifier,\n record: recordValue,\n});\n\nexport type DatabaseCreateBody = z.infer<typeof databaseCreateBodySchema>;\n\nexport const databaseCreateResponseSchema = z.object({\n row: recordValue,\n});\n\nexport type DatabaseCreateResponse = z.infer<typeof databaseCreateResponseSchema>;\n\nexport const databaseUpdateBodySchema = z.object({\n table: identifier,\n pk: identifier,\n value: scalarValue,\n changes: recordValue,\n});\n\nexport type DatabaseUpdateBody = z.infer<typeof databaseUpdateBodySchema>;\n\nexport const databaseUpdateResponseSchema = z.object({\n success: z.boolean(),\n});\n\nexport type DatabaseUpdateResponse = z.infer<typeof databaseUpdateResponseSchema>;\n\nexport const databaseDeleteBodySchema = z.object({\n table: identifier,\n pk: identifier,\n value: scalarValue,\n});\n\nexport type DatabaseDeleteBody = z.infer<typeof databaseDeleteBodySchema>;\n\nexport const databaseDeleteResponseSchema = z.object({\n success: z.boolean(),\n});\n\nexport type DatabaseDeleteResponse = z.infer<typeof databaseDeleteResponseSchema>;\n","import { z } from 'zod';\n\nexport const presignUploadBodySchema = z.object({\n bucket: z.string().min(1),\n path: z.string().min(1),\n contentType: z.string().min(1),\n expiresIn: z.number().int().positive().max(604800).optional(),\n});\n\nexport type PresignUploadBody = z.infer<typeof presignUploadBodySchema>;\n\nexport const presignUploadResponseSchema = z.object({\n url: z.string().url(),\n expiresAt: z.number(),\n});\n\nexport type PresignUploadResponse = z.infer<typeof presignUploadResponseSchema>;\n\nexport const presignDownloadBodySchema = z.object({\n bucket: z.string().min(1),\n path: z.string().min(1),\n expiresIn: z.number().int().positive().max(604800).optional(),\n});\n\nexport type PresignDownloadBody = z.infer<typeof presignDownloadBodySchema>;\n\nexport const presignDownloadResponseSchema = presignUploadResponseSchema;\n\nexport type PresignDownloadResponse = z.infer<typeof presignDownloadResponseSchema>;\n\nexport const listBodySchema = z.object({\n bucket: z.string().min(1),\n prefix: z.string().optional(),\n limit: z.number().int().positive().max(1000).optional(),\n});\n\nexport type ListBody = z.infer<typeof listBodySchema>;\n\nexport const storageObjectSchema = z.object({\n key: z.string(),\n size: z.number(),\n lastModified: z.string(),\n etag: z.string().optional(),\n});\n\nexport type StorageObject = z.infer<typeof storageObjectSchema>;\n\nexport const listResponseSchema = z.object({\n objects: z.array(storageObjectSchema),\n});\n\nexport type ListResponse = z.infer<typeof listResponseSchema>;\n\nexport const deleteBodySchema = z.object({\n bucket: z.string().min(1),\n paths: z.array(z.string().min(1)).min(1),\n});\n\nexport type DeleteBody = z.infer<typeof deleteBodySchema>;\n\nexport const deleteResponseSchema = z.object({\n success: z.boolean(),\n deleted: z.array(z.string()),\n});\n\nexport type DeleteResponse = z.infer<typeof deleteResponseSchema>;\n","export interface Time {\n hours: number;\n minutes: number;\n seconds: number;\n}\n\nexport type Vector3 = [number, number, number];\n\nexport type Side = 'top' | 'right' | 'bottom' | 'left';\n\nexport type Align = 'start' | 'center' | 'end';\n\nexport type Subset<T, U extends T> = U;\n\nexport enum BedrockStyle {\n ANIMATED_FILM = '3D_ANIMATED_FAMILY_FILM',\n FLAT_VECTOR_ILLUSTRATION = 'FLAT_VECTOR_ILLUSTRATION',\n GRAPHIC_NOVEL_ILLUSTRATION = 'GRAPHIC_NOVEL_ILLUSTRATION',\n MAXIMALISM = 'MAXIMALISM',\n MIDCENTURY_RETRO = 'MIDCENTURY_RETRO',\n PHOTOREALISM = 'PHOTOREALISM',\n SOFT_DIGITAL_PAINTING = 'SOFT_DIGITAL_PAINTING',\n}\n\nexport interface Size {\n width: number;\n height: number;\n}\n\nexport interface Position {\n x: number;\n y: number;\n}\n\nexport interface Bounds extends Position, Size {}\n\nexport interface GradientStop {\n color: string;\n percent: number;\n}\n\nexport interface ModelPayload {\n name: string;\n description: string;\n icon: string;\n}\n\nexport interface CommonMetadata {\n name: string;\n description?: string;\n image?: File;\n tags?: string[];\n icon?: string;\n}\n\ntype SuccessResult<T> = readonly[T, null];\n\ntype ErrorResult<E = Error> = readonly[null, E];\n\nexport type Result<T, E = Error> = SuccessResult<T> | ErrorResult<E>;\n\nexport interface CodeLanguageMetadata {\n icon: string;\n name: string;\n}\n\nexport type Orientation = 'horizontal' | 'vertical';\n\nexport type Alignment = 'left' | 'center' | 'right';\n\nexport type Breakpoint = 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n\nexport type ClassGroups = Record<string, (string | Record<string, string[]>)[]>;\n","export type WebsocketChannelsTypes = Record<string, unknown>;\n\nexport type WebsocketListener<T = unknown> = (data: T) => void;\n\nexport enum WebsocketClientEvent {\n IDENTIFY = 'IDENTIFY',\n SUBSCRIBE = 'SUBSCRIBE',\n UNSUBSCRIBE = 'UNSUBSCRIBE',\n MESSAGE = 'MESSAGE',\n STATE = 'STATE',\n}\n\nexport type WebsocketClientMessage =\n | { type: WebsocketClientEvent.IDENTIFY; id: string; app: string; }\n | { type: WebsocketClientEvent.SUBSCRIBE; channels: string[]; }\n | { type: WebsocketClientEvent.UNSUBSCRIBE; channels: string[]; }\n | { type: WebsocketClientEvent.MESSAGE; channel: string; data?: unknown; }\n | { type: WebsocketClientEvent.STATE; channel: string; data?: unknown; };\n\nexport enum WebSocketHubEvent {\n MESSAGE = 'MESSAGE',\n STATE = 'STATE',\n}\n\nexport interface WebsocketHubMessage {\n type: WebSocketHubEvent;\n channel: string;\n data?: unknown;\n}\n\nexport interface WebsocketsHubConfig {\n port: number;\n}\n\nexport interface WebsocketConnectionConfig {\n app?: string;\n url?: string;\n id?: string;\n reconnect?: boolean;\n reconnectInterval?: number;\n maxReconnectInterval?: number;\n}\n\nexport const WEBSOCKET_HUB_CHANNEL = '_hub';\n\nexport interface WebsocketHubStatusClient {\n id: string;\n app: string;\n channels: string[];\n}\n\nexport enum WebsocketLogEvent {\n CONNECT = 'CONNECT',\n DISCONNECT = 'DISCONNECT',\n SUBSCRIBE = 'SUBSCRIBE',\n UNSUBSCRIBE = 'UNSUBSCRIBE',\n MESSAGE = 'MESSAGE',\n STATE = 'STATE',\n}\n\nexport interface WebsocketHubLogEntry {\n timestamp: number;\n sender: string;\n app: string;\n type: WebsocketLogEvent;\n channel: string;\n data?: unknown;\n}\n\nexport interface WebsocketHubStatus {\n clients: WebsocketHubStatusClient[];\n state: Record<string, unknown>;\n logs: WebsocketHubLogEntry[];\n}\n","export const VIDEOS = {\n pcLogo3D: 'https://cdn.digo-labs.com/videos/pc-logo-3d.mp4',\n};\n","import { TYPO_CLASS_GROUPS } from './constants';\nimport { Result } from './types/common-types';\n\nimport clsx, { ClassValue } from 'clsx';\nimport { extendTailwindMerge } from 'tailwind-merge';\n\nexport async function tryCatch<T, E = Error>(promise: Promise<T>): Promise<Result<T, E>> {\n try {\n const data = await promise;\n return [data, null] as const;\n } catch (error) {\n return [null, error as E] as const;\n }\n}\n\nconst twMerge = extendTailwindMerge({ extend: { classGroups: TYPO_CLASS_GROUPS } });\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","export const CITIES: string[] = [\n 'New York',\n 'Tokyo',\n 'Paris',\n 'London',\n 'Barcelona',\n 'Berlin',\n 'Amsterdam',\n 'Sydney',\n 'São Paulo',\n 'Mumbai',\n 'Dubai',\n 'Singapore',\n 'Hong Kong',\n 'Rome',\n 'Vienna',\n 'Prague',\n 'Lisbon',\n 'Stockholm',\n 'Seoul',\n 'Istanbul',\n 'Buenos Aires',\n 'Cairo',\n 'Mexico City',\n 'Oslo',\n 'Zürich',\n];\n\nexport const EXCERPTS: string[] = [\n 'The quick brown fox jumps over the lazy dog.',\n 'Pack my box with five dozen liquor jugs.',\n 'How vexingly quick daft zebras jump.',\n 'Sphinx of black quartz, judge my vow.',\n 'The five boxing wizards jump quickly.',\n 'Bright vixens jump dozing fowl quack.',\n 'Jackdaws love my big sphinx of quartz.',\n 'Sixty zippers were quickly picked from the woven jute bag.',\n 'We promptly judged antique ivory buckles for the next prize.',\n 'A mad boxer shot a quick, gloved jab to the jaw of his dizzy opponent.',\n];\n","export const AUTH_PROJECTS = {\n monorepo: {\n trustedOrigins: [\n 'http://localhost:*',\n 'http://127.0.0.1:*',\n 'https://*.digo-labs.com',\n ],\n },\n} as const;\n\nexport type AuthProject = keyof typeof AUTH_PROJECTS;\n\nexport type AuthTier = 'public' | 'user' | 'org' | 'admin';\n\nexport type SignInProvider = 'google';\n\nexport interface AccessTiers {\n read: AuthTier;\n write: AuthTier;\n}\n\nexport type AccessOperation = keyof AccessTiers;\n\nexport interface TableAccessRule extends AccessTiers {\n owner?: string;\n}\n\nexport const ORG_EMAIL_DOMAIN = 'productionclub.net';\n\nconst ADMIN_ROLE = 'admin';\n\nconst TIER_RANK: Record<AuthTier, number> = {\n public: 0,\n user: 1,\n org: 2,\n admin: 3,\n};\n\nexport interface AuthTierUser {\n email: string;\n emailVerified: boolean;\n role?: string | null;\n}\n\nexport class AuthTierHelpers {\n public static deriveTier(user: AuthTierUser | null | undefined): AuthTier {\n if (!user) return 'public';\n if (this.hasAdminRole(user.role)) return 'admin';\n if (this.isOrgUser(user)) return 'org';\n\n return 'user';\n }\n\n public static meetsTier(tier: AuthTier, required: AuthTier): boolean {\n if (!this.isTier(tier) || !this.isTier(required)) return false;\n\n return TIER_RANK[tier] >= TIER_RANK[required];\n }\n\n public static isTier(value: unknown): value is AuthTier {\n return typeof value === 'string' && Object.hasOwn(TIER_RANK, value);\n }\n\n private static hasAdminRole(role: string | null | undefined): boolean {\n if (!role) return false;\n\n return role.split(',').includes(ADMIN_ROLE);\n }\n\n private static isOrgUser(user: AuthTierUser): boolean {\n if (!user.emailVerified) return false;\n\n return user.email.toLowerCase().endsWith(`@${ORG_EMAIL_DOMAIN}`);\n }\n}\n"],"mappings":"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"}