@luscii-healthtech/web-ui 58.10.0 → 58.10.1

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.
@@ -15,7 +15,20 @@ function checkImageValidity(src) {
15
15
  image.src = src;
16
16
  });
17
17
  }
18
- const Avatar = ({ color = "slate", size = "medium", applyGroupOffset, src, alt, defaultImage, initials, children, className }) => {
18
+ const legacySizeAliases = {
19
+ xsmall: "xs",
20
+ small: "s",
21
+ medium: "m"
22
+ };
23
+ const avatarSizeTokens = {
24
+ xs: "var(--ui-semantic-size-lg)",
25
+ s: "var(--ui-semantic-size-xl)",
26
+ m: "var(--ui-semantic-size-5xl)"
27
+ };
28
+ function resolveSize(size) {
29
+ return size in legacySizeAliases ? legacySizeAliases[size] : size;
30
+ }
31
+ const Avatar = ({ color, isSelf, size = "m", applyGroupOffset, src, alt, defaultImage, initials, children, className }) => {
19
32
  const [hasValidImage, setHasValidImage] = useState(false);
20
33
  useEffect(() => {
21
34
  let mounted = true;
@@ -30,29 +43,42 @@ const Avatar = ({ color = "slate", size = "medium", applyGroupOffset, src, alt,
30
43
  mounted = false;
31
44
  };
32
45
  }, [defaultImage, src]);
46
+ const resolvedSize = resolveSize(size);
47
+ const sizeStyle = resolvedSize === "large" ? void 0 : {
48
+ width: avatarSizeTokens[resolvedSize],
49
+ height: avatarSizeTokens[resolvedSize]
50
+ };
33
51
  const sizeClassName = classNames("ui:rounded-full", {
34
- "ui:h-32 ui:w-32": size === "large",
35
- "ui:h-16 ui:w-16": size === "medium",
36
- "ui:h-9 ui:w-9": size === "small",
37
- "ui:h-6 ui:w-6": size === "xsmall"
52
+ "ui:h-32 ui:w-32": resolvedSize === "large"
38
53
  });
39
54
  const groupOffsetClassNames = classNames({
40
- "ui:-ml-[calc(theme('spacing.32')/4)]": size === "large" && applyGroupOffset,
41
- "ui:-ml-[calc(theme('spacing.16')/4)]": size === "medium" && applyGroupOffset,
42
- "ui:-ml-[calc(theme('spacing.9')/4)]": size === "small" && applyGroupOffset,
43
- "ui:-ml-[calc(theme('spacing.6')/4)]": size === "xsmall" && applyGroupOffset
55
+ "ui:-ml-[calc(theme('spacing.32')/4)]": resolvedSize === "large" && applyGroupOffset
44
56
  });
57
+ const groupOffsetStyle = applyGroupOffset && resolvedSize !== "large" ? { marginLeft: `calc(${avatarSizeTokens[resolvedSize]} / -4)` } : void 0;
58
+ const resolvedIsSelf = isSelf !== null && isSelf !== void 0 ? isSelf : color === "primary";
45
59
  const colorClassName = classNames({
46
- "ui:bg-neutral-200 ui:text-on-surface": color === "slate",
47
- "ui:bg-primary ui:text-white": color === "primary"
48
- });
49
- const containerClassName = classNames(className, sizeClassName, groupOffsetClassNames, colorClassName, "ui:flex ui:items-center ui:justify-center");
50
- const textClassName = classNames({
51
- "ui:text-5xl": size === "large",
52
- "ui:text-2xl": size === "medium",
53
- "ui:text-sm": size === "small" || size === "xsmall"
60
+ "ui:bg-background-brand-primary-default ui:text-text-inverse-primary-default": resolvedIsSelf,
61
+ "ui:bg-background-neutral-tertiary-default ui:text-text-neutral-primary-default": !resolvedIsSelf
54
62
  });
55
- const imageClassName = classNames(sizeClassName);
63
+ const containerClassName = classNames(
64
+ className,
65
+ sizeClassName,
66
+ groupOffsetClassNames,
67
+ colorClassName,
68
+ /**
69
+ * The design system puts a 1px inverse border on every avatar. It
70
+ * sits inside the box (`border-box`), so the sizes above stay exact.
71
+ */
72
+ "ui:border ui:border-solid ui:border-border-inverse-primary-default",
73
+ /**
74
+ * `shrink-0` keeps the avatar circular when it is a flex child, for
75
+ * example inside an `AvatarGroup`, where the negative margins would
76
+ * otherwise let the flex algorithm squash it.
77
+ */
78
+ "ui:flex ui:shrink-0 ui:items-center ui:justify-center"
79
+ );
80
+ const textVariant = resolvedSize === "m" ? "body-base-regular" : "body-small-regular";
81
+ const imageClassName = classNames("ui:rounded-full ui:h-full ui:w-full ui:object-cover");
56
82
  const renderAvatar = () => {
57
83
  const elementToRender = initials !== null && initials !== void 0 ? initials : children;
58
84
  if (defaultImage) {
@@ -60,13 +86,13 @@ const Avatar = ({ color = "slate", size = "medium", applyGroupOffset, src, alt,
60
86
  } else if (hasValidImage) {
61
87
  return jsx("img", { className: imageClassName, src, alt });
62
88
  } else {
63
- if (size === "xsmall") {
64
- return jsxs(Fragment, { children: [jsx(Text, { variant: "sm", color: "current", "aria-hidden": true, children: elementToRender }), jsx(ScreenReaderText, { children: alt })] });
89
+ if (resolvedSize === "large") {
90
+ return jsxs(Fragment, { children: [jsx("span", { className: "ui:text-5xl", "aria-hidden": true, children: elementToRender }), jsx(ScreenReaderText, { children: alt })] });
65
91
  }
66
- return jsxs(Fragment, { children: [jsx("span", { className: textClassName, "aria-hidden": true, children: elementToRender }), jsx(ScreenReaderText, { children: alt })] });
92
+ return jsxs(Fragment, { children: [jsx(Text, { variant: textVariant, color: "current", "aria-hidden": true, children: elementToRender }), jsx(ScreenReaderText, { children: alt })] });
67
93
  }
68
94
  };
69
- return jsx("div", { className: containerClassName, children: jsx("div", { children: renderAvatar() }) });
95
+ return jsx("div", { className: containerClassName, style: Object.assign(Object.assign({}, sizeStyle), groupOffsetStyle), children: renderAvatar() });
70
96
  };
71
97
  function ScreenReaderText({ children }) {
72
98
  return jsx("span", { className: "ui:sr-only", children });
@@ -1 +1 @@
1
- {"version":3,"file":"Avatar.js","sources":["../../../../../../src/components/Avatar/Avatar.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"Avatar.js","sources":["../../../../../../src/components/Avatar/Avatar.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
@@ -27,12 +27,20 @@ const AvatarGroup = (props) => {
27
27
  "ui:outline-slate-100": props.outlineColor === "slate-100",
28
28
  "ui:outline-white": props.outlineColor === "white"
29
29
  }, {
30
- "ui:outline-2": child.props.size === "xsmall" || child.props.size === "small",
31
- "ui:outline-4": child.props.size === "medium",
32
- "ui:outline-8": child.props.size === "large"
30
+ "ui:outline-2": isOneOfSizes(child.props.size, [
31
+ "xs",
32
+ "xsmall",
33
+ "s",
34
+ "small"
35
+ ]),
36
+ "ui:outline-4": isOneOfSizes(child.props.size, ["m", "medium"]),
37
+ "ui:outline-8": isOneOfSizes(child.props.size, ["large"])
33
38
  }) }));
34
39
  }), jsx(MoreAvatarsLabel, Object.assign({}, props, { maxAvatars }))] }));
35
40
  };
41
+ function isOneOfSizes(size, sizes) {
42
+ return typeof size === "string" && sizes.includes(size);
43
+ }
36
44
  function MoreAvatarsLabel(props) {
37
45
  const { children, maxAvatars, moreAvatarsLabel } = props;
38
46
  if (!moreAvatarsLabel) {
@@ -1 +1 @@
1
- {"version":3,"file":"AvatarGroup.js","sources":["../../../../../../src/components/Avatar/AvatarGroup.tsx"],"sourcesContent":[null],"names":["_jsxs","React","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"AvatarGroup.js","sources":["../../../../../../src/components/Avatar/AvatarGroup.tsx"],"sourcesContent":[null],"names":["_jsxs","React","_jsx"],"mappings":"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"}
@@ -4,13 +4,12 @@ import { Avatar } from '../Avatar/Avatar.js';
4
4
  const SelectOptionAvatar = ({ avatar }) => {
5
5
  var _a, _b;
6
6
  return jsx(Avatar, {
7
- size: "xsmall",
8
- color: avatar.isSelf ? "primary" : "slate",
7
+ size: "xs",
8
+ isSelf: avatar.isSelf,
9
9
  // First code point + combining marks, so a decomposed "Ángela" keeps its accent.
10
10
  initials: (_b = (_a = avatar.initials.trim().match(/^.\p{M}*/u)) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : "",
11
11
  src: avatar.src,
12
- alt: avatar.alt,
13
- className: "ui:shrink-0 ui:border ui:border-solid ui:border-border-neutral-secondary-default"
12
+ alt: avatar.alt
14
13
  });
15
14
  };
16
15
 
@@ -1 +1 @@
1
- {"version":3,"file":"SelectOptionAvatar.js","sources":["../../../../../../src/components/Select/SelectOptionAvatar.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":";;;AAoBO,MAAM,kBAAA,GAAmD,CAAC,EAC/D,MAAA,EAAM,KACH;;AAAC,EAAA,OACJA,IAAC,MAAA,EAAM;AAAA,IACL,IAAA,EAAK,QAAA;AAAA,IACL,KAAA,EAAO,MAAA,CAAO,MAAA,GAAS,SAAA,GAAY,OAAA;AAAA;AAAA,IAEnC,QAAA,EAAA,CAAU,MAAA,EAAA,GAAA,MAAA,CAAO,SAAS,IAAA,EAAI,CAAG,MAAM,WAAW,CAAA,MAAC,QAAA,EAAA,KAAA,MAAA,GAAA,SAAA,EAAA,CAAG,CAAC,OAAC,IAAA,IAAA,EAAA,KAAA,SAAA,EAAA,GAAI,EAAA;AAAA,IAC5D,KAAK,MAAA,CAAO,GAAA;AAAA,IACZ,KAAK,MAAA,CAAO,GAAA;AAAA,IACZ,SAAA,EAAU;AAAA,GAAkF,CAAA;;;;;"}
1
+ {"version":3,"file":"SelectOptionAvatar.js","sources":["../../../../../../src/components/Select/SelectOptionAvatar.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":";;;AAaO,MAAM,kBAAA,GAAmD,CAAC,EAC/D,MAAA,EAAM,KACH;;AAAC,EAAA,OACJA,IAAC,MAAA,EAAM;AAAA,IACL,IAAA,EAAK,IAAA;AAAA,IACL,QAAQ,MAAA,CAAO,MAAA;AAAA;AAAA,IAEf,QAAA,EAAA,CAAU,MAAA,EAAA,GAAA,MAAA,CAAO,SAAS,IAAA,EAAI,CAAG,MAAM,WAAW,CAAA,MAAC,QAAA,EAAA,KAAA,MAAA,GAAA,SAAA,EAAA,CAAG,CAAC,OAAC,IAAA,IAAA,EAAA,KAAA,SAAA,EAAA,GAAI,EAAA;AAAA,IAC5D,KAAK,MAAA,CAAO,GAAA;AAAA,IACZ,KAAK,MAAA,CAAO;AAAA,GAAG,CAAA;;;;;"}
@@ -2270,7 +2270,20 @@ function checkImageValidity(src) {
2270
2270
  image.src = src;
2271
2271
  });
2272
2272
  }
2273
- const Avatar = ({ color = "slate", size = "medium", applyGroupOffset, src, alt, defaultImage, initials, children, className }) => {
2273
+ const legacySizeAliases = {
2274
+ xsmall: "xs",
2275
+ small: "s",
2276
+ medium: "m"
2277
+ };
2278
+ const avatarSizeTokens = {
2279
+ xs: "var(--ui-semantic-size-lg)",
2280
+ s: "var(--ui-semantic-size-xl)",
2281
+ m: "var(--ui-semantic-size-5xl)"
2282
+ };
2283
+ function resolveSize(size) {
2284
+ return size in legacySizeAliases ? legacySizeAliases[size] : size;
2285
+ }
2286
+ const Avatar = ({ color, isSelf, size = "m", applyGroupOffset, src, alt, defaultImage, initials, children, className }) => {
2274
2287
  const [hasValidImage, setHasValidImage] = React.useState(false);
2275
2288
  React.useEffect(() => {
2276
2289
  let mounted = true;
@@ -2285,29 +2298,42 @@ const Avatar = ({ color = "slate", size = "medium", applyGroupOffset, src, alt,
2285
2298
  mounted = false;
2286
2299
  };
2287
2300
  }, [defaultImage, src]);
2301
+ const resolvedSize = resolveSize(size);
2302
+ const sizeStyle = resolvedSize === "large" ? void 0 : {
2303
+ width: avatarSizeTokens[resolvedSize],
2304
+ height: avatarSizeTokens[resolvedSize]
2305
+ };
2288
2306
  const sizeClassName = classNames__default.default("ui:rounded-full", {
2289
- "ui:h-32 ui:w-32": size === "large",
2290
- "ui:h-16 ui:w-16": size === "medium",
2291
- "ui:h-9 ui:w-9": size === "small",
2292
- "ui:h-6 ui:w-6": size === "xsmall"
2307
+ "ui:h-32 ui:w-32": resolvedSize === "large"
2293
2308
  });
2294
2309
  const groupOffsetClassNames = classNames__default.default({
2295
- "ui:-ml-[calc(theme('spacing.32')/4)]": size === "large" && applyGroupOffset,
2296
- "ui:-ml-[calc(theme('spacing.16')/4)]": size === "medium" && applyGroupOffset,
2297
- "ui:-ml-[calc(theme('spacing.9')/4)]": size === "small" && applyGroupOffset,
2298
- "ui:-ml-[calc(theme('spacing.6')/4)]": size === "xsmall" && applyGroupOffset
2310
+ "ui:-ml-[calc(theme('spacing.32')/4)]": resolvedSize === "large" && applyGroupOffset
2299
2311
  });
2312
+ const groupOffsetStyle = applyGroupOffset && resolvedSize !== "large" ? { marginLeft: `calc(${avatarSizeTokens[resolvedSize]} / -4)` } : void 0;
2313
+ const resolvedIsSelf = isSelf !== null && isSelf !== void 0 ? isSelf : color === "primary";
2300
2314
  const colorClassName = classNames__default.default({
2301
- "ui:bg-neutral-200 ui:text-on-surface": color === "slate",
2302
- "ui:bg-primary ui:text-white": color === "primary"
2303
- });
2304
- const containerClassName = classNames__default.default(className, sizeClassName, groupOffsetClassNames, colorClassName, "ui:flex ui:items-center ui:justify-center");
2305
- const textClassName = classNames__default.default({
2306
- "ui:text-5xl": size === "large",
2307
- "ui:text-2xl": size === "medium",
2308
- "ui:text-sm": size === "small" || size === "xsmall"
2315
+ "ui:bg-background-brand-primary-default ui:text-text-inverse-primary-default": resolvedIsSelf,
2316
+ "ui:bg-background-neutral-tertiary-default ui:text-text-neutral-primary-default": !resolvedIsSelf
2309
2317
  });
2310
- const imageClassName = classNames__default.default(sizeClassName);
2318
+ const containerClassName = classNames__default.default(
2319
+ className,
2320
+ sizeClassName,
2321
+ groupOffsetClassNames,
2322
+ colorClassName,
2323
+ /**
2324
+ * The design system puts a 1px inverse border on every avatar. It
2325
+ * sits inside the box (`border-box`), so the sizes above stay exact.
2326
+ */
2327
+ "ui:border ui:border-solid ui:border-border-inverse-primary-default",
2328
+ /**
2329
+ * `shrink-0` keeps the avatar circular when it is a flex child, for
2330
+ * example inside an `AvatarGroup`, where the negative margins would
2331
+ * otherwise let the flex algorithm squash it.
2332
+ */
2333
+ "ui:flex ui:shrink-0 ui:items-center ui:justify-center"
2334
+ );
2335
+ const textVariant = resolvedSize === "m" ? "body-base-regular" : "body-small-regular";
2336
+ const imageClassName = classNames__default.default("ui:rounded-full ui:h-full ui:w-full ui:object-cover");
2311
2337
  const renderAvatar = () => {
2312
2338
  const elementToRender = initials !== null && initials !== void 0 ? initials : children;
2313
2339
  if (defaultImage) {
@@ -2315,13 +2341,13 @@ const Avatar = ({ color = "slate", size = "medium", applyGroupOffset, src, alt,
2315
2341
  } else if (hasValidImage) {
2316
2342
  return jsxRuntime.jsx("img", { className: imageClassName, src, alt });
2317
2343
  } else {
2318
- if (size === "xsmall") {
2319
- return jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(Text, { variant: "sm", color: "current", "aria-hidden": true, children: elementToRender }), jsxRuntime.jsx(ScreenReaderText, { children: alt })] });
2344
+ if (resolvedSize === "large") {
2345
+ return jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("span", { className: "ui:text-5xl", "aria-hidden": true, children: elementToRender }), jsxRuntime.jsx(ScreenReaderText, { children: alt })] });
2320
2346
  }
2321
- return jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("span", { className: textClassName, "aria-hidden": true, children: elementToRender }), jsxRuntime.jsx(ScreenReaderText, { children: alt })] });
2347
+ return jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(Text, { variant: textVariant, color: "current", "aria-hidden": true, children: elementToRender }), jsxRuntime.jsx(ScreenReaderText, { children: alt })] });
2322
2348
  }
2323
2349
  };
2324
- return jsxRuntime.jsx("div", { className: containerClassName, children: jsxRuntime.jsx("div", { children: renderAvatar() }) });
2350
+ return jsxRuntime.jsx("div", { className: containerClassName, style: Object.assign(Object.assign({}, sizeStyle), groupOffsetStyle), children: renderAvatar() });
2325
2351
  };
2326
2352
  function ScreenReaderText({ children }) {
2327
2353
  return jsxRuntime.jsx("span", { className: "ui:sr-only", children });
@@ -2347,12 +2373,20 @@ const AvatarGroup = (props) => {
2347
2373
  "ui:outline-slate-100": props.outlineColor === "slate-100",
2348
2374
  "ui:outline-white": props.outlineColor === "white"
2349
2375
  }, {
2350
- "ui:outline-2": child.props.size === "xsmall" || child.props.size === "small",
2351
- "ui:outline-4": child.props.size === "medium",
2352
- "ui:outline-8": child.props.size === "large"
2376
+ "ui:outline-2": isOneOfSizes(child.props.size, [
2377
+ "xs",
2378
+ "xsmall",
2379
+ "s",
2380
+ "small"
2381
+ ]),
2382
+ "ui:outline-4": isOneOfSizes(child.props.size, ["m", "medium"]),
2383
+ "ui:outline-8": isOneOfSizes(child.props.size, ["large"])
2353
2384
  }) }));
2354
2385
  }), jsxRuntime.jsx(MoreAvatarsLabel, Object.assign({}, props, { maxAvatars }))] }));
2355
2386
  };
2387
+ function isOneOfSizes(size, sizes) {
2388
+ return typeof size === "string" && sizes.includes(size);
2389
+ }
2356
2390
  function MoreAvatarsLabel(props) {
2357
2391
  const { children, maxAvatars, moreAvatarsLabel } = props;
2358
2392
  if (!moreAvatarsLabel) {
@@ -4466,13 +4500,12 @@ const SelectLoadingIndicator = (props) => jsxRuntime.jsx(LoadingIndicator, Objec
4466
4500
  const SelectOptionAvatar = ({ avatar }) => {
4467
4501
  var _a, _b;
4468
4502
  return jsxRuntime.jsx(Avatar, {
4469
- size: "xsmall",
4470
- color: avatar.isSelf ? "primary" : "slate",
4503
+ size: "xs",
4504
+ isSelf: avatar.isSelf,
4471
4505
  // First code point + combining marks, so a decomposed "Ángela" keeps its accent.
4472
4506
  initials: (_b = (_a = avatar.initials.trim().match(/^.\p{M}*/u)) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : "",
4473
4507
  src: avatar.src,
4474
- alt: avatar.alt,
4475
- className: "ui:shrink-0 ui:border ui:border-solid ui:border-border-neutral-secondary-default"
4508
+ alt: avatar.alt
4476
4509
  });
4477
4510
  };
4478
4511