UNPKG

svelte-fa

Version:

Tiny FontAwesome component for Svelte

321 lines (271 loc) 9.57 kB
# svelte-fa [![npm][badge-version]][npm] [![bundle size][badge-size]][bundlephobia] [![npm downloads][badge-downloads]][npm] [![license][badge-license]][license] [![github][badge-issues]][github] [![build][badge-build]][workflows] [![coverage][badge-coverage]][coveralls] Tiny [FontAwesome][fontawesome] component for [Svelte][svelte]. * FontAwesome version 5 and 6 * FontAwesome svg icons * Tree-shakable, only import used icons * No CSS file required * FontAwesome layering * FontAwesome duotone icons [Documents and examples][doc]. ## Installation ```shell npm install svelte-fa ``` Install FontAwesome icons via [official packages][fontawesome-npm], for example: ```shell npm install @fortawesome/free-solid-svg-icons npm install @fortawesome/free-brands-svg-icons ``` Icons gallery: [FontAwesome icons][fontawesome-icons] ### Work with [Sapper][sapper] You may need to install the component as a devDependency: ```shell npm install svelte-fa -D ``` ### Work with [SvelteKit][sveltekit]/[Vite][vite] You may need to import the component explicitly as below: ```js import Fa from 'svelte-fa/dist/fa.svelte' import { faCaretDown, faCaretUp } from '@fortawesome/free-solid-svg-icons/index.es' ``` When using typescript with SvelteKit/Vite, you may also needed to add type definitions that redirect to the non-`index.es` export: ```ts // app.d.ts declare module '@fortawesome/pro-solid-svg-icons/index.es' { export * from '@fortawesome/pro-solid-svg-icons'; } ``` ## Usage ```html <script> import Fa from 'svelte-fa' import { faFlag } from '@fortawesome/free-solid-svg-icons' import { faGithub } from '@fortawesome/free-brands-svg-icons'; </script> <Fa icon={faFlag} /> <Fa icon={faGithub} /> ``` ## `Fa` Properties ```html <Fa icon={faFlag} class="bg-gold" size="2x" color="#ff0000" fw pull="left" scale={1.2} translateX={0.2} translateY={0.2} rotate={90} flip="horizontal" spin pulse /> ``` * `icon`: icon from [FontAwesome packages][fontawesome-npm], for example: `@fortawesome/free-solid-svg-icons`, icons gallery: [FontAwesome icons][fontawesome-icons] * `class`: `string` values `${your preffered any css class}` * `size`: `string` values `xs`, `sm`, `lg` or `2x`, `3x`, `4x`, ..., `${number}x` * `color`: `string` icon color, default `currentColor` * `fw`: `boolean` fixed width * `pull`: `string` values `left`, `right` * `scale`: `number | string` transform scale, unit is `em`, default `1` * `translateX`: `number | string` transform position X, unit is `em`, default `0` * `translateY`: `number | string` transform position Y, unit is `em`, default `0` * `flip`: `string` values `horizontal`, `vertical`, `both` * `rotate`: `number | string` values `90`, `180`, `270`, `30`, `-30` ... * `spin`: `boolean` spin icons * `pulse`: `boolean` pulse spin icons ## Layering &amp; Text ```js import Fa, { FaLayers, FaLayersText, } from 'svelte-fa'; ``` ```html <FaLayers size="4x" pull="left" > <Fa icon={faCertificate} /> <FaLayersText scale={0.25} rotate={-30} color="white" style="font-weight: 900" > NEW </FaLayersText> </FaLayers> ``` ### `FaLayers` Properties * `size`: `string` values `xs`, `sm`, `lg` or `2x`, `3x`, `4x`, ..., `${number}x` * `pull`: `string` values `left`, `right` ### `FaLayersText` Properties * `size`: `string` values `xs`, `sm`, `lg` or `2x`, `3x`, `4x`, ..., `${number}x` * `color`: `string` icon color, default `currentColor` * `scale`: `number | string` transform scale, unit is `em`, default `1` * `translateX`: `number | string` transform position X, unit is `em`, default `0` * `translateY`: `number | string` transform position Y, unit is `em`, default `0` * `flip`: `string` values `horizontal`, `vertical`, `both` * `rotate`: `number | string` values `90`, `180`, `270`, `30`, `-30` ... ## Duotone Icons ```html <script> import Fa from 'svelte-fa' import { faFlag } from '@fortawesome/pro-duotone-svg-icons' </script> <Fa icon={faFlag} primaryColor="red" secondaryColor="#000000" primaryOpacity={0.8} secondaryOpacity={0.6} swapOpacity /> ``` ### Duotone Icons Theme ```html <script> import Fa from 'svelte-fa' import { faFlag } from '@fortawesome/pro-duotone-svg-icons' const theme = { primaryColor: 'red', secondaryColor: '#000000', primaryOpacity: 0.8, secondaryOpacity: 0.6, } </script> <Fa icon={faFlag} {...theme} /> ``` ## Contributors <!-- readme: collaborators,contributors -start --> <table> <tr> <td align="center"> <a href="https://github.com/Cweili"> <img src="https://avatars.githubusercontent.com/u/2128450?v=4" width="100;" alt="Cweili"/> <br /> <sub><b>Cweili</b></sub> </a> </td> <td align="center"> <a href="https://github.com/marekdedic"> <img src="https://avatars.githubusercontent.com/u/3134692?v=4" width="100;" alt="marekdedic"/> <br /> <sub><b>Marek Dědič</b></sub> </a> </td> <td align="center"> <a href="https://github.com/gtm-nayan"> <img src="https://avatars.githubusercontent.com/u/50981692?v=4" width="100;" alt="gtm-nayan"/> <br /> <sub><b>Gtmnayan</b></sub> </a> </td> <td align="center"> <a href="https://github.com/ItzaMi"> <img src="https://avatars.githubusercontent.com/u/30603437?v=4" width="100;" alt="ItzaMi"/> <br /> <sub><b>Rui Sousa</b></sub> </a> </td> <td align="center"> <a href="https://github.com/theodorejb"> <img src="https://avatars.githubusercontent.com/u/3053271?v=4" width="100;" alt="theodorejb"/> <br /> <sub><b>Theodore Brown</b></sub> </a> </td> <td align="center"> <a href="https://github.com/msanguineti"> <img src="https://avatars.githubusercontent.com/u/19243840?v=4" width="100;" alt="msanguineti"/> <br /> <sub><b>Mirco Sanguineti</b></sub> </a> </td></tr> <tr> <td align="center"> <a href="https://github.com/RealA10N"> <img src="https://avatars.githubusercontent.com/u/23400213?v=4" width="100;" alt="RealA10N"/> <br /> <sub><b>Alon Krymgand</b></sub> </a> </td> <td align="center"> <a href="https://github.com/connercsbn"> <img src="https://avatars.githubusercontent.com/u/65339198?v=4" width="100;" alt="connercsbn"/> <br /> <sub><b>Conner</b></sub> </a> </td> <td align="center"> <a href="https://github.com/prokawsar"> <img src="https://avatars.githubusercontent.com/u/9526172?v=4" width="100;" alt="prokawsar"/> <br /> <sub><b>Kawsar Ahmed</b></sub> </a> </td> <td align="center"> <a href="https://github.com/mvolkmann"> <img src="https://avatars.githubusercontent.com/u/79312?v=4" width="100;" alt="mvolkmann"/> <br /> <sub><b>Mark Volkmann</b></sub> </a> </td> <td align="center"> <a href="https://github.com/ModischFabrications"> <img src="https://avatars.githubusercontent.com/u/25404728?v=4" width="100;" alt="ModischFabrications"/> <br /> <sub><b>Robin Modisch</b></sub> </a> </td> <td align="center"> <a href="https://github.com/RemiKalbe"> <img src="https://avatars.githubusercontent.com/u/8604600?v=4" width="100;" alt="RemiKalbe"/> <br /> <sub><b>Rémi Kalbe</b></sub> </a> </td></tr> <tr> <td align="center"> <a href="https://github.com/hawk93"> <img src="https://avatars.githubusercontent.com/u/3786547?v=4" width="100;" alt="hawk93"/> <br /> <sub><b>Null</b></sub> </a> </td></tr> </table> <!-- readme: collaborators,contributors -end --> [fontawesome-icons]: https://fontawesome.com/icons [fontawesome]: https://fontawesome.com/ [fontawesome-npm]: https://www.npmjs.com/search?q=%40fortawesome%20svg%20icons [svelte]: https://svelte.dev/ [sapper]: https://sapper.svelte.dev/ [sveltekit]: https://kit.svelte.dev/ [vite]: https://www.npmjs.com/package/vite [doc]: https://cweili.github.io/svelte-fa/ [badge-version]: https://img.shields.io/npm/v/svelte-fa.svg [badge-downloads]: https://img.shields.io/npm/dt/svelte-fa.svg [npm]: https://www.npmjs.com/package/svelte-fa [badge-size]: https://img.shields.io/bundlephobia/minzip/svelte-fa.svg [bundlephobia]: https://bundlephobia.com/result?p=svelte-fa [badge-license]: https://img.shields.io/npm/l/svelte-fa.svg [license]: https://github.com/Cweili/svelte-fa/blob/master/LICENSE [badge-issues]: https://img.shields.io/github/issues/Cweili/svelte-fa.svg [github]: https://github.com/Cweili/svelte-fa [badge-build]: https://img.shields.io/github/actions/workflow/status/Cweili/svelte-fa/ci.yml?branch=master [workflows]: https://github.com/Cweili/svelte-fa/actions/workflows/ci.yml?query=branch%3Amaster [badge-coverage]: https://img.shields.io/coveralls/github/Cweili/svelte-fa/master.svg [coveralls]: https://coveralls.io/github/Cweili/svelte-fa?branch=master