@activecollab/components 2.0.368 → 2.0.369

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.
@@ -10,14 +10,17 @@ var _LinkBranchOrPullRequestDialog = require("./LinkBranchOrPullRequestDialog");
10
10
  var _LinkingCommandsButton = require("./LinkingCommandsButton");
11
11
  var _RoundAvatar = require("./RoundAvatar");
12
12
  var _tokens = require("./tokens");
13
+ var _AvatarGroup = require("../../components/AvatarGroup");
13
14
  var _Button = require("../../components/Button");
14
15
  var _AddToListButton = require("../../components/Button/AddToListButton");
16
+ var _Chip = require("../../components/Chip");
15
17
  var _Dialog = require("../../components/Dialog");
16
18
  var _IconButton = require("../../components/IconButton");
17
19
  var _Icons = require("../../components/Icons");
18
20
  var _StepSequence = require("../../components/StepSequence");
19
21
  var _Tooltip = require("../../components/Tooltip");
20
22
  var _Typography = require("../../components/Typography");
23
+ var _excluded = ["size", "bg", "initials", "alt"];
21
24
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
22
25
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
23
26
  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
@@ -26,6 +29,8 @@ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r)
26
29
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
27
30
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
28
31
  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
32
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
33
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
29
34
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
30
35
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
31
36
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
@@ -59,56 +64,24 @@ var iconColorProps = function iconColorProps(icon) {
59
64
  };
60
65
 
61
66
  /* ================================================================== */
62
- /* Issue markers (open / closed) — small inline glyphs so the */
63
- /* open-vs-closed state reads crisply; they inherit `currentColor`. */
67
+ /* Issue state glyphs (open / closed) — mirror the app's IssueStateIcon */
68
+ /* (`CircleDotIcon` when open, filled `CheckboxBlankTogglerIcon` when */
69
+ /* closed). Kept as a helper so the row lead and the status chip share */
70
+ /* the same glyph. */
64
71
  /* ================================================================== */
65
72
 
66
- var IssueOpenIcon = function IssueOpenIcon(_ref) {
67
- var _ref$width = _ref.width,
68
- width = _ref$width === void 0 ? 16 : _ref$width,
69
- _ref$height = _ref.height,
70
- height = _ref$height === void 0 ? 16 : _ref$height;
71
- return /*#__PURE__*/_react.default.createElement("svg", {
72
- width: width,
73
- height: height,
74
- viewBox: "0 0 16 16",
75
- fill: "none"
76
- }, /*#__PURE__*/_react.default.createElement("circle", {
77
- cx: "8",
78
- cy: "8",
79
- r: "6.4",
80
- stroke: "currentColor",
81
- strokeWidth: "1.6"
82
- }), /*#__PURE__*/_react.default.createElement("circle", {
83
- cx: "8",
84
- cy: "8",
85
- r: "2.2",
86
- fill: "currentColor"
87
- }));
88
- };
89
- var IssueClosedIcon = function IssueClosedIcon(_ref2) {
90
- var _ref2$width = _ref2.width,
91
- width = _ref2$width === void 0 ? 16 : _ref2$width,
92
- _ref2$height = _ref2.height,
93
- height = _ref2$height === void 0 ? 16 : _ref2$height;
94
- return /*#__PURE__*/_react.default.createElement("svg", {
95
- width: width,
96
- height: height,
97
- viewBox: "0 0 16 16",
98
- fill: "none"
99
- }, /*#__PURE__*/_react.default.createElement("circle", {
100
- cx: "8",
101
- cy: "8",
102
- r: "6.4",
103
- stroke: "currentColor",
104
- strokeWidth: "1.6"
105
- }), /*#__PURE__*/_react.default.createElement("path", {
106
- d: "M5.2 8.1l1.9 1.9 3.7-3.9",
107
- stroke: "currentColor",
108
- strokeWidth: "1.6",
109
- strokeLinecap: "round",
110
- strokeLinejoin: "round"
111
- }));
73
+ var IssueStateIcon = function IssueStateIcon(_ref) {
74
+ var closed = _ref.closed,
75
+ _ref$size = _ref.size,
76
+ size = _ref$size === void 0 ? 16 : _ref$size;
77
+ return closed ? /*#__PURE__*/_react.default.createElement(_Icons.CheckboxBlankTogglerIcon, {
78
+ width: size,
79
+ height: size,
80
+ fill: "var(--color-primary)"
81
+ }) : /*#__PURE__*/_react.default.createElement(_Icons.CircleDotIcon, {
82
+ width: size,
83
+ height: size
84
+ });
112
85
  };
113
86
 
114
87
  /* ================================================================== */
@@ -820,9 +793,9 @@ var CODE_ENTRIES = [{
820
793
  /* Spine + history dialog (for branches / pull requests) */
821
794
  /* ================================================================== */
822
795
 
823
- var StageTip = function StageTip(_ref3) {
824
- var name = _ref3.name,
825
- details = _ref3.details;
796
+ var StageTip = function StageTip(_ref2) {
797
+ var name = _ref2.name,
798
+ details = _ref2.details;
826
799
  return /*#__PURE__*/_react.default.createElement("span", {
827
800
  style: {
828
801
  display: "block",
@@ -847,9 +820,9 @@ var StyledSpineSequence = (0, _styledComponents.default)(_StepSequence.StepSeque
847
820
  displayName: "SourceCodeSection__StyledSpineSequence",
848
821
  componentId: "sc-rvqbh5-0"
849
822
  })(["align-self:center;flex-shrink:0;"]);
850
- var Spine = exports.Spine = function Spine(_ref4) {
851
- var items = _ref4.items,
852
- onClick = _ref4.onClick;
823
+ var Spine = exports.Spine = function Spine(_ref3) {
824
+ var items = _ref3.items,
825
+ onClick = _ref3.onClick;
853
826
  return /*#__PURE__*/_react.default.createElement(StyledSpineSequence, {
854
827
  ariaLabel: "Open source code history",
855
828
  onClick: onClick,
@@ -869,9 +842,9 @@ var StyledHistory = _styledComponents.default.div.withConfig({
869
842
  displayName: "SourceCodeSection__StyledHistory",
870
843
  componentId: "sc-rvqbh5-1"
871
844
  })(["font-family:", ";max-height:60vh;overflow-y:auto;padding-right:4px;.hist-header{padding-bottom:20px;margin-bottom:20px;border-bottom:1px solid var(--border-primary);}.hist-name{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}.hist-branches{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:8px;font-size:13px;color:var(--color-theme-600);}.hist-branch{display:inline-flex;align-items:center;gap:4px;}.hist-repo{display:inline-flex;align-items:center;gap:4px;margin-top:6px;font-size:13px;color:var(--color-theme-600);}.sc-chip{display:inline-flex;align-items:center;gap:3px;height:20px;padding:0 8px;border-radius:6px;font-size:11px;font-weight:700;letter-spacing:0.02em;flex-shrink:0;}.sc-chip.done{color:var(--color-primary);background:color-mix(in srgb,var(--color-primary) 15%,transparent);}.sc-chip.gone{color:var(--color-theme-900);background:var(--color-theme-200);border:1px solid var(--border-primary);}.sc-chip.fail{color:var(--red-alert);background:color-mix(in srgb,var(--red-alert) 15%,transparent);}.hist-event{display:flex;align-items:center;gap:12px;padding-bottom:20px;}.hist-event:last-child{padding-bottom:0;}.hist-icon{flex-shrink:0;width:22px;height:22px;display:flex;align-items:center;justify-content:center;}.hist-body{flex:1 1 auto;min-width:0;}.hist-title{display:flex;align-items:center;gap:6px;min-width:0;}.hist-title > *:first-child{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.hist-status{flex-shrink:0;display:inline-flex;}.hist-line{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:13px;line-height:1.5;color:var(--color-theme-600);}.hist-meta{flex-shrink:0;align-self:flex-start;text-align:right;white-space:nowrap;}.hist-note{display:flex;align-items:center;gap:6px;margin-top:16px;color:var(--color-theme-500);}.hist-note svg{flex-shrink:0;}"], SANS);
872
- var HistoryDialog = exports.HistoryDialog = function HistoryDialog(_ref5) {
873
- var entry = _ref5.entry,
874
- onClose = _ref5.onClose;
845
+ var HistoryDialog = exports.HistoryDialog = function HistoryDialog(_ref4) {
846
+ var entry = _ref4.entry,
847
+ onClose = _ref4.onClose;
875
848
  return /*#__PURE__*/_react.default.createElement(_Dialog.Dialog, {
876
849
  open: !!entry,
877
850
  onClose: onClose,
@@ -976,7 +949,7 @@ var HistoryDialog = exports.HistoryDialog = function HistoryDialog(_ref5) {
976
949
  var StyledSourceCode = _styledComponents.default.div.withConfig({
977
950
  displayName: "SourceCodeSection__StyledSourceCode",
978
951
  componentId: "sc-rvqbh5-2"
979
- })(["font-family:", ";margin:0 0 16px;padding-bottom:16px;border-bottom:1px solid var(--border-primary);.sc-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:4px;}.sc-completed-row{display:flex;align-items:center;margin-top:8px;padding-top:8px;border-top:1px solid var(--border-primary);}.sc-add{margin-top:8px;padding-top:12px;border-top:1px solid var(--border-primary);}.sc-add .c--add-to-list-btn svg{box-sizing:content-box;}.sc-item{padding:12px 0;}.sc-item + .sc-item{border-top:1px solid var(--border-primary);}.sc-row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;}.sc-main{flex:1 1 0%;min-width:0;}.sc-name{display:flex;align-items:center;gap:8px;flex-wrap:nowrap;min-width:0;}.sc-lead{flex-shrink:0;display:inline-flex;color:var(--color-theme-600);}.sc-title{flex:0 1 auto;min-width:0;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.sc-title.strike{text-decoration:line-through;}.sc-title.strike-link{text-decoration:line-through;}.sc-title.strike-link:hover{text-decoration:none;}.sc-sigs{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:10px;font-size:13px;color:var(--color-theme-600);}.sc-sig{display:inline-flex;align-items:center;gap:4px;}.sc-chip{display:inline-flex;align-items:center;gap:3px;height:20px;padding:0 8px;border-radius:6px;font-size:11px;font-weight:700;letter-spacing:0.02em;flex-shrink:0;}.sc-chip.done{color:var(--color-primary);background:color-mix(in srgb,var(--color-primary) 15%,transparent);}.sc-chip.gone{color:var(--color-theme-900);background:var(--color-theme-200);border:1px solid var(--border-primary);}.sc-avatars{display:flex;align-items:center;}.sc-sha{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;color:var(--color-theme-600);}.sc-diff .add{color:var(--color-sucess-green);}.sc-diff .del{color:var(--red-alert);}.sc-muted{color:var(--color-theme-600);}.sc-refs{display:inline-flex;align-items:center;gap:6px;}.sc-refs .ref-link{color:var(--color-primary);font-weight:500;}"], SANS);
952
+ })(["font-family:", ";margin:0 0 16px;padding-bottom:16px;border-bottom:1px solid var(--border-primary);.sc-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:4px;}.sc-completed-row{display:flex;align-items:center;margin-top:8px;padding-top:8px;border-top:1px solid var(--border-primary);}.sc-add{margin-top:8px;padding-top:12px;border-top:1px solid var(--border-primary);}.sc-add .c--add-to-list-btn svg{box-sizing:content-box;}.sc-item{padding:12px 0;}.sc-item + .sc-item{border-top:1px solid var(--border-primary);}.sc-row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;}.sc-main{flex:1 1 0%;min-width:0;}.sc-name{display:flex;align-items:center;gap:8px;flex-wrap:nowrap;min-width:0;}.sc-lead{flex-shrink:0;display:inline-flex;color:var(--color-theme-600);}.sc-title{flex:0 1 auto;min-width:0;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.sc-title.strike{text-decoration:line-through;}.sc-title.strike-link{text-decoration:line-through;}.sc-title.strike-link:hover{text-decoration:none;}.sc-sigs{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:10px;font-size:12px;color:var(--color-theme-600);}.sc-sig{display:inline-flex;align-items:center;gap:4px;}.sc-sha{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;}.sc-muted{color:var(--color-theme-600);}.sc-refs{display:inline-flex;align-items:center;gap:6px;}.sc-refs .ref-link{color:var(--color-primary);font-weight:500;}"], SANS);
980
953
 
981
954
  /* Element name — a link that opens the object in a new tab. Keeps the row's
982
955
  typography (inherits color + weight), turns primary on hover, link cursor. */
@@ -984,8 +957,99 @@ var TitleLink = _styledComponents.default.a.withConfig({
984
957
  displayName: "SourceCodeSection__TitleLink",
985
958
  componentId: "sc-rvqbh5-3"
986
959
  })(["color:inherit;text-decoration:none;cursor:pointer;transition:color 200ms ease;&:hover{color:var(--color-primary);}"]);
987
- var IssueRow = exports.IssueRow = function IssueRow(_ref6) {
988
- var issue = _ref6.issue;
960
+
961
+ /* Status label chip — the DS `Chip` styled to match the app's
962
+ `SourceCodeStatusChip`: a "done" tone (primary text on a translucent-primary
963
+ fill) and a "gone" tone (muted text on a bordered theme-200 fill). */
964
+ var CHIP_BASE_STYLE = {
965
+ height: "1.25rem",
966
+ paddingLeft: "0.5rem",
967
+ paddingRight: "0.5rem",
968
+ borderRadius: "0.375rem",
969
+ gap: "3px",
970
+ flexShrink: 0
971
+ };
972
+ var CHIP_DONE_STYLE = _objectSpread(_objectSpread({}, CHIP_BASE_STYLE), {}, {
973
+ backgroundColor: "color-mix(in srgb, var(--color-primary) 15%, transparent)"
974
+ });
975
+ var CHIP_GONE_STYLE = _objectSpread(_objectSpread({}, CHIP_BASE_STYLE), {}, {
976
+ backgroundColor: "var(--color-theme-200)",
977
+ border: "1px solid var(--border-primary)"
978
+ });
979
+ var StatusChip = function StatusChip(_ref5) {
980
+ var label = _ref5.label,
981
+ tone = _ref5.tone,
982
+ glyph = _ref5.glyph;
983
+ return /*#__PURE__*/_react.default.createElement(_Chip.Chip, {
984
+ label: label,
985
+ startAdornment: glyph,
986
+ color: tone === "done" ? "var(--color-primary)" : undefined,
987
+ style: tone === "done" ? CHIP_DONE_STYLE : CHIP_GONE_STYLE,
988
+ typographyProps: {
989
+ variant: "Caption 1",
990
+ weight: "bold",
991
+ align: "center"
992
+ }
993
+ });
994
+ };
995
+
996
+ /* Contributor avatars — the app renders real user images through the DS
997
+ `AvatarGroup` (`ContributorAvatars.jsx`). The mock feeds that same component
998
+ initials avatars via `MockAvatar`, which honours AvatarGroup's cloneElement
999
+ contract (it injects `size`, `alt` and `style` — the overlap margin + paper
1000
+ ring), so the grouping, overlap and "+N" overflow behave identically. */
1001
+ var CONTRIBUTOR_NAMES = {
1002
+ DA: "Dragana A.",
1003
+ IS: "Ilija Studen",
1004
+ MK: "Marko K."
1005
+ };
1006
+ var MockAvatar = /*#__PURE__*/_react.default.forwardRef(function (_ref6, ref) {
1007
+ var _ref6$size = _ref6.size,
1008
+ size = _ref6$size === void 0 ? 20 : _ref6$size,
1009
+ bg = _ref6.bg,
1010
+ initials = _ref6.initials,
1011
+ alt = _ref6.alt,
1012
+ rest = _objectWithoutProperties(_ref6, _excluded);
1013
+ return (
1014
+ /*#__PURE__*/
1015
+ // `...rest` carries the props AvatarGroup and its Tooltip inject via
1016
+ // cloneElement — `style` (overlap margin + paper ring) and the hover handlers
1017
+ // (`onMouseOver` / `onMouseLeave`) — plus the forwarded `ref`, all of which
1018
+ // must reach the DOM node for the tooltip to open.
1019
+ _react.default.createElement(_RoundAvatar.RoundAvatar, _extends({
1020
+ ref: ref,
1021
+ $bg: bg,
1022
+ $size: size,
1023
+ $bordered: false
1024
+ }, rest), initials)
1025
+ );
1026
+ });
1027
+ MockAvatar.displayName = "MockAvatar";
1028
+
1029
+ /* The app removes AvatarGroup's default padding with `tw-p-0`; the mock does
1030
+ the same through a styled wrapper (`tw-` classes don't run in Storybook). */
1031
+ var StyledAvatarGroup = (0, _styledComponents.default)(_AvatarGroup.AvatarGroup).withConfig({
1032
+ displayName: "SourceCodeSection__StyledAvatarGroup",
1033
+ componentId: "sc-rvqbh5-4"
1034
+ })(["&&{padding:0;}"]);
1035
+ var ContributorAvatars = function ContributorAvatars(_ref7) {
1036
+ var contributors = _ref7.contributors;
1037
+ return /*#__PURE__*/_react.default.createElement(StyledAvatarGroup, {
1038
+ limit: 4,
1039
+ size: 20,
1040
+ hasTooltip: true
1041
+ }, contributors.map(function (c) {
1042
+ var _CONTRIBUTOR_NAMES$c$;
1043
+ return /*#__PURE__*/_react.default.createElement(MockAvatar, {
1044
+ key: c.initials,
1045
+ bg: c.bg,
1046
+ initials: c.initials,
1047
+ alt: (_CONTRIBUTOR_NAMES$c$ = CONTRIBUTOR_NAMES[c.initials]) !== null && _CONTRIBUTOR_NAMES$c$ !== void 0 ? _CONTRIBUTOR_NAMES$c$ : c.initials
1048
+ });
1049
+ }));
1050
+ };
1051
+ var IssueRow = exports.IssueRow = function IssueRow(_ref8) {
1052
+ var issue = _ref8.issue;
989
1053
  var closed = issue.state === "closed";
990
1054
  return /*#__PURE__*/_react.default.createElement("div", {
991
1055
  className: "sc-row"
@@ -998,19 +1062,23 @@ var IssueRow = exports.IssueRow = function IssueRow(_ref6) {
998
1062
  style: {
999
1063
  color: closed ? "var(--color-primary)" : undefined
1000
1064
  }
1001
- }, closed ? /*#__PURE__*/_react.default.createElement(IssueClosedIcon, null) : /*#__PURE__*/_react.default.createElement(IssueOpenIcon, null)), /*#__PURE__*/_react.default.createElement(_Typography.Body1, {
1065
+ }, /*#__PURE__*/_react.default.createElement(IssueStateIcon, {
1066
+ closed: closed
1067
+ })), /*#__PURE__*/_react.default.createElement(_Typography.Body1, {
1002
1068
  weight: "medium",
1003
1069
  className: "sc-title"
1004
1070
  }, /*#__PURE__*/_react.default.createElement(TitleLink, {
1005
1071
  href: issueUrl(issue),
1006
1072
  target: "_blank",
1007
1073
  rel: "noopener noreferrer"
1008
- }, issue.title)), closed && /*#__PURE__*/_react.default.createElement("span", {
1009
- className: "sc-chip done"
1010
- }, /*#__PURE__*/_react.default.createElement(IssueClosedIcon, {
1011
- width: 12,
1012
- height: 12
1013
- }), "Closed")), /*#__PURE__*/_react.default.createElement("div", {
1074
+ }, issue.title)), closed && /*#__PURE__*/_react.default.createElement(StatusChip, {
1075
+ label: "Closed",
1076
+ tone: "done",
1077
+ glyph: /*#__PURE__*/_react.default.createElement(IssueStateIcon, {
1078
+ closed: true,
1079
+ size: 12
1080
+ })
1081
+ })), /*#__PURE__*/_react.default.createElement("div", {
1014
1082
  className: "sc-sigs"
1015
1083
  }, /*#__PURE__*/_react.default.createElement(_Tooltip.Tooltip, {
1016
1084
  title: "Repository: ".concat(issue.repoFull)
@@ -1023,37 +1091,42 @@ var IssueRow = exports.IssueRow = function IssueRow(_ref6) {
1023
1091
  className: "sc-muted"
1024
1092
  }, issue.updatedLabel))));
1025
1093
  };
1026
- var CodeStatusChip = function CodeStatusChip(_ref7) {
1027
- var entry = _ref7.entry;
1094
+ var CodeStatusChip = function CodeStatusChip(_ref9) {
1095
+ var entry = _ref9.entry;
1028
1096
  if (entry.status === "merged") {
1029
- return /*#__PURE__*/_react.default.createElement("span", {
1030
- className: "sc-chip done"
1031
- }, /*#__PURE__*/_react.default.createElement(_Icons.GitPullRequestIcon, {
1032
- width: 12,
1033
- height: 12,
1034
- fill: "var(--color-primary)"
1035
- }), "Merged");
1097
+ return /*#__PURE__*/_react.default.createElement(StatusChip, {
1098
+ label: "Merged",
1099
+ tone: "done",
1100
+ glyph: /*#__PURE__*/_react.default.createElement(_Icons.GitPullRequestIcon, {
1101
+ width: 12,
1102
+ height: 12,
1103
+ fill: "var(--color-primary)"
1104
+ })
1105
+ });
1036
1106
  }
1037
1107
  if (entry.status === "deleted") {
1038
- return /*#__PURE__*/_react.default.createElement("span", {
1039
- className: "sc-chip gone"
1040
- }, /*#__PURE__*/_react.default.createElement(_Icons.TrashIcon, {
1041
- width: 12,
1042
- height: 12,
1043
- fill: "var(--color-theme-900)"
1044
- }), "Deleted");
1108
+ return /*#__PURE__*/_react.default.createElement(StatusChip, {
1109
+ label: "Deleted",
1110
+ tone: "gone",
1111
+ glyph: /*#__PURE__*/_react.default.createElement(_Icons.TrashIcon, {
1112
+ width: 12,
1113
+ height: 12,
1114
+ fill: "var(--color-theme-900)"
1115
+ })
1116
+ });
1045
1117
  }
1046
1118
  if (entry.status === "closed") {
1047
- return /*#__PURE__*/_react.default.createElement("span", {
1048
- className: "sc-chip gone"
1049
- }, "Closed");
1119
+ return /*#__PURE__*/_react.default.createElement(StatusChip, {
1120
+ label: "Closed",
1121
+ tone: "gone"
1122
+ });
1050
1123
  }
1051
1124
  // Open branches / PRs show no status label.
1052
1125
  return null;
1053
1126
  };
1054
- var CodeRow = exports.CodeRow = function CodeRow(_ref8) {
1055
- var entry = _ref8.entry,
1056
- onOpenHistory = _ref8.onOpenHistory;
1127
+ var CodeRow = exports.CodeRow = function CodeRow(_ref0) {
1128
+ var entry = _ref0.entry,
1129
+ onOpenHistory = _ref0.onOpenHistory;
1057
1130
  var deleted = entry.status === "deleted";
1058
1131
  // A closed-without-merge PR is still a live link, but its name is struck
1059
1132
  // through to signal the dead-end; the strike lifts on hover so it reads as a
@@ -1094,52 +1167,45 @@ var CodeRow = exports.CodeRow = function CodeRow(_ref8) {
1094
1167
  }, /*#__PURE__*/_react.default.createElement(_Icons.GitRepositoryIcon, {
1095
1168
  width: 14,
1096
1169
  height: 14
1097
- }), entry.repo)), /*#__PURE__*/_react.default.createElement("span", {
1098
- className: "sc-avatars"
1099
- }, entry.contributors.map(function (c) {
1100
- return /*#__PURE__*/_react.default.createElement(_RoundAvatar.RoundAvatar, {
1101
- key: c.initials,
1102
- $bg: c.bg,
1103
- $size: 20,
1104
- $overlap: true
1105
- }, c.initials);
1106
- })), /*#__PURE__*/_react.default.createElement(_Tooltip.Tooltip, {
1170
+ }), entry.repo)), /*#__PURE__*/_react.default.createElement(ContributorAvatars, {
1171
+ contributors: entry.contributors
1172
+ }), /*#__PURE__*/_react.default.createElement(_Tooltip.Tooltip, {
1107
1173
  title: entry.commits.tip
1108
- }, /*#__PURE__*/_react.default.createElement("span", {
1174
+ }, /*#__PURE__*/_react.default.createElement(_Typography.Caption1, {
1175
+ color: "tertiary",
1109
1176
  className: "sc-sig"
1110
1177
  }, /*#__PURE__*/_react.default.createElement(_Icons.GitCommitIcon, {
1111
1178
  width: 14,
1112
1179
  height: 14
1113
1180
  }), entry.commits.value)), /*#__PURE__*/_react.default.createElement(_Tooltip.Tooltip, {
1114
1181
  title: "Head commit: ".concat(entry.headSha)
1115
- }, /*#__PURE__*/_react.default.createElement("span", {
1182
+ }, /*#__PURE__*/_react.default.createElement(_Typography.Caption1, {
1183
+ color: "tertiary",
1116
1184
  className: "sc-sig sc-sha"
1117
1185
  }, entry.headSha.slice(0, 8))), entry.diff && /*#__PURE__*/_react.default.createElement(_Tooltip.Tooltip, {
1118
1186
  title: entry.diff.tip
1119
1187
  }, /*#__PURE__*/_react.default.createElement("span", {
1120
1188
  className: "sc-sig sc-diff"
1121
- }, /*#__PURE__*/_react.default.createElement("span", {
1122
- className: "add"
1123
- }, "+", entry.diff.add), " ", /*#__PURE__*/_react.default.createElement("span", {
1124
- className: "del"
1189
+ }, /*#__PURE__*/_react.default.createElement(_Typography.Caption1, {
1190
+ color: "success"
1191
+ }, "+", entry.diff.add), /*#__PURE__*/_react.default.createElement(_Typography.Caption1, {
1192
+ color: "alert"
1125
1193
  }, "\u2212", entry.diff.del))), entry.comments && /*#__PURE__*/_react.default.createElement(_Tooltip.Tooltip, {
1126
1194
  title: entry.comments.tip
1127
- }, /*#__PURE__*/_react.default.createElement("span", {
1195
+ }, /*#__PURE__*/_react.default.createElement(_Typography.Caption1, {
1196
+ color: "tertiary",
1128
1197
  className: "sc-sig"
1129
- }, /*#__PURE__*/_react.default.createElement(_Icons.MessageIcon, {
1130
- width: 14,
1131
- height: 14
1132
- }), entry.comments.value)), /*#__PURE__*/_react.default.createElement("span", {
1198
+ }, /*#__PURE__*/_react.default.createElement(_Icons.MessageSmallIcon, null), entry.comments.value)), /*#__PURE__*/_react.default.createElement("span", {
1133
1199
  className: "sc-muted"
1134
1200
  }, entry.updatedLabel))), /*#__PURE__*/_react.default.createElement(Spine, {
1135
1201
  items: entry.stages,
1136
1202
  onClick: onOpenHistory
1137
1203
  }));
1138
1204
  };
1139
- var CompletedHeader = exports.CompletedHeader = function CompletedHeader(_ref9) {
1140
- var expanded = _ref9.expanded,
1141
- count = _ref9.count,
1142
- onToggle = _ref9.onToggle;
1205
+ var CompletedHeader = exports.CompletedHeader = function CompletedHeader(_ref1) {
1206
+ var expanded = _ref1.expanded,
1207
+ count = _ref1.count,
1208
+ onToggle = _ref1.onToggle;
1143
1209
  return /*#__PURE__*/_react.default.createElement("div", {
1144
1210
  className: "sc-completed-row"
1145
1211
  }, /*#__PURE__*/_react.default.createElement(_Button.Button, {
@@ -1152,9 +1218,9 @@ var CompletedHeader = exports.CompletedHeader = function CompletedHeader(_ref9)
1152
1218
  }
1153
1219
  }, expanded ? "Hide completed elements" : "Show ".concat(count, " more completed elements")));
1154
1220
  };
1155
- var SourceCodeSection = exports.SourceCodeSection = function SourceCodeSection(_ref0) {
1156
- var _ref0$variant = _ref0.variant,
1157
- variant = _ref0$variant === void 0 ? "mix" : _ref0$variant;
1221
+ var SourceCodeSection = exports.SourceCodeSection = function SourceCodeSection(_ref10) {
1222
+ var _ref10$variant = _ref10.variant,
1223
+ variant = _ref10$variant === void 0 ? "mix" : _ref10$variant;
1158
1224
  var _useState = (0, _react.useState)(null),
1159
1225
  _useState2 = _slicedToArray(_useState, 2),
1160
1226
  openEntry = _useState2[0],