Files
lucide/docs/guide/packages/lucide-static.md

195 lines
3.9 KiB
Markdown
Raw Normal View History

2021-11-21 21:08:10 +01:00
# Lucide Static
This package include the following lucide implementations:
- All SVG files
- SVG sprite
2021-11-21 21:08:10 +01:00
- Icon fonts
- JavaScript library containing strings of SVGs.
2021-11-21 21:08:10 +01:00
## Why lucide-static?
This package is suitable for specific use cases, for example if you want to use icon fonts, SVG sprites, normal SVGs or Common.js SVG strings in your javascript project.
2021-11-21 21:08:10 +01:00
::: warning
While they can be useful for prototyping, it is not recommended to use the SVG sprites or icon fonts provided by this package in production web apps as all the available icons are included in the app, hence increasing loading time and data usage. We recommend to use a bundler and tree-shaking to make sure only the icons you use are bundled with your app. Tree-shaking is only available in these packages: [lucide](lucide), [lucide-react](lucide-react), [lucide-vue](lucide-vue), [lucide-vue-next](lucide-vue-next), [lucide-angular](lucide-angular), [lucide-preact](lucide-preact)
:::
2021-11-21 21:08:10 +01:00
## Installation
## Package Managers
::: code-group
```sh [pnpm]
pnpm install lucide-static
```
2021-11-21 21:08:10 +01:00
```sh [yarn]
yarn add lucide-static
```
2021-11-21 21:08:10 +01:00
```sh [npm]
2021-11-21 21:08:10 +01:00
npm install lucide-static
```
```sh [bun]
bun add lucide-static
```
:::
2021-11-21 21:08:10 +01:00
### CDN
```html
<!-- SVG file for a single icon -->
<img src="https://unpkg.com/lucide-static@latest/icons/home.svg" />
2021-11-21 21:08:10 +01:00
<!-- Icon font -->
2021-11-21 21:08:10 +01:00
<style>
@font-face {
font-family: 'LucideIcons';
src: url(https://unpkg.com/lucide-static@latest/font/Lucide.ttf) format('truetype');
2021-11-21 21:08:10 +01:00
}
</style>
```
## Usage
Check out the [codesandbox examples](https://codesandbox.io/s/using-the-svg-sprite-lz1kk).
2021-11-21 21:08:10 +01:00
### SVG Files
#### SVG file as image
2021-11-21 21:08:10 +01:00
To use it in for example html:
```html
<!-- SVG file for a single icon -->
<img src="~lucide-static/icons/home.svg" />
2021-11-21 21:08:10 +01:00
```
```css
2021-11-21 21:08:10 +01:00
.home-icon {
background-image: url(~lucide-static/icons/home.svg);
2021-11-21 21:08:10 +01:00
}
```
Make sure you have the correct webpack loaders to make this work. [url-loader](https://v4.webpack.js.org/loaders/url-loader/)
#### SVG file as string
2021-11-21 21:08:10 +01:00
You can simply import each SVG by targeting `lucide-static/icons/{icon-name}.svg`.
To use SVGs in your project you can for example use a [SVG loader](https://v4.webpack.js.org/loaders/svg-inline-loader/).
2021-11-21 21:08:10 +01:00
```js
import arrowRightIcon from 'lucide-static/icons/arrow-right';
2021-11-21 21:08:10 +01:00
// return string of an SVG
2021-11-21 21:08:10 +01:00
```
### SVG Sprite
You may need additional loader for this.
```html
<!-- Icon Sprite, not recommended for production! -->
<img src="lucide-static/sprite.svg#home" />
2021-11-21 21:08:10 +01:00
<!-- or -->
<svg
width="24"
height="24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<use href="#alert-triangle" />
</svg>
<svg>
...sprite svg
</svg>
```
If you'd prefer, you can use CSS to hold your base SVG properties
```css
.lucide-icon {
width: 24px;
height: 24px;
stroke: currentColor;
fill: none;
stroke-width: 2;
stroke-linecap: round;
stroke-linejoin: round;
2021-11-21 21:08:10 +01:00
}
```
and update the SVG as follows
2021-11-21 21:08:10 +01:00
New site! 🚀 (#1275) * add new docs * Add styling * Move files * Add active selection * improve grid overview * improve grid * Add icon detail page * Minor changes * Fix icon preview * optimize home card * Add code examples * Add gitignore * correct temp directory * Add first cusotmizer * Add customizer * fix images paths * Add reset function * Adjust category rendering * Add packages section * Some fixes * Fix vercel build icon * Small code adjustment * move file * Try this * Add code groups with syntax highlighting * Add search icon * Cleanup * update lockfile * turnoff 404 * remove docs/iconMetaData.ts * fix build * Fix build 2 * cleanup * Add icon customizer * Fix build * Add steps * Add Button menu * A lot off fixes! * cleanup * Fix build * Css fixes * Override menu icon * try this to improve preformance * minor improvements * add comment * add readme * Add title * minor fixes * Fixes sliders + removes random backticks from index * Added package list base, still WIP * Added Guide+Source buttons to package list items * Responsive support for XS screens * Map categories count * Adjust tooltip hover position * Add see in action icon * Add download options * Aligns category list items to baseline and decreases category count weight * Fixes event target error for categorylistitems * Added icon release metadata builder * Adds version badges to hero + icon detail overlay * Added contributors. Added Copy Angular. Added release info to icon page. * Centres contributor tooltip * Fixed stroke step + added reset button * Extracted reset button as a separate component for reusability * Makes HomeIconCustomizerIcons less dense * Fixes Button menu * adjust versions and contributors styling on detail page * Fix build? * Fix build 2? * Fix build 3 * Fix build 4 * Fix build 5? * Add latest gh-icon changes * Add comment * Try fetch tags to retrieve release data * try fetch all tags * Add related icons * Add stikcy search bar * Add no results components * Try to fix animation * Try optimizing for categories * Hide buggy animated icon * minor fixes * Add footer * Add contributute link in footer * Add copy name * Add 100% preview icons * remove site directory * clean up * Add redirects * Fix build? * fix redirect? * minor improvements * Fix icons preview on mobile * Small preformance improvement * Dark mode fixes for package icons * Sort related icons by similarity + somewhat better name similarity matching * Replace icon design guide images with uniform SVGs * update lockfile * Adds git clone to manually fetch the main repository for creating release metadata * Remove initial v0.0.0 from release metadata * Add extra CTA to no results behaviour * Remove tags, as they are too overused * Revert "Remove tags, as they are too overused" This reverts commit 909b7563c0c5d98d7eb6e1fa2708d20fc9ecfbf7. * Checkout icons from main * Add absoluteStrokeWidth switch * Add absolute strokewidth to home customizer * Add absolute strokewidth to copy code button * remove unused import * compare build time * improve build speed * Try new release meta data script * add fetch tags * try with branch and remote * try with url * try without ssh * Fix fetch tags in build file * Cleanup * Fix fallback * improve release data * delete relatedIcons.json, because it should be gitignored * Add icon details * Fix import * minor fixes * Try running script parallel * Revert icon details * include aliases in release meta data * Final fixes * Final fixes 2 * minor code adjustment * Fix build * test * Revert concurrent build flow * switch back to concurrent build strategy * revert icon changes * update package.json * update package.json * dedube packages --------- Co-authored-by: Karsa <karsa@karsa.org>
2023-06-04 16:59:38 +02:00
```xml
2021-11-21 21:08:10 +01:00
<svg
xmlns="http://www.w3.org/2000/svg"
class="lucide-icon"
>
<use
href="#alert-triangle"
/>
</svg>
<svg>
...sprite svg
</svg>
```
### Icon Font
```css
@import ('~lucide-static/font/lucide.css');
2021-11-21 21:08:10 +01:00
```
```html
<div class="icon-home"></div>
```
### Node.js
To use lucide icons in your Nodejs project you can import each icon as:
```js
const { messageSquare } = require('lucide-static/lib');
2021-11-21 21:08:10 +01:00
```
> Note: Each icon name is in camelCase.
#### Example in node.js project
```js
const express = require('express');
const { messageSquare } = require('lucide-static/lib');
const app = express();
const port = 3000;
2021-11-21 21:08:10 +01:00
app.get('/', (req, res) => {
res.send(`
<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>
<h1>Lucide Icons</h1>
<p>This is a lucide icon ${messageSquare}</p>
</body>
</html>
`);
});
2021-11-21 21:08:10 +01:00
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`);
});
2021-11-21 21:08:10 +01:00
```