@industry-theme/file-city-panel 0.5.77 → 0.5.78

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.
@@ -108,18 +108,19 @@ export interface TrailRequestIntroModalProps {
108
108
  */
109
109
  notedBy?: string[];
110
110
  /**
111
- * Visit roster for the `VISITED BY` row — its own row below
112
- * `REVIEWED BY` and `NOTES BY`.
111
+ * Visit roster for the `VISITED BY` row.
113
112
  *
114
- * - `verified`: display names of identified visitors. The panel is
113
+ * - `verified`: display names of identified visitors rendered as
114
+ * the `VISITED BY` avatar strip below the modal. The panel is
115
115
  * responsible for filtering out anyone already present in the
116
116
  * other two rosters before passing the list in.
117
117
  * - `anonymousCount`: aggregate count of unverified visits — no
118
118
  * per-visitor identity is surfaced.
119
119
  *
120
- * The row renders collapsed by default as `VISITED BY · N` (where
121
- * N is `verified.length + anonymousCount`) and expands on click
122
- * into the verified avatars plus an anonymous-count chip.
120
+ * The aggregate (`verified.length + anonymousCount`) is shown in
121
+ * the modal header next to the relative-time stamp (e.g.
122
+ * `3d ago · 14 visits`); the strip itself only lists verified
123
+ * visitors so anonymous identities aren't fabricated as avatars.
123
124
  */
124
125
  visitedBy?: {
125
126
  verified: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"TrailRequestIntroModal.d.ts","sourceRoot":"","sources":["../../../../src/panels/FileCityTrailExplorerPanel/overlays/TrailRequestIntroModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAY,KAAK,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAErE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAmCzD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;;;;;OAMG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,WAAW,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,KAAK,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC9D,oDAAoD;IACpD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,WAAW,EAAE,MAAM,GAAG,KAAK,CAAC;IAC5B;;;OAGG;IACH,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,KAAK,IAAI,CAAC;IACxC;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,KAAK,IAAI,CAAC;IAClE,qEAAqE;IACrE,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;IAC1B;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,EAAE;QACV,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;IACF;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAC1C;AAED,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,2BAA2B,CA+pBxE,CAAC;AAoTF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;IAC/B,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb;;;uDAGmD;IACnD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;8BAC0B;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CA6CA,CAAC"}
1
+ {"version":3,"file":"TrailRequestIntroModal.d.ts","sourceRoot":"","sources":["../../../../src/panels/FileCityTrailExplorerPanel/overlays/TrailRequestIntroModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAY,KAAK,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAErE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAmCzD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;;;;;OAMG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,WAAW,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,KAAK,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC9D,oDAAoD;IACpD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,WAAW,EAAE,MAAM,GAAG,KAAK,CAAC;IAC5B;;;OAGG;IACH,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,KAAK,IAAI,CAAC;IACxC;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,KAAK,IAAI,CAAC;IAClE,qEAAqE;IACrE,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;IAC1B;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB;;;;;;;;;;;;;;OAcG;IACH,SAAS,CAAC,EAAE;QACV,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;IACF;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAC1C;AAED,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,2BAA2B,CA2qBxE,CAAC;AA6JF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;IAC/B,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb;;;uDAGmD;IACnD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;8BAC0B;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CA6CA,CAAC"}
@@ -258336,7 +258336,6 @@ const TrailRequestIntroModal = ({
258336
258336
  React.useEffect(() => {
258337
258337
  if (!showManifest) setNoteAuthorFilter(null);
258338
258338
  }, [showManifest]);
258339
- const [visitedExpanded, setVisitedExpanded] = React.useState(false);
258340
258339
  const visitTotal = ((visitedBy == null ? void 0 : visitedBy.verified.length) ?? 0) + ((visitedBy == null ? void 0 : visitedBy.anonymousCount) ?? 0);
258341
258340
  const [selectedMode, setSelectedMode] = React.useState(
258342
258341
  defaultMode
@@ -258535,7 +258534,18 @@ const TrailRequestIntroModal = ({
258535
258534
  " ",
258536
258535
  /* @__PURE__ */ jsx("span", { style: { color: theme2.colors.textSecondary }, children: author })
258537
258536
  ] }) : null,
258538
- dateStamp ? /* @__PURE__ */ jsx("span", { children: dateStamp }) : null
258537
+ dateStamp ? /* @__PURE__ */ jsx("span", { children: dateStamp }) : null,
258538
+ visitTotal > 0 ? /* @__PURE__ */ jsxs(
258539
+ "span",
258540
+ {
258541
+ title: visitedBy ? `${visitedBy.verified.length} verified · ${visitedBy.anonymousCount} anonymous` : void 0,
258542
+ children: [
258543
+ visitTotal,
258544
+ " ",
258545
+ visitTotal === 1 ? "visit" : "visits"
258546
+ ]
258547
+ }
258548
+ ) : null
258539
258549
  ]
258540
258550
  }
258541
258551
  )
@@ -258957,15 +258967,16 @@ ${s2.comment}` : ""}${hasNotes ? "\n(click to highlight their notes on the manif
258957
258967
  })
258958
258968
  }
258959
258969
  ) : null,
258960
- visitedBy && visitTotal > 0 ? /* @__PURE__ */ jsx(
258961
- VisitedByRow,
258970
+ visitedBy && visitedBy.verified.length > 0 ? /* @__PURE__ */ jsx(
258971
+ AvatarStrip,
258962
258972
  {
258963
258973
  theme: theme2,
258964
- verified: visitedBy.verified,
258965
- anonymousCount: visitedBy.anonymousCount,
258966
- total: visitTotal,
258967
- expanded: visitedExpanded,
258968
- onToggle: () => setVisitedExpanded((v) => !v)
258974
+ label: "VISITED BY",
258975
+ entries: visitedBy.verified.map((name2) => ({
258976
+ key: name2,
258977
+ name: name2,
258978
+ tooltip: name2
258979
+ }))
258969
258980
  }
258970
258981
  ) : null
258971
258982
  ]
@@ -259093,154 +259104,6 @@ const AvatarStrip = ({ theme: theme2, label, entries, ringed = false }) => {
259093
259104
  }
259094
259105
  );
259095
259106
  };
259096
- const VisitedByRow = ({ theme: theme2, verified, anonymousCount, total, expanded, onToggle }) => {
259097
- return /* @__PURE__ */ jsxs(
259098
- "div",
259099
- {
259100
- style: {
259101
- marginTop: 10,
259102
- padding: "8px 14px",
259103
- background: theme2.colors.backgroundSecondary,
259104
- border: `1px solid ${theme2.colors.border}`,
259105
- borderRadius: theme2.radii[3],
259106
- display: "flex",
259107
- alignItems: "center",
259108
- gap: 10,
259109
- flexShrink: 0,
259110
- boxShadow: theme2.shadows[2]
259111
- },
259112
- children: [
259113
- /* @__PURE__ */ jsxs(
259114
- "button",
259115
- {
259116
- type: "button",
259117
- onClick: onToggle,
259118
- title: expanded ? "Collapse visitor breakdown" : `${verified.length} verified · ${anonymousCount} anonymous — click to expand`,
259119
- style: {
259120
- display: "inline-flex",
259121
- alignItems: "center",
259122
- gap: 8,
259123
- flexShrink: 0,
259124
- background: "transparent",
259125
- border: "none",
259126
- padding: 0,
259127
- cursor: "pointer",
259128
- fontFamily: theme2.fonts.monospace,
259129
- fontSize: theme2.fontSizes[0],
259130
- color: theme2.colors.textTertiary,
259131
- letterSpacing: "0.04em"
259132
- },
259133
- children: [
259134
- /* @__PURE__ */ jsx("span", { children: "VISITED BY" }),
259135
- /* @__PURE__ */ jsx(
259136
- "span",
259137
- {
259138
- style: {
259139
- display: "inline-flex",
259140
- alignItems: "center",
259141
- justifyContent: "center",
259142
- minWidth: 24,
259143
- height: 20,
259144
- padding: "0 8px",
259145
- borderRadius: 999,
259146
- background: `color-mix(in srgb, ${theme2.colors.accent} 14%, transparent)`,
259147
- border: `1px solid ${theme2.colors.border}`,
259148
- fontFamily: theme2.fonts.body,
259149
- fontSize: theme2.fontSizes[0],
259150
- color: theme2.colors.textSecondary,
259151
- letterSpacing: 0
259152
- },
259153
- children: total
259154
- }
259155
- ),
259156
- /* @__PURE__ */ jsx(
259157
- "span",
259158
- {
259159
- "aria-hidden": true,
259160
- style: {
259161
- fontFamily: theme2.fonts.body,
259162
- fontSize: theme2.fontSizes[0],
259163
- color: theme2.colors.textTertiary,
259164
- transform: expanded ? "rotate(90deg)" : "rotate(0deg)",
259165
- transition: "transform 120ms ease",
259166
- display: "inline-block",
259167
- lineHeight: 1
259168
- },
259169
- children: "▸"
259170
- }
259171
- )
259172
- ]
259173
- }
259174
- ),
259175
- expanded ? /* @__PURE__ */ jsxs(
259176
- "div",
259177
- {
259178
- style: {
259179
- display: "flex",
259180
- alignItems: "center",
259181
- gap: 6,
259182
- flex: 1,
259183
- minWidth: 0,
259184
- overflowX: "auto"
259185
- },
259186
- children: [
259187
- verified.map((name2) => /* @__PURE__ */ jsxs(
259188
- "span",
259189
- {
259190
- title: name2,
259191
- style: {
259192
- display: "inline-flex",
259193
- alignItems: "center",
259194
- gap: 6,
259195
- flexShrink: 0
259196
- },
259197
- children: [
259198
- /* @__PURE__ */ jsx(Avatar, { theme: theme2, name: name2, size: 24 }),
259199
- /* @__PURE__ */ jsx(
259200
- "span",
259201
- {
259202
- style: {
259203
- fontFamily: theme2.fonts.body,
259204
- fontSize: theme2.fontSizes[0],
259205
- color: theme2.colors.textSecondary
259206
- },
259207
- children: name2
259208
- }
259209
- )
259210
- ]
259211
- },
259212
- name2
259213
- )),
259214
- anonymousCount > 0 ? /* @__PURE__ */ jsxs(
259215
- "span",
259216
- {
259217
- title: `${anonymousCount} anonymous ${anonymousCount === 1 ? "visitor" : "visitors"}`,
259218
- style: {
259219
- display: "inline-flex",
259220
- alignItems: "center",
259221
- flexShrink: 0,
259222
- padding: "2px 10px",
259223
- borderRadius: 999,
259224
- background: "transparent",
259225
- border: `1px dashed ${theme2.colors.border}`,
259226
- fontFamily: theme2.fonts.body,
259227
- fontSize: theme2.fontSizes[0],
259228
- color: theme2.colors.textTertiary
259229
- },
259230
- children: [
259231
- "+",
259232
- anonymousCount,
259233
- " anonymous"
259234
- ]
259235
- }
259236
- ) : null
259237
- ]
259238
- }
259239
- ) : null
259240
- ]
259241
- }
259242
- );
259243
- };
259244
259107
  const LgtmStamp = ({ theme: theme2, size, rotated = true, text: text2 = "LGTM" }) => {
259245
259108
  const inkColor = theme2.colors.success;
259246
259109
  const borderWidth = Math.max(2, Math.round(size / 30));