mirror of
https://github.com/lucide-icons/lucide.git
synced 2026-11-11 13:28:19 +00:00
* feat(lucide-astro): initial commit * test: add test suite * fix module resolution issue * chore: update lock file * chore: update lock file * chore: fix precommit hook failing * sync icons generated by precommit hook * remove useless tab in template * style: add space for readability * docs: add bun installation instructions * fix `clean` script * fix testing setup * remove unnecessary `key` props in Astro icons * fix jest matchers types and undefined behavior * chore: update lock file * setup prettier for formatting Astro files * remove mistakenly added prop from the `Icon` component * docs: add documentation for new Astro package * fix incorrect types in `Icon` component * refactor: use `stroke-width` over `strokeWidth` * fix unexpected module resolution behavior * remove hack in test types * remove review marker * docs: progress on documentation of lucide-astro * chore: remove unnecessary .gitignore * docs: add sidebar entry * edit package description * fix uneven icon heights in homepage packages list * docs: add package to readme table * add workflows for lucide-astro package * docs: add package-logos * use the appropriate Astro logo in light and dark mode * Remove inadvertently added class * Update snapshots to reflect removed class `lucide-icon` * remove dependency on internal `@lucide/shared` package * fix: revert changes * revert grid-2x2-x.json * revert grid-2x2-check.json * revert picture-in-picture svg * add package in labeler workflow * add previously uncommited utils.ts file * fix dom type errors * up one major from legacy package * add package to issue and feature request templates * docs: add acknowledgement of Aviortheking as original creator of the package * format * optimization: more lightweight component footprint * refactor: simplify removal of `data-astro-source` debugging attributes * format * style: fix linting error once again 😠 * wip: rename package to `@lucide/astro` * remove acknowledgment of `lucide-astro` * fix error caused by change in build tooling * chore: upgrade dependencies * chore: rename lucide-astro folder * further renaming * use correct package name in key * more renaming * chore: update lock file * apply review suggestions (#1) set correct path for package in actions * apply suggestions from code review (#2) Co-authored-by: Eric Fennis <eric.fennis@gmail.com> * apply @dotspencer's review resolve correct link to package docs page and github source * Format files --------- Co-authored-by: realguse <realguse@icloud.com> Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
43 lines
1.4 KiB
JavaScript
43 lines
1.4 KiB
JavaScript
/* eslint-disable import/no-extraneous-dependencies */
|
|
import base64SVG from '@lucide/build-icons/utils/base64SVG.mjs';
|
|
|
|
export default async ({
|
|
componentName,
|
|
iconName,
|
|
children,
|
|
getSvg,
|
|
deprecated,
|
|
deprecationReason,
|
|
}) => {
|
|
const svgContents = await getSvg();
|
|
const svgBase64 = base64SVG(svgContents);
|
|
|
|
// Astro doesn't need keyed children in loops
|
|
const keylessChildren = children.map((c) => {
|
|
const [element, { key, ...otherAttrs }] = c;
|
|
return [element, otherAttrs];
|
|
});
|
|
|
|
// TODO: build-icons' `pretty` is set to false as the prettier
|
|
// formatter uses babel which I'm not sure it supports typescript
|
|
return `
|
|
import createLucideIcon from '../createLucideIcon';
|
|
import type { AstroComponent } from '../types'
|
|
|
|
/**
|
|
* @component @name ${componentName}
|
|
* @description Lucide SVG icon component, renders SVG Element with children.
|
|
*
|
|
* @preview  - https://lucide.dev/icons/${iconName}
|
|
* @see https://lucide.dev/guide/packages/lucide-astro - Documentation
|
|
*
|
|
* @param {import('../types').IconProps} props - Lucide icons props and any valid SVG attribute
|
|
* @returns {any} Astro Component
|
|
* ${deprecated ? `@deprecated ${deprecationReason}` : ''}
|
|
*/
|
|
const ${componentName} = createLucideIcon('${iconName}', ${JSON.stringify(keylessChildren)}) as AstroComponent;
|
|
|
|
export default ${componentName};
|
|
`;
|
|
};
|