UNPKG

lucide-vue-next

Version:

A Lucide icon library package for Vue 3 applications.

44 lines (40 loc) 1.47 kB
/** * @license lucide-vue-next v0.562.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 } from 'vue'; import { mergeClasses, toKebabCase, toPascalCase, isEmptyString } from './shared/src/utils.js'; import defaultAttributes from './defaultAttributes.js'; const Icon = ({ name, iconNode, absoluteStrokeWidth, "absolute-stroke-width": absoluteStrokeWidthKebabCase, strokeWidth, "stroke-width": strokeWidthKebabCase, size = defaultAttributes.width, color = defaultAttributes.stroke, ...props }, { slots }) => { return h( "svg", { ...defaultAttributes, ...props, width: size, height: size, stroke: color, "stroke-width": isEmptyString(absoluteStrokeWidth) || isEmptyString(absoluteStrokeWidthKebabCase) || absoluteStrokeWidth === true || absoluteStrokeWidthKebabCase === true ? Number(strokeWidth || strokeWidthKebabCase || defaultAttributes["stroke-width"]) * 24 / Number(size) : strokeWidth || strokeWidthKebabCase || defaultAttributes["stroke-width"], class: mergeClasses( "lucide", props.class, ...name ? [`lucide-${toKebabCase(toPascalCase(name))}-icon`, `lucide-${toKebabCase(name)}`] : ["lucide-icon"] ) }, [...iconNode.map((child) => h(...child)), ...slots.default ? [slots.default()] : []] ); }; export { Icon as default }; //# sourceMappingURL=Icon.js.map