@homebound/beam 3.33.1 → 3.34.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.
package/dist/index.d.cts CHANGED
@@ -4999,15 +4999,22 @@ type MenuSection = MenuItem & {
4999
4999
 
5000
5000
  type TagXss = Margin | "backgroundColor" | "color";
5001
5001
  type TagType = "info" | "caution" | "warning" | "success" | "neutral";
5002
- type TagProps<X> = {
5002
+ type TagPropsBase<X> = {
5003
5003
  text: ReactNode;
5004
5004
  type?: TagType;
5005
5005
  xss?: X;
5006
- icon?: IconKey;
5007
5006
  /** A tooltip will automatically be displayed if the text is truncated. Set to true to prevent this behavior.
5008
5007
  * @default false */
5009
5008
  preventTooltip?: boolean;
5010
5009
  };
5010
+ /** When `iconOnly`, `icon` is required — the tag renders only the icon; `text` stays for tooltip/a11y. */
5011
+ type TagProps<X> = TagPropsBase<X> & ({
5012
+ iconOnly?: false;
5013
+ icon?: IconKey;
5014
+ } | {
5015
+ iconOnly: true;
5016
+ icon: IconKey;
5017
+ });
5011
5018
  /** Tag used for indicating a status */
5012
5019
  declare function Tag<X extends Only<Xss<TagXss>, X>>(props: TagProps<X>): JSX.Element;
5013
5020
 
package/dist/index.d.ts CHANGED
@@ -4999,15 +4999,22 @@ type MenuSection = MenuItem & {
4999
4999
 
5000
5000
  type TagXss = Margin | "backgroundColor" | "color";
5001
5001
  type TagType = "info" | "caution" | "warning" | "success" | "neutral";
5002
- type TagProps<X> = {
5002
+ type TagPropsBase<X> = {
5003
5003
  text: ReactNode;
5004
5004
  type?: TagType;
5005
5005
  xss?: X;
5006
- icon?: IconKey;
5007
5006
  /** A tooltip will automatically be displayed if the text is truncated. Set to true to prevent this behavior.
5008
5007
  * @default false */
5009
5008
  preventTooltip?: boolean;
5010
5009
  };
5010
+ /** When `iconOnly`, `icon` is required — the tag renders only the icon; `text` stays for tooltip/a11y. */
5011
+ type TagProps<X> = TagPropsBase<X> & ({
5012
+ iconOnly?: false;
5013
+ icon?: IconKey;
5014
+ } | {
5015
+ iconOnly: true;
5016
+ icon: IconKey;
5017
+ });
5011
5018
  /** Tag used for indicating a status */
5012
5019
  declare function Tag<X extends Only<Xss<TagXss>, X>>(props: TagProps<X>): JSX.Element;
5013
5020
 
package/dist/index.js CHANGED
@@ -8284,7 +8284,7 @@ function memoizedTableStyles() {
8284
8284
  // Header's will add `lineClamp2` more locally in their renders.
8285
8285
  // Also `unset`-ing the white-space: nowrap defined in `cellCss` below.
8286
8286
  ...{
8287
- color: "gray700",
8287
+ color: "gray900",
8288
8288
  fontWeight: "fw6",
8289
8289
  fontSize: "fz_12px",
8290
8290
  lineHeight: "lh_16px",
@@ -21337,24 +21337,32 @@ function Tag(props) {
21337
21337
  type,
21338
21338
  xss,
21339
21339
  preventTooltip = false,
21340
+ iconOnly,
21341
+ icon,
21340
21342
  ...otherProps
21341
21343
  } = props;
21342
- const typeStyles2 = getStyles(type);
21344
+ const isIconOnly = !!iconOnly && !!icon;
21345
+ const {
21346
+ background,
21347
+ iconColor
21348
+ } = getStyles(type);
21343
21349
  const tid = useTestIds(otherProps);
21344
21350
  const [showTooltip, setShowTooltip] = useState49(false);
21345
21351
  const ref = useRef52(null);
21346
21352
  useResizeObserver6({
21347
21353
  ref,
21348
21354
  onResize: () => {
21349
- if (ref.current) {
21355
+ if (!isIconOnly && ref.current) {
21350
21356
  setShowTooltip(ref.current.offsetHeight < ref.current.scrollHeight);
21351
21357
  }
21352
21358
  }
21353
21359
  });
21360
+ const tooltipTitle = !preventTooltip ? isIconOnly ? text : showTooltip ? text : void 0 : void 0;
21354
21361
  return maybeTooltip({
21355
- title: !preventTooltip && showTooltip ? text : void 0,
21362
+ title: tooltipTitle,
21356
21363
  children: /* @__PURE__ */ jsxs82("span", { ...tid, ...trussProps79({
21357
21364
  ...{
21365
+ position: "relative",
21358
21366
  display: "dif",
21359
21367
  fontWeight: "fw6",
21360
21368
  fontSize: "fz_10px",
@@ -21362,18 +21370,23 @@ function Tag(props) {
21362
21370
  textTransform: "ttu",
21363
21371
  alignItems: "aic",
21364
21372
  gap: "gap_4px",
21365
- paddingLeft: "pl_6px",
21366
- paddingRight: "pr_6px",
21367
21373
  paddingTop: "pt_2px",
21368
21374
  paddingBottom: "pb_2px",
21369
21375
  color: "gray900",
21370
21376
  borderRadius: "br4"
21371
21377
  },
21372
- ...typeStyles2,
21378
+ ...isIconOnly ? {
21379
+ paddingLeft: "pl_2px",
21380
+ paddingRight: "pr_2px"
21381
+ } : {
21382
+ paddingLeft: "pl_6px",
21383
+ paddingRight: "pr_6px"
21384
+ },
21385
+ ...background,
21373
21386
  ...xss
21374
21387
  }), children: [
21375
- otherProps.icon && /* @__PURE__ */ jsx161("span", { className: "fs0", children: /* @__PURE__ */ jsx161(Icon, { icon: otherProps.icon, inc: 1.5 }) }),
21376
- /* @__PURE__ */ jsx161("span", { ref, className: "oh d_negwebkit_box wbo_vertical to_ellipsis wlc_1 wbba", children: text })
21388
+ icon && /* @__PURE__ */ jsx161("span", { className: "fs0", children: /* @__PURE__ */ jsx161(Icon, { icon, inc: 1.75, color: iconColor }) }),
21389
+ isIconOnly ? /* @__PURE__ */ jsx161("span", { className: "absolute oh cli_inset_50 clp_none bd_0 h_1px m_neg1px w_1px p_0 wsnw o0", children: text }) : /* @__PURE__ */ jsx161("span", { ref, className: "oh d_negwebkit_box wbo_vertical to_ellipsis wlc_1 wbba", children: text })
21377
21390
  ] })
21378
21391
  });
21379
21392
  }
@@ -21381,23 +21394,38 @@ function getStyles(type) {
21381
21394
  switch (type) {
21382
21395
  case "info":
21383
21396
  return {
21384
- backgroundColor: "bgBlue100"
21397
+ background: {
21398
+ backgroundColor: "bgBlue100"
21399
+ },
21400
+ iconColor: "rgba(37, 99, 235, 1)" /* Blue600 */
21385
21401
  };
21386
21402
  case "caution":
21387
21403
  return {
21388
- backgroundColor: "bgYellow200"
21404
+ background: {
21405
+ backgroundColor: "bgYellow200"
21406
+ },
21407
+ iconColor: "rgba(161, 98, 7, 1)" /* Yellow700 */
21389
21408
  };
21390
21409
  case "warning":
21391
21410
  return {
21392
- backgroundColor: "bgRed200"
21411
+ background: {
21412
+ backgroundColor: "bgRed200"
21413
+ },
21414
+ iconColor: "rgba(194, 65, 12, 1)" /* Orange700 */
21393
21415
  };
21394
21416
  case "success":
21395
21417
  return {
21396
- backgroundColor: "bgGreen200"
21418
+ background: {
21419
+ backgroundColor: "bgGreen200"
21420
+ },
21421
+ iconColor: "rgba(5, 150, 105, 1)" /* Green600 */
21397
21422
  };
21398
21423
  default:
21399
21424
  return {
21400
- backgroundColor: "bgGray200"
21425
+ background: {
21426
+ backgroundColor: "bgGray200"
21427
+ },
21428
+ iconColor: "rgba(100, 100, 100, 1)" /* Gray700 */
21401
21429
  };
21402
21430
  }
21403
21431
  }