@a-type/ui 2.1.14 → 2.1.15

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.
@@ -1,9 +1,10 @@
1
- import { CSSProperties } from 'react';
1
+ import { CSSProperties, HTMLProps } from 'react';
2
2
  export interface AvatarProps {
3
3
  className?: string;
4
4
  popIn?: boolean;
5
5
  style?: CSSProperties;
6
6
  imageSrc?: string | null;
7
7
  name?: string;
8
+ crossOrigin?: HTMLProps<HTMLImageElement>['crossOrigin'];
8
9
  }
9
- export declare function Avatar({ className, popIn, imageSrc, name, ...rest }: AvatarProps): import("react/jsx-runtime.js").JSX.Element;
10
+ export declare function Avatar({ className, popIn, imageSrc, name, crossOrigin, ...rest }: AvatarProps): import("react/jsx-runtime.js").JSX.Element;
@@ -18,16 +18,21 @@ Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.Avatar = Avatar;
19
19
  const jsx_runtime_1 = require("react/jsx-runtime");
20
20
  const clsx_1 = __importDefault(require("clsx"));
21
+ const react_1 = require("react");
21
22
  const index_js_1 = require("../icon/index.js");
22
23
  function Avatar(_a) {
23
- var { className, popIn = false, imageSrc, name } = _a, rest = __rest(_a, ["className", "popIn", "imageSrc", "name"]);
24
+ var { className, popIn = false, imageSrc, name, crossOrigin } = _a, rest = __rest(_a, ["className", "popIn", "imageSrc", "name", "crossOrigin"]);
24
25
  const empty = !name && !imageSrc;
25
26
  return ((0, jsx_runtime_1.jsxs)("div", Object.assign({ "data-pop": popIn, className: (0, clsx_1.default)('layer-components:flex layer-components:items-center layer-components:justify-center layer-components:rounded-lg layer-components:border-default layer-components:overflow-hidden layer-components:w-24px layer-components:aspect-1 layer-components:select-none layer-components:relative layer-components:bg-white layer-components:flex-shrink-0', popIn &&
26
- 'layer-variants:animate-pop-in-from-half layer-variants:animate-ease-springy layer-variants:animate-duration-200', empty && 'layer-components(border-dashed bg-gray-light)', className) }, rest, { children: [!empty && (0, jsx_runtime_1.jsx)(AvatarContent, { name: name, imageSrc: imageSrc }), empty && (0, jsx_runtime_1.jsx)(index_js_1.Icon, { name: "profile" })] })));
27
+ 'layer-variants:animate-pop-in-from-half layer-variants:animate-ease-springy layer-variants:animate-duration-200', empty && 'layer-components(border-dashed bg-gray-light)', className) }, rest, { children: [!empty && ((0, jsx_runtime_1.jsx)(AvatarContent, { name: name, imageSrc: imageSrc, crossOrigin: crossOrigin })), empty && (0, jsx_runtime_1.jsx)(index_js_1.Icon, { name: "profile" })] })));
27
28
  }
28
- function AvatarContent({ name, imageSrc, }) {
29
- if (imageSrc) {
30
- return ((0, jsx_runtime_1.jsx)("img", { className: "w-full h-full object-cover", referrerPolicy: "no-referrer", crossOrigin: "anonymous", src: imageSrc, alt: `${name !== null && name !== void 0 ? name : 'user'}'s profile picture` }));
29
+ function AvatarContent({ name, imageSrc, crossOrigin = 'anonymous', }) {
30
+ const [fallback, setFallback] = (0, react_1.useState)(false);
31
+ const triggerFallback = () => {
32
+ setFallback(true);
33
+ };
34
+ if (imageSrc && !fallback) {
35
+ return ((0, jsx_runtime_1.jsx)("img", { className: "w-full h-full object-cover", referrerPolicy: "no-referrer", src: imageSrc, alt: `${name !== null && name !== void 0 ? name : 'user'}'s profile picture`, crossOrigin: crossOrigin, onError: triggerFallback }));
31
36
  }
32
37
  return ((0, jsx_runtime_1.jsx)("div", { className: "color-black items-center justify-center flex text-sm font-bold", children: (name === null || name === void 0 ? void 0 : name.charAt(0)) || '?' }));
33
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Avatar.js","sourceRoot":"","sources":["../../../../src/components/avatar/Avatar.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAYA,wBAwBC;;AApCD,gDAA8B;AAE9B,+CAAwC;AAUxC,SAAgB,MAAM,CAAC,EAMT;QANS,EACtB,SAAS,EACT,KAAK,GAAG,KAAK,EACb,QAAQ,EACR,IAAI,OAES,EADV,IAAI,cALe,0CAMtB,CADO;IAEP,MAAM,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC;IACjC,OAAO,CACN,2DACW,KAAK,EACf,SAAS,EAAE,IAAA,cAAU,EACpB,2JAA2J,EAC3J,KAAK;YACJ,qFAAqF,EACtF,KAAK,IAAI,+CAA+C,EACxD,SAAS,CACT,IACG,IAAI,eAEP,CAAC,KAAK,IAAI,uBAAC,aAAa,IAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,GAAI,EAC3D,KAAK,IAAI,uBAAC,eAAI,IAAC,IAAI,EAAC,SAAS,GAAG,KAC5B,CACN,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,EACtB,IAAI,EACJ,QAAQ,GAIR;IACA,IAAI,QAAQ,EAAE,CAAC;QACd,OAAO,CACN,gCACC,SAAS,EAAC,4BAA4B,EACtC,cAAc,EAAC,aAAa,EAC5B,WAAW,EAAC,WAAW,EACvB,GAAG,EAAE,QAAQ,EACb,GAAG,EAAE,GAAG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,MAAM,oBAAoB,GACzC,CACF,CAAC;IACH,CAAC;IACD,OAAO,CACN,gCAAK,SAAS,EAAC,gEAAgE,YAC7E,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAC,CAAC,CAAC,KAAI,GAAG,GAClB,CACN,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"Avatar.js","sourceRoot":"","sources":["../../../../src/components/avatar/Avatar.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAaA,wBA+BC;;AA5CD,gDAA8B;AAC9B,iCAA2D;AAC3D,+CAAwC;AAWxC,SAAgB,MAAM,CAAC,EAOT;QAPS,EACtB,SAAS,EACT,KAAK,GAAG,KAAK,EACb,QAAQ,EACR,IAAI,EACJ,WAAW,OAEE,EADV,IAAI,cANe,yDAOtB,CADO;IAEP,MAAM,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC;IACjC,OAAO,CACN,2DACW,KAAK,EACf,SAAS,EAAE,IAAA,cAAU,EACpB,2JAA2J,EAC3J,KAAK;YACJ,qFAAqF,EACtF,KAAK,IAAI,+CAA+C,EACxD,SAAS,CACT,IACG,IAAI,eAEP,CAAC,KAAK,IAAI,CACV,uBAAC,aAAa,IACb,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,GACvB,CACF,EACA,KAAK,IAAI,uBAAC,eAAI,IAAC,IAAI,EAAC,SAAS,GAAG,KAC5B,CACN,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,EACtB,IAAI,EACJ,QAAQ,EACR,WAAW,GAAG,WAAW,GAKzB;IACA,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAChD,MAAM,eAAe,GAAG,GAAG,EAAE;QAC5B,WAAW,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC,CAAC;IACF,IAAI,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC3B,OAAO,CACN,gCACC,SAAS,EAAC,4BAA4B,EACtC,cAAc,EAAC,aAAa,EAC5B,GAAG,EAAE,QAAQ,EACb,GAAG,EAAE,GAAG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,MAAM,oBAAoB,EAC1C,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,eAAe,GACvB,CACF,CAAC;IACH,CAAC;IACD,OAAO,CACN,gCAAK,SAAS,EAAC,gEAAgE,YAC7E,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAC,CAAC,CAAC,KAAI,GAAG,GAClB,CACN,CAAC;AACH,CAAC"}
@@ -1,9 +1,10 @@
1
- import { CSSProperties } from 'react';
1
+ import { CSSProperties, HTMLProps } from 'react';
2
2
  export interface AvatarProps {
3
3
  className?: string;
4
4
  popIn?: boolean;
5
5
  style?: CSSProperties;
6
6
  imageSrc?: string | null;
7
7
  name?: string;
8
+ crossOrigin?: HTMLProps<HTMLImageElement>['crossOrigin'];
8
9
  }
9
- export declare function Avatar({ className, popIn, imageSrc, name, ...rest }: AvatarProps): import("react/jsx-runtime").JSX.Element;
10
+ export declare function Avatar({ className, popIn, imageSrc, name, crossOrigin, ...rest }: AvatarProps): import("react/jsx-runtime").JSX.Element;
@@ -12,16 +12,21 @@ var __rest = (this && this.__rest) || function (s, e) {
12
12
  };
13
13
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
14
  import classNames from 'clsx';
15
+ import { useState } from 'react';
15
16
  import { Icon } from '../icon/index.js';
16
17
  export function Avatar(_a) {
17
- var { className, popIn = false, imageSrc, name } = _a, rest = __rest(_a, ["className", "popIn", "imageSrc", "name"]);
18
+ var { className, popIn = false, imageSrc, name, crossOrigin } = _a, rest = __rest(_a, ["className", "popIn", "imageSrc", "name", "crossOrigin"]);
18
19
  const empty = !name && !imageSrc;
19
20
  return (_jsxs("div", Object.assign({ "data-pop": popIn, className: classNames('layer-components:flex layer-components:items-center layer-components:justify-center layer-components:rounded-lg layer-components:border-default layer-components:overflow-hidden layer-components:w-24px layer-components:aspect-1 layer-components:select-none layer-components:relative layer-components:bg-white layer-components:flex-shrink-0', popIn &&
20
- 'layer-variants:animate-pop-in-from-half layer-variants:animate-ease-springy layer-variants:animate-duration-200', empty && 'layer-components(border-dashed bg-gray-light)', className) }, rest, { children: [!empty && _jsx(AvatarContent, { name: name, imageSrc: imageSrc }), empty && _jsx(Icon, { name: "profile" })] })));
21
+ 'layer-variants:animate-pop-in-from-half layer-variants:animate-ease-springy layer-variants:animate-duration-200', empty && 'layer-components(border-dashed bg-gray-light)', className) }, rest, { children: [!empty && (_jsx(AvatarContent, { name: name, imageSrc: imageSrc, crossOrigin: crossOrigin })), empty && _jsx(Icon, { name: "profile" })] })));
21
22
  }
22
- function AvatarContent({ name, imageSrc, }) {
23
- if (imageSrc) {
24
- return (_jsx("img", { className: "w-full h-full object-cover", referrerPolicy: "no-referrer", crossOrigin: "anonymous", src: imageSrc, alt: `${name !== null && name !== void 0 ? name : 'user'}'s profile picture` }));
23
+ function AvatarContent({ name, imageSrc, crossOrigin = 'anonymous', }) {
24
+ const [fallback, setFallback] = useState(false);
25
+ const triggerFallback = () => {
26
+ setFallback(true);
27
+ };
28
+ if (imageSrc && !fallback) {
29
+ return (_jsx("img", { className: "w-full h-full object-cover", referrerPolicy: "no-referrer", src: imageSrc, alt: `${name !== null && name !== void 0 ? name : 'user'}'s profile picture`, crossOrigin: crossOrigin, onError: triggerFallback }));
25
30
  }
26
31
  return (_jsx("div", { className: "color-black items-center justify-center flex text-sm font-bold", children: (name === null || name === void 0 ? void 0 : name.charAt(0)) || '?' }));
27
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Avatar.js","sourceRoot":"","sources":["../../../../src/components/avatar/Avatar.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,UAAU,MAAM,MAAM,CAAC;AAE9B,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAUxC,MAAM,UAAU,MAAM,CAAC,EAMT;QANS,EACtB,SAAS,EACT,KAAK,GAAG,KAAK,EACb,QAAQ,EACR,IAAI,OAES,EADV,IAAI,cALe,0CAMtB,CADO;IAEP,MAAM,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC;IACjC,OAAO,CACN,yCACW,KAAK,EACf,SAAS,EAAE,UAAU,CACpB,2JAA2J,EAC3J,KAAK;YACJ,qFAAqF,EACtF,KAAK,IAAI,+CAA+C,EACxD,SAAS,CACT,IACG,IAAI,eAEP,CAAC,KAAK,IAAI,KAAC,aAAa,IAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,GAAI,EAC3D,KAAK,IAAI,KAAC,IAAI,IAAC,IAAI,EAAC,SAAS,GAAG,KAC5B,CACN,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,EACtB,IAAI,EACJ,QAAQ,GAIR;IACA,IAAI,QAAQ,EAAE,CAAC;QACd,OAAO,CACN,cACC,SAAS,EAAC,4BAA4B,EACtC,cAAc,EAAC,aAAa,EAC5B,WAAW,EAAC,WAAW,EACvB,GAAG,EAAE,QAAQ,EACb,GAAG,EAAE,GAAG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,MAAM,oBAAoB,GACzC,CACF,CAAC;IACH,CAAC;IACD,OAAO,CACN,cAAK,SAAS,EAAC,gEAAgE,YAC7E,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAC,CAAC,CAAC,KAAI,GAAG,GAClB,CACN,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"Avatar.js","sourceRoot":"","sources":["../../../../src/components/avatar/Avatar.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,UAAU,MAAM,MAAM,CAAC;AAC9B,OAAO,EAA4B,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAWxC,MAAM,UAAU,MAAM,CAAC,EAOT;QAPS,EACtB,SAAS,EACT,KAAK,GAAG,KAAK,EACb,QAAQ,EACR,IAAI,EACJ,WAAW,OAEE,EADV,IAAI,cANe,yDAOtB,CADO;IAEP,MAAM,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC;IACjC,OAAO,CACN,yCACW,KAAK,EACf,SAAS,EAAE,UAAU,CACpB,2JAA2J,EAC3J,KAAK;YACJ,qFAAqF,EACtF,KAAK,IAAI,+CAA+C,EACxD,SAAS,CACT,IACG,IAAI,eAEP,CAAC,KAAK,IAAI,CACV,KAAC,aAAa,IACb,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,GACvB,CACF,EACA,KAAK,IAAI,KAAC,IAAI,IAAC,IAAI,EAAC,SAAS,GAAG,KAC5B,CACN,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,EACtB,IAAI,EACJ,QAAQ,EACR,WAAW,GAAG,WAAW,GAKzB;IACA,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,eAAe,GAAG,GAAG,EAAE;QAC5B,WAAW,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC,CAAC;IACF,IAAI,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC3B,OAAO,CACN,cACC,SAAS,EAAC,4BAA4B,EACtC,cAAc,EAAC,aAAa,EAC5B,GAAG,EAAE,QAAQ,EACb,GAAG,EAAE,GAAG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,MAAM,oBAAoB,EAC1C,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,eAAe,GACvB,CACF,CAAC;IACH,CAAC;IACD,OAAO,CACN,cAAK,SAAS,EAAC,gEAAgE,YAC7E,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAC,CAAC,CAAC,KAAI,GAAG,GAClB,CACN,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@a-type/ui",
3
- "version": "2.1.14",
3
+ "version": "2.1.15",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "/dist",
@@ -1,5 +1,5 @@
1
1
  import classNames from 'clsx';
2
- import { CSSProperties } from 'react';
2
+ import { CSSProperties, HTMLProps, useState } from 'react';
3
3
  import { Icon } from '../icon/index.js';
4
4
 
5
5
  export interface AvatarProps {
@@ -8,6 +8,7 @@ export interface AvatarProps {
8
8
  style?: CSSProperties;
9
9
  imageSrc?: string | null;
10
10
  name?: string;
11
+ crossOrigin?: HTMLProps<HTMLImageElement>['crossOrigin'];
11
12
  }
12
13
 
13
14
  export function Avatar({
@@ -15,6 +16,7 @@ export function Avatar({
15
16
  popIn = false,
16
17
  imageSrc,
17
18
  name,
19
+ crossOrigin,
18
20
  ...rest
19
21
  }: AvatarProps) {
20
22
  const empty = !name && !imageSrc;
@@ -30,7 +32,13 @@ export function Avatar({
30
32
  )}
31
33
  {...rest}
32
34
  >
33
- {!empty && <AvatarContent name={name} imageSrc={imageSrc} />}
35
+ {!empty && (
36
+ <AvatarContent
37
+ name={name}
38
+ imageSrc={imageSrc}
39
+ crossOrigin={crossOrigin}
40
+ />
41
+ )}
34
42
  {empty && <Icon name="profile" />}
35
43
  </div>
36
44
  );
@@ -39,18 +47,25 @@ export function Avatar({
39
47
  function AvatarContent({
40
48
  name,
41
49
  imageSrc,
50
+ crossOrigin = 'anonymous',
42
51
  }: {
43
52
  name?: string;
44
53
  imageSrc?: string | null;
54
+ crossOrigin?: HTMLProps<HTMLImageElement>['crossOrigin'];
45
55
  }) {
46
- if (imageSrc) {
56
+ const [fallback, setFallback] = useState(false);
57
+ const triggerFallback = () => {
58
+ setFallback(true);
59
+ };
60
+ if (imageSrc && !fallback) {
47
61
  return (
48
62
  <img
49
63
  className="w-full h-full object-cover"
50
64
  referrerPolicy="no-referrer"
51
- crossOrigin="anonymous"
52
65
  src={imageSrc}
53
66
  alt={`${name ?? 'user'}'s profile picture`}
67
+ crossOrigin={crossOrigin}
68
+ onError={triggerFallback}
54
69
  />
55
70
  );
56
71
  }