wizardry-react
Version:
A Wizardry icon library package for React applications.
1 lines • 15 kB
Source Map (JSON)
{"version":3,"sources":["../src/wizardry-react.ts","../src/icons/index.ts","../src/createWizardryIcon.ts","../../shared/src/utils.ts","../src/Icon.ts","../src/defaultAttributes.ts","../src/defaultFillAttributes.ts","../src/icons/filter-line.ts","../src/icons/circle-one-fill.ts","../src/icons/search-one-line.ts","../src/icons/search-two-line.ts","../src/icons/search-three-line.ts"],"sourcesContent":["export * from './icons';\nexport * as icons from './icons';\nexport * from './types';\n\nexport { default as createWizardryIcon } from './createWizardryIcon';\nexport { default as Icon } from './Icon';\n","export { default as FilterLine } from './filter-line';\nexport { default as CircleOneFill } from './circle-one-fill';\nexport { default as SearchOneLine } from './search-one-line';\nexport { default as SearchTwoLine } from './search-two-line';\nexport { default as SearchThreeLine } from './search-three-line';\n\n","import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from '@wizardry/shared';\nimport { IconNode, WizardryProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} WizardryIcon\n */\nconst createWizardryIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef<SVGSVGElement, WizardryProps>(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `wizardry-${toKebabCase(toPascalCase(iconName))}`,\n `wizardry-${iconName}`,\n className,\n ),\n ...props,\n }),\n );\n\n Component.displayName = toPascalCase(iconName);\n\n return Component;\n};\n\nexport default createWizardryIcon;\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","import { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport defaultFillAttributes from './defaultFillAttributes';\nimport { IconNode, WizardryProps } from './types';\nimport { mergeClasses } from '@wizardry/shared';\n\ninterface IconComponentProps extends WizardryProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} WizardryIcon\n */\nconst Icon = forwardRef<SVGSVGElement, IconComponentProps>(\n (\n {\n color = 'currentColor',\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = '',\n children,\n iconNode,\n ...rest\n },\n ref,\n ) => {\n const hasFill = className.includes('-fill');\n return createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n ...(hasFill ? defaultFillAttributes : {}), // 条件应用填充属性\n width: size,\n height: size,\n ...(hasFill ? { fill: color } : {stroke: color}),\n strokeWidth: hasFill? 0 : absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth,\n className: mergeClasses('wizardry', className),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n );\n },\n);\n\nexport default Icon;\n","export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n","export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n stroke: 'none',\n strokeWidth: 0,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n","import createWizardryIcon from '../createWizardryIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M22 5.81L22 6.5C22 7.54 22 8.06 21.74 8.49C21.48 8.92 21 9.18 20.05 9.72L17.14 11.36C16.5 11.72 16.19 11.89 15.96 12.09C15.48 12.5 15.19 12.99 15.06 13.58C15 13.87 15 14.2 15 14.87L15 17.54C15 19.45 15 20.4 14.33 20.82C13.66 21.24 12.72 20.87 10.84 20.14C9.95 19.79 9.5 19.61 9.25 19.26C9 18.9 9 18.45 9 17.54L9 14.87C9 14.2 9 13.87 8.93 13.58C8.8 12.99 8.51 12.5 8.03 12.09C7.8 11.89 7.49 11.72 6.85 11.36L3.94 9.72C2.99 9.18 2.51 8.92 2.25 8.49C2 8.06 2 7.54 2 6.5L2 5.81',\n key: 'ixkmpn',\n },\n ],\n [\n 'path',\n {\n opacity: '0.4',\n d: 'M22 5.81C22 4.48 22 3.82 21.56 3.41C21.12 3 20.41 3 19 3L5 3C3.58 3 2.87 3 2.43 3.41C2 3.82 2 4.48 2 5.81',\n key: 'q6p6e8',\n },\n ],\n];\n\n/**\n * @component @name FilterLine\n * @description Wizardry SVG icon component, renders SVG Element with children.\n *\n * @param {Object} props - Wizardry icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n */\nconst FilterLine = createWizardryIcon('filter-line', __iconNode);\n\nexport default FilterLine;\n","import createWizardryIcon from '../createWizardryIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n opacity: '0.4',\n d: 'M12 15.42L12 0C12.78 0 13.56 0.06 14.34 0.21C15.1 0.38 15.86 0.59 16.58 0.9C17.31 1.19 18 1.57 18.66 2.02C19.31 2.45 19.92 2.93 20.48 3.5C21.04 4.06 21.52 4.66 21.96 5.31C22.4 5.97 22.78 6.66 23.08 7.4C23.38 8.12 23.6 8.88 23.76 9.64C23.92 10.42 24 11.2 24 12C24 12.78 23.92 13.56 23.76 14.34C23.6 15.1 23.38 15.86 23.08 16.58C22.78 17.31 22.4 18 21.96 18.66C21.52 19.31 21.04 19.92 20.48 20.48C19.92 21.04 19.31 21.52 18.66 21.96C18 22.4 17.31 22.78 16.58 23.08C15.86 23.38 15.1 23.6 14.34 23.76C13.56 23.92 12.78 24 12 24L12 15.42Z',\n key: '4g2ozi',\n },\n ],\n [\n 'path',\n {\n d: 'M12 15.42L12 0C11.2 0 10.42 0.06 9.64 0.21C8.88 0.38 8.12 0.59 7.4 0.9C6.66 1.19 5.97 1.57 5.31 2.02C4.66 2.45 4.06 2.93 3.5 3.5C2.93 4.06 2.45 4.66 2.02 5.31C1.57 5.97 1.19 6.66 0.9 7.4C0.59 8.12 0.38 8.88 0.21 9.64C0.06 10.42 0 11.2 0 12C0 12.78 0.06 13.56 0.21 14.34C0.38 15.1 0.59 15.86 0.9 16.58C1.19 17.31 1.57 18 2.02 18.66C2.45 19.31 2.93 19.92 3.5 20.48C4.06 21.04 4.66 21.52 5.31 21.96C5.97 22.4 6.66 22.78 7.4 23.08C8.12 23.38 8.88 23.6 9.64 23.76C10.42 23.92 11.2 24 12 24L12 15.42Z',\n key: '1k296r',\n },\n ],\n];\n\n/**\n * @component @name CircleOneFill\n * @description Wizardry SVG icon component, renders SVG Element with children.\n *\n * @param {Object} props - Wizardry icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n */\nconst CircleOneFill = createWizardryIcon('circle-one-fill', __iconNode);\n\nexport default CircleOneFill;\n","import createWizardryIcon from '../createWizardryIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '11.500000', cy: '11.500000', r: '9.499999', opacity: '0.4', key: '1nj8v7' }],\n ['path', { d: 'M18.5 18.5L22 22', key: '67zml7' }],\n];\n\n/**\n * @component @name SearchOneLine\n * @description Wizardry SVG icon component, renders SVG Element with children.\n *\n * @param {Object} props - Wizardry icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n */\nconst SearchOneLine = createWizardryIcon('search-one-line', __iconNode);\n\nexport default SearchOneLine;\n","import createWizardryIcon from '../createWizardryIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '11.500000', cy: '11.500000', r: '9.499999', opacity: '0.4', key: '1nj8v7' }],\n ['path', { d: 'M20 20L22 22', key: 'jq9z17' }],\n];\n\n/**\n * @component @name SearchTwoLine\n * @description Wizardry SVG icon component, renders SVG Element with children.\n *\n * @param {Object} props - Wizardry icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n */\nconst SearchTwoLine = createWizardryIcon('search-two-line', __iconNode);\n\nexport default SearchTwoLine;\n","import createWizardryIcon from '../createWizardryIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '11.000000', cy: '11.000000', r: '9.000000', opacity: '0.4', key: 'fo11wg' }],\n [\n 'path',\n {\n d: 'M21.4 21.4C21.18 21.63 21.06 21.74 20.97 21.81C20.42 22.17 19.66 21.99 19.35 21.4C19.3 21.3 19.25 21.15 19.16 20.84C19.06 20.5 19.01 20.33 19 20.22C18.94 19.52 19.52 18.94 20.22 19C20.33 19.01 20.5 19.06 20.84 19.16C21.15 19.25 21.3 19.3 21.4 19.35C21.99 19.66 22.17 20.42 21.81 20.97C21.74 21.06 21.63 21.18 21.4 21.4Z',\n key: '1kdkj9',\n },\n ],\n];\n\n/**\n * @component @name SearchThreeLine\n * @description Wizardry SVG icon component, renders SVG Element with children.\n *\n * @param {Object} props - Wizardry icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n */\nconst SearchThreeLine = createWizardryIcon('search-three-line', __iconNode);\n\nexport default SearchThreeLine;\n"],"mappings":"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","names":["wizardry_react_exports","__export","circle_one_fill_default","filter_line_default","Icon_default","search_one_line_default","search_three_line_default","search_two_line_default","createWizardryIcon_default","icons_exports","__toCommonJS","icons_exports","__export","circle_one_fill_default","filter_line_default","search_one_line_default","search_three_line_default","search_two_line_default","import_react","toKebabCase","string","toCamelCase","match","p1","p2","toPascalCase","camelCase","mergeClasses","classes","className","index","array","import_react","defaultAttributes_default","defaultFillAttributes_default","Icon","color","size","strokeWidth","absoluteStrokeWidth","className","children","iconNode","rest","ref","hasFill","defaultAttributes_default","defaultFillAttributes_default","mergeClasses","tag","attrs","Icon_default","createWizardryIcon","iconName","iconNode","Component","className","props","ref","Icon_default","mergeClasses","toKebabCase","toPascalCase","createWizardryIcon_default","__iconNode","FilterLine","createWizardryIcon_default","filter_line_default","__iconNode","CircleOneFill","createWizardryIcon_default","circle_one_fill_default","__iconNode","SearchOneLine","createWizardryIcon_default","search_one_line_default","__iconNode","SearchTwoLine","createWizardryIcon_default","search_two_line_default","__iconNode","SearchThreeLine","createWizardryIcon_default","search_three_line_default"]}