@brightlocal/icons 2.1.1 → 2.2.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.
package/dist/dynamic.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("./icons/dynamic-icon.cjs"),o=require("./icons/dynamic-icon-imports.cjs"),e=require("./flag/dynamic-imports.cjs"),n=require("./social-media/dynamic-imports.cjs");exports.DynamicIcon=c.DynamicIcon;exports.iconImports=o.iconImports;exports.strokeIconNames=o.strokeIconNames;exports.flagIconNames=e.flagIconNames;exports.socialMediaIconNames=n.socialMediaIconNames;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("./icons/dynamic-icon.cjs"),o=require("./icons/dynamic-icon-imports.cjs"),n=require("./flag/dynamic-imports.cjs"),e=require("./social-media/dynamic-imports.cjs"),a=require("./flag/flag-icon.cjs");exports.DynamicIcon=c.DynamicIcon;exports.iconImports=o.iconImports;exports.strokeIconNames=o.strokeIconNames;exports.flagIconNames=n.flagIconNames;exports.socialMediaIconNames=e.socialMediaIconNames;exports.DynamicFlagIcon=a.DynamicFlagIcon;
package/dist/dynamic.d.ts CHANGED
@@ -20,4 +20,6 @@ export { flagIconNames } from './flag/dynamic-imports.js';
20
20
  export type { FlagIconName } from './flag/dynamic-imports.js';
21
21
  export { socialMediaIconNames } from './social-media/dynamic-imports.js';
22
22
  export type { SocialMediaIconName } from './social-media/dynamic-imports.js';
23
+ export { DynamicFlagIcon } from './flag/flag-icon.js';
24
+ export type { DynamicFlagIconProps } from './flag/flag-icon.js';
23
25
  //# sourceMappingURL=dynamic.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic.d.ts","sourceRoot":"","sources":["../src/dynamic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAC/E,YAAY,EACV,cAAc,EACd,kBAAkB,GACnB,MAAM,iCAAiC,CAAC;AAGzC,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,YAAY,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,YAAY,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC"}
1
+ {"version":3,"file":"dynamic.d.ts","sourceRoot":"","sources":["../src/dynamic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAC/E,YAAY,EACV,cAAc,EACd,kBAAkB,GACnB,MAAM,iCAAiC,CAAC;AAGzC,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,YAAY,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,YAAY,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAG7E,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC"}
package/dist/dynamic.js CHANGED
@@ -1,11 +1,13 @@
1
- import { DynamicIcon as e } from "./icons/dynamic-icon.js";
1
+ import { DynamicIcon as m } from "./icons/dynamic-icon.js";
2
2
  import { iconImports as a, strokeIconNames as c } from "./icons/dynamic-icon-imports.js";
3
- import { flagIconNames as s } from "./flag/dynamic-imports.js";
4
- import { socialMediaIconNames as f } from "./social-media/dynamic-imports.js";
3
+ import { flagIconNames as t } from "./flag/dynamic-imports.js";
4
+ import { socialMediaIconNames as p } from "./social-media/dynamic-imports.js";
5
+ import { DynamicFlagIcon as I } from "./flag/flag-icon.js";
5
6
  export {
6
- e as DynamicIcon,
7
- s as flagIconNames,
7
+ I as DynamicFlagIcon,
8
+ m as DynamicIcon,
9
+ t as flagIconNames,
8
10
  a as iconImports,
9
- f as socialMediaIconNames,
11
+ p as socialMediaIconNames,
10
12
  c as strokeIconNames
11
13
  };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),s=require("react"),d=require("../icons/dynamic-icon.cjs"),u=require("./dynamic-imports.cjs"),f=require("../icons/lucide-exports.cjs");function m(t){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const n in t)if(n!=="default"){const o=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(e,n,o.get?o:{enumerable:!0,get:()=>t[n]})}}return e.default=t,Object.freeze(e)}const g=m(s),y=new Set(u.flagIconNames),a=g.forwardRef(({country:t,size:e=20,className:n,style:o,...c},i)=>{const l=y.has(t);return r.jsx("span",{ref:i,"aria-hidden":"true",className:n,"data-slot":"flag-icon",style:{display:"inline-flex",alignItems:"center",justifyContent:"center",flexShrink:0,width:e,height:e,...o},...c,children:l?r.jsx(d.DynamicIcon,{name:t,size:e}):r.jsx("span",{"data-slot":"flag-icon-fallback",style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:e,height:e,borderRadius:"9999px",backgroundColor:"var(--color-muted, #f3f4f6)",color:"var(--color-muted-foreground, #6b7280)"},children:r.jsx(f.Globe,{size:Math.round(e*.65)})})})});a.displayName="DynamicFlagIcon";exports.DynamicFlagIcon=a;
@@ -0,0 +1,13 @@
1
+ import * as React from "react";
2
+ export interface DynamicFlagIconProps extends React.ComponentProps<"span"> {
3
+ /** ISO 3166-1 alpha-3 country code (e.g. "USA", "GBR") */
4
+ country: string;
5
+ /**
6
+ * Icon size in pixels (width and height)
7
+ * @default 20
8
+ */
9
+ size?: number;
10
+ }
11
+ declare const DynamicFlagIcon: React.ForwardRefExoticComponent<Omit<DynamicFlagIconProps, "ref"> & React.RefAttributes<HTMLSpanElement>>;
12
+ export { DynamicFlagIcon };
13
+ //# sourceMappingURL=flag-icon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flag-icon.d.ts","sourceRoot":"","sources":["../../src/flag/flag-icon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,MAAM,WAAW,oBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC;IACpC,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAID,QAAA,MAAM,eAAe,2GA8CpB,CAAC;AAIF,OAAO,EAAE,eAAe,EAAE,CAAC"}
@@ -0,0 +1,56 @@
1
+ import { jsx as o } from "react/jsx-runtime";
2
+ import * as c from "react";
3
+ import { DynamicIcon as f } from "../icons/dynamic-icon.js";
4
+ import { flagIconNames as m } from "./dynamic-imports.js";
5
+ import { Globe as d } from "../icons/lucide-exports.js";
6
+ const s = new Set(m), g = c.forwardRef(
7
+ ({ country: t, size: n = 20, className: a, style: e, ...r }, l) => {
8
+ const i = s.has(t);
9
+ return /* @__PURE__ */ o(
10
+ "span",
11
+ {
12
+ ref: l,
13
+ "aria-hidden": "true",
14
+ className: a,
15
+ "data-slot": "flag-icon",
16
+ style: {
17
+ display: "inline-flex",
18
+ alignItems: "center",
19
+ justifyContent: "center",
20
+ flexShrink: 0,
21
+ width: n,
22
+ height: n,
23
+ ...e
24
+ },
25
+ ...r,
26
+ children: i ? /* @__PURE__ */ o(
27
+ f,
28
+ {
29
+ name: t,
30
+ size: n
31
+ }
32
+ ) : /* @__PURE__ */ o(
33
+ "span",
34
+ {
35
+ "data-slot": "flag-icon-fallback",
36
+ style: {
37
+ display: "inline-flex",
38
+ alignItems: "center",
39
+ justifyContent: "center",
40
+ width: n,
41
+ height: n,
42
+ borderRadius: "9999px",
43
+ backgroundColor: "var(--color-muted, #f3f4f6)",
44
+ color: "var(--color-muted-foreground, #6b7280)"
45
+ },
46
+ children: /* @__PURE__ */ o(d, { size: Math.round(n * 0.65) })
47
+ }
48
+ )
49
+ }
50
+ );
51
+ }
52
+ );
53
+ g.displayName = "DynamicFlagIcon";
54
+ export {
55
+ g as DynamicFlagIcon
56
+ };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),y=require("react"),u=require("./dynamic-icon-imports.cjs");function p(e){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,o.get?o:{enumerable:!0,get:()=>e[t]})}}return n.default=e,Object.freeze(n)}const c=p(y),l={};for(const[e,n]of Object.entries(u.iconImports))n&&(l[e]=c.lazy(n));const f=c.forwardRef(({name:e,size:n=16,strokeWidth:t=1.33,absoluteStrokeWidth:o=!0,fallback:d=null,...r},s)=>{const i=l[e];if(!i)return console.warn(`Icon "${e}" not found in icon registry`),null;const m=u.strokeIconNames.has(e)?{ref:s,size:n,strokeWidth:t,absoluteStrokeWidth:o,...r}:{ref:s,size:n,...r};return a.jsx(c.Suspense,{fallback:d,children:a.jsx(i,{...m})})});f.displayName="DynamicIcon";exports.DynamicIcon=f;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react/jsx-runtime"),p=require("react"),u=require("./dynamic-icon-imports.cjs");function b(e){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,o.get?o:{enumerable:!0,get:()=>e[t]})}}return n.default=e,Object.freeze(n)}const r=b(p),d={};for(const[e,n]of Object.entries(u.iconImports))n&&(d[e]=r.lazy(n));const f=r.forwardRef(({name:e,size:n=16,strokeWidth:t=1.33,absoluteStrokeWidth:o=!0,fallback:i,...s},a)=>{const l=d[e];if(!l)return console.warn(`Icon "${e}" not found in icon registry`),null;const y=u.strokeIconNames.has(e)?{ref:a,size:n,strokeWidth:t,absoluteStrokeWidth:o,...s}:{ref:a,size:n,...s},m=i!==void 0?i:c.jsx("span",{"aria-hidden":"true",style:{display:"inline-block",width:n,height:n,flexShrink:0}});return c.jsx(r.Suspense,{fallback:m,children:c.jsx(l,{...y})})});f.displayName="DynamicIcon";exports.DynamicIcon=f;
@@ -31,7 +31,7 @@ export interface DynamicIconProps extends React.ComponentProps<"svg"> {
31
31
  absoluteStrokeWidth?: boolean;
32
32
  /**
33
33
  * Fallback content displayed while the icon is loading.
34
- * @default null
34
+ * Defaults to an invisible placeholder that matches the icon's dimensions to prevent layout shift.
35
35
  */
36
36
  fallback?: React.ReactNode;
37
37
  }
@@ -58,6 +58,10 @@ export interface DynamicIconProps extends React.ComponentProps<"svg"> {
58
58
  * <DynamicIcon name="camera" size={24} fallback={<Skeleton />} />
59
59
  *
60
60
  * @example
61
+ * // Opt out of default placeholder
62
+ * <DynamicIcon name="camera" size={24} fallback={null} />
63
+ *
64
+ * @example
61
65
  * // Database-driven
62
66
  * <DynamicIcon name={country.iso} size={16} />
63
67
  */
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic-icon.d.ts","sourceRoot":"","sources":["../../src/icons/dynamic-icon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAGL,KAAK,cAAc,EAEpB,MAAM,2BAA2B,CAAC;AAEnC,MAAM,WAAW,gBAAiB,SAAQ,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;IACnE;;;;;;OAMG;IACH,IAAI,EAAE,cAAc,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IACrC;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAsBD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,WAAW,qGAgCvB,CAAC"}
1
+ {"version":3,"file":"dynamic-icon.d.ts","sourceRoot":"","sources":["../../src/icons/dynamic-icon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAGL,KAAK,cAAc,EAEpB,MAAM,2BAA2B,CAAC;AAEnC,MAAM,WAAW,gBAAiB,SAAQ,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;IACnE;;;;;;OAMG;IACH,IAAI,EAAE,cAAc,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IACrC;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAsBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,WAAW,qGA+CvB,CAAC"}
@@ -1,28 +1,39 @@
1
- import { jsx as e } from "react/jsx-runtime";
2
- import * as r from "react";
3
- import { strokeIconNames as u, iconImports as I } from "./dynamic-icon-imports.js";
4
- const i = {};
5
- for (const [o, n] of Object.entries(I))
6
- n && (i[o] = r.lazy(
7
- n
1
+ import { jsx as r } from "react/jsx-runtime";
2
+ import * as t from "react";
3
+ import { strokeIconNames as p, iconImports as h } from "./dynamic-icon-imports.js";
4
+ const a = {};
5
+ for (const [n, o] of Object.entries(h))
6
+ o && (a[n] = t.lazy(
7
+ o
8
8
  ));
9
- const p = r.forwardRef(
9
+ const y = t.forwardRef(
10
10
  ({
11
- name: o,
12
- size: n = 16,
13
- strokeWidth: a = 1.33,
14
- absoluteStrokeWidth: l = !0,
15
- fallback: m = null,
16
- ...c
17
- }, t) => {
18
- const s = i[o];
11
+ name: n,
12
+ size: o = 16,
13
+ strokeWidth: l = 1.33,
14
+ absoluteStrokeWidth: d = !0,
15
+ fallback: c,
16
+ ...e
17
+ }, i) => {
18
+ const s = a[n];
19
19
  if (!s)
20
- return console.warn(`Icon "${o}" not found in icon registry`), null;
21
- const f = u.has(o) ? { ref: t, size: n, strokeWidth: a, absoluteStrokeWidth: l, ...c } : { ref: t, size: n, ...c };
22
- return /* @__PURE__ */ e(r.Suspense, { fallback: m, children: /* @__PURE__ */ e(s, { ...f }) });
20
+ return console.warn(`Icon "${n}" not found in icon registry`), null;
21
+ const f = p.has(n) ? { ref: i, size: o, strokeWidth: l, absoluteStrokeWidth: d, ...e } : { ref: i, size: o, ...e }, m = c !== void 0 ? c : /* @__PURE__ */ r(
22
+ "span",
23
+ {
24
+ "aria-hidden": "true",
25
+ style: {
26
+ display: "inline-block",
27
+ width: o,
28
+ height: o,
29
+ flexShrink: 0
30
+ }
31
+ }
32
+ );
33
+ return /* @__PURE__ */ r(t.Suspense, { fallback: m, children: /* @__PURE__ */ r(s, { ...f }) });
23
34
  }
24
35
  );
25
- p.displayName = "DynamicIcon";
36
+ y.displayName = "DynamicIcon";
26
37
  export {
27
- p as DynamicIcon
38
+ y as DynamicIcon
28
39
  };