diff --git a/src/assets/icons/book.svg b/src/assets/icons/book.svg new file mode 100644 index 00000000..fd749ece --- /dev/null +++ b/src/assets/icons/book.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/chart.svg b/src/assets/icons/chart.svg new file mode 100644 index 00000000..0c8e42aa --- /dev/null +++ b/src/assets/icons/chart.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/git-merge.svg b/src/assets/icons/git-merge.svg new file mode 100644 index 00000000..b2d3c968 --- /dev/null +++ b/src/assets/icons/git-merge.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/image.svg b/src/assets/icons/image.svg new file mode 100644 index 00000000..9f24f683 --- /dev/null +++ b/src/assets/icons/image.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/note.svg b/src/assets/icons/note.svg new file mode 100644 index 00000000..dde7c3bb --- /dev/null +++ b/src/assets/icons/note.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/utils/editorLanguages.ts b/src/utils/editorLanguages.ts index d7f54171..921b00ad 100644 --- a/src/utils/editorLanguages.ts +++ b/src/utils/editorLanguages.ts @@ -11,7 +11,25 @@ export const LANGUAGE_CONFIGS: Record = { language: 'spring-boot', id: 'java', monacoLanguage: 'java', - fileExtensions: ['.java', '.xml', '.properties', '.yaml', '.yml'], + fileExtensions: [ + '.java', + '.xml', + '.properties', + '.yaml', + '.yml', + '.gradle', + '.gradle.kts', + '.sql', + '.jsp', + '.jspx', + '.ftl', + '.vm', + '.groovy', + '.kt', + '.kts', + '.conf', + '.toml', + ], defaultTheme: 'vs-dark', snippets: ['sysout', 'psvm', 'fori'], }, @@ -19,7 +37,31 @@ export const LANGUAGE_CONFIGS: Record = { language: 'react', id: 'typescript', monacoLanguage: 'typescript', - fileExtensions: ['.ts', '.tsx', '.js', '.jsx', '.json', '.css', '.scss'], + fileExtensions: [ + '.ts', + '.tsx', + '.js', + '.jsx', + '.json', + '.css', + '.scss', + '.sass', + '.less', + '.stylus', + '.postcss', + '.vue', + '.svelte', + '.mjs', + '.cjs', + '.d.ts', + '.mdx', + '.html', + '.htm', + '.env', + '.env.local', + '.env.development', + '.env.production', + ], defaultTheme: 'vs-dark', snippets: ['rfc', 'useState', 'useEffect'], }, @@ -27,7 +69,30 @@ export const LANGUAGE_CONFIGS: Record = { language: 'fastapi', id: 'python', monacoLanguage: 'python', - fileExtensions: ['.py', '.pyi', '.pyx', '.requirements.txt'], + fileExtensions: [ + '.py', + '.pyi', + '.pyx', + '.requirements.txt', + '.pyc', + '.pyo', + '.pyw', + '.ipynb', + '.toml', + '.cfg', + '.ini', + '.txt', + '.lock', + '.pipfile', + '.dockerfile', + '.dockerignore', + '.env', + '.jinja', + '.jinja2', + '.j2', + '.iml', + '.http', + ], defaultTheme: 'vs-dark', snippets: ['def', 'class', 'if', 'for'], }, diff --git a/src/utils/fileExtensions.ts b/src/utils/fileExtensions.ts index 56387469..ac5b5655 100644 --- a/src/utils/fileExtensions.ts +++ b/src/utils/fileExtensions.ts @@ -8,6 +8,13 @@ import articleIcon from '@/assets/icons/article.svg'; import slidersIcon from '@/assets/icons/sliders.svg'; import folderClosedIcon from '@/assets/icons/folder-closed.svg'; import folderOpenIcon from '@/assets/icons/folder-open.svg'; +import chartIcon from '@/assets/icons/chart.svg'; +import noteIcon from '@/assets/icons/note.svg'; +import lockIcon from '@/assets/icons/lock.svg'; +import archiveIcon from '@/assets/icons/archive.svg'; +import bookIcon from '@/assets/icons/book.svg'; +import imageIcon from '@/assets/icons/image.svg'; +import gitIcon from '@/assets/icons/git-merge.svg'; export const getLanguageFromFile = (fileName: string): string => { const extension = fileName.split('.').pop()?.toLowerCase(); @@ -19,6 +26,17 @@ export const getLanguageFromFile = (fileName: string): string => { properties: 'properties', yaml: 'yaml', yml: 'yaml', + gradle: 'groovy', + kts: 'kotlin', + sql: 'sql', + jsp: 'html', + jspx: 'xml', + ftl: 'html', + vm: 'html', + groovy: 'groovy', + kt: 'kotlin', + conf: 'ini', + toml: 'toml', // React/TypeScript ts: 'typescript', @@ -28,11 +46,36 @@ export const getLanguageFromFile = (fileName: string): string => { json: 'json', css: 'css', scss: 'scss', + sass: 'scss', + less: 'less', + stylus: 'stylus', + postcss: 'css', + vue: 'html', + svelte: 'html', + mjs: 'javascript', + cjs: 'javascript', + mdx: 'markdown', + htm: 'html', + env: 'properties', // Python/FastAPI py: 'python', pyi: 'python', pyx: 'python', + pyc: 'python', + pyo: 'python', + pyw: 'python', + ipynb: 'json', + cfg: 'ini', + ini: 'ini', + lock: 'yaml', + pipfile: 'toml', + dockerignore: 'plaintext', + jinja: 'html', + jinja2: 'html', + j2: 'html', + iml: 'xml', + http: 'plaintext', // 기타 - Monaco Editor 언어 ID에 맞춰 수정 md: 'markdown', @@ -40,6 +83,13 @@ export const getLanguageFromFile = (fileName: string): string => { html: 'html', dockerfile: 'dockerfile', gitignore: 'plaintext', + log: 'plaintext', + eslintrc: 'json', + prettierrc: 'json', + editorconfig: 'ini', + nvmrc: 'plaintext', + npmrc: 'ini', + svg: 'xml', }; return extensionMap[extension || ''] || 'plaintext'; @@ -55,6 +105,17 @@ export const getFileIcon = (fileName: string): string => { properties: slidersIcon, yaml: fileAltIcon, yml: fileAltIcon, + gradle: scriptIcon, + kts: scriptIcon, + sql: chartIcon, + jsp: codeIcon, + jspx: codeIcon, + ftl: noteIcon, + vm: noteIcon, + groovy: scriptIcon, + kt: codeIcon, + conf: slidersIcon, + toml: slidersIcon, // React/TypeScript ts: codeIcon, @@ -64,14 +125,47 @@ export const getFileIcon = (fileName: string): string => { json: fileAltIcon, css: colorsSwatchIcon, scss: colorsSwatchIcon, + sass: colorsSwatchIcon, + less: colorsSwatchIcon, + stylus: colorsSwatchIcon, + postcss: colorsSwatchIcon, + vue: codeIcon, + svelte: codeIcon, + mjs: scriptIcon, + cjs: scriptIcon, + mdx: articleIcon, + htm: codeIcon, + env: lockIcon, // Python/FastAPI py: scriptIcon, + pyc: archiveIcon, + pyo: archiveIcon, + pyw: scriptIcon, + ipynb: bookIcon, + cfg: slidersIcon, + ini: slidersIcon, + lock: lockIcon, + pipfile: fileAltIcon, + dockerignore: fileOffIcon, + jinja: noteIcon, + jinja2: noteIcon, + j2: noteIcon, + iml: slidersIcon, + http: scriptIcon, // 기타 md: articleIcon, txt: notesIcon, html: codeIcon, + log: notesIcon, + eslintrc: slidersIcon, + prettierrc: slidersIcon, + editorconfig: slidersIcon, + nvmrc: fileAltIcon, + npmrc: slidersIcon, + gitignore: gitIcon, + svg: imageIcon, }; return iconMap[extension || ''] || fileOffIcon;