mirror of
https://github.com/lucide-icons/lucide.git
synced 2026-09-03 02:28:43 +02:00
* Update images * Adjust color * update accessebility * Add matrix hero * Add typescript documentation * Add basics section to vue pages * Add svelte docs * Fix dynamic sidebar * Add animation? * Some adjustments * Adjust animation * Updates docs * Add scaledown animation * Add docs for vue types * Fix layout accessibility page * fix framework select * adjust easing home animation * Write docs for Vue * Adjust animation home * Adjust home hero animation * Finish svelte docs * Add solid pages * remove spiral animation component * Add group icons * Added solid docs * update preact docs * Adjust examples preact docs * Add snackplayer * Get new editor * Save this * Add examples * Adjust styling * setup custom sandpack * Add script * Format files * Make sandpack plugin work * migrate react docs * Fix svelte and solid examples * Migrate to solid packages * Add darkmode package logos * Fix bug in selector * migrate vue examples * migrate advanced vue items * migrate preact and svelte examples * Add astro docs * adding more docs on guide for lucide library * Fix home animation * Cleanup * Added resources page, with more details and content * Add hero badge for Version 1 * Fix vercel json * Update missing paths * Fix build? * Replace lucide-vue-next * Fix build * Add some docs * update markdown * Setup angular docs * Add basic angular docs * Adjust code examples * Update title and descriptions * Update accessibility link * Update title and description * Add og image * Fix alignment * Add migration guides * Adjust version 1 markdown file * Add migration guide to the main list * Minor fixes * Update docs * Apply feedback * Select icons * Add pointer events none * Fix package links homepage * Format code * Fix types * Fix focus * Fix build * Fix focus * Apply feedback * Adjust imports * Adjust imports * Fix search * Apply feedback * Fix import in font docs * Small fixes * docs(guide): added easter egg icon. stay tuned, guys 😉 * Add llm txt plugin * Adjust logo top * docs(version-1): upgraded @lucide/angular guide for v1 website (#4144) * docs(guide/angular): rewrite some angular documentation * docs(guide/angular): extens angular guide with combining icons & icon provider guides * docs(guide/angular): fix angular sandbox, still needs @lucide/angular release tho * docs(guide/angular): rework the getting started page a bit more, refactor some more prop=>input occurences * docs(guide/angular): context provider => provideLucideConfig * Update docs/guide/angular/migration.md Co-authored-by: Eric Fennis <eric.fennis@gmail.com> * Update docs/guide/angular/advanced/combining-icons.md Co-authored-by: Eric Fennis <eric.fennis@gmail.com> * Apply suggestions from code review Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * docs(guide/angular): rework a11y for better flow & pacing * docs(guide/angular): salvage original phrase, it has better flow * docs(guide/angular): some more a11y nitpicking * docs(guide/angular): reduce llm fatigue * docs(guides/angular): fix app component selector * docs(guides/angular): fix angular sandpacks * Add sandpack angular to improve tree-shakable stack * Update docs/guide/angular/getting-started.md * docs(guides/angular): fix user import in combinding icons guide * docs(guides/angular): fix nested SVG phrasing * Update docs/guide/angular/advanced/with-lucide-lab.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update docs/guide/angular/advanced/filled-icons.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * docs(guides/angular): fix createLucideIcon guide * docs(guides/angular): upgrade all relevant angular sandpack demos --------- Co-authored-by: Eric Fennis <eric.fennis@gmail.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * fix(docs): add autogenerated OG images to gitignore * fix(docs): unify the case of "Lucide" & "Lucide Lab" over all docs and readmes * Fix build * Add next tag to all installation guides * Add top bar notification * Minor fixes * Update text * Add todos * Update og image * Adjust install command * Color top bar * fix(docs): ignore all OG images, expect general.png * fix(docs): fix the package list, hide @lucide/icons, downgrade angular logo, link to v0 guide, fix package title alignment * Update docs/.vitepress/theme/components/base/LayoutTop.vue Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update docs/guide/react/advanced/dynamic-icon-component.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update CONTRIBUTING.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update docs/.vitepress/sidebar/resources.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Fix code example * fix(docs): version 1 => Version 1 * feat(docs): add angular to new features in v1 * Fix next line issue * feat(docs): fix typo (code example_s_) * Fix deadlink * feat(docs): fix some more typos and irky grammar * feat(docs): fix lowercase lucide in sidebar 😅 * Update docs/guide/version-1.md Co-authored-by: Karsa <contact@karsa.org> --------- Co-authored-by: Karsa <contact@karsa.org> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
162 lines
3.8 KiB
Markdown
162 lines
3.8 KiB
Markdown
---
|
|
title: Global Styling - React
|
|
description: Learn how to style all Lucide icons globally in your React application using CSS or the Lucide context provider.
|
|
---
|
|
<script setup>
|
|
import Sandpack from '~/.vitepress/theme/components/editors/Sandpack.vue';
|
|
</script>
|
|
|
|
# Global Styling
|
|
|
|
Adjusting icons can be done by using [color](../basics/color.md), [size](../basics/sizing.md) and [stroke width](../basics/stroke-width.md).
|
|
To style all icons globally, you can either use CSS, or use a context provider.
|
|
|
|
We recommend using CSS for global styling, as it is the most straightforward way to achieve this.
|
|
But using CSS prevents you from using props like `size`, `color` and `strokeWidth` on individual icons, since CSS specificity will override these props, to be able to use the props on individual ones you need to use the Lucide context provider.
|
|
|
|
## Context Provider
|
|
|
|
For global styling using a context provider, you can use the `LucideProvider` component that is provided by the `lucide-react` package.
|
|
|
|
<!-- TODO: Add codesandbox example -->
|
|
```tsx
|
|
import { LucideProvider, Home } from 'lucide-react';
|
|
|
|
const App = () => (
|
|
<LucideProvider
|
|
color="red"
|
|
size={48}
|
|
strokeWidth={2}
|
|
>
|
|
<Home />
|
|
</LucideProvider>
|
|
);
|
|
```
|
|
|
|
This will apply the `color`, `size` and `strokeWidth` props to all icons that are children of the `LucideProvider`.
|
|
|
|
|
|
## Style by using CSS
|
|
Styling icons is easy to accomplish using CSS.
|
|
|
|
Every icon has a class attribute applied called `lucide`. This class name can be used in the CSS file to target all icons that are being used within the app.
|
|
|
|
- The **color** of the icons can be changed using the [`color`](https://developer.mozilla.org/en-US/docs/Web/CSS/color) CSS property.
|
|
- The **size** of the icons can be changed using [`width`](https://developer.mozilla.org/en-US/docs/Web/CSS/width) and [`height`](https://developer.mozilla.org/en-US/docs/Web/CSS/height) CSS properties.
|
|
- The **stroke width** of the icons can be changed using the [`stroke-width`](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-width) CSS property.
|
|
|
|
::: sandpack {template=react editorHeight=300 dependencies="lucide-react"}
|
|
|
|
```css icon.css [active]
|
|
.lucide {
|
|
/* Change this! */
|
|
color: #ffadff;
|
|
width: 56px;
|
|
height: 56px;
|
|
stroke-width: 1px;
|
|
}
|
|
|
|
.app {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr 1fr;
|
|
grid-template-rows: 1fr 1fr 1fr;
|
|
gap: 6px;
|
|
}
|
|
```
|
|
|
|
```jsx App.js
|
|
import {
|
|
CakeSlice,
|
|
Candy,
|
|
Apple,
|
|
Cookie,
|
|
Martini,
|
|
IceCream2,
|
|
Sandwich,
|
|
Wine,
|
|
Dessert,
|
|
} from "lucide-react";
|
|
import "./icon.css";
|
|
|
|
function App() {
|
|
return (
|
|
<div className="app">
|
|
<CakeSlice />
|
|
<Candy />
|
|
<Apple />
|
|
<Cookie />
|
|
<Martini />
|
|
<IceCream2 />
|
|
<Sandwich />
|
|
<Wine />
|
|
<Dessert />
|
|
</div>
|
|
);
|
|
}
|
|
|
|
export default App;
|
|
```
|
|
|
|
:::
|
|
|
|
### Absolute stroke width
|
|
|
|
For global absolute stroke width styling the `vector-effect: non-scaling-stroke` CSS property can be applied to the children. This will keep the stroke-width the same size no matter the size of the icon. See [absolute-stroke-width](../basics/stroke-width.md#absolute-stroke-width) for more info.
|
|
|
|
::: sandpack {template=react editorHeight=300 dependencies="lucide-react"}
|
|
|
|
```css icon.css [active]
|
|
.lucide {
|
|
width: 48px;
|
|
height: 48px;
|
|
stroke-width: 1.5;
|
|
}
|
|
|
|
.lucide * {
|
|
vector-effect: non-scaling-stroke;
|
|
}
|
|
|
|
.app {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr 1fr;
|
|
grid-template-rows: 1fr 1fr 1fr;
|
|
gap: 6px;
|
|
}
|
|
|
|
```
|
|
|
|
```jsx App.js
|
|
import {
|
|
TentTree,
|
|
Caravan,
|
|
FlameKindling,
|
|
MountainSnow,
|
|
Trees,
|
|
Axe,
|
|
Map,
|
|
CloudMoon,
|
|
Sparkles,
|
|
} from "lucide-react";
|
|
import "./icon.css";
|
|
|
|
function App() {
|
|
return (
|
|
<div className="app">
|
|
<TentTree />
|
|
<Caravan />
|
|
<FlameKindling />
|
|
<MountainSnow />
|
|
<Trees />
|
|
<Axe />
|
|
<Map />
|
|
<CloudMoon />
|
|
<Sparkles />
|
|
</div>
|
|
);
|
|
}
|
|
|
|
export default App;
|
|
```
|
|
|
|
:::
|