@flamingo-stack/openframe-frontend-core 0.0.668 → 0.0.669-snapshot.20260927145656

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.
Files changed (148) hide show
  1. package/dist/{chunk-B5UP36KY.cjs → chunk-22E6CSIS.cjs} +12 -12
  2. package/dist/{chunk-B5UP36KY.cjs.map → chunk-22E6CSIS.cjs.map} +1 -1
  3. package/dist/{chunk-6KJV6GAJ.js → chunk-5IP7FYUN.js} +4 -4
  4. package/dist/{chunk-GF6WJ4MG.js → chunk-5Q6BE56A.js} +6 -6
  5. package/dist/{chunk-NZD2WTJ2.cjs → chunk-5ZVYPAFQ.cjs} +3 -3
  6. package/dist/{chunk-NZD2WTJ2.cjs.map → chunk-5ZVYPAFQ.cjs.map} +1 -1
  7. package/dist/{chunk-Z3HUP4G7.cjs → chunk-635CAJ36.cjs} +32 -32
  8. package/dist/{chunk-Z3HUP4G7.cjs.map → chunk-635CAJ36.cjs.map} +1 -1
  9. package/dist/{chunk-GO63IT6K.js → chunk-6P335PRA.js} +5 -5
  10. package/dist/{chunk-5V3LERVC.js → chunk-6X66J23J.js} +4 -4
  11. package/dist/{chunk-6W4LUHMY.cjs → chunk-7VZZ5S5V.cjs} +206 -206
  12. package/dist/{chunk-6W4LUHMY.cjs.map → chunk-7VZZ5S5V.cjs.map} +1 -1
  13. package/dist/{chunk-EV2KJ4D2.cjs → chunk-7WK544AC.cjs} +7 -7
  14. package/dist/{chunk-EV2KJ4D2.cjs.map → chunk-7WK544AC.cjs.map} +1 -1
  15. package/dist/{chunk-FOH4MNOZ.js → chunk-C5CTLTKJ.js} +3 -3
  16. package/dist/{chunk-TFVUM6KK.cjs → chunk-CK4BZRVJ.cjs} +10 -10
  17. package/dist/{chunk-TFVUM6KK.cjs.map → chunk-CK4BZRVJ.cjs.map} +1 -1
  18. package/dist/{chunk-Z3GN3MIW.cjs → chunk-D2HYPVYQ.cjs} +81 -81
  19. package/dist/{chunk-Z3GN3MIW.cjs.map → chunk-D2HYPVYQ.cjs.map} +1 -1
  20. package/dist/{chunk-WVCDX7FE.cjs → chunk-DAMA3A5Z.cjs} +15 -15
  21. package/dist/{chunk-WVCDX7FE.cjs.map → chunk-DAMA3A5Z.cjs.map} +1 -1
  22. package/dist/{chunk-P6IJXAEE.js → chunk-DLJGCDHX.js} +2 -1
  23. package/dist/{chunk-P6IJXAEE.js.map → chunk-DLJGCDHX.js.map} +1 -1
  24. package/dist/{chunk-IJPV7OMA.js → chunk-EHB5LETA.js} +591 -466
  25. package/dist/chunk-EHB5LETA.js.map +1 -0
  26. package/dist/{chunk-CFUUVLYQ.cjs → chunk-GXKKWFZR.cjs} +33 -33
  27. package/dist/{chunk-CFUUVLYQ.cjs.map → chunk-GXKKWFZR.cjs.map} +1 -1
  28. package/dist/{chunk-IZ6F7LOE.js → chunk-IHOSMLBC.js} +3 -3
  29. package/dist/{chunk-DK3BHDUZ.js → chunk-INIITSC3.js} +3 -3
  30. package/dist/{chunk-ZHRIFUN3.cjs → chunk-L5TTJXLU.cjs} +28 -28
  31. package/dist/{chunk-ZHRIFUN3.cjs.map → chunk-L5TTJXLU.cjs.map} +1 -1
  32. package/dist/{chunk-7UW2BBFI.cjs → chunk-LGIBMKRM.cjs} +59 -59
  33. package/dist/{chunk-7UW2BBFI.cjs.map → chunk-LGIBMKRM.cjs.map} +1 -1
  34. package/dist/{chunk-IBQT4RTS.js → chunk-O3PPPILJ.js} +3 -3
  35. package/dist/{chunk-CWK4QHVF.js → chunk-OABFQXAI.js} +3 -3
  36. package/dist/{chunk-VEQWH5KH.cjs → chunk-OHLOPLOM.cjs} +30 -30
  37. package/dist/{chunk-VEQWH5KH.cjs.map → chunk-OHLOPLOM.cjs.map} +1 -1
  38. package/dist/{chunk-PHLBRU5P.js → chunk-P7FKI2UW.js} +3 -3
  39. package/dist/{chunk-YH3BUB4W.js → chunk-PTZKMV35.js} +5 -5
  40. package/dist/{chunk-E5HUHKHH.js → chunk-QGHMHW7R.js} +7 -7
  41. package/dist/{chunk-VJ4XBTR5.cjs → chunk-QH6PMRGF.cjs} +22 -22
  42. package/dist/{chunk-VJ4XBTR5.cjs.map → chunk-QH6PMRGF.cjs.map} +1 -1
  43. package/dist/{chunk-37NYF4W2.cjs → chunk-QRUW4UXB.cjs} +2 -1
  44. package/dist/chunk-QRUW4UXB.cjs.map +1 -0
  45. package/dist/{chunk-LJOELK7P.js → chunk-RG7XYHN7.js} +2 -2
  46. package/dist/{chunk-Y7SFGCF4.cjs → chunk-RRJ6EL63.cjs} +20 -20
  47. package/dist/{chunk-Y7SFGCF4.cjs.map → chunk-RRJ6EL63.cjs.map} +1 -1
  48. package/dist/{chunk-FJNX67W2.cjs → chunk-SEW23M5X.cjs} +5 -5
  49. package/dist/{chunk-FJNX67W2.cjs.map → chunk-SEW23M5X.cjs.map} +1 -1
  50. package/dist/{chunk-K4WYWTQV.cjs → chunk-TLMPNPYS.cjs} +6 -6
  51. package/dist/{chunk-K4WYWTQV.cjs.map → chunk-TLMPNPYS.cjs.map} +1 -1
  52. package/dist/{chunk-SHGMDYCR.js → chunk-VEAA5C5X.js} +2 -2
  53. package/dist/{chunk-5CC33IJ7.js → chunk-VXRWR56S.js} +6 -6
  54. package/dist/{chunk-NNYND3I4.js → chunk-XUHLWFEM.js} +3 -3
  55. package/dist/{chunk-QHL4GYYY.cjs → chunk-ZYFDPD73.cjs} +577 -452
  56. package/dist/chunk-ZYFDPD73.cjs.map +1 -0
  57. package/dist/components/case-studies/index.cjs +16 -16
  58. package/dist/components/case-studies/index.js +4 -4
  59. package/dist/components/chat/entity-cards/design-doc-card.d.ts +23 -0
  60. package/dist/components/chat/entity-cards/design-doc-card.d.ts.map +1 -0
  61. package/dist/components/chat/entity-cards/dispatch.d.ts.map +1 -1
  62. package/dist/components/chat/entity-cards/index.d.ts +1 -0
  63. package/dist/components/chat/entity-cards/index.d.ts.map +1 -1
  64. package/dist/components/chat/index.cjs +11 -3
  65. package/dist/components/chat/index.cjs.map +1 -1
  66. package/dist/components/chat/index.js +10 -2
  67. package/dist/components/contact/index.cjs +5 -5
  68. package/dist/components/contact/index.js +4 -4
  69. package/dist/components/docs/index.cjs +8 -8
  70. package/dist/components/docs/index.js +7 -7
  71. package/dist/components/embeds/index.cjs +5 -5
  72. package/dist/components/embeds/index.js +4 -4
  73. package/dist/components/faq/index.cjs +5 -5
  74. package/dist/components/faq/index.js +4 -4
  75. package/dist/components/features/index.cjs +4 -4
  76. package/dist/components/features/index.js +3 -3
  77. package/dist/components/help-center-pages/index.cjs +197 -89
  78. package/dist/components/help-center-pages/index.cjs.map +1 -1
  79. package/dist/components/help-center-pages/index.d.ts +1 -1
  80. package/dist/components/help-center-pages/index.d.ts.map +1 -1
  81. package/dist/components/help-center-pages/index.js +143 -35
  82. package/dist/components/help-center-pages/index.js.map +1 -1
  83. package/dist/components/help-center-pages/trust-center-page.d.ts +6 -0
  84. package/dist/components/help-center-pages/trust-center-page.d.ts.map +1 -1
  85. package/dist/components/help-center-pages/trust-center-sections.d.ts +17 -2
  86. package/dist/components/help-center-pages/trust-center-sections.d.ts.map +1 -1
  87. package/dist/components/index.cjs +62 -54
  88. package/dist/components/index.cjs.map +1 -1
  89. package/dist/components/index.js +23 -15
  90. package/dist/components/index.js.map +1 -1
  91. package/dist/components/meeting-scheduler/index.cjs +40 -40
  92. package/dist/components/meeting-scheduler/index.js +3 -3
  93. package/dist/components/navigation/index.cjs +7 -7
  94. package/dist/components/navigation/index.js +6 -6
  95. package/dist/components/onboarding-guides/index.cjs +7 -7
  96. package/dist/components/onboarding-guides/index.js +6 -6
  97. package/dist/components/related-content/index.cjs +3 -3
  98. package/dist/components/related-content/index.js +2 -2
  99. package/dist/components/tickets/index.cjs +8 -8
  100. package/dist/components/tickets/index.js +7 -7
  101. package/dist/components/ui/index.cjs +12 -4
  102. package/dist/components/ui/index.cjs.map +1 -1
  103. package/dist/components/ui/index.js +11 -3
  104. package/dist/index.cjs +27 -9
  105. package/dist/index.cjs.map +1 -1
  106. package/dist/index.js +25 -7
  107. package/dist/index.js.map +1 -1
  108. package/dist/utils/design-doc-readiness.d.ts +20 -0
  109. package/dist/utils/design-doc-readiness.d.ts.map +1 -0
  110. package/dist/utils/index.cjs +28 -3
  111. package/dist/utils/index.cjs.map +1 -1
  112. package/dist/utils/index.d.ts +1 -0
  113. package/dist/utils/index.d.ts.map +1 -1
  114. package/dist/utils/index.js +24 -4
  115. package/dist/utils/index.js.map +1 -1
  116. package/dist/utils/list-url.d.ts.map +1 -1
  117. package/dist/utils/source-icons.d.ts.map +1 -1
  118. package/package.json +1 -1
  119. package/src/components/chat/entity-cards/design-doc-card.tsx +114 -0
  120. package/src/components/chat/entity-cards/dispatch.tsx +62 -1
  121. package/src/components/chat/entity-cards/index.ts +7 -0
  122. package/src/components/help-center-pages/__tests__/trust-center-page.test.tsx +28 -1
  123. package/src/components/help-center-pages/index.ts +1 -1
  124. package/src/components/help-center-pages/trust-center-page.tsx +59 -16
  125. package/src/components/help-center-pages/trust-center-sections.tsx +159 -8
  126. package/src/utils/design-doc-readiness.ts +34 -0
  127. package/src/utils/index.ts +1 -0
  128. package/src/utils/list-url.ts +1 -0
  129. package/src/utils/source-icons.ts +3 -0
  130. package/dist/chunk-37NYF4W2.cjs.map +0 -1
  131. package/dist/chunk-IJPV7OMA.js.map +0 -1
  132. package/dist/chunk-QHL4GYYY.cjs.map +0 -1
  133. /package/dist/{chunk-6KJV6GAJ.js.map → chunk-5IP7FYUN.js.map} +0 -0
  134. /package/dist/{chunk-GF6WJ4MG.js.map → chunk-5Q6BE56A.js.map} +0 -0
  135. /package/dist/{chunk-GO63IT6K.js.map → chunk-6P335PRA.js.map} +0 -0
  136. /package/dist/{chunk-5V3LERVC.js.map → chunk-6X66J23J.js.map} +0 -0
  137. /package/dist/{chunk-FOH4MNOZ.js.map → chunk-C5CTLTKJ.js.map} +0 -0
  138. /package/dist/{chunk-IZ6F7LOE.js.map → chunk-IHOSMLBC.js.map} +0 -0
  139. /package/dist/{chunk-DK3BHDUZ.js.map → chunk-INIITSC3.js.map} +0 -0
  140. /package/dist/{chunk-IBQT4RTS.js.map → chunk-O3PPPILJ.js.map} +0 -0
  141. /package/dist/{chunk-CWK4QHVF.js.map → chunk-OABFQXAI.js.map} +0 -0
  142. /package/dist/{chunk-PHLBRU5P.js.map → chunk-P7FKI2UW.js.map} +0 -0
  143. /package/dist/{chunk-YH3BUB4W.js.map → chunk-PTZKMV35.js.map} +0 -0
  144. /package/dist/{chunk-E5HUHKHH.js.map → chunk-QGHMHW7R.js.map} +0 -0
  145. /package/dist/{chunk-LJOELK7P.js.map → chunk-RG7XYHN7.js.map} +0 -0
  146. /package/dist/{chunk-SHGMDYCR.js.map → chunk-VEAA5C5X.js.map} +0 -0
  147. /package/dist/{chunk-5CC33IJ7.js.map → chunk-VXRWR56S.js.map} +0 -0
  148. /package/dist/{chunk-NNYND3I4.js.map → chunk-XUHLWFEM.js.map} +0 -0
@@ -80,6 +80,7 @@ import {
80
80
  CodeSquareIcon,
81
81
  CodingBranchIcon,
82
82
  CodingCommitIcon,
83
+ CodingMergeIcon,
83
84
  CodingPullRequestIcon,
84
85
  CoinsExchangeCurrencyIcon,
85
86
  CompassIcon,
@@ -134,6 +135,7 @@ import {
134
135
  icons_v2_generated_exports
135
136
  } from "./chunk-N6RDO3L5.js";
136
137
  import {
138
+ AvatarStack,
137
139
  BlogCardSkeleton,
138
140
  COMPACT_CARD_ICON_SLOT,
139
141
  COMPACT_CARD_META_ROW,
@@ -192,7 +194,7 @@ import {
192
194
  trustFrameworkMonitoringEntry,
193
195
  trustFrameworksSummary,
194
196
  useCoverImageFallback
195
- } from "./chunk-P6IJXAEE.js";
197
+ } from "./chunk-DLJGCDHX.js";
196
198
  import {
197
199
  next_image_default
198
200
  } from "./chunk-MDKCTSDS.js";
@@ -14177,10 +14179,88 @@ function ChatVideoEntityCard({ chatRef }) {
14177
14179
  );
14178
14180
  }
14179
14181
 
14182
+ // src/utils/design-doc-readiness.ts
14183
+ var DESIGN_DOC_READINESS = ["ready", "not_ready"];
14184
+ var DESIGN_DOC_READINESS_DISPLAY = {
14185
+ ready: { label: "Ready to build", scheme: "success" },
14186
+ not_ready: { label: "Not ready", scheme: "default" }
14187
+ };
14188
+ var designDocReadiness = (completion) => completion.isComplete ? "ready" : "not_ready";
14189
+ function formatCompletionLabel(completion) {
14190
+ return `${completion.completed}/${completion.total} reviews signed off`;
14191
+ }
14192
+ function formatCompletionLabelWithBlockers(completion) {
14193
+ const base = formatCompletionLabel(completion);
14194
+ if (completion.isComplete) return `${DESIGN_DOC_READINESS_DISPLAY.ready.label} \xB7 ${base}`;
14195
+ return completion.openBlocking > 0 ? `${base} \xB7 ${completion.openBlocking} blocking` : base;
14196
+ }
14197
+
14198
+ // src/components/chat/entity-cards/design-doc-card.tsx
14199
+ import { Fragment as Fragment25, jsx as jsx87, jsxs as jsxs65 } from "react/jsx-runtime";
14200
+ function designDocPeople(doc) {
14201
+ const people = [];
14202
+ if (doc.author?.full_name)
14203
+ people.push({
14204
+ key: `dri-${doc.author.id ?? doc.author.full_name}`,
14205
+ name: doc.author.full_name,
14206
+ avatarUrl: doc.author.avatar_url
14207
+ });
14208
+ for (const p of doc.feature_leads ?? []) {
14209
+ if (!p.full_name) continue;
14210
+ people.push({ key: `lead-${p.id}`, name: p.full_name, avatarUrl: p.avatar_url });
14211
+ }
14212
+ return people;
14213
+ }
14214
+ function designDocMetaLine(doc) {
14215
+ return [doc.author?.full_name ? `DRI ${doc.author.full_name}` : null, `updated ${formatDateShort(doc.updated_at)}`].filter(Boolean).join(" \xB7 ");
14216
+ }
14217
+ function DesignDocCardSkeleton() {
14218
+ return /* @__PURE__ */ jsxs65("div", { className: "flex h-full animate-pulse flex-col gap-[16px] rounded-[6px] border border-ods-border bg-ods-card p-[24px]", children: [
14219
+ /* @__PURE__ */ jsx87("div", { className: "flex items-center gap-[16px]", children: /* @__PURE__ */ jsxs65("div", { className: "flex flex-1 flex-col gap-2", children: [
14220
+ /* @__PURE__ */ jsx87("div", { className: "h-5 w-3/4 rounded bg-ods-bg" }),
14221
+ /* @__PURE__ */ jsx87("div", { className: "h-4 w-1/3 rounded bg-ods-bg/70" })
14222
+ ] }) }),
14223
+ /* @__PURE__ */ jsx87("div", { className: "h-4 w-full rounded bg-ods-bg/60" }),
14224
+ /* @__PURE__ */ jsx87("div", { className: "h-4 w-5/6 rounded bg-ods-bg/60" })
14225
+ ] });
14226
+ }
14227
+ function DesignDocCard({ doc, href, target, rel, className }) {
14228
+ const readiness = DESIGN_DOC_READINESS_DISPLAY[designDocReadiness(doc.completion)];
14229
+ const people = designDocPeople(doc);
14230
+ const link = safeHref(href ?? null);
14231
+ const body = /* @__PURE__ */ jsxs65(Fragment25, { children: [
14232
+ /* @__PURE__ */ jsxs65("div", { className: "flex w-full items-center gap-[16px]", children: [
14233
+ /* @__PURE__ */ jsxs65("div", { className: "flex min-w-0 flex-1 flex-col", children: [
14234
+ /* @__PURE__ */ jsx87("div", { className: "flex min-h-[48px] items-center", children: /* @__PURE__ */ jsx87("h3", { className: "line-clamp-2 flex-1 text-ods-text-primary text-h3", children: doc.title || "Untitled design doc" }) }),
14235
+ /* @__PURE__ */ jsx87("div", { className: "flex min-h-[20px] items-center", children: /* @__PURE__ */ jsx87("p", { className: "truncate text-ods-text-secondary text-h5", children: designDocMetaLine(doc) }) })
14236
+ ] }),
14237
+ /* @__PURE__ */ jsx87(
14238
+ StatusBadge,
14239
+ {
14240
+ text: readiness.label,
14241
+ colorScheme: readiness.scheme,
14242
+ variant: "button",
14243
+ singleLine: true,
14244
+ className: "hidden md:inline-flex"
14245
+ }
14246
+ )
14247
+ ] }),
14248
+ /* @__PURE__ */ jsx87("div", { className: "md:hidden", children: /* @__PURE__ */ jsx87(StatusBadge, { text: readiness.label, colorScheme: readiness.scheme, variant: "button", singleLine: true }) }),
14249
+ /* @__PURE__ */ jsx87("div", { className: "flex min-h-[72px] items-center", children: /* @__PURE__ */ jsx87("p", { className: "line-clamp-3 text-ods-text-secondary text-h4", children: doc.summary || "" }) }),
14250
+ /* @__PURE__ */ jsx87("div", { className: "flex-1" }),
14251
+ /* @__PURE__ */ jsxs65("div", { className: "flex w-full items-center justify-between gap-2", children: [
14252
+ /* @__PURE__ */ jsx87("span", { className: "truncate text-ods-text-secondary text-h6", children: formatCompletionLabelWithBlockers(doc.completion) }),
14253
+ people.length > 0 ? /* @__PURE__ */ jsx87(AvatarStack, { size: "xs", people, className: "shrink-0" }) : null
14254
+ ] })
14255
+ ] });
14256
+ const outer = `flex h-full flex-col gap-[16px] rounded-[6px] border border-ods-border bg-ods-card p-[24px] transition-all hover:border-ods-accent ${className ?? ""}`;
14257
+ return link ? /* @__PURE__ */ jsx87("a", { href: link, target, rel, className: outer, children: body }) : /* @__PURE__ */ jsx87("div", { className: outer, children: body });
14258
+ }
14259
+
14180
14260
  // src/components/chat/entity-cards/github-activity-card.tsx
14181
14261
  import { GitPullRequest, Eye, ExternalLink } from "lucide-react";
14182
14262
  import React6 from "react";
14183
- import { Fragment as Fragment25, jsx as jsx87, jsxs as jsxs65 } from "react/jsx-runtime";
14263
+ import { Fragment as Fragment26, jsx as jsx88, jsxs as jsxs66 } from "react/jsx-runtime";
14184
14264
  function parseRepoFromUrl(url) {
14185
14265
  if (!url) return null;
14186
14266
  try {
@@ -14195,12 +14275,12 @@ function parseRepoFromUrl(url) {
14195
14275
  function kindIcon(kind, className = "h-4 w-4") {
14196
14276
  switch (kind) {
14197
14277
  case "pull_request":
14198
- return /* @__PURE__ */ jsx87(GitPullRequest, { className: `${className} shrink-0` });
14278
+ return /* @__PURE__ */ jsx88(GitPullRequest, { className: `${className} shrink-0` });
14199
14279
  case "pr_review":
14200
- return /* @__PURE__ */ jsx87(Eye, { className: `${className} shrink-0` });
14280
+ return /* @__PURE__ */ jsx88(Eye, { className: `${className} shrink-0` });
14201
14281
  case "commit":
14202
14282
  default:
14203
- return /* @__PURE__ */ jsx87(GitHubIcon, { className: `${className} shrink-0` });
14283
+ return /* @__PURE__ */ jsx88(GitHubIcon, { className: `${className} shrink-0` });
14204
14284
  }
14205
14285
  }
14206
14286
  function kindLabel(kind) {
@@ -14275,7 +14355,7 @@ function reviewStateLabel(state) {
14275
14355
  }
14276
14356
  function ReviewStateBadge({ state, className = "" }) {
14277
14357
  const { label, className: paint } = REVIEW_STATE_STYLE[state] ?? REVIEW_STATE_STYLE.COMMENTED;
14278
- return /* @__PURE__ */ jsx87("span", { className: `inline-flex shrink-0 items-center rounded px-1.5 py-0.5 text-h5 ${paint} ${className}`, children: label });
14358
+ return /* @__PURE__ */ jsx88("span", { className: `inline-flex shrink-0 items-center rounded px-1.5 py-0.5 text-h5 ${paint} ${className}`, children: label });
14279
14359
  }
14280
14360
  function GitHubActivityCard({ item, variant = "compact", className, anchorProps }) {
14281
14361
  const kind = item.kind ?? "commit";
@@ -14285,86 +14365,86 @@ function GitHubActivityCard({ item, variant = "compact", className, anchorProps
14285
14365
  const { display: title, reviewState } = parseGithubTitle(item.title, kind);
14286
14366
  const primaryText = kind === "pr_review" ? title.replace(/^by\s+/i, "").trim() || "Reviewer" : title;
14287
14367
  if (variant === "row") {
14288
- return /* @__PURE__ */ jsxs65("div", { className: `flex min-w-0 items-center gap-3 ${className ?? ""}`, children: [
14289
- /* @__PURE__ */ jsxs65("span", { className: "flex w-28 shrink-0 items-center gap-2", children: [
14368
+ return /* @__PURE__ */ jsxs66("div", { className: `flex min-w-0 items-center gap-3 ${className ?? ""}`, children: [
14369
+ /* @__PURE__ */ jsxs66("span", { className: "flex w-28 shrink-0 items-center gap-2", children: [
14290
14370
  kindIcon(kind, "h-3.5 w-3.5"),
14291
- /* @__PURE__ */ jsx87("code", { className: "truncate text-ods-text-secondary text-code", children: idLabel })
14371
+ /* @__PURE__ */ jsx88("code", { className: "truncate text-ods-text-secondary text-code", children: idLabel })
14292
14372
  ] }),
14293
- /* @__PURE__ */ jsxs65("span", { className: "flex min-w-0 flex-1 items-center gap-2 text-ods-text-primary text-h6", children: [
14294
- reviewState ? /* @__PURE__ */ jsx87(ReviewStateBadge, { state: reviewState }) : null,
14295
- /* @__PURE__ */ jsx87("span", { className: "truncate", children: primaryText })
14373
+ /* @__PURE__ */ jsxs66("span", { className: "flex min-w-0 flex-1 items-center gap-2 text-ods-text-primary text-h6", children: [
14374
+ reviewState ? /* @__PURE__ */ jsx88(ReviewStateBadge, { state: reviewState }) : null,
14375
+ /* @__PURE__ */ jsx88("span", { className: "truncate", children: primaryText })
14296
14376
  ] }),
14297
- repo ? /* @__PURE__ */ jsx87("span", { className: "max-w-[240px] shrink-0 truncate text-ods-text-secondary text-code", children: repo }) : null,
14298
- dateText ? /* @__PURE__ */ jsx87("span", { className: "w-24 shrink-0 text-right text-ods-text-secondary text-h6", children: dateText }) : null
14377
+ repo ? /* @__PURE__ */ jsx88("span", { className: "max-w-[240px] shrink-0 truncate text-ods-text-secondary text-code", children: repo }) : null,
14378
+ dateText ? /* @__PURE__ */ jsx88("span", { className: "w-24 shrink-0 text-right text-ods-text-secondary text-h6", children: dateText }) : null
14299
14379
  ] });
14300
14380
  }
14301
14381
  const metaParts = [];
14302
14382
  metaParts.push(
14303
- /* @__PURE__ */ jsx87("span", { className: "uppercase text-h6", children: kindLabel(kind) }, "kind")
14383
+ /* @__PURE__ */ jsx88("span", { className: "uppercase text-h6", children: kindLabel(kind) }, "kind")
14304
14384
  );
14305
14385
  if (idLabel)
14306
14386
  metaParts.push(
14307
- /* @__PURE__ */ jsx87("code", { className: "font-mono", children: idLabel }, "id")
14387
+ /* @__PURE__ */ jsx88("code", { className: "font-mono", children: idLabel }, "id")
14308
14388
  );
14309
14389
  if (repo)
14310
14390
  metaParts.push(
14311
- /* @__PURE__ */ jsx87("span", { className: "truncate font-mono", children: repo }, "repo")
14391
+ /* @__PURE__ */ jsx88("span", { className: "truncate font-mono", children: repo }, "repo")
14312
14392
  );
14313
14393
  if (dateText)
14314
14394
  metaParts.push(
14315
- /* @__PURE__ */ jsx87("span", { className: "whitespace-nowrap", children: dateText }, "date")
14395
+ /* @__PURE__ */ jsx88("span", { className: "whitespace-nowrap", children: dateText }, "date")
14316
14396
  );
14317
14397
  const href = safeHref(item.url);
14318
- const body = /* @__PURE__ */ jsxs65(Fragment25, { children: [
14319
- /* @__PURE__ */ jsx87("span", { className: COMPACT_CARD_ICON_SLOT, children: kindIcon(kind, "h-5 w-5") }),
14320
- /* @__PURE__ */ jsxs65("span", { className: COMPACT_CARD_TEXT_COL, children: [
14321
- /* @__PURE__ */ jsxs65("span", { className: `${COMPACT_CARD_TITLE_ROW} flex-nowrap gap-1.5`, children: [
14322
- reviewState ? /* @__PURE__ */ jsx87(ReviewStateBadge, { state: reviewState }) : null,
14323
- /* @__PURE__ */ jsx87("span", { className: COMPACT_CARD_TITLE, children: primaryText })
14398
+ const body = /* @__PURE__ */ jsxs66(Fragment26, { children: [
14399
+ /* @__PURE__ */ jsx88("span", { className: COMPACT_CARD_ICON_SLOT, children: kindIcon(kind, "h-5 w-5") }),
14400
+ /* @__PURE__ */ jsxs66("span", { className: COMPACT_CARD_TEXT_COL, children: [
14401
+ /* @__PURE__ */ jsxs66("span", { className: `${COMPACT_CARD_TITLE_ROW} flex-nowrap gap-1.5`, children: [
14402
+ reviewState ? /* @__PURE__ */ jsx88(ReviewStateBadge, { state: reviewState }) : null,
14403
+ /* @__PURE__ */ jsx88("span", { className: COMPACT_CARD_TITLE, children: primaryText })
14324
14404
  ] }),
14325
- /* @__PURE__ */ jsx87("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx87("span", { className: COMPACT_CARD_META_ROW, children: metaParts.map((part, i) => /* @__PURE__ */ jsxs65(React6.Fragment, { children: [
14326
- i > 0 ? /* @__PURE__ */ jsx87("span", { className: "shrink-0 text-ods-text-secondary/40", children: "\xB7" }) : null,
14327
- /* @__PURE__ */ jsx87("span", { className: "min-w-0 truncate", children: part })
14405
+ /* @__PURE__ */ jsx88("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx88("span", { className: COMPACT_CARD_META_ROW, children: metaParts.map((part, i) => /* @__PURE__ */ jsxs66(React6.Fragment, { children: [
14406
+ i > 0 ? /* @__PURE__ */ jsx88("span", { className: "shrink-0 text-ods-text-secondary/40", children: "\xB7" }) : null,
14407
+ /* @__PURE__ */ jsx88("span", { className: "min-w-0 truncate", children: part })
14328
14408
  ] }, i)) }) }),
14329
- /* @__PURE__ */ jsx87("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx87("span", { className: COMPACT_CARD_SUMMARY, children: COMPACT_CARD_ROW_FILLER }) })
14409
+ /* @__PURE__ */ jsx88("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx88("span", { className: COMPACT_CARD_SUMMARY, children: COMPACT_CARD_ROW_FILLER }) })
14330
14410
  ] }),
14331
- href ? /* @__PURE__ */ jsx87("span", { className: "flex h-5 shrink-0 items-center self-start text-ods-text-secondary", children: /* @__PURE__ */ jsx87(ExternalLink, { className: "h-3.5 w-3.5" }) }) : null
14411
+ href ? /* @__PURE__ */ jsx88("span", { className: "flex h-5 shrink-0 items-center self-start text-ods-text-secondary", children: /* @__PURE__ */ jsx88(ExternalLink, { className: "h-3.5 w-3.5" }) }) : null
14332
14412
  ] });
14333
14413
  if (anchorProps) {
14334
- return /* @__PURE__ */ jsx87("a", { ...anchorProps, className: `${COMPACT_CARD_OUTER} ${className ?? ""}`, children: body });
14414
+ return /* @__PURE__ */ jsx88("a", { ...anchorProps, className: `${COMPACT_CARD_OUTER} ${className ?? ""}`, children: body });
14335
14415
  }
14336
- return href ? /* @__PURE__ */ jsx87("a", { href, target: "_blank", rel: "noopener noreferrer", className: `${COMPACT_CARD_OUTER} ${className ?? ""}`, children: body }) : /* @__PURE__ */ jsx87("span", { className: `${COMPACT_CARD_OUTER_STATIC} ${className ?? ""}`, "aria-label": "No link available", children: body });
14416
+ return href ? /* @__PURE__ */ jsx88("a", { href, target: "_blank", rel: "noopener noreferrer", className: `${COMPACT_CARD_OUTER} ${className ?? ""}`, children: body }) : /* @__PURE__ */ jsx88("span", { className: `${COMPACT_CARD_OUTER_STATIC} ${className ?? ""}`, "aria-label": "No link available", children: body });
14337
14417
  }
14338
14418
  function GitHubActivityCardSkeleton({
14339
14419
  variant = "compact",
14340
14420
  className
14341
14421
  }) {
14342
14422
  if (variant === "row") {
14343
- return /* @__PURE__ */ jsxs65("div", { className: `flex min-w-0 animate-pulse items-center gap-3 ${className ?? ""}`, children: [
14344
- /* @__PURE__ */ jsxs65("div", { className: "flex w-28 shrink-0 items-center gap-2", children: [
14345
- /* @__PURE__ */ jsx87("div", { className: "h-3.5 w-3.5 rounded bg-ods-bg" }),
14346
- /* @__PURE__ */ jsx87("div", { className: "h-3 w-16 rounded bg-ods-bg" })
14423
+ return /* @__PURE__ */ jsxs66("div", { className: `flex min-w-0 animate-pulse items-center gap-3 ${className ?? ""}`, children: [
14424
+ /* @__PURE__ */ jsxs66("div", { className: "flex w-28 shrink-0 items-center gap-2", children: [
14425
+ /* @__PURE__ */ jsx88("div", { className: "h-3.5 w-3.5 rounded bg-ods-bg" }),
14426
+ /* @__PURE__ */ jsx88("div", { className: "h-3 w-16 rounded bg-ods-bg" })
14347
14427
  ] }),
14348
- /* @__PURE__ */ jsx87("div", { className: "h-3 w-2/3 flex-1 rounded bg-ods-bg" }),
14349
- /* @__PURE__ */ jsx87("div", { className: "h-3 w-40 shrink-0 rounded bg-ods-bg/60" }),
14350
- /* @__PURE__ */ jsx87("div", { className: "h-3 w-20 shrink-0 rounded bg-ods-bg/60" })
14428
+ /* @__PURE__ */ jsx88("div", { className: "h-3 w-2/3 flex-1 rounded bg-ods-bg" }),
14429
+ /* @__PURE__ */ jsx88("div", { className: "h-3 w-40 shrink-0 rounded bg-ods-bg/60" }),
14430
+ /* @__PURE__ */ jsx88("div", { className: "h-3 w-20 shrink-0 rounded bg-ods-bg/60" })
14351
14431
  ] });
14352
14432
  }
14353
- return /* @__PURE__ */ jsxs65("span", { className: `${COMPACT_CARD_SKELETON_OUTER} ${className ?? ""}`, children: [
14354
- /* @__PURE__ */ jsx87("span", { className: COMPACT_CARD_SKELETON_IMAGE_SLOT }),
14355
- /* @__PURE__ */ jsxs65("span", { className: COMPACT_CARD_TEXT_COL, children: [
14356
- /* @__PURE__ */ jsx87("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx87("span", { className: "h-3.5 w-2/3 rounded bg-ods-bg" }) }),
14357
- /* @__PURE__ */ jsx87("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx87("span", { className: "h-3 w-1/2 rounded bg-ods-bg/70" }) }),
14358
- /* @__PURE__ */ jsx87("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx87("span", { className: COMPACT_CARD_SUMMARY, children: COMPACT_CARD_ROW_FILLER }) })
14433
+ return /* @__PURE__ */ jsxs66("span", { className: `${COMPACT_CARD_SKELETON_OUTER} ${className ?? ""}`, children: [
14434
+ /* @__PURE__ */ jsx88("span", { className: COMPACT_CARD_SKELETON_IMAGE_SLOT }),
14435
+ /* @__PURE__ */ jsxs66("span", { className: COMPACT_CARD_TEXT_COL, children: [
14436
+ /* @__PURE__ */ jsx88("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx88("span", { className: "h-3.5 w-2/3 rounded bg-ods-bg" }) }),
14437
+ /* @__PURE__ */ jsx88("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx88("span", { className: "h-3 w-1/2 rounded bg-ods-bg/70" }) }),
14438
+ /* @__PURE__ */ jsx88("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx88("span", { className: COMPACT_CARD_SUMMARY, children: COMPACT_CARD_ROW_FILLER }) })
14359
14439
  ] }),
14360
- /* @__PURE__ */ jsx87("span", { className: "flex h-5 shrink-0 items-center self-start", children: /* @__PURE__ */ jsx87("span", { className: "h-3.5 w-3.5 rounded bg-ods-bg" }) })
14440
+ /* @__PURE__ */ jsx88("span", { className: "flex h-5 shrink-0 items-center self-start", children: /* @__PURE__ */ jsx88("span", { className: "h-3.5 w-3.5 rounded bg-ods-bg" }) })
14361
14441
  ] });
14362
14442
  }
14363
14443
 
14364
14444
  // src/components/chat/entity-cards/slack-message-card.tsx
14365
14445
  import { ExternalLink as ExternalLink2, Hash } from "lucide-react";
14366
14446
  import React7 from "react";
14367
- import { Fragment as Fragment26, jsx as jsx88, jsxs as jsxs66 } from "react/jsx-runtime";
14447
+ import { Fragment as Fragment27, jsx as jsx89, jsxs as jsxs67 } from "react/jsx-runtime";
14368
14448
  function parseChannelFromUrl(url) {
14369
14449
  if (!url) return null;
14370
14450
  try {
@@ -14381,76 +14461,76 @@ function SlackMessageCard({ item, variant = "compact", className, anchorProps })
14381
14461
  const channel = item.channel ?? parseChannelFromUrl(item.url) ?? null;
14382
14462
  const dateText = formatDateUTC(item.dateUpdated, { fallback: "", timezone: "local" });
14383
14463
  if (variant === "row") {
14384
- return /* @__PURE__ */ jsxs66("div", { className: `flex min-w-0 items-center gap-3 ${className ?? ""}`, children: [
14385
- /* @__PURE__ */ jsx88(SlackIcon, { className: "h-3.5 w-3.5 shrink-0" }),
14386
- /* @__PURE__ */ jsx88("span", { className: "max-w-[180px] shrink-0 truncate text-ods-text-primary text-h6", children: item.title }),
14387
- item.preview ? /* @__PURE__ */ jsx88("span", { className: "min-w-0 flex-1 truncate text-ods-text-secondary text-h6", children: item.preview }) : null,
14388
- channel ? /* @__PURE__ */ jsxs66("span", { className: "max-w-[140px] shrink-0 truncate text-ods-text-secondary text-code", children: [
14389
- /* @__PURE__ */ jsx88(Hash, { className: "inline h-3 w-3" }),
14464
+ return /* @__PURE__ */ jsxs67("div", { className: `flex min-w-0 items-center gap-3 ${className ?? ""}`, children: [
14465
+ /* @__PURE__ */ jsx89(SlackIcon, { className: "h-3.5 w-3.5 shrink-0" }),
14466
+ /* @__PURE__ */ jsx89("span", { className: "max-w-[180px] shrink-0 truncate text-ods-text-primary text-h6", children: item.title }),
14467
+ item.preview ? /* @__PURE__ */ jsx89("span", { className: "min-w-0 flex-1 truncate text-ods-text-secondary text-h6", children: item.preview }) : null,
14468
+ channel ? /* @__PURE__ */ jsxs67("span", { className: "max-w-[140px] shrink-0 truncate text-ods-text-secondary text-code", children: [
14469
+ /* @__PURE__ */ jsx89(Hash, { className: "inline h-3 w-3" }),
14390
14470
  channel
14391
14471
  ] }) : null,
14392
- dateText ? /* @__PURE__ */ jsx88("span", { className: "w-24 shrink-0 text-right text-ods-text-secondary text-h6", children: dateText }) : null
14472
+ dateText ? /* @__PURE__ */ jsx89("span", { className: "w-24 shrink-0 text-right text-ods-text-secondary text-h6", children: dateText }) : null
14393
14473
  ] });
14394
14474
  }
14395
14475
  const metaParts = [];
14396
14476
  if (channel) {
14397
14477
  metaParts.push(
14398
- /* @__PURE__ */ jsxs66("span", { className: "flex min-w-0 items-center gap-0.5", children: [
14399
- /* @__PURE__ */ jsx88(Hash, { className: "h-3 w-3 shrink-0" }),
14400
- /* @__PURE__ */ jsx88("span", { className: "truncate font-mono", children: channel })
14478
+ /* @__PURE__ */ jsxs67("span", { className: "flex min-w-0 items-center gap-0.5", children: [
14479
+ /* @__PURE__ */ jsx89(Hash, { className: "h-3 w-3 shrink-0" }),
14480
+ /* @__PURE__ */ jsx89("span", { className: "truncate font-mono", children: channel })
14401
14481
  ] }, "channel")
14402
14482
  );
14403
14483
  }
14404
14484
  if (dateText)
14405
14485
  metaParts.push(
14406
- /* @__PURE__ */ jsx88("span", { className: "whitespace-nowrap", children: dateText }, "date")
14486
+ /* @__PURE__ */ jsx89("span", { className: "whitespace-nowrap", children: dateText }, "date")
14407
14487
  );
14408
14488
  const href = safeHref(item.url);
14409
- const body = /* @__PURE__ */ jsxs66(Fragment26, { children: [
14410
- /* @__PURE__ */ jsx88("span", { className: COMPACT_CARD_ICON_SLOT, children: /* @__PURE__ */ jsx88(SlackIcon, { className: "h-5 w-5" }) }),
14411
- /* @__PURE__ */ jsxs66("span", { className: COMPACT_CARD_TEXT_COL, children: [
14412
- /* @__PURE__ */ jsx88("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx88("span", { className: COMPACT_CARD_TITLE, children: item.title }) }),
14413
- /* @__PURE__ */ jsx88("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx88("span", { className: COMPACT_CARD_SUMMARY, children: item.preview || COMPACT_CARD_ROW_FILLER }) }),
14414
- /* @__PURE__ */ jsx88("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx88("span", { className: COMPACT_CARD_META_ROW, children: metaParts.length > 0 ? metaParts.map((part, i) => /* @__PURE__ */ jsxs66(React7.Fragment, { children: [
14415
- i > 0 ? /* @__PURE__ */ jsx88("span", { className: "shrink-0 text-ods-text-secondary/40", children: "\xB7" }) : null,
14416
- /* @__PURE__ */ jsx88("span", { className: "min-w-0 truncate", children: part })
14417
- ] }, i)) : /* @__PURE__ */ jsx88("span", { className: COMPACT_CARD_SUMMARY, children: COMPACT_CARD_ROW_FILLER }) }) })
14489
+ const body = /* @__PURE__ */ jsxs67(Fragment27, { children: [
14490
+ /* @__PURE__ */ jsx89("span", { className: COMPACT_CARD_ICON_SLOT, children: /* @__PURE__ */ jsx89(SlackIcon, { className: "h-5 w-5" }) }),
14491
+ /* @__PURE__ */ jsxs67("span", { className: COMPACT_CARD_TEXT_COL, children: [
14492
+ /* @__PURE__ */ jsx89("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx89("span", { className: COMPACT_CARD_TITLE, children: item.title }) }),
14493
+ /* @__PURE__ */ jsx89("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx89("span", { className: COMPACT_CARD_SUMMARY, children: item.preview || COMPACT_CARD_ROW_FILLER }) }),
14494
+ /* @__PURE__ */ jsx89("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx89("span", { className: COMPACT_CARD_META_ROW, children: metaParts.length > 0 ? metaParts.map((part, i) => /* @__PURE__ */ jsxs67(React7.Fragment, { children: [
14495
+ i > 0 ? /* @__PURE__ */ jsx89("span", { className: "shrink-0 text-ods-text-secondary/40", children: "\xB7" }) : null,
14496
+ /* @__PURE__ */ jsx89("span", { className: "min-w-0 truncate", children: part })
14497
+ ] }, i)) : /* @__PURE__ */ jsx89("span", { className: COMPACT_CARD_SUMMARY, children: COMPACT_CARD_ROW_FILLER }) }) })
14418
14498
  ] }),
14419
- href ? /* @__PURE__ */ jsx88("span", { className: "flex h-5 shrink-0 items-center self-start text-ods-text-secondary", children: /* @__PURE__ */ jsx88(ExternalLink2, { className: "h-3.5 w-3.5" }) }) : null
14499
+ href ? /* @__PURE__ */ jsx89("span", { className: "flex h-5 shrink-0 items-center self-start text-ods-text-secondary", children: /* @__PURE__ */ jsx89(ExternalLink2, { className: "h-3.5 w-3.5" }) }) : null
14420
14500
  ] });
14421
14501
  if (anchorProps) {
14422
- return /* @__PURE__ */ jsx88("a", { ...anchorProps, className: `${COMPACT_CARD_OUTER} ${className ?? ""}`, children: body });
14502
+ return /* @__PURE__ */ jsx89("a", { ...anchorProps, className: `${COMPACT_CARD_OUTER} ${className ?? ""}`, children: body });
14423
14503
  }
14424
- return href ? /* @__PURE__ */ jsx88("a", { href, target: "_blank", rel: "noopener noreferrer", className: `${COMPACT_CARD_OUTER} ${className ?? ""}`, children: body }) : /* @__PURE__ */ jsx88("span", { className: `${COMPACT_CARD_OUTER_STATIC} ${className ?? ""}`, "aria-label": "No link available", children: body });
14504
+ return href ? /* @__PURE__ */ jsx89("a", { href, target: "_blank", rel: "noopener noreferrer", className: `${COMPACT_CARD_OUTER} ${className ?? ""}`, children: body }) : /* @__PURE__ */ jsx89("span", { className: `${COMPACT_CARD_OUTER_STATIC} ${className ?? ""}`, "aria-label": "No link available", children: body });
14425
14505
  }
14426
14506
  function SlackMessageCardSkeleton({
14427
14507
  variant = "compact",
14428
14508
  className
14429
14509
  }) {
14430
14510
  if (variant === "row") {
14431
- return /* @__PURE__ */ jsxs66("div", { className: `flex min-w-0 animate-pulse items-center gap-3 ${className ?? ""}`, children: [
14432
- /* @__PURE__ */ jsx88("div", { className: "h-3.5 w-3.5 shrink-0 rounded bg-ods-bg" }),
14433
- /* @__PURE__ */ jsx88("div", { className: "h-3 w-32 shrink-0 rounded bg-ods-bg" }),
14434
- /* @__PURE__ */ jsx88("div", { className: "h-3 w-2/3 flex-1 rounded bg-ods-bg/60" }),
14435
- /* @__PURE__ */ jsx88("div", { className: "h-3 w-24 shrink-0 rounded bg-ods-bg/60" }),
14436
- /* @__PURE__ */ jsx88("div", { className: "h-3 w-20 shrink-0 rounded bg-ods-bg/60" })
14511
+ return /* @__PURE__ */ jsxs67("div", { className: `flex min-w-0 animate-pulse items-center gap-3 ${className ?? ""}`, children: [
14512
+ /* @__PURE__ */ jsx89("div", { className: "h-3.5 w-3.5 shrink-0 rounded bg-ods-bg" }),
14513
+ /* @__PURE__ */ jsx89("div", { className: "h-3 w-32 shrink-0 rounded bg-ods-bg" }),
14514
+ /* @__PURE__ */ jsx89("div", { className: "h-3 w-2/3 flex-1 rounded bg-ods-bg/60" }),
14515
+ /* @__PURE__ */ jsx89("div", { className: "h-3 w-24 shrink-0 rounded bg-ods-bg/60" }),
14516
+ /* @__PURE__ */ jsx89("div", { className: "h-3 w-20 shrink-0 rounded bg-ods-bg/60" })
14437
14517
  ] });
14438
14518
  }
14439
- return /* @__PURE__ */ jsxs66("span", { className: `${COMPACT_CARD_SKELETON_OUTER} ${className ?? ""}`, children: [
14440
- /* @__PURE__ */ jsx88("span", { className: COMPACT_CARD_SKELETON_IMAGE_SLOT }),
14441
- /* @__PURE__ */ jsxs66("span", { className: COMPACT_CARD_TEXT_COL, children: [
14442
- /* @__PURE__ */ jsx88("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx88("span", { className: "h-3.5 w-2/3 rounded bg-ods-bg" }) }),
14443
- /* @__PURE__ */ jsx88("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx88("span", { className: "h-3 w-5/6 rounded bg-ods-bg/60" }) }),
14444
- /* @__PURE__ */ jsx88("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx88("span", { className: "h-3 w-1/3 rounded bg-ods-bg/70" }) })
14519
+ return /* @__PURE__ */ jsxs67("span", { className: `${COMPACT_CARD_SKELETON_OUTER} ${className ?? ""}`, children: [
14520
+ /* @__PURE__ */ jsx89("span", { className: COMPACT_CARD_SKELETON_IMAGE_SLOT }),
14521
+ /* @__PURE__ */ jsxs67("span", { className: COMPACT_CARD_TEXT_COL, children: [
14522
+ /* @__PURE__ */ jsx89("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx89("span", { className: "h-3.5 w-2/3 rounded bg-ods-bg" }) }),
14523
+ /* @__PURE__ */ jsx89("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx89("span", { className: "h-3 w-5/6 rounded bg-ods-bg/60" }) }),
14524
+ /* @__PURE__ */ jsx89("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx89("span", { className: "h-3 w-1/3 rounded bg-ods-bg/70" }) })
14445
14525
  ] }),
14446
- /* @__PURE__ */ jsx88("span", { className: "flex h-5 shrink-0 items-center self-start", children: /* @__PURE__ */ jsx88("span", { className: "h-3.5 w-3.5 rounded bg-ods-bg" }) })
14526
+ /* @__PURE__ */ jsx89("span", { className: "flex h-5 shrink-0 items-center self-start", children: /* @__PURE__ */ jsx89("span", { className: "h-3.5 w-3.5 rounded bg-ods-bg" }) })
14447
14527
  ] });
14448
14528
  }
14449
14529
 
14450
14530
  // src/components/chat/entity-cards/hubspot-ticket-card.tsx
14451
14531
  import { ExternalLink as ExternalLink3 } from "lucide-react";
14452
14532
  import React8 from "react";
14453
- import { Fragment as Fragment27, jsx as jsx89, jsxs as jsxs67 } from "react/jsx-runtime";
14533
+ import { Fragment as Fragment28, jsx as jsx90, jsxs as jsxs68 } from "react/jsx-runtime";
14454
14534
  function formatToken(token) {
14455
14535
  if (!token) return null;
14456
14536
  const lower = token.toLowerCase().replace(/_/g, " ");
@@ -14474,29 +14554,29 @@ function HubspotTicketCard({ item, variant = "compact", className, anchorProps }
14474
14554
  const priorityText = formatToken(item.priority);
14475
14555
  const dateText = formatDateUTC(item.dateUpdated, { fallback: "", timezone: "local" });
14476
14556
  if (variant === "row") {
14477
- return /* @__PURE__ */ jsxs67("div", { className: `flex min-w-0 items-center gap-3 ${className ?? ""}`, children: [
14478
- /* @__PURE__ */ jsx89("span", { className: "max-w-[260px] shrink-0 truncate text-ods-text-primary text-h6", children: item.title }),
14479
- item.preview ? /* @__PURE__ */ jsx89("span", { className: "min-w-0 flex-1 truncate text-ods-text-secondary text-h6", children: item.preview }) : null,
14480
- statusText ? /* @__PURE__ */ jsx89(StatusBadge, { text: statusText, variant: "button", colorScheme: statusScheme(item.status) }) : null,
14481
- dateText ? /* @__PURE__ */ jsx89("span", { className: "w-24 shrink-0 text-right text-ods-text-secondary text-h6", children: dateText }) : null
14557
+ return /* @__PURE__ */ jsxs68("div", { className: `flex min-w-0 items-center gap-3 ${className ?? ""}`, children: [
14558
+ /* @__PURE__ */ jsx90("span", { className: "max-w-[260px] shrink-0 truncate text-ods-text-primary text-h6", children: item.title }),
14559
+ item.preview ? /* @__PURE__ */ jsx90("span", { className: "min-w-0 flex-1 truncate text-ods-text-secondary text-h6", children: item.preview }) : null,
14560
+ statusText ? /* @__PURE__ */ jsx90(StatusBadge, { text: statusText, variant: "button", colorScheme: statusScheme(item.status) }) : null,
14561
+ dateText ? /* @__PURE__ */ jsx90("span", { className: "w-24 shrink-0 text-right text-ods-text-secondary text-h6", children: dateText }) : null
14482
14562
  ] });
14483
14563
  }
14484
14564
  const metaParts = [];
14485
14565
  if (item.customerCompany) {
14486
14566
  metaParts.push(
14487
- /* @__PURE__ */ jsx89("span", { className: "min-w-0 truncate", children: item.customerCompany }, "company")
14567
+ /* @__PURE__ */ jsx90("span", { className: "min-w-0 truncate", children: item.customerCompany }, "company")
14488
14568
  );
14489
14569
  }
14490
14570
  if (dateText)
14491
14571
  metaParts.push(
14492
- /* @__PURE__ */ jsx89("span", { className: "whitespace-nowrap", children: dateText }, "date")
14572
+ /* @__PURE__ */ jsx90("span", { className: "whitespace-nowrap", children: dateText }, "date")
14493
14573
  );
14494
14574
  const href = safeHref(item.url);
14495
- const body = /* @__PURE__ */ jsxs67(Fragment27, { children: [
14496
- /* @__PURE__ */ jsxs67("span", { className: COMPACT_CARD_TEXT_COL, children: [
14497
- /* @__PURE__ */ jsxs67("span", { className: "flex min-w-0 flex-wrap items-center gap-1.5", children: [
14498
- /* @__PURE__ */ jsx89("span", { className: `${COMPACT_CARD_TITLE} min-w-0 shrink`, children: item.title }),
14499
- priorityText ? /* @__PURE__ */ jsx89(
14575
+ const body = /* @__PURE__ */ jsxs68(Fragment28, { children: [
14576
+ /* @__PURE__ */ jsxs68("span", { className: COMPACT_CARD_TEXT_COL, children: [
14577
+ /* @__PURE__ */ jsxs68("span", { className: "flex min-w-0 flex-wrap items-center gap-1.5", children: [
14578
+ /* @__PURE__ */ jsx90("span", { className: `${COMPACT_CARD_TITLE} min-w-0 shrink`, children: item.title }),
14579
+ priorityText ? /* @__PURE__ */ jsx90(
14500
14580
  StatusBadge,
14501
14581
  {
14502
14582
  text: priorityText,
@@ -14505,7 +14585,7 @@ function HubspotTicketCard({ item, variant = "compact", className, anchorProps }
14505
14585
  className: "shrink-0"
14506
14586
  }
14507
14587
  ) : null,
14508
- statusText ? /* @__PURE__ */ jsx89(
14588
+ statusText ? /* @__PURE__ */ jsx90(
14509
14589
  StatusBadge,
14510
14590
  {
14511
14591
  text: statusText,
@@ -14515,139 +14595,139 @@ function HubspotTicketCard({ item, variant = "compact", className, anchorProps }
14515
14595
  }
14516
14596
  ) : null
14517
14597
  ] }),
14518
- item.customerEmail ? /* @__PURE__ */ jsxs67("span", { className: "flex min-w-0 items-center gap-1 text-ods-text-secondary text-h6", children: [
14519
- /* @__PURE__ */ jsx89("span", { className: "shrink-0 text-ods-text-secondary/70", children: "From:" }),
14520
- /* @__PURE__ */ jsx89("span", { className: "min-w-0 truncate", children: item.customerEmail })
14598
+ item.customerEmail ? /* @__PURE__ */ jsxs68("span", { className: "flex min-w-0 items-center gap-1 text-ods-text-secondary text-h6", children: [
14599
+ /* @__PURE__ */ jsx90("span", { className: "shrink-0 text-ods-text-secondary/70", children: "From:" }),
14600
+ /* @__PURE__ */ jsx90("span", { className: "min-w-0 truncate", children: item.customerEmail })
14521
14601
  ] }) : null,
14522
- /* @__PURE__ */ jsx89("span", { className: "flex min-w-0", children: /* @__PURE__ */ jsx89("span", { className: "line-clamp-4 whitespace-pre-wrap break-words text-ods-text-secondary text-h6", children: item.preview || /* @__PURE__ */ jsx89("span", { className: "italic text-ods-text-secondary/60", children: "No description provided." }) }) }),
14523
- metaParts.length > 0 ? /* @__PURE__ */ jsx89("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx89("span", { className: COMPACT_CARD_META_ROW, children: metaParts.map((part, i) => /* @__PURE__ */ jsxs67(React8.Fragment, { children: [
14524
- i > 0 ? /* @__PURE__ */ jsx89("span", { className: "shrink-0 text-ods-text-secondary/40", children: "\xB7" }) : null,
14525
- /* @__PURE__ */ jsx89("span", { className: "min-w-0 truncate", children: part })
14602
+ /* @__PURE__ */ jsx90("span", { className: "flex min-w-0", children: /* @__PURE__ */ jsx90("span", { className: "line-clamp-4 whitespace-pre-wrap break-words text-ods-text-secondary text-h6", children: item.preview || /* @__PURE__ */ jsx90("span", { className: "italic text-ods-text-secondary/60", children: "No description provided." }) }) }),
14603
+ metaParts.length > 0 ? /* @__PURE__ */ jsx90("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx90("span", { className: COMPACT_CARD_META_ROW, children: metaParts.map((part, i) => /* @__PURE__ */ jsxs68(React8.Fragment, { children: [
14604
+ i > 0 ? /* @__PURE__ */ jsx90("span", { className: "shrink-0 text-ods-text-secondary/40", children: "\xB7" }) : null,
14605
+ /* @__PURE__ */ jsx90("span", { className: "min-w-0 truncate", children: part })
14526
14606
  ] }, i)) }) }) : null
14527
14607
  ] }),
14528
- href ? /* @__PURE__ */ jsx89("span", { className: "flex h-5 shrink-0 items-center self-start text-ods-text-secondary", children: /* @__PURE__ */ jsx89(ExternalLink3, { className: "h-3.5 w-3.5" }) }) : null
14608
+ href ? /* @__PURE__ */ jsx90("span", { className: "flex h-5 shrink-0 items-center self-start text-ods-text-secondary", children: /* @__PURE__ */ jsx90(ExternalLink3, { className: "h-3.5 w-3.5" }) }) : null
14529
14609
  ] });
14530
14610
  if (anchorProps) {
14531
- return /* @__PURE__ */ jsx89("a", { ...anchorProps, className: `${COMPACT_CARD_OUTER} ${className ?? ""}`, children: body });
14611
+ return /* @__PURE__ */ jsx90("a", { ...anchorProps, className: `${COMPACT_CARD_OUTER} ${className ?? ""}`, children: body });
14532
14612
  }
14533
- return href ? /* @__PURE__ */ jsx89("a", { href, target: "_blank", rel: "noopener noreferrer", className: `${COMPACT_CARD_OUTER} ${className ?? ""}`, children: body }) : /* @__PURE__ */ jsx89("span", { className: `${COMPACT_CARD_OUTER_STATIC} ${className ?? ""}`, "aria-label": "No link available", children: body });
14613
+ return href ? /* @__PURE__ */ jsx90("a", { href, target: "_blank", rel: "noopener noreferrer", className: `${COMPACT_CARD_OUTER} ${className ?? ""}`, children: body }) : /* @__PURE__ */ jsx90("span", { className: `${COMPACT_CARD_OUTER_STATIC} ${className ?? ""}`, "aria-label": "No link available", children: body });
14534
14614
  }
14535
14615
  function HubspotTicketCardSkeleton({
14536
14616
  variant = "compact",
14537
14617
  className
14538
14618
  }) {
14539
14619
  if (variant === "row") {
14540
- return /* @__PURE__ */ jsxs67("div", { className: `flex min-w-0 animate-pulse items-center gap-3 ${className ?? ""}`, children: [
14541
- /* @__PURE__ */ jsx89("div", { className: "h-3 w-40 shrink-0 rounded bg-ods-bg" }),
14542
- /* @__PURE__ */ jsx89("div", { className: "h-3 w-2/3 flex-1 rounded bg-ods-bg/60" }),
14543
- /* @__PURE__ */ jsx89("div", { className: "h-3 w-16 shrink-0 rounded bg-ods-bg/60" }),
14544
- /* @__PURE__ */ jsx89("div", { className: "h-3 w-20 shrink-0 rounded bg-ods-bg/60" })
14620
+ return /* @__PURE__ */ jsxs68("div", { className: `flex min-w-0 animate-pulse items-center gap-3 ${className ?? ""}`, children: [
14621
+ /* @__PURE__ */ jsx90("div", { className: "h-3 w-40 shrink-0 rounded bg-ods-bg" }),
14622
+ /* @__PURE__ */ jsx90("div", { className: "h-3 w-2/3 flex-1 rounded bg-ods-bg/60" }),
14623
+ /* @__PURE__ */ jsx90("div", { className: "h-3 w-16 shrink-0 rounded bg-ods-bg/60" }),
14624
+ /* @__PURE__ */ jsx90("div", { className: "h-3 w-20 shrink-0 rounded bg-ods-bg/60" })
14545
14625
  ] });
14546
14626
  }
14547
- return /* @__PURE__ */ jsxs67("span", { className: `${COMPACT_CARD_SKELETON_OUTER} ${className ?? ""}`, children: [
14548
- /* @__PURE__ */ jsxs67("span", { className: COMPACT_CARD_TEXT_COL, children: [
14549
- /* @__PURE__ */ jsxs67("span", { className: "flex min-w-0 flex-wrap items-center gap-1.5", children: [
14550
- /* @__PURE__ */ jsx89("span", { className: "h-3.5 w-2/3 rounded bg-ods-bg" }),
14551
- /* @__PURE__ */ jsx89("span", { className: "h-4 w-12 rounded-full bg-ods-bg/60" }),
14552
- /* @__PURE__ */ jsx89("span", { className: "h-4 w-16 rounded-full bg-ods-bg/60" })
14627
+ return /* @__PURE__ */ jsxs68("span", { className: `${COMPACT_CARD_SKELETON_OUTER} ${className ?? ""}`, children: [
14628
+ /* @__PURE__ */ jsxs68("span", { className: COMPACT_CARD_TEXT_COL, children: [
14629
+ /* @__PURE__ */ jsxs68("span", { className: "flex min-w-0 flex-wrap items-center gap-1.5", children: [
14630
+ /* @__PURE__ */ jsx90("span", { className: "h-3.5 w-2/3 rounded bg-ods-bg" }),
14631
+ /* @__PURE__ */ jsx90("span", { className: "h-4 w-12 rounded-full bg-ods-bg/60" }),
14632
+ /* @__PURE__ */ jsx90("span", { className: "h-4 w-16 rounded-full bg-ods-bg/60" })
14553
14633
  ] }),
14554
- /* @__PURE__ */ jsx89("span", { className: "h-4 w-1/2 rounded bg-ods-bg/60" }),
14555
- /* @__PURE__ */ jsxs67("span", { className: "flex min-w-0 flex-col gap-0", children: [
14556
- /* @__PURE__ */ jsx89("span", { className: "h-5 w-5/6 rounded bg-ods-bg/60" }),
14557
- /* @__PURE__ */ jsx89("span", { className: "h-5 w-4/6 rounded bg-ods-bg/60" }),
14558
- /* @__PURE__ */ jsx89("span", { className: "h-5 w-3/4 rounded bg-ods-bg/60" }),
14559
- /* @__PURE__ */ jsx89("span", { className: "h-5 w-2/5 rounded bg-ods-bg/60" })
14634
+ /* @__PURE__ */ jsx90("span", { className: "h-4 w-1/2 rounded bg-ods-bg/60" }),
14635
+ /* @__PURE__ */ jsxs68("span", { className: "flex min-w-0 flex-col gap-0", children: [
14636
+ /* @__PURE__ */ jsx90("span", { className: "h-5 w-5/6 rounded bg-ods-bg/60" }),
14637
+ /* @__PURE__ */ jsx90("span", { className: "h-5 w-4/6 rounded bg-ods-bg/60" }),
14638
+ /* @__PURE__ */ jsx90("span", { className: "h-5 w-3/4 rounded bg-ods-bg/60" }),
14639
+ /* @__PURE__ */ jsx90("span", { className: "h-5 w-2/5 rounded bg-ods-bg/60" })
14560
14640
  ] }),
14561
- /* @__PURE__ */ jsx89("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx89("span", { className: "h-3 w-1/3 rounded bg-ods-bg/70" }) })
14641
+ /* @__PURE__ */ jsx90("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx90("span", { className: "h-3 w-1/3 rounded bg-ods-bg/70" }) })
14562
14642
  ] }),
14563
- /* @__PURE__ */ jsx89("span", { className: "flex h-5 shrink-0 items-center self-start", children: /* @__PURE__ */ jsx89("span", { className: "h-3.5 w-3.5 rounded bg-ods-bg" }) })
14643
+ /* @__PURE__ */ jsx90("span", { className: "flex h-5 shrink-0 items-center self-start", children: /* @__PURE__ */ jsx90("span", { className: "h-3.5 w-3.5 rounded bg-ods-bg" }) })
14564
14644
  ] });
14565
14645
  }
14566
14646
 
14567
14647
  // src/components/chat/entity-cards/data-room-doc-card.tsx
14568
14648
  import { ExternalLink as ExternalLink4 } from "lucide-react";
14569
- import { Fragment as Fragment28, jsx as jsx90, jsxs as jsxs68 } from "react/jsx-runtime";
14649
+ import { Fragment as Fragment29, jsx as jsx91, jsxs as jsxs69 } from "react/jsx-runtime";
14570
14650
  function DataRoomDocCard({ item, className, badgeText, anchorProps }) {
14571
- const body = /* @__PURE__ */ jsxs68(Fragment28, { children: [
14572
- /* @__PURE__ */ jsxs68("span", { className: COMPACT_CARD_TEXT_COL, children: [
14573
- /* @__PURE__ */ jsxs68("span", { className: "flex min-w-0 flex-wrap items-center gap-1.5", children: [
14574
- /* @__PURE__ */ jsx90("span", { className: `${COMPACT_CARD_TITLE} min-w-0 shrink`, children: item.title }),
14575
- /* @__PURE__ */ jsx90(StatusBadge, { text: badgeText, variant: "button", colorScheme: "cyan", className: "shrink-0" })
14651
+ const body = /* @__PURE__ */ jsxs69(Fragment29, { children: [
14652
+ /* @__PURE__ */ jsxs69("span", { className: COMPACT_CARD_TEXT_COL, children: [
14653
+ /* @__PURE__ */ jsxs69("span", { className: "flex min-w-0 flex-wrap items-center gap-1.5", children: [
14654
+ /* @__PURE__ */ jsx91("span", { className: `${COMPACT_CARD_TITLE} min-w-0 shrink`, children: item.title }),
14655
+ /* @__PURE__ */ jsx91(StatusBadge, { text: badgeText, variant: "button", colorScheme: "cyan", className: "shrink-0" })
14576
14656
  ] }),
14577
- item.path ? /* @__PURE__ */ jsxs68("span", { className: "flex min-w-0 items-center gap-1 text-ods-text-secondary text-h6", children: [
14578
- /* @__PURE__ */ jsx90("span", { className: "shrink-0 text-ods-text-secondary/70", children: "Path:" }),
14579
- /* @__PURE__ */ jsx90("span", { className: "min-w-0 truncate font-mono", children: item.path })
14657
+ item.path ? /* @__PURE__ */ jsxs69("span", { className: "flex min-w-0 items-center gap-1 text-ods-text-secondary text-h6", children: [
14658
+ /* @__PURE__ */ jsx91("span", { className: "shrink-0 text-ods-text-secondary/70", children: "Path:" }),
14659
+ /* @__PURE__ */ jsx91("span", { className: "min-w-0 truncate font-mono", children: item.path })
14580
14660
  ] }) : null,
14581
- item.preview ? /* @__PURE__ */ jsx90("span", { className: "flex min-w-0", children: /* @__PURE__ */ jsx90("span", { className: "line-clamp-2 whitespace-pre-wrap break-words text-ods-text-secondary text-h6", children: item.preview }) }) : null
14661
+ item.preview ? /* @__PURE__ */ jsx91("span", { className: "flex min-w-0", children: /* @__PURE__ */ jsx91("span", { className: "line-clamp-2 whitespace-pre-wrap break-words text-ods-text-secondary text-h6", children: item.preview }) }) : null
14582
14662
  ] }),
14583
- anchorProps?.href ? /* @__PURE__ */ jsx90("span", { className: "flex h-5 shrink-0 items-center self-start text-ods-text-secondary", children: /* @__PURE__ */ jsx90(ExternalLink4, { className: "h-3.5 w-3.5" }) }) : null
14663
+ anchorProps?.href ? /* @__PURE__ */ jsx91("span", { className: "flex h-5 shrink-0 items-center self-start text-ods-text-secondary", children: /* @__PURE__ */ jsx91(ExternalLink4, { className: "h-3.5 w-3.5" }) }) : null
14584
14664
  ] });
14585
14665
  if (!anchorProps) {
14586
- return /* @__PURE__ */ jsx90("span", { className: `${COMPACT_CARD_OUTER_STATIC} ${className ?? ""}`, "aria-label": "No link available", children: body });
14666
+ return /* @__PURE__ */ jsx91("span", { className: `${COMPACT_CARD_OUTER_STATIC} ${className ?? ""}`, "aria-label": "No link available", children: body });
14587
14667
  }
14588
- return /* @__PURE__ */ jsx90("a", { ...anchorProps, className: `${COMPACT_CARD_OUTER} ${className ?? ""}`, children: body });
14668
+ return /* @__PURE__ */ jsx91("a", { ...anchorProps, className: `${COMPACT_CARD_OUTER} ${className ?? ""}`, children: body });
14589
14669
  }
14590
14670
  function DataRoomDocCardSkeleton({ className }) {
14591
- return /* @__PURE__ */ jsxs68("span", { className: `${COMPACT_CARD_SKELETON_OUTER} ${className ?? ""}`, children: [
14592
- /* @__PURE__ */ jsxs68("span", { className: COMPACT_CARD_TEXT_COL, children: [
14593
- /* @__PURE__ */ jsxs68("span", { className: "flex min-w-0 items-center gap-1.5", children: [
14594
- /* @__PURE__ */ jsx90("span", { className: "h-3.5 w-2/3 rounded bg-ods-bg" }),
14595
- /* @__PURE__ */ jsx90("span", { className: "h-4 w-16 rounded-full bg-ods-bg/60" })
14671
+ return /* @__PURE__ */ jsxs69("span", { className: `${COMPACT_CARD_SKELETON_OUTER} ${className ?? ""}`, children: [
14672
+ /* @__PURE__ */ jsxs69("span", { className: COMPACT_CARD_TEXT_COL, children: [
14673
+ /* @__PURE__ */ jsxs69("span", { className: "flex min-w-0 items-center gap-1.5", children: [
14674
+ /* @__PURE__ */ jsx91("span", { className: "h-3.5 w-2/3 rounded bg-ods-bg" }),
14675
+ /* @__PURE__ */ jsx91("span", { className: "h-4 w-16 rounded-full bg-ods-bg/60" })
14596
14676
  ] }),
14597
- /* @__PURE__ */ jsx90("span", { className: "h-4 w-1/2 rounded bg-ods-bg/60" }),
14598
- /* @__PURE__ */ jsxs68("span", { className: "flex min-w-0 flex-col gap-0", children: [
14599
- /* @__PURE__ */ jsx90("span", { className: "h-5 w-5/6 rounded bg-ods-bg/60" }),
14600
- /* @__PURE__ */ jsx90("span", { className: "h-5 w-3/4 rounded bg-ods-bg/60" })
14677
+ /* @__PURE__ */ jsx91("span", { className: "h-4 w-1/2 rounded bg-ods-bg/60" }),
14678
+ /* @__PURE__ */ jsxs69("span", { className: "flex min-w-0 flex-col gap-0", children: [
14679
+ /* @__PURE__ */ jsx91("span", { className: "h-5 w-5/6 rounded bg-ods-bg/60" }),
14680
+ /* @__PURE__ */ jsx91("span", { className: "h-5 w-3/4 rounded bg-ods-bg/60" })
14601
14681
  ] })
14602
14682
  ] }),
14603
- /* @__PURE__ */ jsx90("span", { className: "flex h-5 shrink-0 items-center self-start", children: /* @__PURE__ */ jsx90("span", { className: "h-3.5 w-3.5 rounded bg-ods-bg" }) })
14683
+ /* @__PURE__ */ jsx91("span", { className: "flex h-5 shrink-0 items-center self-start", children: /* @__PURE__ */ jsx91("span", { className: "h-3.5 w-3.5 rounded bg-ods-bg" }) })
14604
14684
  ] });
14605
14685
  }
14606
14686
 
14607
14687
  // src/components/chat/entity-cards/campaign-card-admin.tsx
14608
14688
  import { Megaphone as Megaphone3 } from "lucide-react";
14609
- import { Fragment as Fragment29, jsx as jsx91, jsxs as jsxs69 } from "react/jsx-runtime";
14689
+ import { Fragment as Fragment30, jsx as jsx92, jsxs as jsxs70 } from "react/jsx-runtime";
14610
14690
  function CampaignCardAdmin({ campaign, className, anchorProps }) {
14611
14691
  const goalsCount = campaign.goals?.length || 0;
14612
- const innerChildren = /* @__PURE__ */ jsxs69(Fragment29, { children: [
14613
- /* @__PURE__ */ jsx91("span", { className: COMPACT_CARD_ICON_SLOT, children: /* @__PURE__ */ jsx91(Megaphone3, { className: "h-5 w-5" }) }),
14614
- /* @__PURE__ */ jsxs69("span", { className: COMPACT_CARD_TEXT_COL, children: [
14615
- /* @__PURE__ */ jsx91("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx91("span", { className: COMPACT_CARD_TITLE, children: campaign.name }) }),
14616
- /* @__PURE__ */ jsx91("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx91("span", { className: COMPACT_CARD_SUBTITLE, children: [
14692
+ const innerChildren = /* @__PURE__ */ jsxs70(Fragment30, { children: [
14693
+ /* @__PURE__ */ jsx92("span", { className: COMPACT_CARD_ICON_SLOT, children: /* @__PURE__ */ jsx92(Megaphone3, { className: "h-5 w-5" }) }),
14694
+ /* @__PURE__ */ jsxs70("span", { className: COMPACT_CARD_TEXT_COL, children: [
14695
+ /* @__PURE__ */ jsx92("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx92("span", { className: COMPACT_CARD_TITLE, children: campaign.name }) }),
14696
+ /* @__PURE__ */ jsx92("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx92("span", { className: COMPACT_CARD_SUBTITLE, children: [
14617
14697
  campaign.start_date ? formatDateShort(campaign.start_date) : null,
14618
14698
  goalsCount > 0 ? `${goalsCount} goal${goalsCount !== 1 ? "s" : ""}` : null,
14619
14699
  "Marketing campaign"
14620
14700
  ].filter(Boolean).join(" \xB7 ") }) }),
14621
- /* @__PURE__ */ jsx91("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx91("span", { className: COMPACT_CARD_SUMMARY, children: campaign.description || COMPACT_CARD_ROW_FILLER }) })
14701
+ /* @__PURE__ */ jsx92("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx92("span", { className: COMPACT_CARD_SUMMARY, children: campaign.description || COMPACT_CARD_ROW_FILLER }) })
14622
14702
  ] })
14623
14703
  ] });
14624
14704
  if (anchorProps) {
14625
- return /* @__PURE__ */ jsx91("a", { ...anchorProps, className: `${COMPACT_CARD_OUTER} ${className ?? ""}`, children: innerChildren });
14705
+ return /* @__PURE__ */ jsx92("a", { ...anchorProps, className: `${COMPACT_CARD_OUTER} ${className ?? ""}`, children: innerChildren });
14626
14706
  }
14627
- return /* @__PURE__ */ jsx91("span", { className: `${COMPACT_CARD_OUTER_STATIC} ${className ?? ""}`, "aria-label": "No link available", children: innerChildren });
14707
+ return /* @__PURE__ */ jsx92("span", { className: `${COMPACT_CARD_OUTER_STATIC} ${className ?? ""}`, "aria-label": "No link available", children: innerChildren });
14628
14708
  }
14629
14709
  function CampaignCardAdminSkeleton({ className }) {
14630
- return /* @__PURE__ */ jsxs69("span", { className: `${COMPACT_CARD_SKELETON_OUTER} ${className ?? ""}`, children: [
14631
- /* @__PURE__ */ jsx91("span", { className: COMPACT_CARD_SKELETON_IMAGE_SLOT }),
14632
- /* @__PURE__ */ jsxs69("span", { className: COMPACT_CARD_TEXT_COL, children: [
14633
- /* @__PURE__ */ jsx91("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx91("span", { className: "h-3.5 w-3/5 rounded bg-ods-bg" }) }),
14634
- /* @__PURE__ */ jsx91("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx91("span", { className: "h-3 w-1/2 rounded bg-ods-bg/70" }) }),
14635
- /* @__PURE__ */ jsx91("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx91("span", { className: "h-3 w-11/12 rounded bg-ods-bg/40" }) })
14710
+ return /* @__PURE__ */ jsxs70("span", { className: `${COMPACT_CARD_SKELETON_OUTER} ${className ?? ""}`, children: [
14711
+ /* @__PURE__ */ jsx92("span", { className: COMPACT_CARD_SKELETON_IMAGE_SLOT }),
14712
+ /* @__PURE__ */ jsxs70("span", { className: COMPACT_CARD_TEXT_COL, children: [
14713
+ /* @__PURE__ */ jsx92("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx92("span", { className: "h-3.5 w-3/5 rounded bg-ods-bg" }) }),
14714
+ /* @__PURE__ */ jsx92("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx92("span", { className: "h-3 w-1/2 rounded bg-ods-bg/70" }) }),
14715
+ /* @__PURE__ */ jsx92("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx92("span", { className: "h-3 w-11/12 rounded bg-ods-bg/40" }) })
14636
14716
  ] })
14637
14717
  ] });
14638
14718
  }
14639
14719
 
14640
14720
  // src/components/chat/entity-cards/generic-entity-card.tsx
14641
14721
  import { ExternalLink as ExternalLink5 } from "lucide-react";
14642
- import { Fragment as Fragment30, jsx as jsx92, jsxs as jsxs70 } from "react/jsx-runtime";
14722
+ import { Fragment as Fragment31, jsx as jsx93, jsxs as jsxs71 } from "react/jsx-runtime";
14643
14723
  function GenericEntityCard({ item, className, anchorProps }) {
14644
14724
  const href = safeHref(item.url);
14645
14725
  const dateText = formatDateUTC(item.dateUpdated, { fallback: "", timezone: "local" });
14646
- const body = /* @__PURE__ */ jsxs70(Fragment30, { children: [
14647
- /* @__PURE__ */ jsxs70("span", { className: COMPACT_CARD_TEXT_COL, children: [
14648
- /* @__PURE__ */ jsxs70("span", { className: "flex min-w-0 flex-wrap items-center gap-1.5", children: [
14649
- /* @__PURE__ */ jsx92("span", { className: `${COMPACT_CARD_TITLE} min-w-0 shrink`, children: item.title }),
14650
- item.badge ? /* @__PURE__ */ jsx92(
14726
+ const body = /* @__PURE__ */ jsxs71(Fragment31, { children: [
14727
+ /* @__PURE__ */ jsxs71("span", { className: COMPACT_CARD_TEXT_COL, children: [
14728
+ /* @__PURE__ */ jsxs71("span", { className: "flex min-w-0 flex-wrap items-center gap-1.5", children: [
14729
+ /* @__PURE__ */ jsx93("span", { className: `${COMPACT_CARD_TITLE} min-w-0 shrink`, children: item.title }),
14730
+ item.badge ? /* @__PURE__ */ jsx93(
14651
14731
  StatusBadge,
14652
14732
  {
14653
14733
  text: item.badge.text,
@@ -14657,39 +14737,39 @@ function GenericEntityCard({ item, className, anchorProps }) {
14657
14737
  }
14658
14738
  ) : null
14659
14739
  ] }),
14660
- item.subtitle ? /* @__PURE__ */ jsx92("span", { className: "flex min-w-0 items-center gap-1 text-ods-text-secondary text-h6", children: /* @__PURE__ */ jsx92("span", { className: "min-w-0 truncate font-mono", children: item.subtitle }) }) : null,
14661
- item.preview ? /* @__PURE__ */ jsx92("span", { className: "flex min-w-0", children: /* @__PURE__ */ jsx92("span", { className: "line-clamp-2 whitespace-pre-wrap break-words text-ods-text-secondary text-h6", children: item.preview }) }) : null,
14662
- item.facts && item.facts.length > 0 ? /* @__PURE__ */ jsx92("span", { className: "flex min-w-0 flex-wrap items-center gap-x-3 gap-y-0.5 text-h6", children: item.facts.map((f, i) => /* @__PURE__ */ jsxs70("span", { className: "inline-flex min-w-0 items-center gap-1 truncate", children: [
14663
- /* @__PURE__ */ jsxs70("span", { className: "shrink-0 text-ods-text-secondary/70", children: [
14740
+ item.subtitle ? /* @__PURE__ */ jsx93("span", { className: "flex min-w-0 items-center gap-1 text-ods-text-secondary text-h6", children: /* @__PURE__ */ jsx93("span", { className: "min-w-0 truncate font-mono", children: item.subtitle }) }) : null,
14741
+ item.preview ? /* @__PURE__ */ jsx93("span", { className: "flex min-w-0", children: /* @__PURE__ */ jsx93("span", { className: "line-clamp-2 whitespace-pre-wrap break-words text-ods-text-secondary text-h6", children: item.preview }) }) : null,
14742
+ item.facts && item.facts.length > 0 ? /* @__PURE__ */ jsx93("span", { className: "flex min-w-0 flex-wrap items-center gap-x-3 gap-y-0.5 text-h6", children: item.facts.map((f, i) => /* @__PURE__ */ jsxs71("span", { className: "inline-flex min-w-0 items-center gap-1 truncate", children: [
14743
+ /* @__PURE__ */ jsxs71("span", { className: "shrink-0 text-ods-text-secondary/70", children: [
14664
14744
  f.label,
14665
14745
  ":"
14666
14746
  ] }),
14667
- /* @__PURE__ */ jsx92("span", { className: "truncate font-medium text-ods-text-primary", children: f.value })
14747
+ /* @__PURE__ */ jsx93("span", { className: "truncate font-medium text-ods-text-primary", children: f.value })
14668
14748
  ] }, i)) }) : null,
14669
- dateText ? /* @__PURE__ */ jsx92("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx92("span", { className: COMPACT_CARD_META_ROW, children: /* @__PURE__ */ jsx92("span", { className: "whitespace-nowrap", children: dateText }) }) }) : null
14749
+ dateText ? /* @__PURE__ */ jsx93("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx93("span", { className: COMPACT_CARD_META_ROW, children: /* @__PURE__ */ jsx93("span", { className: "whitespace-nowrap", children: dateText }) }) }) : null
14670
14750
  ] }),
14671
- href ? /* @__PURE__ */ jsx92("span", { className: "flex h-5 shrink-0 items-center self-start text-ods-text-secondary", children: /* @__PURE__ */ jsx92(ExternalLink5, { className: "h-3.5 w-3.5" }) }) : null
14751
+ href ? /* @__PURE__ */ jsx93("span", { className: "flex h-5 shrink-0 items-center self-start text-ods-text-secondary", children: /* @__PURE__ */ jsx93(ExternalLink5, { className: "h-3.5 w-3.5" }) }) : null
14672
14752
  ] });
14673
14753
  if (anchorProps) {
14674
- return /* @__PURE__ */ jsx92("a", { ...anchorProps, className: `${COMPACT_CARD_OUTER} ${className ?? ""}`, children: body });
14754
+ return /* @__PURE__ */ jsx93("a", { ...anchorProps, className: `${COMPACT_CARD_OUTER} ${className ?? ""}`, children: body });
14675
14755
  }
14676
- return href ? /* @__PURE__ */ jsx92("a", { href, className: `${COMPACT_CARD_OUTER} ${className ?? ""}`, children: body }) : /* @__PURE__ */ jsx92("span", { className: `${COMPACT_CARD_OUTER_STATIC} ${className ?? ""}`, "aria-label": "No link available", children: body });
14756
+ return href ? /* @__PURE__ */ jsx93("a", { href, className: `${COMPACT_CARD_OUTER} ${className ?? ""}`, children: body }) : /* @__PURE__ */ jsx93("span", { className: `${COMPACT_CARD_OUTER_STATIC} ${className ?? ""}`, "aria-label": "No link available", children: body });
14677
14757
  }
14678
14758
  function GenericEntityCardSkeleton({ className }) {
14679
- return /* @__PURE__ */ jsxs70("span", { className: `${COMPACT_CARD_SKELETON_OUTER} ${className ?? ""}`, children: [
14680
- /* @__PURE__ */ jsxs70("span", { className: COMPACT_CARD_TEXT_COL, children: [
14681
- /* @__PURE__ */ jsxs70("span", { className: "flex min-w-0 items-center gap-1.5", children: [
14682
- /* @__PURE__ */ jsx92("span", { className: "h-3.5 w-2/3 rounded bg-ods-bg" }),
14683
- /* @__PURE__ */ jsx92("span", { className: "h-4 w-16 rounded-full bg-ods-bg/60" })
14759
+ return /* @__PURE__ */ jsxs71("span", { className: `${COMPACT_CARD_SKELETON_OUTER} ${className ?? ""}`, children: [
14760
+ /* @__PURE__ */ jsxs71("span", { className: COMPACT_CARD_TEXT_COL, children: [
14761
+ /* @__PURE__ */ jsxs71("span", { className: "flex min-w-0 items-center gap-1.5", children: [
14762
+ /* @__PURE__ */ jsx93("span", { className: "h-3.5 w-2/3 rounded bg-ods-bg" }),
14763
+ /* @__PURE__ */ jsx93("span", { className: "h-4 w-16 rounded-full bg-ods-bg/60" })
14684
14764
  ] }),
14685
- /* @__PURE__ */ jsx92("span", { className: "h-4 w-1/2 rounded bg-ods-bg/60" }),
14686
- /* @__PURE__ */ jsxs70("span", { className: "flex min-w-0 flex-col gap-0", children: [
14687
- /* @__PURE__ */ jsx92("span", { className: "h-5 w-5/6 rounded bg-ods-bg/60" }),
14688
- /* @__PURE__ */ jsx92("span", { className: "h-5 w-3/4 rounded bg-ods-bg/60" })
14765
+ /* @__PURE__ */ jsx93("span", { className: "h-4 w-1/2 rounded bg-ods-bg/60" }),
14766
+ /* @__PURE__ */ jsxs71("span", { className: "flex min-w-0 flex-col gap-0", children: [
14767
+ /* @__PURE__ */ jsx93("span", { className: "h-5 w-5/6 rounded bg-ods-bg/60" }),
14768
+ /* @__PURE__ */ jsx93("span", { className: "h-5 w-3/4 rounded bg-ods-bg/60" })
14689
14769
  ] }),
14690
- /* @__PURE__ */ jsx92("span", { className: "h-3 w-1/4 rounded bg-ods-bg/70" })
14770
+ /* @__PURE__ */ jsx93("span", { className: "h-3 w-1/4 rounded bg-ods-bg/70" })
14691
14771
  ] }),
14692
- /* @__PURE__ */ jsx92("span", { className: "flex h-5 shrink-0 items-center self-start", children: /* @__PURE__ */ jsx92("span", { className: "h-3.5 w-3.5 rounded bg-ods-bg" }) })
14772
+ /* @__PURE__ */ jsx93("span", { className: "flex h-5 shrink-0 items-center self-start", children: /* @__PURE__ */ jsx93("span", { className: "h-3.5 w-3.5 rounded bg-ods-bg" }) })
14693
14773
  ] });
14694
14774
  }
14695
14775
 
@@ -14756,12 +14836,12 @@ function useChatCardItem(type, id) {
14756
14836
  }
14757
14837
 
14758
14838
  // src/components/chat/mingo-info-card.tsx
14759
- import { Fragment as Fragment31, jsx as jsx93, jsxs as jsxs71 } from "react/jsx-runtime";
14839
+ import { Fragment as Fragment32, jsx as jsx94, jsxs as jsxs72 } from "react/jsx-runtime";
14760
14840
  function CardMedia({ imageSrc, imageAlt, icon }) {
14761
14841
  if (imageSrc) {
14762
- return /* @__PURE__ */ jsxs71("span", { className: "relative block size-10 shrink-0", children: [
14763
- /* @__PURE__ */ jsx93("span", { className: "absolute inset-0 flex items-center justify-center rounded-sm border border-ods-border bg-ods-bg text-ods-text-primary text-h6", children: personInitials(imageAlt) || "?" }),
14764
- /* @__PURE__ */ jsx93(
14842
+ return /* @__PURE__ */ jsxs72("span", { className: "relative block size-10 shrink-0", children: [
14843
+ /* @__PURE__ */ jsx94("span", { className: "absolute inset-0 flex items-center justify-center rounded-sm border border-ods-border bg-ods-bg text-ods-text-primary text-h6", children: personInitials(imageAlt) || "?" }),
14844
+ /* @__PURE__ */ jsx94(
14765
14845
  next_image_default,
14766
14846
  {
14767
14847
  src: imageSrc,
@@ -14779,12 +14859,12 @@ function CardMedia({ imageSrc, imageAlt, icon }) {
14779
14859
  ] });
14780
14860
  }
14781
14861
  if (icon) {
14782
- return /* @__PURE__ */ jsx93("span", { className: "flex size-10 shrink-0 items-center justify-center overflow-hidden rounded-md border border-ods-border bg-ods-bg text-ods-text-secondary", children: /* @__PURE__ */ jsx93("span", { className: "flex size-6 items-center justify-center", children: icon }) });
14862
+ return /* @__PURE__ */ jsx94("span", { className: "flex size-10 shrink-0 items-center justify-center overflow-hidden rounded-md border border-ods-border bg-ods-bg text-ods-text-secondary", children: /* @__PURE__ */ jsx94("span", { className: "flex size-6 items-center justify-center", children: icon }) });
14783
14863
  }
14784
14864
  return null;
14785
14865
  }
14786
14866
  function MingoInfoCardSkeleton({ className }) {
14787
- return /* @__PURE__ */ jsxs71(
14867
+ return /* @__PURE__ */ jsxs72(
14788
14868
  "span",
14789
14869
  {
14790
14870
  className: cn(
@@ -14792,12 +14872,12 @@ function MingoInfoCardSkeleton({ className }) {
14792
14872
  className
14793
14873
  ),
14794
14874
  children: [
14795
- /* @__PURE__ */ jsx93("span", { className: "block size-10 shrink-0 rounded-md border border-ods-border bg-ods-bg" }),
14796
- /* @__PURE__ */ jsxs71("span", { className: "flex min-w-0 flex-1 flex-col justify-center gap-1.5", children: [
14797
- /* @__PURE__ */ jsx93("span", { className: "block h-4 w-1/2 rounded bg-ods-bg" }),
14798
- /* @__PURE__ */ jsx93("span", { className: "block h-3 w-3/4 rounded bg-ods-bg/60" })
14875
+ /* @__PURE__ */ jsx94("span", { className: "block size-10 shrink-0 rounded-md border border-ods-border bg-ods-bg" }),
14876
+ /* @__PURE__ */ jsxs72("span", { className: "flex min-w-0 flex-1 flex-col justify-center gap-1.5", children: [
14877
+ /* @__PURE__ */ jsx94("span", { className: "block h-4 w-1/2 rounded bg-ods-bg" }),
14878
+ /* @__PURE__ */ jsx94("span", { className: "block h-3 w-3/4 rounded bg-ods-bg/60" })
14799
14879
  ] }),
14800
- /* @__PURE__ */ jsx93("span", { className: "block h-5 w-16 shrink-0 rounded bg-ods-bg/60" })
14880
+ /* @__PURE__ */ jsx94("span", { className: "block h-5 w-16 shrink-0 rounded bg-ods-bg/60" })
14801
14881
  ]
14802
14882
  }
14803
14883
  );
@@ -14819,16 +14899,16 @@ function MingoInfoCard({
14819
14899
  const hasMenu = !!menuGroups && menuGroups.length > 0;
14820
14900
  const isAnchor = !!anchorProps;
14821
14901
  const isInteractive = isAnchor || !!onClick;
14822
- const content = /* @__PURE__ */ jsxs71(Fragment31, { children: [
14823
- hasMedia && /* @__PURE__ */ jsx93(CardMedia, { imageSrc, imageAlt, icon }),
14824
- /* @__PURE__ */ jsxs71("span", { className: "flex min-w-0 flex-1 flex-col justify-center", children: [
14825
- /* @__PURE__ */ jsx93("span", { className: "truncate text-ods-text-primary text-h4", children: title }),
14826
- description ? /* @__PURE__ */ jsx93("span", { className: "truncate text-ods-text-secondary text-h6", children: description }) : null
14902
+ const content = /* @__PURE__ */ jsxs72(Fragment32, { children: [
14903
+ hasMedia && /* @__PURE__ */ jsx94(CardMedia, { imageSrc, imageAlt, icon }),
14904
+ /* @__PURE__ */ jsxs72("span", { className: "flex min-w-0 flex-1 flex-col justify-center", children: [
14905
+ /* @__PURE__ */ jsx94("span", { className: "truncate text-ods-text-primary text-h4", children: title }),
14906
+ description ? /* @__PURE__ */ jsx94("span", { className: "truncate text-ods-text-secondary text-h6", children: description }) : null
14827
14907
  ] }),
14828
14908
  status ? (
14829
14909
  // Reuse the shared Tag palette (single source of truth for colours)
14830
14910
  // without rendering Tag's `<div>` — span-only for `<p>` validity.
14831
- /* @__PURE__ */ jsx93("span", { className: cn(tagVariants({ variant: status.variant ?? "success" }), "shrink-0"), children: /* @__PURE__ */ jsx93("span", { className: "truncate uppercase tracking-[-0.28px]", children: status.label }) })
14911
+ /* @__PURE__ */ jsx94("span", { className: cn(tagVariants({ variant: status.variant ?? "success" }), "shrink-0"), children: /* @__PURE__ */ jsx94("span", { className: "truncate uppercase tracking-[-0.28px]", children: status.label }) })
14832
14912
  ) : null
14833
14913
  ] });
14834
14914
  const contentClass = cn(
@@ -14836,7 +14916,7 @@ function MingoInfoCard({
14836
14916
  hasMenu && "border-r border-ods-border",
14837
14917
  isInteractive && "cursor-pointer transition-colors hover:bg-ods-bg-hover focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ods-accent active:bg-ods-bg-active"
14838
14918
  );
14839
- return /* @__PURE__ */ jsxs71(
14919
+ return /* @__PURE__ */ jsxs72(
14840
14920
  "span",
14841
14921
  {
14842
14922
  className: cn(
@@ -14844,20 +14924,20 @@ function MingoInfoCard({
14844
14924
  className
14845
14925
  ),
14846
14926
  children: [
14847
- isAnchor ? /* @__PURE__ */ jsx93("a", { ...anchorProps, className: cn(contentClass, "no-underline"), children: content }) : onClick ? /* @__PURE__ */ jsx93("button", { type: "button", onClick, className: contentClass, children: content }) : /* @__PURE__ */ jsx93("span", { className: contentClass, children: content }),
14848
- hasMenu && /* @__PURE__ */ jsx93(
14927
+ isAnchor ? /* @__PURE__ */ jsx94("a", { ...anchorProps, className: cn(contentClass, "no-underline"), children: content }) : onClick ? /* @__PURE__ */ jsx94("button", { type: "button", onClick, className: contentClass, children: content }) : /* @__PURE__ */ jsx94("span", { className: contentClass, children: content }),
14928
+ hasMenu && /* @__PURE__ */ jsx94(
14849
14929
  ActionsMenuDropdown,
14850
14930
  {
14851
14931
  groups: menuGroups,
14852
14932
  triggerAriaLabel: menuAriaLabel,
14853
14933
  onCloseAutoFocus: (e) => e.preventDefault(),
14854
- customTrigger: /* @__PURE__ */ jsx93(
14934
+ customTrigger: /* @__PURE__ */ jsx94(
14855
14935
  "button",
14856
14936
  {
14857
14937
  type: "button",
14858
14938
  "aria-label": menuAriaLabel,
14859
14939
  className: "flex w-[56px] shrink-0 items-center justify-center self-stretch text-ods-text-secondary transition-colors hover:bg-ods-bg-hover hover:text-ods-text-primary focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ods-accent active:bg-ods-bg-active active:text-ods-text-primary md:w-[68px]",
14860
- children: /* @__PURE__ */ jsx93(Ellipsis01Icon, { size: 24 })
14940
+ children: /* @__PURE__ */ jsx94(Ellipsis01Icon, { size: 24 })
14861
14941
  }
14862
14942
  )
14863
14943
  }
@@ -14988,7 +15068,8 @@ var SOURCE_ICON_NAMES = {
14988
15068
  "code-graph-files": "file-text",
14989
15069
  "code-symbols": "box",
14990
15070
  "code-duplicates": "search",
14991
- "code-impact": "activity"
15071
+ "code-impact": "activity",
15072
+ "change-sets": "coding-branch"
14992
15073
  };
14993
15074
  function getSourceIconName(tableId) {
14994
15075
  if (!tableId) return void 0;
@@ -15055,7 +15136,8 @@ var SOURCE_LABELS_BY_TABLE = {
15055
15136
  "code-graph-files": "Code Files",
15056
15137
  "code-symbols": "Code Symbols",
15057
15138
  "code-duplicates": "Duplicates",
15058
- "code-impact": "Change Impact"
15139
+ "code-impact": "Change Impact",
15140
+ "change-sets": "Change Sets"
15059
15141
  };
15060
15142
  function getSourceLabel(tableId) {
15061
15143
  return SOURCE_LABELS_BY_TABLE[tableId] ?? tableId;
@@ -15115,7 +15197,8 @@ var DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID = {
15115
15197
  code_file: "code-graph-files",
15116
15198
  code_symbol: "code-symbols",
15117
15199
  code_duplicate: "code-duplicates",
15118
- code_impact: "code-impact"
15200
+ code_impact: "code-impact",
15201
+ change_set: "change-sets"
15119
15202
  };
15120
15203
  function defaultTableIdForDocumentType(documentType) {
15121
15204
  return DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID[documentType] ?? null;
@@ -15498,14 +15581,14 @@ function resolveSourceIcon(input, ctx = {}) {
15498
15581
 
15499
15582
  // src/components/chat/entity-cards/deleted-data-card.tsx
15500
15583
  import { Trash2 } from "lucide-react";
15501
- import { jsx as jsx94, jsxs as jsxs72 } from "react/jsx-runtime";
15584
+ import { jsx as jsx95, jsxs as jsxs73 } from "react/jsx-runtime";
15502
15585
  function DeletedDataCard({ title, entityLabel, recoveryNote, className }) {
15503
15586
  const label = entityLabel || "Item";
15504
- return /* @__PURE__ */ jsxs72("div", { className: `${COMPACT_CARD_OUTER_STATIC} opacity-70 ${className ?? ""}`, children: [
15505
- /* @__PURE__ */ jsx94("div", { className: COMPACT_CARD_ICON_SLOT, children: /* @__PURE__ */ jsx94(Trash2, { className: "h-4 w-4 text-ods-text-secondary" }) }),
15506
- /* @__PURE__ */ jsxs72("div", { className: COMPACT_CARD_TEXT_COL, children: [
15507
- /* @__PURE__ */ jsx94("div", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx94("span", { className: `${COMPACT_CARD_TITLE} text-ods-text-secondary line-through`, children: title || `Deleted ${label.toLowerCase()}` }) }),
15508
- /* @__PURE__ */ jsx94("div", { className: COMPACT_CARD_META_ROW, children: /* @__PURE__ */ jsxs72("span", { className: "text-ods-text-secondary", children: [
15587
+ return /* @__PURE__ */ jsxs73("div", { className: `${COMPACT_CARD_OUTER_STATIC} opacity-70 ${className ?? ""}`, children: [
15588
+ /* @__PURE__ */ jsx95("div", { className: COMPACT_CARD_ICON_SLOT, children: /* @__PURE__ */ jsx95(Trash2, { className: "h-4 w-4 text-ods-text-secondary" }) }),
15589
+ /* @__PURE__ */ jsxs73("div", { className: COMPACT_CARD_TEXT_COL, children: [
15590
+ /* @__PURE__ */ jsx95("div", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx95("span", { className: `${COMPACT_CARD_TITLE} text-ods-text-secondary line-through`, children: title || `Deleted ${label.toLowerCase()}` }) }),
15591
+ /* @__PURE__ */ jsx95("div", { className: COMPACT_CARD_META_ROW, children: /* @__PURE__ */ jsxs73("span", { className: "text-ods-text-secondary", children: [
15509
15592
  label,
15510
15593
  " deleted",
15511
15594
  recoveryNote ? ` \xB7 ${recoveryNote}` : ""
@@ -15515,16 +15598,16 @@ function DeletedDataCard({ title, entityLabel, recoveryNote, className }) {
15515
15598
  }
15516
15599
 
15517
15600
  // src/components/chat/entity-cards/dispatch.tsx
15518
- import { Fragment as Fragment32, jsx as jsx95, jsxs as jsxs73 } from "react/jsx-runtime";
15601
+ import { Fragment as Fragment33, jsx as jsx96, jsxs as jsxs74 } from "react/jsx-runtime";
15519
15602
  function githubKindIcon(kind) {
15520
15603
  switch (kind) {
15521
15604
  case "pull_request":
15522
- return /* @__PURE__ */ jsx95(CodingPullRequestIcon, { size: 24 });
15605
+ return /* @__PURE__ */ jsx96(CodingPullRequestIcon, { size: 24 });
15523
15606
  case "pr_review":
15524
- return /* @__PURE__ */ jsx95(CodeIcon, { size: 24 });
15607
+ return /* @__PURE__ */ jsx96(CodeIcon, { size: 24 });
15525
15608
  case "commit":
15526
15609
  default:
15527
- return /* @__PURE__ */ jsx95(CodingCommitIcon, { size: 24 });
15610
+ return /* @__PURE__ */ jsx96(CodingCommitIcon, { size: 24 });
15528
15611
  }
15529
15612
  }
15530
15613
  function reviewStateToVariant(state) {
@@ -15553,7 +15636,7 @@ function GitHubChatCard({
15553
15636
  const idLabel = formatActivityId(chatRef.id, kind);
15554
15637
  const dateText = formatDateUTC(chatRef.date ?? null, { fallback: "", timezone: "local" });
15555
15638
  const description = [idLabel, dateText].filter(Boolean).join(" \xB7 ") || void 0;
15556
- return /* @__PURE__ */ jsx95(
15639
+ return /* @__PURE__ */ jsx96(
15557
15640
  MingoInfoCard,
15558
15641
  {
15559
15642
  title,
@@ -15580,12 +15663,12 @@ function cardMenuGroups(href, discuss, openDetails, externalLink) {
15580
15663
  items.push({
15581
15664
  id: "open-details",
15582
15665
  label: openDetails?.label ?? "Open Details",
15583
- icon: openDetails?.icon ?? /* @__PURE__ */ jsx95(EyeIcon, { size: 20 }),
15666
+ icon: openDetails?.icon ?? /* @__PURE__ */ jsx96(EyeIcon, { size: 20 }),
15584
15667
  // Main row → open the entity (same tab, soft Link nav).
15585
15668
  href,
15586
15669
  // Trailing 40px ↗ side-button → open in a new tab.
15587
15670
  iconAction: {
15588
- icon: /* @__PURE__ */ jsx95(ArrowRightUpIcon, { size: 20 }),
15671
+ icon: /* @__PURE__ */ jsx96(ArrowRightUpIcon, { size: 20 }),
15589
15672
  "aria-label": "Open in new tab",
15590
15673
  href,
15591
15674
  openInNewTab: true
@@ -15660,12 +15743,12 @@ function itemVideoMetadata(item) {
15660
15743
  return out.videoUrl || out.youtubeUrl || out.highlightVideoUrl ? out : null;
15661
15744
  }
15662
15745
  function CardLoadFailure({ label, id, detail }) {
15663
- return /* @__PURE__ */ jsx95(
15746
+ return /* @__PURE__ */ jsx96(
15664
15747
  MingoInfoCard,
15665
15748
  {
15666
15749
  title: label,
15667
15750
  description: `${detail} \xB7 id: ${id}`,
15668
- icon: /* @__PURE__ */ jsx95(AlertTriangleIcon, { size: 24 }),
15751
+ icon: /* @__PURE__ */ jsx96(AlertTriangleIcon, { size: 24 }),
15669
15752
  status: { label: "FAILED", variant: "error" },
15670
15753
  menuAriaLabel: "Card failed to load"
15671
15754
  }
@@ -15700,17 +15783,17 @@ function HubspotTicketChatCard({
15700
15783
  const status = typeof chatRef.metadata?.status === "string" ? chatRef.metadata.status : void 0;
15701
15784
  const statusLabel = typeof chatRef.metadata?.statusLabel === "string" ? chatRef.metadata.statusLabel : void 0;
15702
15785
  const statusText = statusLabel ?? formatStatusToken(status);
15703
- return /* @__PURE__ */ jsx95(
15786
+ return /* @__PURE__ */ jsx96(
15704
15787
  MingoInfoCard,
15705
15788
  {
15706
15789
  title: chatRef.title,
15707
15790
  description: chatRef.preview ?? void 0,
15708
- icon: /* @__PURE__ */ jsx95(TagIcon, { size: 24 }),
15791
+ icon: /* @__PURE__ */ jsx96(TagIcon, { size: 24 }),
15709
15792
  status: statusText ? { label: statusText, variant: hubspotStatusToVariant(status) } : void 0,
15710
15793
  anchorProps: buildAnchorProps(chatRef.url, isNewTab),
15711
15794
  menuGroups: cardMenuGroups(chatRef.url, discuss, {
15712
15795
  label: "Open Ticket Details",
15713
- icon: /* @__PURE__ */ jsx95(TagIcon, { size: 20 })
15796
+ icon: /* @__PURE__ */ jsx96(TagIcon, { size: 20 })
15714
15797
  }),
15715
15798
  menuAriaLabel: "Ticket actions"
15716
15799
  }
@@ -15723,12 +15806,12 @@ function FaqChatCard({
15723
15806
  }) {
15724
15807
  const section = typeof chatRef.metadata?.section === "string" ? chatRef.metadata.section.trim() : void 0;
15725
15808
  const statusLabel = section && section.length > 0 ? section : "FAQ";
15726
- return /* @__PURE__ */ jsx95(
15809
+ return /* @__PURE__ */ jsx96(
15727
15810
  MingoInfoCard,
15728
15811
  {
15729
15812
  title: chatRef.title,
15730
15813
  description: chatRef.preview ?? void 0,
15731
- icon: /* @__PURE__ */ jsx95(QuestionCircleIcon, { size: 24 }),
15814
+ icon: /* @__PURE__ */ jsx96(QuestionCircleIcon, { size: 24 }),
15732
15815
  status: { label: statusLabel, variant: "grey" },
15733
15816
  anchorProps: buildAnchorProps(chatRef.url, isNewTab),
15734
15817
  menuGroups: cardMenuGroups(chatRef.url, discuss),
@@ -15744,12 +15827,12 @@ function SlackChatCard({
15744
15827
  const channelName = typeof chatRef.metadata?.channelName === "string" ? chatRef.metadata.channelName.trim() : void 0;
15745
15828
  const channelPretty = channelName ? channelName.startsWith("#") ? channelName : `#${channelName}` : void 0;
15746
15829
  const title = channelPretty ? `${chatRef.title} \xB7 ${channelPretty}` : chatRef.title;
15747
- return /* @__PURE__ */ jsx95(
15830
+ return /* @__PURE__ */ jsx96(
15748
15831
  MingoInfoCard,
15749
15832
  {
15750
15833
  title,
15751
15834
  description: chatRef.preview ?? void 0,
15752
- icon: /* @__PURE__ */ jsx95(SlackLogoGreyIcon, { size: 24 }),
15835
+ icon: /* @__PURE__ */ jsx96(SlackLogoGreyIcon, { size: 24 }),
15753
15836
  anchorProps: buildAnchorProps(chatRef.url, isNewTab),
15754
15837
  menuGroups: cardMenuGroups(chatRef.url, discuss),
15755
15838
  menuAriaLabel: "Message actions"
@@ -15762,7 +15845,7 @@ function GlyphChatCard({
15762
15845
  isNewTab,
15763
15846
  discuss
15764
15847
  }) {
15765
- return /* @__PURE__ */ jsx95(
15848
+ return /* @__PURE__ */ jsx96(
15766
15849
  MingoInfoCard,
15767
15850
  {
15768
15851
  title: chatRef.title,
@@ -15792,17 +15875,17 @@ function TrustCenterChatCard({
15792
15875
  label: trustFrameworkBadge(leadFramework),
15793
15876
  color: trustFrameworkMonitoringEntry(leadFramework.monitoring).color
15794
15877
  } : void 0;
15795
- return /* @__PURE__ */ jsx95(
15878
+ return /* @__PURE__ */ jsx96(
15796
15879
  MingoInfoCard,
15797
15880
  {
15798
15881
  title: TRUST_CENTER_TITLE,
15799
15882
  description: summary || TRUST_CENTER_TAGLINE,
15800
- icon: /* @__PURE__ */ jsx95(ShieldCheckIcon, { size: 24 }),
15883
+ icon: /* @__PURE__ */ jsx96(ShieldCheckIcon, { size: 24 }),
15801
15884
  status: lead ? { label: lead.label, variant: TRUST_STATUS_TAG_VARIANT[lead.color] } : void 0,
15802
15885
  anchorProps: buildAnchorProps(chatRef.url, isNewTab),
15803
15886
  menuGroups: cardMenuGroups(chatRef.url, discuss, {
15804
15887
  label: "View trust center",
15805
- icon: /* @__PURE__ */ jsx95(ShieldCheckIcon, { size: 20 })
15888
+ icon: /* @__PURE__ */ jsx96(ShieldCheckIcon, { size: 20 })
15806
15889
  }),
15807
15890
  menuAriaLabel: "Trust center actions"
15808
15891
  }
@@ -15814,12 +15897,12 @@ function DataRoomDocChatCard({
15814
15897
  discuss
15815
15898
  }) {
15816
15899
  const badgeText = chatRef.sourceRepo ? getSourceLabel(chatRef.sourceRepo) : "Document";
15817
- return /* @__PURE__ */ jsx95(
15900
+ return /* @__PURE__ */ jsx96(
15818
15901
  MingoInfoCard,
15819
15902
  {
15820
15903
  title: chatRef.title,
15821
15904
  description: chatRef.preview ?? void 0,
15822
- icon: /* @__PURE__ */ jsx95(FileContentIcon, { size: 24 }),
15905
+ icon: /* @__PURE__ */ jsx96(FileContentIcon, { size: 24 }),
15823
15906
  status: { label: badgeText, variant: "grey" },
15824
15907
  anchorProps: buildAnchorProps(chatRef.url, isNewTab),
15825
15908
  menuGroups: cardMenuGroups(chatRef.url, discuss),
@@ -15834,7 +15917,7 @@ function GenericFinancialChatCard({
15834
15917
  discuss
15835
15918
  }) {
15836
15919
  const subtitle = typeof chatRef.metadata?.subtitle === "string" ? chatRef.metadata.subtitle : void 0;
15837
- return /* @__PURE__ */ jsx95(
15920
+ return /* @__PURE__ */ jsx96(
15838
15921
  MingoInfoCard,
15839
15922
  {
15840
15923
  title: chatRef.title,
@@ -15848,9 +15931,9 @@ function GenericFinancialChatCard({
15848
15931
  }
15849
15932
  function ChatInlineVideoPill({ chatRef }) {
15850
15933
  const title = chatRef.title || "Video";
15851
- return /* @__PURE__ */ jsxs73("span", { className: "inline-flex items-center gap-1 rounded border border-ods-border bg-ods-card px-1.5 py-0.5 align-middle text-xs text-ods-text-primary", children: [
15852
- /* @__PURE__ */ jsx95("span", { "aria-hidden": "true", className: "text-ods-text-secondary", children: "\u25B6" }),
15853
- /* @__PURE__ */ jsx95("span", { className: "max-w-[220px] truncate", children: title })
15934
+ return /* @__PURE__ */ jsxs74("span", { className: "inline-flex items-center gap-1 rounded border border-ods-border bg-ods-card px-1.5 py-0.5 align-middle text-xs text-ods-text-primary", children: [
15935
+ /* @__PURE__ */ jsx96("span", { "aria-hidden": "true", className: "text-ods-text-secondary", children: "\u25B6" }),
15936
+ /* @__PURE__ */ jsx96("span", { className: "max-w-[220px] truncate", children: title })
15854
15937
  ] });
15855
15938
  }
15856
15939
  function ChatCardWithDiscuss({
@@ -15866,11 +15949,11 @@ function ChatCardWithDiscuss({
15866
15949
  });
15867
15950
  const idDisplay = chatRef.id && (chatRef.id.length > 24 ? `${chatRef.id.slice(0, 24)}\u2026` : chatRef.id);
15868
15951
  const useDisplay = displayAction && !!onDisplay;
15869
- const cardBody = /* @__PURE__ */ jsx95("span", { className: "block [&>*]:!my-0", children });
15870
- return /* @__PURE__ */ jsxs73("span", { className: "mb-2 mt-1.5 block w-full", children: [
15952
+ const cardBody = /* @__PURE__ */ jsx96("span", { className: "block [&>*]:!my-0", children });
15953
+ return /* @__PURE__ */ jsxs74("span", { className: "mb-2 mt-1.5 block w-full", children: [
15871
15954
  cardBody,
15872
- /* @__PURE__ */ jsxs73("span", { className: "mt-1 flex items-center justify-between gap-2 pl-0.5", children: [
15873
- /* @__PURE__ */ jsx95(
15955
+ /* @__PURE__ */ jsxs74("span", { className: "mt-1 flex items-center justify-between gap-2 pl-0.5", children: [
15956
+ /* @__PURE__ */ jsx96(
15874
15957
  SourceActionButton,
15875
15958
  {
15876
15959
  chatRef,
@@ -15879,15 +15962,15 @@ function ChatCardWithDiscuss({
15879
15962
  density: "card"
15880
15963
  }
15881
15964
  ),
15882
- !onDiscuss && !useDisplay ? /* @__PURE__ */ jsx95("span", {}) : null,
15883
- idDisplay ? /* @__PURE__ */ jsxs73(
15965
+ !onDiscuss && !useDisplay ? /* @__PURE__ */ jsx96("span", {}) : null,
15966
+ idDisplay ? /* @__PURE__ */ jsxs74(
15884
15967
  "span",
15885
15968
  {
15886
15969
  className: "inline-flex shrink-0 items-center gap-1 text-ods-text-secondary opacity-60 transition-opacity text-code hover:text-ods-text-primary hover:opacity-100",
15887
15970
  title: `${sourceLabel} \xB7 ${chatRef.id}`,
15888
15971
  children: [
15889
- /* @__PURE__ */ jsx95(SourceIcon, { className: "h-3 w-3 shrink-0" }),
15890
- /* @__PURE__ */ jsx95("span", { className: "max-w-[180px] truncate", children: idDisplay })
15972
+ /* @__PURE__ */ jsx96(SourceIcon, { className: "h-3 w-3 shrink-0" }),
15973
+ /* @__PURE__ */ jsx96("span", { className: "max-w-[180px] truncate", children: idDisplay })
15891
15974
  ]
15892
15975
  }
15893
15976
  ) : null
@@ -15903,13 +15986,13 @@ function ProductReleaseChatCard({
15903
15986
  }) {
15904
15987
  const releaseProps = buildProps(item);
15905
15988
  const status = item?.version ? { label: String(item.version), variant: "grey" } : { label: "Release", variant: "grey" };
15906
- return /* @__PURE__ */ jsx95(
15989
+ return /* @__PURE__ */ jsx96(
15907
15990
  EntityMingoCard,
15908
15991
  {
15909
15992
  title: item?.title ?? "",
15910
15993
  description: item?.summary || releaseProps.formattedDate || void 0,
15911
15994
  cover: releaseProps.coverImage || void 0,
15912
- fallbackIcon: /* @__PURE__ */ jsx95(Rocket02Icon, { size: 24 }),
15995
+ fallbackIcon: /* @__PURE__ */ jsx96(Rocket02Icon, { size: 24 }),
15913
15996
  status,
15914
15997
  chatRef,
15915
15998
  isNewTab,
@@ -15930,12 +16013,12 @@ function CampaignChatCard({
15930
16013
  goalsCount > 0 ? `${goalsCount} goal${goalsCount !== 1 ? "s" : ""}` : null,
15931
16014
  "Marketing campaign"
15932
16015
  ].filter(Boolean).join(" \xB7 ");
15933
- return /* @__PURE__ */ jsx95(
16016
+ return /* @__PURE__ */ jsx96(
15934
16017
  EntityMingoCard,
15935
16018
  {
15936
16019
  title: item?.name ?? "",
15937
16020
  description: meta || item?.description || void 0,
15938
- fallbackIcon: /* @__PURE__ */ jsx95(Megaphone01Icon, { size: 24 }),
16021
+ fallbackIcon: /* @__PURE__ */ jsx96(Megaphone01Icon, { size: 24 }),
15939
16022
  chatRef,
15940
16023
  isNewTab,
15941
16024
  discuss,
@@ -15956,7 +16039,7 @@ function EntityMingoCard({
15956
16039
  openDetails,
15957
16040
  externalLink
15958
16041
  }) {
15959
- return /* @__PURE__ */ jsx95(
16042
+ return /* @__PURE__ */ jsx96(
15960
16043
  MingoInfoCard,
15961
16044
  {
15962
16045
  title,
@@ -15991,13 +16074,13 @@ function BlogChatCard({
15991
16074
  }) {
15992
16075
  const category = Array.isArray(item?.categories) ? item.categories.find((c) => c?.name)?.name ?? void 0 : void 0;
15993
16076
  const status = hasEmbeddedVideo ? { label: "Video", variant: "primary" } : category ? { label: category, variant: "grey" } : void 0;
15994
- return /* @__PURE__ */ jsx95(
16077
+ return /* @__PURE__ */ jsx96(
15995
16078
  EntityMingoCard,
15996
16079
  {
15997
16080
  title: item?.title ?? "",
15998
16081
  description: item?.summary ?? void 0,
15999
16082
  cover: entityCover(item?.featured_image, ogPlaceholder),
16000
- fallbackIcon: /* @__PURE__ */ jsx95(NewspaperIcon, { size: 24 }),
16083
+ fallbackIcon: /* @__PURE__ */ jsx96(NewspaperIcon, { size: 24 }),
16001
16084
  status,
16002
16085
  chatRef,
16003
16086
  isNewTab,
@@ -16014,13 +16097,13 @@ function CaseStudyChatCard({
16014
16097
  discuss
16015
16098
  }) {
16016
16099
  const meta = [item?.msp?.name, item?.user?.full_name].filter(Boolean).join(" \xB7 ");
16017
- return /* @__PURE__ */ jsx95(
16100
+ return /* @__PURE__ */ jsx96(
16018
16101
  EntityMingoCard,
16019
16102
  {
16020
16103
  title: item?.title ?? "",
16021
16104
  description: item?.summary || meta || void 0,
16022
16105
  cover: entityCover(item?.featured_image, ogPlaceholder),
16023
- fallbackIcon: /* @__PURE__ */ jsx95(TrophyIcon, { size: 24 }),
16106
+ fallbackIcon: /* @__PURE__ */ jsx96(TrophyIcon, { size: 24 }),
16024
16107
  status: { label: "Case study", variant: "grey" },
16025
16108
  chatRef,
16026
16109
  isNewTab,
@@ -16037,13 +16120,13 @@ function CustomerInterviewChatCard({
16037
16120
  discuss
16038
16121
  }) {
16039
16122
  const meta = [item?.user?.full_name, item?.msp?.name].filter(Boolean).join(" \xB7 ");
16040
- return /* @__PURE__ */ jsx95(
16123
+ return /* @__PURE__ */ jsx96(
16041
16124
  EntityMingoCard,
16042
16125
  {
16043
16126
  title: item?.title ?? "",
16044
16127
  description: item?.video_summary || meta || void 0,
16045
16128
  cover: entityCover(item?.featured_image, ogPlaceholder),
16046
- fallbackIcon: /* @__PURE__ */ jsx95(MicrophoneIcon, { size: 24 }),
16129
+ fallbackIcon: /* @__PURE__ */ jsx96(MicrophoneIcon, { size: 24 }),
16047
16130
  status: { label: "Interview", variant: "grey" },
16048
16131
  chatRef,
16049
16132
  isNewTab,
@@ -16052,6 +16135,28 @@ function CustomerInterviewChatCard({
16052
16135
  }
16053
16136
  );
16054
16137
  }
16138
+ function DesignDocChatCard({
16139
+ item,
16140
+ chatRef,
16141
+ isNewTab,
16142
+ discuss
16143
+ }) {
16144
+ const displayRef = fetchedItemDisplayRef(item, chatRef);
16145
+ const doc = item?.doc;
16146
+ const readiness = doc ? DESIGN_DOC_READINESS_DISPLAY[designDocReadiness(doc.completion)] : null;
16147
+ return /* @__PURE__ */ jsx96(
16148
+ MingoInfoCard,
16149
+ {
16150
+ title: doc?.title ?? displayRef.title,
16151
+ description: doc ? [designDocMetaLine(doc), formatCompletionLabel(doc.completion)].join(" \xB7 ") : displayRef.preview ?? void 0,
16152
+ icon: /* @__PURE__ */ jsx96(FileContentIcon, { size: 24 }),
16153
+ status: readiness ? { label: readiness.label, variant: readiness.scheme === "success" ? "success" : "grey" } : { label: "Design doc", variant: "grey" },
16154
+ anchorProps: buildAnchorProps(displayRef.url, isNewTab),
16155
+ menuGroups: cardMenuGroups(displayRef.url, discuss),
16156
+ menuAriaLabel: "Design doc actions"
16157
+ }
16158
+ );
16159
+ }
16055
16160
  function InvestorUpdateChatCard({
16056
16161
  item,
16057
16162
  chatRef,
@@ -16060,13 +16165,13 @@ function InvestorUpdateChatCard({
16060
16165
  discuss
16061
16166
  }) {
16062
16167
  const title = item?.title || `Update #${item?.update_number ?? "?"}`;
16063
- return /* @__PURE__ */ jsx95(
16168
+ return /* @__PURE__ */ jsx96(
16064
16169
  EntityMingoCard,
16065
16170
  {
16066
16171
  title,
16067
16172
  description: item?.strategic_update || item?.content || formatInvestorUpdatePeriod(item?.period_start ?? null, item?.period_end ?? null) || void 0,
16068
16173
  cover: entityCover(item?.featured_image, ogPlaceholder),
16069
- fallbackIcon: /* @__PURE__ */ jsx95(PresentationLineIcon, { size: 24 }),
16174
+ fallbackIcon: /* @__PURE__ */ jsx96(PresentationLineIcon, { size: 24 }),
16070
16175
  status: { label: "Investor update", variant: "grey" },
16071
16176
  chatRef,
16072
16177
  isNewTab,
@@ -16083,13 +16188,13 @@ function OnboardingGuideChatCard({
16083
16188
  discuss
16084
16189
  }) {
16085
16190
  const cover = entityCover(item?.featured_image) ?? entityCover(item?.main_video_thumbnail) ?? entityCover(item?.og_image_url, ogPlaceholder);
16086
- return /* @__PURE__ */ jsx95(
16191
+ return /* @__PURE__ */ jsx96(
16087
16192
  EntityMingoCard,
16088
16193
  {
16089
16194
  title: item?.title ?? "",
16090
16195
  description: item?.summary ?? item?.description ?? void 0,
16091
16196
  cover,
16092
- fallbackIcon: /* @__PURE__ */ jsx95(CompassIcon, { size: 24 }),
16197
+ fallbackIcon: /* @__PURE__ */ jsx96(CompassIcon, { size: 24 }),
16093
16198
  status: { label: "Guide", variant: "grey" },
16094
16199
  chatRef,
16095
16200
  isNewTab,
@@ -16107,9 +16212,9 @@ function ProgramChatCard({
16107
16212
  ogPlaceholder,
16108
16213
  discuss
16109
16214
  }) {
16110
- const icon = configKey === "webinar" ? /* @__PURE__ */ jsx95(PresentationBarIcon, { size: 24 }) : configKey === "event" ? /* @__PURE__ */ jsx95(CalendarIcon, { size: 24 }) : /* @__PURE__ */ jsx95(MicrophoneIcon, { size: 24 });
16215
+ const icon = configKey === "webinar" ? /* @__PURE__ */ jsx96(PresentationBarIcon, { size: 24 }) : configKey === "event" ? /* @__PURE__ */ jsx96(CalendarIcon, { size: 24 }) : /* @__PURE__ */ jsx96(MicrophoneIcon, { size: 24 });
16111
16216
  const { line: meta } = programMetaLine(item ?? {}, configKey, programMetaFormatters(PROGRAM_META_RENDERERS));
16112
- return /* @__PURE__ */ jsx95(
16217
+ return /* @__PURE__ */ jsx96(
16113
16218
  EntityMingoCard,
16114
16219
  {
16115
16220
  title: item?.title ?? "",
@@ -16133,16 +16238,16 @@ function RoadmapChatCard({
16133
16238
  }) {
16134
16239
  const logoUrl = typeof item?.icon === "string" && item.icon.startsWith("http") ? item.icon : void 0;
16135
16240
  const useTypeIcon = cardType === "internal_task" || !logoUrl && item?.customItemId != null;
16136
- const defaultIcon = cardType === "delivery_item" ? /* @__PURE__ */ jsx95(TruckFastIcon, { size: 24 }) : cardType === "internal_task" ? /* @__PURE__ */ jsx95(CheckSquareIcon, { size: 24 }) : /* @__PURE__ */ jsx95(MapIcon, { size: 24 });
16137
- const icon = useTypeIcon ? /* @__PURE__ */ jsx95(TaskTypeIcon, { customItemId: item?.customItemId, className: "size-6" }) : logoUrl ? (
16241
+ const defaultIcon = cardType === "delivery_item" ? /* @__PURE__ */ jsx96(TruckFastIcon, { size: 24 }) : cardType === "internal_task" ? /* @__PURE__ */ jsx96(CheckSquareIcon, { size: 24 }) : /* @__PURE__ */ jsx96(MapIcon, { size: 24 });
16242
+ const icon = useTypeIcon ? /* @__PURE__ */ jsx96(TaskTypeIcon, { customItemId: item?.customItemId, className: "size-6" }) : logoUrl ? (
16138
16243
  // Contained (not full-bleed) so the integration logo keeps its aspect
16139
16244
  // ratio inside the bordered icon box — matches RoadmapCard.
16140
- /* @__PURE__ */ jsx95(next_image_default, { src: logoUrl, alt: "", className: "size-6 object-contain", width: 24, height: 24, unoptimized: true })
16245
+ /* @__PURE__ */ jsx96(next_image_default, { src: logoUrl, alt: "", className: "size-6 object-contain", width: 24, height: 24, unoptimized: true })
16141
16246
  ) : defaultIcon;
16142
16247
  const clickupHref = clickupTaskUrl(chatRef.id);
16143
- const clickupIcon = /* @__PURE__ */ jsx95(ClickupLogoIcon, { size: 20 });
16248
+ const clickupIcon = /* @__PURE__ */ jsx96(ClickupLogoIcon, { size: 20 });
16144
16249
  const cardUrlIsClickup = cardType === "internal_task";
16145
- return /* @__PURE__ */ jsx95(
16250
+ return /* @__PURE__ */ jsx96(
16146
16251
  EntityMingoCard,
16147
16252
  {
16148
16253
  title: item?.title ?? "",
@@ -16165,16 +16270,16 @@ function refHydratedEntry(docType, label, renderRef) {
16165
16270
  contentRefType: docType,
16166
16271
  noComposedHref: true,
16167
16272
  fallbackHref: (item) => item?.url ?? null,
16168
- skeleton: () => /* @__PURE__ */ jsx95(MingoInfoCardSkeleton, {}),
16273
+ skeleton: () => /* @__PURE__ */ jsx96(MingoInfoCardSkeleton, {}),
16169
16274
  render: (item, chatRef, opts) => renderRef(fetchedItemDisplayRef(item, chatRef), opts)
16170
16275
  };
16171
16276
  }
16172
16277
  var FINANCIAL_CARD_CONFIGS = {
16173
- financial_kpi: { label: "Financial KPI", icon: () => /* @__PURE__ */ jsx95(ChartBar01VerIcon, { size: 24 }) },
16174
- cap_table: { label: "Cap table entry", icon: () => /* @__PURE__ */ jsx95(ChartPieIcon, { size: 24 }) },
16175
- profit_loss: { label: "P&L period", icon: () => /* @__PURE__ */ jsx95(MoneyBillDollarIcon, { size: 24 }) },
16176
- balance_sheet: { label: "Balance sheet", icon: () => /* @__PURE__ */ jsx95(BankIcon, { size: 24 }) },
16177
- cash_flow: { label: "Cash flow", icon: () => /* @__PURE__ */ jsx95(CoinsExchangeCurrencyIcon, { size: 24 }) }
16278
+ financial_kpi: { label: "Financial KPI", icon: () => /* @__PURE__ */ jsx96(ChartBar01VerIcon, { size: 24 }) },
16279
+ cap_table: { label: "Cap table entry", icon: () => /* @__PURE__ */ jsx96(ChartPieIcon, { size: 24 }) },
16280
+ profit_loss: { label: "P&L period", icon: () => /* @__PURE__ */ jsx96(MoneyBillDollarIcon, { size: 24 }) },
16281
+ balance_sheet: { label: "Balance sheet", icon: () => /* @__PURE__ */ jsx96(BankIcon, { size: 24 }) },
16282
+ cash_flow: { label: "Cash flow", icon: () => /* @__PURE__ */ jsx96(CoinsExchangeCurrencyIcon, { size: 24 }) }
16178
16283
  };
16179
16284
  function registryEntries(configs, build) {
16180
16285
  const out = {};
@@ -16184,7 +16289,7 @@ function registryEntries(configs, build) {
16184
16289
  function financialRegistryEntries() {
16185
16290
  return registryEntries(
16186
16291
  FINANCIAL_CARD_CONFIGS,
16187
- (cfg, docType) => refHydratedEntry(docType, cfg.label, (displayRef, opts) => /* @__PURE__ */ jsx95(
16292
+ (cfg, docType) => refHydratedEntry(docType, cfg.label, (displayRef, opts) => /* @__PURE__ */ jsx96(
16188
16293
  GenericFinancialChatCard,
16189
16294
  {
16190
16295
  chatRef: displayRef,
@@ -16205,24 +16310,26 @@ var GITHUB_CARD_CONFIGS = {
16205
16310
  };
16206
16311
  var OpenFrameGlyph = resolveIcon("openframe");
16207
16312
  var REF_GLYPH_CARD_CONFIGS = {
16208
- design_doc: { label: "Design doc", icon: () => /* @__PURE__ */ jsx95(FileContentIcon, { size: 24 }) },
16209
- openframe_tenant: { label: "OpenFrame tenant", icon: () => /* @__PURE__ */ jsx95(OpenFrameGlyph, { size: 24 }) },
16210
- prospect_call: { label: "Prospect call", icon: () => /* @__PURE__ */ jsx95(CallIcon, { size: 24 }), media: true },
16313
+ openframe_tenant: { label: "OpenFrame tenant", icon: () => /* @__PURE__ */ jsx96(OpenFrameGlyph, { size: 24 }) },
16314
+ prospect_call: { label: "Prospect call", icon: () => /* @__PURE__ */ jsx96(CallIcon, { size: 24 }), media: true },
16211
16315
  // Code intelligence (product-hub internal): the review rules a repository is
16212
16316
  // held to, the repositories themselves, and one row per deployment
16213
16317
  // environment. Glyph cards like their siblings — none of the three has a
16214
16318
  // cover image, and a rule is read in the admin screen it links to.
16215
- code_rule: { label: "Code rule", icon: () => /* @__PURE__ */ jsx95(BracketCurlyCheckIcon, { size: 24 }) },
16216
- code_repo: { label: "Repository", icon: () => /* @__PURE__ */ jsx95(CodingBranchIcon, { size: 24 }) },
16217
- code_deployment: { label: "Deployment", icon: () => /* @__PURE__ */ jsx95(PackageIcon, { size: 24 }) },
16319
+ code_rule: { label: "Code rule", icon: () => /* @__PURE__ */ jsx96(BracketCurlyCheckIcon, { size: 24 }) },
16320
+ code_repo: { label: "Repository", icon: () => /* @__PURE__ */ jsx96(CodingBranchIcon, { size: 24 }) },
16321
+ code_deployment: { label: "Deployment", icon: () => /* @__PURE__ */ jsx96(PackageIcon, { size: 24 }) },
16218
16322
  // The graph's own objects: one source file's public surface, one public
16219
16323
  // symbol, a near-duplicate cluster, and a pull request's blast radius.
16220
16324
  // Glyph cards for the same reason as their three siblings — none carries a
16221
16325
  // cover image, and each links to the admin screen that renders it in full.
16222
- code_file: { label: "Code file", icon: () => /* @__PURE__ */ jsx95(FileCodeIcon, { size: 24 }) },
16223
- code_symbol: { label: "Code symbol", icon: () => /* @__PURE__ */ jsx95(CodeSquareIcon, { size: 24 }) },
16224
- code_duplicate: { label: "Duplicate code", icon: () => /* @__PURE__ */ jsx95(Copy01Icon, { size: 24 }) },
16225
- code_impact: { label: "Change impact", icon: () => /* @__PURE__ */ jsx95(CodingPullRequestIcon, { size: 24 }) }
16326
+ code_file: { label: "Code file", icon: () => /* @__PURE__ */ jsx96(FileCodeIcon, { size: 24 }) },
16327
+ code_symbol: { label: "Code symbol", icon: () => /* @__PURE__ */ jsx96(CodeSquareIcon, { size: 24 }) },
16328
+ code_duplicate: { label: "Duplicate code", icon: () => /* @__PURE__ */ jsx96(Copy01Icon, { size: 24 }) },
16329
+ code_impact: { label: "Change impact", icon: () => /* @__PURE__ */ jsx96(CodingPullRequestIcon, { size: 24 }) },
16330
+ // A change set: pull requests across repositories declared as one change, with the ClickUp tasks and design
16331
+ // docs its pull requests are attached to. ONE card for it wherever a set is shown (chat, a design doc's page).
16332
+ change_set: { label: "Change set", icon: () => /* @__PURE__ */ jsx96(CodingMergeIcon, { size: 24 }) }
16226
16333
  };
16227
16334
  function refGlyphRegistryEntries() {
16228
16335
  return registryEntries(
@@ -16230,7 +16337,7 @@ function refGlyphRegistryEntries() {
16230
16337
  (cfg, docType) => refHydratedEntry(
16231
16338
  docType,
16232
16339
  cfg.label,
16233
- (displayRef, opts) => cfg.media ? /* @__PURE__ */ jsx95(
16340
+ (displayRef, opts) => cfg.media ? /* @__PURE__ */ jsx96(
16234
16341
  EntityMingoCard,
16235
16342
  {
16236
16343
  title: displayRef.title,
@@ -16246,7 +16353,7 @@ function refGlyphRegistryEntries() {
16246
16353
  discuss: opts.discuss,
16247
16354
  menuAriaLabel: `${cfg.label} actions`
16248
16355
  }
16249
- ) : /* @__PURE__ */ jsx95(GlyphChatCard, { chatRef: displayRef, icon: cfg.icon(), isNewTab: opts.isNewTab, discuss: opts.discuss })
16356
+ ) : /* @__PURE__ */ jsx96(GlyphChatCard, { chatRef: displayRef, icon: cfg.icon(), isNewTab: opts.isNewTab, discuss: opts.discuss })
16250
16357
  )
16251
16358
  );
16252
16359
  }
@@ -16259,17 +16366,17 @@ function fetchedEmployeeEntryDisplayRef(item, chatRef) {
16259
16366
  return { ...chatRef, title, preview: preview.length > 0 ? preview : chatRef.preview };
16260
16367
  }
16261
16368
  var EMPLOYEE_ENTRY_CARD_CONFIGS = {
16262
- what_i_shipped: { label: "What I Shipped", icon: () => /* @__PURE__ */ jsx95(Rocket02Icon, { size: 24 }) },
16263
- how_i_work: { label: "How I Work", icon: () => /* @__PURE__ */ jsx95(ClipboardListIcon, { size: 24 }) },
16264
- ai_prompt: { label: "Squawkbox", icon: () => /* @__PURE__ */ jsx95(ChatQuoteIcon, { size: 24 }) }
16369
+ what_i_shipped: { label: "What I Shipped", icon: () => /* @__PURE__ */ jsx96(Rocket02Icon, { size: 24 }) },
16370
+ how_i_work: { label: "How I Work", icon: () => /* @__PURE__ */ jsx96(ClipboardListIcon, { size: 24 }) },
16371
+ ai_prompt: { label: "Squawkbox", icon: () => /* @__PURE__ */ jsx96(ChatQuoteIcon, { size: 24 }) }
16265
16372
  };
16266
16373
  function employeeEntryRegistryEntries() {
16267
16374
  return registryEntries(EMPLOYEE_ENTRY_CARD_CONFIGS, (cfg, docType) => ({
16268
16375
  label: cfg.label,
16269
16376
  bareInline: true,
16270
16377
  contentRefType: docType,
16271
- skeleton: () => /* @__PURE__ */ jsx95(MingoInfoCardSkeleton, {}),
16272
- render: (item, chatRef, opts) => /* @__PURE__ */ jsx95(
16378
+ skeleton: () => /* @__PURE__ */ jsx96(MingoInfoCardSkeleton, {}),
16379
+ render: (item, chatRef, opts) => /* @__PURE__ */ jsx96(
16273
16380
  GlyphChatCard,
16274
16381
  {
16275
16382
  chatRef: fetchedEmployeeEntryDisplayRef(item, chatRef),
@@ -16283,7 +16390,7 @@ function employeeEntryRegistryEntries() {
16283
16390
  function githubRegistryEntries() {
16284
16391
  return registryEntries(
16285
16392
  GITHUB_CARD_CONFIGS,
16286
- (cfg, docType) => refHydratedEntry(docType, cfg.label, (displayRef, opts) => /* @__PURE__ */ jsx95(GitHubChatCard, { chatRef: displayRef, kind: cfg.kind, isNewTab: opts.isNewTab, discuss: opts.discuss }))
16393
+ (cfg, docType) => refHydratedEntry(docType, cfg.label, (displayRef, opts) => /* @__PURE__ */ jsx96(GitHubChatCard, { chatRef: displayRef, kind: cfg.kind, isNewTab: opts.isNewTab, discuss: opts.discuss }))
16287
16394
  );
16288
16395
  }
16289
16396
  var PROGRAM_CARD_CONFIGS = {
@@ -16296,8 +16403,8 @@ function programRegistryEntries() {
16296
16403
  label: cfg.label,
16297
16404
  contentRefType: cfg.contentRefType,
16298
16405
  bareInline: true,
16299
- skeleton: () => /* @__PURE__ */ jsx95(ProgramCardSkeleton, { size: "sm" }),
16300
- render: (item, chatRef, opts) => /* @__PURE__ */ jsx95(
16406
+ skeleton: () => /* @__PURE__ */ jsx96(ProgramCardSkeleton, { size: "sm" }),
16407
+ render: (item, chatRef, opts) => /* @__PURE__ */ jsx96(
16301
16408
  ProgramChatCard,
16302
16409
  {
16303
16410
  item,
@@ -16337,8 +16444,8 @@ function roadmapRegistryEntries() {
16337
16444
  bareInline: true,
16338
16445
  ...cfg.noComposedHref ? { noComposedHref: true } : {},
16339
16446
  ...cfg.fallbackHref ? { fallbackHref: cfg.fallbackHref } : {},
16340
- skeleton: () => /* @__PURE__ */ jsx95(RoadmapCardSkeleton, { size: "sm" }),
16341
- render: (item, chatRef, opts) => /* @__PURE__ */ jsx95(
16447
+ skeleton: () => /* @__PURE__ */ jsx96(RoadmapCardSkeleton, { size: "sm" }),
16448
+ render: (item, chatRef, opts) => /* @__PURE__ */ jsx96(
16342
16449
  RoadmapChatCard,
16343
16450
  {
16344
16451
  item,
@@ -16365,7 +16472,7 @@ var CHAT_CARD_REGISTRY = {
16365
16472
  // null and the card renders its generic "Deleted item" tombstone. The
16366
16473
  // descriptor's `title` defaults to the raw cardId — suppress it so the
16367
16474
  // strikethrough line never shows an opaque id.
16368
- render: (_item, chatRef) => /* @__PURE__ */ jsx95(
16475
+ render: (_item, chatRef) => /* @__PURE__ */ jsx96(
16369
16476
  DeletedDataCard,
16370
16477
  {
16371
16478
  title: chatRef.title && chatRef.title !== chatRef.id ? chatRef.title : null,
@@ -16377,7 +16484,7 @@ var CHAT_CARD_REGISTRY = {
16377
16484
  // ───────── ref-only types (no list endpoint; the ChatRef IS the card) ─────────
16378
16485
  ...refGlyphRegistryEntries(),
16379
16486
  ...employeeEntryRegistryEntries(),
16380
- slack_message: refHydratedEntry("slack_message", "Slack message", (displayRef, opts) => /* @__PURE__ */ jsx95(SlackChatCard, { chatRef: displayRef, isNewTab: opts.isNewTab, discuss: opts.discuss })),
16487
+ slack_message: refHydratedEntry("slack_message", "Slack message", (displayRef, opts) => /* @__PURE__ */ jsx96(SlackChatCard, { chatRef: displayRef, isNewTab: opts.isNewTab, discuss: opts.discuss })),
16381
16488
  // FAQ hydrates from its EXISTING public list API (`/api/faqs?ids=` —
16382
16489
  // also feeding related-content rails, so its base path must not move).
16383
16490
  // Rows are faq-shaped, not ChatRef-shaped, hence the bespoke row→display
@@ -16388,8 +16495,8 @@ var CHAT_CARD_REGISTRY = {
16388
16495
  contentRefType: "faq",
16389
16496
  noComposedHref: true,
16390
16497
  fallbackHref: (item) => item?.id != null ? `/faqs#${faqItemAnchor(item.id)}` : null,
16391
- skeleton: () => /* @__PURE__ */ jsx95(MingoInfoCardSkeleton, {}),
16392
- render: (item, chatRef, opts) => /* @__PURE__ */ jsx95(FaqChatCard, { chatRef: fetchedFaqDisplayRef(item, chatRef), isNewTab: opts.isNewTab, discuss: opts.discuss })
16498
+ skeleton: () => /* @__PURE__ */ jsx96(MingoInfoCardSkeleton, {}),
16499
+ render: (item, chatRef, opts) => /* @__PURE__ */ jsx96(FaqChatCard, { chatRef: fetchedFaqDisplayRef(item, chatRef), isNewTab: opts.isNewTab, discuss: opts.discuss })
16393
16500
  },
16394
16501
  // Trust center — ONE record (`[card://trust_center:main]`) from the public
16395
16502
  // projection route; `extractCardItems` turns its object payload into the
@@ -16401,24 +16508,24 @@ var CHAT_CARD_REGISTRY = {
16401
16508
  contentRefType: TRUST_CENTER_DOCUMENT_TYPE,
16402
16509
  noComposedHref: true,
16403
16510
  fallbackHref: () => TRUST_CENTER_PAGE_PATH,
16404
- skeleton: () => /* @__PURE__ */ jsx95(MingoInfoCardSkeleton, {}),
16405
- render: (item, chatRef, opts) => /* @__PURE__ */ jsx95(TrustCenterChatCard, { item, chatRef, isNewTab: opts.isNewTab, discuss: opts.discuss })
16511
+ skeleton: () => /* @__PURE__ */ jsx96(MingoInfoCardSkeleton, {}),
16512
+ render: (item, chatRef, opts) => /* @__PURE__ */ jsx96(TrustCenterChatCard, { item, chatRef, isNewTab: opts.isNewTab, discuss: opts.discuss })
16406
16513
  },
16407
- hubspot_ticket: refHydratedEntry("hubspot_ticket", "HubSpot ticket", (displayRef, opts) => /* @__PURE__ */ jsx95(HubspotTicketChatCard, { chatRef: displayRef, isNewTab: opts.isNewTab, discuss: opts.discuss })),
16408
- hubspot_ticket_anon: refHydratedEntry("hubspot_ticket_anon", "HubSpot ticket (anon)", (displayRef, opts) => /* @__PURE__ */ jsx95(HubspotTicketChatCard, { chatRef: displayRef, isNewTab: opts.isNewTab, discuss: opts.discuss })),
16514
+ hubspot_ticket: refHydratedEntry("hubspot_ticket", "HubSpot ticket", (displayRef, opts) => /* @__PURE__ */ jsx96(HubspotTicketChatCard, { chatRef: displayRef, isNewTab: opts.isNewTab, discuss: opts.discuss })),
16515
+ hubspot_ticket_anon: refHydratedEntry("hubspot_ticket_anon", "HubSpot ticket (anon)", (displayRef, opts) => /* @__PURE__ */ jsx96(HubspotTicketChatCard, { chatRef: displayRef, isNewTab: opts.isNewTab, discuss: opts.discuss })),
16409
16516
  // Self tickets hydrate via the session-scoped `GET /api/tickets?ids=`
16410
16517
  // (`selfScopeFilter` ACL) instead of the generic endpoint — the self
16411
16518
  // config's searchFilter is deliberately fail-closed there. Same
16412
16519
  // ChatRef item shape (`buildHubspotTicketSelfRef` SSOT), same preset.
16413
- hubspot_ticket_self: refHydratedEntry("hubspot_ticket_self", "HubSpot ticket (self)", (displayRef, opts) => /* @__PURE__ */ jsx95(HubspotTicketChatCard, { chatRef: displayRef, isNewTab: opts.isNewTab, discuss: opts.discuss })),
16414
- data_room_doc: refHydratedEntry("data_room_doc", "Data-room doc", (displayRef, opts) => /* @__PURE__ */ jsx95(DataRoomDocChatCard, { chatRef: displayRef, isNewTab: opts.isNewTab, discuss: opts.discuss })),
16415
- markdown: refHydratedEntry("markdown", "Doc page (markdown)", (displayRef, opts) => /* @__PURE__ */ jsx95(DataRoomDocChatCard, { chatRef: displayRef, isNewTab: opts.isNewTab, discuss: opts.discuss })),
16520
+ hubspot_ticket_self: refHydratedEntry("hubspot_ticket_self", "HubSpot ticket (self)", (displayRef, opts) => /* @__PURE__ */ jsx96(HubspotTicketChatCard, { chatRef: displayRef, isNewTab: opts.isNewTab, discuss: opts.discuss })),
16521
+ data_room_doc: refHydratedEntry("data_room_doc", "Data-room doc", (displayRef, opts) => /* @__PURE__ */ jsx96(DataRoomDocChatCard, { chatRef: displayRef, isNewTab: opts.isNewTab, discuss: opts.discuss })),
16522
+ markdown: refHydratedEntry("markdown", "Doc page (markdown)", (displayRef, opts) => /* @__PURE__ */ jsx96(DataRoomDocChatCard, { chatRef: displayRef, isNewTab: opts.isNewTab, discuss: opts.discuss })),
16416
16523
  // Body-synthesized video ids (`shortVideoId` content hashes / YouTube
16417
16524
  // ids) have no backing table row to fetch — ref-only by nature.
16418
16525
  video: {
16419
16526
  label: "Video",
16420
16527
  bareInline: true,
16421
- render: (_item, chatRef) => /* @__PURE__ */ jsx95(ChatInlineVideoPill, { chatRef })
16528
+ render: (_item, chatRef) => /* @__PURE__ */ jsx96(ChatInlineVideoPill, { chatRef })
16422
16529
  },
16423
16530
  ...financialRegistryEntries(),
16424
16531
  // ───────── content types: full rows from their public list APIs ─────────
@@ -16426,8 +16533,8 @@ var CHAT_CARD_REGISTRY = {
16426
16533
  label: "Blog post",
16427
16534
  contentRefType: "blog_post_existing",
16428
16535
  bareInline: true,
16429
- skeleton: () => /* @__PURE__ */ jsx95(BlogCardSkeleton, { size: "sm" }),
16430
- render: (item, chatRef, opts) => /* @__PURE__ */ jsx95(
16536
+ skeleton: () => /* @__PURE__ */ jsx96(BlogCardSkeleton, { size: "sm" }),
16537
+ render: (item, chatRef, opts) => /* @__PURE__ */ jsx96(
16431
16538
  BlogChatCard,
16432
16539
  {
16433
16540
  item,
@@ -16443,8 +16550,8 @@ var CHAT_CARD_REGISTRY = {
16443
16550
  label: "Case study",
16444
16551
  contentRefType: "case_study",
16445
16552
  bareInline: true,
16446
- skeleton: () => /* @__PURE__ */ jsx95(CaseStudyCardSkeleton, { size: "sm" }),
16447
- render: (item, chatRef, opts) => /* @__PURE__ */ jsx95(
16553
+ skeleton: () => /* @__PURE__ */ jsx96(CaseStudyCardSkeleton, { size: "sm" }),
16554
+ render: (item, chatRef, opts) => /* @__PURE__ */ jsx96(
16448
16555
  CaseStudyChatCard,
16449
16556
  {
16450
16557
  item,
@@ -16455,12 +16562,21 @@ var CHAT_CARD_REGISTRY = {
16455
16562
  }
16456
16563
  )
16457
16564
  },
16565
+ design_doc: {
16566
+ label: "Design doc",
16567
+ contentRefType: "design_doc",
16568
+ bareInline: true,
16569
+ noComposedHref: true,
16570
+ fallbackHref: (item) => item?.url ?? null,
16571
+ skeleton: () => /* @__PURE__ */ jsx96(MingoInfoCardSkeleton, {}),
16572
+ render: (item, chatRef, opts) => /* @__PURE__ */ jsx96(DesignDocChatCard, { item, chatRef, isNewTab: opts.isNewTab, discuss: opts.discuss })
16573
+ },
16458
16574
  customer_interview: {
16459
16575
  label: "Customer interview",
16460
16576
  contentRefType: "customer_interview",
16461
16577
  bareInline: true,
16462
- skeleton: () => /* @__PURE__ */ jsx95(CustomerInterviewCardSkeleton, { size: "sm" }),
16463
- render: (item, chatRef, opts) => /* @__PURE__ */ jsx95(
16578
+ skeleton: () => /* @__PURE__ */ jsx96(CustomerInterviewCardSkeleton, { size: "sm" }),
16579
+ render: (item, chatRef, opts) => /* @__PURE__ */ jsx96(
16464
16580
  CustomerInterviewChatCard,
16465
16581
  {
16466
16582
  item,
@@ -16475,10 +16591,10 @@ var CHAT_CARD_REGISTRY = {
16475
16591
  label: "Product release",
16476
16592
  contentRefType: "product_release",
16477
16593
  bareInline: true,
16478
- skeleton: () => /* @__PURE__ */ jsx95(ProductReleaseCardSkeleton, { size: "sm" }),
16594
+ skeleton: () => /* @__PURE__ */ jsx96(ProductReleaseCardSkeleton, { size: "sm" }),
16479
16595
  render: (item, chatRef, opts) => {
16480
16596
  const builder = opts?.extras?.buildProductReleaseCardProps ?? defaultBuildProductReleaseCardProps;
16481
- return /* @__PURE__ */ jsx95(
16597
+ return /* @__PURE__ */ jsx96(
16482
16598
  ProductReleaseChatCard,
16483
16599
  {
16484
16600
  item,
@@ -16495,8 +16611,8 @@ var CHAT_CARD_REGISTRY = {
16495
16611
  label: "Investor update",
16496
16612
  contentRefType: "investor_update",
16497
16613
  bareInline: true,
16498
- skeleton: () => /* @__PURE__ */ jsx95(InvestorUpdateCardSkeleton, { size: "sm" }),
16499
- render: (item, chatRef, opts) => /* @__PURE__ */ jsx95(
16614
+ skeleton: () => /* @__PURE__ */ jsx96(InvestorUpdateCardSkeleton, { size: "sm" }),
16615
+ render: (item, chatRef, opts) => /* @__PURE__ */ jsx96(
16500
16616
  InvestorUpdateChatCard,
16501
16617
  {
16502
16618
  item,
@@ -16513,8 +16629,8 @@ var CHAT_CARD_REGISTRY = {
16513
16629
  bareInline: true,
16514
16630
  // "Display" affordance (verbatim guide body) instead of "Ask".
16515
16631
  displayAction: true,
16516
- skeleton: () => /* @__PURE__ */ jsx95(OnboardingGuideCardSkeleton, { size: "sm" }),
16517
- render: (item, chatRef, opts) => /* @__PURE__ */ jsx95(
16632
+ skeleton: () => /* @__PURE__ */ jsx96(OnboardingGuideCardSkeleton, { size: "sm" }),
16633
+ render: (item, chatRef, opts) => /* @__PURE__ */ jsx96(
16518
16634
  OnboardingGuideChatCard,
16519
16635
  {
16520
16636
  item,
@@ -16529,11 +16645,11 @@ var CHAT_CARD_REGISTRY = {
16529
16645
  label: "Marketing campaign",
16530
16646
  contentRefType: "marketing_campaign",
16531
16647
  bareInline: true,
16532
- skeleton: () => /* @__PURE__ */ jsx95(CampaignCardAdminSkeleton, {}),
16648
+ skeleton: () => /* @__PURE__ */ jsx96(CampaignCardAdminSkeleton, {}),
16533
16649
  // No public viewer — synthesize the hub-internal admin URL post-fetch
16534
16650
  // so the wrapper + isNewTab computation see the actual destination.
16535
16651
  fallbackHref: (item) => item?.id ? `/admin/campaigns/${encodeURIComponent(String(item.id))}` : null,
16536
- render: (item, chatRef, opts) => /* @__PURE__ */ jsx95(CampaignChatCard, { item, chatRef, isNewTab: opts.isNewTab, discuss: opts.discuss })
16652
+ render: (item, chatRef, opts) => /* @__PURE__ */ jsx96(CampaignChatCard, { item, chatRef, isNewTab: opts.isNewTab, discuss: opts.discuss })
16537
16653
  },
16538
16654
  ...roadmapRegistryEntries()
16539
16655
  };
@@ -16562,7 +16678,7 @@ function ChatCardNavWrap({
16562
16678
  e.stopPropagation();
16563
16679
  if (!isNewTab && panel?.closeChat) panel.closeChat();
16564
16680
  };
16565
- return /* @__PURE__ */ jsx95("span", { className: "contents", onClickCapture, children });
16681
+ return /* @__PURE__ */ jsx96("span", { className: "contents", onClickCapture, children });
16566
16682
  }
16567
16683
  function ChatCardLoader({
16568
16684
  chatRef,
@@ -16624,7 +16740,7 @@ function ChatCardLoader({
16624
16740
  const discussFn = useDisplay ? onDisplay : onDiscuss;
16625
16741
  const discuss = discussFn ? {
16626
16742
  label: useDisplay ? "Display" : "Ask Mingo",
16627
- icon: useDisplay ? /* @__PURE__ */ jsx95(FileContentIcon, { size: 20 }) : /* @__PURE__ */ jsx95(
16743
+ icon: useDisplay ? /* @__PURE__ */ jsx96(FileContentIcon, { size: 20 }) : /* @__PURE__ */ jsx96(
16628
16744
  MingoIcon,
16629
16745
  {
16630
16746
  className: "size-5",
@@ -16643,7 +16759,7 @@ function ChatCardLoader({
16643
16759
  discuss
16644
16760
  };
16645
16761
  const path = typeof finalChatRef.metadata?.path === "string" ? finalChatRef.metadata.path : null;
16646
- const navWrap = (children) => /* @__PURE__ */ jsx95(
16762
+ const navWrap = (children) => /* @__PURE__ */ jsx96(
16647
16763
  ChatCardNavWrap,
16648
16764
  {
16649
16765
  href: finalChatRef.url ?? null,
@@ -16653,7 +16769,7 @@ function ChatCardLoader({
16653
16769
  children
16654
16770
  }
16655
16771
  );
16656
- const finish = (node) => entry.bareInline ? /* @__PURE__ */ jsx95(Fragment32, { children: navWrap(node) }) : /* @__PURE__ */ jsx95(
16772
+ const finish = (node) => entry.bareInline ? /* @__PURE__ */ jsx96(Fragment33, { children: navWrap(node) }) : /* @__PURE__ */ jsx96(
16657
16773
  ChatCardWithDiscuss,
16658
16774
  {
16659
16775
  chatRef: finalChatRef,
@@ -16666,15 +16782,15 @@ function ChatCardLoader({
16666
16782
  if (!fetchEntry) {
16667
16783
  return finish(entry.render(void 0, finalChatRef, renderOpts));
16668
16784
  }
16669
- if (isLoading) return /* @__PURE__ */ jsx95(Fragment32, { children: fetchEntry.skeleton?.() ?? null });
16785
+ if (isLoading) return /* @__PURE__ */ jsx96(Fragment33, { children: fetchEntry.skeleton?.() ?? null });
16670
16786
  if (!item) {
16671
16787
  if (isError) {
16672
- return /* @__PURE__ */ jsx95(CardLoadFailure, { label: entry.label, id: finalChatRef.id, detail: "Failed to load" });
16788
+ return /* @__PURE__ */ jsx96(CardLoadFailure, { label: entry.label, id: finalChatRef.id, detail: "Failed to load" });
16673
16789
  }
16674
16790
  if (!isFetched) {
16675
- return /* @__PURE__ */ jsx95(CardLoadFailure, { label: entry.label, id: finalChatRef.id, detail: "Not loadable" });
16791
+ return /* @__PURE__ */ jsx96(CardLoadFailure, { label: entry.label, id: finalChatRef.id, detail: "Not loadable" });
16676
16792
  }
16677
- return /* @__PURE__ */ jsx95(CardLoadFailure, { label: entry.label, id: finalChatRef.id, detail: "Not found" });
16793
+ return /* @__PURE__ */ jsx96(CardLoadFailure, { label: entry.label, id: finalChatRef.id, detail: "Not found" });
16678
16794
  }
16679
16795
  const videoMeta = itemVideoMetadata(item);
16680
16796
  if (videoMeta) {
@@ -16686,9 +16802,9 @@ function ChatCardLoader({
16686
16802
  // Same 12px rhythm as the message renderer's block-sibling wrapper
16687
16803
  // (`my-3` in chat-message-enhanced) so card→player spacing matches
16688
16804
  // the spacing between any two hoisted blocks.
16689
- /* @__PURE__ */ jsxs73("div", { className: "flex min-w-0 flex-col gap-3", children: [
16805
+ /* @__PURE__ */ jsxs74("div", { className: "flex min-w-0 flex-col gap-3", children: [
16690
16806
  finish(entry.render(item, finalChatRef, renderOpts)),
16691
- /* @__PURE__ */ jsx95(ChatVideoEntityCard, { chatRef: videoRef })
16807
+ /* @__PURE__ */ jsx96(ChatVideoEntityCard, { chatRef: videoRef })
16692
16808
  ] })
16693
16809
  );
16694
16810
  }
@@ -16696,7 +16812,7 @@ function ChatCardLoader({
16696
16812
  }
16697
16813
  function renderChatInlineEntityCard(chatRef, options = {}) {
16698
16814
  const { onDiscuss, onDisplay, baseRoute, chipBasePlatform, extras } = options;
16699
- const loader = /* @__PURE__ */ jsx95(
16815
+ const loader = /* @__PURE__ */ jsx96(
16700
16816
  ChatCardLoader,
16701
16817
  {
16702
16818
  chatRef,
@@ -16716,7 +16832,7 @@ function renderChatInlineEntityCard(chatRef, options = {}) {
16716
16832
  url: chatRef.url ?? decoded.videoUrl ?? (decoded.youtubeUrl ? `https://www.youtube.com/watch?v=${decoded.youtubeUrl}` : null),
16717
16833
  metadata: { ...chatRef.metadata ?? {}, ...decoded }
16718
16834
  };
16719
- return /* @__PURE__ */ jsx95(BlockCard, { inline: /* @__PURE__ */ jsx95(ChatInlineVideoPill, { chatRef: displayRef }), children: /* @__PURE__ */ jsx95(ChatVideoEntityCard, { chatRef: displayRef }) });
16835
+ return /* @__PURE__ */ jsx96(BlockCard, { inline: /* @__PURE__ */ jsx96(ChatInlineVideoPill, { chatRef: displayRef }), children: /* @__PURE__ */ jsx96(ChatVideoEntityCard, { chatRef: displayRef }) });
16720
16836
  }
16721
16837
  return loader;
16722
16838
  }
@@ -18076,7 +18192,7 @@ function useChatAttachments() {
18076
18192
 
18077
18193
  // src/components/chat/hooks/use-chat-attachment-image-gallery.tsx
18078
18194
  import { useCallback as useCallback17, useEffect as useEffect28, useRef as useRef24, useState as useState34 } from "react";
18079
- import { jsx as jsx96 } from "react/jsx-runtime";
18195
+ import { jsx as jsx97 } from "react/jsx-runtime";
18080
18196
  var CLOSED = { isOpen: false, images: [], initialIndex: 0 };
18081
18197
  function useChatAttachmentImageGallery() {
18082
18198
  const runtime = useRequiredChatRuntime();
@@ -18112,7 +18228,7 @@ function useChatAttachmentImageGallery() {
18112
18228
  root.addEventListener("click", onClick);
18113
18229
  return () => root.removeEventListener("click", onClick);
18114
18230
  }, [viewUrlPrefix]);
18115
- const modal = state.isOpen ? /* @__PURE__ */ jsx96(
18231
+ const modal = state.isOpen ? /* @__PURE__ */ jsx97(
18116
18232
  ImageGalleryModal,
18117
18233
  {
18118
18234
  images: state.images,
@@ -24121,13 +24237,13 @@ import {
24121
24237
  useRef as useRef33,
24122
24238
  useState as useState45
24123
24239
  } from "react";
24124
- import { jsx as jsx97, jsxs as jsxs74 } from "react/jsx-runtime";
24240
+ import { jsx as jsx98, jsxs as jsxs75 } from "react/jsx-runtime";
24125
24241
  var OVERLAY_BACKDROP_CLASS = "bg-ods-overlay";
24126
24242
  var Drawer = DialogPrimitive.Root;
24127
24243
  var DrawerTrigger = DialogPrimitive.Trigger;
24128
24244
  var DrawerClose = DialogPrimitive.Close;
24129
24245
  var DrawerPortal = DialogPrimitive.Portal;
24130
- var DrawerOverlay = forwardRef26(({ className, ...props }, ref) => /* @__PURE__ */ jsx97(
24246
+ var DrawerOverlay = forwardRef26(({ className, ...props }, ref) => /* @__PURE__ */ jsx98(
24131
24247
  DialogPrimitive.Overlay,
24132
24248
  {
24133
24249
  ref,
@@ -24322,7 +24438,7 @@ function DrawerResizeHandle({ side, size: size2, minSize, maxSize, onSize, ariaL
24322
24438
  const trackPosition = side === "right" ? "right-full top-4 bottom-4 w-3 items-center justify-end pr-1" : side === "left" ? "left-full top-4 bottom-4 w-3 items-center justify-start pl-1" : side === "bottom" ? "bottom-full left-4 right-4 h-3 justify-center items-end pb-1" : "top-full left-4 right-4 h-3 justify-center items-start pt-1";
24323
24439
  const cursorClass = isHorizontal ? "cursor-col-resize" : "cursor-row-resize";
24324
24440
  const gripClass = isHorizontal ? "h-10 w-1" : "w-10 h-1";
24325
- return /* @__PURE__ */ jsx97(
24441
+ return /* @__PURE__ */ jsx98(
24326
24442
  "div",
24327
24443
  {
24328
24444
  role: "separator",
@@ -24343,7 +24459,7 @@ function DrawerResizeHandle({ side, size: size2, minSize, maxSize, onSize, ariaL
24343
24459
  trackPosition,
24344
24460
  cursorClass
24345
24461
  ),
24346
- children: /* @__PURE__ */ jsx97("div", { "aria-hidden": true, className: cn("rounded-full bg-ods-bg-surface", gripClass) })
24462
+ children: /* @__PURE__ */ jsx98("div", { "aria-hidden": true, className: cn("rounded-full bg-ods-bg-surface", gripClass) })
24347
24463
  }
24348
24464
  );
24349
24465
  }
@@ -24391,9 +24507,9 @@ var DrawerContent = forwardRef26(
24391
24507
  });
24392
24508
  const applyInlineSize = resizable && !isMobile;
24393
24509
  const sizeStyle = applyInlineSize ? isHorizontal ? { width: resizedSize } : { height: resizedSize } : {};
24394
- return /* @__PURE__ */ jsxs74(DrawerPortal, { children: [
24395
- /* @__PURE__ */ jsx97(DrawerOverlay, { className: overlayClassName }),
24396
- /* @__PURE__ */ jsxs74(
24510
+ return /* @__PURE__ */ jsxs75(DrawerPortal, { children: [
24511
+ /* @__PURE__ */ jsx98(DrawerOverlay, { className: overlayClassName }),
24512
+ /* @__PURE__ */ jsxs75(
24397
24513
  DialogPrimitive.Content,
24398
24514
  {
24399
24515
  ref,
@@ -24401,7 +24517,7 @@ var DrawerContent = forwardRef26(
24401
24517
  style: { ...offsetHeader ? { top: headerHeight } : {}, ...style },
24402
24518
  ...props,
24403
24519
  children: [
24404
- applyInlineSize ? /* @__PURE__ */ jsx97(
24520
+ applyInlineSize ? /* @__PURE__ */ jsx98(
24405
24521
  DrawerResizeHandle,
24406
24522
  {
24407
24523
  side: resolvedSide,
@@ -24412,7 +24528,7 @@ var DrawerContent = forwardRef26(
24412
24528
  ariaLabel: resizeAriaLabel
24413
24529
  }
24414
24530
  ) : null,
24415
- /* @__PURE__ */ jsx97(
24531
+ /* @__PURE__ */ jsx98(
24416
24532
  "div",
24417
24533
  {
24418
24534
  className: cn(drawerPanelVariants({ side, flush, size: size2 }), className, panelClassName),
@@ -24427,11 +24543,11 @@ var DrawerContent = forwardRef26(
24427
24543
  }
24428
24544
  );
24429
24545
  DrawerContent.displayName = "DrawerContent";
24430
- var DrawerHeader = ({ className, children, ...props }) => /* @__PURE__ */ jsx97("div", { className: cn("flex flex-col gap-4", className), ...props, children });
24546
+ var DrawerHeader = ({ className, children, ...props }) => /* @__PURE__ */ jsx98("div", { className: cn("flex flex-col gap-4", className), ...props, children });
24431
24547
  DrawerHeader.displayName = "DrawerHeader";
24432
24548
  var DrawerTitle = forwardRef26(
24433
- ({ className, children, actions, hideClose, ...props }, ref) => /* @__PURE__ */ jsxs74("div", { className: "flex items-start gap-4", children: [
24434
- /* @__PURE__ */ jsx97(
24549
+ ({ className, children, actions, hideClose, ...props }, ref) => /* @__PURE__ */ jsxs75("div", { className: "flex items-start gap-4", children: [
24550
+ /* @__PURE__ */ jsx98(
24435
24551
  DialogPrimitive.Title,
24436
24552
  {
24437
24553
  ref,
@@ -24441,14 +24557,14 @@ var DrawerTitle = forwardRef26(
24441
24557
  }
24442
24558
  ),
24443
24559
  actions,
24444
- !hideClose && /* @__PURE__ */ jsxs74(DialogPrimitive.Close, { className: "shrink-0 rounded-sm text-ods-text-secondary outline-none ring-0 transition-colors hover:text-ods-text-primary focus:outline-none focus:ring-0 focus-visible:outline-none focus-visible:ring-0", children: [
24445
- /* @__PURE__ */ jsx97(X, { className: "size-6" }),
24446
- /* @__PURE__ */ jsx97("span", { className: "sr-only", children: "Close" })
24560
+ !hideClose && /* @__PURE__ */ jsxs75(DialogPrimitive.Close, { className: "shrink-0 rounded-sm text-ods-text-secondary outline-none ring-0 transition-colors hover:text-ods-text-primary focus:outline-none focus:ring-0 focus-visible:outline-none focus-visible:ring-0", children: [
24561
+ /* @__PURE__ */ jsx98(X, { className: "size-6" }),
24562
+ /* @__PURE__ */ jsx98("span", { className: "sr-only", children: "Close" })
24447
24563
  ] })
24448
24564
  ] })
24449
24565
  );
24450
24566
  DrawerTitle.displayName = "DrawerTitle";
24451
- var DrawerDescription = forwardRef26(({ className, ...props }, ref) => /* @__PURE__ */ jsx97(
24567
+ var DrawerDescription = forwardRef26(({ className, ...props }, ref) => /* @__PURE__ */ jsx98(
24452
24568
  DialogPrimitive.Description,
24453
24569
  {
24454
24570
  ref,
@@ -24457,16 +24573,16 @@ var DrawerDescription = forwardRef26(({ className, ...props }, ref) => /* @__PUR
24457
24573
  }
24458
24574
  ));
24459
24575
  DrawerDescription.displayName = "DrawerDescription";
24460
- var DrawerBody = ({ className, ...props }) => /* @__PURE__ */ jsx97("div", { className: cn("flex flex-1 flex-col gap-4 overflow-y-auto", className), ...props });
24576
+ var DrawerBody = ({ className, ...props }) => /* @__PURE__ */ jsx98("div", { className: cn("flex flex-1 flex-col gap-4 overflow-y-auto", className), ...props });
24461
24577
  DrawerBody.displayName = "DrawerBody";
24462
- var DrawerFooter = ({ className, ...props }) => /* @__PURE__ */ jsx97("div", { className: cn("mt-auto flex flex-col gap-2", className), ...props });
24578
+ var DrawerFooter = ({ className, ...props }) => /* @__PURE__ */ jsx98("div", { className: cn("mt-auto flex flex-col gap-2", className), ...props });
24463
24579
  DrawerFooter.displayName = "DrawerFooter";
24464
24580
 
24465
24581
  // src/components/ui/hover-dropdown.tsx
24466
24582
  import { useState as useState46, useRef as useRef34, useCallback as useCallback26 } from "react";
24467
- import { Fragment as Fragment33, jsx as jsx98, jsxs as jsxs75 } from "react/jsx-runtime";
24583
+ import { Fragment as Fragment34, jsx as jsx99, jsxs as jsxs76 } from "react/jsx-runtime";
24468
24584
  function DefaultAnchor({ href, className, children }) {
24469
- return /* @__PURE__ */ jsx98("a", { href, className, children });
24585
+ return /* @__PURE__ */ jsx99("a", { href, className, children });
24470
24586
  }
24471
24587
  function HoverDropdown({
24472
24588
  children,
@@ -24519,24 +24635,24 @@ function HoverDropdown({
24519
24635
  clearTimeout(timeoutRef.current);
24520
24636
  setOpen((prev) => !prev);
24521
24637
  }, []);
24522
- if (items.length === 0) return /* @__PURE__ */ jsx98(Fragment33, { children });
24638
+ if (items.length === 0) return /* @__PURE__ */ jsx99(Fragment34, { children });
24523
24639
  const renderAnchorFn = renderAnchor ?? DefaultAnchor;
24524
- return /* @__PURE__ */ jsxs75("div", { ref: containerRef, className: "relative inline-flex", onMouseEnter: show, onMouseLeave: hide, onClick: toggle, children: [
24640
+ return /* @__PURE__ */ jsxs76("div", { ref: containerRef, className: "relative inline-flex", onMouseEnter: show, onMouseLeave: hide, onClick: toggle, children: [
24525
24641
  children,
24526
- open && /* @__PURE__ */ jsx98(
24642
+ open && /* @__PURE__ */ jsx99(
24527
24643
  "div",
24528
24644
  {
24529
24645
  className: `fixed z-[9999] max-h-[420px] min-w-[220px] max-w-[340px] overflow-y-auto rounded-lg border border-ods-border bg-ods-card p-1 shadow-xl ${className || ""}`,
24530
24646
  ref: panelRef,
24531
24647
  children: items.map((item, i) => {
24532
- const content = /* @__PURE__ */ jsxs75(Fragment33, { children: [
24533
- item.icon && /* @__PURE__ */ jsx98("span", { className: "flex-shrink-0 [&_svg]:size-3.5", children: item.icon }),
24534
- /* @__PURE__ */ jsx98("span", { className: "min-w-0 flex-1 truncate", children: item.label })
24648
+ const content = /* @__PURE__ */ jsxs76(Fragment34, { children: [
24649
+ item.icon && /* @__PURE__ */ jsx99("span", { className: "flex-shrink-0 [&_svg]:size-3.5", children: item.icon }),
24650
+ /* @__PURE__ */ jsx99("span", { className: "min-w-0 flex-1 truncate", children: item.label })
24535
24651
  ] });
24536
24652
  const rowClass = "group flex w-full items-center gap-1.5 pl-2 pr-1 py-1.5 rounded text-h6 text-ods-text-secondary hover:bg-ods-accent/10 transition-colors text-left";
24537
24653
  const primaryClass = "flex flex-1 items-center gap-1.5 min-w-0 hover:text-ods-accent cursor-pointer no-underline";
24538
24654
  const secondaryAction = item.secondaryAction;
24539
- const secondary = secondaryAction ? /* @__PURE__ */ jsx98(
24655
+ const secondary = secondaryAction ? /* @__PURE__ */ jsx99(
24540
24656
  "button",
24541
24657
  {
24542
24658
  onClick: (e) => {
@@ -24551,7 +24667,7 @@ function HoverDropdown({
24551
24667
  }
24552
24668
  ) : null;
24553
24669
  if (item.href) {
24554
- return /* @__PURE__ */ jsxs75("div", { className: rowClass, children: [
24670
+ return /* @__PURE__ */ jsxs76("div", { className: rowClass, children: [
24555
24671
  renderAnchorFn({
24556
24672
  href: item.href,
24557
24673
  targetPlatform: item.targetPlatform,
@@ -24564,13 +24680,13 @@ function HoverDropdown({
24564
24680
  ] }, i);
24565
24681
  }
24566
24682
  if (!item.onClick) {
24567
- return /* @__PURE__ */ jsxs75("div", { className: rowClass, children: [
24568
- /* @__PURE__ */ jsx98("span", { className: `${primaryClass} cursor-default hover:!text-ods-text-secondary`, children: content }),
24683
+ return /* @__PURE__ */ jsxs76("div", { className: rowClass, children: [
24684
+ /* @__PURE__ */ jsx99("span", { className: `${primaryClass} cursor-default hover:!text-ods-text-secondary`, children: content }),
24569
24685
  secondary
24570
24686
  ] }, i);
24571
24687
  }
24572
- return /* @__PURE__ */ jsxs75("div", { className: rowClass, children: [
24573
- /* @__PURE__ */ jsx98("button", { onClick: item.onClick, className: primaryClass, children: content }),
24688
+ return /* @__PURE__ */ jsxs76("div", { className: rowClass, children: [
24689
+ /* @__PURE__ */ jsx99("button", { onClick: item.onClick, className: primaryClass, children: content }),
24574
24690
  secondary
24575
24691
  ] }, i);
24576
24692
  })
@@ -24813,7 +24929,7 @@ function pruneTimestampCache(timestampCache, liveIds) {
24813
24929
  }
24814
24930
 
24815
24931
  // src/components/chat/embeddable-chat.tsx
24816
- import { Fragment as Fragment34, jsx as jsx99, jsxs as jsxs76 } from "react/jsx-runtime";
24932
+ import { Fragment as Fragment35, jsx as jsx100, jsxs as jsxs77 } from "react/jsx-runtime";
24817
24933
  var HISTORY_RAIL_WIDTH = 320;
24818
24934
  var CHAT_BLOCK_MIN_WIDTH = 400;
24819
24935
  var SPLIT_MIN_WIDTH = HISTORY_RAIL_WIDTH + CHAT_BLOCK_MIN_WIDTH;
@@ -24864,7 +24980,7 @@ function RailSlot({
24864
24980
  innerClassName,
24865
24981
  children
24866
24982
  }) {
24867
- return /* @__PURE__ */ jsx99(
24983
+ return /* @__PURE__ */ jsx100(
24868
24984
  "div",
24869
24985
  {
24870
24986
  className: cn(
@@ -24873,7 +24989,7 @@ function RailSlot({
24873
24989
  "shrink-0 overflow-hidden border-r border-ods-border transition-[width,opacity] ease-out",
24874
24990
  active ? "duration-[240ms] w-80 opacity-100" : "duration-[300ms] w-0 opacity-0"
24875
24991
  ),
24876
- children: /* @__PURE__ */ jsx99("div", { className: cn("h-full w-80", innerClassName), children })
24992
+ children: /* @__PURE__ */ jsx100("div", { className: cn("h-full w-80", innerClassName), children })
24877
24993
  }
24878
24994
  );
24879
24995
  }
@@ -24930,7 +25046,7 @@ function SourceChip({
24930
25046
  sourceRowCtxFromRuntime(runtime, { baseRoute, chipBasePlatform })
24931
25047
  );
24932
25048
  const Icon = cta.icon;
24933
- const icon = /* @__PURE__ */ jsx99(Icon, { className: "h-3.5 w-3.5" });
25049
+ const icon = /* @__PURE__ */ jsx100(Icon, { className: "h-3.5 w-3.5" });
24934
25050
  const chipClass = chatChipClass({ tone: "secondary" });
24935
25051
  const decideTab = (href, targetPlatform) => computeIsNewTab(runtime, href, targetPlatform);
24936
25052
  if (src.items && src.items.length > 0) {
@@ -24953,12 +25069,12 @@ function SourceChip({
24953
25069
  // A client-built group keeps each row's own citation number, so the
24954
25070
  // `[3]` in the answer is findable inside the dropdown.
24955
25071
  label: item.index === void 0 ? item.name : `[${item.index}] ${item.name}`,
24956
- icon: /* @__PURE__ */ jsx99(ItemIcon, { className: "h-3.5 w-3.5" }),
25072
+ icon: /* @__PURE__ */ jsx100(ItemIcon, { className: "h-3.5 w-3.5" }),
24957
25073
  href: itemCta.href ?? void 0,
24958
25074
  targetPlatform: itemCta.targetPlatform,
24959
25075
  path: item.path ?? null,
24960
25076
  secondaryAction: onDiscuss && itemCta.askable && itemChatRef ? {
24961
- icon: /* @__PURE__ */ jsx99(MessageSquare3, {}),
25077
+ icon: /* @__PURE__ */ jsx100(MessageSquare3, {}),
24962
25078
  label: `Ask about ${item.name}`,
24963
25079
  onClick: () => onDiscuss(itemChatRef)
24964
25080
  } : void 0
@@ -24966,11 +25082,11 @@ function SourceChip({
24966
25082
  });
24967
25083
  const itemIndices = src.items.flatMap((item) => item.index === void 0 ? [] : [item.index]);
24968
25084
  const groupIndices = itemIndices.length > 0 ? formatCitationIndices(itemIndices) : `${src.index}`;
24969
- return /* @__PURE__ */ jsx99(
25085
+ return /* @__PURE__ */ jsx100(
24970
25086
  HoverDropdown,
24971
25087
  {
24972
25088
  items: dropdownItems,
24973
- renderAnchor: ({ href, targetPlatform, path, className, children }) => /* @__PURE__ */ jsx99(
25089
+ renderAnchor: ({ href, targetPlatform, path, className, children }) => /* @__PURE__ */ jsx100(
24974
25090
  NavLinkAnchorViaRuntime,
24975
25091
  {
24976
25092
  href,
@@ -24980,9 +25096,9 @@ function SourceChip({
24980
25096
  children
24981
25097
  }
24982
25098
  ),
24983
- children: /* @__PURE__ */ jsxs76("span", { className: `${chipClass} cursor-pointer`, children: [
25099
+ children: /* @__PURE__ */ jsxs77("span", { className: `${chipClass} cursor-pointer`, children: [
24984
25100
  icon,
24985
- /* @__PURE__ */ jsxs76("span", { className: "max-w-[160px] truncate", children: [
25101
+ /* @__PURE__ */ jsxs77("span", { className: "max-w-[160px] truncate", children: [
24986
25102
  "[",
24987
25103
  groupIndices,
24988
25104
  "] ",
@@ -24993,18 +25109,18 @@ function SourceChip({
24993
25109
  );
24994
25110
  }
24995
25111
  const displayName = src.name || formatRelativePath(src.path);
24996
- const chipBody = (label) => /* @__PURE__ */ jsxs76(Fragment34, { children: [
25112
+ const chipBody = (label) => /* @__PURE__ */ jsxs77(Fragment35, { children: [
24997
25113
  icon,
24998
- /* @__PURE__ */ jsxs76("span", { className: "max-w-[160px] truncate", children: [
25114
+ /* @__PURE__ */ jsxs77("span", { className: "max-w-[160px] truncate", children: [
24999
25115
  "[",
25000
25116
  src.index,
25001
25117
  "] ",
25002
25118
  label
25003
25119
  ] })
25004
25120
  ] });
25005
- const wrapChip = (clickable) => /* @__PURE__ */ jsxs76("span", { className: "inline-flex items-center", children: [
25121
+ const wrapChip = (clickable) => /* @__PURE__ */ jsxs77("span", { className: "inline-flex items-center", children: [
25006
25122
  clickable,
25007
- /* @__PURE__ */ jsx99(SourceActionButton, { chatRef: cta.chatRef, onDiscuss, density: "inline", className: "-mr-1 ml-1" })
25123
+ /* @__PURE__ */ jsx100(SourceActionButton, { chatRef: cta.chatRef, onDiscuss, density: "inline", className: "-mr-1 ml-1" })
25008
25124
  ] });
25009
25125
  const buildClickHandler = (href, path, targetPlatform, isNewTab) => (e) => {
25010
25126
  const handled = executeNavigation({
@@ -25021,7 +25137,7 @@ function SourceChip({
25021
25137
  const resolvedHref = resolveHrefForRuntime(cta.href, runtime);
25022
25138
  const isNewTab = decideTab(resolvedHref, cta.targetPlatform ?? null);
25023
25139
  return wrapChip(
25024
- /* @__PURE__ */ jsx99(
25140
+ /* @__PURE__ */ jsx100(
25025
25141
  "a",
25026
25142
  {
25027
25143
  href: resolvedHref,
@@ -25037,7 +25153,7 @@ function SourceChip({
25037
25153
  const resolvedHref = resolveHrefForRuntime(cta.href, runtime);
25038
25154
  const isNewTab = decideTab(resolvedHref, cta.targetPlatform ?? null);
25039
25155
  return wrapChip(
25040
- /* @__PURE__ */ jsx99(
25156
+ /* @__PURE__ */ jsx100(
25041
25157
  "a",
25042
25158
  {
25043
25159
  href: resolvedHref,
@@ -25051,7 +25167,7 @@ function SourceChip({
25051
25167
  );
25052
25168
  }
25053
25169
  return wrapChip(
25054
- /* @__PURE__ */ jsx99("span", { className: `${chipClass} cursor-default`, title: displayName, children: chipBody(displayName) })
25170
+ /* @__PURE__ */ jsx100("span", { className: `${chipClass} cursor-default`, title: displayName, children: chipBody(displayName) })
25055
25171
  );
25056
25172
  }
25057
25173
  function SourceChips({
@@ -25066,9 +25182,9 @@ function SourceChips({
25066
25182
  if (cited.length === 0) {
25067
25183
  const fallback = uncited.slice(0, FALLBACK_TOP_RETRIEVED);
25068
25184
  if (fallback.length === 0) return null;
25069
- return /* @__PURE__ */ jsxs76("div", { className: "mt-2 flex flex-col gap-1.5 border-t border-ods-border pt-2", children: [
25070
- /* @__PURE__ */ jsx99("span", { className: "uppercase text-ods-text-muted text-h6", children: "Top retrieved sources" }),
25071
- /* @__PURE__ */ jsx99("div", { className: "flex flex-wrap gap-1.5", children: fallback.map((src) => /* @__PURE__ */ jsx99(
25185
+ return /* @__PURE__ */ jsxs77("div", { className: "mt-2 flex flex-col gap-1.5 border-t border-ods-border pt-2", children: [
25186
+ /* @__PURE__ */ jsx100("span", { className: "uppercase text-ods-text-muted text-h6", children: "Top retrieved sources" }),
25187
+ /* @__PURE__ */ jsx100("div", { className: "flex flex-wrap gap-1.5", children: fallback.map((src) => /* @__PURE__ */ jsx100(
25072
25188
  SourceChip,
25073
25189
  {
25074
25190
  src,
@@ -25083,10 +25199,10 @@ function SourceChips({
25083
25199
  }
25084
25200
  const hiddenCount = uncited.length;
25085
25201
  const hasOverflow = hiddenCount > 0;
25086
- return /* @__PURE__ */ jsxs76("div", { className: "mt-2 flex flex-col gap-1.5 border-t border-ods-border pt-2", children: [
25087
- /* @__PURE__ */ jsx99("span", { className: "uppercase text-ods-text-muted text-h6", children: "Sources" }),
25088
- /* @__PURE__ */ jsxs76("div", { className: `flex flex-wrap gap-1.5 ${expanded ? "max-h-[200px] overflow-y-auto overscroll-contain" : ""}`, children: [
25089
- cited.map((src) => /* @__PURE__ */ jsx99(
25202
+ return /* @__PURE__ */ jsxs77("div", { className: "mt-2 flex flex-col gap-1.5 border-t border-ods-border pt-2", children: [
25203
+ /* @__PURE__ */ jsx100("span", { className: "uppercase text-ods-text-muted text-h6", children: "Sources" }),
25204
+ /* @__PURE__ */ jsxs77("div", { className: `flex flex-wrap gap-1.5 ${expanded ? "max-h-[200px] overflow-y-auto overscroll-contain" : ""}`, children: [
25205
+ cited.map((src) => /* @__PURE__ */ jsx100(
25090
25206
  SourceChip,
25091
25207
  {
25092
25208
  src,
@@ -25097,7 +25213,7 @@ function SourceChips({
25097
25213
  },
25098
25214
  src.index
25099
25215
  )),
25100
- expanded && uncited.map((src) => /* @__PURE__ */ jsx99(
25216
+ expanded && uncited.map((src) => /* @__PURE__ */ jsx100(
25101
25217
  SourceChip,
25102
25218
  {
25103
25219
  src,
@@ -25108,7 +25224,7 @@ function SourceChips({
25108
25224
  },
25109
25225
  src.index
25110
25226
  )),
25111
- hasOverflow && /* @__PURE__ */ jsx99(
25227
+ hasOverflow && /* @__PURE__ */ jsx100(
25112
25228
  "button",
25113
25229
  {
25114
25230
  onClick: () => setExpanded(!expanded),
@@ -25123,7 +25239,7 @@ function SourceChips({
25123
25239
  }
25124
25240
  var EmbeddableChat = React10.forwardRef(
25125
25241
  function EmbeddableChatImpl(props, ref) {
25126
- return /* @__PURE__ */ jsx99(EmbeddableChatInner, { ...props, handleRef: ref });
25242
+ return /* @__PURE__ */ jsx100(EmbeddableChatInner, { ...props, handleRef: ref });
25127
25243
  }
25128
25244
  );
25129
25245
  EmbeddableChat.displayName = "EmbeddableChat";
@@ -25459,7 +25575,7 @@ function EmbeddableChatInner({
25459
25575
  [discussRef, displayRef, resolvedBaseRoute, chipBasePlatform, extras]
25460
25576
  );
25461
25577
  const mingoAssistantIcon = useMemo31(
25462
- () => effectiveAssistantIcon ? /* @__PURE__ */ jsx99(EntityIcon, { icon: effectiveAssistantIcon, size: 24 }) : /* @__PURE__ */ jsx99(MingoIcon, { className: "h-6 w-6", cornerColor: "var(--ods-flamingo-cyan-base)" }),
25578
+ () => effectiveAssistantIcon ? /* @__PURE__ */ jsx100(EntityIcon, { icon: effectiveAssistantIcon, size: 24 }) : /* @__PURE__ */ jsx100(MingoIcon, { className: "h-6 w-6", cornerColor: "var(--ods-flamingo-cyan-base)" }),
25463
25579
  [effectiveAssistantIcon]
25464
25580
  );
25465
25581
  const [timestampCache] = useState48(() => /* @__PURE__ */ new Map());
@@ -25619,7 +25735,7 @@ function EmbeddableChatInner({
25619
25735
  if (chatLoading && index === messages.length - 1) return null;
25620
25736
  const { cited, uncited } = splitCitedSources(message.sources, flattenAssistantContent(message.content));
25621
25737
  if (cited.length === 0 && uncited.length === 0) return null;
25622
- return /* @__PURE__ */ jsx99("div", { className: "pb-2", children: /* @__PURE__ */ jsx99(
25738
+ return /* @__PURE__ */ jsx100("div", { className: "pb-2", children: /* @__PURE__ */ jsx100(
25623
25739
  SourceChips,
25624
25740
  {
25625
25741
  cited,
@@ -25779,13 +25895,13 @@ function EmbeddableChatInner({
25779
25895
  onCopyLink: headerOnCopyLink,
25780
25896
  onOpenArchive: headerOnOpenArchive
25781
25897
  };
25782
- const body = /* @__PURE__ */ jsx99(PortalContainerContext.Provider, { value: portalHost, children: /* @__PURE__ */ jsxs76(CollisionBoundaryContext.Provider, { value: panelBoundary, children: [
25783
- /* @__PURE__ */ jsx99(
25898
+ const body = /* @__PURE__ */ jsx100(PortalContainerContext.Provider, { value: portalHost, children: /* @__PURE__ */ jsxs77(CollisionBoundaryContext.Provider, { value: panelBoundary, children: [
25899
+ /* @__PURE__ */ jsx100(
25784
25900
  "div",
25785
25901
  {
25786
25902
  ref: setPanelNode,
25787
25903
  className: `flex h-full flex-col overflow-hidden transition-colors duration-200 ${archiveOpen && !splitActive || stackedListView ? "bg-ods-card" : "bg-ods-bg"} ${previewMode ? "pointer-events-none select-none" : ""}`,
25788
- children: archiveOpen && !splitActive ? /* @__PURE__ */ jsx99("div", { className: "flex min-h-0 flex-1 flex-col duration-200 animate-in fade-in-0", children: /* @__PURE__ */ jsx99(
25904
+ children: archiveOpen && !splitActive ? /* @__PURE__ */ jsx100("div", { className: "flex min-h-0 flex-1 flex-col duration-200 animate-in fade-in-0", children: /* @__PURE__ */ jsx100(
25789
25905
  ChatArchivePage,
25790
25906
  {
25791
25907
  dialogs: archivedDialogs,
@@ -25799,7 +25915,7 @@ function EmbeddableChatInner({
25799
25915
  void loadArchivedPage(archivedCursor ?? void 0);
25800
25916
  }
25801
25917
  }
25802
- ) }, "archive-view") : /* @__PURE__ */ jsxs76("div", { className: "flex min-h-0 flex-1 flex-col duration-200 animate-in fade-in-0", children: [
25918
+ ) }, "archive-view") : /* @__PURE__ */ jsxs77("div", { className: "flex min-h-0 flex-1 flex-col duration-200 animate-in fade-in-0", children: [
25803
25919
  showWideHeader ? (
25804
25920
  // Wide Mingo header (Figma 113:60931 / 113:63630). Split: a
25805
25921
  // two-cell bar — the "Current Chats" rail header (search /
@@ -25813,47 +25929,47 @@ function EmbeddableChatInner({
25813
25929
  // the viewport `md` breakpoint — otherwise a 720–799px panel on a
25814
25930
  // sub-`md` viewport would split the body yet drop to the mobile
25815
25931
  // single-bar header (no rail search / collapse controls).
25816
- /* @__PURE__ */ jsxs76("div", { className: "flex h-14 w-full flex-shrink-0 overflow-hidden border-b border-ods-border bg-ods-card", children: [
25817
- railPresence.mounted && /* @__PURE__ */ jsx99(RailSlot, { active: railPresence.active, innerClassName: "flex overflow-hidden", children: archiveOpen ? (
25932
+ /* @__PURE__ */ jsxs77("div", { className: "flex h-14 w-full flex-shrink-0 overflow-hidden border-b border-ods-border bg-ods-card", children: [
25933
+ railPresence.mounted && /* @__PURE__ */ jsx100(RailSlot, { active: railPresence.active, innerClassName: "flex overflow-hidden", children: archiveOpen ? (
25818
25934
  // Archive open in the wide layout — the rail header
25819
25935
  // turns into a "Chat Archive" back bar (the list itself
25820
25936
  // renders in the rail below); the chat block is untouched.
25821
25937
  // Back is a full-height leading cell, matching the other
25822
25938
  // header cells (not a small inline chevron).
25823
- /* @__PURE__ */ jsxs76(Fragment34, { children: [
25824
- /* @__PURE__ */ jsx99(ChatHeaderIconButton, { divider: "right", onClick: closeArchive, "aria-label": "Back to chats", children: /* @__PURE__ */ jsx99(Chevron02LeftIcon, { size: 24 }) }),
25825
- /* @__PURE__ */ jsx99("div", { className: "flex min-w-0 flex-1 items-center px-[var(--spacing-system-mf)]", children: /* @__PURE__ */ jsx99("span", { className: "min-w-0 flex-1 truncate text-ods-text-primary text-h3", children: "Chat Archive" }) })
25939
+ /* @__PURE__ */ jsxs77(Fragment35, { children: [
25940
+ /* @__PURE__ */ jsx100(ChatHeaderIconButton, { divider: "right", onClick: closeArchive, "aria-label": "Back to chats", children: /* @__PURE__ */ jsx100(Chevron02LeftIcon, { size: 24 }) }),
25941
+ /* @__PURE__ */ jsx100("div", { className: "flex min-w-0 flex-1 items-center px-[var(--spacing-system-mf)]", children: /* @__PURE__ */ jsx100("span", { className: "min-w-0 flex-1 truncate text-ods-text-primary text-h3", children: "Chat Archive" }) })
25826
25942
  ] })
25827
25943
  ) : (
25828
25944
  // "Current Chats" rail header — title fills, then the
25829
25945
  // search + archive controls. When search is open the
25830
25946
  // inline field takes over the title area in place
25831
25947
  // (Figma 116:51217) and the magnifier toggle is hidden.
25832
- /* @__PURE__ */ jsxs76(Fragment34, { children: [
25833
- railSearchOpen && mingoCaps.onSearchChange ? /* @__PURE__ */ jsx99(
25948
+ /* @__PURE__ */ jsxs77(Fragment35, { children: [
25949
+ railSearchOpen && mingoCaps.onSearchChange ? /* @__PURE__ */ jsx100(
25834
25950
  ChatHeaderSearchField,
25835
25951
  {
25836
25952
  initialValue: mingoCaps.searchQuery,
25837
25953
  onSearchChange: mingoCaps.onSearchChange,
25838
25954
  onCollapse: () => setRailSearchOpen(false)
25839
25955
  }
25840
- ) : /* @__PURE__ */ jsxs76(Fragment34, { children: [
25841
- /* @__PURE__ */ jsx99("div", { className: "flex min-w-0 flex-1 items-center px-[var(--spacing-system-mf)]", children: /* @__PURE__ */ jsx99("span", { className: "min-w-0 flex-1 truncate text-ods-text-primary text-h3", children: "Current Chats" }) }),
25842
- mingoCaps.onSearchChange && /* @__PURE__ */ jsx99(
25956
+ ) : /* @__PURE__ */ jsxs77(Fragment35, { children: [
25957
+ /* @__PURE__ */ jsx100("div", { className: "flex min-w-0 flex-1 items-center px-[var(--spacing-system-mf)]", children: /* @__PURE__ */ jsx100("span", { className: "min-w-0 flex-1 truncate text-ods-text-primary text-h3", children: "Current Chats" }) }),
25958
+ mingoCaps.onSearchChange && /* @__PURE__ */ jsx100(
25843
25959
  ChatHeaderIconButton,
25844
25960
  {
25845
25961
  onClick: () => setRailSearchOpen((o) => !o),
25846
25962
  "aria-label": "Search chats",
25847
25963
  "aria-pressed": railSearchOpen,
25848
- children: /* @__PURE__ */ jsx99(SearchIcon, { size: 24 })
25964
+ children: /* @__PURE__ */ jsx100(SearchIcon, { size: 24 })
25849
25965
  }
25850
25966
  )
25851
25967
  ] }),
25852
- headerOnOpenArchive && /* @__PURE__ */ jsx99(ChatHeaderIconButton, { onClick: headerOnOpenArchive, "aria-label": "Chat archive", children: /* @__PURE__ */ jsx99(ClockHistoryIcon, { size: 24 }) })
25968
+ headerOnOpenArchive && /* @__PURE__ */ jsx100(ChatHeaderIconButton, { onClick: headerOnOpenArchive, "aria-label": "Chat archive", children: /* @__PURE__ */ jsx100(ClockHistoryIcon, { size: 24 }) })
25853
25969
  ] })
25854
25970
  ) }),
25855
- /* @__PURE__ */ jsxs76("div", { className: "flex min-w-0 flex-1", children: [
25856
- /* @__PURE__ */ jsx99(
25971
+ /* @__PURE__ */ jsxs77("div", { className: "flex min-w-0 flex-1", children: [
25972
+ /* @__PURE__ */ jsx100(
25857
25973
  "button",
25858
25974
  {
25859
25975
  type: "button",
@@ -25861,17 +25977,17 @@ function EmbeddableChatInner({
25861
25977
  "aria-label": splitActive ? "Collapse chat list" : "Show chat list",
25862
25978
  "aria-pressed": !splitActive,
25863
25979
  className: "flex size-14 shrink-0 items-center justify-center border-r border-ods-border text-ods-text-secondary transition-colors hover:bg-ods-bg-hover hover:text-ods-text-primary focus:outline-none focus-visible:ring-2 focus-visible:ring-ods-accent",
25864
- children: splitActive ? /* @__PURE__ */ jsx99(Arrow02RightIcon, { size: 24 }) : /* @__PURE__ */ jsx99(Arrow02LeftIcon, { size: 24 })
25980
+ children: splitActive ? /* @__PURE__ */ jsx100(Arrow02RightIcon, { size: 24 }) : /* @__PURE__ */ jsx100(Arrow02LeftIcon, { size: 24 })
25865
25981
  }
25866
25982
  ),
25867
- /* @__PURE__ */ jsxs76("div", { className: "flex min-w-0 flex-1 items-center gap-[var(--spacing-system-m)] px-[var(--spacing-system-mf)] py-[var(--spacing-system-sf)]", children: [
25868
- /* @__PURE__ */ jsxs76("div", { className: "flex min-w-0 flex-col", children: [
25869
- /* @__PURE__ */ jsx99("p", { className: "truncate leading-tight text-ods-text-primary text-h3", children: headerShowBack || isGuideEmpty ? headerTitle : freshConversationTitle }),
25870
- headerPersonName && /* @__PURE__ */ jsx99("p", { className: "truncate leading-tight text-ods-text-secondary text-h6", children: headerPersonName })
25983
+ /* @__PURE__ */ jsxs77("div", { className: "flex min-w-0 flex-1 items-center gap-[var(--spacing-system-m)] px-[var(--spacing-system-mf)] py-[var(--spacing-system-sf)]", children: [
25984
+ /* @__PURE__ */ jsxs77("div", { className: "flex min-w-0 flex-col", children: [
25985
+ /* @__PURE__ */ jsx100("p", { className: "truncate leading-tight text-ods-text-primary text-h3", children: headerShowBack || isGuideEmpty ? headerTitle : freshConversationTitle }),
25986
+ headerPersonName && /* @__PURE__ */ jsx100("p", { className: "truncate leading-tight text-ods-text-secondary text-h6", children: headerPersonName })
25871
25987
  ] }),
25872
25988
  headerAvatar ? (
25873
25989
  // Owner avatar at the title cell's right edge (Figma 113:63273).
25874
- /* @__PURE__ */ jsx99(
25990
+ /* @__PURE__ */ jsx100(
25875
25991
  SquareAvatar,
25876
25992
  {
25877
25993
  variant: "round",
@@ -25886,17 +26002,17 @@ function EmbeddableChatInner({
25886
26002
  )
25887
26003
  ) : null
25888
26004
  ] }),
25889
- isViewingArchived && headerOnRestore && /* @__PURE__ */ jsx99(ChatHeaderIconButton, { onClick: headerOnRestore, "aria-label": "Unarchive chat", children: /* @__PURE__ */ jsx99(Refresh01LeftIcon, { size: 24 }) }),
25890
- headerShowBack && !isViewingArchived && splitHeaderMenuItems.length > 0 && /* @__PURE__ */ jsx99(
26005
+ isViewingArchived && headerOnRestore && /* @__PURE__ */ jsx100(ChatHeaderIconButton, { onClick: headerOnRestore, "aria-label": "Unarchive chat", children: /* @__PURE__ */ jsx100(Refresh01LeftIcon, { size: 24 }) }),
26006
+ headerShowBack && !isViewingArchived && splitHeaderMenuItems.length > 0 && /* @__PURE__ */ jsx100(
25891
26007
  ActionsMenuDropdown,
25892
26008
  {
25893
26009
  triggerAriaLabel: "Chat actions",
25894
26010
  onCloseAutoFocus: (e) => e.preventDefault(),
25895
26011
  groups: [{ items: splitHeaderMenuItems }],
25896
- customTrigger: /* @__PURE__ */ jsx99(ChatHeaderIconButton, { "aria-label": "Chat actions", children: /* @__PURE__ */ jsx99(Ellipsis01Icon, { size: 24 }) })
26012
+ customTrigger: /* @__PURE__ */ jsx100(ChatHeaderIconButton, { "aria-label": "Chat actions", children: /* @__PURE__ */ jsx100(Ellipsis01Icon, { size: 24 }) })
25897
26013
  }
25898
26014
  ),
25899
- /* @__PURE__ */ jsx99(ChatHeaderIconButton, { onClick: handleClose, "aria-label": "Close", children: /* @__PURE__ */ jsx99(XmarkIcon, { size: 24 }) })
26015
+ /* @__PURE__ */ jsx100(ChatHeaderIconButton, { onClick: handleClose, "aria-label": "Close", children: /* @__PURE__ */ jsx100(XmarkIcon, { size: 24 }) })
25900
26016
  ] })
25901
26017
  ] })
25902
26018
  ) : (
@@ -25904,14 +26020,14 @@ function EmbeddableChatInner({
25904
26020
  // guide, resolved into `narrowHeaderProps` above. (Wide layouts,
25905
26021
  // including rail-collapsed, use the wide header above.) Embedded
25906
26022
  // previews (hero demo tabs) force the compact bar via `compact`.
25907
- /* @__PURE__ */ jsx99(ChatPanelHeader, { ...narrowHeaderProps, compact: previewMode })
26023
+ /* @__PURE__ */ jsx100(ChatPanelHeader, { ...narrowHeaderProps, compact: previewMode })
25908
26024
  ),
25909
- activeMode === "guide" && hasMingoMode && /* @__PURE__ */ jsx99(GuideModeBanner, { className: "duration-200 animate-in fade-in-0" }),
25910
- /* @__PURE__ */ jsxs76("div", { className: "flex min-h-0 flex-1 overflow-hidden", children: [
25911
- railPresence.mounted && /* @__PURE__ */ jsx99(RailSlot, { active: railPresence.active, innerClassName: "flex flex-col min-h-0 bg-ods-card", children: archiveOpen ? (
26025
+ activeMode === "guide" && hasMingoMode && /* @__PURE__ */ jsx100(GuideModeBanner, { className: "duration-200 animate-in fade-in-0" }),
26026
+ /* @__PURE__ */ jsxs77("div", { className: "flex min-h-0 flex-1 overflow-hidden", children: [
26027
+ railPresence.mounted && /* @__PURE__ */ jsx100(RailSlot, { active: railPresence.active, innerClassName: "flex flex-col min-h-0 bg-ods-card", children: archiveOpen ? (
25912
26028
  // Archive list inside the rail (header lives in the split
25913
26029
  // header's left cell above). Right chat block stays put.
25914
- /* @__PURE__ */ jsx99(
26030
+ /* @__PURE__ */ jsx100(
25915
26031
  ChatArchivePage,
25916
26032
  {
25917
26033
  embedded: true,
@@ -25925,7 +26041,7 @@ function EmbeddableChatInner({
25925
26041
  }
25926
26042
  }
25927
26043
  )
25928
- ) : /* @__PURE__ */ jsx99(
26044
+ ) : /* @__PURE__ */ jsx100(
25929
26045
  MingoHistoryRail,
25930
26046
  {
25931
26047
  dialogs,
@@ -25949,11 +26065,11 @@ function EmbeddableChatInner({
25949
26065
  onRetry: reloadDialogs
25950
26066
  }
25951
26067
  ) }),
25952
- /* @__PURE__ */ jsx99("div", { className: "flex min-h-0 min-w-0 flex-1 flex-col", children: stackedListView ? (
26068
+ /* @__PURE__ */ jsx100("div", { className: "flex min-h-0 min-w-0 flex-1 flex-col", children: stackedListView ? (
25953
26069
  // Narrow "Current Chats" list (Figma 341:36190) — the default
25954
26070
  // single-column view. No composer here; "Start New Chat" opens
25955
26071
  // the compose view.
25956
- /* @__PURE__ */ jsx99(
26072
+ /* @__PURE__ */ jsx100(
25957
26073
  MingoHistoryRail,
25958
26074
  {
25959
26075
  className: "duration-200 animate-in fade-in-0",
@@ -25978,12 +26094,12 @@ function EmbeddableChatInner({
25978
26094
  onRetry: reloadDialogs
25979
26095
  }
25980
26096
  )
25981
- ) : /* @__PURE__ */ jsxs76(Fragment34, { children: [
25982
- /* @__PURE__ */ jsx99("div", { ref: galleryPanelRef, className: "flex min-h-0 flex-1 flex-col p-[var(--spacing-system-m)]", children: /* @__PURE__ */ jsx99(
26097
+ ) : /* @__PURE__ */ jsxs77(Fragment35, { children: [
26098
+ /* @__PURE__ */ jsx100("div", { ref: galleryPanelRef, className: "flex min-h-0 flex-1 flex-col p-[var(--spacing-system-m)]", children: /* @__PURE__ */ jsx100(
25983
26099
  "div",
25984
26100
  {
25985
26101
  className: "flex min-h-0 flex-1 flex-col duration-200 animate-in fade-in-0",
25986
- children: hasConversation ? /* @__PURE__ */ jsx99("div", { className: "flex min-h-0 flex-1 flex-col", children: messagesInitialLoading ? (
26102
+ children: hasConversation ? /* @__PURE__ */ jsx100("div", { className: "flex min-h-0 flex-1 flex-col", children: messagesInitialLoading ? (
25987
26103
  // Match the real list's `fullWidth` layout so swapping
25988
26104
  // skeleton → bubbles doesn't shift the column. The panel
25989
26105
  // wrapper above already pads (`p-[var(--spacing-system-m)]`),
@@ -25994,8 +26110,8 @@ function EmbeddableChatInner({
25994
26110
  // skeleton overflows a short panel and grows its OWN
25995
26111
  // scrollbar — ugly. `fill` top-anchors + clips overflow so
25996
26112
  // it reads as "the whole panel is loading" and never scrolls.
25997
- /* @__PURE__ */ jsx99(ChatMessageListSkeleton, { fullWidth: true, fill: previewMode, className: "flex-1" })
25998
- ) : /* @__PURE__ */ jsx99(
26113
+ /* @__PURE__ */ jsx100(ChatMessageListSkeleton, { fullWidth: true, fill: previewMode, className: "flex-1" })
26114
+ ) : /* @__PURE__ */ jsx100(
25999
26115
  ChatMessageList,
26000
26116
  {
26001
26117
  messages,
@@ -26025,7 +26141,7 @@ function EmbeddableChatInner({
26025
26141
  centred greeting + capability grid + Guide-chat promo +
26026
26142
  quick-action chips. Guide mode keeps the slash-command
26027
26143
  onboarding list below. */
26028
- /* @__PURE__ */ jsx99(
26144
+ /* @__PURE__ */ jsx100(
26029
26145
  MingoWelcome,
26030
26146
  {
26031
26147
  onStartGuideChat: effectiveModes.guide ? () => handleActiveModeChange("guide") : void 0,
@@ -26040,7 +26156,7 @@ function EmbeddableChatInner({
26040
26156
  /* Figma node 7532:328214 — Guide-mode empty state: greeting
26041
26157
  + slash-command onboarding list share one scroll region,
26042
26158
  with a pinned quick-action chip row above the composer. */
26043
- /* @__PURE__ */ jsx99(
26159
+ /* @__PURE__ */ jsx100(
26044
26160
  GuideWelcome,
26045
26161
  {
26046
26162
  subtitle: effectiveGreeting ?? void 0,
@@ -26056,8 +26172,8 @@ function EmbeddableChatInner({
26056
26172
  onQuickActionHover: (action) => setQuickActionPreview(action.prompt ?? action.label),
26057
26173
  onQuickActionHoverEnd: () => setQuickActionPreview(null),
26058
26174
  agentSlug: activeAgentSlug,
26059
- children: (chipCommands.length > 0 || !commandsLoaded) && /* @__PURE__ */ jsxs76("div", { className: "shrink-0 overflow-hidden rounded-md border border-ods-border", children: [
26060
- !commandsLoaded && chipCommands.length === 0 && SKELETON_ROW_VARIANTS.map((variant, i) => /* @__PURE__ */ jsx99(
26175
+ children: (chipCommands.length > 0 || !commandsLoaded) && /* @__PURE__ */ jsxs77("div", { className: "shrink-0 overflow-hidden rounded-md border border-ods-border", children: [
26176
+ !commandsLoaded && chipCommands.length === 0 && SKELETON_ROW_VARIANTS.map((variant, i) => /* @__PURE__ */ jsx100(
26061
26177
  MingoOnboardingCardSkeleton,
26062
26178
  {
26063
26179
  titleWidth: variant.titleWidth,
@@ -26075,10 +26191,10 @@ function EmbeddableChatInner({
26075
26191
  label: action.label,
26076
26192
  onClick: () => dispatchSlashCommandAction(action.id, cmdId, chatInputRef)
26077
26193
  }));
26078
- return /* @__PURE__ */ jsx99(
26194
+ return /* @__PURE__ */ jsx100(
26079
26195
  MingoOnboardingCard,
26080
26196
  {
26081
- icon: /* @__PURE__ */ jsx99(Icon, { size: 16 }),
26197
+ icon: /* @__PURE__ */ jsx100(Icon, { size: 16 }),
26082
26198
  title: label,
26083
26199
  slashCommand: `/${cmdId}`,
26084
26200
  description: cmd.description,
@@ -26094,7 +26210,7 @@ function EmbeddableChatInner({
26094
26210
  },
26095
26211
  contentViewKey
26096
26212
  ) }),
26097
- /* @__PURE__ */ jsx99(
26213
+ /* @__PURE__ */ jsx100(
26098
26214
  ChatAttachmentChipStrip,
26099
26215
  {
26100
26216
  attachments: stagedAttachments,
@@ -26102,7 +26218,7 @@ function EmbeddableChatInner({
26102
26218
  disabled: chatLoading
26103
26219
  }
26104
26220
  ),
26105
- /* @__PURE__ */ jsx99(
26221
+ /* @__PURE__ */ jsx100(
26106
26222
  ChatComposer,
26107
26223
  {
26108
26224
  archived: isViewingArchived,
@@ -26149,7 +26265,7 @@ function EmbeddableChatInner({
26149
26265
  }
26150
26266
  ),
26151
26267
  galleryModal,
26152
- /* @__PURE__ */ jsx99(
26268
+ /* @__PURE__ */ jsx100(
26153
26269
  ChatDialogModals,
26154
26270
  {
26155
26271
  renameTarget,
@@ -26163,15 +26279,15 @@ function EmbeddableChatInner({
26163
26279
  onConfirmRestore: handleConfirmRestore
26164
26280
  }
26165
26281
  ),
26166
- /* @__PURE__ */ jsx99("div", { ref: setPortalHost, style: { display: "contents" } })
26282
+ /* @__PURE__ */ jsx100("div", { ref: setPortalHost, style: { display: "contents" } })
26167
26283
  ] }) });
26168
- const panel = shellLess ? /* @__PURE__ */ jsxs76(ChatPanelContext.Provider, { value: chatPanelHandle, children: [
26169
- /* @__PURE__ */ jsx99(VisuallyHidden, { children: /* @__PURE__ */ jsxs76(DialogPrimitive2.Title, { children: [
26284
+ const panel = shellLess ? /* @__PURE__ */ jsxs77(ChatPanelContext.Provider, { value: chatPanelHandle, children: [
26285
+ /* @__PURE__ */ jsx100(VisuallyHidden, { children: /* @__PURE__ */ jsxs77(DialogPrimitive2.Title, { children: [
26170
26286
  sourceLabel,
26171
26287
  " AI Assistant"
26172
26288
  ] }) }),
26173
26289
  body
26174
- ] }) : /* @__PURE__ */ jsx99(Drawer, { open: isOpen, onOpenChange: (o) => !o && handleClose(), children: /* @__PURE__ */ jsx99(ChatPanelContext.Provider, { value: chatPanelHandle, children: /* @__PURE__ */ jsxs76(
26290
+ ] }) : /* @__PURE__ */ jsx100(Drawer, { open: isOpen, onOpenChange: (o) => !o && handleClose(), children: /* @__PURE__ */ jsx100(ChatPanelContext.Provider, { value: chatPanelHandle, children: /* @__PURE__ */ jsxs77(
26175
26291
  DrawerContent,
26176
26292
  {
26177
26293
  side: "right",
@@ -26186,7 +26302,7 @@ function EmbeddableChatInner({
26186
26302
  "aria-describedby": void 0,
26187
26303
  className: "mingo-chat-content w-screen !bg-ods-bg shadow-2xl focus:outline-none focus-visible:outline-none md:w-auto",
26188
26304
  children: [
26189
- /* @__PURE__ */ jsx99(VisuallyHidden, { children: /* @__PURE__ */ jsxs76(DialogPrimitive2.Title, { children: [
26305
+ /* @__PURE__ */ jsx100(VisuallyHidden, { children: /* @__PURE__ */ jsxs77(DialogPrimitive2.Title, { children: [
26190
26306
  sourceLabel,
26191
26307
  " AI Assistant"
26192
26308
  ] }) }),
@@ -26194,17 +26310,17 @@ function EmbeddableChatInner({
26194
26310
  ]
26195
26311
  }
26196
26312
  ) }) });
26197
- return /* @__PURE__ */ jsxs76(Fragment34, { children: [
26198
- showInternalTrigger && !shellLess && /* @__PURE__ */ jsx99(
26313
+ return /* @__PURE__ */ jsxs77(Fragment35, { children: [
26314
+ showInternalTrigger && !shellLess && /* @__PURE__ */ jsx100(
26199
26315
  "div",
26200
26316
  {
26201
26317
  "aria-hidden": isOpen,
26202
26318
  className: `pointer-events-none sticky bottom-0 z-[9990] h-0 ${isOpen ? "opacity-0" : "opacity-100"}`,
26203
- children: /* @__PURE__ */ jsx99("div", { className: "absolute bottom-4 right-4 md:bottom-6 md:right-6", children: /* @__PURE__ */ jsx99(
26319
+ children: /* @__PURE__ */ jsx100("div", { className: "absolute bottom-4 right-4 md:bottom-6 md:right-6", children: /* @__PURE__ */ jsx100(
26204
26320
  Button,
26205
26321
  {
26206
26322
  onClick: handleOpen,
26207
- leftIcon: /* @__PURE__ */ jsx99(MingoIcon, { className: "h-5 w-5", color: "currentColor" }),
26323
+ leftIcon: /* @__PURE__ */ jsx100(MingoIcon, { className: "h-5 w-5", color: "currentColor" }),
26208
26324
  tabIndex: isOpen ? -1 : 0,
26209
26325
  className: `pointer-events-auto !w-auto shadow-lg ${isOpen ? "!pointer-events-none" : ""}`,
26210
26326
  children: "Ask AI"
@@ -26484,6 +26600,15 @@ export {
26484
26600
  VideoBiteCard,
26485
26601
  EntityVideoSection,
26486
26602
  ChatVideoEntityCard,
26603
+ DESIGN_DOC_READINESS,
26604
+ DESIGN_DOC_READINESS_DISPLAY,
26605
+ designDocReadiness,
26606
+ formatCompletionLabel,
26607
+ formatCompletionLabelWithBlockers,
26608
+ designDocPeople,
26609
+ designDocMetaLine,
26610
+ DesignDocCardSkeleton,
26611
+ DesignDocCard,
26487
26612
  GitHubActivityCard,
26488
26613
  GitHubActivityCardSkeleton,
26489
26614
  SlackMessageCard,
@@ -26609,4 +26734,4 @@ export {
26609
26734
  buildStreamFrames,
26610
26735
  EmbeddableChat
26611
26736
  };
26612
- //# sourceMappingURL=chunk-IJPV7OMA.js.map
26737
+ //# sourceMappingURL=chunk-EHB5LETA.js.map