deno.land / x / react_icons@0.2.3 / lib / iconBase.tsx

نووسراو ببینە
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import * as React from "preact";import { JSX } from "preact";import { DefaultContext, IconContext } from "./iconContext.tsx";
export interface IconTree { tag: string; attr: { [key: string]: string }; child?: IconTree[];}
function Tree2Element(tree: IconTree[]): React.ComponentChildren[] { // React.ReactElement => ComponentChildren return ( tree && tree.map((node, i) => React.createElement( node.tag, { key: i, ...node.attr }, Tree2Element(node.child || []), ) ) );}export function GenIcon(data: IconTree) { return (props: IconBaseProps) => ( <IconBase attr={{ ...data.attr }} {...props}> {Tree2Element(data.child || [])} </IconBase> );}
export interface IconBaseProps extends JSX.SVGAttributes<SVGElement> { children?: React.ComponentChildren; // was React.ReactNode size?: number; // was string | number; color?: string; title?: string;}
export type IconType = (props: IconBaseProps) => React.VNode<JSX.SVGAttributes>;export function IconBase( props: IconBaseProps & { attr?: Record<string, string> },): React.VNode<JSX.SVGAttributes> { const elem = (conf: IconContext) => { const { attr, size, title, ...svgProps } = props; const computedSize = size || conf.size || "1em"; let className; if (conf.className) className = conf.className; if (props.className) { className = (className ? className + " " : "") + props.className; }
return ( // @ts-ignore TODO Fix me <svg stroke="currentColor" fill="currentColor" strokeWidth="0" {...conf.attr} {...attr} {...svgProps} className={className} style={{ color: props.color || conf.color, ...conf.style, ...(props.style as JSX.CSSProperties), }} height={computedSize} width={computedSize} xmlns="http://www.w3.org/2000/svg" > {title && <title>{title}</title>} {props.children} </svg> ); };
return IconContext !== undefined ? ( <IconContext.Consumer> {(conf: IconContext) => elem(conf)} </IconContext.Consumer> ) : ( elem(DefaultContext) );}
react_icons

Version Info

Tagged at
a year ago