import type { IconName } from '$shared/types/ui/icons';

/**
 * Comprehensive file type icon mapping - using Material Icons
 * This file contains mappings for 800+ file extensions and special filenames
 * Uses Material icons for all file types and programming languages
 */
export const fileIcons: Record<string, IconName> = {
	// === PROGRAMMING LANGUAGES ===
	
	// JavaScript & TypeScript Family
	'.js': 'material:javascript',
	'.jsx': 'material:react',
	'.ts': 'material:typescript',
	'.tsx': 'material:react-ts',
	'.mjs': 'material:javascript',
	'.cjs': 'material:javascript',
	'.es6': 'material:javascript',
	'.es': 'material:javascript',
	'.tsbuildinfo': 'material:typescript',
	
	// Frontend Frameworks & Libraries
	'.vue': 'material:vue',
	'.svelte': 'material:svelte',
	'.html': 'material:html',
	'.htm': 'material:html',
	'.xhtml': 'material:xml',
	
	// Stylesheets & Preprocessing
	'.css': 'material:css',
	'.scss': 'material:sass',
	'.sass': 'material:sass',
	'.less': 'material:less',
	'.styl': 'material:stylus',
	'.stylus': 'material:stylus',
	
	// Backend Languages - Popular
	'.py': 'material:python',
	'.pyw': 'material:python',
	'.pyi': 'material:python',
	'.pyc': 'material:python-misc',
	'.pyo': 'material:python-misc',
	'.java': 'material:java',
	'.class': 'material:javaclass',
	'.jar': 'material:jar',
	'.php': 'material:php',
	'.php3': 'material:php',
	'.php4': 'material:php',
	'.php5': 'material:php',
	'.phtml': 'material:php',
	'artisan': 'material:laravel',
	'.go': 'material:go',
	'.rs': 'material:rust',
	'.cpp': 'material:cpp',
	'.cxx': 'material:cpp',
	'.cc': 'material:cpp',
	'.c': 'material:c',
	'.h': 'material:c',
	'.hpp': 'material:hpp',
	'.hxx': 'material:hpp',
	'.cs': 'material:csharp',
	'.vb': 'material:document',
	'.rb': 'material:ruby',
	'.rbw': 'material:ruby',
	'.swift': 'material:swift',
	'.kt': 'material:kotlin',
	'.kts': 'material:kotlin',
	'.scala': 'material:scala',
	'.sc': 'material:scala',
	
	// Emerging & Modern Languages
	'.dart': 'material:dart',
	'.elm': 'material:elm',
	'.hs': 'material:haskell',
	'.lhs': 'material:haskell',
	'.ex': 'material:elixir',
	'.exs': 'material:elixir',
	'.erl': 'material:erlang',
	'.hrl': 'material:erlang',
	'.clj': 'material:clojure',
	'.cljs': 'material:clojure',
	'.cljc': 'material:clojure',
	'.fs': 'material:fsharp',
	'.fsi': 'material:fsharp',
	'.fsx': 'material:fsharp',
	'.ml': 'material:ocaml',
	'.mli': 'material:ocaml',
	'.r': 'material:r',
	'.R': 'material:r',
	'.rdata': 'material:r',
	'.rds': 'material:r',
	'.m': 'material:objective-c',
	'.pl': 'material:perl',
	'.pm': 'material:perl',
	'.lua': 'material:lua',
	'.jl': 'material:julia',
	'.nim': 'material:nim',
	'.nims': 'material:nim',
	'.zig': 'material:zig',
	'.asm': 'material:assembly',
	'.s': 'material:assembly',
	'.pas': 'material:pascal',
	'.pp': 'material:pascal',
	'.dpr': 'material:pascal',
	'.f': 'material:fortran',
	'.f90': 'material:fortran',
	'.f95': 'material:fortran',
	'.cob': 'material:cobol',
	'.cbl': 'material:cobol',
	'.ada': 'material:ada',
	'.adb': 'material:ada',
	'.ads': 'material:ada',
	'.cr': 'material:crystal',
	'.d': 'material:d',
	'.hx': 'material:haxe',
	'.re': 'material:reason',
	'.rei': 'material:reason',
	'.purs': 'material:purescript',
	
	// === SCRIPTS & SHELL ===
	'.sh': 'material:console',
	'.bash': 'material:console',
	'.zsh': 'material:console',
	'.fish': 'material:console',
	'.csh': 'material:console',
	'.tcsh': 'material:console',
	'.ksh': 'material:console',
	'.ps1': 'material:powershell',
	'.psm1': 'material:powershell',
	'.psd1': 'material:powershell',
	'.bat': 'material:console',
	'.cmd': 'material:console',
	
	// === DATA & CONFIG FORMATS ===
	'.json': 'material:json',
	'.jsonc': 'material:json',
	'.json5': 'material:json',
	'.xml': 'material:xml',
	'.xsd': 'material:xml',
	'.xsl': 'material:xml',
	'.xslt': 'material:xml',
	'.yml': 'material:yaml',
	'.yaml': 'material:yaml',
	'.toml': 'material:toml',
	'.ini': 'material:settings',
	'.cfg': 'material:settings',
	'.conf': 'material:settings',
	'.config': 'material:settings',
	'.properties': 'material:settings',
	
	// === API & SCHEMA FORMATS ===
	'.graphql': 'material:graphql',
	'.gql': 'material:graphql',
	'.proto': 'material:proto',
	'.thrift': 'material:apiblueprint',
	'.avro': 'material:apiblueprint',
	'.avsc': 'material:apiblueprint',
	'.avdl': 'material:apiblueprint',
	
	// === DATABASE ===
	'.sql': 'material:database',
	'.psql': 'material:database',
	'.mysql': 'material:database',
	'.sqlite': 'material:database',
	'.sqlite3': 'material:database',
	'.db': 'material:database',
	'.mdb': 'material:database',
	
	// === DOCUMENTATION ===
	'.md': 'material:markdown',
	'.markdown': 'material:markdown',
	'.mdown': 'material:markdown',
	'.mkd': 'material:markdown',
	'.mdx': 'material:mdx',
	'.txt': 'material:document',
	'.rst': 'material:document',
	'.asciidoc': 'material:asciidoc',
	'.adoc': 'material:asciidoc',
	'.org': 'material:document',
	
	// === MEDIA FILES ===
	// Images
	'.png': 'material:image',
	'.jpg': 'material:image',
	'.jpeg': 'material:image',
	'.gif': 'material:image',
	'.bmp': 'material:image',
	'.tiff': 'material:image',
	'.tif': 'material:image',
	'.webp': 'material:image',
	'.avif': 'material:image',
	'.apng': 'material:image',
	'.jfif': 'material:image',
	'.heic': 'material:image',
	'.heif': 'material:image',
	'.svg': 'material:svg',
	'.ico': 'material:image',
	'.icon': 'material:image',
	'.icns': 'material:image',
	'.psd': 'material:adobe-photoshop',
	'.ai': 'material:adobe-illustrator',
	'.eps': 'material:image',
	'.raw': 'material:image',
	'.cr2': 'material:image',
	'.nef': 'material:image',
	'.orf': 'material:image',
	'.sr2': 'material:image',
	
	// Videos
	'.mp4': 'material:video',
	'.avi': 'material:video',
	'.mov': 'material:video',
	'.wmv': 'material:video',
	'.flv': 'material:video',
	'.webm': 'material:video',
	'.mkv': 'material:video',
	'.m4v': 'material:video',
	'.3gp': 'material:video',
	'.mpg': 'material:video',
	'.mpeg': 'material:video',
	'.ogv': 'material:video',
	'.asf': 'material:video',
	'.rm': 'material:video',
	'.rmvb': 'material:video',
	'.vob': 'material:video',
	'.m2ts': 'material:video',
	'.3g2': 'material:video',
	
	// Audio
	'.mp3': 'material:audio',
	'.wav': 'material:audio',
	'.flac': 'material:audio',
	'.ogg': 'material:audio',
	'.m4a': 'material:audio',
	'.aac': 'material:audio',
	'.wma': 'material:audio',
	'.opus': 'material:audio',
	'.oga': 'material:audio',
	'.weba': 'material:audio',
	'.aiff': 'material:audio',
	'.aif': 'material:audio',
	'.ape': 'material:audio',
	'.au': 'material:audio',
	'.ra': 'material:audio',
	'.mid': 'material:audio',
	'.midi': 'material:audio',
	'.kar': 'material:audio',
	
	// === ARCHIVE & COMPRESSION ===
	'.zip': 'material:zip',
	'.rar': 'material:zip',
	'.7z': 'material:zip',
	'.tar': 'material:zip',
	'.gz': 'material:zip',
	'.bz2': 'material:zip',
	'.xz': 'material:zip',
	'.lz': 'material:zip',
	'.lzma': 'material:zip',
	'.Z': 'material:zip',
	'.cab': 'material:zip',
	'.iso': 'material:zip',
	'.dmg': 'material:zip',
	'.img': 'material:zip',
	'.deb': 'material:zip',
	'.rpm': 'material:zip',
	'.pkg': 'material:zip',
	'.msi': 'material:zip',
	'.apk': 'material:android',
	'.ipa': 'material:zip',
	
	// === OFFICE DOCUMENTS ===
	'.pdf': 'material:pdf',
	'.doc': 'material:word',
	'.docx': 'material:word',
	'.docm': 'material:word',
	'.dot': 'material:word',
	'.dotx': 'material:word',
	'.dotm': 'material:word',
	'.odt': 'material:word',
	'.rtf': 'material:word',
	'.wps': 'material:word',
	'.xls': 'material:document',
	'.xlsx': 'material:document',
	'.xlsm': 'material:document',
	'.xlsb': 'material:document',
	'.xlt': 'material:document',
	'.xltx': 'material:document',
	'.xltm': 'material:document',
	'.xlam': 'material:document',
	'.ods': 'material:document',
	'.csv': 'material:table',
	'.tsv': 'material:table',
	'.ppt': 'material:powerpoint',
	'.pptx': 'material:powerpoint',
	'.pptm': 'material:powerpoint',
	'.pps': 'material:powerpoint',
	'.ppsx': 'material:powerpoint',
	'.ppsm': 'material:powerpoint',
	'.pot': 'material:powerpoint',
	'.potx': 'material:powerpoint',
	'.potm': 'material:powerpoint',
	'.odp': 'material:powerpoint',
	
	// === ENVIRONMENT & CONFIGURATION ===
	'.env': 'material:settings',
	'.env.example': 'material:settings',
	'.env.local': 'material:settings',
	'.env.development': 'material:settings',
	'.env.production': 'material:settings',
	'.env.test': 'material:settings',
	'.envrc': 'material:settings',
	'.flaskenv': 'material:settings',
	
	// === VERSION CONTROL ===
	'.gitignore': 'material:git',
	'.gitattributes': 'material:git',
	'.gitmodules': 'material:git',
	'.gitkeep': 'material:git',
	'.hgignore': 'material:document',
	'.bzrignore': 'material:document',
	'.svnignore': 'material:document',
	'.gitmessage': 'material:git',
	'.gitconfig': 'material:git',
	
	// === PACKAGE MANAGERS & BUILD TOOLS ===
	'.npmrc': 'material:npm',
	'.nvmrc': 'material:nodejs',
	'.yarnrc': 'material:yarn',
	'.yarnrc.yml': 'material:yarn',
	'yarn.lock': 'material:yarn',
	'package-lock.json': 'material:npm',
	'pnpm-lock.yaml': 'material:pnpm',
	'bun.lockb': 'material:bun',
	'.pnpmfile.cjs': 'material:pnpm',
	'.pnpmfile.js': 'material:pnpm',
	'pnpm-workspace.yaml': 'material:pnpm',
	'Pipfile': 'material:python',
	'Pipfile.lock': 'material:python',
	'pyproject.toml': 'material:python',
	'poetry.lock': 'material:python',
	'requirements.txt': 'material:python',
	'requirements-dev.txt': 'material:python',
	'environment.yml': 'material:document',
	'Gemfile': 'material:ruby',
	'Gemfile.lock': 'material:ruby',
	'Rakefile': 'material:ruby',
	'Podfile': 'material:document',
	'Cartfile': 'material:document',
	'Cargo.toml': 'material:rust',
	'Cargo.lock': 'material:rust',
	'composer.json': 'material:php',
	'composer.lock': 'material:php',
	'build.gradle': 'material:gradle',
	'build.gradle.kts': 'material:gradle',
	'settings.gradle': 'material:gradle',
	'pom.xml': 'material:maven',
	'build.xml': 'material:document',
	'build.sbt': 'material:document',
	'project.clj': 'material:document',
	
	// === LINTING & FORMATTING ===
	'.eslintrc': 'material:eslint',
	'.eslintrc.js': 'material:eslint',
	'.eslintrc.json': 'material:eslint',
	'.eslintrc.yml': 'material:eslint',
	'.eslintrc.yaml': 'material:eslint',
	'.eslintignore': 'material:eslint',
	'.prettierrc': 'material:prettier',
	'.prettierrc.js': 'material:prettier',
	'.prettierrc.json': 'material:prettier',
	'.prettierrc.yml': 'material:prettier',
	'.prettierrc.yaml': 'material:prettier',
	'.prettierignore': 'material:prettier',
	'.stylelintrc': 'material:stylelint',
	'.stylelintrc.js': 'material:stylelint',
	'.stylelintrc.json': 'material:stylelint',
	'.stylelintrc.yml': 'material:stylelint',
	'.stylelintrc.yaml': 'material:stylelint',
	'.stylelintignore': 'material:stylelint',
	'.editorconfig': 'material:editorconfig',
	'commitlint.config.js': 'material:commitlint',
	'.commitlintrc': 'material:commitlint',
	'.commitlintrc.js': 'material:commitlint',
	'.commitlintrc.json': 'material:commitlint',
	'.huskyrc': 'material:husky',
	'.huskyrc.js': 'material:husky',
	'.huskyrc.json': 'material:husky',
	'.lintstagedrc': 'material:husky',
	'.lintstagedrc.js': 'material:husky',
	'.lintstagedrc.json': 'material:husky',
	'.pre-commit-config.yaml': 'material:pre-commit',
	
	// === BUILD TOOLS & BUNDLERS ===
	'webpack.config.js': 'material:webpack',
	'webpack.config.ts': 'material:webpack',
	'webpack.dev.js': 'material:webpack',
	'webpack.prod.js': 'material:webpack',
	'rollup.config.js': 'material:rollup',
	'rollup.config.ts': 'material:rollup',
	'vite.config.js': 'material:vite',
	'vite.config.ts': 'material:vite',
	'babel.config.js': 'material:babel',
	'babel.config.json': 'material:babel',
	'.babelrc': 'material:babel',
	'.babelrc.js': 'material:babel',
	'.babelrc.json': 'material:babel',
	'.parcelrc': 'material:parcel',
	
	// === TESTING FRAMEWORKS ===
	'jest.config.js': 'material:jest',
	'jest.config.ts': 'material:jest',
	'jest.config.json': 'material:jest',
	'.jestrc': 'material:jest',
	'.jestrc.js': 'material:jest',
	'.jestrc.json': 'material:jest',
	'mocha.opts': 'material:mocha',
	'.mocharc.js': 'material:mocha',
	'.mocharc.json': 'material:mocha',
	'.mocharc.yml': 'material:mocha',
	'.mocharc.yaml': 'material:mocha',
	'cypress.config.js': 'material:cypress',
	'cypress.config.ts': 'material:cypress',
	'cypress.json': 'material:cypress',
	'playwright.config.js': 'material:playwright',
	'playwright.config.ts': 'material:playwright',
	'.storybook': 'material:storybook',
	'storybook': 'material:storybook',
	
	// === CONTAINER & DEPLOYMENT ===
	'Dockerfile': 'material:docker',
	'docker-compose.yml': 'material:docker',
	'docker-compose.yaml': 'material:docker',
	'docker-compose.override.yml': 'material:docker',
	'.dockerignore': 'material:docker',
	'Vagrantfile': 'material:vagrant',
	'.terraform': 'material:terraform',
	'main.tf': 'material:terraform',
	'variables.tf': 'material:terraform',
	'outputs.tf': 'material:terraform',
	'terraform.tfvars': 'material:terraform',
	'Chart.yaml': 'material:helm',
	'values.yaml': 'material:helm',
	'ansible.cfg': 'material:settings',
	'playbook.yml': 'material:settings',
	'inventory': 'material:settings',
	'Jenkinsfile': 'material:jenkins',
	'Makefile': 'material:makefile',
	'makefile': 'material:makefile',
	
	// === CLOUD & CI/CD ===
	'.gitlab-ci.yml': 'material:gitlab',
	'.travis.yml': 'material:travis',
	'appveyor.yml': 'material:appveyor',
	'.circleci': 'material:circleci',
	'azure-pipelines.yml': 'material:azure-pipelines',
	'buildspec.yml': 'material:settings',
	'cloudbuild.yaml': 'material:gcp',
	'vercel.json': 'material:vercel',
	'netlify.toml': 'material:netlify',
	'_redirects': 'material:netlify',
	'_headers': 'material:netlify',
	'Procfile': 'material:heroku',
	'app.json': 'material:heroku',
	'heroku.yml': 'material:heroku',
	
	// === DEVELOPMENT ENVIRONMENTS ===
	'.gitpod.yml': 'material:gitpod',
	'.devcontainer': 'material:settings',
	'devcontainer.json': 'material:settings',
	'.codespaces': 'material:settings',
	
	// === FRAMEWORK CONFIG FILES ===
	'next.config.js': 'material:next',
	'next.config.mjs': 'material:next',
	'nuxt.config.js': 'material:nuxt',
	'nuxt.config.ts': 'material:nuxt',
	'gatsby-config.js': 'material:gatsby',
	'gatsby-node.js': 'material:gatsby',
	'gatsby-browser.js': 'material:gatsby',
	'gatsby-ssr.js': 'material:gatsby',
	'angular.json': 'material:angular',
	'.angular-cli.json': 'material:angular',
	'ember-cli-build.js': 'material:ember',
	'.ember-cli': 'material:ember',
	'svelte.config.js': 'material:svelte',
	'svelte.config.mjs': 'material:svelte',
	
	// === SPECIAL PROJECT FILES ===
	'README': 'material:readme',
	'README.md': 'material:readme',
	'README.txt': 'material:readme',
	'READ_ME': 'material:readme',
	'CHANGELOG': 'material:changelog',
	'CHANGELOG.md': 'material:changelog',
	'HISTORY': 'material:changelog',
	'HISTORY.md': 'material:changelog',
	'LICENSE': 'material:certificate',
	'LICENSE.md': 'material:certificate',
	'LICENSE.txt': 'material:certificate',
	'COPYING': 'material:certificate',
	'NOTICE': 'material:certificate',
	'AUTHORS': 'material:authors',
	'AUTHORS.md': 'material:authors',
	'CONTRIBUTORS': 'material:contributing',
	'CONTRIBUTORS.md': 'material:contributing',
	'CONTRIBUTING': 'material:contributing',
	'CONTRIBUTING.md': 'material:contributing',
	'CODE_OF_CONDUCT': 'material:conduct',
	'CODE_OF_CONDUCT.md': 'material:conduct',
	'SECURITY': 'material:certificate',
	'SECURITY.md': 'material:certificate',
	'TODO': 'material:todo',
	'TODO.md': 'material:todo',
	'TODO.txt': 'material:todo',
	'ROADMAP': 'material:roadmap',
	'ROADMAP.md': 'material:roadmap',
	'FUNDING.yml': 'material:github-sponsors',
	'.github': 'material:github-actions-workflow',
	'CODEOWNERS': 'material:codeowners',
	
	// === MISC FILES ===
	'.log': 'material:log',
	'.pid': 'material:settings',
	'.lock': 'material:lock',
	'.tmp': 'material:settings',
	'.temp': 'material:settings',
	'.cache': 'material:settings',
	'.DS_Store': 'material:settings',
	'Thumbs.db': 'material:settings',
	'.cert': 'material:certificate',
	'.crt': 'material:certificate',
	'.pem': 'material:certificate',
	'.key': 'material:key',
	'.p12': 'material:certificate',
	'.pfx': 'material:certificate',
	'.der': 'material:certificate',
	'.csr': 'material:certificate',
	'.jks': 'material:certificate',
	'.keystore': 'material:certificate',
	'.truststore': 'material:certificate',

	// === ADDITIONAL WEB & FRONTEND ===
	'.wasm': 'material:webassembly',
	'.webmanifest': 'material:favicon',
	'.manifest': 'material:favicon',
	'.appcache': 'material:settings',
	'.browserconfig.xml': 'material:settings',
	
	// === ADDITIONAL SCRIPT TYPES ===
	'.coffee': 'material:coffee',
	'.litcoffee': 'material:coffee',
	'.cson': 'material:coffee',
	'.applescript': 'material:applescript',
	'.scpt': 'material:applescript',
	
	// === TEMPLATE ENGINES ===
	'.pug': 'material:pug',
	'.jade': 'material:pug',
	'.handlebars': 'material:handlebars',
	'.hbs': 'material:handlebars',
	'.mustache': 'material:handlebars',
	'.twig': 'material:twig',
	'.liquid': 'material:liquid',
	'.njk': 'material:nunjucks',
	'.nunjucks': 'material:nunjucks',
	
	// === ADDITIONAL DATA FORMATS ===
	'.hjson': 'material:hjson',
	'.jsonld': 'material:json',
	'.jsonnet': 'material:json',
	'.libsonnet': 'material:json',
	
	// === SPECIALIZED FILES ===
	'.astro': 'material:astro',
	'.mojo': 'material:mojo',
	'.🔥': 'material:mojo',
	'.grain': 'material:grain',
	'.toit': 'material:settings',
	'.vlang': 'material:vlang',
	'.v': 'material:vlang',
	'.odin': 'material:odin',
	
	// === GAME DEVELOPMENT ===
	'.gd': 'material:godot',
	'.tres': 'material:godot-assets',
	'.tscn': 'material:godot-assets',
	'.unity': 'material:unity',
	'.unitypackage': 'material:unity',
	
	// === MOBILE DEVELOPMENT ===
	'.gradle': 'material:gradle',
	'.gradle.kts': 'material:gradle',
	'.xcodeproj': 'material:settings',
	'.xcworkspace': 'material:settings',
	'.storyboard': 'material:settings',
	'.xib': 'material:settings',
	
	// === BLOCKCHAIN & SMART CONTRACTS ===
	'.sol': 'material:solidity',
	'.vy': 'material:solidity',
	'.vyper': 'material:solidity',
	'.move': 'material:solidity',
	
	// === CONFIGURATION & TOOL FILES ===
	'tsconfig.json': 'material:tsconfig',
	'jsconfig.json': 'material:jsconfig',
	'package.json': 'material:nodejs',
	'bower.json': 'material:bower',
	'component.json': 'material:nodejs',
	'deno.json': 'material:deno',
	'deno.jsonc': 'material:deno',
	'.denoflare': 'material:deno',
	'wrangler.toml': 'material:wrangler',
	'turbo.json': 'material:turborepo',
	'nx.json': 'material:nx',
	'workspace.json': 'material:nx',
	'project.json': 'material:nx',
	'rush.json': 'material:nodejs',
	'lerna.json': 'material:lerna',
	'bun.toml': 'material:bun',
	'bunfig.toml': 'material:bun',
	
	// === DATABASE & ORM ===
	'schema.prisma': 'material:prisma',
	'.prisma': 'material:prisma',
	'drizzle.config.ts': 'material:drizzle',
	'drizzle.config.js': 'material:drizzle',
	'sequelize.config.js': 'material:sequelize',
	'.sequelizerc': 'material:sequelize',
	
	// === TESTING SPECIFIC ===
	'vitest.config.ts': 'material:vitest',
	'vitest.config.js': 'material:vitest',
	'vite.config.test.ts': 'material:vitest',
	'karma.conf.js': 'material:karma',
	'protractor.conf.js': 'material:protractor',
	'webdriver.conf.js': 'material:settings',
	'wdio.conf.js': 'material:settings',
	'wallaby.js': 'material:wallaby',
	'wallaby.json': 'material:wallaby',
	'ava.config.js': 'material:settings',
	'tape.config.js': 'material:settings',
	
	// === DESKTOP APPLICATION ===
	'electron.js': 'material:nodejs',
	'main.electron.js': 'material:nodejs',
	'tauri.conf.json': 'material:tauri',
	'Tauri.toml': 'material:tauri',
	'capacitor.config.ts': 'material:capacitor',
	'capacitor.config.json': 'material:capacitor',
	
	// === SECURITY & SCANNING ===
	'.snyk': 'material:snyk',
	'snyk.json': 'material:snyk',
	'sonar-project.properties': 'material:sonarcloud',
	'codecov.yml': 'material:codecov',
	'codecov.yaml': 'material:codecov',
	'.codecov.yml': 'material:codecov',
	'.codeclimate.yml': 'material:code-climate',
	'.rnd': 'material:settings',
	
	// === SERVERLESS & EDGE ===
	'serverless.yml': 'material:serverless',
	'serverless.yaml': 'material:serverless',
	'serverless.json': 'material:serverless',
	'serverless.ts': 'material:serverless',
	'functions.js': 'material:serverless',
	'handler.js': 'material:serverless',
	'_worker.js': 'material:javascript',
	'worker.js': 'material:javascript',
	
	// === DOCUMENTATION GENERATORS ===
	'docusaurus.config.js': 'material:document',
	'docs.config.js': 'material:document',
	'typedoc.json': 'material:document',
	'typedoc.js': 'material:document',
	'jsdoc.json': 'material:document',
	'jsdoc.conf.js': 'material:document',
	
	// === GRAPHICS & DESIGN ===
	'.sketch': 'material:document',
	'.fig': 'material:document',
	'.figma': 'material:document',
	'.xd': 'material:document',
	'.afdesign': 'material:document',
	'.afphoto': 'material:document',
	'.afpub': 'material:document',
	'.glyphs': 'material:document',
	
	// === 3D & MODELING ===
	'.blend': 'material:document',
	'.fbx': 'material:document',
	'.obj': 'material:document',
	'.dae': 'material:document',
	'.3ds': 'material:document',
	'.max': 'material:document',
	'.ma': 'material:document',
	'.mb': 'material:document',
	'.scad': 'material:document',
	
	// === AUDIO PRODUCTION ===
	'.aup': 'material:document',
	'.aup3': 'material:document',
	'.logic': 'material:document',
	'.als': 'material:document',
	'.flp': 'material:document',
	'.reason': 'material:document',
	
	// === FONT FILES ===
	'.otf': 'material:font',
	'.ttf': 'material:font',
	'.woff': 'material:font',
	'.woff2': 'material:font',
	'.eot': 'material:font',
	'.fnt': 'material:font',
	'.fon': 'material:font',
	
	// === ADDITIONAL COMMON FILES ===
	'.bak': 'material:document',
	'.backup': 'material:document',
	'.swp': 'material:document',
	'.swo': 'material:document',
	'.out': 'material:document',
	'.err': 'material:document',
	'.accdb': 'material:document',
	'.localized': 'material:document',
	
	// === ADDITIONAL MODERN EXTENSIONS ===
	'.mts': 'material:typescript',
	'.cts': 'material:typescript', 
	'.d.ts': 'material:typescript-def',
	'.d.mts': 'material:typescript-def',
	'.d.cts': 'material:typescript-def',
	'.stories.js': 'material:storybook',
	'.stories.ts': 'material:storybook',
	'.stories.jsx': 'material:storybook',
	'.stories.tsx': 'material:storybook',
	'.story.js': 'material:storybook',
	'.story.ts': 'material:storybook',
	'.story.jsx': 'material:storybook',
	'.story.tsx': 'material:storybook',
	'.bench.js': 'material:bench-js',
	'.bench.ts': 'material:bench-ts',
	'.bench.jsx': 'material:bench-jsx',
	'.test.js': 'material:test-js',
	'.test.ts': 'material:test-ts',
	'.test.jsx': 'material:test-jsx',
	'.spec.js': 'material:test-js',
	'.spec.ts': 'material:test-ts',
	'.spec.jsx': 'material:test-jsx',
	'.e2e.js': 'material:test-js',
	'.e2e.ts': 'material:test-ts',
	'.e2e.jsx': 'material:test-jsx',
	'.mdsvex': 'material:mdsvex',
	'.svx': 'material:mdsvex',
	'.qwik.ts': 'material:qwik',
	'.qwik.tsx': 'material:qwik',
	'.remix.ts': 'material:remix',
	'.remix.tsx': 'material:remix'
};

/**
 * Get the appropriate icon for a file based on its name and type
 */
export function getFileIcon(fileName: string): IconName {
	// First try exact filename match (for files like README, Dockerfile, etc.)
	if (fileIcons[fileName]) {
		return fileIcons[fileName];
	}
	
	// Then try extension-based matching
	const extension = fileName.substring(fileName.lastIndexOf('.'));
	if (fileIcons[extension]) {
		return fileIcons[extension];
	}
	
	// Fallback to generic file icon
	return 'material:document';
}