diff --git a/src/templates/getAngularCode.ts b/src/templates/getAngularCode.ts new file mode 100644 index 0000000..c69ae11 --- /dev/null +++ b/src/templates/getAngularCode.ts @@ -0,0 +1,26 @@ +interface AngularComponentParams { + svgContent: string; + componentName: string; +} + +export function getAngularCode(params: AngularComponentParams): string { + const updatedSvgContent = params.svgContent.replace( + /]*)>/, + `` + ); + + return ` +import { Component, Input } from '@angular/core'; + +@Component({ + selector: 'svg-${params.componentName}', + standalone: true, + template: \` + ${updatedSvgContent.trim()} + \`, +}) +export class ${params.componentName}Component { + @Input({ required: true }) size: { width: number; height: number }; +} +`; +} diff --git a/src/utils/getReactComponentCode.ts b/src/templates/getReactCode.ts similarity index 68% rename from src/utils/getReactComponentCode.ts rename to src/templates/getReactCode.ts index 258fb8e..b7f3cb5 100644 --- a/src/utils/getReactComponentCode.ts +++ b/src/templates/getReactCode.ts @@ -1,11 +1,11 @@ -interface iComponentCode { +interface ReactComponentParams { code: string; name: string; typescript: boolean; } -export const getReactComponentCode = async ( - params: iComponentCode +export const getReactCode = async ( + params: ReactComponentParams ): Promise<{ data?: string; error?: string }> => { try { const getCode = await fetch('/api/svgs/svgr', { @@ -18,6 +18,6 @@ export const getReactComponentCode = async ( const data = await getCode.json(); return data; } catch (error) { - return { error: 'An error has ocurred. Try again.' }; + return { error: `⚠️ getReactCode: An error has ocurred - ${error}` }; } }; diff --git a/src/templates/getSource.ts b/src/templates/getSource.ts new file mode 100644 index 0000000..f51741d --- /dev/null +++ b/src/templates/getSource.ts @@ -0,0 +1,9 @@ +interface SourceParams { + url: string | undefined; +} + +export const getSource = async (params: SourceParams) => { + const response = await fetch(params.url || ''); + const content = await response.text(); + return content; +}; diff --git a/src/templates/getSvelteCode.ts b/src/templates/getSvelteCode.ts new file mode 100644 index 0000000..3ae9344 --- /dev/null +++ b/src/templates/getSvelteCode.ts @@ -0,0 +1,15 @@ +import { parseSvgContent } from '@/utils/parseSvgContent'; + +interface SvelteComponentParams { + lang: string; + content: string; +} + +export const getSvelteCode = (params: SvelteComponentParams) => { + const { templateContent, componentStyle } = parseSvgContent(params.content, 'Svelte'); + return ` + ${templateContent} + + ${componentStyle} + `; +}; diff --git a/src/templates/getVueCode.ts b/src/templates/getVueCode.ts new file mode 100644 index 0000000..2a8c9b7 --- /dev/null +++ b/src/templates/getVueCode.ts @@ -0,0 +1,17 @@ +import { parseSvgContent } from '@/utils/parseSvgContent'; + +interface VueComponentParams { + lang: string; + content: string; +} + +export const getVueCode = (params: VueComponentParams) => { + const { templateContent, componentStyle } = parseSvgContent(params.content, 'Vue'); + return ` + + + ${componentStyle} + `; +}; diff --git a/src/utils/componentTemplate.ts b/src/utils/componentTemplate.ts deleted file mode 100644 index 8dbb5bb..0000000 --- a/src/utils/componentTemplate.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { parseSvgContent } from './parseSvgContent'; - -export const componentTemplate = (lang: string, content: string, framework: 'Vue' | 'Svelte') => { - const { templateContent, componentStyle } = parseSvgContent(content, framework); - - if (framework === 'Vue') { - return ` - - - ${componentStyle} - `; - } else { - return ` - ${templateContent} - -${componentStyle} - `; - } -}; \ No newline at end of file diff --git a/src/utils/generateAngularComponent.ts b/src/utils/generateAngularComponent.ts deleted file mode 100644 index 1644c88..0000000 --- a/src/utils/generateAngularComponent.ts +++ /dev/null @@ -1,28 +0,0 @@ -export function generateAngularComponent(svgContent: string, componentName: string): string { - const updatedSvgContent = svgContent.replace( - /]*)>/, - `` - ); - - return ` -/** - * ------------------------------------------------------------------------- - * This Angular standalone component was generated by svgl.app - * 🧩 A beautiful library with SVG logos - * ------------------------------------------------------------------------- - */ - -import { Component, Input } from '@angular/core'; - -@Component({ - selector: 'svg-${componentName}', - standalone: true, - template: \` - ${updatedSvgContent.trim()} - \`, -}) -export class ${componentName}Component { - @Input({ required: true }) size: { width: number; height: number }; -} -`; -} diff --git a/src/utils/getSvgContent.ts b/src/utils/getSvgContent.ts deleted file mode 100644 index 664fc9e..0000000 --- a/src/utils/getSvgContent.ts +++ /dev/null @@ -1,5 +0,0 @@ -export const getSvgContent = async (url: string | undefined) => { - const response = await fetch(url || ''); - const content = await response.text(); - return content; -};