@flamingo-stack/openframe-frontend-core 0.0.669 → 0.0.670-2401.7221.1

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