lucide-solid
Version:
A Lucide icon library package for Solid applications
8 lines (7 loc) • 4.64 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../../src/Icon.tsx", "../../../shared/src/utils.ts"],
"sourcesContent": ["import { For, splitProps } from 'solid-js';\nimport { Dynamic } from 'solid-js/web';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses, toKebabCase, toPascalCase } from '@lucide/shared';\n\ninterface IconProps {\n name?: string;\n iconNode: IconNode;\n}\n\nconst Icon = (props: LucideProps & IconProps) => {\n const [localProps, rest] = splitProps(props, [\n 'color',\n 'size',\n 'strokeWidth',\n 'children',\n 'class',\n 'name',\n 'iconNode',\n 'absoluteStrokeWidth',\n ]);\n\n return (\n <svg\n {...defaultAttributes}\n width={localProps.size ?? defaultAttributes.width}\n height={localProps.size ?? defaultAttributes.height}\n stroke={localProps.color ?? defaultAttributes.stroke}\n stroke-width={\n localProps.absoluteStrokeWidth\n ? (Number(localProps.strokeWidth ?? defaultAttributes['stroke-width']) * 24) /\n Number(localProps.size)\n : Number(localProps.strokeWidth ?? defaultAttributes['stroke-width'])\n }\n class={mergeClasses(\n 'lucide',\n 'lucide-icon',\n ...(localProps.name != null\n ? [\n `lucide-${toKebabCase(toPascalCase(localProps.name))}`,\n `lucide-${toKebabCase(localProps.name)}`,\n ]\n : []),\n localProps.class != null ? localProps.class : '',\n )}\n {...rest}\n >\n <For each={localProps.iconNode}>\n {([elementName, attrs]) => {\n return (\n <Dynamic\n component={elementName}\n {...attrs}\n />\n );\n }}\n </For>\n </svg>\n );\n};\n\nexport default Icon;\n", "import { CamelToPascal } from './utility-types';\n\n/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n\n/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = <T extends string>(string: T) =>\n string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = <T extends string>(string: T): CamelToPascal<T> => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal<T>;\n};\n\n/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = <ClassType = string | undefined | null>(...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n"],
"mappings": ";;;;;;;;AAAA,SAAS,KAAK,kBAAkB;AAChC,SAAS,eAAe;AACxB,OAAO,uBAAuB;;;ACMvB,IAAM,cAAc,CAAC,WAC1B,OAAO,QAAQ,sBAAsB,OAAO,EAAE,YAAY;AAQrD,IAAM,cAAc,CAAmB,WAC5C,OAAO;AAAA,EAAQ;AAAA,EAAyB,CAAC,OAAO,IAAI,OAClD,KAAK,GAAG,YAAY,IAAI,GAAG,YAAY;AACzC;AAQK,IAAM,eAAe,CAAmB,WAAgC;AAC7E,QAAM,YAAY,YAAY,MAAM;AAEpC,SAAQ,UAAU,OAAO,CAAC,EAAE,YAAY,IAAI,UAAU,MAAM,CAAC;AAC/D;AAQO,IAAM,eAAe,IAA2C,YACrE,QACG,OAAO,CAAC,WAAW,OAAO,UAAU;AACnC,SACE,QAAQ,SAAS,KAChB,UAAqB,KAAK,MAAM,MACjC,MAAM,QAAQ,SAAS,MAAM;AAEjC,CAAC,EACA,KAAK,GAAG,EACR,KAAK;;;ADvCV,IAAM,OAAO,CAAC,UAAmC;AAC/C,QAAM,CAAC,YAAY,IAAI,IAAI,WAAW,OAAO;AAAA,IAC3C;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,SACE,CAAC;AAAA,QACK;AAAA,IACJ,OAAO,WAAW,QAAQ,kBAAkB;AAAA,IAC5C,QAAQ,WAAW,QAAQ,kBAAkB;AAAA,IAC7C,QAAQ,WAAW,SAAS,kBAAkB;AAAA,IAC9C,cACE,WAAW,sBACN,OAAO,WAAW,eAAe,kBAAkB,cAAc,CAAC,IAAI,KACvE,OAAO,WAAW,IAAI,IACtB,OAAO,WAAW,eAAe,kBAAkB,cAAc,CAAC;AAAA,IAExE,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,GAAI,WAAW,QAAQ,OACnB;AAAA,QACE,UAAU,YAAY,aAAa,WAAW,IAAI,CAAC,CAAC;AAAA,QACpD,UAAU,YAAY,WAAW,IAAI,CAAC;AAAA,MACxC,IACA,CAAC;AAAA,MACL,WAAW,SAAS,OAAO,WAAW,QAAQ;AAAA,IAChD;AAAA,QACI;AAAA,GACL;AAAA,MACC,CAAC,IAAI,MAAM,WAAW,UAAU;AAAA,SAC7B,CAAC,CAAC,aAAa,KAAK,MAAM;AACzB,WACE,CAAC;AAAA,MACC,WAAW;AAAA,UACP;AAAA,IACN;AAAA,EAEJ,EAAE;AAAA,MACJ,EATC,IASK;AAAA,IACR,EAlCC;AAoCL;AAEA,IAAO,eAAQ;",
"names": []
}