lucide-preact
Version:
A Lucide icon library package for Preact applications.
50 lines (46 loc) • 1.56 kB
JavaScript
/**
* @license lucide-preact v1.25.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/
import { h, toChildArray } from 'preact';
import defaultAttributes from './defaultAttributes.mjs';
import { useLucideContext } from './context.mjs';
import { hasA11yProp } from './shared/src/utils/hasA11yProp.mjs';
import { mergeClasses } from './shared/src/utils/mergeClasses.mjs';
const Icon = ({
color,
size,
strokeWidth,
absoluteStrokeWidth,
children,
iconNode,
class: classes = "",
...rest
}) => {
const {
size: contextSize = 24,
strokeWidth: contextStrokeWidth = 2,
absoluteStrokeWidth: contextAbsoluteStrokeWidth = false,
color: contextColor = "currentColor",
class: contextClass = ""
} = useLucideContext() ?? {};
const calculatedStrokeWidth = absoluteStrokeWidth ?? contextAbsoluteStrokeWidth ? Number(strokeWidth ?? contextStrokeWidth) * 24 / Number(size ?? contextSize) : strokeWidth ?? contextStrokeWidth;
return h(
"svg",
{
...defaultAttributes,
width: size ?? contextSize ?? 24,
height: size ?? contextSize ?? 24,
stroke: color ?? contextColor,
["stroke-width"]: calculatedStrokeWidth,
class: mergeClasses("lucide", contextClass, classes),
...!children && !hasA11yProp(rest) && { "aria-hidden": "true" },
...rest
},
[...iconNode.map(([tag, attrs]) => h(tag, attrs)), ...toChildArray(children)]
);
};
export { Icon as default };
//# sourceMappingURL=Icon.mjs.map