@smbdy/icons-react 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +118 -0
  3. package/dist/aave-4NKY7G5P.js +9 -0
  4. package/dist/aave-4NKY7G5P.js.map +1 -0
  5. package/dist/aave-EZ44VEFF.cjs +7 -0
  6. package/dist/aave-EZ44VEFF.cjs.map +1 -0
  7. package/dist/bnb-NS3U5Y5W.cjs +7 -0
  8. package/dist/bnb-NS3U5Y5W.cjs.map +1 -0
  9. package/dist/bnb-VEXN3I2D.js +9 -0
  10. package/dist/bnb-VEXN3I2D.js.map +1 -0
  11. package/dist/brands.cjs +7 -0
  12. package/dist/brands.cjs.map +1 -0
  13. package/dist/brands.d.cts +10 -0
  14. package/dist/brands.d.ts +10 -0
  15. package/dist/brands.js +9 -0
  16. package/dist/brands.js.map +1 -0
  17. package/dist/chains.cjs +7 -0
  18. package/dist/chains.cjs.map +1 -0
  19. package/dist/chains.d.cts +10 -0
  20. package/dist/chains.d.ts +10 -0
  21. package/dist/chains.js +9 -0
  22. package/dist/chains.js.map +1 -0
  23. package/dist/chunk-35GWSGWA.js +139 -0
  24. package/dist/chunk-35GWSGWA.js.map +1 -0
  25. package/dist/chunk-4HVBGJ3B.cjs +136 -0
  26. package/dist/chunk-4HVBGJ3B.cjs.map +1 -0
  27. package/dist/chunk-5GKWV4K2.js +24 -0
  28. package/dist/chunk-5GKWV4K2.js.map +1 -0
  29. package/dist/chunk-7P3MIHDC.js +41 -0
  30. package/dist/chunk-7P3MIHDC.js.map +1 -0
  31. package/dist/chunk-C2QAKFGG.js +36 -0
  32. package/dist/chunk-C2QAKFGG.js.map +1 -0
  33. package/dist/chunk-CZ5BDQQZ.cjs +31 -0
  34. package/dist/chunk-CZ5BDQQZ.cjs.map +1 -0
  35. package/dist/chunk-FKEVFNX6.cjs +26 -0
  36. package/dist/chunk-FKEVFNX6.cjs.map +1 -0
  37. package/dist/chunk-GQ4M4EFF.cjs +33 -0
  38. package/dist/chunk-GQ4M4EFF.cjs.map +1 -0
  39. package/dist/chunk-ICEGTX2E.js +46 -0
  40. package/dist/chunk-ICEGTX2E.js.map +1 -0
  41. package/dist/chunk-IEWJOWAP.cjs +120 -0
  42. package/dist/chunk-IEWJOWAP.cjs.map +1 -0
  43. package/dist/chunk-KHCWITFW.cjs +36 -0
  44. package/dist/chunk-KHCWITFW.cjs.map +1 -0
  45. package/dist/chunk-KJL5NVUU.cjs +43 -0
  46. package/dist/chunk-KJL5NVUU.cjs.map +1 -0
  47. package/dist/chunk-LMGL65KI.cjs +191 -0
  48. package/dist/chunk-LMGL65KI.cjs.map +1 -0
  49. package/dist/chunk-OPA5IJQV.js +123 -0
  50. package/dist/chunk-OPA5IJQV.js.map +1 -0
  51. package/dist/chunk-OVJUO4KZ.js +39 -0
  52. package/dist/chunk-OVJUO4KZ.js.map +1 -0
  53. package/dist/chunk-PDGRSONP.cjs +38 -0
  54. package/dist/chunk-PDGRSONP.cjs.map +1 -0
  55. package/dist/chunk-QAWTPM2S.js +29 -0
  56. package/dist/chunk-QAWTPM2S.js.map +1 -0
  57. package/dist/chunk-R2LI45CO.js +34 -0
  58. package/dist/chunk-R2LI45CO.js.map +1 -0
  59. package/dist/chunk-UX3FC265.cjs +21 -0
  60. package/dist/chunk-UX3FC265.cjs.map +1 -0
  61. package/dist/chunk-WARMK44Y.cjs +26 -0
  62. package/dist/chunk-WARMK44Y.cjs.map +1 -0
  63. package/dist/chunk-WH52PT4Y.js +29 -0
  64. package/dist/chunk-WH52PT4Y.js.map +1 -0
  65. package/dist/chunk-XWYUXPMU.js +193 -0
  66. package/dist/chunk-XWYUXPMU.js.map +1 -0
  67. package/dist/compat.cjs +54 -0
  68. package/dist/compat.cjs.map +1 -0
  69. package/dist/compat.d.cts +20 -0
  70. package/dist/compat.d.ts +20 -0
  71. package/dist/compat.js +56 -0
  72. package/dist/compat.js.map +1 -0
  73. package/dist/frames.cjs +7 -0
  74. package/dist/frames.cjs.map +1 -0
  75. package/dist/frames.d.cts +14 -0
  76. package/dist/frames.d.ts +14 -0
  77. package/dist/frames.js +9 -0
  78. package/dist/frames.js.map +1 -0
  79. package/dist/github-fallback-W3AHQ4U6.js +248 -0
  80. package/dist/github-fallback-W3AHQ4U6.js.map +1 -0
  81. package/dist/github-fallback-WEXDJI4H.cjs +246 -0
  82. package/dist/github-fallback-WEXDJI4H.cjs.map +1 -0
  83. package/dist/index.cjs +14 -0
  84. package/dist/index.cjs.map +1 -0
  85. package/dist/index.d.cts +23 -0
  86. package/dist/index.d.ts +23 -0
  87. package/dist/index.js +16 -0
  88. package/dist/index.js.map +1 -0
  89. package/dist/link-HVLWBKZ5.cjs +7 -0
  90. package/dist/link-HVLWBKZ5.cjs.map +1 -0
  91. package/dist/link-M5GUQP3F.js +9 -0
  92. package/dist/link-M5GUQP3F.js.map +1 -0
  93. package/dist/pteusde-T5QFFBX5.js +9 -0
  94. package/dist/pteusde-T5QFFBX5.js.map +1 -0
  95. package/dist/pteusde-ZTEAA2UN.cjs +7 -0
  96. package/dist/pteusde-ZTEAA2UN.cjs.map +1 -0
  97. package/dist/tokens.cjs +35 -0
  98. package/dist/tokens.cjs.map +1 -0
  99. package/dist/tokens.d.cts +64 -0
  100. package/dist/tokens.d.ts +64 -0
  101. package/dist/tokens.js +37 -0
  102. package/dist/tokens.js.map +1 -0
  103. package/dist/uni-LS35CB5G.cjs +7 -0
  104. package/dist/uni-LS35CB5G.cjs.map +1 -0
  105. package/dist/uni-UB66QGDS.js +9 -0
  106. package/dist/uni-UB66QGDS.js.map +1 -0
  107. package/package.json +119 -0
@@ -0,0 +1,193 @@
1
+ "use client";
2
+
3
+ import {
4
+ useIconConfig
5
+ } from "./chunk-ICEGTX2E.js";
6
+ import {
7
+ BtcIcon,
8
+ DaiIcon,
9
+ EthIcon,
10
+ UsdcIcon,
11
+ UsdtIcon
12
+ } from "./chunk-35GWSGWA.js";
13
+ import {
14
+ EthereumIcon
15
+ } from "./chunk-R2LI45CO.js";
16
+ import {
17
+ MetamaskIcon
18
+ } from "./chunk-OVJUO4KZ.js";
19
+
20
+ // src/index.tsx
21
+ import { lazy as lazy2, Suspense, useEffect, useState } from "react";
22
+ import { getMeta, getTypedMeta } from "@smbdy/icons";
23
+ import { resolveOrCandidate } from "@smbdy/icons/resolve";
24
+
25
+ // src/generated/eager-map.ts
26
+ var EAGER_ICONS = {
27
+ "token:btc": BtcIcon,
28
+ "token:dai": DaiIcon,
29
+ "token:eth": EthIcon,
30
+ "token:usdc": UsdcIcon,
31
+ "token:usdt": UsdtIcon,
32
+ "chain:ethereum": EthereumIcon,
33
+ "brand:metamask": MetamaskIcon
34
+ };
35
+
36
+ // src/generated/lazy-map.ts
37
+ import { lazy } from "react";
38
+ var LAZY_ICONS = {
39
+ "token:aave": lazy(() => import("./aave-4NKY7G5P.js").then((m) => ({ default: m.AaveIcon }))),
40
+ "token:bnb": lazy(() => import("./bnb-VEXN3I2D.js").then((m) => ({ default: m.BnbIcon }))),
41
+ "token:link": lazy(() => import("./link-M5GUQP3F.js").then((m) => ({ default: m.LinkIcon }))),
42
+ "token:pteusde": lazy(() => import("./pteusde-T5QFFBX5.js").then((m) => ({ default: m.PteusdeIcon }))),
43
+ "token:uni": lazy(() => import("./uni-UB66QGDS.js").then((m) => ({ default: m.UniIcon })))
44
+ };
45
+
46
+ // src/index.tsx
47
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
48
+ var styleInjected = false;
49
+ function ensureStyles() {
50
+ if (styleInjected || typeof document === "undefined") return;
51
+ styleInjected = true;
52
+ const s = document.createElement("style");
53
+ s.textContent = "@keyframes bgd-icon-fade-in{from{opacity:0}to{opacity:1}}.bgd-icon-placeholder{transition:opacity 0.3s ease-out}@media(prefers-reduced-motion:reduce){.bgd-icon-fade{animation:none;opacity:1}.bgd-icon-placeholder{transition:none}}";
54
+ document.head.appendChild(s);
55
+ }
56
+ function Placeholder({
57
+ id,
58
+ type,
59
+ size = 32,
60
+ decorative = false
61
+ }) {
62
+ const meta = type ? getTypedMeta(type, id) : getMeta(id);
63
+ const color = meta?.placeholderColor ?? meta?.brandColor ?? "#ccc";
64
+ const letter = (meta?.symbol ?? id).charAt(0).toUpperCase();
65
+ return /* @__PURE__ */ jsxs(
66
+ "svg",
67
+ {
68
+ xmlns: "http://www.w3.org/2000/svg",
69
+ width: size,
70
+ height: size,
71
+ viewBox: "0 0 32 32",
72
+ ...decorative ? { "aria-hidden": true, focusable: false } : { role: "img", "aria-label": meta?.name ?? id },
73
+ children: [
74
+ /* @__PURE__ */ jsx("circle", { cx: "16", cy: "16", r: "16", fill: color, opacity: 0.25 }),
75
+ /* @__PURE__ */ jsx(
76
+ "text",
77
+ {
78
+ x: "16",
79
+ y: "16",
80
+ dy: ".35em",
81
+ textAnchor: "middle",
82
+ fill: color,
83
+ fontSize: "14",
84
+ fontFamily: "system-ui, sans-serif",
85
+ fontWeight: "600",
86
+ children: letter
87
+ }
88
+ )
89
+ ]
90
+ }
91
+ );
92
+ }
93
+ var wrapStyle = {
94
+ position: "relative",
95
+ display: "inline-flex"
96
+ };
97
+ var overlayStyle = {
98
+ position: "absolute",
99
+ inset: 0,
100
+ display: "inline-flex",
101
+ opacity: 0,
102
+ animation: "bgd-icon-fade-in 0.3s ease-out forwards"
103
+ };
104
+ var LazyGithubFallback = lazy2(
105
+ () => import("./github-fallback-W3AHQ4U6.js").then((m) => ({ default: m.GithubFallback }))
106
+ );
107
+ function NotifyMounted({ onMounted }) {
108
+ useEffect(() => {
109
+ onMounted();
110
+ });
111
+ return null;
112
+ }
113
+ function FadeInLazyIcon({
114
+ Lazy,
115
+ placeholder,
116
+ variant,
117
+ size,
118
+ ...props
119
+ }) {
120
+ const [loaded, setLoaded] = useState(false);
121
+ return /* @__PURE__ */ jsxs("span", { style: wrapStyle, children: [
122
+ /* @__PURE__ */ jsx(
123
+ "span",
124
+ {
125
+ className: "bgd-icon-placeholder",
126
+ style: { display: "inline-flex", opacity: loaded ? 0 : 1 },
127
+ "aria-hidden": loaded || void 0,
128
+ children: placeholder
129
+ }
130
+ ),
131
+ /* @__PURE__ */ jsxs(Suspense, { fallback: null, children: [
132
+ /* @__PURE__ */ jsx("span", { className: "bgd-icon-fade", style: overlayStyle, children: /* @__PURE__ */ jsx(Lazy, { variant, size, ...props }) }),
133
+ /* @__PURE__ */ jsx(NotifyMounted, { onMounted: () => setLoaded(true) })
134
+ ] })
135
+ ] });
136
+ }
137
+ function Icon({
138
+ value,
139
+ type: explicitType,
140
+ mono = false,
141
+ size,
142
+ fallback,
143
+ ...props
144
+ }) {
145
+ const { enableFallback } = useIconConfig();
146
+ const { id, type } = resolveOrCandidate(
147
+ value,
148
+ explicitType ? { type: explicitType } : {}
149
+ );
150
+ const lookupKey = type ? `${type}:${id}` : null;
151
+ const placeholderType = type ?? void 0;
152
+ const variant = mono ? "mono" : "full";
153
+ const Eager = lookupKey ? EAGER_ICONS[lookupKey] : void 0;
154
+ if (Eager) return /* @__PURE__ */ jsx(Eager, { variant, size, ...props });
155
+ const Lazy = lookupKey ? LAZY_ICONS[lookupKey] : void 0;
156
+ if (!Lazy) {
157
+ if (typeof process !== "undefined" && process.env.NODE_ENV !== "production") {
158
+ console.warn(`[bgd-icons] Unknown icon value: "${value}"`);
159
+ }
160
+ if (enableFallback) {
161
+ const placeholder = fallback ?? /* @__PURE__ */ jsx(Placeholder, { id, type: placeholderType, size });
162
+ return /* @__PURE__ */ jsx(Suspense, { fallback: placeholder, children: /* @__PURE__ */ jsx(
163
+ LazyGithubFallback,
164
+ {
165
+ id,
166
+ iconType: placeholderType,
167
+ variant,
168
+ size,
169
+ fallback: placeholder,
170
+ ...props
171
+ }
172
+ ) });
173
+ }
174
+ return /* @__PURE__ */ jsx(Fragment, { children: fallback ?? /* @__PURE__ */ jsx(Placeholder, { id, type: placeholderType, size }) });
175
+ }
176
+ ensureStyles();
177
+ return /* @__PURE__ */ jsx(
178
+ FadeInLazyIcon,
179
+ {
180
+ Lazy,
181
+ placeholder: fallback ?? /* @__PURE__ */ jsx(Placeholder, { id, type: placeholderType, size, decorative: true }),
182
+ variant,
183
+ size,
184
+ ...props
185
+ },
186
+ lookupKey
187
+ );
188
+ }
189
+
190
+ export {
191
+ Icon
192
+ };
193
+ //# sourceMappingURL=chunk-XWYUXPMU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.tsx","../src/generated/eager-map.ts","../src/generated/lazy-map.ts"],"sourcesContent":["import { lazy, Suspense, useEffect, useState } from 'react'\nimport type { ReactNode, SVGProps } from 'react'\nimport { getMeta, getTypedMeta } from '@smbdy/icons'\nimport { resolveOrCandidate } from '@smbdy/icons/resolve'\nimport { EAGER_ICONS } from './generated/eager-map'\nimport { LAZY_ICONS } from './generated/lazy-map'\nimport { useIconConfig } from './icon-provider'\nimport type { IconType } from './types'\n\nexport { IconProvider } from './icon-provider'\nexport type { IconContextValue } from './icon-provider'\n\n// `type` shadows the inherited `SVGProps['type']` HTML attribute, which we\n// never expose anyway. Omitting it makes the prop unambiguously `IconType`.\nexport interface IconProps extends Omit<SVGProps<SVGSVGElement>, 'type'> {\n value: string | number\n type?: IconType\n mono?: boolean\n size?: number | string\n fallback?: ReactNode\n}\n\nlet styleInjected = false\nfunction ensureStyles() {\n if (styleInjected || typeof document === 'undefined') return\n styleInjected = true\n const s = document.createElement('style')\n s.textContent =\n '@keyframes bgd-icon-fade-in{from{opacity:0}to{opacity:1}}' +\n '.bgd-icon-placeholder{transition:opacity 0.3s ease-out}' +\n '@media(prefers-reduced-motion:reduce){.bgd-icon-fade{animation:none;opacity:1}.bgd-icon-placeholder{transition:none}}'\n document.head.appendChild(s)\n}\n\nfunction Placeholder({\n id,\n type,\n size = 32,\n decorative = false,\n}: {\n id: string\n type?: IconType\n size?: number | string\n decorative?: boolean\n}) {\n const meta = type ? getTypedMeta(type, id) : getMeta(id)\n const color = meta?.placeholderColor ?? meta?.brandColor ?? '#ccc'\n const letter = (meta?.symbol ?? id).charAt(0).toUpperCase()\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 32 32\"\n {...(decorative\n ? { 'aria-hidden': true, focusable: false }\n : { role: 'img', 'aria-label': meta?.name ?? id })}\n >\n <circle cx=\"16\" cy=\"16\" r=\"16\" fill={color} opacity={0.25} />\n <text\n x=\"16\"\n y=\"16\"\n dy=\".35em\"\n textAnchor=\"middle\"\n fill={color}\n fontSize=\"14\"\n fontFamily=\"system-ui, sans-serif\"\n fontWeight=\"600\"\n >\n {letter}\n </text>\n </svg>\n )\n}\n\nconst wrapStyle: React.CSSProperties = {\n position: 'relative',\n display: 'inline-flex',\n}\nconst overlayStyle: React.CSSProperties = {\n position: 'absolute',\n inset: 0,\n display: 'inline-flex',\n opacity: 0,\n animation: 'bgd-icon-fade-in 0.3s ease-out forwards',\n}\n\nconst LazyGithubFallback = lazy(() =>\n import('./github-fallback').then((m) => ({ default: m.GithubFallback })),\n)\n\n// Mounts only when the surrounding Suspense boundary resolves — used to\n// learn when the lazy icon is actually on screen.\nfunction NotifyMounted({ onMounted }: { onMounted: () => void }) {\n useEffect(() => {\n onMounted()\n })\n return null\n}\n\ntype LazyIconComponent = (typeof LAZY_ICONS)[string]\n\n// The placeholder is the layout anchor (the lazy icon overlays it), so it\n// must stay mounted — but once the icon has loaded it has to fade out.\n// Mono icons use currentColor with transparent regions; a placeholder left\n// at full opacity peeks through them.\nfunction FadeInLazyIcon({\n Lazy,\n placeholder,\n variant,\n size,\n ...props\n}: Omit<SVGProps<SVGSVGElement>, 'type'> & {\n Lazy: LazyIconComponent\n placeholder: ReactNode\n variant: 'full' | 'mono'\n size?: number | string\n}) {\n const [loaded, setLoaded] = useState(false)\n return (\n <span style={wrapStyle}>\n <span\n className=\"bgd-icon-placeholder\"\n style={{ display: 'inline-flex', opacity: loaded ? 0 : 1 }}\n aria-hidden={loaded || undefined}\n >\n {placeholder}\n </span>\n <Suspense fallback={null}>\n <span className=\"bgd-icon-fade\" style={overlayStyle}>\n <Lazy variant={variant} size={size} {...props} />\n </span>\n <NotifyMounted onMounted={() => setLoaded(true)} />\n </Suspense>\n </span>\n )\n}\n\nexport function Icon({\n value,\n type: explicitType,\n mono = false,\n size,\n fallback,\n ...props\n}: IconProps) {\n const { enableFallback } = useIconConfig()\n const { id, type } = resolveOrCandidate(\n value,\n explicitType ? { type: explicitType } : {},\n )\n const lookupKey = type ? `${type}:${id}` : null\n const placeholderType = type ?? undefined\n const variant: 'full' | 'mono' = mono ? 'mono' : 'full'\n\n const Eager = lookupKey ? EAGER_ICONS[lookupKey] : undefined\n if (Eager) return <Eager variant={variant} size={size} {...props} />\n\n const Lazy = lookupKey ? LAZY_ICONS[lookupKey] : undefined\n if (!Lazy) {\n // Bundlers replace process.env.NODE_ENV and dead-code-eliminate this in production\n if (\n typeof process !== 'undefined' &&\n process.env.NODE_ENV !== 'production'\n ) {\n console.warn(`[bgd-icons] Unknown icon value: \"${value}\"`)\n }\n if (enableFallback) {\n const placeholder = fallback ?? (\n <Placeholder id={id} type={placeholderType} size={size} />\n )\n return (\n <Suspense fallback={placeholder}>\n <LazyGithubFallback\n id={id}\n iconType={placeholderType}\n variant={variant}\n size={size}\n fallback={placeholder}\n {...props}\n />\n </Suspense>\n )\n }\n return (\n <>\n {fallback ?? <Placeholder id={id} type={placeholderType} size={size} />}\n </>\n )\n }\n\n ensureStyles()\n return (\n <FadeInLazyIcon\n // Reset the loaded state when the identity changes\n key={lookupKey}\n Lazy={Lazy}\n placeholder={\n fallback ?? (\n <Placeholder id={id} type={placeholderType} size={size} decorative />\n )\n }\n variant={variant}\n size={size}\n {...props}\n />\n )\n}\n","// Auto-generated by scripts/generate.ts - DO NOT EDIT\nimport type { ComponentType } from 'react'\nimport type { IconProps } from './tokens/index'\n\nimport { BtcIcon } from './tokens/btc'\nimport { DaiIcon } from './tokens/dai'\nimport { EthIcon } from './tokens/eth'\nimport { UsdcIcon } from './tokens/usdc'\nimport { UsdtIcon } from './tokens/usdt'\nimport { EthereumIcon } from './chains/ethereum'\nimport { MetamaskIcon } from './brands/metamask'\n\nexport const EAGER_ICONS: Record<string, ComponentType<IconProps>> = {\n \"token:btc\": BtcIcon,\n \"token:dai\": DaiIcon,\n \"token:eth\": EthIcon,\n \"token:usdc\": UsdcIcon,\n \"token:usdt\": UsdtIcon,\n \"chain:ethereum\": EthereumIcon,\n \"brand:metamask\": MetamaskIcon,\n}\n","// Auto-generated by scripts/generate.ts - DO NOT EDIT\nimport { lazy } from 'react'\nimport type { LazyExoticComponent, ComponentType } from 'react'\nimport type { IconProps } from './tokens/index'\n\ntype LazyIcon = LazyExoticComponent<ComponentType<IconProps>>\n\nexport const LAZY_ICONS: Record<string, LazyIcon> = {\n \"token:aave\": lazy(() => import('./tokens/aave').then((m) => ({ default: m.AaveIcon }))),\n \"token:bnb\": lazy(() => import('./tokens/bnb').then((m) => ({ default: m.BnbIcon }))),\n \"token:link\": lazy(() => import('./tokens/link').then((m) => ({ default: m.LinkIcon }))),\n \"token:pteusde\": lazy(() => import('./tokens/pteusde').then((m) => ({ default: m.PteusdeIcon }))),\n \"token:uni\": lazy(() => import('./tokens/uni').then((m) => ({ default: m.UniIcon }))),\n}\n"],"mappings":"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","names":["lazy","lazy"]}
@@ -0,0 +1,54 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }
2
+
3
+ var _chunkLMGL65KIcjs = require('./chunk-LMGL65KI.cjs');
4
+ require('./chunk-KJL5NVUU.cjs');
5
+ require('./chunk-4HVBGJ3B.cjs');
6
+ require('./chunk-CZ5BDQQZ.cjs');
7
+ require('./chunk-KHCWITFW.cjs');
8
+
9
+
10
+ var _chunkIEWJOWAPcjs = require('./chunk-IEWJOWAP.cjs');
11
+
12
+ // src/compat.ts
13
+ var _react = require('react');
14
+ function Web3Icon({
15
+ symbol,
16
+ chainId,
17
+ walletKey,
18
+ brandKey,
19
+ mono,
20
+ assetTag,
21
+ loader,
22
+ size,
23
+ ...props
24
+ }) {
25
+ const input = _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(symbol, () => ( chainId)), () => ( walletKey)), () => ( brandKey));
26
+ if (!input) return _react.createElement.call(void 0, "span", null, _nullishCoalesce(loader, () => ( null)));
27
+ const iconType = symbol !== void 0 ? void 0 : chainId !== void 0 ? "chain" : brandKey !== void 0 ? "brand" : walletKey !== void 0 ? "brand" : void 0;
28
+ const icon = _react.createElement.call(void 0, _chunkLMGL65KIcjs.Icon, {
29
+ value: input,
30
+ type: iconType,
31
+ mono,
32
+ fallback: loader,
33
+ // Inside a frame the base icon fills the frame's slot — FrameWrapper
34
+ // owns the pixel size and insets the slot container.
35
+ size: assetTag ? "100%" : size,
36
+ ...props
37
+ });
38
+ if (assetTag) {
39
+ return _react.createElement.call(void 0,
40
+ _chunkIEWJOWAPcjs.FrameWrapper,
41
+ {
42
+ frame: assetTag,
43
+ variant: mono ? "mono" : "full",
44
+ size
45
+ },
46
+ icon
47
+ );
48
+ }
49
+ return icon;
50
+ }
51
+
52
+
53
+ exports.Web3Icon = Web3Icon;
54
+ //# sourceMappingURL=compat.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/icons/icons/packages/react/dist/compat.cjs","../src/compat.ts"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACXA,8BAA8B;AAoBvB,SAAS,QAAA,CAAS;AAAA,EACvB,MAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,IAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAkB;AAChB,EAAA,MAAM,MAAA,qDAAQ,MAAA,UAAU,SAAA,UAAW,WAAA,UAAa,UAAA;AAChD,EAAA,GAAA,CAAI,CAAC,KAAA,EAAO,OAAO,kCAAA,MAAc,EAAQ,IAAA,mBAAM,MAAA,UAAU,MAAI,CAAA;AAC7D,EAAA,MAAM,SAAA,EACJ,OAAA,IAAW,KAAA,EAAA,EACP,KAAA,EAAA,EACA,QAAA,IAAY,KAAA,EAAA,EACV,QAAA,EACA,SAAA,IAAa,KAAA,EAAA,EACX,QAAA,EACA,UAAA,IAAc,KAAA,EAAA,EACZ,QAAA,EACA,KAAA,CAAA;AAEZ,EAAA,MAAM,KAAA,EAAO,kCAAA,sBAAc,EAAM;AAAA,IAC/B,KAAA,EAAO,KAAA;AAAA,IACP,IAAA,EAAM,QAAA;AAAA,IACN,IAAA;AAAA,IACA,QAAA,EAAU,MAAA;AAAA;AAAA;AAAA,IAGV,IAAA,EAAM,SAAA,EAAW,OAAA,EAAS,IAAA;AAAA,IAC1B,GAAG;AAAA,EACL,CAAC,CAAA;AAED,EAAA,GAAA,CAAI,QAAA,EAAU;AACZ,IAAA,OAAO,kCAAA;AAAA,MACL,8BAAA;AAAA,MACA;AAAA,QACE,KAAA,EAAO,QAAA;AAAA,QACP,OAAA,EAAS,KAAA,EAAO,OAAA,EAAS,MAAA;AAAA,QACzB;AAAA,MACF,CAAA;AAAA,MACA;AAAA,IACF,CAAA;AAAA,EACF;AAEA,EAAA,OAAO,IAAA;AACT;ADlBA;AACE;AACF,4BAAC","file":"/home/runner/work/icons/icons/packages/react/dist/compat.cjs","sourcesContent":[null,"import { createElement } from 'react'\nimport type { ReactNode, SVGProps } from 'react'\nimport { Icon } from './index'\nimport { FrameWrapper } from './frames'\nimport type { IconType } from './types'\n\n// Drop `type` from the inherited SVG attributes so it can't shadow Icon's\n// `type` prop on spread; Web3Icon picks its target type from chainId/brandKey\n// internally.\nexport interface Web3IconProps extends Omit<SVGProps<SVGSVGElement>, 'type'> {\n symbol?: string\n chainId?: number | string\n walletKey?: string\n brandKey?: string\n mono?: boolean\n assetTag?: string\n loader?: ReactNode\n size?: number | string\n}\n\nexport function Web3Icon({\n symbol,\n chainId,\n walletKey,\n brandKey,\n mono,\n assetTag,\n loader,\n size,\n ...props\n}: Web3IconProps) {\n const input = symbol ?? chainId ?? walletKey ?? brandKey\n if (!input) return createElement('span', null, loader ?? null)\n const iconType: IconType | undefined =\n symbol !== undefined\n ? undefined\n : chainId !== undefined\n ? 'chain'\n : brandKey !== undefined\n ? 'brand'\n : walletKey !== undefined\n ? 'brand'\n : undefined\n\n const icon = createElement(Icon, {\n value: input,\n type: iconType,\n mono,\n fallback: loader,\n // Inside a frame the base icon fills the frame's slot — FrameWrapper\n // owns the pixel size and insets the slot container.\n size: assetTag ? '100%' : size,\n ...props,\n })\n\n if (assetTag) {\n return createElement(\n FrameWrapper,\n {\n frame: assetTag,\n variant: mono ? 'mono' : 'full',\n size,\n },\n icon,\n )\n }\n\n return icon\n}\n"]}
@@ -0,0 +1,20 @@
1
+ import { FrameWrapperProps } from './frames.cjs';
2
+ import { IconProps } from './index.cjs';
3
+ import * as react from 'react';
4
+ import { SVGProps, ReactNode } from 'react';
5
+ import 'react/jsx-runtime';
6
+ import '@smbdy/icons';
7
+
8
+ interface Web3IconProps extends Omit<SVGProps<SVGSVGElement>, 'type'> {
9
+ symbol?: string;
10
+ chainId?: number | string;
11
+ walletKey?: string;
12
+ brandKey?: string;
13
+ mono?: boolean;
14
+ assetTag?: string;
15
+ loader?: ReactNode;
16
+ size?: number | string;
17
+ }
18
+ declare function Web3Icon({ symbol, chainId, walletKey, brandKey, mono, assetTag, loader, size, ...props }: Web3IconProps): react.DetailedReactHTMLElement<react.HTMLAttributes<HTMLElement>, HTMLElement> | react.FunctionComponentElement<IconProps> | react.FunctionComponentElement<FrameWrapperProps>;
19
+
20
+ export { Web3Icon, type Web3IconProps };
@@ -0,0 +1,20 @@
1
+ import { FrameWrapperProps } from './frames.js';
2
+ import { IconProps } from './index.js';
3
+ import * as react from 'react';
4
+ import { SVGProps, ReactNode } from 'react';
5
+ import 'react/jsx-runtime';
6
+ import '@smbdy/icons';
7
+
8
+ interface Web3IconProps extends Omit<SVGProps<SVGSVGElement>, 'type'> {
9
+ symbol?: string;
10
+ chainId?: number | string;
11
+ walletKey?: string;
12
+ brandKey?: string;
13
+ mono?: boolean;
14
+ assetTag?: string;
15
+ loader?: ReactNode;
16
+ size?: number | string;
17
+ }
18
+ declare function Web3Icon({ symbol, chainId, walletKey, brandKey, mono, assetTag, loader, size, ...props }: Web3IconProps): react.DetailedReactHTMLElement<react.HTMLAttributes<HTMLElement>, HTMLElement> | react.FunctionComponentElement<IconProps> | react.FunctionComponentElement<FrameWrapperProps>;
19
+
20
+ export { Web3Icon, type Web3IconProps };
package/dist/compat.js ADDED
@@ -0,0 +1,56 @@
1
+ "use client";
2
+
3
+ import {
4
+ Icon
5
+ } from "./chunk-XWYUXPMU.js";
6
+ import "./chunk-ICEGTX2E.js";
7
+ import "./chunk-35GWSGWA.js";
8
+ import "./chunk-R2LI45CO.js";
9
+ import "./chunk-OVJUO4KZ.js";
10
+ import {
11
+ FrameWrapper
12
+ } from "./chunk-OPA5IJQV.js";
13
+
14
+ // src/compat.ts
15
+ import { createElement } from "react";
16
+ function Web3Icon({
17
+ symbol,
18
+ chainId,
19
+ walletKey,
20
+ brandKey,
21
+ mono,
22
+ assetTag,
23
+ loader,
24
+ size,
25
+ ...props
26
+ }) {
27
+ const input = symbol ?? chainId ?? walletKey ?? brandKey;
28
+ if (!input) return createElement("span", null, loader ?? null);
29
+ const iconType = symbol !== void 0 ? void 0 : chainId !== void 0 ? "chain" : brandKey !== void 0 ? "brand" : walletKey !== void 0 ? "brand" : void 0;
30
+ const icon = createElement(Icon, {
31
+ value: input,
32
+ type: iconType,
33
+ mono,
34
+ fallback: loader,
35
+ // Inside a frame the base icon fills the frame's slot — FrameWrapper
36
+ // owns the pixel size and insets the slot container.
37
+ size: assetTag ? "100%" : size,
38
+ ...props
39
+ });
40
+ if (assetTag) {
41
+ return createElement(
42
+ FrameWrapper,
43
+ {
44
+ frame: assetTag,
45
+ variant: mono ? "mono" : "full",
46
+ size
47
+ },
48
+ icon
49
+ );
50
+ }
51
+ return icon;
52
+ }
53
+ export {
54
+ Web3Icon
55
+ };
56
+ //# sourceMappingURL=compat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/compat.ts"],"sourcesContent":["import { createElement } from 'react'\nimport type { ReactNode, SVGProps } from 'react'\nimport { Icon } from './index'\nimport { FrameWrapper } from './frames'\nimport type { IconType } from './types'\n\n// Drop `type` from the inherited SVG attributes so it can't shadow Icon's\n// `type` prop on spread; Web3Icon picks its target type from chainId/brandKey\n// internally.\nexport interface Web3IconProps extends Omit<SVGProps<SVGSVGElement>, 'type'> {\n symbol?: string\n chainId?: number | string\n walletKey?: string\n brandKey?: string\n mono?: boolean\n assetTag?: string\n loader?: ReactNode\n size?: number | string\n}\n\nexport function Web3Icon({\n symbol,\n chainId,\n walletKey,\n brandKey,\n mono,\n assetTag,\n loader,\n size,\n ...props\n}: Web3IconProps) {\n const input = symbol ?? chainId ?? walletKey ?? brandKey\n if (!input) return createElement('span', null, loader ?? null)\n const iconType: IconType | undefined =\n symbol !== undefined\n ? undefined\n : chainId !== undefined\n ? 'chain'\n : brandKey !== undefined\n ? 'brand'\n : walletKey !== undefined\n ? 'brand'\n : undefined\n\n const icon = createElement(Icon, {\n value: input,\n type: iconType,\n mono,\n fallback: loader,\n // Inside a frame the base icon fills the frame's slot — FrameWrapper\n // owns the pixel size and insets the slot container.\n size: assetTag ? '100%' : size,\n ...props,\n })\n\n if (assetTag) {\n return createElement(\n FrameWrapper,\n {\n frame: assetTag,\n variant: mono ? 'mono' : 'full',\n size,\n },\n icon,\n )\n }\n\n return icon\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA,SAAS,qBAAqB;AAoBvB,SAAS,SAAS;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAkB;AAChB,QAAM,QAAQ,UAAU,WAAW,aAAa;AAChD,MAAI,CAAC,MAAO,QAAO,cAAc,QAAQ,MAAM,UAAU,IAAI;AAC7D,QAAM,WACJ,WAAW,SACP,SACA,YAAY,SACV,UACA,aAAa,SACX,UACA,cAAc,SACZ,UACA;AAEZ,QAAM,OAAO,cAAc,MAAM;AAAA,IAC/B,OAAO;AAAA,IACP,MAAM;AAAA,IACN;AAAA,IACA,UAAU;AAAA;AAAA;AAAA,IAGV,MAAM,WAAW,SAAS;AAAA,IAC1B,GAAG;AAAA,EACL,CAAC;AAED,MAAI,UAAU;AACZ,WAAO;AAAA,MACL;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,SAAS,OAAO,SAAS;AAAA,QACzB;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;","names":[]}
@@ -0,0 +1,7 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunkIEWJOWAPcjs = require('./chunk-IEWJOWAP.cjs');
4
+
5
+
6
+ exports.FrameWrapper = _chunkIEWJOWAPcjs.FrameWrapper;
7
+ //# sourceMappingURL=frames.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/icons/icons/packages/react/dist/frames.cjs"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,sDAAC","file":"/home/runner/work/icons/icons/packages/react/dist/frames.cjs"}
@@ -0,0 +1,14 @@
1
+ import * as react from 'react';
2
+ import { ReactNode, CSSProperties } from 'react';
3
+
4
+ interface FrameWrapperProps {
5
+ frame: string;
6
+ variant?: 'full' | 'mono';
7
+ size?: number | string;
8
+ children?: ReactNode;
9
+ }
10
+ declare function FrameWrapper({ frame, variant, size, children, }: FrameWrapperProps): react.DetailedReactHTMLElement<react.HTMLAttributes<HTMLElement>, HTMLElement> | react.DetailedReactHTMLElement<{
11
+ style: CSSProperties;
12
+ }, HTMLElement>;
13
+
14
+ export { FrameWrapper, type FrameWrapperProps };
@@ -0,0 +1,14 @@
1
+ import * as react from 'react';
2
+ import { ReactNode, CSSProperties } from 'react';
3
+
4
+ interface FrameWrapperProps {
5
+ frame: string;
6
+ variant?: 'full' | 'mono';
7
+ size?: number | string;
8
+ children?: ReactNode;
9
+ }
10
+ declare function FrameWrapper({ frame, variant, size, children, }: FrameWrapperProps): react.DetailedReactHTMLElement<react.HTMLAttributes<HTMLElement>, HTMLElement> | react.DetailedReactHTMLElement<{
11
+ style: CSSProperties;
12
+ }, HTMLElement>;
13
+
14
+ export { FrameWrapper, type FrameWrapperProps };
package/dist/frames.js ADDED
@@ -0,0 +1,9 @@
1
+ "use client";
2
+
3
+ import {
4
+ FrameWrapper
5
+ } from "./chunk-OPA5IJQV.js";
6
+ export {
7
+ FrameWrapper
8
+ };
9
+ //# sourceMappingURL=frames.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}