mirror of
https://github.com/tabler/tabler-icons.git
synced 2025-01-18 05:08:29 +01:00
60 lines
1.2 KiB
JavaScript
60 lines
1.2 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
import { buildIcons } from '../../.build/build-icons.mjs'
|
|
|
|
const componentTemplate = ({
|
|
name,
|
|
children,
|
|
stringify
|
|
}) => {
|
|
return `\
|
|
<script lang="ts">
|
|
import Icon from '../Icon.svelte';
|
|
const iconNode = ${JSON.stringify(children)};
|
|
</script>
|
|
<Icon name="${name}" {...$$props} iconNode={iconNode}>
|
|
<slot/>
|
|
</Icon>
|
|
`;
|
|
};
|
|
|
|
const indexItemTemplate = ({
|
|
name,
|
|
namePascal
|
|
}) => `export { default as ${namePascal} } from './icons/${namePascal}.svelte';`
|
|
|
|
const typeDefinitionsTemplate = () => `/// <reference types="svelte" />
|
|
/// <reference types="svelte2tsx/svelte-jsx" />
|
|
import { SvelteComponentTyped } from "svelte";
|
|
|
|
interface IconProps extends Partial<svelte.JSX.SVGProps<SVGSVGElement>> {
|
|
color?: string
|
|
size?: number,
|
|
stroke?: number,
|
|
class?: string
|
|
}
|
|
|
|
interface IconEvents {
|
|
[evt: string]: CustomEvent<any>;
|
|
}
|
|
|
|
export type Icon = SvelteComponentTyped<IconProps, IconEvents, {}>
|
|
|
|
// Generated icons`
|
|
|
|
const indexTypeTemplate = ({
|
|
namePascal
|
|
}) => `export declare class ${namePascal} extends SvelteComponentTyped<IconProps, IconEvents, {}> {}`
|
|
|
|
|
|
buildIcons({
|
|
name: 'icons-svelte',
|
|
componentTemplate,
|
|
indexItemTemplate,
|
|
typeDefinitionsTemplate,
|
|
indexTypeTemplate,
|
|
extension: 'svelte',
|
|
pretty: false,
|
|
key: false
|
|
})
|