@flamingo-stack/openframe-frontend-core 0.0.207 → 0.0.208-snapshot.20260526233118

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. package/dist/{chunk-Z3GQGR5E.js → chunk-4TD7MDHA.js} +3178 -2088
  2. package/dist/chunk-4TD7MDHA.js.map +1 -0
  3. package/dist/chunk-4XLJWX2N.js +12 -0
  4. package/dist/chunk-4XLJWX2N.js.map +1 -0
  5. package/dist/chunk-VFKQMAUF.cjs +12 -0
  6. package/dist/chunk-VFKQMAUF.cjs.map +1 -0
  7. package/dist/{chunk-APM6KBPU.cjs → chunk-ZRSOPDAV.cjs} +1664 -574
  8. package/dist/chunk-ZRSOPDAV.cjs.map +1 -0
  9. package/dist/components/chat/embeddable-chat.d.ts +35 -2
  10. package/dist/components/chat/embeddable-chat.d.ts.map +1 -1
  11. package/dist/components/chat/entity-cards/case-study-card.d.ts.map +1 -1
  12. package/dist/components/chat/entity-cards/customer-interview-card.d.ts.map +1 -1
  13. package/dist/components/chat/entity-cards/dispatch.d.ts +9 -0
  14. package/dist/components/chat/entity-cards/dispatch.d.ts.map +1 -1
  15. package/dist/components/chat/hooks/index.d.ts +3 -0
  16. package/dist/components/chat/hooks/index.d.ts.map +1 -1
  17. package/dist/components/chat/hooks/use-embedded-chat.d.ts +10 -169
  18. package/dist/components/chat/hooks/use-embedded-chat.d.ts.map +1 -1
  19. package/dist/components/chat/hooks/use-nats-chat-adapter.d.ts +85 -0
  20. package/dist/components/chat/hooks/use-nats-chat-adapter.d.ts.map +1 -0
  21. package/dist/components/chat/hooks/use-sse-chat-adapter.d.ts +124 -0
  22. package/dist/components/chat/hooks/use-sse-chat-adapter.d.ts.map +1 -0
  23. package/dist/components/chat/hooks/use-unified-chat.d.ts +33 -0
  24. package/dist/components/chat/hooks/use-unified-chat.d.ts.map +1 -0
  25. package/dist/components/chat/index.cjs +8 -2
  26. package/dist/components/chat/index.cjs.map +1 -1
  27. package/dist/components/chat/index.js +11 -5
  28. package/dist/components/chat/types/index.d.ts +1 -0
  29. package/dist/components/chat/types/index.d.ts.map +1 -1
  30. package/dist/components/chat/types/unified-chat-state.types.d.ts +185 -0
  31. package/dist/components/chat/types/unified-chat-state.types.d.ts.map +1 -0
  32. package/dist/components/features/index.cjs +3 -2
  33. package/dist/components/features/index.cjs.map +1 -1
  34. package/dist/components/features/index.js +2 -1
  35. package/dist/components/index.cjs +26 -2
  36. package/dist/components/index.cjs.map +1 -1
  37. package/dist/components/index.d.ts +4 -0
  38. package/dist/components/index.d.ts.map +1 -1
  39. package/dist/components/index.js +27 -3
  40. package/dist/components/loading/unified-skeleton.d.ts +2 -1
  41. package/dist/components/loading/unified-skeleton.d.ts.map +1 -1
  42. package/dist/components/navigation/index.cjs +3 -2
  43. package/dist/components/navigation/index.cjs.map +1 -1
  44. package/dist/components/navigation/index.js +2 -1
  45. package/dist/components/shared/delivery/delivery-lists.d.ts +16 -0
  46. package/dist/components/shared/delivery/delivery-lists.d.ts.map +1 -0
  47. package/dist/components/shared/delivery/delivery-table.d.ts +12 -0
  48. package/dist/components/shared/delivery/delivery-table.d.ts.map +1 -0
  49. package/dist/components/shared/delivery/index.d.ts +3 -0
  50. package/dist/components/shared/delivery/index.d.ts.map +1 -0
  51. package/dist/components/shared/dev-section/dev-section-page.d.ts +31 -0
  52. package/dist/components/shared/dev-section/dev-section-page.d.ts.map +1 -0
  53. package/dist/components/shared/dev-section/dev-section-view.d.ts +34 -0
  54. package/dist/components/shared/dev-section/dev-section-view.d.ts.map +1 -0
  55. package/dist/components/shared/dev-section/index.d.ts +3 -0
  56. package/dist/components/shared/dev-section/index.d.ts.map +1 -0
  57. package/dist/components/shared/legal-document/index.d.ts +10 -0
  58. package/dist/components/shared/legal-document/index.d.ts.map +1 -0
  59. package/dist/components/shared/legal-document/legal-document-page.d.ts +66 -0
  60. package/dist/components/shared/legal-document/legal-document-page.d.ts.map +1 -0
  61. package/dist/components/shared/legal-document/use-legal-docs.d.ts +40 -0
  62. package/dist/components/shared/legal-document/use-legal-docs.d.ts.map +1 -0
  63. package/dist/components/shared/product-release/index.d.ts +2 -1
  64. package/dist/components/shared/product-release/index.d.ts.map +1 -1
  65. package/dist/components/shared/product-release/release-detail-page.d.ts +11 -7
  66. package/dist/components/shared/product-release/release-detail-page.d.ts.map +1 -1
  67. package/dist/components/shared/roadmap/index.d.ts +18 -0
  68. package/dist/components/shared/roadmap/index.d.ts.map +1 -0
  69. package/dist/components/shared/roadmap/roadmap-grid-skeleton.d.ts +24 -0
  70. package/dist/components/shared/roadmap/roadmap-grid-skeleton.d.ts.map +1 -0
  71. package/dist/components/shared/roadmap/roadmap-grid.d.ts +18 -0
  72. package/dist/components/shared/roadmap/roadmap-grid.d.ts.map +1 -0
  73. package/dist/components/shared/roadmap/use-roadmap-voting.d.ts +25 -0
  74. package/dist/components/shared/roadmap/use-roadmap-voting.d.ts.map +1 -0
  75. package/dist/components/ui/index.cjs +8 -2
  76. package/dist/components/ui/index.cjs.map +1 -1
  77. package/dist/components/ui/index.js +11 -5
  78. package/dist/components/ui/release-changelog-section.d.ts +13 -2
  79. package/dist/components/ui/release-changelog-section.d.ts.map +1 -1
  80. package/dist/embed-shims/index.cjs +1 -6
  81. package/dist/embed-shims/index.cjs.map +1 -1
  82. package/dist/embed-shims/index.js +1 -6
  83. package/dist/embed-shims/index.js.map +1 -1
  84. package/dist/index.cjs +18 -2
  85. package/dist/index.cjs.map +1 -1
  86. package/dist/index.js +19 -3
  87. package/dist/types/delivery.d.ts +49 -0
  88. package/dist/types/delivery.d.ts.map +1 -0
  89. package/dist/types/index.cjs +13 -0
  90. package/dist/types/index.cjs.map +1 -1
  91. package/dist/types/index.d.ts +1 -0
  92. package/dist/types/index.d.ts.map +1 -1
  93. package/dist/types/index.js +12 -1
  94. package/dist/types/index.js.map +1 -1
  95. package/dist/utils/dev-sections/index.d.ts +11 -0
  96. package/dist/utils/dev-sections/index.d.ts.map +1 -0
  97. package/dist/utils/dev-sections/openframe-dev-sections.d.ts +209 -0
  98. package/dist/utils/dev-sections/openframe-dev-sections.d.ts.map +1 -0
  99. package/dist/utils/index.cjs +82 -0
  100. package/dist/utils/index.cjs.map +1 -1
  101. package/dist/utils/index.d.ts +1 -0
  102. package/dist/utils/index.d.ts.map +1 -1
  103. package/dist/utils/index.js +81 -2
  104. package/dist/utils/index.js.map +1 -1
  105. package/package.json +1 -1
  106. package/src/components/chat/embeddable-chat.tsx +123 -8
  107. package/src/components/chat/entity-cards/blog-card.tsx +2 -2
  108. package/src/components/chat/entity-cards/case-study-card.tsx +9 -2
  109. package/src/components/chat/entity-cards/customer-interview-card.tsx +6 -2
  110. package/src/components/chat/entity-cards/dispatch.tsx +14 -0
  111. package/src/components/chat/entity-cards/investor-update-card.tsx +1 -1
  112. package/src/components/chat/entity-cards/onboarding-guide-card.tsx +2 -2
  113. package/src/components/chat/hooks/index.ts +9 -2
  114. package/src/components/chat/hooks/use-embedded-chat.ts +18 -1016
  115. package/src/components/chat/hooks/use-nats-chat-adapter.ts +372 -0
  116. package/src/components/chat/hooks/use-sse-chat-adapter.ts +1058 -0
  117. package/src/components/chat/hooks/use-unified-chat.ts +171 -0
  118. package/src/components/chat/types/index.ts +1 -0
  119. package/src/components/chat/types/unified-chat-state.types.ts +215 -0
  120. package/src/components/index.ts +8 -0
  121. package/src/components/loading/card-skeleton.tsx +2 -2
  122. package/src/components/loading/unified-skeleton.tsx +6 -5
  123. package/src/components/shared/delivery/delivery-lists.tsx +199 -0
  124. package/src/components/shared/delivery/delivery-table.tsx +174 -0
  125. package/src/components/shared/delivery/index.ts +9 -0
  126. package/src/components/shared/dev-section/dev-section-page.tsx +72 -0
  127. package/src/components/shared/dev-section/dev-section-view.tsx +129 -0
  128. package/src/components/shared/dev-section/index.ts +2 -0
  129. package/src/components/shared/legal-document/index.ts +19 -0
  130. package/src/components/shared/legal-document/legal-document-page.tsx +178 -0
  131. package/src/components/shared/legal-document/use-legal-docs.ts +123 -0
  132. package/src/components/shared/product-release/index.ts +14 -3
  133. package/src/components/shared/product-release/product-release-card-skeleton.tsx +1 -1
  134. package/src/components/shared/product-release/product-release-card.tsx +1 -1
  135. package/src/components/shared/product-release/release-detail-page.tsx +45 -7
  136. package/src/components/shared/roadmap/index.ts +23 -0
  137. package/src/components/shared/roadmap/roadmap-grid-skeleton.tsx +74 -0
  138. package/src/components/shared/roadmap/roadmap-grid.tsx +106 -0
  139. package/src/components/shared/roadmap/use-roadmap-voting.ts +163 -0
  140. package/src/components/ui/release-changelog-section.tsx +113 -32
  141. package/src/stories/EmbeddableChat.stories.tsx +186 -0
  142. package/src/types/delivery.ts +54 -0
  143. package/src/types/index.ts +1 -0
  144. package/src/utils/dev-sections/index.ts +17 -0
  145. package/src/utils/dev-sections/openframe-dev-sections.ts +148 -0
  146. package/src/utils/index.ts +6 -1
  147. package/dist/chunk-APM6KBPU.cjs.map +0 -1
  148. package/dist/chunk-Z3GQGR5E.js.map +0 -1
@@ -6213,7 +6213,7 @@ function ProductReleaseCard({
6213
6213
  );
6214
6214
  const innerLayout = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
6215
6215
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col md:flex-row gap-4 md:gap-6", children: [
6216
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full md:w-[256px] flex-shrink-0", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "relative rounded-lg overflow-hidden w-full aspect-[16/9] bg-ods-bg", children: [
6216
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full md:w-[256px] flex-shrink-0", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "relative rounded-lg overflow-hidden w-full aspect-[1200/630] bg-ods-bg", children: [
6217
6217
  coverImage ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
6218
6218
  _chunkXL4V2PYGcjs.next_image_default,
6219
6219
  {
@@ -6427,7 +6427,7 @@ function ProductReleaseCardSkeleton({ className, size = "lg" }) {
6427
6427
  ),
6428
6428
  children: [
6429
6429
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col md:flex-row gap-4 md:gap-6", children: [
6430
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full md:w-[256px] aspect-[16/9] bg-ods-border rounded-lg flex-shrink-0" }),
6430
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full md:w-[256px] aspect-[1200/630] bg-ods-border rounded-lg flex-shrink-0" }),
6431
6431
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-1 min-w-0 flex flex-col", children: [
6432
6432
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex items-center gap-3 mb-3", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-7 w-20 bg-ods-border rounded" }) }),
6433
6433
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "min-h-[60px] md:min-h-[72px] flex flex-col gap-1.5 justify-start mb-3", children: [
@@ -6544,7 +6544,7 @@ function BlogCardSkeleton({ size = "default" }) {
6544
6544
  ] });
6545
6545
  }
6546
6546
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "article", { className: "group bg-ods-card border border-ods-border rounded-lg overflow-hidden h-full flex flex-col animate-pulse", children: [
6547
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "aspect-[16/9] bg-ods-bg" }),
6547
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "aspect-[1200/630] bg-ods-bg" }),
6548
6548
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "p-4 flex flex-col flex-grow space-y-3", children: [
6549
6549
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-5 w-3/4 bg-ods-bg rounded" }),
6550
6550
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-5 w-1/2 bg-ods-bg rounded" }),
@@ -6632,7 +6632,7 @@ function BlogCard({
6632
6632
  className: "flex flex-col h-full focus:outline-none",
6633
6633
  "aria-label": `Read article: ${post.title}`,
6634
6634
  children: [
6635
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "relative w-full aspect-[16/9] overflow-hidden bg-ods-bg", children: displayImage ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
6635
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "relative w-full aspect-[1200/630] overflow-hidden bg-ods-bg", children: displayImage ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
6636
6636
  _chunkXL4V2PYGcjs.next_image_default,
6637
6637
  {
6638
6638
  src: displayImage,
@@ -6723,7 +6723,7 @@ function CaseStudyCardSkeleton({ size = "default" }) {
6723
6723
  ] });
6724
6724
  }
6725
6725
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "bg-ods-card border border-ods-border rounded-lg overflow-hidden p-6 flex flex-col gap-6 animate-pulse", children: [
6726
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[200px] w-full rounded-sm bg-ods-bg" }),
6726
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full aspect-[1200/630] rounded-sm bg-ods-bg" }),
6727
6727
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "h-[72px] flex flex-col gap-2", children: [
6728
6728
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-5 w-3/4 bg-ods-bg rounded" }),
6729
6729
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-5 w-1/2 bg-ods-bg rounded" })
@@ -6758,7 +6758,7 @@ function CaseStudyCard({ study, href, target, rel, placeholderUrl, size = "defau
6758
6758
  ] });
6759
6759
  }
6760
6760
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "a", { href, target, rel, className: _chunk664KA5FIcjs.cn.call(void 0, "block h-full", className), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, Card, { className: "bg-ods-card border border-ods-border hover:border-ods-accent transition-colors p-6 flex flex-col gap-6 overflow-hidden", children: [
6761
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "relative h-[200px] w-full rounded-sm overflow-hidden bg-ods-bg shrink-0", children: coverImage && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
6761
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "relative w-full aspect-[1200/630] rounded-sm overflow-hidden bg-ods-bg shrink-0", children: coverImage && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
6762
6762
  _chunkXL4V2PYGcjs.next_image_default,
6763
6763
  {
6764
6764
  src: coverImage,
@@ -6830,7 +6830,7 @@ function CustomerInterviewCardSkeleton({ size = "default" }) {
6830
6830
  ] });
6831
6831
  }
6832
6832
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "bg-ods-card border border-ods-border rounded-lg overflow-hidden p-6 flex flex-col gap-6 animate-pulse", children: [
6833
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[200px] w-full rounded-sm bg-ods-bg" }),
6833
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full aspect-[1200/630] rounded-sm bg-ods-bg" }),
6834
6834
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-2", children: [
6835
6835
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-5 w-3/4 bg-ods-bg rounded" }),
6836
6836
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-5 w-1/2 bg-ods-bg rounded" })
@@ -6873,7 +6873,7 @@ function CustomerInterviewCard({ interview, href, target, rel, placeholderUrl, s
6873
6873
  ] });
6874
6874
  }
6875
6875
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "a", { href, target, rel, className: _chunk664KA5FIcjs.cn.call(void 0, "block h-full", className), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, Card, { className: "bg-ods-card border border-ods-border hover:border-ods-accent transition-colors p-6 flex flex-col gap-6 overflow-hidden", children: [
6876
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[200px] w-full rounded-sm overflow-hidden bg-ods-bg shrink-0 relative", children: thumbnailUrl ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
6876
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full aspect-[1200/630] rounded-sm overflow-hidden bg-ods-bg shrink-0 relative", children: thumbnailUrl ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
6877
6877
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
6878
6878
  "img",
6879
6879
  {
@@ -6952,7 +6952,7 @@ function InvestorUpdateCardSkeleton({ size = "default" }) {
6952
6952
  ] });
6953
6953
  }
6954
6954
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "bg-ods-card border border-ods-border rounded-lg overflow-hidden h-full animate-pulse", children: [
6955
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "aspect-[16/9] bg-ods-bg" }),
6955
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "aspect-[1200/630] bg-ods-bg" }),
6956
6956
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "p-4 space-y-3", children: [
6957
6957
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-5 w-3/4 bg-ods-bg rounded" }),
6958
6958
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-3 w-full bg-ods-bg/60 rounded" }),
@@ -7026,7 +7026,7 @@ function OnboardingGuideCardSkeleton({ size = "default" }) {
7026
7026
  if (size === "catalog") {
7027
7027
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "bg-ods-system-greys-black border border-ods-border rounded-lg overflow-hidden flex flex-col p-6 gap-4 animate-pulse", children: [
7028
7028
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col md:flex-row gap-4 md:gap-6", children: [
7029
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full md:w-[256px] aspect-[16/9] bg-ods-border rounded-lg flex-shrink-0" }),
7029
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full md:w-[256px] aspect-[1200/630] bg-ods-border rounded-lg flex-shrink-0" }),
7030
7030
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-1 min-w-0 flex flex-col", children: [
7031
7031
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "min-h-[60px] md:min-h-[72px] flex flex-col gap-1.5 justify-start mb-3", children: [
7032
7032
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[25px] md:h-[30px] w-3/4 bg-ods-border rounded" }),
@@ -7110,7 +7110,7 @@ function OnboardingGuideCard({ guide, href, target, rel, placeholderUrl, size =
7110
7110
  "aria-label": `Open ${guide.title}`,
7111
7111
  children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col p-6 gap-4", children: [
7112
7112
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col md:flex-row gap-4 md:gap-6", children: [
7113
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full md:w-[256px] flex-shrink-0", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "relative rounded-lg overflow-hidden w-full aspect-[16/9] bg-ods-bg", children: [
7113
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full md:w-[256px] flex-shrink-0", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "relative rounded-lg overflow-hidden w-full aspect-[1200/630] bg-ods-bg", children: [
7114
7114
  coverImage ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
7115
7115
  _chunkXL4V2PYGcjs.next_image_default,
7116
7116
  {
@@ -10263,6 +10263,159 @@ function clickupTaskUrl(externalId) {
10263
10263
  return `${CLICKUP_APP_BASE}/t/${externalId}`;
10264
10264
  }
10265
10265
 
10266
+ // src/utils/dev-sections/openframe-dev-sections.ts
10267
+
10268
+
10269
+ // src/types/announcement.ts
10270
+ var AVAILABLE_SVG_ICONS = [
10271
+ // OpenFrame Logo Options
10272
+ { name: "openframe-logo", label: "OpenFrame Logo", component: null },
10273
+ // Platform Logos
10274
+ { name: "openmsp-logo", label: "OpenMSP Logo", component: null },
10275
+ { name: "flamingo-logo", label: "Flamingo Logo", component: null },
10276
+ // Lucide Icons
10277
+ { name: "megaphone", label: "Megaphone", component: null },
10278
+ { name: "bell", label: "Bell", component: null },
10279
+ { name: "info", label: "Information", component: null },
10280
+ { name: "star", label: "Star", component: null },
10281
+ { name: "rocket", label: "Rocket", component: null },
10282
+ { name: "package", label: "Package", component: null }
10283
+ ];
10284
+
10285
+ // src/types/product-release.ts
10286
+ var releaseTypeOptions = [
10287
+ { value: "major", label: "Major Release", description: "Breaking changes, new architecture", color: "red" },
10288
+ { value: "minor", label: "Minor Release", description: "New features, backward compatible", color: "blue" },
10289
+ { value: "patch", label: "Patch Release", description: "Bug fixes only", color: "green" },
10290
+ { value: "beta", label: "Beta Release", description: "Pre-release testing version", color: "yellow" },
10291
+ { value: "alpha", label: "Alpha Release", description: "Early testing version", color: "orange" }
10292
+ ];
10293
+ var releaseStatusOptions = [
10294
+ { value: "alpha", label: "Alpha", description: "Early development, unstable", color: "orange" },
10295
+ { value: "beta", label: "Beta", description: "Feature complete, testing", color: "yellow" },
10296
+ { value: "stable", label: "Stable", description: "Production ready", color: "green" },
10297
+ { value: "deprecated", label: "Deprecated", description: "No longer supported", color: "gray" }
10298
+ ];
10299
+ var changelogLabels = {
10300
+ features_added: "Features Added",
10301
+ bugs_fixed: "Bugs Fixed",
10302
+ improvements: "Improvements",
10303
+ breaking_changes: "Breaking Changes"
10304
+ };
10305
+ var SEMVER_REGEX = /^\d+\.\d+\.\d+(-[a-zA-Z0-9.-]+)?(\+[a-zA-Z0-9.-]+)?$/;
10306
+
10307
+ // src/types/delivery.ts
10308
+ var TASK_TYPE_LABELS = {
10309
+ Request: "ENHANCEMENT",
10310
+ Bug: "BUG-FIX"
10311
+ };
10312
+ var TASK_TYPE_TEXT_COLORS = {
10313
+ Request: "",
10314
+ // Default white/grey
10315
+ Bug: "text-[var(--ods-attention-red-error)]"
10316
+ };
10317
+
10318
+ // src/types/tmcg.ts
10319
+ var TMCG_ROLES = {
10320
+ FOUNDER: "founder",
10321
+ ORGANIZER: "organizer",
10322
+ MEMBER: "member",
10323
+ CONTRIBUTOR: "contributor",
10324
+ SPEAKER: "speaker",
10325
+ MENTOR: "mentor"
10326
+ };
10327
+ var TMCG_ROLE_DISPLAY_NAMES = {
10328
+ [TMCG_ROLES.FOUNDER]: "Founder",
10329
+ [TMCG_ROLES.ORGANIZER]: "Organizer",
10330
+ [TMCG_ROLES.MEMBER]: "Member",
10331
+ [TMCG_ROLES.CONTRIBUTOR]: "Contributor",
10332
+ [TMCG_ROLES.SPEAKER]: "Speaker",
10333
+ [TMCG_ROLES.MENTOR]: "Mentor"
10334
+ };
10335
+ var TMCG_SOCIAL_PLATFORMS = {
10336
+ linkedin: "LinkedIn",
10337
+ twitter: "Twitter",
10338
+ github: "GitHub",
10339
+ website: "Website",
10340
+ youtube: "YouTube",
10341
+ instagram: "Instagram",
10342
+ facebook: "Facebook",
10343
+ discord: "Discord",
10344
+ telegram: "Telegram",
10345
+ slack: "Slack"
10346
+ };
10347
+
10348
+ // src/utils/dev-sections/openframe-dev-sections.ts
10349
+ var ROADMAP_STATUS_OPTIONS = [
10350
+ { value: "all", label: "All" },
10351
+ { value: "completed", label: "Completed" },
10352
+ { value: "in_progress", label: "In Progress" }
10353
+ ];
10354
+ var DELIVERY_TASK_TYPE_OPTIONS = [
10355
+ { value: "all", label: "All" },
10356
+ { value: "Bug", label: "Bug-fix" },
10357
+ { value: "Request", label: "Enhancement" }
10358
+ ];
10359
+ var OPENFRAME_DEV_SECTIONS = {
10360
+ roadmap: {
10361
+ href: "/roadmap",
10362
+ icon: _lucidereact.Map,
10363
+ navigator: {
10364
+ title: "Development Roadmap",
10365
+ description: "What we're building next \u2014 vote on upcoming features."
10366
+ },
10367
+ hero: {
10368
+ title: "Development Roadmap",
10369
+ description: "See what's in flight, what's planned, and what's up for community vote. The entire OpenFrame roadmap is public."
10370
+ },
10371
+ search: { placeholder: "Search roadmap items...", paramKey: "search" },
10372
+ filter: { label: "Status", paramKey: "status", defaultValue: "all", options: ROADMAP_STATUS_OPTIONS }
10373
+ },
10374
+ delivery: {
10375
+ href: "/bug-fixes-and-enhancements",
10376
+ icon: _lucidereact.Wrench,
10377
+ navigator: {
10378
+ title: "Bug-fixes & Enhancements",
10379
+ description: "Recently shipped fixes and improvements."
10380
+ },
10381
+ hero: {
10382
+ title: "Bug-fixes & Enhancements",
10383
+ description: "A running log of fixes and improvements shipping into OpenFrame \u2014 recently completed and actively in progress."
10384
+ },
10385
+ search: { placeholder: "Search tasks...", paramKey: "search" },
10386
+ filter: { label: "Type", paramKey: "task_type", defaultValue: "all", options: DELIVERY_TASK_TYPE_OPTIONS }
10387
+ },
10388
+ releases: {
10389
+ href: "/releases",
10390
+ icon: _lucidereact.Rocket,
10391
+ navigator: {
10392
+ title: "Product Releases",
10393
+ description: "Version history and release notes."
10394
+ },
10395
+ hero: {
10396
+ title: "Product Releases",
10397
+ description: "Version notes, change summaries, and stability tier (alpha / beta / stable) for every OpenFrame release."
10398
+ },
10399
+ search: { placeholder: "Search releases...", paramKey: "search" },
10400
+ filter: { label: "Status", paramKey: "release_status", defaultValue: "all", options: releaseStatusOptions }
10401
+ },
10402
+ onboarding: {
10403
+ href: "/onboarding-guides",
10404
+ icon: _lucidereact.GraduationCap,
10405
+ navigator: {
10406
+ title: "Onboarding Guides",
10407
+ description: "Step-by-step product walkthroughs."
10408
+ },
10409
+ // `hero` / `search` / `filter` are intentionally inert here —
10410
+ // /onboarding-guides is owned by OnboardingGuidesCatalogView, not
10411
+ // DevSectionView. This entry exists ONLY to drive the homepage
10412
+ // navigator card so all 4 cards stay in one registry.
10413
+ hero: { title: "", description: "" },
10414
+ search: null,
10415
+ filter: null
10416
+ }
10417
+ };
10418
+
10266
10419
  // src/components/providers/dynamic-theme-provider.tsx
10267
10420
 
10268
10421
 
@@ -22684,13 +22837,14 @@ var MediaSkeleton = {
22684
22837
  );
22685
22838
  },
22686
22839
  /**
22687
- * Card image skeleton (16:9 aspect ratio)
22840
+ * Card image skeleton (1200×630 OG aspect — matches entity-cards default
22841
+ * so loading state never causes a height shift when card data arrives)
22688
22842
  */
22689
22843
  CardImage: ({ className, ...props }) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
22690
22844
  UnifiedSkeleton,
22691
22845
  {
22692
22846
  variant: "default",
22693
- className: _chunk664KA5FIcjs.cn.call(void 0, "aspect-[16/9] w-full", className),
22847
+ className: _chunk664KA5FIcjs.cn.call(void 0, "aspect-[1200/630] w-full", className),
22694
22848
  "aria-label": "Loading image",
22695
22849
  ...props
22696
22850
  }
@@ -22784,7 +22938,7 @@ function VendorCardContent({ showActions, showMetadata }) {
22784
22938
  }
22785
22939
  function BlogCardContent({ showActions, showMetadata }) {
22786
22940
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
22787
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "blog-card-image-container relative w-full aspect-[16/9] overflow-hidden bg-[#161616]", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MediaSkeleton.CardImage, {}) }),
22941
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "blog-card-image-container relative w-full aspect-[1200/630] overflow-hidden bg-[#161616]", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MediaSkeleton.CardImage, {}) }),
22788
22942
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "p-4 flex flex-col flex-grow", children: [
22789
22943
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mb-3 flex items-center min-h-[50.4px] md:min-h-[56px] lg:min-h-[61.6px]", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-1 w-full", children: [
22790
22944
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TextSkeleton.Subheading, { className: "w-full" }),
@@ -24530,6 +24684,7 @@ function OnboardingWalkthrough({
24530
24684
 
24531
24685
  // src/components/shared/product-release/release-detail-page.tsx
24532
24686
  _chunkWBR7H6E3cjs.init_next_link.call(void 0, );
24687
+ _chunkG7UE6RKVcjs.init_next_navigation.call(void 0, );
24533
24688
 
24534
24689
 
24535
24690
  // src/components/layout/article-detail-layout.tsx
@@ -24547,10 +24702,36 @@ function ArticleDetailLayout({ children, schemas }) {
24547
24702
  ] });
24548
24703
  }
24549
24704
 
24705
+ // src/components/layout/back-button.tsx
24706
+ _chunk664KA5FIcjs.init_cn.call(void 0, );
24707
+
24708
+ function BackButton({ label = "Back", className, type = "button", ...props }) {
24709
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
24710
+ "button",
24711
+ {
24712
+ type,
24713
+ className: _chunk664KA5FIcjs.cn.call(void 0,
24714
+ "group inline-flex items-center justify-center self-start rounded-md",
24715
+ "gap-[var(--spacing-system-xsf)] py-[var(--spacing-system-sf)]",
24716
+ "text-ods-text-secondary hover:text-ods-text-primary",
24717
+ "transition-colors duration-200",
24718
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ods-focus",
24719
+ className
24720
+ ),
24721
+ ...props,
24722
+ children: [
24723
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVJTFBYVGcjs.Chevron02LeftIcon, { className: "size-6 shrink-0" }),
24724
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-h4", children: label })
24725
+ ]
24726
+ }
24727
+ );
24728
+ }
24729
+
24550
24730
  // src/components/ui/release-changelog-section.tsx
24551
24731
 
24552
24732
 
24553
24733
 
24734
+ var PREVIEW_COLLAPSED_HEIGHT = 120;
24554
24735
  function ReleaseChangelogSection({
24555
24736
  title,
24556
24737
  entries,
@@ -24558,11 +24739,19 @@ function ReleaseChangelogSection({
24558
24739
  hideTitle = false,
24559
24740
  collapsible = false,
24560
24741
  defaultCollapsed = true,
24742
+ previewFirst = false,
24561
24743
  icon,
24562
24744
  SimpleMarkdownRenderer: SimpleMarkdownRenderer2
24563
24745
  }) {
24564
24746
  const [collapsed, setCollapsed] = _react.useState.call(void 0, collapsible ? defaultCollapsed : false);
24747
+ const [previewExpanded, setPreviewExpanded] = _react.useState.call(void 0, false);
24748
+ const previewContentRef = _react.useRef.call(void 0, null);
24749
+ _react.useEffect.call(void 0, () => {
24750
+ setPreviewExpanded(false);
24751
+ }, [entries.length]);
24565
24752
  if (!entries || entries.length === 0) return null;
24753
+ const inPreviewMode = previewFirst && !collapsible;
24754
+ const previewNeedsFade = inPreviewMode && entries.length > 1;
24566
24755
  const showEntries = !collapsible || !collapsed;
24567
24756
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4", children: [
24568
24757
  !hideTitle && (collapsible ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
@@ -24590,25 +24779,67 @@ function ReleaseChangelogSection({
24590
24779
  title,
24591
24780
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Badge, { variant: "secondary", className: "ml-2", children: entries.length })
24592
24781
  ] })),
24593
- showEntries && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "ul", { className: "space-y-6", children: entries.map((entry, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "li", { className: "border-l-2 border-ods-border pl-4 ml-0", children: [
24594
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h3 text-ods-text-primary mb-2", children: entry.title }),
24595
- entry.description && /* Entry description — body text matches the main release
24596
- summary (release-detail-page.tsx:321) at the SAME 14/18px
24597
- responsive `text-h4` scale. The `SimpleMarkdownRenderer`
24598
- forces its own `<p>` typography
24599
- (`text-[16px] md:text-[18px] lg:text-[20px]`) which
24600
- overrides the wrapper's `text-h4` on `lg+` viewports and
24601
- inflates the changelog body to 20px — larger than the
24602
- main summary AND larger than the entry title.
24603
- The `[&_p]:!` overrides pin every descendant `<p>` back
24604
- to the h4 responsive tokens (`var(--font-size-h4-body)`
24605
- + `var(--font-line-space-h4-body)`) — same variables
24606
- `text-h4` itself uses, so the responsive breakpoints
24607
- stay aligned with the rest of the page. */
24608
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "text-h4 text-ods-text-primary [&_p]:!text-[length:var(--font-size-h4-body)] [&_p]:!leading-[var(--font-line-space-h4-body)] [&_p]:!font-medium", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SimpleMarkdownRenderer2, { content: entry.description }) })
24609
- ] }, index)) })
24782
+ showEntries && (inPreviewMode ? (
24783
+ /* Preview-first mode: render the list in a height-clamped +
24784
+ mask-faded wrapper. The CSS mask creates the soft fade-out
24785
+ at the bottom of the collapsed region; the inline maxHeight
24786
+ + transition animate the open/close. When `previewExpanded`
24787
+ flips, the wrapper falls back to its natural scrollHeight
24788
+ (or 2000px on first render before the ref measures). */
24789
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "relative", children: [
24790
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
24791
+ "div",
24792
+ {
24793
+ ref: previewContentRef,
24794
+ className: "overflow-hidden transition-[max-height] duration-500",
24795
+ style: {
24796
+ transitionTimingFunction: "cubic-bezier(0.33, 1, 0.68, 1)",
24797
+ maxHeight: previewExpanded || !previewNeedsFade ? _nullishCoalesce(_optionalChain([previewContentRef, 'access', _490 => _490.current, 'optionalAccess', _491 => _491.scrollHeight]), () => ( 2e3)) : PREVIEW_COLLAPSED_HEIGHT,
24798
+ ...previewNeedsFade && !previewExpanded ? {
24799
+ maskImage: "linear-gradient(to bottom, black 30%, transparent 100%)",
24800
+ WebkitMaskImage: "linear-gradient(to bottom, black 30%, transparent 100%)"
24801
+ } : {}
24802
+ },
24803
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ChangelogEntryList, { entries, SimpleMarkdownRenderer: SimpleMarkdownRenderer2 })
24804
+ }
24805
+ ),
24806
+ previewNeedsFade && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
24807
+ "button",
24808
+ {
24809
+ type: "button",
24810
+ onClick: () => setPreviewExpanded(!previewExpanded),
24811
+ className: "mt-4 flex items-center gap-1.5 text-sm text-ods-text-secondary hover:text-ods-accent transition-colors duration-200",
24812
+ children: [
24813
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: previewExpanded ? "Show less" : `Show ${entries.length - 1} more` }),
24814
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
24815
+ _lucidereact.ChevronDown,
24816
+ {
24817
+ className: `w-3.5 h-3.5 transition-transform duration-300 ${previewExpanded ? "rotate-180" : ""}`
24818
+ }
24819
+ )
24820
+ ]
24821
+ }
24822
+ )
24823
+ ] })
24824
+ ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ChangelogEntryList, { entries, SimpleMarkdownRenderer: SimpleMarkdownRenderer2 }))
24610
24825
  ] });
24611
24826
  }
24827
+ function ChangelogEntryList({
24828
+ entries,
24829
+ SimpleMarkdownRenderer: SimpleMarkdownRenderer2
24830
+ }) {
24831
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "ul", { className: "space-y-6", children: entries.map((entry, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "li", { className: "border-l-2 border-ods-border pl-4 ml-0", children: [
24832
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h3 text-ods-text-primary mb-2", children: entry.title }),
24833
+ entry.description && /* Entry description — body text matches the main release
24834
+ summary at the SAME 14/18px responsive `text-h4` scale.
24835
+ The `SimpleMarkdownRenderer` forces its own `<p>` typography
24836
+ which would override `text-h4` on `lg+` viewports and
24837
+ inflate the changelog body to 20px. The `[&_p]:!` overrides
24838
+ pin every descendant `<p>` back to the h4 responsive tokens
24839
+ so the breakpoints stay aligned with the rest of the page. */
24840
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "text-h4 text-ods-text-primary [&_p]:!text-[length:var(--font-size-h4-body)] [&_p]:!leading-[var(--font-line-space-h4-body)] [&_p]:!font-medium", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SimpleMarkdownRenderer2, { content: entry.description }) })
24841
+ ] }, index)) });
24842
+ }
24612
24843
 
24613
24844
  // src/components/shared/product-release/release-detail-page.tsx
24614
24845
 
@@ -24639,7 +24870,7 @@ var SecondaryAction = ({ action }) => {
24639
24870
  e.preventDefault();
24640
24871
  return;
24641
24872
  }
24642
- _optionalChain([action, 'access', _490 => _490.onClick, 'optionalCall', _491 => _491()]);
24873
+ _optionalChain([action, 'access', _492 => _492.onClick, 'optionalCall', _493 => _493()]);
24643
24874
  },
24644
24875
  [action]
24645
24876
  );
@@ -24680,13 +24911,13 @@ var MenuItem = ({ item, onItemClick }) => {
24680
24911
  const activate = _react.useCallback.call(void 0, () => {
24681
24912
  if (item.disabled) return;
24682
24913
  if (item.type === "checkbox") {
24683
- _optionalChain([item, 'access', _492 => _492.onClick, 'optionalCall', _493 => _493()]);
24684
- _optionalChain([onItemClick, 'optionalCall', _494 => _494(item)]);
24914
+ _optionalChain([item, 'access', _494 => _494.onClick, 'optionalCall', _495 => _495()]);
24915
+ _optionalChain([onItemClick, 'optionalCall', _496 => _496(item)]);
24685
24916
  return;
24686
24917
  }
24687
24918
  if (item.type === "submenu") return;
24688
- _optionalChain([item, 'access', _495 => _495.onClick, 'optionalCall', _496 => _496()]);
24689
- _optionalChain([onItemClick, 'optionalCall', _497 => _497(item)]);
24919
+ _optionalChain([item, 'access', _497 => _497.onClick, 'optionalCall', _498 => _498()]);
24920
+ _optionalChain([onItemClick, 'optionalCall', _499 => _499(item)]);
24690
24921
  }, [item, onItemClick]);
24691
24922
  const handleClick = _react.useCallback.call(void 0,
24692
24923
  (e) => {
@@ -24712,8 +24943,8 @@ var MenuItem = ({ item, onItemClick }) => {
24712
24943
  e.stopPropagation();
24713
24944
  return;
24714
24945
  }
24715
- _optionalChain([item, 'access', _498 => _498.onClick, 'optionalCall', _499 => _499()]);
24716
- _optionalChain([onItemClick, 'optionalCall', _500 => _500(item)]);
24946
+ _optionalChain([item, 'access', _500 => _500.onClick, 'optionalCall', _501 => _501()]);
24947
+ _optionalChain([onItemClick, 'optionalCall', _502 => _502(item)]);
24717
24948
  },
24718
24949
  [item, onItemClick]
24719
24950
  );
@@ -24868,7 +25099,7 @@ var ActionsMenuDropdown = ({
24868
25099
  const [open, setOpen] = _react.useState.call(void 0, false);
24869
25100
  const handleItemClick = _react.useCallback.call(void 0,
24870
25101
  (item) => {
24871
- _optionalChain([onItemClick, 'optionalCall', _501 => _501(item)]);
25102
+ _optionalChain([onItemClick, 'optionalCall', _503 => _503(item)]);
24872
25103
  if (item.type !== "checkbox" && item.type !== "submenu") {
24873
25104
  setOpen(false);
24874
25105
  }
@@ -25039,7 +25270,7 @@ function IconButtonsVariant({
25039
25270
  }) {
25040
25271
  const desktopActions = actions.filter((a) => !a.showOnlyMobile);
25041
25272
  const hasMenuActions = !!menuActions && menuActions.some((g) => g.items.length > 0);
25042
- const isSingleAction = actions.length === 1 && !_optionalChain([actions, 'access', _502 => _502[0], 'access', _503 => _503.submenu, 'optionalAccess', _504 => _504.length]);
25273
+ const isSingleAction = actions.length === 1 && !_optionalChain([actions, 'access', _504 => _504[0], 'access', _505 => _505.submenu, 'optionalAccess', _506 => _506.length]);
25043
25274
  const singleAction = isSingleAction ? actions[0] : null;
25044
25275
  const useSingleActionMobile = isSingleAction && !hasMenuActions;
25045
25276
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
@@ -25111,31 +25342,6 @@ function usePageActionsBottomPadding(variant) {
25111
25342
  return variant === "primary-buttons" || variant === "menu-primary" ? "pb-40 md:pb-0" : "";
25112
25343
  }
25113
25344
 
25114
- // src/components/layout/back-button.tsx
25115
- _chunk664KA5FIcjs.init_cn.call(void 0, );
25116
-
25117
- function BackButton({ label = "Back", className, type = "button", ...props }) {
25118
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
25119
- "button",
25120
- {
25121
- type,
25122
- className: _chunk664KA5FIcjs.cn.call(void 0,
25123
- "group inline-flex items-center justify-center self-start rounded-md",
25124
- "gap-[var(--spacing-system-xsf)] py-[var(--spacing-system-sf)]",
25125
- "text-ods-text-secondary hover:text-ods-text-primary",
25126
- "transition-colors duration-200",
25127
- "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ods-focus",
25128
- className
25129
- ),
25130
- ...props,
25131
- children: [
25132
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVJTFBYVGcjs.Chevron02LeftIcon, { className: "size-6 shrink-0" }),
25133
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-h4", children: label })
25134
- ]
25135
- }
25136
- );
25137
- }
25138
-
25139
25345
  // src/components/layout/page-container.tsx
25140
25346
 
25141
25347
  function isAdvancedProps(props) {
@@ -25384,12 +25590,17 @@ function ReleaseDetailPage({
25384
25590
  VideoSection,
25385
25591
  VideoDisplaySection,
25386
25592
  roadmapApiEndpoint = "/api/roadmap",
25387
- deliveryApiEndpoint = "/api/delivery"
25593
+ deliveryApiEndpoint = "/api/delivery",
25594
+ backButton
25388
25595
  }) {
25596
+ const router = _chunkG7UE6RKVcjs.useRouter.call(void 0, );
25389
25597
  const { data: fetchedRelease, error, isLoading } = useRelease(initialData ? void 0 : slug);
25390
25598
  const release = initialData || fetchedRelease;
25391
25599
  const [galleryOpen, setGalleryOpen] = _react.useState.call(void 0, false);
25392
25600
  const [galleryIndex, setGalleryIndex] = _react.useState.call(void 0, 0);
25601
+ const showBackButton = backButton !== false;
25602
+ const backLabel = _nullishCoalesce((backButton ? backButton.label : void 0), () => ( "Back to home"));
25603
+ const backHref = _nullishCoalesce((backButton ? backButton.href : void 0), () => ( "/"));
25393
25604
  const [roadmapTasks, setRoadmapTasks] = _react.useState.call(void 0, []);
25394
25605
  const [deliveryData, setDeliveryData] = _react.useState.call(void 0, null);
25395
25606
  const [roadmapLoading, setRoadmapLoading] = _react.useState.call(void 0, false);
@@ -25458,6 +25669,14 @@ function ReleaseDetailPage({
25458
25669
  const bugFixed = release.bugs_fixed;
25459
25670
  const improvements = release.improvements;
25460
25671
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, ArticleDetailLayout, { children: [
25672
+ showBackButton && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
25673
+ BackButton,
25674
+ {
25675
+ label: backLabel,
25676
+ onClick: () => router.push(backHref),
25677
+ className: "hidden md:inline-flex mb-4"
25678
+ }
25679
+ ),
25461
25680
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-6 md:space-y-8", children: [
25462
25681
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-col md:flex-row md:items-end gap-4 w-full", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-1 flex flex-col gap-2", children: [
25463
25682
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h1", { className: "text-h1 tracking-[-1.12px] text-ods-text-primary", children: releaseTitle }),
@@ -25466,14 +25685,14 @@ function ReleaseDetailPage({
25466
25685
  releaseVersion
25467
25686
  ] })
25468
25687
  ] }) }),
25469
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-wrap gap-2 w-full", children: _optionalChain([blogTags, 'optionalAccess', _505 => _505.map, 'call', _506 => _506((tag) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
25688
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-wrap gap-2 w-full", children: _optionalChain([blogTags, 'optionalAccess', _507 => _507.map, 'call', _508 => _508((tag) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
25470
25689
  StatusBadge,
25471
25690
  {
25472
- text: (tag.name || _optionalChain([tag, 'access', _507 => _507.blog_tags, 'optionalAccess', _508 => _508.name]) || "").toUpperCase(),
25691
+ text: (tag.name || _optionalChain([tag, 'access', _509 => _509.blog_tags, 'optionalAccess', _510 => _510.name]) || "").toUpperCase(),
25473
25692
  variant: "card",
25474
25693
  className: "bg-ods-card border border-ods-border"
25475
25694
  },
25476
- tag.id || _optionalChain([tag, 'access', _509 => _509.blog_tags, 'optionalAccess', _510 => _510.id])
25695
+ tag.id || _optionalChain([tag, 'access', _511 => _511.blog_tags, 'optionalAccess', _512 => _512.id])
25477
25696
  ))]) }),
25478
25697
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid grid-cols-1 md:grid-cols-4 border border-ods-border rounded-md overflow-hidden w-full", children: [
25479
25698
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "bg-ods-card border-b md:border-b-0 md:border-r border-ods-border p-4 flex flex-col gap-3", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-0", children: [
@@ -25492,15 +25711,15 @@ function ReleaseDetailPage({
25492
25711
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
25493
25712
  SquareAvatar,
25494
25713
  {
25495
- src: _optionalChain([author, 'optionalAccess', _511 => _511.avatar_url]) || "",
25496
- alt: _optionalChain([author, 'optionalAccess', _512 => _512.full_name]) || "Author",
25497
- fallback: nameInitials(_optionalChain([author, 'optionalAccess', _513 => _513.full_name]) || "Unknown", ""),
25714
+ src: _optionalChain([author, 'optionalAccess', _513 => _513.avatar_url]) || "",
25715
+ alt: _optionalChain([author, 'optionalAccess', _514 => _514.full_name]) || "Author",
25716
+ fallback: nameInitials(_optionalChain([author, 'optionalAccess', _515 => _515.full_name]) || "Unknown", ""),
25498
25717
  size: "md",
25499
25718
  variant: "round"
25500
25719
  }
25501
25720
  ),
25502
25721
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-0 flex-1 min-w-0", children: [
25503
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h3 tracking-[-0.36px] text-ods-text-primary truncate", title: _optionalChain([author, 'optionalAccess', _514 => _514.full_name]) || "Unknown Author", children: _optionalChain([author, 'optionalAccess', _515 => _515.full_name]) || "Unknown Author" }),
25722
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h3 tracking-[-0.36px] text-ods-text-primary truncate", title: _optionalChain([author, 'optionalAccess', _516 => _516.full_name]) || "Unknown Author", children: _optionalChain([author, 'optionalAccess', _517 => _517.full_name]) || "Unknown Author" }),
25504
25723
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary", children: "Author" })
25505
25724
  ] })
25506
25725
  ] })
@@ -25531,8 +25750,8 @@ function ReleaseDetailPage({
25531
25750
  videoBites,
25532
25751
  bitesTitle: "Video Clips",
25533
25752
  filterPublishedBites: true,
25534
- srtContent: _optionalChain([release, 'optionalAccess', _516 => _516.srt_content]),
25535
- captionsUrl: _optionalChain([release, 'optionalAccess', _517 => _517.captionsUrl])
25753
+ srtContent: _optionalChain([release, 'optionalAccess', _518 => _518.srt_content]),
25754
+ captionsUrl: _optionalChain([release, 'optionalAccess', _519 => _519.captionsUrl])
25536
25755
  }
25537
25756
  ) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
25538
25757
  youtubeUrl && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -25548,8 +25767,8 @@ function ReleaseDetailPage({
25548
25767
  Video,
25549
25768
  {
25550
25769
  url: mainVideoUrl,
25551
- srtContent: _optionalChain([release, 'optionalAccess', _518 => _518.srt_content]),
25552
- captionsUrl: _optionalChain([release, 'optionalAccess', _519 => _519.captionsUrl]),
25770
+ srtContent: _optionalChain([release, 'optionalAccess', _520 => _520.srt_content]),
25771
+ captionsUrl: _optionalChain([release, 'optionalAccess', _521 => _521.captionsUrl]),
25553
25772
  layout: "centered"
25554
25773
  }
25555
25774
  ),
@@ -25587,6 +25806,7 @@ function ReleaseDetailPage({
25587
25806
  title: "Features Added",
25588
25807
  entries: featuresAdded || [],
25589
25808
  icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Sparkles, { className: "h-6 w-6" }),
25809
+ previewFirst: true,
25590
25810
  SimpleMarkdownRenderer: MarkdownRenderer
25591
25811
  }
25592
25812
  ),
@@ -25596,6 +25816,7 @@ function ReleaseDetailPage({
25596
25816
  title: "Bugs Fixed",
25597
25817
  entries: bugFixed || [],
25598
25818
  icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Wrench, { className: "h-6 w-6" }),
25819
+ previewFirst: true,
25599
25820
  SimpleMarkdownRenderer: MarkdownRenderer
25600
25821
  }
25601
25822
  ),
@@ -25605,6 +25826,7 @@ function ReleaseDetailPage({
25605
25826
  title: "Improvements",
25606
25827
  entries: improvements || [],
25607
25828
  icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.TrendingUp, { className: "h-6 w-6" }),
25829
+ previewFirst: true,
25608
25830
  SimpleMarkdownRenderer: MarkdownRenderer
25609
25831
  }
25610
25832
  ),
@@ -25643,7 +25865,7 @@ function ReleaseDetailPage({
25643
25865
  }
25644
25866
  )
25645
25867
  ] }),
25646
- (_optionalChain([githubReleases, 'optionalAccess', _520 => _520.length]) || _optionalChain([knowledgeBaseLinks, 'optionalAccess', _521 => _521.length]) || migrationGuideUrl || documentationUrl) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-1 w-full", children: [
25868
+ (_optionalChain([githubReleases, 'optionalAccess', _522 => _522.length]) || _optionalChain([knowledgeBaseLinks, 'optionalAccess', _523 => _523.length]) || migrationGuideUrl || documentationUrl) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-1 w-full", children: [
25647
25869
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h5 tracking-[-0.28px] text-ods-text-secondary", children: "Related Links" }),
25648
25870
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Card, { className: "bg-ods-card border-ods-border p-6", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4", children: [
25649
25871
  githubReleases && githubReleases.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, { children: githubReleases.map((ghRelease) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-start gap-1", children: [
@@ -25672,7 +25894,7 @@ function ReleaseDetailPage({
25672
25894
  {
25673
25895
  href: path.startsWith("http") ? path : `/knowledge-base${path.startsWith("/") ? "" : "/"}${path}`,
25674
25896
  className: "text-h4 text-[#ffc008] hover:underline",
25675
- children: _optionalChain([path, 'access', _522 => _522.replace, 'call', _523 => _523(/^\//, ""), 'access', _524 => _524.split, 'call', _525 => _525("/"), 'access', _526 => _526.pop, 'call', _527 => _527(), 'optionalAccess', _528 => _528.replace, 'call', _529 => _529(/-/g, " ")]) || "View Article"
25897
+ children: _optionalChain([path, 'access', _524 => _524.replace, 'call', _525 => _525(/^\//, ""), 'access', _526 => _526.split, 'call', _527 => _527("/"), 'access', _528 => _528.pop, 'call', _529 => _529(), 'optionalAccess', _530 => _530.replace, 'call', _531 => _531(/-/g, " ")]) || "View Article"
25676
25898
  }
25677
25899
  ),
25678
25900
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ExternalLink, { className: "h-6 w-6 text-[#ffc008] shrink-0" })
@@ -25727,6 +25949,753 @@ function ReleaseDetailSkeleton() {
25727
25949
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DetailPageSkeleton, { metadataColumns: 4, showImageGallery: true });
25728
25950
  }
25729
25951
 
25952
+ // src/components/shared/dev-section/dev-section-view.tsx
25953
+
25954
+
25955
+ function DevSectionView({ sectionKey, hero, children }) {
25956
+ const section = OPENFRAME_DEV_SECTIONS[sectionKey];
25957
+ const router = _chunkG7UE6RKVcjs.useRouter.call(void 0, );
25958
+ const pathname = _chunkG7UE6RKVcjs.usePathname.call(void 0, );
25959
+ const searchParams = _chunkG7UE6RKVcjs.useSearchParams.call(void 0, );
25960
+ const search = section.search;
25961
+ const filter = section.filter;
25962
+ const currentSearch = search ? searchParams.get(search.paramKey) || "" : "";
25963
+ const currentFilterValue = filter ? searchParams.get(filter.paramKey) || filter.defaultValue : "";
25964
+ const [searchValue, setSearchValue] = _react.useState.call(void 0, () => currentSearch);
25965
+ _react.useEffect.call(void 0, () => {
25966
+ setSearchValue(currentSearch);
25967
+ }, [currentSearch]);
25968
+ const handleSearchSubmit = (value) => {
25969
+ if (!search) return;
25970
+ const params = new URLSearchParams(searchParams.toString());
25971
+ if (value.trim()) params.set(search.paramKey, value.trim());
25972
+ else params.delete(search.paramKey);
25973
+ router.replace(`${pathname}?${params.toString()}`, { scroll: false });
25974
+ };
25975
+ const handleFilterChange = (value) => {
25976
+ if (!filter) return;
25977
+ const params = new URLSearchParams(searchParams.toString());
25978
+ if (value === filter.defaultValue) params.delete(filter.paramKey);
25979
+ else params.set(filter.paramKey, value);
25980
+ router.replace(`${pathname}?${params.toString()}`, { scroll: false });
25981
+ };
25982
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "w-full flex flex-col gap-10", children: [
25983
+ hero ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4", children: [
25984
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "h1", { className: "text-h1 tracking-[-1.12px] text-ods-text-primary flex items-center gap-3", children: [
25985
+ hero.icon,
25986
+ section.hero.title
25987
+ ] }),
25988
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "font-['DM_Sans'] font-medium text-[18px] leading-[28px] text-ods-text-secondary max-w-3xl", children: hero.description })
25989
+ ] }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex items-center justify-between w-full", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "h2", { className: "font-['Azeret_Mono'] font-semibold text-[32px] md:text-[40px] lg:text-[48px] leading-[40px] md:leading-[48px] lg:leading-[56px] text-ods-text-primary tracking-[-0.64px] md:tracking-[-0.8px] lg:tracking-[-0.96px]", children: [
25990
+ section.hero.title,
25991
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-accent", children: ":" })
25992
+ ] }) }),
25993
+ (search || filter) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4", children: [
25994
+ search && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
25995
+ SearchInput,
25996
+ {
25997
+ showDropdown: false,
25998
+ placeholder: search.placeholder,
25999
+ value: searchValue,
26000
+ onChange: setSearchValue,
26001
+ onSubmit: handleSearchSubmit
26002
+ }
26003
+ ),
26004
+ filter && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
26005
+ StatusFilterComponent,
26006
+ {
26007
+ selectedStatus: currentFilterValue,
26008
+ onStatusChange: handleFilterChange,
26009
+ statusOptions: [...filter.options]
26010
+ }
26011
+ )
26012
+ ] }),
26013
+ children
26014
+ ] });
26015
+ }
26016
+
26017
+ // src/components/shared/dev-section/dev-section-page.tsx
26018
+ _chunkG7UE6RKVcjs.init_next_navigation.call(void 0, );
26019
+
26020
+ var SECTION_HERO_ICON_CLASS = "h-10 w-10 text-ods-accent";
26021
+ function DevSectionPage({ sectionKey, children, backButton }) {
26022
+ const router = _chunkG7UE6RKVcjs.useRouter.call(void 0, );
26023
+ const section = OPENFRAME_DEV_SECTIONS[sectionKey];
26024
+ const Icon2 = section.icon;
26025
+ const backCfg = backButton === false ? void 0 : {
26026
+ label: _nullishCoalesce((backButton ? backButton.label : void 0), () => ( "Back to home")),
26027
+ onClick: () => router.push(_nullishCoalesce((backButton ? backButton.href : void 0), () => ( "/")))
26028
+ };
26029
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, PageShell, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, PageLayout, { backButton: backCfg, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
26030
+ DevSectionView,
26031
+ {
26032
+ sectionKey,
26033
+ hero: {
26034
+ icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Icon2, { className: SECTION_HERO_ICON_CLASS }),
26035
+ description: section.hero.description
26036
+ },
26037
+ children
26038
+ }
26039
+ ) }) });
26040
+ }
26041
+
26042
+ // src/components/shared/roadmap/roadmap-grid.tsx
26043
+
26044
+
26045
+ // src/components/shared/roadmap/use-roadmap-voting.ts
26046
+
26047
+ var DEFAULT_VOTE_ENDPOINT = "/api/roadmap/vote";
26048
+ var DEFAULT_STORAGE_KEY = "roadmap_votes_v1";
26049
+ function useRoadmapVoting(options = {}) {
26050
+ const voteApiEndpoint = _nullishCoalesce(options.voteApiEndpoint, () => ( DEFAULT_VOTE_ENDPOINT));
26051
+ const storageKey = _nullishCoalesce(options.storageKey, () => ( DEFAULT_STORAGE_KEY));
26052
+ const [votes, setVotes] = _react.useState.call(void 0, {});
26053
+ const [isLoading, setIsLoading] = _react.useState.call(void 0, true);
26054
+ _react.useEffect.call(void 0, () => {
26055
+ setIsLoading(true);
26056
+ setVotes({});
26057
+ try {
26058
+ const stored = localStorage.getItem(storageKey);
26059
+ if (stored) {
26060
+ setVotes(JSON.parse(stored));
26061
+ }
26062
+ } catch (error) {
26063
+ console.error("[Voting] Error loading votes from localStorage:", error);
26064
+ } finally {
26065
+ setIsLoading(false);
26066
+ }
26067
+ }, [storageKey]);
26068
+ _react.useEffect.call(void 0, () => {
26069
+ if (!isLoading) {
26070
+ try {
26071
+ localStorage.setItem(storageKey, JSON.stringify(votes));
26072
+ } catch (error) {
26073
+ console.error("[Voting] Error saving votes to localStorage:", error);
26074
+ }
26075
+ }
26076
+ }, [votes, isLoading, storageKey]);
26077
+ const getVote = _react.useCallback.call(void 0,
26078
+ (taskId) => {
26079
+ return votes[taskId] || null;
26080
+ },
26081
+ [votes]
26082
+ );
26083
+ const toggleVote = _react.useCallback.call(void 0,
26084
+ async (taskId, voteType) => {
26085
+ const currentVote = votes[taskId];
26086
+ let newVote = null;
26087
+ let action = "add";
26088
+ if (currentVote === voteType) {
26089
+ newVote = null;
26090
+ action = "remove";
26091
+ } else {
26092
+ if (currentVote) {
26093
+ await fetch(voteApiEndpoint, {
26094
+ method: "POST",
26095
+ headers: { "Content-Type": "application/json" },
26096
+ body: JSON.stringify({
26097
+ taskId,
26098
+ voteType: currentVote,
26099
+ action: "remove"
26100
+ })
26101
+ }).catch((err) => console.error("[Voting] Error removing opposite vote:", err));
26102
+ }
26103
+ newVote = voteType;
26104
+ action = "add";
26105
+ }
26106
+ setVotes((prev) => ({
26107
+ ...prev,
26108
+ [taskId]: newVote
26109
+ }));
26110
+ try {
26111
+ const response = await fetch(voteApiEndpoint, {
26112
+ method: "POST",
26113
+ headers: { "Content-Type": "application/json" },
26114
+ body: JSON.stringify({ taskId, voteType, action })
26115
+ });
26116
+ if (!response.ok) {
26117
+ throw new Error("Vote API request failed");
26118
+ }
26119
+ return { success: true, newVote, action };
26120
+ } catch (error) {
26121
+ console.error("[Voting] API error:", error);
26122
+ setVotes((prev) => ({
26123
+ ...prev,
26124
+ [taskId]: currentVote
26125
+ }));
26126
+ return { success: false, newVote: currentVote, action };
26127
+ }
26128
+ },
26129
+ [votes, voteApiEndpoint]
26130
+ );
26131
+ const clearVotes = _react.useCallback.call(void 0, () => {
26132
+ setVotes({});
26133
+ localStorage.removeItem(storageKey);
26134
+ }, [storageKey]);
26135
+ return {
26136
+ votes,
26137
+ isLoading,
26138
+ getVote,
26139
+ toggleVote,
26140
+ clearVotes
26141
+ };
26142
+ }
26143
+
26144
+ // src/components/shared/roadmap/roadmap-grid.tsx
26145
+
26146
+ var DEFAULT_BUILD_REFRESH_URL = (taskId) => `/api/roadmap/${taskId}`;
26147
+ function RoadmapGrid({
26148
+ items,
26149
+ onItemUpdate,
26150
+ showLeftMargin = true,
26151
+ buildRefreshUrl = DEFAULT_BUILD_REFRESH_URL,
26152
+ votingOptions
26153
+ }) {
26154
+ const { getVote, toggleVote } = useRoadmapVoting(votingOptions);
26155
+ const [votingTasks, setVotingTasks] = _react.useState.call(void 0, /* @__PURE__ */ new Set());
26156
+ const handleVote = async (taskId, voteType) => {
26157
+ if (votingTasks.has(taskId)) return;
26158
+ setVotingTasks((prev) => new Set(prev).add(taskId));
26159
+ try {
26160
+ const result = await toggleVote(taskId, voteType);
26161
+ if (result.success) {
26162
+ const response = await fetch(buildRefreshUrl(taskId));
26163
+ if (response.ok) {
26164
+ const data = await response.json();
26165
+ if (data.item && onItemUpdate) {
26166
+ onItemUpdate(data.item);
26167
+ }
26168
+ }
26169
+ }
26170
+ } finally {
26171
+ setVotingTasks((prev) => {
26172
+ const next = new Set(prev);
26173
+ next.delete(taskId);
26174
+ return next;
26175
+ });
26176
+ }
26177
+ };
26178
+ if (items.length === 0) {
26179
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
26180
+ EmptyState3,
26181
+ {
26182
+ type: "generic",
26183
+ title: "No roadmap items",
26184
+ description: "Check back soon for upcoming features and improvements!"
26185
+ }
26186
+ );
26187
+ }
26188
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `grid grid-cols-1 md:grid-cols-2 gap-6 ${showLeftMargin ? "md:ml-[120px]" : ""}`, children: items.map((item) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
26189
+ RoadmapCard,
26190
+ {
26191
+ item,
26192
+ userVote: getVote(item.id),
26193
+ onVote: (voteType) => handleVote(item.id, voteType),
26194
+ isVoting: votingTasks.has(item.id)
26195
+ },
26196
+ item.id
26197
+ )) });
26198
+ }
26199
+
26200
+ // src/components/shared/roadmap/roadmap-grid-skeleton.tsx
26201
+
26202
+ function RoadmapCardSkeleton() {
26203
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "bg-ods-card border border-ods-border rounded-[6px] p-[24px] flex flex-col gap-[16px] min-h-[340px] relative", children: [
26204
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute top-[24px] right-[24px]", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[20px] w-[80px] bg-ods-border rounded animate-pulse" }) }),
26205
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-[16px] pr-[120px]", children: [
26206
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-[80px] h-[80px] bg-ods-border rounded-lg flex-shrink-0 animate-pulse" }),
26207
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-1 min-w-0 flex flex-col gap-1", children: [
26208
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-h-[48px] flex items-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[24px] w-full bg-ods-border rounded animate-pulse" }) }),
26209
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-h-[20px] flex items-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[14px] w-1/2 bg-ods-border rounded animate-pulse" }) })
26210
+ ] })
26211
+ ] }),
26212
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-h-[72px] flex items-center", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "w-full space-y-2", children: [
26213
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[24px] bg-ods-border rounded animate-pulse" }),
26214
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[24px] bg-ods-border rounded animate-pulse" }),
26215
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[24px] w-4/5 bg-ods-border rounded animate-pulse" })
26216
+ ] }) }),
26217
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex-1" }),
26218
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center justify-between", children: [
26219
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[48px] w-[120px] bg-ods-border rounded animate-pulse" }),
26220
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[32px] w-[100px] bg-ods-border rounded animate-pulse" })
26221
+ ] })
26222
+ ] });
26223
+ }
26224
+ function RoadmapGridSkeleton({ count = 4, showLeftMargin = true }) {
26225
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `grid grid-cols-1 md:grid-cols-2 gap-6 ${showLeftMargin ? "md:ml-[120px]" : ""}`, children: Array.from({ length: count }).map((_, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, RoadmapCardSkeleton, {}, i)) });
26226
+ }
26227
+
26228
+ // src/components/shared/delivery/delivery-lists.tsx
26229
+
26230
+
26231
+ // src/components/shared/delivery/delivery-table.tsx
26232
+
26233
+ function getRelativeTime(timestamp) {
26234
+ const now = Date.now();
26235
+ const diff = now - timestamp;
26236
+ const days = Math.floor(diff / (1e3 * 60 * 60 * 24));
26237
+ const weeks = Math.floor(days / 7);
26238
+ const months = Math.floor(days / 30);
26239
+ if (months > 0) {
26240
+ return months === 1 ? "last month" : `${months} months ago`;
26241
+ }
26242
+ if (weeks > 0) {
26243
+ return weeks === 1 ? "last week" : `${weeks} weeks ago`;
26244
+ }
26245
+ if (days > 0) {
26246
+ return days === 1 ? "yesterday" : `${days} days ago`;
26247
+ }
26248
+ return "today";
26249
+ }
26250
+ function SkeletonRow() {
26251
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "border-b border-ods-border last:border-b-0 p-[12px] md:p-[16px]", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col md:flex-row items-start justify-between gap-[12px] md:gap-[16px] w-full", children: [
26252
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-1 min-w-0 w-full md:w-auto flex flex-col gap-[12px] md:gap-[16px]", children: [
26253
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-h-[24px] flex items-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[20px] bg-ods-border rounded animate-pulse w-full" }) }),
26254
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-h-[20px] flex items-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[20px] bg-ods-border rounded animate-pulse w-1/2" }) }),
26255
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-h-[72px] flex items-center", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-1 space-y-1", children: [
26256
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[20px] bg-ods-border rounded animate-pulse w-full" }),
26257
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[20px] bg-ods-border rounded animate-pulse w-full" }),
26258
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[20px] bg-ods-border rounded animate-pulse w-2/3" })
26259
+ ] }) })
26260
+ ] }),
26261
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-shrink-0 self-start flex flex-col gap-2", children: [
26262
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[32px] w-[100px] bg-ods-border rounded animate-pulse" }),
26263
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[32px] w-[120px] bg-ods-border rounded animate-pulse" })
26264
+ ] })
26265
+ ] }) });
26266
+ }
26267
+ function DeliveryTable({ items, isLoading = false }) {
26268
+ if (isLoading) {
26269
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "bg-ods-card border border-ods-border rounded-[6px] overflow-hidden w-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: [1, 2, 3, 4, 5].map((i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SkeletonRow, {}, i)) }) });
26270
+ }
26271
+ if (items.length === 0) {
26272
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "bg-ods-card border border-ods-border rounded-[6px] p-[40px] text-center w-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-secondary text-[14px] font-['DM_Sans'] font-medium", children: "No tasks available" }) });
26273
+ }
26274
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "bg-ods-card border border-ods-border rounded-[6px] overflow-hidden w-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: items.map((item, index) => {
26275
+ const taskType = item.taskType;
26276
+ const typeBadgeLabel = TASK_TYPE_LABELS[taskType] || "TASK";
26277
+ const typeBadgeTextColor = TASK_TYPE_TEXT_COLORS[taskType] || "";
26278
+ const statusBadgeScheme = getStatusColorScheme(item.status);
26279
+ const relativeTime = getRelativeTime(item.dateUpdated);
26280
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
26281
+ "div",
26282
+ {
26283
+ className: `border-b border-ods-border last:border-b-0 p-[12px] md:p-[16px] ${index === 0 ? "" : ""}`,
26284
+ children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col md:flex-row items-start justify-between gap-[12px] md:gap-[16px] w-full", children: [
26285
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-1 min-w-0 w-full md:w-auto flex flex-col gap-[12px] md:gap-[16px]", children: [
26286
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-h-[24px] md:min-h-[24px] flex items-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "text-h3 text-ods-text-primary tracking-[-0.36px] flex-1 line-clamp-2 md:truncate break-words", children: item.title }) }),
26287
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-h-[20px] flex items-center", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: "text-h5 text-ods-text-secondary uppercase tracking-[-0.28px] truncate", children: [
26288
+ "ACTIVE ",
26289
+ relativeTime,
26290
+ item.listNames.length > 0 ? `, ${item.listNames.join(", ")}` : "",
26291
+ ", ",
26292
+ item.id
26293
+ ] }) }),
26294
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-h-[72px] flex items-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h4 text-ods-text-secondary line-clamp-3 break-words", children: item.description || "No description provided" }) })
26295
+ ] }),
26296
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-shrink-0 self-start flex flex-col gap-2", children: [
26297
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
26298
+ StatusBadge,
26299
+ {
26300
+ text: item.status.toUpperCase(),
26301
+ colorScheme: statusBadgeScheme,
26302
+ variant: "card",
26303
+ className: "border border-ods-border"
26304
+ }
26305
+ ),
26306
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
26307
+ StatusBadge,
26308
+ {
26309
+ text: typeBadgeLabel,
26310
+ variant: "card",
26311
+ className: `border border-ods-border ${typeBadgeTextColor}`
26312
+ }
26313
+ )
26314
+ ] })
26315
+ ] })
26316
+ },
26317
+ item.id
26318
+ );
26319
+ }) }) });
26320
+ }
26321
+
26322
+ // src/components/ui/error-state.tsx
26323
+ _chunkKUZGEA7Ucjs.init_button2.call(void 0, );
26324
+ _chunk664KA5FIcjs.init_cn.call(void 0, );
26325
+
26326
+
26327
+ function ErrorState({
26328
+ title = "Error",
26329
+ message: message2,
26330
+ variant = "error",
26331
+ showIcon = true,
26332
+ showRetry = false,
26333
+ showHome = false,
26334
+ onRetry,
26335
+ onHome,
26336
+ className,
26337
+ containerClassName
26338
+ }) {
26339
+ const getVariantStyles = () => {
26340
+ switch (variant) {
26341
+ case "error":
26342
+ return {
26343
+ bg: "bg-ods-attention-red-error/20",
26344
+ border: "border-ods-attention-red-error",
26345
+ text: "text-ods-attention-red-error",
26346
+ icon: "text-ods-attention-red-error"
26347
+ };
26348
+ case "warning":
26349
+ return {
26350
+ bg: "bg-ods-attention-yellow-warning/20",
26351
+ border: "border-ods-attention-yellow-warning",
26352
+ text: "text-ods-attention-yellow-warning",
26353
+ icon: "text-ods-attention-yellow-warning"
26354
+ };
26355
+ case "info":
26356
+ return {
26357
+ bg: "bg-ods-bg-surface",
26358
+ border: "border-ods-border",
26359
+ text: "text-ods-text-secondary",
26360
+ icon: "text-ods-text-secondary"
26361
+ };
26362
+ }
26363
+ };
26364
+ const styles = getVariantStyles();
26365
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk664KA5FIcjs.cn.call(void 0, "p-6", containerClassName), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk664KA5FIcjs.cn.call(void 0,
26366
+ "rounded-lg p-4 border",
26367
+ styles.bg,
26368
+ styles.border,
26369
+ className
26370
+ ), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-start gap-3", children: [
26371
+ showIcon && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.AlertTriangle, { className: _chunk664KA5FIcjs.cn.call(void 0, "h-5 w-5 mt-0.5 flex-shrink-0", styles.icon) }),
26372
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-1", children: [
26373
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: _chunk664KA5FIcjs.cn.call(void 0, "font-semibold mb-1", styles.text), children: title }),
26374
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: _chunk664KA5FIcjs.cn.call(void 0, "text-sm", styles.text), children: message2 }),
26375
+ (showRetry || showHome) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex gap-2 mt-3", children: [
26376
+ showRetry && onRetry && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
26377
+ _chunkKUZGEA7Ucjs.Button,
26378
+ {
26379
+ onClick: onRetry,
26380
+ variant: "outline",
26381
+ size: "small-legacy",
26382
+ className: "h-8",
26383
+ leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.RefreshCw, { className: "h-4 w-4" }),
26384
+ children: "Try Again"
26385
+ }
26386
+ ),
26387
+ showHome && onHome && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
26388
+ _chunkKUZGEA7Ucjs.Button,
26389
+ {
26390
+ onClick: onHome,
26391
+ variant: "outline",
26392
+ size: "small-legacy",
26393
+ className: "h-8",
26394
+ leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Home, { className: "h-4 w-4" }),
26395
+ children: "Go Home"
26396
+ }
26397
+ )
26398
+ ] })
26399
+ ] })
26400
+ ] }) }) });
26401
+ }
26402
+ function PageError({ message: message2, onRetry, onHome }) {
26403
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
26404
+ ErrorState,
26405
+ {
26406
+ title: "Page Error",
26407
+ message: message2,
26408
+ variant: "error",
26409
+ showRetry: !!onRetry,
26410
+ showHome: !!onHome,
26411
+ onRetry,
26412
+ onHome
26413
+ }
26414
+ );
26415
+ }
26416
+ function LoadError({ message: message2, onRetry }) {
26417
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
26418
+ ErrorState,
26419
+ {
26420
+ title: "Loading Error",
26421
+ message: message2,
26422
+ variant: "error",
26423
+ showRetry: !!onRetry,
26424
+ onRetry
26425
+ }
26426
+ );
26427
+ }
26428
+ function NotFoundError({ message: message2 = "The requested item was not found", onHome }) {
26429
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
26430
+ ErrorState,
26431
+ {
26432
+ title: "Not Found",
26433
+ message: message2,
26434
+ variant: "warning",
26435
+ showHome: !!onHome,
26436
+ onHome
26437
+ }
26438
+ );
26439
+ }
26440
+
26441
+ // src/components/shared/delivery/delivery-lists.tsx
26442
+
26443
+ var DEFAULT_COMPLETED_ENDPOINT = "/api/delivery/completed";
26444
+ var DEFAULT_IN_PROGRESS_ENDPOINT = "/api/delivery/in-progress";
26445
+ var DEFAULT_SEARCH_PARAM_KEY = "search";
26446
+ var DEFAULT_TASK_TYPE_PARAM_KEY = "task_type";
26447
+ function DeliveryLists({
26448
+ completedApiEndpoint = DEFAULT_COMPLETED_ENDPOINT,
26449
+ inProgressApiEndpoint = DEFAULT_IN_PROGRESS_ENDPOINT,
26450
+ searchParamKey = DEFAULT_SEARCH_PARAM_KEY,
26451
+ taskTypeParamKey = DEFAULT_TASK_TYPE_PARAM_KEY
26452
+ } = {}) {
26453
+ const searchParams = _chunkG7UE6RKVcjs.useSearchParams.call(void 0, );
26454
+ const router = _chunkG7UE6RKVcjs.useRouter.call(void 0, );
26455
+ const pathname = _chunkG7UE6RKVcjs.usePathname.call(void 0, );
26456
+ const [data, setData] = _react.useState.call(void 0, null);
26457
+ const [isLoading, setIsLoading] = _react.useState.call(void 0, true);
26458
+ const [error, setError] = _react.useState.call(void 0, null);
26459
+ const searchQuery = searchParams.get(searchParamKey) || "";
26460
+ const taskTypeFilter = searchParams.get(taskTypeParamKey) || "all";
26461
+ _react.useEffect.call(void 0, () => {
26462
+ async function fetchDeliveryData() {
26463
+ try {
26464
+ setIsLoading(true);
26465
+ setError(null);
26466
+ const params = new URLSearchParams();
26467
+ if (searchQuery) {
26468
+ params.set(searchParamKey, searchQuery);
26469
+ }
26470
+ if (taskTypeFilter && taskTypeFilter !== "all") {
26471
+ params.set(taskTypeParamKey, taskTypeFilter);
26472
+ }
26473
+ const queryString = params.toString();
26474
+ const queryParam = queryString ? `?${queryString}` : "";
26475
+ const [completedResponse, inProgressResponse] = await Promise.all([
26476
+ fetch(`${completedApiEndpoint}${queryParam}`),
26477
+ fetch(`${inProgressApiEndpoint}${queryParam}`)
26478
+ ]);
26479
+ if (!completedResponse.ok || !inProgressResponse.ok) {
26480
+ throw new Error("Failed to fetch delivery items");
26481
+ }
26482
+ const [completedResult, inProgressResult] = await Promise.all([
26483
+ completedResponse.json(),
26484
+ inProgressResponse.json()
26485
+ ]);
26486
+ setData({
26487
+ completed: completedResult.items || [],
26488
+ inProgress: inProgressResult.items || []
26489
+ });
26490
+ } catch (err) {
26491
+ console.error("Error fetching delivery items:", err);
26492
+ setError("Failed to load delivery items. Please try again later.");
26493
+ } finally {
26494
+ setIsLoading(false);
26495
+ }
26496
+ }
26497
+ fetchDeliveryData();
26498
+ }, [searchQuery, taskTypeFilter, completedApiEndpoint, inProgressApiEndpoint, searchParamKey, taskTypeParamKey]);
26499
+ const filteredCompleted = _optionalChain([data, 'optionalAccess', _532 => _532.completed]) || [];
26500
+ const filteredInProgress = _optionalChain([data, 'optionalAccess', _533 => _533.inProgress]) || [];
26501
+ const showCompleted = true;
26502
+ const showInProgress = true;
26503
+ const hasActiveFilters = searchQuery !== "" || taskTypeFilter !== "all";
26504
+ const hasResults = showCompleted && filteredCompleted.length > 0 || showInProgress && filteredInProgress.length > 0;
26505
+ if (error) {
26506
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, LoadError, { message: error, onRetry: () => window.location.reload() }) });
26507
+ }
26508
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "w-full flex flex-col gap-[40px]", children: [
26509
+ !isLoading && !hasResults && (hasActiveFilters ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
26510
+ EmptyState3,
26511
+ {
26512
+ type: "search",
26513
+ title: "No tasks found",
26514
+ description: "No tasks match your current filters. Try adjusting your search or status filter.",
26515
+ showCTA: true,
26516
+ ctaText: "Reset Filters",
26517
+ onCtaClick: () => {
26518
+ const params = new URLSearchParams(searchParams.toString());
26519
+ params.delete(searchParamKey);
26520
+ params.delete(taskTypeParamKey);
26521
+ router.replace(`${pathname}?${params.toString()}`, { scroll: false });
26522
+ }
26523
+ }
26524
+ ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
26525
+ EmptyState3,
26526
+ {
26527
+ type: "generic",
26528
+ title: "No tasks available",
26529
+ description: "Check back soon for upcoming tasks!",
26530
+ showCTA: false
26531
+ }
26532
+ )),
26533
+ showCompleted && (hasResults || isLoading) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "w-full", children: [
26534
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "h3", { className: "text-h2 text-ods-text-primary tracking-[-0.48px] md:tracking-[-0.56px] lg:tracking-[-0.64px] mb-4", children: [
26535
+ "Recently Completed",
26536
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-accent", children: ":" })
26537
+ ] }),
26538
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
26539
+ DeliveryTable,
26540
+ {
26541
+ items: filteredCompleted,
26542
+ isLoading
26543
+ }
26544
+ )
26545
+ ] }),
26546
+ showInProgress && (hasResults || isLoading) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "w-full", children: [
26547
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "h3", { className: "text-h2 text-ods-text-primary tracking-[-0.48px] md:tracking-[-0.56px] lg:tracking-[-0.64px] mb-4", children: [
26548
+ "Active Tasks",
26549
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-accent", children: ":" })
26550
+ ] }),
26551
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
26552
+ DeliveryTable,
26553
+ {
26554
+ items: filteredInProgress,
26555
+ isLoading
26556
+ }
26557
+ )
26558
+ ] })
26559
+ ] });
26560
+ }
26561
+
26562
+ // src/components/shared/legal-document/legal-document-page.tsx
26563
+ _chunkG7UE6RKVcjs.init_next_navigation.call(void 0, );
26564
+
26565
+ // src/components/shared/legal-document/use-legal-docs.ts
26566
+
26567
+ function useLegalDocs(docType, options = {}) {
26568
+ const { initialData = null, apiEndpoint } = options;
26569
+ const effectiveEndpoint = _nullishCoalesce(apiEndpoint, () => ( `/api/legal/${docType}`));
26570
+ const [data, setData] = _react.useState.call(void 0, _nullishCoalesce(initialData, () => ( null)));
26571
+ const [isLoading, setIsLoading] = _react.useState.call(void 0, !initialData);
26572
+ const [error, setError] = _react.useState.call(void 0, null);
26573
+ const fetchDocument = _react.useCallback.call(void 0, async () => {
26574
+ try {
26575
+ setIsLoading(true);
26576
+ setError(null);
26577
+ const response = await fetch(effectiveEndpoint);
26578
+ if (!response.ok) {
26579
+ throw new Error(
26580
+ `Failed to fetch ${docType} document: ${response.status} ${response.statusText}`
26581
+ );
26582
+ }
26583
+ const result = await response.json();
26584
+ if (!result.content) {
26585
+ throw new Error(`${docType} document content is empty`);
26586
+ }
26587
+ setData(result);
26588
+ } catch (err) {
26589
+ const errorMessage = err instanceof Error ? err.message : "Unknown error occurred";
26590
+ console.error(`Error fetching ${docType} document:`, err);
26591
+ setError(errorMessage);
26592
+ } finally {
26593
+ setIsLoading(false);
26594
+ }
26595
+ }, [docType, effectiveEndpoint]);
26596
+ _react.useEffect.call(void 0, () => {
26597
+ setData(_nullishCoalesce(initialData, () => ( null)));
26598
+ setError(null);
26599
+ setIsLoading(!initialData);
26600
+ }, [docType, initialData]);
26601
+ _react.useEffect.call(void 0, () => {
26602
+ if (initialData) return;
26603
+ fetchDocument();
26604
+ }, [fetchDocument, initialData]);
26605
+ const refetch = () => {
26606
+ fetchDocument();
26607
+ };
26608
+ return {
26609
+ data,
26610
+ isLoading,
26611
+ error,
26612
+ refetch
26613
+ };
26614
+ }
26615
+
26616
+ // src/components/shared/legal-document/legal-document-page.tsx
26617
+
26618
+ function LegalDocumentPage({
26619
+ docType,
26620
+ title,
26621
+ fallbackDescription,
26622
+ contactEmail,
26623
+ errorContactPrompt,
26624
+ errorTitle,
26625
+ emptyStateMessage,
26626
+ initialData = null,
26627
+ initialLastUpdatedLabel = null,
26628
+ apiEndpoint,
26629
+ MarkdownRenderer = SimpleMarkdownRenderer,
26630
+ backButton
26631
+ }) {
26632
+ const router = _chunkG7UE6RKVcjs.useRouter.call(void 0, );
26633
+ const { data, isLoading, error } = useLegalDocs(docType, { initialData, apiEndpoint });
26634
+ const backCfg = backButton === false ? void 0 : {
26635
+ label: _nullishCoalesce(_optionalChain([backButton, 'optionalAccess', _534 => _534.label]), () => ( "Back to home")),
26636
+ onClick: () => router.push(_nullishCoalesce(_optionalChain([backButton, 'optionalAccess', _535 => _535.href]), () => ( "/")))
26637
+ };
26638
+ const fallbackLastUpdatedLabel = _optionalChain([data, 'optionalAccess', _536 => _536.lastSynced]) != null ? formatLegalDate(data.lastSynced) : null;
26639
+ const effectiveLastUpdatedLabel = _nullishCoalesce(initialLastUpdatedLabel, () => ( fallbackLastUpdatedLabel));
26640
+ const customTitle = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-4", children: [
26641
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "h1", { className: "font-['Azeret_Mono'] text-[32px] md:text-[40px] lg:text-[48px] font-semibold leading-[1em] tracking-[-0.02em] text-ods-text-primary", children: [
26642
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: title }),
26643
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-accent", children: "." })
26644
+ ] }),
26645
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: "font-['DM_Sans'] text-base md:text-lg text-ods-text-secondary max-w-2xl", children: [
26646
+ effectiveLastUpdatedLabel ? `Last Updated: ${effectiveLastUpdatedLabel}` : fallbackDescription,
26647
+ _optionalChain([data, 'optionalAccess', _537 => _537.sourceFile]) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "block text-sm mt-1 opacity-75", children: [
26648
+ "Source: ",
26649
+ data.sourceFile
26650
+ ] })
26651
+ ] })
26652
+ ] });
26653
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, PageShell, { children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, PageLayout, { backButton: backCfg, children: [
26654
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-col gap-4", children: customTitle }),
26655
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-col lg:flex-row gap-6 lg:gap-10 items-start flex-1", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex-1", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "article", { className: "space-y-2", children: isLoading ? (
26656
+ // Loading skeleton matching Knowledge Hub pattern
26657
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-6", children: [
26658
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-10 bg-ods-skeleton rounded-lg w-3/4 animate-pulse" }),
26659
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4", children: [
26660
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-4 bg-ods-skeleton rounded w-full animate-pulse" }),
26661
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-4 bg-ods-skeleton rounded w-full animate-pulse" }),
26662
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-4 bg-ods-skeleton rounded w-5/6 animate-pulse" })
26663
+ ] }),
26664
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-32 bg-ods-card border border-ods-border rounded-lg animate-pulse" }),
26665
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4", children: [
26666
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-4 bg-ods-skeleton rounded w-full animate-pulse" }),
26667
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-4 bg-ods-skeleton rounded w-4/5 animate-pulse" })
26668
+ ] })
26669
+ ] })
26670
+ ) : error ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "text-center space-y-4", children: [
26671
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "bg-red-900/20 border border-red-700 rounded-lg p-6", children: [
26672
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-red-400 mb-2", children: errorTitle }),
26673
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-red-300 text-sm", children: error })
26674
+ ] }),
26675
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "text-ods-text-secondary", children: [
26676
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { children: errorContactPrompt }),
26677
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "a", { href: `mailto:${contactEmail}`, className: "text-ods-accent hover:underline", children: contactEmail })
26678
+ ] })
26679
+ ] }) : data ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
26680
+ MarkdownRenderer,
26681
+ {
26682
+ content: data.content,
26683
+ sectionIds: data.sections || [],
26684
+ demoteMarkdownH1ToH2: true
26685
+ }
26686
+ ) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "text-center text-ods-text-secondary py-16", children: [
26687
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-xl", children: emptyStateMessage }),
26688
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: "mt-2", children: [
26689
+ "Please contact",
26690
+ " ",
26691
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "a", { href: `mailto:${contactEmail}`, className: "text-ods-accent hover:underline", children: contactEmail }),
26692
+ " ",
26693
+ "for more information."
26694
+ ] })
26695
+ ] }) }) }) }) })
26696
+ ] }) });
26697
+ }
26698
+
25730
26699
  // src/components/ui/info-card.tsx
25731
26700
 
25732
26701
  function InfoCard({ data, className = "" }) {
@@ -26320,7 +27289,7 @@ function TagsManager({
26320
27289
  const name = search.trim();
26321
27290
  if (!name) return;
26322
27291
  const result = await onCreateTag(name);
26323
- if (_optionalChain([result, 'optionalAccess', _530 => _530.id])) {
27292
+ if (_optionalChain([result, 'optionalAccess', _538 => _538.id])) {
26324
27293
  onChange([...selectedIds, result.id]);
26325
27294
  setSearch("");
26326
27295
  }
@@ -26328,7 +27297,7 @@ function TagsManager({
26328
27297
  const startEdit = React71.useCallback((id, name) => {
26329
27298
  setEditingId(id);
26330
27299
  setEditingName(name);
26331
- setTimeout(() => _optionalChain([editInputRef, 'access', _531 => _531.current, 'optionalAccess', _532 => _532.focus, 'call', _533 => _533()]), 0);
27300
+ setTimeout(() => _optionalChain([editInputRef, 'access', _539 => _539.current, 'optionalAccess', _540 => _540.focus, 'call', _541 => _541()]), 0);
26332
27301
  }, []);
26333
27302
  const confirmEdit = React71.useCallback(async () => {
26334
27303
  if (!onUpdateTag || !editingId || !editingName.trim()) return;
@@ -26355,7 +27324,7 @@ function TagsManager({
26355
27324
  e.stopPropagation();
26356
27325
  onChange([]);
26357
27326
  setSearch("");
26358
- _optionalChain([inputRef, 'access', _534 => _534.current, 'optionalAccess', _535 => _535.focus, 'call', _536 => _536()]);
27327
+ _optionalChain([inputRef, 'access', _542 => _542.current, 'optionalAccess', _543 => _543.focus, 'call', _544 => _544()]);
26359
27328
  },
26360
27329
  [onChange]
26361
27330
  );
@@ -26454,10 +27423,10 @@ function TagsManager({
26454
27423
  align: "start",
26455
27424
  onOpenAutoFocus: (e) => {
26456
27425
  e.preventDefault();
26457
- _optionalChain([inputRef, 'access', _537 => _537.current, 'optionalAccess', _538 => _538.focus, 'call', _539 => _539()]);
27426
+ _optionalChain([inputRef, 'access', _545 => _545.current, 'optionalAccess', _546 => _546.focus, 'call', _547 => _547()]);
26458
27427
  },
26459
27428
  onInteractOutside: (e) => {
26460
- if (_optionalChain([containerRef, 'access', _540 => _540.current, 'optionalAccess', _541 => _541.contains, 'call', _542 => _542(e.target)])) {
27429
+ if (_optionalChain([containerRef, 'access', _548 => _548.current, 'optionalAccess', _549 => _549.contains, 'call', _550 => _550(e.target)])) {
26461
27430
  e.preventDefault();
26462
27431
  }
26463
27432
  },
@@ -27561,19 +28530,19 @@ function TabNavigation({
27561
28530
  const validTabIds = _react.useMemo.call(void 0, () => new Set(tabs.map((t) => t.id)), [tabs]);
27562
28531
  const getInitialTab = () => {
27563
28532
  if (isUrlSyncEnabled) {
27564
- const fromUrl = _optionalChain([searchParams, 'optionalAccess', _543 => _543.get, 'call', _544 => _544(paramName)]) || "";
28533
+ const fromUrl = _optionalChain([searchParams, 'optionalAccess', _551 => _551.get, 'call', _552 => _552(paramName)]) || "";
27565
28534
  if (validTabIds.has(fromUrl)) {
27566
28535
  return fromUrl;
27567
28536
  }
27568
28537
  }
27569
- return defaultTab || _optionalChain([tabs, 'access', _545 => _545[0], 'optionalAccess', _546 => _546.id]) || "";
28538
+ return defaultTab || _optionalChain([tabs, 'access', _553 => _553[0], 'optionalAccess', _554 => _554.id]) || "";
27570
28539
  };
27571
28540
  const [internalActiveTab, setInternalActiveTab] = _react.useState.call(void 0, getInitialTab);
27572
28541
  const activeTab = isUrlSyncEnabled ? internalActiveTab : controlledActiveTab || "";
27573
28542
  _react.useEffect.call(void 0, () => {
27574
28543
  if (!isUrlSyncEnabled) return;
27575
- const fromUrl = _optionalChain([searchParams, 'optionalAccess', _547 => _547.get, 'call', _548 => _548(paramName)]) || "";
27576
- const nextTab = validTabIds.has(fromUrl) ? fromUrl : defaultTab || _optionalChain([tabs, 'access', _549 => _549[0], 'optionalAccess', _550 => _550.id]) || "";
28544
+ const fromUrl = _optionalChain([searchParams, 'optionalAccess', _555 => _555.get, 'call', _556 => _556(paramName)]) || "";
28545
+ const nextTab = validTabIds.has(fromUrl) ? fromUrl : defaultTab || _optionalChain([tabs, 'access', _557 => _557[0], 'optionalAccess', _558 => _558.id]) || "";
27577
28546
  if (nextTab !== internalActiveTab) {
27578
28547
  setInternalActiveTab(nextTab);
27579
28548
  }
@@ -27581,13 +28550,13 @@ function TabNavigation({
27581
28550
  const handleTabChange = (tabId) => {
27582
28551
  if (isUrlSyncEnabled) {
27583
28552
  setInternalActiveTab(tabId);
27584
- const params = new URLSearchParams(_optionalChain([searchParams, 'optionalAccess', _551 => _551.toString, 'call', _552 => _552()]));
28553
+ const params = new URLSearchParams(_optionalChain([searchParams, 'optionalAccess', _559 => _559.toString, 'call', _560 => _560()]));
27585
28554
  params.set(paramName, tabId);
27586
28555
  const method = replaceState ? "replace" : "push";
27587
28556
  router[method](`${pathname}?${params.toString()}`);
27588
- _optionalChain([controlledOnTabChange, 'optionalCall', _553 => _553(tabId)]);
28557
+ _optionalChain([controlledOnTabChange, 'optionalCall', _561 => _561(tabId)]);
27589
28558
  } else {
27590
- _optionalChain([controlledOnTabChange, 'optionalCall', _554 => _554(tabId)]);
28559
+ _optionalChain([controlledOnTabChange, 'optionalCall', _562 => _562(tabId)]);
27591
28560
  }
27592
28561
  };
27593
28562
  const scrollRef = _react.useRef.call(void 0, null);
@@ -27675,7 +28644,7 @@ function TabNavigation({
27675
28644
  var getTabById = (tabs, tabId) => tabs.find((tab) => tab.id === tabId);
27676
28645
  var getTabComponent = (tabs, tabId) => {
27677
28646
  const tab = getTabById(tabs, tabId);
27678
- return _optionalChain([tab, 'optionalAccess', _555 => _555.component]) || null;
28647
+ return _optionalChain([tab, 'optionalAccess', _563 => _563.component]) || null;
27679
28648
  };
27680
28649
 
27681
28650
  // src/components/ui/alert.tsx
@@ -28116,16 +29085,16 @@ function FilterModal({
28116
29085
  };
28117
29086
  const handleReset = () => {
28118
29087
  onFilterChange({});
28119
- _optionalChain([onTagsChange, 'optionalCall', _556 => _556([])]);
29088
+ _optionalChain([onTagsChange, 'optionalCall', _564 => _564([])]);
28120
29089
  onClose();
28121
29090
  };
28122
29091
  const handleApply = () => {
28123
29092
  onFilterChange(selectedFilters);
28124
- _optionalChain([onTagsChange, 'optionalCall', _557 => _557(pendingTags)]);
29093
+ _optionalChain([onTagsChange, 'optionalCall', _565 => _565(pendingTags)]);
28125
29094
  onClose();
28126
29095
  };
28127
29096
  const getColumnDirection = (columnKey) => {
28128
- return _optionalChain([sortConfig, 'optionalAccess', _558 => _558.sortBy]) === columnKey ? sortConfig.sortDirection : void 0;
29097
+ return _optionalChain([sortConfig, 'optionalAccess', _566 => _566.sortBy]) === columnKey ? sortConfig.sortDirection : void 0;
28129
29098
  };
28130
29099
  const hasSort = !!sortConfig && sortConfig.columns.length > 0;
28131
29100
  const hasFilterGroups = filterGroups.length > 0;
@@ -28174,7 +29143,7 @@ function FilterModal({
28174
29143
  {
28175
29144
  column,
28176
29145
  currentDirection: getColumnDirection(column.key),
28177
- onSort: (direction) => _optionalChain([onSort, 'optionalCall', _559 => _559(column.key, direction)]),
29146
+ onSort: (direction) => _optionalChain([onSort, 'optionalCall', _567 => _567(column.key, direction)]),
28178
29147
  onClear: onSortClear ? () => onSortClear(column.key) : void 0
28179
29148
  },
28180
29149
  column.key
@@ -29093,26 +30062,26 @@ function DeviceCard({
29093
30062
  ] }),
29094
30063
  device.organization && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary truncate", title: device.organization, children: device.organization })
29095
30064
  ] }),
29096
- _optionalChain([actions, 'access', _560 => _560.moreButton, 'optionalAccess', _561 => _561.visible]) !== false && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
30065
+ _optionalChain([actions, 'access', _568 => _568.moreButton, 'optionalAccess', _569 => _569.visible]) !== false && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
29097
30066
  "div",
29098
30067
  {
29099
30068
  className: "flex items-center justify-center p-3 rounded-[6px] shrink-0 border border-ods-border cursor-pointer hover:bg-ods-bg-hover transition-colors",
29100
30069
  onClick: (e) => {
29101
30070
  e.stopPropagation();
29102
- _optionalChain([actions, 'access', _562 => _562.moreButton, 'optionalAccess', _563 => _563.onClick, 'optionalCall', _564 => _564()]);
30071
+ _optionalChain([actions, 'access', _570 => _570.moreButton, 'optionalAccess', _571 => _571.onClick, 'optionalCall', _572 => _572()]);
29103
30072
  },
29104
30073
  children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVJTFBYVGcjs.Ellipsis01Icon, { className: "text-ods-text-primary" })
29105
30074
  }
29106
30075
  ),
29107
- _optionalChain([actions, 'access', _565 => _565.detailsButton, 'optionalAccess', _566 => _566.visible]) !== false && _optionalChain([actions, 'access', _567 => _567.detailsButton, 'optionalAccess', _568 => _568.component]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "shrink-0", onClick: (e) => e.stopPropagation(), children: actions.detailsButton.component }),
29108
- _optionalChain([actions, 'access', _569 => _569.customActions, 'optionalAccess', _570 => _570.map, 'call', _571 => _571(
30076
+ _optionalChain([actions, 'access', _573 => _573.detailsButton, 'optionalAccess', _574 => _574.visible]) !== false && _optionalChain([actions, 'access', _575 => _575.detailsButton, 'optionalAccess', _576 => _576.component]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "shrink-0", onClick: (e) => e.stopPropagation(), children: actions.detailsButton.component }),
30077
+ _optionalChain([actions, 'access', _577 => _577.customActions, 'optionalAccess', _578 => _578.map, 'call', _579 => _579(
29109
30078
  (action, index) => action.visible !== false && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
29110
30079
  "div",
29111
30080
  {
29112
30081
  className: "flex items-center justify-center px-4 py-3 rounded-[6px] shrink-0 border border-ods-border cursor-pointer hover:bg-ods-bg-hover transition-colors",
29113
30082
  onClick: (e) => {
29114
30083
  e.stopPropagation();
29115
- _optionalChain([action, 'access', _572 => _572.onClick, 'optionalCall', _573 => _573()]);
30084
+ _optionalChain([action, 'access', _580 => _580.onClick, 'optionalCall', _581 => _581()]);
29116
30085
  },
29117
30086
  children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-h3 text-ods-text-primary text-nowrap tracking-[-0.36px]", children: action.label })
29118
30087
  },
@@ -29545,7 +30514,7 @@ function MoreActionsMenu({
29545
30514
  ] });
29546
30515
  const handleActivate = (e) => {
29547
30516
  e.stopPropagation();
29548
- if (!item.disabled) _optionalChain([item, 'access', _574 => _574.onClick, 'optionalCall', _575 => _575()]);
30517
+ if (!item.disabled) _optionalChain([item, 'access', _582 => _582.onClick, 'optionalCall', _583 => _583()]);
29549
30518
  };
29550
30519
  if (item.href) {
29551
30520
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -29675,7 +30644,7 @@ function OrganizationCard({
29675
30644
  const handleActionClick = (e) => {
29676
30645
  e.preventDefault();
29677
30646
  e.stopPropagation();
29678
- _optionalChain([actionButton, 'optionalAccess', _576 => _576.onClick, 'call', _577 => _577(organization, e)]);
30647
+ _optionalChain([actionButton, 'optionalAccess', _584 => _584.onClick, 'call', _585 => _585(organization, e)]);
29679
30648
  };
29680
30649
  const card = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
29681
30650
  "div",
@@ -29828,7 +30797,7 @@ var LogCard = ({ log, isLast, showConnector, onClick }) => {
29828
30797
  onKeyDown: (e) => {
29829
30798
  if (e.key === "Enter" || e.key === " ") {
29830
30799
  e.preventDefault();
29831
- _optionalChain([onClick, 'optionalCall', _578 => _578()]);
30800
+ _optionalChain([onClick, 'optionalCall', _586 => _586()]);
29832
30801
  }
29833
30802
  },
29834
30803
  children: [
@@ -29929,7 +30898,7 @@ var LogsList = React96.forwardRef(({
29929
30898
  log,
29930
30899
  isLast: index === logs.length - 1,
29931
30900
  showConnector,
29932
- onClick: () => _optionalChain([onLogClick, 'optionalCall', _579 => _579(log)])
30901
+ onClick: () => _optionalChain([onLogClick, 'optionalCall', _587 => _587(log)])
29933
30902
  },
29934
30903
  log.id
29935
30904
  ))
@@ -29940,74 +30909,6 @@ var LogsList = React96.forwardRef(({
29940
30909
  });
29941
30910
  LogsList.displayName = "LogsList";
29942
30911
 
29943
- // src/types/announcement.ts
29944
- var AVAILABLE_SVG_ICONS = [
29945
- // OpenFrame Logo Options
29946
- { name: "openframe-logo", label: "OpenFrame Logo", component: null },
29947
- // Platform Logos
29948
- { name: "openmsp-logo", label: "OpenMSP Logo", component: null },
29949
- { name: "flamingo-logo", label: "Flamingo Logo", component: null },
29950
- // Lucide Icons
29951
- { name: "megaphone", label: "Megaphone", component: null },
29952
- { name: "bell", label: "Bell", component: null },
29953
- { name: "info", label: "Information", component: null },
29954
- { name: "star", label: "Star", component: null },
29955
- { name: "rocket", label: "Rocket", component: null },
29956
- { name: "package", label: "Package", component: null }
29957
- ];
29958
-
29959
- // src/types/product-release.ts
29960
- var releaseTypeOptions = [
29961
- { value: "major", label: "Major Release", description: "Breaking changes, new architecture", color: "red" },
29962
- { value: "minor", label: "Minor Release", description: "New features, backward compatible", color: "blue" },
29963
- { value: "patch", label: "Patch Release", description: "Bug fixes only", color: "green" },
29964
- { value: "beta", label: "Beta Release", description: "Pre-release testing version", color: "yellow" },
29965
- { value: "alpha", label: "Alpha Release", description: "Early testing version", color: "orange" }
29966
- ];
29967
- var releaseStatusOptions = [
29968
- { value: "alpha", label: "Alpha", description: "Early development, unstable", color: "orange" },
29969
- { value: "beta", label: "Beta", description: "Feature complete, testing", color: "yellow" },
29970
- { value: "stable", label: "Stable", description: "Production ready", color: "green" },
29971
- { value: "deprecated", label: "Deprecated", description: "No longer supported", color: "gray" }
29972
- ];
29973
- var changelogLabels = {
29974
- features_added: "Features Added",
29975
- bugs_fixed: "Bugs Fixed",
29976
- improvements: "Improvements",
29977
- breaking_changes: "Breaking Changes"
29978
- };
29979
- var SEMVER_REGEX = /^\d+\.\d+\.\d+(-[a-zA-Z0-9.-]+)?(\+[a-zA-Z0-9.-]+)?$/;
29980
-
29981
- // src/types/tmcg.ts
29982
- var TMCG_ROLES = {
29983
- FOUNDER: "founder",
29984
- ORGANIZER: "organizer",
29985
- MEMBER: "member",
29986
- CONTRIBUTOR: "contributor",
29987
- SPEAKER: "speaker",
29988
- MENTOR: "mentor"
29989
- };
29990
- var TMCG_ROLE_DISPLAY_NAMES = {
29991
- [TMCG_ROLES.FOUNDER]: "Founder",
29992
- [TMCG_ROLES.ORGANIZER]: "Organizer",
29993
- [TMCG_ROLES.MEMBER]: "Member",
29994
- [TMCG_ROLES.CONTRIBUTOR]: "Contributor",
29995
- [TMCG_ROLES.SPEAKER]: "Speaker",
29996
- [TMCG_ROLES.MENTOR]: "Mentor"
29997
- };
29998
- var TMCG_SOCIAL_PLATFORMS = {
29999
- linkedin: "LinkedIn",
30000
- twitter: "Twitter",
30001
- github: "GitHub",
30002
- website: "Website",
30003
- youtube: "YouTube",
30004
- instagram: "Instagram",
30005
- facebook: "Facebook",
30006
- discord: "Discord",
30007
- telegram: "Telegram",
30008
- slack: "Slack"
30009
- };
30010
-
30011
30912
  // src/assets/index.ts
30012
30913
  var assets = {};
30013
30914
 
@@ -30184,125 +31085,6 @@ var TooltipContent = React98.forwardRef(({ className, sideOffset = 4, ...props }
30184
31085
  ) }));
30185
31086
  TooltipContent.displayName = TooltipPrimitive.Content.displayName;
30186
31087
 
30187
- // src/components/ui/error-state.tsx
30188
- _chunkKUZGEA7Ucjs.init_button2.call(void 0, );
30189
- _chunk664KA5FIcjs.init_cn.call(void 0, );
30190
-
30191
-
30192
- function ErrorState({
30193
- title = "Error",
30194
- message: message2,
30195
- variant = "error",
30196
- showIcon = true,
30197
- showRetry = false,
30198
- showHome = false,
30199
- onRetry,
30200
- onHome,
30201
- className,
30202
- containerClassName
30203
- }) {
30204
- const getVariantStyles = () => {
30205
- switch (variant) {
30206
- case "error":
30207
- return {
30208
- bg: "bg-ods-attention-red-error/20",
30209
- border: "border-ods-attention-red-error",
30210
- text: "text-ods-attention-red-error",
30211
- icon: "text-ods-attention-red-error"
30212
- };
30213
- case "warning":
30214
- return {
30215
- bg: "bg-ods-attention-yellow-warning/20",
30216
- border: "border-ods-attention-yellow-warning",
30217
- text: "text-ods-attention-yellow-warning",
30218
- icon: "text-ods-attention-yellow-warning"
30219
- };
30220
- case "info":
30221
- return {
30222
- bg: "bg-ods-bg-surface",
30223
- border: "border-ods-border",
30224
- text: "text-ods-text-secondary",
30225
- icon: "text-ods-text-secondary"
30226
- };
30227
- }
30228
- };
30229
- const styles = getVariantStyles();
30230
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk664KA5FIcjs.cn.call(void 0, "p-6", containerClassName), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk664KA5FIcjs.cn.call(void 0,
30231
- "rounded-lg p-4 border",
30232
- styles.bg,
30233
- styles.border,
30234
- className
30235
- ), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-start gap-3", children: [
30236
- showIcon && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.AlertTriangle, { className: _chunk664KA5FIcjs.cn.call(void 0, "h-5 w-5 mt-0.5 flex-shrink-0", styles.icon) }),
30237
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-1", children: [
30238
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: _chunk664KA5FIcjs.cn.call(void 0, "font-semibold mb-1", styles.text), children: title }),
30239
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: _chunk664KA5FIcjs.cn.call(void 0, "text-sm", styles.text), children: message2 }),
30240
- (showRetry || showHome) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex gap-2 mt-3", children: [
30241
- showRetry && onRetry && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
30242
- _chunkKUZGEA7Ucjs.Button,
30243
- {
30244
- onClick: onRetry,
30245
- variant: "outline",
30246
- size: "small-legacy",
30247
- className: "h-8",
30248
- leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.RefreshCw, { className: "h-4 w-4" }),
30249
- children: "Try Again"
30250
- }
30251
- ),
30252
- showHome && onHome && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
30253
- _chunkKUZGEA7Ucjs.Button,
30254
- {
30255
- onClick: onHome,
30256
- variant: "outline",
30257
- size: "small-legacy",
30258
- className: "h-8",
30259
- leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Home, { className: "h-4 w-4" }),
30260
- children: "Go Home"
30261
- }
30262
- )
30263
- ] })
30264
- ] })
30265
- ] }) }) });
30266
- }
30267
- function PageError({ message: message2, onRetry, onHome }) {
30268
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
30269
- ErrorState,
30270
- {
30271
- title: "Page Error",
30272
- message: message2,
30273
- variant: "error",
30274
- showRetry: !!onRetry,
30275
- showHome: !!onHome,
30276
- onRetry,
30277
- onHome
30278
- }
30279
- );
30280
- }
30281
- function LoadError({ message: message2, onRetry }) {
30282
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
30283
- ErrorState,
30284
- {
30285
- title: "Loading Error",
30286
- message: message2,
30287
- variant: "error",
30288
- showRetry: !!onRetry,
30289
- onRetry
30290
- }
30291
- );
30292
- }
30293
- function NotFoundError({ message: message2 = "The requested item was not found", onHome }) {
30294
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
30295
- ErrorState,
30296
- {
30297
- title: "Not Found",
30298
- message: message2,
30299
- variant: "warning",
30300
- showHome: !!onHome,
30301
- onHome
30302
- }
30303
- );
30304
- }
30305
-
30306
31088
  // src/components/ui/content-loader.tsx
30307
31089
  _chunk664KA5FIcjs.init_cn.call(void 0, );
30308
31090
 
@@ -30518,7 +31300,7 @@ function CursorPaginationSimple({
30518
31300
  {
30519
31301
  variant: "transparent",
30520
31302
  size: "icon",
30521
- onClick: () => _optionalChain([onPrevious, 'optionalCall', _580 => _580("")]),
31303
+ onClick: () => _optionalChain([onPrevious, 'optionalCall', _588 => _588("")]),
30522
31304
  disabled: !hasPreviousPage || loading,
30523
31305
  className: "h-8 w-8",
30524
31306
  leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ChevronLeft, { className: "h-4 w-4" }),
@@ -30530,7 +31312,7 @@ function CursorPaginationSimple({
30530
31312
  {
30531
31313
  variant: "transparent",
30532
31314
  size: "icon",
30533
- onClick: () => _optionalChain([onNext, 'optionalCall', _581 => _581("")]),
31315
+ onClick: () => _optionalChain([onNext, 'optionalCall', _589 => _589("")]),
30534
31316
  disabled: !hasNextPage || loading,
30535
31317
  className: "h-8 w-8",
30536
31318
  rightIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ChevronRight, { className: "h-4 w-4" }),
@@ -30590,7 +31372,7 @@ function TableColumnFilterDropdown({
30590
31372
  placement = "bottom-start",
30591
31373
  dropdownClassName = "min-w-[240px]"
30592
31374
  }) {
30593
- const activeCount = _optionalChain([filters, 'optionalAccess', _582 => _582[columnKey], 'optionalAccess', _583 => _583.length]) || 0;
31375
+ const activeCount = _optionalChain([filters, 'optionalAccess', _590 => _590[columnKey], 'optionalAccess', _591 => _591.length]) || 0;
30594
31376
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
30595
31377
  FiltersDropdown,
30596
31378
  {
@@ -30633,7 +31415,7 @@ function TableColumnFilterDropdown({
30633
31415
  delete newFilters[columnKey];
30634
31416
  onFilterChange(newFilters);
30635
31417
  },
30636
- currentFilters: { [columnKey]: _optionalChain([filters, 'optionalAccess', _584 => _584[columnKey]]) || [] },
31418
+ currentFilters: { [columnKey]: _optionalChain([filters, 'optionalAccess', _592 => _592[columnKey]]) || [] },
30637
31419
  placement,
30638
31420
  dropdownClassName
30639
31421
  }
@@ -30930,7 +31712,7 @@ function TableRow({
30930
31712
  const keys = column.key.split(".");
30931
31713
  let value = item;
30932
31714
  for (const key of keys) {
30933
- value = _optionalChain([value, 'optionalAccess', _585 => _585[key]]);
31715
+ value = _optionalChain([value, 'optionalAccess', _593 => _593[key]]);
30934
31716
  }
30935
31717
  if (value === null || value === void 0) {
30936
31718
  return "-";
@@ -31000,7 +31782,7 @@ function TableRow({
31000
31782
  // src/components/ui/table/table.tsx
31001
31783
 
31002
31784
  function injectSyntheticColumns(columns, rowActions, renderRowActions, rowHref) {
31003
- const hasActions = Boolean(_optionalChain([rowActions, 'optionalAccess', _586 => _586.length])) || Boolean(renderRowActions);
31785
+ const hasActions = Boolean(_optionalChain([rowActions, 'optionalAccess', _594 => _594.length])) || Boolean(renderRowActions);
31004
31786
  const result = [...columns];
31005
31787
  if (hasActions) {
31006
31788
  const actionsColumn = {
@@ -31094,7 +31876,7 @@ function Table({
31094
31876
  return rowKey(item);
31095
31877
  }
31096
31878
  const key = item[rowKey];
31097
- return _optionalChain([key, 'optionalAccess', _587 => _587.toString, 'call', _588 => _588()]) || index.toString();
31879
+ return _optionalChain([key, 'optionalAccess', _595 => _595.toString, 'call', _596 => _596()]) || index.toString();
31098
31880
  };
31099
31881
  const getRowClassName = (item, index) => {
31100
31882
  if (typeof rowClassName === "function") {
@@ -31128,23 +31910,23 @@ function Table({
31128
31910
  const allSelected = selectedRows.length > 0 && selectedRows.length === data.length;
31129
31911
  const someSelected = selectedRows.length > 0 && selectedRows.length < data.length;
31130
31912
  const sentinelRef = _react.useRef.call(void 0, null);
31131
- const onLoadMoreRef = _react.useRef.call(void 0, _optionalChain([infiniteScroll, 'optionalAccess', _589 => _589.onLoadMore]));
31132
- onLoadMoreRef.current = _optionalChain([infiniteScroll, 'optionalAccess', _590 => _590.onLoadMore]);
31913
+ const onLoadMoreRef = _react.useRef.call(void 0, _optionalChain([infiniteScroll, 'optionalAccess', _597 => _597.onLoadMore]));
31914
+ onLoadMoreRef.current = _optionalChain([infiniteScroll, 'optionalAccess', _598 => _598.onLoadMore]);
31133
31915
  _react.useEffect.call(void 0, () => {
31134
- if (!_optionalChain([infiniteScroll, 'optionalAccess', _591 => _591.hasNextPage]) || infiniteScroll.isFetchingNextPage) return;
31916
+ if (!_optionalChain([infiniteScroll, 'optionalAccess', _599 => _599.hasNextPage]) || infiniteScroll.isFetchingNextPage) return;
31135
31917
  const sentinel = sentinelRef.current;
31136
31918
  if (!sentinel) return;
31137
31919
  const observer = new IntersectionObserver(
31138
31920
  (entries) => {
31139
- if (_optionalChain([entries, 'access', _592 => _592[0], 'optionalAccess', _593 => _593.isIntersecting])) {
31140
- _optionalChain([onLoadMoreRef, 'access', _594 => _594.current, 'optionalCall', _595 => _595()]);
31921
+ if (_optionalChain([entries, 'access', _600 => _600[0], 'optionalAccess', _601 => _601.isIntersecting])) {
31922
+ _optionalChain([onLoadMoreRef, 'access', _602 => _602.current, 'optionalCall', _603 => _603()]);
31141
31923
  }
31142
31924
  },
31143
31925
  { rootMargin: "200px" }
31144
31926
  );
31145
31927
  observer.observe(sentinel);
31146
31928
  return () => observer.disconnect();
31147
- }, [_optionalChain([infiniteScroll, 'optionalAccess', _596 => _596.hasNextPage]), _optionalChain([infiniteScroll, 'optionalAccess', _597 => _597.isFetchingNextPage])]);
31929
+ }, [_optionalChain([infiniteScroll, 'optionalAccess', _604 => _604.hasNextPage]), _optionalChain([infiniteScroll, 'optionalAccess', _605 => _605.isFetchingNextPage])]);
31148
31930
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk664KA5FIcjs.cn.call(void 0, "flex flex-col gap-1 w-full", containerClassName), children: [
31149
31931
  showToolbar && bulkActions && selectedRows.length > 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center justify-between bg-ods-card border border-ods-border rounded-[6px] p-3 mb-2", children: [
31150
31932
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "text-ods-text-secondary text-sm", children: [
@@ -31215,7 +31997,7 @@ function Table({
31215
31997
  },
31216
31998
  getRowKey(item, index)
31217
31999
  )),
31218
- _optionalChain([infiniteScroll, 'optionalAccess', _598 => _598.isFetchingNextPage]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
32000
+ _optionalChain([infiniteScroll, 'optionalAccess', _606 => _606.isFetchingNextPage]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
31219
32001
  TableCardSkeleton,
31220
32002
  {
31221
32003
  columns,
@@ -31224,7 +32006,7 @@ function Table({
31224
32006
  hasChevron: Boolean(rowHref)
31225
32007
  }
31226
32008
  ),
31227
- _optionalChain([infiniteScroll, 'optionalAccess', _599 => _599.hasNextPage]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: sentinelRef, className: "h-1", "aria-hidden": "true" }),
32009
+ _optionalChain([infiniteScroll, 'optionalAccess', _607 => _607.hasNextPage]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: sentinelRef, className: "h-1", "aria-hidden": "true" }),
31228
32010
  !infiniteScroll && Array.from({ length: Math.max(0, skeletonRows - data.length) }).map((_, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
31229
32011
  "div",
31230
32012
  {
@@ -31582,7 +32364,7 @@ function QueryReportTable({
31582
32364
  );
31583
32365
  const handleExport = () => {
31584
32366
  exportToCSV(data, columns, exportFilename);
31585
- _optionalChain([onExport, 'optionalCall', _600 => _600()]);
32367
+ _optionalChain([onExport, 'optionalCall', _608 => _608()]);
31586
32368
  };
31587
32369
  const tableMinWidth = columns.length * (columnWidth + 16);
31588
32370
  const {
@@ -31755,7 +32537,7 @@ function DataTableColumnFilter({
31755
32537
  align = "left"
31756
32538
  }) {
31757
32539
  const currentValue = column.getFilterValue();
31758
- const activeCount = _nullishCoalesce(_optionalChain([currentValue, 'optionalAccess', _601 => _601.length]), () => ( 0));
32540
+ const activeCount = _nullishCoalesce(_optionalChain([currentValue, 'optionalAccess', _609 => _609.length]), () => ( 0));
31759
32541
  const sections = _react.useMemo.call(void 0,
31760
32542
  () => [
31761
32543
  {
@@ -31835,7 +32617,7 @@ function DataTableHeader({
31835
32617
  const hasVisibleHeaderCell = headerGroup.headers.some((header) => {
31836
32618
  if (header.isPlaceholder) return false;
31837
32619
  if (isLgUp) return true;
31838
- return Boolean(_optionalChain([header, 'access', _602 => _602.column, 'access', _603 => _603.columnDef, 'access', _604 => _604.meta, 'optionalAccess', _605 => _605.filter]));
32620
+ return Boolean(_optionalChain([header, 'access', _610 => _610.column, 'access', _611 => _611.columnDef, 'access', _612 => _612.meta, 'optionalAccess', _613 => _613.filter]));
31839
32621
  });
31840
32622
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
31841
32623
  "div",
@@ -31865,20 +32647,20 @@ function HeaderCell({ header, isLgUp, sort, onSortChange }) {
31865
32647
  if (header.isPlaceholder) return null;
31866
32648
  const column = header.column;
31867
32649
  const meta = column.columnDef.meta;
31868
- const hasFilter = Boolean(_optionalChain([meta, 'optionalAccess', _606 => _606.filter]));
31869
- const align = _nullishCoalesce(_optionalChain([meta, 'optionalAccess', _607 => _607.align]), () => ( "left"));
31870
- const canSort = _optionalChain([meta, 'optionalAccess', _608 => _608.sortable]) === true;
31871
- const sortDir = _optionalChain([sort, 'optionalAccess', _609 => _609.id]) === column.id ? sort.desc ? "desc" : "asc" : false;
32650
+ const hasFilter = Boolean(_optionalChain([meta, 'optionalAccess', _614 => _614.filter]));
32651
+ const align = _nullishCoalesce(_optionalChain([meta, 'optionalAccess', _615 => _615.align]), () => ( "left"));
32652
+ const canSort = _optionalChain([meta, 'optionalAccess', _616 => _616.sortable]) === true;
32653
+ const sortDir = _optionalChain([sort, 'optionalAccess', _617 => _617.id]) === column.id ? sort.desc ? "desc" : "asc" : false;
31872
32654
  if (!isLgUp && !hasFilter) return null;
31873
32655
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
31874
32656
  "div",
31875
32657
  {
31876
32658
  className: _chunk664KA5FIcjs.cn.call(void 0,
31877
32659
  "flex items-stretch",
31878
- isLgUp && (_optionalChain([meta, 'optionalAccess', _610 => _610.width]) || "flex-1 min-w-0"),
31879
- _optionalChain([meta, 'optionalAccess', _611 => _611.headerClassName]),
32660
+ isLgUp && (_optionalChain([meta, 'optionalAccess', _618 => _618.width]) || "flex-1 min-w-0"),
32661
+ _optionalChain([meta, 'optionalAccess', _619 => _619.headerClassName]),
31880
32662
  // Don't apply hide classes if column is filterable on tablet (keep filter accessible)
31881
- !(hasFilter && !isLgUp) && getHideClasses2(_optionalChain([meta, 'optionalAccess', _612 => _612.hideAt]))
32663
+ !(hasFilter && !isLgUp) && getHideClasses2(_optionalChain([meta, 'optionalAccess', _620 => _620.hideAt]))
31882
32664
  ),
31883
32665
  children: hasFilter ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
31884
32666
  DataTableColumnFilter,
@@ -31897,7 +32679,7 @@ function HeaderCell({ header, isLgUp, sort, onSortChange }) {
31897
32679
  isLgUp && alignJustify(align),
31898
32680
  canSort && "group cursor-pointer"
31899
32681
  ),
31900
- onClick: canSort ? () => _optionalChain([onSortChange, 'optionalCall', _613 => _613(column.id)]) : void 0,
32682
+ onClick: canSort ? () => _optionalChain([onSortChange, 'optionalCall', _621 => _621(column.id)]) : void 0,
31901
32683
  children: [
31902
32684
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, HeaderLabel, { header }),
31903
32685
  canSort && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SortIcon, { sorted: sortDir })
@@ -31981,7 +32763,7 @@ function DataTableSkeleton({
31981
32763
  }) {
31982
32764
  const table = useDataTableContext();
31983
32765
  const columns = table.getVisibleFlatColumns();
31984
- const firstColumnId = _optionalChain([columns, 'access', _614 => _614[0], 'optionalAccess', _615 => _615.id]);
32766
+ const firstColumnId = _optionalChain([columns, 'access', _622 => _622[0], 'optionalAccess', _623 => _623.id]);
31985
32767
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, { children: Array.from({ length: rows }).map((_, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
31986
32768
  "div",
31987
32769
  {
@@ -32005,7 +32787,7 @@ function DataTableSkeleton({
32005
32787
  {
32006
32788
  className: _chunk664KA5FIcjs.cn.call(void 0,
32007
32789
  "flex flex-col justify-center shrink-0",
32008
- _optionalChain([meta, 'optionalAccess', _616 => _616.width]) || "flex-1"
32790
+ _optionalChain([meta, 'optionalAccess', _624 => _624.width]) || "flex-1"
32009
32791
  ),
32010
32792
  children: [
32011
32793
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-5 bg-ods-bg-surface rounded-sm w-3/4 mb-[var(--spacing-system-xxs)]" }),
@@ -32051,7 +32833,7 @@ function DataTableRowImpl({
32051
32833
  const handleClick = _react.useCallback.call(void 0,
32052
32834
  (e) => {
32053
32835
  const target = e.target;
32054
- if (!_optionalChain([containerRef, 'access', _617 => _617.current, 'optionalAccess', _618 => _618.contains, 'call', _619 => _619(target)])) {
32836
+ if (!_optionalChain([containerRef, 'access', _625 => _625.current, 'optionalAccess', _626 => _626.contains, 'call', _627 => _627(target)])) {
32055
32837
  if (isLinkMode) e.preventDefault();
32056
32838
  return;
32057
32839
  }
@@ -32059,7 +32841,7 @@ function DataTableRowImpl({
32059
32841
  if (isLinkMode) e.preventDefault();
32060
32842
  return;
32061
32843
  }
32062
- _optionalChain([onClick, 'optionalCall', _620 => _620(row.original)]);
32844
+ _optionalChain([onClick, 'optionalCall', _628 => _628(row.original)]);
32063
32845
  },
32064
32846
  [onClick, row.original, isLinkMode]
32065
32847
  );
@@ -32082,10 +32864,10 @@ function DataTableRowImpl({
32082
32864
  {
32083
32865
  className: _chunk664KA5FIcjs.cn.call(void 0,
32084
32866
  "flex flex-col overflow-hidden",
32085
- alignJustify(_optionalChain([meta, 'optionalAccess', _621 => _621.align])),
32086
- _optionalChain([meta, 'optionalAccess', _622 => _622.width]) || "flex-1 min-w-0",
32087
- _optionalChain([meta, 'optionalAccess', _623 => _623.cellClassName]),
32088
- getHideClasses2(_optionalChain([meta, 'optionalAccess', _624 => _624.hideAt]))
32867
+ alignJustify(_optionalChain([meta, 'optionalAccess', _629 => _629.align])),
32868
+ _optionalChain([meta, 'optionalAccess', _630 => _630.width]) || "flex-1 min-w-0",
32869
+ _optionalChain([meta, 'optionalAccess', _631 => _631.cellClassName]),
32870
+ getHideClasses2(_optionalChain([meta, 'optionalAccess', _632 => _632.hideAt]))
32089
32871
  ),
32090
32872
  children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CellContent, { children: _reacttable.flexRender.call(void 0, cell.column.columnDef.cell, cell.getContext()) })
32091
32873
  },
@@ -32150,7 +32932,7 @@ function DataTableBody({
32150
32932
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk664KA5FIcjs.cn.call(void 0, "flex flex-col gap-[var(--spacing-system-xsf)] w-full", className), children: [
32151
32933
  rows.map((row, index) => {
32152
32934
  const item = row.original;
32153
- const href = _nullishCoalesce(_optionalChain([rowHref, 'optionalCall', _625 => _625(item)]), () => ( void 0));
32935
+ const href = _nullishCoalesce(_optionalChain([rowHref, 'optionalCall', _633 => _633(item)]), () => ( void 0));
32154
32936
  const cls = typeof rowClassName === "function" ? rowClassName(item, index) : rowClassName;
32155
32937
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
32156
32938
  DataTableRow,
@@ -32214,7 +32996,7 @@ function DataTableInfiniteFooter({
32214
32996
  if (!sentinel) return;
32215
32997
  const observer = new IntersectionObserver(
32216
32998
  (entries) => {
32217
- if (_optionalChain([entries, 'access', _626 => _626[0], 'optionalAccess', _627 => _627.isIntersecting])) onLoadMoreRef.current();
32999
+ if (_optionalChain([entries, 'access', _634 => _634[0], 'optionalAccess', _635 => _635.isIntersecting])) onLoadMoreRef.current();
32218
33000
  },
32219
33001
  { rootMargin }
32220
33002
  );
@@ -32262,7 +33044,7 @@ function DataTableRowCount({
32262
33044
  const table = useDataTableContext();
32263
33045
  const count = _nullishCoalesce(totalCount, () => ( table.getRowModel().rows.length));
32264
33046
  if (hideWhenEmpty && count === 0) return null;
32265
- const label = _nullishCoalesce(_optionalChain([pluralize, 'optionalCall', _628 => _628(count, itemName)]), () => ( (count === 1 ? itemName : `${itemName}s`)));
33047
+ const label = _nullishCoalesce(_optionalChain([pluralize, 'optionalCall', _636 => _636(count, itemName)]), () => ( (count === 1 ? itemName : `${itemName}s`)));
32266
33048
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
32267
33049
  "span",
32268
33050
  {
@@ -32418,7 +33200,7 @@ function SearchInput({
32418
33200
  if (!showHiddenTags) return;
32419
33201
  const handleClick = (e) => {
32420
33202
  const target = e.target;
32421
- if (!_optionalChain([hiddenTagsRef, 'access', _629 => _629.current, 'optionalAccess', _630 => _630.contains, 'call', _631 => _631(target)]) && !_optionalChain([hiddenTagsPopupRef, 'access', _632 => _632.current, 'optionalAccess', _633 => _633.contains, 'call', _634 => _634(target)])) {
33203
+ if (!_optionalChain([hiddenTagsRef, 'access', _637 => _637.current, 'optionalAccess', _638 => _638.contains, 'call', _639 => _639(target)]) && !_optionalChain([hiddenTagsPopupRef, 'access', _640 => _640.current, 'optionalAccess', _641 => _641.contains, 'call', _642 => _642(target)])) {
32422
33204
  setShowHiddenTags(false);
32423
33205
  }
32424
33206
  };
@@ -32466,10 +33248,10 @@ function SearchInput({
32466
33248
  } else {
32467
33249
  setInternalValue("");
32468
33250
  }
32469
- _optionalChain([inputRef, 'access', _635 => _635.current, 'optionalAccess', _636 => _636.focus, 'call', _637 => _637()]);
33251
+ _optionalChain([inputRef, 'access', _643 => _643.current, 'optionalAccess', _644 => _644.focus, 'call', _645 => _645()]);
32470
33252
  };
32471
33253
  const handleResultClick = (result, e) => {
32472
- _optionalChain([onResultSelect, 'optionalCall', _638 => _638(
33254
+ _optionalChain([onResultSelect, 'optionalCall', _646 => _646(
32473
33255
  result,
32474
33256
  e ? {
32475
33257
  metaKey: e.metaKey,
@@ -32501,7 +33283,7 @@ function SearchInput({
32501
33283
  if (highlightedIndex >= 0 && flatResults[highlightedIndex]) {
32502
33284
  handleResultClick(flatResults[highlightedIndex]);
32503
33285
  } else {
32504
- _optionalChain([onSubmit, 'optionalCall', _639 => _639(currentValue)]);
33286
+ _optionalChain([onSubmit, 'optionalCall', _647 => _647(currentValue)]);
32505
33287
  }
32506
33288
  break;
32507
33289
  case "Escape":
@@ -32579,7 +33361,7 @@ function SearchInput({
32579
33361
  dropdownVisible && "!border-ods-accent"
32580
33362
  ),
32581
33363
  onClick: () => {
32582
- _optionalChain([inputRef, 'access', _640 => _640.current, 'optionalAccess', _641 => _641.focus, 'call', _642 => _642()]);
33364
+ _optionalChain([inputRef, 'access', _648 => _648.current, 'optionalAccess', _649 => _649.focus, 'call', _650 => _650()]);
32583
33365
  setIsOpen(true);
32584
33366
  },
32585
33367
  children: [
@@ -32663,10 +33445,10 @@ function SearchInput({
32663
33445
  align: "start",
32664
33446
  onOpenAutoFocus: (e) => {
32665
33447
  e.preventDefault();
32666
- _optionalChain([inputRef, 'access', _643 => _643.current, 'optionalAccess', _644 => _644.focus, 'call', _645 => _645()]);
33448
+ _optionalChain([inputRef, 'access', _651 => _651.current, 'optionalAccess', _652 => _652.focus, 'call', _653 => _653()]);
32667
33449
  },
32668
33450
  onInteractOutside: (e) => {
32669
- if (_optionalChain([containerRef, 'access', _646 => _646.current, 'optionalAccess', _647 => _647.contains, 'call', _648 => _648(e.target)])) {
33451
+ if (_optionalChain([containerRef, 'access', _654 => _654.current, 'optionalAccess', _655 => _655.contains, 'call', _656 => _656(e.target)])) {
32670
33452
  e.preventDefault();
32671
33453
  }
32672
33454
  },
@@ -32683,10 +33465,10 @@ function SearchInput({
32683
33465
  ref: hiddenTagsPopupRef,
32684
33466
  items: hiddenChips.map((chip) => ({ label: chip.label, value: chip.id })),
32685
33467
  style: {
32686
- left: badgeRef.current ? badgeRef.current.getBoundingClientRect().left - (_nullishCoalesce(_optionalChain([containerRef, 'access', _649 => _649.current, 'optionalAccess', _650 => _650.getBoundingClientRect, 'call', _651 => _651(), 'access', _652 => _652.left]), () => ( 0))) : 0
33468
+ left: badgeRef.current ? badgeRef.current.getBoundingClientRect().left - (_nullishCoalesce(_optionalChain([containerRef, 'access', _657 => _657.current, 'optionalAccess', _658 => _658.getBoundingClientRect, 'call', _659 => _659(), 'access', _660 => _660.left]), () => ( 0))) : 0
32687
33469
  },
32688
33470
  onRemove: (value2) => {
32689
- _optionalChain([onFilterRemove, 'optionalCall', _653 => _653(value2)]);
33471
+ _optionalChain([onFilterRemove, 'optionalCall', _661 => _661(value2)]);
32690
33472
  if (hiddenCount <= 1) setShowHiddenTags(false);
32691
33473
  }
32692
33474
  }
@@ -32737,7 +33519,7 @@ function FilterListItem({
32737
33519
  }) {
32738
33520
  const handleToggle = () => {
32739
33521
  if (disabled) return;
32740
- _optionalChain([onToggle, 'optionalCall', _654 => _654(!selected)]);
33522
+ _optionalChain([onToggle, 'optionalCall', _662 => _662(!selected)]);
32741
33523
  };
32742
33524
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
32743
33525
  "div",
@@ -32784,7 +33566,7 @@ function FilterListItem({
32784
33566
  CheckboxPrimitive4.Root,
32785
33567
  {
32786
33568
  checked: selected,
32787
- onCheckedChange: (c) => _optionalChain([onToggle, 'optionalCall', _655 => _655(c === true)]),
33569
+ onCheckedChange: (c) => _optionalChain([onToggle, 'optionalCall', _663 => _663(c === true)]),
32788
33570
  onClick: (e) => e.stopPropagation(),
32789
33571
  disabled,
32790
33572
  "aria-label": title,
@@ -32883,7 +33665,7 @@ function TagSearchInput({
32883
33665
  if (!showHiddenTags) return;
32884
33666
  const handleClick = (e) => {
32885
33667
  const target = e.target;
32886
- if (!_optionalChain([hiddenTagsRef, 'access', _656 => _656.current, 'optionalAccess', _657 => _657.contains, 'call', _658 => _658(target)]) && !_optionalChain([hiddenTagsPopupRef, 'access', _659 => _659.current, 'optionalAccess', _660 => _660.contains, 'call', _661 => _661(target)])) {
33668
+ if (!_optionalChain([hiddenTagsRef, 'access', _664 => _664.current, 'optionalAccess', _665 => _665.contains, 'call', _666 => _666(target)]) && !_optionalChain([hiddenTagsPopupRef, 'access', _667 => _667.current, 'optionalAccess', _668 => _668.contains, 'call', _669 => _669(target)])) {
32887
33669
  setShowHiddenTags(false);
32888
33670
  }
32889
33671
  };
@@ -32899,13 +33681,13 @@ function TagSearchInput({
32899
33681
  e.preventDefault();
32900
33682
  onSubmit(searchValue);
32901
33683
  }
32902
- _optionalChain([onKeyDown, 'optionalCall', _662 => _662(e)]);
33684
+ _optionalChain([onKeyDown, 'optionalCall', _670 => _670(e)]);
32903
33685
  };
32904
33686
  const handleClearAll = (e) => {
32905
33687
  e.stopPropagation();
32906
33688
  e.preventDefault();
32907
- _optionalChain([onClearAll, 'optionalCall', _663 => _663()]);
32908
- _optionalChain([inputRef, 'access', _664 => _664.current, 'optionalAccess', _665 => _665.focus, 'call', _666 => _666()]);
33689
+ _optionalChain([onClearAll, 'optionalCall', _671 => _671()]);
33690
+ _optionalChain([inputRef, 'access', _672 => _672.current, 'optionalAccess', _673 => _673.focus, 'call', _674 => _674()]);
32909
33691
  };
32910
33692
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { ref: wrapperRef, className: "relative", children: [
32911
33693
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
@@ -32922,7 +33704,7 @@ function TagSearchInput({
32922
33704
  className
32923
33705
  ),
32924
33706
  onClick: () => {
32925
- if (!disabled) _optionalChain([inputRef, 'access', _667 => _667.current, 'optionalAccess', _668 => _668.focus, 'call', _669 => _669()]);
33707
+ if (!disabled) _optionalChain([inputRef, 'access', _675 => _675.current, 'optionalAccess', _676 => _676.focus, 'call', _677 => _677()]);
32926
33708
  },
32927
33709
  children: [
32928
33710
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "shrink-0 flex items-center pl-3", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWZW7C7TFcjs.SearchIcon, { className: "text-ods-text-secondary size-4 md:size-6" }) }),
@@ -32994,7 +33776,7 @@ function TagSearchInput({
32994
33776
  items: hiddenTags,
32995
33777
  disabled,
32996
33778
  style: {
32997
- left: badgeRef.current ? badgeRef.current.getBoundingClientRect().left - (_nullishCoalesce(_optionalChain([wrapperRef, 'access', _670 => _670.current, 'optionalAccess', _671 => _671.getBoundingClientRect, 'call', _672 => _672(), 'access', _673 => _673.left]), () => ( 0))) : 0
33779
+ left: badgeRef.current ? badgeRef.current.getBoundingClientRect().left - (_nullishCoalesce(_optionalChain([wrapperRef, 'access', _678 => _678.current, 'optionalAccess', _679 => _679.getBoundingClientRect, 'call', _680 => _680(), 'access', _681 => _681.left]), () => ( 0))) : 0
32998
33780
  },
32999
33781
  onRemove: (value) => {
33000
33782
  onTagRemove(value);
@@ -33095,7 +33877,7 @@ function MarkdownEditor({
33095
33877
  const [defaultExtraCommands, setDefaultExtraCommands] = _react.useState.call(void 0, []);
33096
33878
  _react.useEffect.call(void 0, () => {
33097
33879
  Promise.resolve().then(() => _interopRequireWildcard(require("@uiw/react-md-editor"))).then((mod) => {
33098
- if (_optionalChain([mod, 'access', _674 => _674.commands, 'optionalAccess', _675 => _675.getExtraCommands])) {
33880
+ if (_optionalChain([mod, 'access', _682 => _682.commands, 'optionalAccess', _683 => _683.getExtraCommands])) {
33099
33881
  setDefaultExtraCommands(mod.commands.getExtraCommands());
33100
33882
  }
33101
33883
  });
@@ -33129,7 +33911,7 @@ function MarkdownEditor({
33129
33911
  const isImage = file.type.startsWith("image/");
33130
33912
  const markdown = isImage ? `![${file.name}](${url})` : `[${file.name}](${url})`;
33131
33913
  insertTextAtCursor(markdown);
33132
- _optionalChain([onFileUploaded, 'optionalCall', _676 => _676(url, file.name)]);
33914
+ _optionalChain([onFileUploaded, 'optionalCall', _684 => _684(url, file.name)]);
33133
33915
  } catch (error) {
33134
33916
  console.error("File upload failed:", error);
33135
33917
  setUploadProgress("Upload failed. Please try again.");
@@ -33142,7 +33924,7 @@ function MarkdownEditor({
33142
33924
  );
33143
33925
  const handleFileInputChange = _react.useCallback.call(void 0,
33144
33926
  (e) => {
33145
- const file = _optionalChain([e, 'access', _677 => _677.target, 'access', _678 => _678.files, 'optionalAccess', _679 => _679[0]]);
33927
+ const file = _optionalChain([e, 'access', _685 => _685.target, 'access', _686 => _686.files, 'optionalAccess', _687 => _687[0]]);
33146
33928
  if (file) {
33147
33929
  handleFileUpload(file);
33148
33930
  e.target.value = "";
@@ -33153,7 +33935,7 @@ function MarkdownEditor({
33153
33935
  const handlePaste = _react.useCallback.call(void 0,
33154
33936
  (e) => {
33155
33937
  if (!onUploadFile) return;
33156
- const items = _optionalChain([e, 'access', _680 => _680.clipboardData, 'optionalAccess', _681 => _681.items]);
33938
+ const items = _optionalChain([e, 'access', _688 => _688.clipboardData, 'optionalAccess', _689 => _689.items]);
33157
33939
  if (!items) return;
33158
33940
  for (const item of items) {
33159
33941
  if (item.type.startsWith("image/")) {
@@ -33178,7 +33960,7 @@ function MarkdownEditor({
33178
33960
  buttonProps: { "aria-label": "Upload file", title: "Upload file" },
33179
33961
  icon: isUploading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Loader2, { className: "w-3 h-3 animate-spin" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Upload, { className: "w-3 h-3" }),
33180
33962
  execute: () => {
33181
- _optionalChain([fileInputRef, 'access', _682 => _682.current, 'optionalAccess', _683 => _683.click, 'call', _684 => _684()]);
33963
+ _optionalChain([fileInputRef, 'access', _690 => _690.current, 'optionalAccess', _691 => _691.click, 'call', _692 => _692()]);
33182
33964
  }
33183
33965
  } : null;
33184
33966
  const extraCommands = uploadCommand ? [...defaultExtraCommands, uploadCommand] : defaultExtraCommands;
@@ -33190,7 +33972,7 @@ function MarkdownEditor({
33190
33972
  const EDGE_ZONE = 60;
33191
33973
  const MAX_SCROLL_SPEED = 15;
33192
33974
  const findScrollParent = _react.useCallback.call(void 0, (el) => {
33193
- let node = _optionalChain([el, 'optionalAccess', _685 => _685.parentElement]);
33975
+ let node = _optionalChain([el, 'optionalAccess', _693 => _693.parentElement]);
33194
33976
  while (node && node !== document.documentElement) {
33195
33977
  const { overflowY } = window.getComputedStyle(node);
33196
33978
  if ((overflowY === "auto" || overflowY === "scroll") && node.scrollHeight > node.clientHeight) {
@@ -33333,7 +34115,7 @@ function matchesAccept(file, accept) {
33333
34115
  });
33334
34116
  }
33335
34117
  function dragHasFiles(e) {
33336
- const types = _optionalChain([e, 'access', _686 => _686.dataTransfer, 'optionalAccess', _687 => _687.types]);
34118
+ const types = _optionalChain([e, 'access', _694 => _694.dataTransfer, 'optionalAccess', _695 => _695.types]);
33337
34119
  if (!types) return false;
33338
34120
  for (let i = 0; i < types.length; i++) {
33339
34121
  if (types[i] === "Files") return true;
@@ -33428,7 +34210,7 @@ function FileUpload({
33428
34210
  e.stopPropagation();
33429
34211
  setDragActive(false);
33430
34212
  if (disabled) return;
33431
- if (_optionalChain([e, 'access', _688 => _688.dataTransfer, 'access', _689 => _689.files, 'optionalAccess', _690 => _690.length])) {
34213
+ if (_optionalChain([e, 'access', _696 => _696.dataTransfer, 'access', _697 => _697.files, 'optionalAccess', _698 => _698.length])) {
33432
34214
  handleFiles(e.dataTransfer.files);
33433
34215
  }
33434
34216
  };
@@ -33456,7 +34238,7 @@ function FileUpload({
33456
34238
  e.preventDefault();
33457
34239
  dragCounter = 0;
33458
34240
  setDragActive(false);
33459
- if (_optionalChain([e, 'access', _691 => _691.dataTransfer, 'optionalAccess', _692 => _692.files, 'optionalAccess', _693 => _693.length])) {
34241
+ if (_optionalChain([e, 'access', _699 => _699.dataTransfer, 'optionalAccess', _700 => _700.files, 'optionalAccess', _701 => _701.length])) {
33460
34242
  handleFilesRef.current(e.dataTransfer.files);
33461
34243
  }
33462
34244
  };
@@ -33478,7 +34260,7 @@ function FileUpload({
33478
34260
  };
33479
34261
  }, [acceptWindowDrops, disabled]);
33480
34262
  const handleFileSelect = (e) => {
33481
- if (_optionalChain([e, 'access', _694 => _694.target, 'access', _695 => _695.files, 'optionalAccess', _696 => _696.length])) {
34263
+ if (_optionalChain([e, 'access', _702 => _702.target, 'access', _703 => _703.files, 'optionalAccess', _704 => _704.length])) {
33482
34264
  handleFiles(e.target.files);
33483
34265
  }
33484
34266
  };
@@ -33495,7 +34277,7 @@ function FileUpload({
33495
34277
  };
33496
34278
  const openDialog = async () => {
33497
34279
  if (disabled) return;
33498
- _optionalChain([fileInputRef, 'access', _697 => _697.current, 'optionalAccess', _698 => _698.click, 'call', _699 => _699()]);
34280
+ _optionalChain([fileInputRef, 'access', _705 => _705.current, 'optionalAccess', _706 => _706.click, 'call', _707 => _707()]);
33499
34281
  };
33500
34282
  const displayError = error || validationError || void 0;
33501
34283
  const hasFiles = isManaged ? managedFiles.length > 0 : files.length > 0;
@@ -33573,7 +34355,7 @@ function FileUpload({
33573
34355
  "button",
33574
34356
  {
33575
34357
  type: "button",
33576
- onClick: () => _optionalChain([onRemoveManagedFile, 'optionalCall', _700 => _700(entry.id)]),
34358
+ onClick: () => _optionalChain([onRemoveManagedFile, 'optionalCall', _708 => _708(entry.id)]),
33577
34359
  className: "shrink-0 p-1 rounded hover:bg-ods-bg transition-colors",
33578
34360
  "aria-label": `Remove ${entry.fileName}`,
33579
34361
  children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.X, { className: "size-4 text-ods-text-secondary" })
@@ -33696,7 +34478,7 @@ function ImageUploader({
33696
34478
  onChange(file);
33697
34479
  };
33698
34480
  const handleFileSelect = (e) => {
33699
- validateAndEmit(_optionalChain([e, 'access', _701 => _701.target, 'access', _702 => _702.files, 'optionalAccess', _703 => _703[0]]));
34481
+ validateAndEmit(_optionalChain([e, 'access', _709 => _709.target, 'access', _710 => _710.files, 'optionalAccess', _711 => _711[0]]));
33700
34482
  if (inputRef.current) inputRef.current.value = "";
33701
34483
  };
33702
34484
  const handleDrag = (e) => {
@@ -33711,11 +34493,11 @@ function ImageUploader({
33711
34493
  e.stopPropagation();
33712
34494
  setDragActive(false);
33713
34495
  if (!interactive) return;
33714
- validateAndEmit(_optionalChain([e, 'access', _704 => _704.dataTransfer, 'access', _705 => _705.files, 'optionalAccess', _706 => _706[0]]));
34496
+ validateAndEmit(_optionalChain([e, 'access', _712 => _712.dataTransfer, 'access', _713 => _713.files, 'optionalAccess', _714 => _714[0]]));
33715
34497
  };
33716
34498
  const openDialog = () => {
33717
34499
  if (!interactive) return;
33718
- _optionalChain([inputRef, 'access', _707 => _707.current, 'optionalAccess', _708 => _708.click, 'call', _709 => _709()]);
34500
+ _optionalChain([inputRef, 'access', _715 => _715.current, 'optionalAccess', _716 => _716.click, 'call', _717 => _717()]);
33719
34501
  };
33720
34502
  const handleRootKeyDown = (e) => {
33721
34503
  if (hasImage || !interactive) return;
@@ -33872,7 +34654,7 @@ function CompactAssigneeDropdown({
33872
34654
  return [current, ...filtered.filter((o) => o.value !== currentAssignee.id)];
33873
34655
  }, [filtered, currentAssignee]);
33874
34656
  const handleSelect = (userId) => {
33875
- const next = _optionalChain([currentAssignee, 'optionalAccess', _710 => _710.id]) === userId ? null : userId;
34657
+ const next = _optionalChain([currentAssignee, 'optionalAccess', _718 => _718.id]) === userId ? null : userId;
33876
34658
  onAssign(next);
33877
34659
  setIsOpen(false);
33878
34660
  };
@@ -33937,7 +34719,7 @@ function CompactAssigneeDropdown({
33937
34719
  }
33938
34720
  ) }),
33939
34721
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "max-h-80 overflow-y-auto py-[var(--spacing-system-xs)]", role: "listbox", children: isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "px-[var(--spacing-system-sf)] py-[var(--spacing-system-s)] text-h5 text-ods-text-secondary", children: "Loading\u2026" }) : orderedOptions.length === 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "px-[var(--spacing-system-sf)] py-[var(--spacing-system-s)] text-h5 text-ods-text-secondary", children: "No users found" }) : orderedOptions.map((opt) => {
33940
- const isCurrent = _optionalChain([currentAssignee, 'optionalAccess', _711 => _711.id]) === opt.value;
34722
+ const isCurrent = _optionalChain([currentAssignee, 'optionalAccess', _719 => _719.id]) === opt.value;
33941
34723
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
33942
34724
  "button",
33943
34725
  {
@@ -34006,7 +34788,7 @@ function DefaultAssigneeDropdown({
34006
34788
  Autocomplete,
34007
34789
  {
34008
34790
  options,
34009
- value: _nullishCoalesce(_optionalChain([currentAssignee, 'optionalAccess', _712 => _712.id]), () => ( null)),
34791
+ value: _nullishCoalesce(_optionalChain([currentAssignee, 'optionalAccess', _720 => _720.id]), () => ( null)),
34010
34792
  onChange: (val) => {
34011
34793
  onAssign(val);
34012
34794
  setIsEditing(false);
@@ -34372,14 +35154,14 @@ function TicketInfoSection({
34372
35154
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
34373
35155
  SquareAvatar,
34374
35156
  {
34375
- src: _optionalChain([organization, 'optionalAccess', _713 => _713.imageSrc]),
34376
- alt: _optionalChain([organization, 'optionalAccess', _714 => _714.name]),
34377
- fallback: _optionalChain([organization, 'optionalAccess', _715 => _715.name]) || "Org",
35157
+ src: _optionalChain([organization, 'optionalAccess', _721 => _721.imageSrc]),
35158
+ alt: _optionalChain([organization, 'optionalAccess', _722 => _722.name]),
35159
+ fallback: _optionalChain([organization, 'optionalAccess', _723 => _723.name]) || "Org",
34378
35160
  size: "md",
34379
35161
  className: "shrink-0"
34380
35162
  }
34381
35163
  ),
34382
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, InfoCell2, { value: _optionalChain([organization, 'optionalAccess', _716 => _716.name]) || "Unassigned", label: "Organization" })
35164
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, InfoCell2, { value: _optionalChain([organization, 'optionalAccess', _724 => _724.name]) || "Unassigned", label: "Organization" })
34383
35165
  ] }),
34384
35166
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-w-0", children: assigned ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
34385
35167
  AssigneeDropdown,
@@ -34400,10 +35182,10 @@ function TicketInfoSection({
34400
35182
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
34401
35183
  InfoCell2,
34402
35184
  {
34403
- value: _optionalChain([device, 'optionalAccess', _717 => _717.name]) || "Unassigned",
35185
+ value: _optionalChain([device, 'optionalAccess', _725 => _725.name]) || "Unassigned",
34404
35186
  label: "Device",
34405
- icon: _optionalChain([device, 'optionalAccess', _718 => _718.icon]),
34406
- onClick: _optionalChain([device, 'optionalAccess', _719 => _719.onClick])
35187
+ icon: _optionalChain([device, 'optionalAccess', _726 => _726.icon]),
35188
+ onClick: _optionalChain([device, 'optionalAccess', _727 => _727.onClick])
34407
35189
  }
34408
35190
  ),
34409
35191
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-4 min-w-0", children: [
@@ -34632,7 +35414,7 @@ function TaskTypeIcon({ customItemId, className = "h-5 w-5" }) {
34632
35414
 
34633
35415
  // src/components/chat/entity-cards/roadmap-card.tsx
34634
35416
 
34635
- function RoadmapCardSkeleton({ size = "default" }) {
35417
+ function RoadmapCardSkeleton2({ size = "default" }) {
34636
35418
  if (size === "sm") {
34637
35419
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_SKELETON_OUTER, children: [
34638
35420
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "block h-12 w-12 aspect-square shrink-0 self-start rounded-md bg-ods-bg border border-ods-border p-1.5" }),
@@ -34689,7 +35471,7 @@ function RoadmapCard({
34689
35471
  const compactHref = safeHref(_nullishCoalesce(href, () => ( null)));
34690
35472
  const hasVotes = (_nullishCoalesce(item.upvotes, () => ( 0))) > 0 || (_nullishCoalesce(item.downvotes, () => ( 0))) > 0;
34691
35473
  const hasFigma = !!item.figmaUrl;
34692
- const hasScreenshots = (_nullishCoalesce(_optionalChain([item, 'access', _720 => _720.screenshots, 'optionalAccess', _721 => _721.length]), () => ( 0))) > 0;
35474
+ const hasScreenshots = (_nullishCoalesce(_optionalChain([item, 'access', _728 => _728.screenshots, 'optionalAccess', _729 => _729.length]), () => ( 0))) > 0;
34693
35475
  const typeLabel = getTaskTypeLabel(item.customItemId);
34694
35476
  const useTypeIcon = cardType === "internal_task" || !iconSrc && item.customItemId != null;
34695
35477
  const body = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
@@ -34708,7 +35490,7 @@ function RoadmapCard({
34708
35490
  unoptimized: true,
34709
35491
  className: "h-8 w-8 object-contain"
34710
35492
  }
34711
- ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-[10px] font-medium uppercase text-ods-text-secondary", children: _optionalChain([item, 'access', _722 => _722.title, 'optionalAccess', _723 => _723.substring, 'call', _724 => _724(0, 2)]) || "??" })
35493
+ ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-[10px] font-medium uppercase text-ods-text-secondary", children: _optionalChain([item, 'access', _730 => _730.title, 'optionalAccess', _731 => _731.substring, 'call', _732 => _732(0, 2)]) || "??" })
34712
35494
  }
34713
35495
  ),
34714
35496
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_TEXT_COL, children: [
@@ -34783,7 +35565,7 @@ function RoadmapCard({
34783
35565
  unoptimized: true,
34784
35566
  className: "object-contain p-1"
34785
35567
  }
34786
- ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-xs font-medium uppercase text-ods-text-secondary", children: _optionalChain([item, 'access', _725 => _725.title, 'optionalAccess', _726 => _726.substring, 'call', _727 => _727(0, 2)]) || "??" }) }),
35568
+ ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-xs font-medium uppercase text-ods-text-secondary", children: _optionalChain([item, 'access', _733 => _733.title, 'optionalAccess', _734 => _734.substring, 'call', _735 => _735(0, 2)]) || "??" }) }),
34787
35569
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-1 min-w-0 flex flex-col", children: [
34788
35570
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-h-[48px] flex items-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "text-h3 text-ods-text-primary tracking-[-0.36px] flex-1 line-clamp-2", children: item.title }) }),
34789
35571
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-h-[20px] flex items-center", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: "text-h5 text-ods-text-secondary uppercase tracking-[-0.28px] truncate", children: [
@@ -35290,7 +36072,7 @@ function DataRoomDocCard({ item, className, badgeText, anchorProps }) {
35290
36072
  ] }) : null,
35291
36073
  item.preview ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex min-w-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "line-clamp-2 whitespace-pre-wrap break-words text-[13px] leading-5 text-ods-text-secondary", children: item.preview }) }) : null
35292
36074
  ] }),
35293
- _optionalChain([anchorProps, 'optionalAccess', _728 => _728.href]) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex shrink-0 items-center self-start h-5 text-ods-text-secondary", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ExternalLink, { className: "w-3.5 h-3.5" }) }) : null
36075
+ _optionalChain([anchorProps, 'optionalAccess', _736 => _736.href]) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex shrink-0 items-center self-start h-5 text-ods-text-secondary", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ExternalLink, { className: "w-3.5 h-3.5" }) }) : null
35294
36076
  ] });
35295
36077
  if (!anchorProps) {
35296
36078
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `${COMPACT_CARD_OUTER_STATIC} ${_nullishCoalesce(className, () => ( ""))}`, "aria-label": "No link available", children: body });
@@ -35360,7 +36142,7 @@ function getDefaultOptions() {
35360
36142
  // node_modules/date-fns/startOfWeek.mjs
35361
36143
  function startOfWeek(date, options) {
35362
36144
  const defaultOptions2 = getDefaultOptions();
35363
- const weekStartsOn = _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _729 => _729.weekStartsOn]), () => ( _optionalChain([options, 'optionalAccess', _730 => _730.locale, 'optionalAccess', _731 => _731.options, 'optionalAccess', _732 => _732.weekStartsOn]))), () => ( defaultOptions2.weekStartsOn)), () => ( _optionalChain([defaultOptions2, 'access', _733 => _733.locale, 'optionalAccess', _734 => _734.options, 'optionalAccess', _735 => _735.weekStartsOn]))), () => ( 0));
36145
+ const weekStartsOn = _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _737 => _737.weekStartsOn]), () => ( _optionalChain([options, 'optionalAccess', _738 => _738.locale, 'optionalAccess', _739 => _739.options, 'optionalAccess', _740 => _740.weekStartsOn]))), () => ( defaultOptions2.weekStartsOn)), () => ( _optionalChain([defaultOptions2, 'access', _741 => _741.locale, 'optionalAccess', _742 => _742.options, 'optionalAccess', _743 => _743.weekStartsOn]))), () => ( 0));
35364
36146
  const _date = toDate(date);
35365
36147
  const day = _date.getDay();
35366
36148
  const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;
@@ -35535,7 +36317,7 @@ var formatDistance = (token, count, options) => {
35535
36317
  } else {
35536
36318
  result = tokenValue.other.replace("{{count}}", count.toString());
35537
36319
  }
35538
- if (_optionalChain([options, 'optionalAccess', _736 => _736.addSuffix])) {
36320
+ if (_optionalChain([options, 'optionalAccess', _744 => _744.addSuffix])) {
35539
36321
  if (options.comparison && options.comparison > 0) {
35540
36322
  return "in " + result;
35541
36323
  } else {
@@ -35602,15 +36384,15 @@ var formatRelative = (token, _date, _baseDate, _options) => formatRelativeLocale
35602
36384
  // node_modules/date-fns/locale/_lib/buildLocalizeFn.mjs
35603
36385
  function buildLocalizeFn(args) {
35604
36386
  return (value, options) => {
35605
- const context = _optionalChain([options, 'optionalAccess', _737 => _737.context]) ? String(options.context) : "standalone";
36387
+ const context = _optionalChain([options, 'optionalAccess', _745 => _745.context]) ? String(options.context) : "standalone";
35606
36388
  let valuesArray;
35607
36389
  if (context === "formatting" && args.formattingValues) {
35608
36390
  const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;
35609
- const width = _optionalChain([options, 'optionalAccess', _738 => _738.width]) ? String(options.width) : defaultWidth;
36391
+ const width = _optionalChain([options, 'optionalAccess', _746 => _746.width]) ? String(options.width) : defaultWidth;
35610
36392
  valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];
35611
36393
  } else {
35612
36394
  const defaultWidth = args.defaultWidth;
35613
- const width = _optionalChain([options, 'optionalAccess', _739 => _739.width]) ? String(options.width) : args.defaultWidth;
36395
+ const width = _optionalChain([options, 'optionalAccess', _747 => _747.width]) ? String(options.width) : args.defaultWidth;
35614
36396
  valuesArray = args.values[width] || args.values[defaultWidth];
35615
36397
  }
35616
36398
  const index = args.argumentCallback ? args.argumentCallback(value) : value;
@@ -35990,7 +36772,7 @@ function getWeekYear(date, options) {
35990
36772
  const _date = toDate(date);
35991
36773
  const year = _date.getFullYear();
35992
36774
  const defaultOptions2 = getDefaultOptions();
35993
- const firstWeekContainsDate = _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _740 => _740.firstWeekContainsDate]), () => ( _optionalChain([options, 'optionalAccess', _741 => _741.locale, 'optionalAccess', _742 => _742.options, 'optionalAccess', _743 => _743.firstWeekContainsDate]))), () => ( defaultOptions2.firstWeekContainsDate)), () => ( _optionalChain([defaultOptions2, 'access', _744 => _744.locale, 'optionalAccess', _745 => _745.options, 'optionalAccess', _746 => _746.firstWeekContainsDate]))), () => ( 1));
36775
+ const firstWeekContainsDate = _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _748 => _748.firstWeekContainsDate]), () => ( _optionalChain([options, 'optionalAccess', _749 => _749.locale, 'optionalAccess', _750 => _750.options, 'optionalAccess', _751 => _751.firstWeekContainsDate]))), () => ( defaultOptions2.firstWeekContainsDate)), () => ( _optionalChain([defaultOptions2, 'access', _752 => _752.locale, 'optionalAccess', _753 => _753.options, 'optionalAccess', _754 => _754.firstWeekContainsDate]))), () => ( 1));
35994
36776
  const firstWeekOfNextYear = constructFrom(date, 0);
35995
36777
  firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);
35996
36778
  firstWeekOfNextYear.setHours(0, 0, 0, 0);
@@ -36011,7 +36793,7 @@ function getWeekYear(date, options) {
36011
36793
  // node_modules/date-fns/startOfWeekYear.mjs
36012
36794
  function startOfWeekYear(date, options) {
36013
36795
  const defaultOptions2 = getDefaultOptions();
36014
- const firstWeekContainsDate = _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _747 => _747.firstWeekContainsDate]), () => ( _optionalChain([options, 'optionalAccess', _748 => _748.locale, 'optionalAccess', _749 => _749.options, 'optionalAccess', _750 => _750.firstWeekContainsDate]))), () => ( defaultOptions2.firstWeekContainsDate)), () => ( _optionalChain([defaultOptions2, 'access', _751 => _751.locale, 'optionalAccess', _752 => _752.options, 'optionalAccess', _753 => _753.firstWeekContainsDate]))), () => ( 1));
36796
+ const firstWeekContainsDate = _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _755 => _755.firstWeekContainsDate]), () => ( _optionalChain([options, 'optionalAccess', _756 => _756.locale, 'optionalAccess', _757 => _757.options, 'optionalAccess', _758 => _758.firstWeekContainsDate]))), () => ( defaultOptions2.firstWeekContainsDate)), () => ( _optionalChain([defaultOptions2, 'access', _759 => _759.locale, 'optionalAccess', _760 => _760.options, 'optionalAccess', _761 => _761.firstWeekContainsDate]))), () => ( 1));
36015
36797
  const year = getWeekYear(date, options);
36016
36798
  const firstWeek = constructFrom(date, 0);
36017
36799
  firstWeek.setFullYear(year, 0, firstWeekContainsDate);
@@ -36826,9 +37608,9 @@ var doubleQuoteRegExp = /''/g;
36826
37608
  var unescapedLatinCharacterRegExp = /[a-zA-Z]/;
36827
37609
  function format(date, formatStr, options) {
36828
37610
  const defaultOptions2 = getDefaultOptions();
36829
- const locale = _nullishCoalesce(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _754 => _754.locale]), () => ( defaultOptions2.locale)), () => ( enUS));
36830
- const firstWeekContainsDate = _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _755 => _755.firstWeekContainsDate]), () => ( _optionalChain([options, 'optionalAccess', _756 => _756.locale, 'optionalAccess', _757 => _757.options, 'optionalAccess', _758 => _758.firstWeekContainsDate]))), () => ( defaultOptions2.firstWeekContainsDate)), () => ( _optionalChain([defaultOptions2, 'access', _759 => _759.locale, 'optionalAccess', _760 => _760.options, 'optionalAccess', _761 => _761.firstWeekContainsDate]))), () => ( 1));
36831
- const weekStartsOn = _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _762 => _762.weekStartsOn]), () => ( _optionalChain([options, 'optionalAccess', _763 => _763.locale, 'optionalAccess', _764 => _764.options, 'optionalAccess', _765 => _765.weekStartsOn]))), () => ( defaultOptions2.weekStartsOn)), () => ( _optionalChain([defaultOptions2, 'access', _766 => _766.locale, 'optionalAccess', _767 => _767.options, 'optionalAccess', _768 => _768.weekStartsOn]))), () => ( 0));
37611
+ const locale = _nullishCoalesce(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _762 => _762.locale]), () => ( defaultOptions2.locale)), () => ( enUS));
37612
+ const firstWeekContainsDate = _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _763 => _763.firstWeekContainsDate]), () => ( _optionalChain([options, 'optionalAccess', _764 => _764.locale, 'optionalAccess', _765 => _765.options, 'optionalAccess', _766 => _766.firstWeekContainsDate]))), () => ( defaultOptions2.firstWeekContainsDate)), () => ( _optionalChain([defaultOptions2, 'access', _767 => _767.locale, 'optionalAccess', _768 => _768.options, 'optionalAccess', _769 => _769.firstWeekContainsDate]))), () => ( 1));
37613
+ const weekStartsOn = _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _770 => _770.weekStartsOn]), () => ( _optionalChain([options, 'optionalAccess', _771 => _771.locale, 'optionalAccess', _772 => _772.options, 'optionalAccess', _773 => _773.weekStartsOn]))), () => ( defaultOptions2.weekStartsOn)), () => ( _optionalChain([defaultOptions2, 'access', _774 => _774.locale, 'optionalAccess', _775 => _775.options, 'optionalAccess', _776 => _776.weekStartsOn]))), () => ( 0));
36832
37614
  const originalDate = toDate(date);
36833
37615
  if (!isValid(originalDate)) {
36834
37616
  throw new RangeError("Invalid time value");
@@ -36869,7 +37651,7 @@ function format(date, formatStr, options) {
36869
37651
  return parts.map((part) => {
36870
37652
  if (!part.isToken) return part.value;
36871
37653
  const token = part.value;
36872
- if (!_optionalChain([options, 'optionalAccess', _769 => _769.useAdditionalWeekYearTokens]) && isProtectedWeekYearToken(token) || !_optionalChain([options, 'optionalAccess', _770 => _770.useAdditionalDayOfYearTokens]) && isProtectedDayOfYearToken(token)) {
37654
+ if (!_optionalChain([options, 'optionalAccess', _777 => _777.useAdditionalWeekYearTokens]) && isProtectedWeekYearToken(token) || !_optionalChain([options, 'optionalAccess', _778 => _778.useAdditionalDayOfYearTokens]) && isProtectedDayOfYearToken(token)) {
36873
37655
  warnOrThrowProtectedError(token, formatStr, String(date));
36874
37656
  }
36875
37657
  const formatter = formatters[token[0]];
@@ -37035,7 +37817,7 @@ function ProgramCard({
37035
37817
  const dur = formatDurationFromRange(w.start_at, w.end_at);
37036
37818
  typeMeta = dur ? `${time} \xB7 ${dur}` : time;
37037
37819
  }
37038
- const subtitleParts = [itemDate2, typeMeta, _optionalChain([config, 'access', _771 => _771.labels, 'optionalAccess', _772 => _772.singular])].filter(
37820
+ const subtitleParts = [itemDate2, typeMeta, _optionalChain([config, 'access', _779 => _779.labels, 'optionalAccess', _780 => _780.singular])].filter(
37039
37821
  (s) => typeof s === "string" && s.length > 0
37040
37822
  );
37041
37823
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "a", { href, target, rel, className: _chunk664KA5FIcjs.cn.call(void 0, COMPACT_CARD_OUTER, className), children: [
@@ -37192,7 +37974,7 @@ function ProgramCard({
37192
37974
 
37193
37975
 
37194
37976
  function CampaignCardAdmin({ campaign, className, anchorProps }) {
37195
- const goalsCount = _optionalChain([campaign, 'access', _773 => _773.goals, 'optionalAccess', _774 => _774.length]) || 0;
37977
+ const goalsCount = _optionalChain([campaign, 'access', _781 => _781.goals, 'optionalAccess', _782 => _782.length]) || 0;
37196
37978
  const innerChildren = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
37197
37979
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_ICON_SLOT, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Megaphone, { className: "h-5 w-5" }) }),
37198
37980
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_TEXT_COL, children: [
@@ -37487,11 +38269,11 @@ function HubspotTicketChatCard({
37487
38269
  chatRef,
37488
38270
  isNewTab
37489
38271
  }) {
37490
- const status = typeof _optionalChain([chatRef, 'access', _775 => _775.metadata, 'optionalAccess', _776 => _776.status]) === "string" ? chatRef.metadata.status : void 0;
37491
- const statusLabel = typeof _optionalChain([chatRef, 'access', _777 => _777.metadata, 'optionalAccess', _778 => _778.statusLabel]) === "string" ? chatRef.metadata.statusLabel : void 0;
37492
- const priority = typeof _optionalChain([chatRef, 'access', _779 => _779.metadata, 'optionalAccess', _780 => _780.priority]) === "string" ? chatRef.metadata.priority : void 0;
37493
- const customerCompany = typeof _optionalChain([chatRef, 'access', _781 => _781.metadata, 'optionalAccess', _782 => _782.customerCompany]) === "string" ? chatRef.metadata.customerCompany : void 0;
37494
- const customerEmail = typeof _optionalChain([chatRef, 'access', _783 => _783.metadata, 'optionalAccess', _784 => _784.customerEmail]) === "string" ? chatRef.metadata.customerEmail : void 0;
38272
+ const status = typeof _optionalChain([chatRef, 'access', _783 => _783.metadata, 'optionalAccess', _784 => _784.status]) === "string" ? chatRef.metadata.status : void 0;
38273
+ const statusLabel = typeof _optionalChain([chatRef, 'access', _785 => _785.metadata, 'optionalAccess', _786 => _786.statusLabel]) === "string" ? chatRef.metadata.statusLabel : void 0;
38274
+ const priority = typeof _optionalChain([chatRef, 'access', _787 => _787.metadata, 'optionalAccess', _788 => _788.priority]) === "string" ? chatRef.metadata.priority : void 0;
38275
+ const customerCompany = typeof _optionalChain([chatRef, 'access', _789 => _789.metadata, 'optionalAccess', _790 => _790.customerCompany]) === "string" ? chatRef.metadata.customerCompany : void 0;
38276
+ const customerEmail = typeof _optionalChain([chatRef, 'access', _791 => _791.metadata, 'optionalAccess', _792 => _792.customerEmail]) === "string" ? chatRef.metadata.customerEmail : void 0;
37495
38277
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
37496
38278
  HubspotTicketCard,
37497
38279
  {
@@ -37513,7 +38295,7 @@ function HubspotTicketChatCard({
37513
38295
  );
37514
38296
  }
37515
38297
  function SlackChatCard({ chatRef, isNewTab }) {
37516
- const channelName = typeof _optionalChain([chatRef, 'access', _785 => _785.metadata, 'optionalAccess', _786 => _786.channelName]) === "string" ? chatRef.metadata.channelName : void 0;
38298
+ const channelName = typeof _optionalChain([chatRef, 'access', _793 => _793.metadata, 'optionalAccess', _794 => _794.channelName]) === "string" ? chatRef.metadata.channelName : void 0;
37517
38299
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
37518
38300
  SlackMessageCard,
37519
38301
  {
@@ -37536,7 +38318,7 @@ function DataRoomDocChatCard({
37536
38318
  chipBasePlatform,
37537
38319
  isNewTab
37538
38320
  }) {
37539
- const path = typeof _optionalChain([chatRef, 'access', _787 => _787.metadata, 'optionalAccess', _788 => _788.path]) === "string" ? chatRef.metadata.path : void 0;
38321
+ const path = typeof _optionalChain([chatRef, 'access', _795 => _795.metadata, 'optionalAccess', _796 => _796.path]) === "string" ? chatRef.metadata.path : void 0;
37540
38322
  const badgeText = chatRef.sourceRepo ? getSourceLabel(chatRef.sourceRepo) : "Document";
37541
38323
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
37542
38324
  DataRoomDocCard,
@@ -37562,8 +38344,8 @@ function GenericFinancialChatCard({
37562
38344
  scheme,
37563
38345
  isNewTab
37564
38346
  }) {
37565
- const facts = Array.isArray(_optionalChain([chatRef, 'access', _789 => _789.metadata, 'optionalAccess', _790 => _790.facts])) ? chatRef.metadata.facts : null;
37566
- const subtitle = typeof _optionalChain([chatRef, 'access', _791 => _791.metadata, 'optionalAccess', _792 => _792.subtitle]) === "string" ? chatRef.metadata.subtitle : null;
38347
+ const facts = Array.isArray(_optionalChain([chatRef, 'access', _797 => _797.metadata, 'optionalAccess', _798 => _798.facts])) ? chatRef.metadata.facts : null;
38348
+ const subtitle = typeof _optionalChain([chatRef, 'access', _799 => _799.metadata, 'optionalAccess', _800 => _800.subtitle]) === "string" ? chatRef.metadata.subtitle : null;
37567
38349
  const anchorProps = buildAnchorProps(
37568
38350
  chatRef.url,
37569
38351
  isNewTab
@@ -37725,7 +38507,7 @@ function programRegistryEntries() {
37725
38507
  contentRefType: cfg.contentRefType,
37726
38508
  skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ProgramCardSkeleton, { size: "sm" }),
37727
38509
  render: (item, chatRef, opts) => {
37728
- const config = _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _793 => _793.extras, 'optionalAccess', _794 => _794.programConfigs, 'optionalAccess', _795 => _795[cfg.configKey]]), () => ( DEFAULT_PROGRAM_CONFIGS[cfg.configKey]));
38510
+ const config = _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _801 => _801.extras, 'optionalAccess', _802 => _802.programConfigs, 'optionalAccess', _803 => _803[cfg.configKey]]), () => ( DEFAULT_PROGRAM_CONFIGS[cfg.configKey]));
37729
38511
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
37730
38512
  ProgramCard,
37731
38513
  {
@@ -37762,7 +38544,7 @@ function roadmapRegistryEntries() {
37762
38544
  mode: "fetch",
37763
38545
  label: cfg.label,
37764
38546
  contentRefType: cfg.contentRefType,
37765
- skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, RoadmapCardSkeleton, { size: "sm" }),
38547
+ skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, RoadmapCardSkeleton2, { size: "sm" }),
37766
38548
  render: (item, chatRef, opts) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
37767
38549
  RoadmapCard,
37768
38550
  {
@@ -37811,8 +38593,8 @@ var CHAT_CARD_REGISTRY = {
37811
38593
  DataRoomDocChatCard,
37812
38594
  {
37813
38595
  chatRef,
37814
- baseRoute: _optionalChain([opts, 'optionalAccess', _796 => _796.baseRoute]),
37815
- chipBasePlatform: _optionalChain([opts, 'optionalAccess', _797 => _797.chipBasePlatform]),
38596
+ baseRoute: _optionalChain([opts, 'optionalAccess', _804 => _804.baseRoute]),
38597
+ chipBasePlatform: _optionalChain([opts, 'optionalAccess', _805 => _805.chipBasePlatform]),
37816
38598
  isNewTab: opts.isNewTab
37817
38599
  }
37818
38600
  )
@@ -37824,8 +38606,8 @@ var CHAT_CARD_REGISTRY = {
37824
38606
  DataRoomDocChatCard,
37825
38607
  {
37826
38608
  chatRef,
37827
- baseRoute: _optionalChain([opts, 'optionalAccess', _798 => _798.baseRoute]),
37828
- chipBasePlatform: _optionalChain([opts, 'optionalAccess', _799 => _799.chipBasePlatform]),
38609
+ baseRoute: _optionalChain([opts, 'optionalAccess', _806 => _806.baseRoute]),
38610
+ chipBasePlatform: _optionalChain([opts, 'optionalAccess', _807 => _807.chipBasePlatform]),
37829
38611
  isNewTab: opts.isNewTab
37830
38612
  }
37831
38613
  )
@@ -37850,8 +38632,9 @@ var CHAT_CARD_REGISTRY = {
37850
38632
  size: "sm",
37851
38633
  href: _nullishCoalesce(chatRef.url, () => ( "")),
37852
38634
  targetPlatform: _nullishCoalesce(chatRef.targetPlatform, () => ( null)),
38635
+ placeholderUrl: _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _808 => _808.extras, 'optionalAccess', _809 => _809.buildOgPlaceholderUrl, 'optionalCall', _810 => _810(_nullishCoalesce(_optionalChain([item, 'optionalAccess', _811 => _811.title]), () => ( "")))]), () => ( null)),
37853
38636
  ...newTabAnchorAttrs(opts.isNewTab),
37854
- hasEmbeddedVideo: _optionalChain([chatRef, 'access', _800 => _800.metadata, 'optionalAccess', _801 => _801.hasEmbeddedVideo]) === true
38637
+ hasEmbeddedVideo: _optionalChain([chatRef, 'access', _812 => _812.metadata, 'optionalAccess', _813 => _813.hasEmbeddedVideo]) === true
37855
38638
  }
37856
38639
  )
37857
38640
  },
@@ -37867,6 +38650,7 @@ var CHAT_CARD_REGISTRY = {
37867
38650
  size: "sm",
37868
38651
  href: _nullishCoalesce(chatRef.url, () => ( "")),
37869
38652
  targetPlatform: _nullishCoalesce(chatRef.targetPlatform, () => ( null)),
38653
+ placeholderUrl: _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _814 => _814.extras, 'optionalAccess', _815 => _815.buildOgPlaceholderUrl, 'optionalCall', _816 => _816(_nullishCoalesce(_optionalChain([item, 'optionalAccess', _817 => _817.title]), () => ( "")))]), () => ( null)),
37870
38654
  ...newTabAnchorAttrs(opts.isNewTab)
37871
38655
  }
37872
38656
  )
@@ -37883,6 +38667,7 @@ var CHAT_CARD_REGISTRY = {
37883
38667
  size: "sm",
37884
38668
  href: _nullishCoalesce(chatRef.url, () => ( "")),
37885
38669
  targetPlatform: _nullishCoalesce(chatRef.targetPlatform, () => ( null)),
38670
+ placeholderUrl: _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _818 => _818.extras, 'optionalAccess', _819 => _819.buildOgPlaceholderUrl, 'optionalCall', _820 => _820(_nullishCoalesce(_optionalChain([item, 'optionalAccess', _821 => _821.title]), () => ( "")))]), () => ( null)),
37886
38671
  ...newTabAnchorAttrs(opts.isNewTab)
37887
38672
  }
37888
38673
  )
@@ -37893,7 +38678,7 @@ var CHAT_CARD_REGISTRY = {
37893
38678
  contentRefType: "product_release",
37894
38679
  skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ProductReleaseCardSkeleton, { size: "sm" }),
37895
38680
  render: (item, chatRef, opts) => {
37896
- const builder = _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _802 => _802.extras, 'optionalAccess', _803 => _803.buildProductReleaseCardProps]), () => ( defaultBuildProductReleaseCardProps));
38681
+ const builder = _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _822 => _822.extras, 'optionalAccess', _823 => _823.buildProductReleaseCardProps]), () => ( defaultBuildProductReleaseCardProps));
37897
38682
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
37898
38683
  ProductReleaseChatCard,
37899
38684
  {
@@ -37918,6 +38703,7 @@ var CHAT_CARD_REGISTRY = {
37918
38703
  size: "sm",
37919
38704
  href: _nullishCoalesce(chatRef.url, () => ( "")),
37920
38705
  targetPlatform: _nullishCoalesce(chatRef.targetPlatform, () => ( null)),
38706
+ placeholderUrl: _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _824 => _824.extras, 'optionalAccess', _825 => _825.buildOgPlaceholderUrl, 'optionalCall', _826 => _826(_nullishCoalesce(_optionalChain([item, 'optionalAccess', _827 => _827.title]), () => ( "")))]), () => ( null)),
37921
38707
  ...newTabAnchorAttrs(opts.isNewTab)
37922
38708
  }
37923
38709
  )
@@ -37935,6 +38721,7 @@ var CHAT_CARD_REGISTRY = {
37935
38721
  size: "sm",
37936
38722
  href: _nullishCoalesce(chatRef.url, () => ( "")),
37937
38723
  targetPlatform: _nullishCoalesce(chatRef.targetPlatform, () => ( null)),
38724
+ placeholderUrl: _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _828 => _828.extras, 'optionalAccess', _829 => _829.buildOgPlaceholderUrl, 'optionalCall', _830 => _830(_nullishCoalesce(_optionalChain([item, 'optionalAccess', _831 => _831.title]), () => ( "")))]), () => ( null)),
37938
38725
  ...newTabAnchorAttrs(opts.isNewTab)
37939
38726
  }
37940
38727
  )
@@ -37946,7 +38733,7 @@ var CHAT_CARD_REGISTRY = {
37946
38733
  skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CampaignCardAdminSkeleton, {}),
37947
38734
  // No public viewer — synthesize the hub-internal admin URL post-fetch
37948
38735
  // so the wrapper + isNewTab computation see the actual destination.
37949
- fallbackHref: (item) => _optionalChain([item, 'optionalAccess', _804 => _804.id]) ? `/admin/campaigns/${encodeURIComponent(item.id)}` : null,
38736
+ fallbackHref: (item) => _optionalChain([item, 'optionalAccess', _832 => _832.id]) ? `/admin/campaigns/${encodeURIComponent(item.id)}` : null,
37950
38737
  render: (item, chatRef, opts) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
37951
38738
  CampaignChatCard,
37952
38739
  {
@@ -37970,12 +38757,12 @@ function ChatCardNavWrap({
37970
38757
  const onClickCapture = (e) => {
37971
38758
  if (!href) return;
37972
38759
  const targetEl = e.target;
37973
- if (_optionalChain([targetEl, 'optionalAccess', _805 => _805.closest, 'optionalCall', _806 => _806("button")])) return;
37974
- if (!_optionalChain([targetEl, 'optionalAccess', _807 => _807.closest, 'optionalCall', _808 => _808("a")])) return;
38760
+ if (_optionalChain([targetEl, 'optionalAccess', _833 => _833.closest, 'optionalCall', _834 => _834("button")])) return;
38761
+ if (!_optionalChain([targetEl, 'optionalAccess', _835 => _835.closest, 'optionalCall', _836 => _836("a")])) return;
37975
38762
  const handled = handleChatNavClick(e, runtime, { href, path, targetPlatform });
37976
38763
  if (!handled) return;
37977
38764
  e.stopPropagation();
37978
- if (!isNewTab && _optionalChain([panel, 'optionalAccess', _809 => _809.closeChat])) panel.closeChat();
38765
+ if (!isNewTab && _optionalChain([panel, 'optionalAccess', _837 => _837.closeChat])) panel.closeChat();
37979
38766
  };
37980
38767
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "contents", onClickCapture, children });
37981
38768
  }
@@ -37997,7 +38784,7 @@ function ChatCardLoader({
37997
38784
  title: chatRef.title,
37998
38785
  externalUrl: chatRef.url,
37999
38786
  targetPlatform: chatRef.targetPlatform,
38000
- path: typeof _optionalChain([chatRef, 'access', _810 => _810.metadata, 'optionalAccess', _811 => _811.path]) === "string" ? chatRef.metadata.path : null
38787
+ path: typeof _optionalChain([chatRef, 'access', _838 => _838.metadata, 'optionalAccess', _839 => _839.path]) === "string" ? chatRef.metadata.path : null
38001
38788
  },
38002
38789
  {
38003
38790
  baseRoute,
@@ -38015,7 +38802,7 @@ function ChatCardLoader({
38015
38802
  const entry = CHAT_CARD_REGISTRY[resolvedChatRef.type];
38016
38803
  const fetchEntry = entry && entry.mode === "fetch" ? entry : null;
38017
38804
  const { item, isLoading } = useChatCardItem(
38018
- _nullishCoalesce(_optionalChain([fetchEntry, 'optionalAccess', _812 => _812.contentRefType]), () => ( "")),
38805
+ _nullishCoalesce(_optionalChain([fetchEntry, 'optionalAccess', _840 => _840.contentRefType]), () => ( "")),
38019
38806
  fetchEntry ? resolvedChatRef.id : ""
38020
38807
  );
38021
38808
  if (!entry) return null;
@@ -38025,7 +38812,7 @@ function ChatCardLoader({
38025
38812
  } : resolvedChatRef;
38026
38813
  const isNewTab = computeIsNewTab(runtime, finalChatRef.url, _nullishCoalesce(finalChatRef.targetPlatform, () => ( null)));
38027
38814
  const renderOpts = { baseRoute, chipBasePlatform, extras, isNewTab };
38028
- const path = typeof _optionalChain([finalChatRef, 'access', _813 => _813.metadata, 'optionalAccess', _814 => _814.path]) === "string" ? finalChatRef.metadata.path : null;
38815
+ const path = typeof _optionalChain([finalChatRef, 'access', _841 => _841.metadata, 'optionalAccess', _842 => _842.path]) === "string" ? finalChatRef.metadata.path : null;
38029
38816
  const navWrap = (children) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
38030
38817
  ChatCardNavWrap,
38031
38818
  {
@@ -38507,7 +39294,7 @@ function useJetStreamDialogSubscription({
38507
39294
  const hadConnectionBeforeRef = _react.useRef.call(void 0, false);
38508
39295
  const acquireClient = _react.useCallback.call(void 0,
38509
39296
  (url) => {
38510
- if (_optionalChain([shared, 'optionalAccess', _815 => _815.wsUrl]) !== url) {
39297
+ if (_optionalChain([shared, 'optionalAccess', _843 => _843.wsUrl]) !== url) {
38511
39298
  if (shared) {
38512
39299
  if (shared.closeTimer) clearTimeout(shared.closeTimer);
38513
39300
  const old = shared;
@@ -38609,7 +39396,7 @@ function useJetStreamDialogSubscription({
38609
39396
  if (closed) return;
38610
39397
  if (shared !== sharedConn) return;
38611
39398
  try {
38612
- await _optionalChain([onBeforeReconnectRef, 'access', _816 => _816.current, 'optionalCall', _817 => _817()]);
39399
+ await _optionalChain([onBeforeReconnectRef, 'access', _844 => _844.current, 'optionalCall', _845 => _845()]);
38613
39400
  } catch (e21) {
38614
39401
  }
38615
39402
  if (closed) return;
@@ -38642,7 +39429,7 @@ function useJetStreamDialogSubscription({
38642
39429
  }
38643
39430
  hadConnectionBeforeRef.current = true;
38644
39431
  retryAttempt = 0;
38645
- _optionalChain([onConnectRef, 'access', _818 => _818.current, 'optionalCall', _819 => _819()]);
39432
+ _optionalChain([onConnectRef, 'access', _846 => _846.current, 'optionalCall', _847 => _847()]);
38646
39433
  }
38647
39434
  if (event.status === "error") {
38648
39435
  console.warn("[JetStream] NATS protocol error:", event.data);
@@ -38658,7 +39445,7 @@ function useJetStreamDialogSubscription({
38658
39445
  }
38659
39446
  subscriptionRef.current = null;
38660
39447
  }
38661
- _optionalChain([onDisconnectRef, 'access', _820 => _820.current, 'optionalCall', _821 => _821()]);
39448
+ _optionalChain([onDisconnectRef, 'access', _848 => _848.current, 'optionalCall', _849 => _849()]);
38662
39449
  scheduleRetry();
38663
39450
  }
38664
39451
  });
@@ -38674,7 +39461,7 @@ function useJetStreamDialogSubscription({
38674
39461
  sharedConn.connectPromise = null;
38675
39462
  if (!closed) {
38676
39463
  setIsConnected(false);
38677
- _optionalChain([onDisconnectRef, 'access', _822 => _822.current, 'optionalCall', _823 => _823()]);
39464
+ _optionalChain([onDisconnectRef, 'access', _850 => _850.current, 'optionalCall', _851 => _851()]);
38678
39465
  scheduleRetry();
38679
39466
  }
38680
39467
  }
@@ -38765,7 +39552,7 @@ function useJetStreamDialogSubscription({
38765
39552
  }
38766
39553
  subscriptionRef.current = handle;
38767
39554
  setIsSubscribed(true);
38768
- _optionalChain([onSubscribedRef, 'access', _824 => _824.current, 'optionalCall', _825 => _825()]);
39555
+ _optionalChain([onSubscribedRef, 'access', _852 => _852.current, 'optionalCall', _853 => _853()]);
38769
39556
  } catch (e29) {
38770
39557
  if (!cancelled) {
38771
39558
  setIsSubscribed(false);
@@ -38843,7 +39630,7 @@ function useNatsDialogSubscription({
38843
39630
  reconnectionBackoffRef.current = reconnectionBackoff;
38844
39631
  }, [reconnectionBackoff]);
38845
39632
  const acquireClient = _react.useCallback.call(void 0, (url) => {
38846
- if (_optionalChain([shared2, 'optionalAccess', _826 => _826.wsUrl]) !== url) {
39633
+ if (_optionalChain([shared2, 'optionalAccess', _854 => _854.wsUrl]) !== url) {
38847
39634
  if (shared2) {
38848
39635
  shared2.closeTimer && clearTimeout(shared2.closeTimer);
38849
39636
  const old = shared2;
@@ -38934,7 +39721,7 @@ function useNatsDialogSubscription({
38934
39721
  if (closed) return;
38935
39722
  if (shared2 !== sharedConn) return;
38936
39723
  try {
38937
- await _optionalChain([onBeforeReconnectRef, 'access', _827 => _827.current, 'optionalCall', _828 => _828()]);
39724
+ await _optionalChain([onBeforeReconnectRef, 'access', _855 => _855.current, 'optionalCall', _856 => _856()]);
38938
39725
  } catch (e31) {
38939
39726
  }
38940
39727
  if (closed) return;
@@ -38967,22 +39754,22 @@ function useNatsDialogSubscription({
38967
39754
  }
38968
39755
  hadConnectionBeforeRef.current = true;
38969
39756
  retryAttempt = 0;
38970
- _optionalChain([onConnectRef, 'access', _829 => _829.current, 'optionalCall', _830 => _830()]);
39757
+ _optionalChain([onConnectRef, 'access', _857 => _857.current, 'optionalCall', _858 => _858()]);
38971
39758
  }
38972
39759
  if (disconnected) {
38973
39760
  setIsConnected(false);
38974
39761
  setIsSubscribed(false);
38975
39762
  subscriptionRefs.current.forEach((sub) => {
38976
39763
  try {
38977
- _optionalChain([sub, 'optionalAccess', _831 => _831.unsubscribe, 'call', _832 => _832()]);
39764
+ _optionalChain([sub, 'optionalAccess', _859 => _859.unsubscribe, 'call', _860 => _860()]);
38978
39765
  } catch (e33) {
38979
39766
  }
38980
39767
  });
38981
39768
  subscriptionRefs.current.clear();
38982
39769
  lastSubscribedDialogIdRef.current = null;
38983
- _optionalChain([abortControllerRef, 'access', _833 => _833.current, 'optionalAccess', _834 => _834.abort, 'call', _835 => _835()]);
39770
+ _optionalChain([abortControllerRef, 'access', _861 => _861.current, 'optionalAccess', _862 => _862.abort, 'call', _863 => _863()]);
38984
39771
  abortControllerRef.current = null;
38985
- _optionalChain([onDisconnectRef, 'access', _836 => _836.current, 'optionalCall', _837 => _837()]);
39772
+ _optionalChain([onDisconnectRef, 'access', _864 => _864.current, 'optionalCall', _865 => _865()]);
38986
39773
  scheduleRetry();
38987
39774
  }
38988
39775
  });
@@ -38998,7 +39785,7 @@ function useNatsDialogSubscription({
38998
39785
  sharedConn.connectPromise = null;
38999
39786
  if (!closed) {
39000
39787
  setIsConnected(false);
39001
- _optionalChain([onDisconnectRef, 'access', _838 => _838.current, 'optionalCall', _839 => _839()]);
39788
+ _optionalChain([onDisconnectRef, 'access', _866 => _866.current, 'optionalCall', _867 => _867()]);
39002
39789
  scheduleRetry();
39003
39790
  }
39004
39791
  }
@@ -39014,7 +39801,7 @@ function useNatsDialogSubscription({
39014
39801
  }
39015
39802
  subscriptionRefs.current.forEach((sub) => {
39016
39803
  try {
39017
- _optionalChain([sub, 'optionalAccess', _840 => _840.unsubscribe, 'call', _841 => _841()]);
39804
+ _optionalChain([sub, 'optionalAccess', _868 => _868.unsubscribe, 'call', _869 => _869()]);
39018
39805
  } catch (e35) {
39019
39806
  }
39020
39807
  });
@@ -39042,13 +39829,13 @@ function useNatsDialogSubscription({
39042
39829
  setIsSubscribed(false);
39043
39830
  subscriptionRefs.current.forEach((sub) => {
39044
39831
  try {
39045
- _optionalChain([sub, 'optionalAccess', _842 => _842.unsubscribe, 'call', _843 => _843()]);
39832
+ _optionalChain([sub, 'optionalAccess', _870 => _870.unsubscribe, 'call', _871 => _871()]);
39046
39833
  } catch (e36) {
39047
39834
  }
39048
39835
  });
39049
39836
  subscriptionRefs.current.clear();
39050
39837
  lastSubscribedDialogIdRef.current = null;
39051
- _optionalChain([abortControllerRef, 'access', _844 => _844.current, 'optionalAccess', _845 => _845.abort, 'call', _846 => _846()]);
39838
+ _optionalChain([abortControllerRef, 'access', _872 => _872.current, 'optionalAccess', _873 => _873.abort, 'call', _874 => _874()]);
39052
39839
  abortControllerRef.current = null;
39053
39840
  }
39054
39841
  return;
@@ -39060,12 +39847,12 @@ function useNatsDialogSubscription({
39060
39847
  if (subscriptionRefs.current.size > 0) {
39061
39848
  subscriptionRefs.current.forEach((sub) => {
39062
39849
  try {
39063
- _optionalChain([sub, 'optionalAccess', _847 => _847.unsubscribe, 'call', _848 => _848()]);
39850
+ _optionalChain([sub, 'optionalAccess', _875 => _875.unsubscribe, 'call', _876 => _876()]);
39064
39851
  } catch (e37) {
39065
39852
  }
39066
39853
  });
39067
39854
  subscriptionRefs.current.clear();
39068
- _optionalChain([abortControllerRef, 'access', _849 => _849.current, 'optionalAccess', _850 => _850.abort, 'call', _851 => _851()]);
39855
+ _optionalChain([abortControllerRef, 'access', _877 => _877.current, 'optionalAccess', _878 => _878.abort, 'call', _879 => _879()]);
39069
39856
  }
39070
39857
  abortControllerRef.current = new AbortController();
39071
39858
  const abort = abortControllerRef.current;
@@ -39097,7 +39884,7 @@ function useNatsDialogSubscription({
39097
39884
  });
39098
39885
  lastSubscribedDialogIdRef.current = dialogId;
39099
39886
  setIsSubscribed(true);
39100
- _optionalChain([onSubscribedRef, 'access', _852 => _852.current, 'optionalCall', _853 => _853()]);
39887
+ _optionalChain([onSubscribedRef, 'access', _880 => _880.current, 'optionalCall', _881 => _881()]);
39101
39888
  };
39102
39889
  if (isConnectedRef.current) {
39103
39890
  createSubscriptions();
@@ -39107,7 +39894,7 @@ function useNatsDialogSubscription({
39107
39894
  abort.abort();
39108
39895
  subscriptionRefs.current.forEach((sub) => {
39109
39896
  try {
39110
- _optionalChain([sub, 'optionalAccess', _854 => _854.unsubscribe, 'call', _855 => _855()]);
39897
+ _optionalChain([sub, 'optionalAccess', _882 => _882.unsubscribe, 'call', _883 => _883()]);
39111
39898
  } catch (e39) {
39112
39899
  }
39113
39900
  });
@@ -39148,7 +39935,7 @@ function useNatsDialogSubscription({
39148
39935
  });
39149
39936
  lastSubscribedDialogIdRef.current = dialogId2;
39150
39937
  setIsSubscribed(true);
39151
- _optionalChain([onSubscribedRef, 'access', _856 => _856.current, 'optionalCall', _857 => _857()]);
39938
+ _optionalChain([onSubscribedRef, 'access', _884 => _884.current, 'optionalCall', _885 => _885()]);
39152
39939
  } else if (subscriptionRefs.current.size > 0) {
39153
39940
  setIsSubscribed(true);
39154
39941
  }
@@ -39156,10 +39943,10 @@ function useNatsDialogSubscription({
39156
39943
  return { isConnected, isSubscribed, reconnectionCount };
39157
39944
  }
39158
39945
  function buildNatsWsUrl(apiBaseUrl, options) {
39159
- const path = _optionalChain([options, 'optionalAccess', _858 => _858.source]) === "dashboard" ? "/ws/nats-api" : "/ws/nats";
39946
+ const path = _optionalChain([options, 'optionalAccess', _886 => _886.source]) === "dashboard" ? "/ws/nats-api" : "/ws/nats";
39160
39947
  const u = new URL(path, apiBaseUrl);
39161
39948
  u.protocol = u.protocol === "https:" ? "wss:" : "ws:";
39162
- if (_optionalChain([options, 'optionalAccess', _859 => _859.includeAuthParam]) && _optionalChain([options, 'optionalAccess', _860 => _860.token])) {
39949
+ if (_optionalChain([options, 'optionalAccess', _887 => _887.includeAuthParam]) && _optionalChain([options, 'optionalAccess', _888 => _888.token])) {
39163
39950
  u.searchParams.set("authorization", options.token);
39164
39951
  }
39165
39952
  return u.toString();
@@ -39475,8 +40262,8 @@ var MessageSegmentAccumulator = class {
39475
40262
  type: "tool_execution",
39476
40263
  data: {
39477
40264
  ...toolData,
39478
- toolTitle: _nullishCoalesce(_nullishCoalesce(toolData.toolTitle, () => ( _optionalChain([existingExecuting, 'optionalAccess', _861 => _861.data, 'access', _862 => _862.toolTitle]))), () => ( _optionalChain([executingTool, 'optionalAccess', _863 => _863.toolTitle]))),
39479
- parameters: toolData.parameters || _optionalChain([executingTool, 'optionalAccess', _864 => _864.parameters])
40265
+ toolTitle: _nullishCoalesce(_nullishCoalesce(toolData.toolTitle, () => ( _optionalChain([existingExecuting, 'optionalAccess', _889 => _889.data, 'access', _890 => _890.toolTitle]))), () => ( _optionalChain([executingTool, 'optionalAccess', _891 => _891.toolTitle]))),
40266
+ parameters: toolData.parameters || _optionalChain([executingTool, 'optionalAccess', _892 => _892.parameters])
39480
40267
  }
39481
40268
  };
39482
40269
  if (existingIndex !== -1) {
@@ -39500,8 +40287,8 @@ var MessageSegmentAccumulator = class {
39500
40287
  if (seg.type !== "approval_batch") return seg;
39501
40288
  const hasCall = seg.data.toolCalls.some((c) => c.toolExecutionRequestId === execId);
39502
40289
  if (!hasCall) return seg;
39503
- const prev = _optionalChain([seg, 'access', _865 => _865.data, 'access', _866 => _866.executions, 'optionalAccess', _867 => _867[execId]]);
39504
- const next = toolData.type === "EXECUTED_TOOL" ? { status: "done", result: toolData.result, success: toolData.success } : { status: "executing", result: _optionalChain([prev, 'optionalAccess', _868 => _868.result]), success: _optionalChain([prev, 'optionalAccess', _869 => _869.success]) };
40290
+ const prev = _optionalChain([seg, 'access', _893 => _893.data, 'access', _894 => _894.executions, 'optionalAccess', _895 => _895[execId]]);
40291
+ const next = toolData.type === "EXECUTED_TOOL" ? { status: "done", result: toolData.result, success: toolData.success } : { status: "executing", result: _optionalChain([prev, 'optionalAccess', _896 => _896.result]), success: _optionalChain([prev, 'optionalAccess', _897 => _897.success]) };
39505
40292
  matched = true;
39506
40293
  return {
39507
40294
  ...seg,
@@ -39621,10 +40408,10 @@ var MessageSegmentAccumulator = class {
39621
40408
  const segment = {
39622
40409
  type: "approval_request",
39623
40410
  data: {
39624
- command: _optionalChain([pendingApproval, 'optionalAccess', _870 => _870.command]) || "",
39625
- explanation: _optionalChain([pendingApproval, 'optionalAccess', _871 => _871.explanation]),
40411
+ command: _optionalChain([pendingApproval, 'optionalAccess', _898 => _898.command]) || "",
40412
+ explanation: _optionalChain([pendingApproval, 'optionalAccess', _899 => _899.explanation]),
39626
40413
  requestId,
39627
- approvalType: _optionalChain([pendingApproval, 'optionalAccess', _872 => _872.approvalType]) || approvalType
40414
+ approvalType: _optionalChain([pendingApproval, 'optionalAccess', _900 => _900.approvalType]) || approvalType
39628
40415
  },
39629
40416
  status,
39630
40417
  onApprove: this.callbacks.onApprove,
@@ -39812,7 +40599,7 @@ function useRealtimeChunkProcessor(options) {
39812
40599
  if (initialState.escalatedApprovals) {
39813
40600
  pendingEscalatedRef.current = new Map(initialState.escalatedApprovals);
39814
40601
  initialState.escalatedApprovals.forEach((data, requestId) => {
39815
- _optionalChain([callbacks, 'access', _873 => _873.onEscalatedApproval, 'optionalCall', _874 => _874(requestId, data)]);
40602
+ _optionalChain([callbacks, 'access', _901 => _901.onEscalatedApproval, 'optionalCall', _902 => _902(requestId, data)]);
39816
40603
  });
39817
40604
  }
39818
40605
  hasEverStreamedRef.current = true;
@@ -39834,32 +40621,32 @@ function useRealtimeChunkProcessor(options) {
39834
40621
  case "message_start":
39835
40622
  isInStreamRef.current = true;
39836
40623
  hasEverStreamedRef.current = true;
39837
- _optionalChain([callbacks, 'access', _875 => _875.onStreamStart, 'optionalCall', _876 => _876()]);
40624
+ _optionalChain([callbacks, 'access', _903 => _903.onStreamStart, 'optionalCall', _904 => _904()]);
39838
40625
  accumulator.resetSegments();
39839
40626
  break;
39840
40627
  case "message_end":
39841
40628
  isInStreamRef.current = false;
39842
- _optionalChain([callbacks, 'access', _877 => _877.onStreamEnd, 'optionalCall', _878 => _878()]);
40629
+ _optionalChain([callbacks, 'access', _905 => _905.onStreamEnd, 'optionalCall', _906 => _906()]);
39843
40630
  accumulator.resetSegments();
39844
40631
  break;
39845
40632
  case "metadata":
39846
- _optionalChain([callbacks, 'access', _879 => _879.onMetadata, 'optionalCall', _880 => _880(action)]);
40633
+ _optionalChain([callbacks, 'access', _907 => _907.onMetadata, 'optionalCall', _908 => _908(action)]);
39847
40634
  break;
39848
40635
  case "text": {
39849
40636
  const segments = accumulator.appendText(action.text);
39850
40637
  if (isInStreamRef.current || !hasEverStreamedRef.current) {
39851
- _optionalChain([callbacks, 'access', _881 => _881.onSegmentsUpdate, 'optionalCall', _882 => _882(segments)]);
40638
+ _optionalChain([callbacks, 'access', _909 => _909.onSegmentsUpdate, 'optionalCall', _910 => _910(segments)]);
39852
40639
  } else {
39853
- _optionalChain([callbacks, 'access', _883 => _883.onSegmentsUpdate, 'optionalCall', _884 => _884([{ type: "text", text: action.text }], { append: true })]);
40640
+ _optionalChain([callbacks, 'access', _911 => _911.onSegmentsUpdate, 'optionalCall', _912 => _912([{ type: "text", text: action.text }], { append: true })]);
39854
40641
  }
39855
40642
  break;
39856
40643
  }
39857
40644
  case "thinking": {
39858
40645
  const segments = accumulator.appendThinking(action.text);
39859
40646
  if (isInStreamRef.current || !hasEverStreamedRef.current) {
39860
- _optionalChain([callbacks, 'access', _885 => _885.onSegmentsUpdate, 'optionalCall', _886 => _886(segments)]);
40647
+ _optionalChain([callbacks, 'access', _913 => _913.onSegmentsUpdate, 'optionalCall', _914 => _914(segments)]);
39861
40648
  } else {
39862
- _optionalChain([callbacks, 'access', _887 => _887.onSegmentsUpdate, 'optionalCall', _888 => _888([{ type: "thinking", text: action.text }], { append: true })]);
40649
+ _optionalChain([callbacks, 'access', _915 => _915.onSegmentsUpdate, 'optionalCall', _916 => _916([{ type: "thinking", text: action.text }], { append: true })]);
39863
40650
  }
39864
40651
  break;
39865
40652
  }
@@ -39869,7 +40656,7 @@ function useRealtimeChunkProcessor(options) {
39869
40656
  break;
39870
40657
  }
39871
40658
  const segments = accumulator.addToolExecution(action.segment);
39872
- _optionalChain([callbacks, 'access', _889 => _889.onSegmentsUpdate, 'optionalCall', _890 => _890(segments)]);
40659
+ _optionalChain([callbacks, 'access', _917 => _917.onSegmentsUpdate, 'optionalCall', _918 => _918(segments)]);
39873
40660
  break;
39874
40661
  }
39875
40662
  case "approval_request": {
@@ -39883,10 +40670,10 @@ function useRealtimeChunkProcessor(options) {
39883
40670
  approvalType,
39884
40671
  status
39885
40672
  );
39886
- _optionalChain([callbacks, 'access', _891 => _891.onSegmentsUpdate, 'optionalCall', _892 => _892(segments)]);
40673
+ _optionalChain([callbacks, 'access', _919 => _919.onSegmentsUpdate, 'optionalCall', _920 => _920(segments)]);
39887
40674
  } else {
39888
40675
  pendingEscalatedRef.current.set(requestId, { command, explanation, approvalType });
39889
- _optionalChain([callbacks, 'access', _893 => _893.onEscalatedApproval, 'optionalCall', _894 => _894(requestId, { command, explanation, approvalType })]);
40676
+ _optionalChain([callbacks, 'access', _921 => _921.onEscalatedApproval, 'optionalCall', _922 => _922(requestId, { command, explanation, approvalType })]);
39890
40677
  }
39891
40678
  break;
39892
40679
  }
@@ -39898,20 +40685,20 @@ function useRealtimeChunkProcessor(options) {
39898
40685
  const summary = required ? getCommandText(required) : `Batch of ${toolCalls.length} tool calls`;
39899
40686
  pendingEscalatedRef.current.set(requestId, {
39900
40687
  command: summary,
39901
- explanation: _optionalChain([required, 'optionalAccess', _895 => _895.toolExplanation]),
40688
+ explanation: _optionalChain([required, 'optionalAccess', _923 => _923.toolExplanation]),
39902
40689
  approvalType,
39903
40690
  toolCalls
39904
40691
  });
39905
- _optionalChain([callbacks, 'access', _896 => _896.onEscalatedApproval, 'optionalCall', _897 => _897(requestId, {
40692
+ _optionalChain([callbacks, 'access', _924 => _924.onEscalatedApproval, 'optionalCall', _925 => _925(requestId, {
39906
40693
  command: summary,
39907
- explanation: _optionalChain([required, 'optionalAccess', _898 => _898.toolExplanation]),
40694
+ explanation: _optionalChain([required, 'optionalAccess', _926 => _926.toolExplanation]),
39908
40695
  approvalType
39909
40696
  })]);
39910
40697
  break;
39911
40698
  }
39912
40699
  if (batchApprovalsEnabled) {
39913
40700
  const segments2 = accumulator.addApprovalBatch(requestId, approvalType, toolCalls, status);
39914
- _optionalChain([callbacks, 'access', _899 => _899.onSegmentsUpdate, 'optionalCall', _900 => _900(segments2)]);
40701
+ _optionalChain([callbacks, 'access', _927 => _927.onSegmentsUpdate, 'optionalCall', _928 => _928(segments2)]);
39915
40702
  break;
39916
40703
  }
39917
40704
  let segments = accumulator.getSegments();
@@ -39925,7 +40712,7 @@ function useRealtimeChunkProcessor(options) {
39925
40712
  status
39926
40713
  );
39927
40714
  }
39928
- _optionalChain([callbacks, 'access', _901 => _901.onSegmentsUpdate, 'optionalCall', _902 => _902(segments)]);
40715
+ _optionalChain([callbacks, 'access', _929 => _929.onSegmentsUpdate, 'optionalCall', _930 => _930(segments)]);
39929
40716
  break;
39930
40717
  }
39931
40718
  case "approval_result": {
@@ -39934,7 +40721,7 @@ function useRealtimeChunkProcessor(options) {
39934
40721
  const status = approved ? "approved" : "rejected";
39935
40722
  if (escalatedData) {
39936
40723
  pendingEscalatedRef.current.delete(requestId);
39937
- _optionalChain([callbacks, 'access', _903 => _903.onEscalatedApprovalResult, 'optionalCall', _904 => _904(requestId, approved, {
40724
+ _optionalChain([callbacks, 'access', _931 => _931.onEscalatedApprovalResult, 'optionalCall', _932 => _932(requestId, approved, {
39938
40725
  command: escalatedData.command,
39939
40726
  explanation: escalatedData.explanation,
39940
40727
  approvalType: escalatedData.approvalType
@@ -39947,7 +40734,7 @@ function useRealtimeChunkProcessor(options) {
39947
40734
  escalatedData.toolCalls,
39948
40735
  status
39949
40736
  );
39950
- _optionalChain([callbacks, 'access', _905 => _905.onSegmentsUpdate, 'optionalCall', _906 => _906(segments)]);
40737
+ _optionalChain([callbacks, 'access', _933 => _933.onSegmentsUpdate, 'optionalCall', _934 => _934(segments)]);
39951
40738
  } else {
39952
40739
  let segments = accumulator.getSegments();
39953
40740
  for (const call of escalatedData.toolCalls) {
@@ -39960,7 +40747,7 @@ function useRealtimeChunkProcessor(options) {
39960
40747
  status
39961
40748
  );
39962
40749
  }
39963
- _optionalChain([callbacks, 'access', _907 => _907.onSegmentsUpdate, 'optionalCall', _908 => _908(segments)]);
40750
+ _optionalChain([callbacks, 'access', _935 => _935.onSegmentsUpdate, 'optionalCall', _936 => _936(segments)]);
39964
40751
  }
39965
40752
  } else {
39966
40753
  const segments = accumulator.addApprovalRequest(
@@ -39970,65 +40757,65 @@ function useRealtimeChunkProcessor(options) {
39970
40757
  escalatedData.approvalType,
39971
40758
  status
39972
40759
  );
39973
- _optionalChain([callbacks, 'access', _909 => _909.onSegmentsUpdate, 'optionalCall', _910 => _910(segments)]);
40760
+ _optionalChain([callbacks, 'access', _937 => _937.onSegmentsUpdate, 'optionalCall', _938 => _938(segments)]);
39974
40761
  }
39975
40762
  } else {
39976
40763
  accumulator.updateApprovalStatus(requestId, status);
39977
40764
  if (!callbacks.onApprovalResolved) {
39978
- _optionalChain([callbacks, 'access', _911 => _911.onSegmentsUpdate, 'optionalCall', _912 => _912(accumulator.getSegments())]);
40765
+ _optionalChain([callbacks, 'access', _939 => _939.onSegmentsUpdate, 'optionalCall', _940 => _940(accumulator.getSegments())]);
39979
40766
  }
39980
40767
  }
39981
- _optionalChain([callbacks, 'access', _913 => _913.onApprovalResolved, 'optionalCall', _914 => _914(requestId, status, approvalType)]);
40768
+ _optionalChain([callbacks, 'access', _941 => _941.onApprovalResolved, 'optionalCall', _942 => _942(requestId, status, approvalType)]);
39982
40769
  break;
39983
40770
  }
39984
40771
  case "error": {
39985
40772
  let message2;
39986
- if ("details" in action && _optionalChain([action, 'optionalAccess', _915 => _915.details])) {
40773
+ if ("details" in action && _optionalChain([action, 'optionalAccess', _943 => _943.details])) {
39987
40774
  try {
39988
- message2 = _optionalChain([JSON, 'access', _916 => _916.parse, 'call', _917 => _917(action.details), 'optionalAccess', _918 => _918.error, 'optionalAccess', _919 => _919.message]);
40775
+ message2 = _optionalChain([JSON, 'access', _944 => _944.parse, 'call', _945 => _945(action.details), 'optionalAccess', _946 => _946.error, 'optionalAccess', _947 => _947.message]);
39989
40776
  } catch (e41) {
39990
40777
  message2 = action.details;
39991
40778
  }
39992
40779
  }
39993
40780
  const segments = accumulator.addError(action.error, message2);
39994
- _optionalChain([callbacks, 'access', _920 => _920.onSegmentsUpdate, 'optionalCall', _921 => _921(segments)]);
39995
- _optionalChain([callbacks, 'access', _922 => _922.onError, 'optionalCall', _923 => _923(action.error, message2)]);
40781
+ _optionalChain([callbacks, 'access', _948 => _948.onSegmentsUpdate, 'optionalCall', _949 => _949(segments)]);
40782
+ _optionalChain([callbacks, 'access', _950 => _950.onError, 'optionalCall', _951 => _951(action.error, message2)]);
39996
40783
  break;
39997
40784
  }
39998
40785
  case "system": {
39999
- _optionalChain([callbacks, 'access', _924 => _924.onSystemMessage, 'optionalCall', _925 => _925(action.text)]);
40786
+ _optionalChain([callbacks, 'access', _952 => _952.onSystemMessage, 'optionalCall', _953 => _953(action.text)]);
40000
40787
  break;
40001
40788
  }
40002
40789
  case "direct_message": {
40003
- _optionalChain([callbacks, 'access', _926 => _926.onDirectMessage, 'optionalCall', _927 => _927(action.text, {
40790
+ _optionalChain([callbacks, 'access', _954 => _954.onDirectMessage, 'optionalCall', _955 => _955(action.text, {
40004
40791
  ownerType: action.ownerType,
40005
40792
  displayName: action.displayName
40006
40793
  })]);
40007
40794
  break;
40008
40795
  }
40009
40796
  case "message_request":
40010
- _optionalChain([callbacks, 'access', _928 => _928.onUserMessage, 'optionalCall', _929 => _929(action.text, {
40797
+ _optionalChain([callbacks, 'access', _956 => _956.onUserMessage, 'optionalCall', _957 => _957(action.text, {
40011
40798
  ownerType: action.ownerType,
40012
40799
  displayName: action.displayName
40013
40800
  })]);
40014
40801
  break;
40015
40802
  case "token_usage":
40016
- _optionalChain([callbacks, 'access', _930 => _930.onTokenUsage, 'optionalCall', _931 => _931(action.data)]);
40803
+ _optionalChain([callbacks, 'access', _958 => _958.onTokenUsage, 'optionalCall', _959 => _959(action.data)]);
40017
40804
  break;
40018
40805
  case "context_compaction_start": {
40019
40806
  const standalone = !isInStreamRef.current;
40020
40807
  const segments = accumulator.addContextCompaction();
40021
- _optionalChain([callbacks, 'access', _932 => _932.onSegmentsUpdate, 'optionalCall', _933 => _933(segments, standalone ? { append: true, isCompacting: true } : void 0)]);
40808
+ _optionalChain([callbacks, 'access', _960 => _960.onSegmentsUpdate, 'optionalCall', _961 => _961(segments, standalone ? { append: true, isCompacting: true } : void 0)]);
40022
40809
  break;
40023
40810
  }
40024
40811
  case "context_compaction_end": {
40025
40812
  const standalone = !isInStreamRef.current;
40026
40813
  const segments = accumulator.completeContextCompaction(action.summary);
40027
- _optionalChain([callbacks, 'access', _934 => _934.onSegmentsUpdate, 'optionalCall', _935 => _935(segments, standalone ? { append: true, isCompacting: true } : void 0)]);
40814
+ _optionalChain([callbacks, 'access', _962 => _962.onSegmentsUpdate, 'optionalCall', _963 => _963(segments, standalone ? { append: true, isCompacting: true } : void 0)]);
40028
40815
  break;
40029
40816
  }
40030
40817
  case "dialog_closed":
40031
- _optionalChain([callbacks, 'access', _936 => _936.onDialogClosed, 'optionalCall', _937 => _937()]);
40818
+ _optionalChain([callbacks, 'access', _964 => _964.onDialogClosed, 'optionalCall', _965 => _965()]);
40032
40819
  break;
40033
40820
  default:
40034
40821
  break;
@@ -40088,7 +40875,7 @@ function useSlashCommands(prefix, commandsUrl) {
40088
40875
  const next = await fetchSlashCommands(prefix, ctrl.signal, commandsUrl);
40089
40876
  if (!cancelled) setCommands(next);
40090
40877
  } catch (err) {
40091
- if (!cancelled && _optionalChain([err, 'optionalAccess', _938 => _938.name]) !== "AbortError") {
40878
+ if (!cancelled && _optionalChain([err, 'optionalAccess', _966 => _966.name]) !== "AbortError") {
40092
40879
  console.warn("[use-slash-commands] fetch failed:", err);
40093
40880
  }
40094
40881
  } finally {
@@ -40121,7 +40908,7 @@ function createLocalStorageAdapter(options) {
40121
40908
  const tag = _nullishCoalesce(options.logTag, () => ( "[local-storage]"));
40122
40909
  const backend = _nullishCoalesce(options.backend, () => ( "local"));
40123
40910
  const resolveKey = () => {
40124
- const ns = _optionalChain([options, 'access', _939 => _939.namespace, 'optionalCall', _940 => _940()]);
40911
+ const ns = _optionalChain([options, 'access', _967 => _967.namespace, 'optionalCall', _968 => _968()]);
40125
40912
  return ns ? `${ns}.${options.key}` : options.key;
40126
40913
  };
40127
40914
  return {
@@ -40202,7 +40989,7 @@ function getChatProxyAuth() {
40202
40989
  }
40203
40990
  function getPersistedProxyEmail() {
40204
40991
  const persisted = adapter.load();
40205
- return _nullishCoalesce(_optionalChain([persisted, 'optionalAccess', _941 => _941.email, 'access', _942 => _942.trim, 'call', _943 => _943(), 'access', _944 => _944.toLowerCase, 'call', _945 => _945()]), () => ( null));
40992
+ return _nullishCoalesce(_optionalChain([persisted, 'optionalAccess', _969 => _969.email, 'access', _970 => _970.trim, 'call', _971 => _971(), 'access', _972 => _972.toLowerCase, 'call', _973 => _973()]), () => ( null));
40206
40993
  }
40207
40994
  function setChatProxyAuth(value) {
40208
40995
  adapter.save({
@@ -40219,15 +41006,15 @@ function clearChatProxyAuth() {
40219
41006
  function applyProxyAuth(url, baseHeaders = { "Content-Type": "application/json" }) {
40220
41007
  const auth = getChatProxyAuth();
40221
41008
  const headers = { ...baseHeaders };
40222
- if (_optionalChain([auth, 'optionalAccess', _946 => _946.secret])) {
41009
+ if (_optionalChain([auth, 'optionalAccess', _974 => _974.secret])) {
40223
41010
  headers.Authorization = `Bearer ${auth.secret}`;
40224
41011
  }
40225
- if (_optionalChain([auth, 'optionalAccess', _947 => _947.email])) {
41012
+ if (_optionalChain([auth, 'optionalAccess', _975 => _975.email])) {
40226
41013
  headers["X-Chat-Act-As"] = auth.email;
40227
41014
  }
40228
- if (_optionalChain([auth, 'optionalAccess', _948 => _948.firstName])) headers["X-Chat-First-Name"] = auth.firstName;
40229
- if (_optionalChain([auth, 'optionalAccess', _949 => _949.lastName])) headers["X-Chat-Last-Name"] = auth.lastName;
40230
- if (_optionalChain([auth, 'optionalAccess', _950 => _950.avatarUrl])) headers["X-Chat-Avatar-Url"] = auth.avatarUrl;
41015
+ if (_optionalChain([auth, 'optionalAccess', _976 => _976.firstName])) headers["X-Chat-First-Name"] = auth.firstName;
41016
+ if (_optionalChain([auth, 'optionalAccess', _977 => _977.lastName])) headers["X-Chat-Last-Name"] = auth.lastName;
41017
+ if (_optionalChain([auth, 'optionalAccess', _978 => _978.avatarUrl])) headers["X-Chat-Avatar-Url"] = auth.avatarUrl;
40231
41018
  return { url, headers };
40232
41019
  }
40233
41020
 
@@ -40265,7 +41052,7 @@ var CHAT_ATTACHMENT_MAX_SIZE_BYTES = 25 * 1024 * 1024;
40265
41052
  var STORAGE_CACHE_CONTROL_IMMUTABLE = "public, max-age=31536000, immutable";
40266
41053
  function uploadWithProgress(url, file, token, onProgress, signal) {
40267
41054
  return new Promise((resolve, reject) => {
40268
- if (_optionalChain([signal, 'optionalAccess', _951 => _951.aborted])) {
41055
+ if (_optionalChain([signal, 'optionalAccess', _979 => _979.aborted])) {
40269
41056
  reject(new Error("Upload cancelled"));
40270
41057
  return;
40271
41058
  }
@@ -40279,7 +41066,7 @@ function uploadWithProgress(url, file, token, onProgress, signal) {
40279
41066
  xhr.removeEventListener("error", handleError);
40280
41067
  xhr.removeEventListener("abort", handleAbort);
40281
41068
  xhr.removeEventListener("timeout", handleTimeout);
40282
- _optionalChain([signal, 'optionalAccess', _952 => _952.removeEventListener, 'call', _953 => _953("abort", handleSignalAbort)]);
41069
+ _optionalChain([signal, 'optionalAccess', _980 => _980.removeEventListener, 'call', _981 => _981("abort", handleSignalAbort)]);
40283
41070
  if (xhr.readyState !== XMLHttpRequest.DONE) xhr.abort();
40284
41071
  };
40285
41072
  const handleProgress = (event) => {
@@ -40315,7 +41102,7 @@ function uploadWithProgress(url, file, token, onProgress, signal) {
40315
41102
  const handleSignalAbort = () => {
40316
41103
  xhr.abort();
40317
41104
  };
40318
- _optionalChain([signal, 'optionalAccess', _954 => _954.addEventListener, 'call', _955 => _955("abort", handleSignalAbort, { once: true })]);
41105
+ _optionalChain([signal, 'optionalAccess', _982 => _982.addEventListener, 'call', _983 => _983("abort", handleSignalAbort, { once: true })]);
40319
41106
  xhr.upload.addEventListener("progress", handleProgress);
40320
41107
  xhr.addEventListener("load", handleLoad);
40321
41108
  xhr.addEventListener("error", handleError);
@@ -40359,12 +41146,12 @@ function useChatAttachments() {
40359
41146
  try {
40360
41147
  sniffed = await _filetype.fileTypeFromBlob.call(void 0, att.file);
40361
41148
  } catch (err) {
40362
- if (_optionalChain([ctrl, 'optionalAccess', _956 => _956.signal, 'access', _957 => _957.aborted])) return;
41149
+ if (_optionalChain([ctrl, 'optionalAccess', _984 => _984.signal, 'access', _985 => _985.aborted])) return;
40363
41150
  throw new Error(
40364
41151
  `Could not read file content: ${err instanceof Error ? err.message : String(err)}`
40365
41152
  );
40366
41153
  }
40367
- if (_optionalChain([ctrl, 'optionalAccess', _958 => _958.signal, 'access', _959 => _959.aborted])) return;
41154
+ if (_optionalChain([ctrl, 'optionalAccess', _986 => _986.signal, 'access', _987 => _987.aborted])) return;
40368
41155
  if (!sniffed) {
40369
41156
  throw new Error("Unrecognized file format");
40370
41157
  }
@@ -40378,7 +41165,7 @@ function useChatAttachments() {
40378
41165
  const urlResp = await chatAuthedFetch(uploadUrlEndpoint, {
40379
41166
  method: "POST",
40380
41167
  headers: { "Content-Type": "application/json" },
40381
- signal: _optionalChain([ctrl, 'optionalAccess', _960 => _960.signal]),
41168
+ signal: _optionalChain([ctrl, 'optionalAccess', _988 => _988.signal]),
40382
41169
  body: JSON.stringify({
40383
41170
  fileName: att.file.name,
40384
41171
  // Pass the SNIFFED MIME (not `file.type`, which can be a
@@ -40404,9 +41191,9 @@ function useChatAttachments() {
40404
41191
  (pct) => {
40405
41192
  updateOne(att.id, { progress: pct });
40406
41193
  },
40407
- _optionalChain([ctrl, 'optionalAccess', _961 => _961.signal])
41194
+ _optionalChain([ctrl, 'optionalAccess', _989 => _989.signal])
40408
41195
  );
40409
- if (_optionalChain([ctrl, 'optionalAccess', _962 => _962.signal, 'access', _963 => _963.aborted])) return;
41196
+ if (_optionalChain([ctrl, 'optionalAccess', _990 => _990.signal, 'access', _991 => _991.aborted])) return;
40410
41197
  updateOne(att.id, {
40411
41198
  status: "ready",
40412
41199
  progress: 100,
@@ -40414,7 +41201,7 @@ function useChatAttachments() {
40414
41201
  viewToken: mintData.viewToken
40415
41202
  });
40416
41203
  } catch (err) {
40417
- if (_optionalChain([ctrl, 'optionalAccess', _964 => _964.signal, 'access', _965 => _965.aborted])) return;
41204
+ if (_optionalChain([ctrl, 'optionalAccess', _992 => _992.signal, 'access', _993 => _993.aborted])) return;
40418
41205
  const message2 = err instanceof Error ? err.message : String(err);
40419
41206
  updateOne(att.id, { status: "error", progress: 0, errorMessage: message2 });
40420
41207
  } finally {
@@ -40565,7 +41352,7 @@ var ANON_DEFAULTS = {
40565
41352
  function useChatIdentity() {
40566
41353
  const runtime = _chunk6RZYJICVcjs.useRequiredChatRuntime.call(void 0, );
40567
41354
  const url = runtime.endpoints.chatIdentityUrl;
40568
- const proxyEmail = _nullishCoalesce(_optionalChain([getChatProxyAuth, 'call', _966 => _966(), 'optionalAccess', _967 => _967.email]), () => ( null));
41355
+ const proxyEmail = _nullishCoalesce(_optionalChain([getChatProxyAuth, 'call', _994 => _994(), 'optionalAccess', _995 => _995.email]), () => ( null));
40569
41356
  const [data, setData] = _react.useState.call(void 0, ANON_DEFAULTS);
40570
41357
  const [isLoading, setIsLoading] = _react.useState.call(void 0, true);
40571
41358
  _react.useEffect.call(void 0, () => {
@@ -40642,7 +41429,7 @@ function useSSE({ useMock = true, debugMode = false, streamFn } = {}) {
40642
41429
  yield chunk;
40643
41430
  }
40644
41431
  } catch (err) {
40645
- if (_optionalChain([err, 'optionalAccess', _968 => _968.name]) === "AbortError" || ctrl.signal.aborted) {
41432
+ if (_optionalChain([err, 'optionalAccess', _996 => _996.name]) === "AbortError" || ctrl.signal.aborted) {
40646
41433
  return;
40647
41434
  }
40648
41435
  const errorMessage = err instanceof Error ? err.message : "An error occurred";
@@ -40693,7 +41480,7 @@ function useChat({
40693
41480
  const onMessagesChangeRef = _react.useRef.call(void 0, onMessagesChange);
40694
41481
  onMessagesChangeRef.current = onMessagesChange;
40695
41482
  _react.useEffect.call(void 0, () => {
40696
- _optionalChain([onMessagesChangeRef, 'access', _969 => _969.current, 'optionalCall', _970 => _970(messages)]);
41483
+ _optionalChain([onMessagesChangeRef, 'access', _997 => _997.current, 'optionalCall', _998 => _998(messages)]);
40697
41484
  }, [messages]);
40698
41485
  const {
40699
41486
  streamMessage,
@@ -40730,7 +41517,7 @@ function useChat({
40730
41517
  name: "You",
40731
41518
  content: text,
40732
41519
  timestamp: /* @__PURE__ */ new Date(),
40733
- ..._optionalChain([options, 'optionalAccess', _971 => _971.hidden]) ? { hidden: true } : {}
41520
+ ..._optionalChain([options, 'optionalAccess', _999 => _999.hidden]) ? { hidden: true } : {}
40734
41521
  };
40735
41522
  addMessage(userMessage);
40736
41523
  setIsTyping(true);
@@ -40792,7 +41579,7 @@ function useChat({
40792
41579
  currentTextSegment = "";
40793
41580
  }
40794
41581
  const seg = segment;
40795
- const proposalId = _optionalChain([seg, 'access', _972 => _972.data, 'optionalAccess', _973 => _973.requestId]);
41582
+ const proposalId = _optionalChain([seg, 'access', _1000 => _1000.data, 'optionalAccess', _1001 => _1001.requestId]);
40796
41583
  const updateApprovalMessage = (transform) => {
40797
41584
  setMessages((prev) => {
40798
41585
  for (let i = prev.length - 1; i >= 0; i--) {
@@ -40801,7 +41588,7 @@ function useChat({
40801
41588
  if (!Array.isArray(m.content)) continue;
40802
41589
  const segments = m.content;
40803
41590
  const hasMatch = segments.some(
40804
- (s) => s.type === "approval_request" && _optionalChain([s, 'access', _974 => _974.data, 'optionalAccess', _975 => _975.requestId]) === proposalId
41591
+ (s) => s.type === "approval_request" && _optionalChain([s, 'access', _1002 => _1002.data, 'optionalAccess', _1003 => _1003.requestId]) === proposalId
40805
41592
  );
40806
41593
  if (!hasMatch) continue;
40807
41594
  const next = [...prev];
@@ -40843,11 +41630,11 @@ function useChat({
40843
41630
  if (!Array.isArray(m.content)) continue;
40844
41631
  const segments = m.content;
40845
41632
  const hasMatch = segments.some(
40846
- (s) => s.type === "approval_request" && _optionalChain([s, 'access', _976 => _976.data, 'optionalAccess', _977 => _977.requestId]) === decision.proposalId
41633
+ (s) => s.type === "approval_request" && _optionalChain([s, 'access', _1004 => _1004.data, 'optionalAccess', _1005 => _1005.requestId]) === decision.proposalId
40847
41634
  );
40848
41635
  if (!hasMatch) continue;
40849
41636
  const flipped = segments.map(
40850
- (s) => s.type === "approval_request" && _optionalChain([s, 'access', _978 => _978.data, 'optionalAccess', _979 => _979.requestId]) === decision.proposalId ? { ...s, status: decision.action } : s
41637
+ (s) => s.type === "approval_request" && _optionalChain([s, 'access', _1006 => _1006.data, 'optionalAccess', _1007 => _1007.requestId]) === decision.proposalId ? { ...s, status: decision.action } : s
40851
41638
  );
40852
41639
  const next = [...prev];
40853
41640
  next[i] = { ...m, content: flipped };
@@ -40980,7 +41767,7 @@ function useChat({
40980
41767
  };
40981
41768
  }
40982
41769
 
40983
- // src/components/chat/hooks/use-embedded-chat.ts
41770
+ // src/components/chat/hooks/use-sse-chat-adapter.ts
40984
41771
 
40985
41772
  function createEmptyTurnMeta() {
40986
41773
  return {
@@ -41009,8 +41796,8 @@ function createDocStreamFn(source, endpoints, messagesRef, sourcesMapRef, refsMa
41009
41796
  })),
41010
41797
  { role: "user", content: message2 }
41011
41798
  ];
41012
- const targetPath = _optionalChain([extra, 'optionalAccess', _980 => _980.approvalAction]) ? endpoints.approvalToolUrl : endpoints.chatStreamUrl;
41013
- const requestBody = _optionalChain([extra, 'optionalAccess', _981 => _981.approvalAction]) ? {
41799
+ const targetPath = _optionalChain([extra, 'optionalAccess', _1008 => _1008.approvalAction]) ? endpoints.approvalToolUrl : endpoints.chatStreamUrl;
41800
+ const requestBody = _optionalChain([extra, 'optionalAccess', _1009 => _1009.approvalAction]) ? {
41014
41801
  proposal_id: extra.approvalAction.proposalId,
41015
41802
  action: extra.approvalAction.action,
41016
41803
  messages: currentMessages.filter((m) => (m.role === "user" || m.role === "assistant") && !m.hidden).map((m) => ({
@@ -41019,8 +41806,8 @@ function createDocStreamFn(source, endpoints, messagesRef, sourcesMapRef, refsMa
41019
41806
  }))
41020
41807
  } : {
41021
41808
  messages: apiMessages,
41022
- ..._optionalChain([extra, 'optionalAccess', _982 => _982.commandOverride]) ? { commandOverride: extra.commandOverride } : {},
41023
- ..._optionalChain([extra, 'optionalAccess', _983 => _983.pendingAttachments]) && extra.pendingAttachments.length > 0 ? { pendingAttachments: extra.pendingAttachments } : {}
41809
+ ..._optionalChain([extra, 'optionalAccess', _1010 => _1010.commandOverride]) ? { commandOverride: extra.commandOverride } : {},
41810
+ ..._optionalChain([extra, 'optionalAccess', _1011 => _1011.pendingAttachments]) && extra.pendingAttachments.length > 0 ? { pendingAttachments: extra.pendingAttachments } : {}
41024
41811
  };
41025
41812
  const response = await chatAuthedFetch(targetPath, {
41026
41813
  method: "POST",
@@ -41030,7 +41817,7 @@ function createDocStreamFn(source, endpoints, messagesRef, sourcesMapRef, refsMa
41030
41817
  if (!response.ok) {
41031
41818
  throw new Error(`Chat request failed: ${response.status}`);
41032
41819
  }
41033
- const reader = _optionalChain([response, 'access', _984 => _984.body, 'optionalAccess', _985 => _985.getReader, 'call', _986 => _986()]);
41820
+ const reader = _optionalChain([response, 'access', _1012 => _1012.body, 'optionalAccess', _1013 => _1013.getReader, 'call', _1014 => _1014()]);
41034
41821
  if (!reader) throw new Error("No response body");
41035
41822
  const decoder = new TextDecoder();
41036
41823
  let buffer = "";
@@ -41113,7 +41900,7 @@ function createDocStreamFn(source, endpoints, messagesRef, sourcesMapRef, refsMa
41113
41900
  const toolName = typeof meta.tool_name === "string" ? meta.tool_name : void 0;
41114
41901
  const result = _nullishCoalesce(meta.result, () => ( null));
41115
41902
  const card = _nullishCoalesce(meta.card, () => ( null));
41116
- if (_optionalChain([card, 'optionalAccess', _987 => _987.ref, 'optionalAccess', _988 => _988.id]) && _optionalChain([card, 'optionalAccess', _989 => _989.type])) {
41903
+ if (_optionalChain([card, 'optionalAccess', _1015 => _1015.ref, 'optionalAccess', _1016 => _1016.id]) && _optionalChain([card, 'optionalAccess', _1017 => _1017.type])) {
41117
41904
  const existing = _nullishCoalesce(refsMapRef.current.get(sendIdx), () => ( {}));
41118
41905
  const key = buildChatRefKey(card.type, card.ref.id);
41119
41906
  refsMapRef.current.set(sendIdx, { ...existing, [key]: card.ref });
@@ -41126,8 +41913,8 @@ function createDocStreamFn(source, endpoints, messagesRef, sourcesMapRef, refsMa
41126
41913
  willAutoContinue: meta.willAutoContinue === true,
41127
41914
  ...toolName ? { toolName } : {},
41128
41915
  ...result ? { result } : {},
41129
- ..._optionalChain([card, 'optionalAccess', _990 => _990.marker]) ? { marker: card.marker } : {},
41130
- ..._optionalChain([card, 'optionalAccess', _991 => _991.ref]) ? { cardRef: card.ref } : {},
41916
+ ..._optionalChain([card, 'optionalAccess', _1018 => _1018.marker]) ? { marker: card.marker } : {},
41917
+ ..._optionalChain([card, 'optionalAccess', _1019 => _1019.ref]) ? { cardRef: card.ref } : {},
41131
41918
  ...typeof meta.receiptText === "string" ? { receiptText: meta.receiptText } : {},
41132
41919
  proposalId: typeof meta.proposalId === "string" ? meta.proposalId : void 0
41133
41920
  };
@@ -41245,7 +42032,7 @@ var CHAT_STORAGE_VERSION = 1;
41245
42032
  var chatStorageKey = (source) => {
41246
42033
  const base = `mingo-chat-${source}-v${CHAT_STORAGE_VERSION}`;
41247
42034
  const auth = getChatProxyAuth();
41248
- if (_optionalChain([auth, 'optionalAccess', _992 => _992.email])) {
42035
+ if (_optionalChain([auth, 'optionalAccess', _1020 => _1020.email])) {
41249
42036
  return `${base}-u-${encodeURIComponent(auth.email.toLowerCase())}`;
41250
42037
  }
41251
42038
  return base;
@@ -41296,15 +42083,15 @@ function savePersistedChat(source, state) {
41296
42083
  } catch (e47) {
41297
42084
  }
41298
42085
  }
41299
- function useEmbeddedChat(options) {
42086
+ function useSseChatAdapter(options) {
41300
42087
  const runtime = _chunk6RZYJICVcjs.useRequiredChatRuntime.call(void 0, );
41301
42088
  const source = runtime.source;
41302
42089
  if (!source) {
41303
42090
  throw new Error(
41304
- "[useEmbeddedChat] runtime.source is required \u2014 got empty string. Wire `source` on your <ChatRuntimeContext.Provider value={...}>. Hub default: <HubRuntimeProvider source={currentPlatform()}>; embedded apps: pass your own platform/tenant identifier."
42091
+ "[useSseChatAdapter] runtime.source is required \u2014 got empty string. Wire `source` on your <ChatRuntimeContext.Provider value={...}>. Hub default: <HubRuntimeProvider source={currentPlatform()}>; embedded apps: pass your own platform/tenant identifier."
41305
42092
  );
41306
42093
  }
41307
- const tableIdForDocumentType = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _993 => _993.tableIdForDocumentType]), () => ( defaultTableIdForDocumentType));
42094
+ const tableIdForDocumentType = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _1021 => _1021.tableIdForDocumentType]), () => ( defaultTableIdForDocumentType));
41308
42095
  const persistedRef = _react.useRef.call(void 0, null);
41309
42096
  if (persistedRef.current === null) {
41310
42097
  pruneStaleChatStorage(source);
@@ -41372,9 +42159,9 @@ function useEmbeddedChat(options) {
41372
42159
  }
41373
42160
  setCmdIdByTableId(map);
41374
42161
  }).catch((err) => {
41375
- if (!cancelled && _optionalChain([err, 'optionalAccess', _994 => _994.name]) !== "AbortError") {
42162
+ if (!cancelled && _optionalChain([err, 'optionalAccess', _1022 => _1022.name]) !== "AbortError") {
41376
42163
  console.warn(
41377
- "[useEmbeddedChat] failed to fetch slash commands for displayRef:",
42164
+ "[useSseChatAdapter] failed to fetch slash commands for displayRef:",
41378
42165
  err
41379
42166
  );
41380
42167
  }
@@ -41425,7 +42212,7 @@ function useEmbeddedChat(options) {
41425
42212
  const lookupIdx = sendIdx >= 0 ? sendIdx : 0;
41426
42213
  sources = sourcesMapRef.current.get(lookupIdx);
41427
42214
  chatRefs = _nullishCoalesce(m.chatRefs, () => ( refsMapRef.current.get(lookupIdx)));
41428
- scrollAnchor = _nullishCoalesce(_optionalChain([metaMapRef, 'access', _995 => _995.current, 'access', _996 => _996.get, 'call', _997 => _997(lookupIdx), 'optionalAccess', _998 => _998.scrollAnchor]), () => ( void 0));
42215
+ scrollAnchor = _nullishCoalesce(_optionalChain([metaMapRef, 'access', _1023 => _1023.current, 'access', _1024 => _1024.get, 'call', _1025 => _1025(lookupIdx), 'optionalAccess', _1026 => _1026.scrollAnchor]), () => ( void 0));
41429
42216
  }
41430
42217
  return {
41431
42218
  id: m.id,
@@ -41439,10 +42226,21 @@ function useEmbeddedChat(options) {
41439
42226
  };
41440
42227
  });
41441
42228
  const sendMessage = _react.useCallback.call(void 0,
41442
- (text, options2, messageOptions) => {
42229
+ async (text, options2) => {
42230
+ const {
42231
+ hidden,
42232
+ attachments,
42233
+ commandOverride,
42234
+ approvalAction
42235
+ } = _nullishCoalesce(options2, () => ( {}));
42236
+ const sseExtras = {
42237
+ ...commandOverride ? { commandOverride } : {},
42238
+ ...approvalAction ? { approvalAction } : {},
42239
+ ...attachments && attachments.length > 0 ? { pendingAttachments: attachments } : {}
42240
+ };
41443
42241
  sendCountRef.current++;
41444
42242
  setStreamingPhase("thinking");
41445
- chatSendMessage(text, options2, messageOptions);
42243
+ await chatSendMessage(text, sseExtras, hidden ? { hidden } : void 0);
41446
42244
  },
41447
42245
  [chatSendMessage]
41448
42246
  );
@@ -41451,18 +42249,18 @@ function useEmbeddedChat(options) {
41451
42249
  const tableId = tableIdForDocumentType(reference.type);
41452
42250
  if (!tableId) {
41453
42251
  console.warn(
41454
- `[useEmbeddedChat] displayRef: no tableId for documentType="${reference.type}"; ignoring click`
42252
+ `[useSseChatAdapter] displayRef: no tableId for documentType="${reference.type}"; ignoring click`
41455
42253
  );
41456
42254
  return;
41457
42255
  }
41458
42256
  const cmdId = cmdIdByTableId.get(tableId);
41459
42257
  if (!cmdId) {
41460
42258
  console.warn(
41461
- `[useEmbeddedChat] displayRef: no slash command for tableId="${tableId}" source="${source}"; ignoring click`
42259
+ `[useSseChatAdapter] displayRef: no slash command for tableId="${tableId}" source="${source}"; ignoring click`
41462
42260
  );
41463
42261
  return;
41464
42262
  }
41465
- const refSlug = typeof _optionalChain([reference, 'access', _999 => _999.metadata, 'optionalAccess', _1000 => _1000.slug]) === "string" && reference.metadata.slug.length > 0 ? reference.metadata.slug : "";
42263
+ const refSlug = typeof _optionalChain([reference, 'access', _1027 => _1027.metadata, 'optionalAccess', _1028 => _1028.slug]) === "string" && reference.metadata.slug.length > 0 ? reference.metadata.slug : "";
41466
42264
  const queryValue = refSlug || sanitizeTitleForChat(reference.title) || reference.id;
41467
42265
  const escaped = queryValue.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
41468
42266
  const text = `/${cmdId} display "${escaped}"`;
@@ -41475,14 +42273,14 @@ function useEmbeddedChat(options) {
41475
42273
  const tableId = tableIdForDocumentType(reference.type);
41476
42274
  if (!tableId) {
41477
42275
  console.warn(
41478
- `[useEmbeddedChat] discussRef: no tableId for documentType="${reference.type}"; ignoring click`
42276
+ `[useSseChatAdapter] discussRef: no tableId for documentType="${reference.type}"; ignoring click`
41479
42277
  );
41480
42278
  return;
41481
42279
  }
41482
42280
  const refId = (_nullishCoalesce(reference.id, () => ( ""))).trim();
41483
42281
  if (!refId) {
41484
42282
  console.warn(
41485
- `[useEmbeddedChat] discussRef: empty reference.id for type="${reference.type}"; ignoring click`
42283
+ `[useSseChatAdapter] discussRef: empty reference.id for type="${reference.type}"; ignoring click`
41486
42284
  );
41487
42285
  return;
41488
42286
  }
@@ -41534,21 +42332,249 @@ function useEmbeddedChat(options) {
41534
42332
  clearMessages,
41535
42333
  streamingPhase,
41536
42334
  /** Provider key for the lib's `<ModelDisplay>` icon. */
41537
- currentProvider: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1001 => _1001.provider]), () => ( null)),
41538
- currentModelLabel: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1002 => _1002.modelLabel]), () => ( null)),
41539
- currentContextWindowMaxTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1003 => _1003.contextWindowMaxTokens]), () => ( null)),
42335
+ currentProvider: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1029 => _1029.provider]), () => ( null)),
42336
+ currentModelLabel: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1030 => _1030.modelLabel]), () => ( null)),
42337
+ currentContextWindowMaxTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1031 => _1031.contextWindowMaxTokens]), () => ( null)),
41540
42338
  /** Input tokens (known after server's message_start frame; null until). */
41541
- currentInputTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1004 => _1004.inputTokens]), () => ( null)),
42339
+ currentInputTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1032 => _1032.inputTokens]), () => ( null)),
41542
42340
  /** Output tokens (known only after server's trailing usage frame). */
41543
- currentOutputTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1005 => _1005.outputTokens]), () => ( null)),
42341
+ currentOutputTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1033 => _1033.outputTokens]), () => ( null)),
41544
42342
  /** Cache hit % (read / total-input × 100). null during streaming. */
41545
- currentCacheHitRatePct: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1006 => _1006.cacheHitRatePct]), () => ( null)),
42343
+ currentCacheHitRatePct: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1034 => _1034.cacheHitRatePct]), () => ( null)),
41546
42344
  /** Cross-call usage breakdown (Haiku rewriter/classifier/summarizer
41547
42345
  * token counts). null until the trailing usage frame lands. */
41548
- currentUsageBreakdown: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1007 => _1007.breakdown]), () => ( null))
42346
+ currentUsageBreakdown: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1035 => _1035.breakdown]), () => ( null))
41549
42347
  };
41550
42348
  }
41551
42349
 
42350
+ // src/components/chat/hooks/use-nats-chat-adapter.ts
42351
+
42352
+
42353
+
42354
+
42355
+
42356
+
42357
+
42358
+ function nextId(role) {
42359
+ return `${role}-${Date.now()}-${Math.random().toString(36).slice(2, 7)}`;
42360
+ }
42361
+ function updateTrailingAssistant(prev, segments) {
42362
+ const last = prev[prev.length - 1];
42363
+ if (!last || last.role !== "assistant") {
42364
+ return [
42365
+ ...prev,
42366
+ {
42367
+ id: nextId("assistant"),
42368
+ role: "assistant",
42369
+ content: "",
42370
+ segments
42371
+ }
42372
+ ];
42373
+ }
42374
+ return [
42375
+ ...prev.slice(0, -1),
42376
+ { ...last, segments }
42377
+ ];
42378
+ }
42379
+ function useNatsChatAdapter(config, options = {}) {
42380
+ const { active = true } = options;
42381
+ const {
42382
+ dialogId,
42383
+ getNatsWsUrl,
42384
+ clientConfig,
42385
+ publishUserMessage,
42386
+ fetchChunks,
42387
+ enableThinking,
42388
+ batchApprovalsEnabled
42389
+ } = config;
42390
+ const [messages, setMessages] = _react.useState.call(void 0, []);
42391
+ const [streamingPhase, setStreamingPhase] = _react.useState.call(void 0, "idle");
42392
+ const callbacksRef = _react.useRef.call(void 0, {
42393
+ onSegmentsUpdate: (segments) => {
42394
+ setMessages((prev) => updateTrailingAssistant(prev, segments));
42395
+ },
42396
+ onStreamStart: () => setStreamingPhase("streaming"),
42397
+ onStreamEnd: () => setStreamingPhase("idle")
42398
+ });
42399
+ const { processChunk, reset: resetAccumulator } = useRealtimeChunkProcessor({
42400
+ callbacks: {
42401
+ onSegmentsUpdate: (segments) => callbacksRef.current.onSegmentsUpdate(segments),
42402
+ onStreamStart: () => callbacksRef.current.onStreamStart(),
42403
+ onStreamEnd: () => callbacksRef.current.onStreamEnd()
42404
+ },
42405
+ enableThinking,
42406
+ batchApprovalsEnabled
42407
+ });
42408
+ const {
42409
+ processChunk: catchupProcessChunk,
42410
+ catchUpChunks,
42411
+ startInitialBuffering,
42412
+ resetChunkTracking
42413
+ } = useChunkCatchup({
42414
+ dialogId: active ? dialogId : null,
42415
+ onChunkReceived: (chunk) => processChunk(chunk),
42416
+ fetchChunks
42417
+ });
42418
+ _react.useEffect.call(void 0, () => {
42419
+ if (!active || !dialogId) return;
42420
+ resetChunkTracking();
42421
+ startInitialBuffering();
42422
+ catchUpChunks().catch((err) => {
42423
+ console.error("[useNatsChatAdapter] initial catchup failed:", err);
42424
+ });
42425
+ }, [active, dialogId, resetChunkTracking, startInitialBuffering, catchUpChunks]);
42426
+ useNatsDialogSubscription({
42427
+ enabled: active && dialogId != null,
42428
+ dialogId,
42429
+ getNatsWsUrl,
42430
+ clientConfig,
42431
+ onEvent: (payload, messageType) => {
42432
+ catchupProcessChunk(payload, messageType);
42433
+ }
42434
+ });
42435
+ const sendMessage = _react.useCallback.call(void 0,
42436
+ async (text, sendOptions) => {
42437
+ const hidden = _nullishCoalesce(_optionalChain([sendOptions, 'optionalAccess', _1036 => _1036.hidden]), () => ( false));
42438
+ setMessages((prev) => [
42439
+ ...prev,
42440
+ {
42441
+ id: nextId("user"),
42442
+ role: "user",
42443
+ content: text,
42444
+ ...hidden ? { hidden: true } : {}
42445
+ },
42446
+ {
42447
+ id: nextId("assistant"),
42448
+ role: "assistant",
42449
+ content: "",
42450
+ segments: []
42451
+ }
42452
+ ]);
42453
+ setStreamingPhase("thinking");
42454
+ await publishUserMessage(text, { hidden, dialogId });
42455
+ },
42456
+ [publishUserMessage, dialogId]
42457
+ );
42458
+ const stopMessage = _react.useCallback.call(void 0, () => {
42459
+ setStreamingPhase("idle");
42460
+ }, []);
42461
+ const clearMessages = _react.useCallback.call(void 0, () => {
42462
+ setMessages([]);
42463
+ resetAccumulator();
42464
+ setStreamingPhase("idle");
42465
+ }, [resetAccumulator]);
42466
+ const discussRef = _react.useCallback.call(void 0, (_ref) => {
42467
+ }, []);
42468
+ const displayRef = _react.useCallback.call(void 0, (_ref) => {
42469
+ }, []);
42470
+ const isLoading = streamingPhase !== "idle";
42471
+ return _react.useMemo.call(void 0,
42472
+ () => ({
42473
+ messages,
42474
+ isLoading,
42475
+ streamingPhase,
42476
+ sendMessage,
42477
+ stopMessage,
42478
+ clearMessages,
42479
+ discussRef,
42480
+ displayRef,
42481
+ // SSE-only telemetry — null in NATS mode.
42482
+ currentProvider: null,
42483
+ currentModelLabel: null,
42484
+ currentContextWindowMaxTokens: null,
42485
+ currentInputTokens: null,
42486
+ currentOutputTokens: null,
42487
+ currentCacheHitRatePct: null,
42488
+ currentUsageBreakdown: null
42489
+ }),
42490
+ [
42491
+ messages,
42492
+ isLoading,
42493
+ streamingPhase,
42494
+ sendMessage,
42495
+ stopMessage,
42496
+ clearMessages,
42497
+ discussRef,
42498
+ displayRef
42499
+ ]
42500
+ );
42501
+ }
42502
+
42503
+ // src/components/chat/hooks/use-unified-chat.ts
42504
+
42505
+ var EMPTY_SSE_OPTIONS = {};
42506
+ function createDisabledNatsConfig() {
42507
+ return {
42508
+ dialogId: null,
42509
+ getNatsWsUrl: () => null,
42510
+ publishUserMessage: () => {
42511
+ throw new Error(
42512
+ "[useUnifiedChat] publishUserMessage invoked but mingo mode is not configured. Pass `modes.mingo` to enable Mingo agent transport."
42513
+ );
42514
+ }
42515
+ };
42516
+ }
42517
+ function useUnifiedChat(options) {
42518
+ const { modes, activeMode } = options;
42519
+ const disabledNatsRef = _react.useRef.call(void 0, null);
42520
+ if (disabledNatsRef.current === null) {
42521
+ disabledNatsRef.current = createDisabledNatsConfig();
42522
+ }
42523
+ const sseActive = activeMode === "guide" && modes.guide !== void 0;
42524
+ const natsActive = activeMode === "mingo" && modes.mingo !== void 0;
42525
+ const sseState = useSseChatAdapter(_nullishCoalesce(modes.guide, () => ( EMPTY_SSE_OPTIONS)));
42526
+ const natsState = useNatsChatAdapter(
42527
+ _nullishCoalesce(modes.mingo, () => ( disabledNatsRef.current)),
42528
+ { active: natsActive }
42529
+ );
42530
+ void sseActive;
42531
+ const activeState = activeMode === "guide" ? sseState : natsState;
42532
+ const stopMessage = _react.useCallback.call(void 0, () => activeState.stopMessage(), [activeState]);
42533
+ const clearMessages = _react.useCallback.call(void 0,
42534
+ () => activeState.clearMessages(),
42535
+ [activeState]
42536
+ );
42537
+ const sendMessage = _react.useCallback.call(void 0,
42538
+ (text, opts) => activeState.sendMessage(text, opts),
42539
+ [activeState]
42540
+ );
42541
+ const discussRef = _react.useCallback.call(void 0,
42542
+ (ref) => activeState.discussRef(ref),
42543
+ [activeState]
42544
+ );
42545
+ const displayRef = _react.useCallback.call(void 0,
42546
+ (ref) => activeState.displayRef(ref),
42547
+ [activeState]
42548
+ );
42549
+ return _react.useMemo.call(void 0,
42550
+ () => ({
42551
+ messages: activeState.messages,
42552
+ isLoading: activeState.isLoading,
42553
+ streamingPhase: activeState.streamingPhase,
42554
+ sendMessage,
42555
+ stopMessage,
42556
+ clearMessages,
42557
+ discussRef,
42558
+ displayRef,
42559
+ currentProvider: activeState.currentProvider,
42560
+ currentModelLabel: activeState.currentModelLabel,
42561
+ currentContextWindowMaxTokens: activeState.currentContextWindowMaxTokens,
42562
+ currentInputTokens: activeState.currentInputTokens,
42563
+ currentOutputTokens: activeState.currentOutputTokens,
42564
+ currentCacheHitRatePct: activeState.currentCacheHitRatePct,
42565
+ currentUsageBreakdown: activeState.currentUsageBreakdown
42566
+ }),
42567
+ [
42568
+ activeState,
42569
+ sendMessage,
42570
+ stopMessage,
42571
+ clearMessages,
42572
+ discussRef,
42573
+ displayRef
42574
+ ]
42575
+ );
42576
+ }
42577
+
41552
42578
  // src/components/chat/hooks/use-proxied-image-url.ts
41553
42579
  function useProxiedImageUrl(url) {
41554
42580
  const r = _chunk6RZYJICVcjs.useRequiredChatRuntime.call(void 0, );
@@ -41561,12 +42587,12 @@ function useProxiedImageUrl(url) {
41561
42587
 
41562
42588
  // src/components/chat/utils/process-historical-messages.ts
41563
42589
  function getOwnerDisplayName(owner) {
41564
- if (_optionalChain([owner, 'optionalAccess', _1008 => _1008.type]) === OWNER_TYPE.ADMIN && owner.user) {
42590
+ if (_optionalChain([owner, 'optionalAccess', _1037 => _1037.type]) === OWNER_TYPE.ADMIN && owner.user) {
41565
42591
  const { firstName, lastName } = owner.user;
41566
42592
  const name = [firstName, lastName].filter(Boolean).join(" ");
41567
42593
  if (name) return name;
41568
42594
  }
41569
- return _optionalChain([owner, 'optionalAccess', _1009 => _1009.type]) === OWNER_TYPE.ADMIN ? "Admin" : "You";
42595
+ return _optionalChain([owner, 'optionalAccess', _1038 => _1038.type]) === OWNER_TYPE.ADMIN ? "Admin" : "You";
41570
42596
  }
41571
42597
  function pushStandaloneMessages(processedMessages, msg, messageDataArray) {
41572
42598
  messageDataArray.forEach((data) => {
@@ -41629,10 +42655,10 @@ function processHistoricalMessages(messages, options = {}) {
41629
42655
  pushStandaloneMessages(processedMessages, msg, messageDataArray);
41630
42656
  return;
41631
42657
  }
41632
- const isUserMessage = _optionalChain([msg, 'access', _1010 => _1010.owner, 'optionalAccess', _1011 => _1011.type]) === OWNER_TYPE.CLIENT || _optionalChain([msg, 'access', _1012 => _1012.owner, 'optionalAccess', _1013 => _1013.type]) === OWNER_TYPE.ADMIN;
42658
+ const isUserMessage = _optionalChain([msg, 'access', _1039 => _1039.owner, 'optionalAccess', _1040 => _1040.type]) === OWNER_TYPE.CLIENT || _optionalChain([msg, 'access', _1041 => _1041.owner, 'optionalAccess', _1042 => _1042.type]) === OWNER_TYPE.ADMIN;
41633
42659
  if (isUserMessage) {
41634
42660
  flushAssistantMessage();
41635
- const userAuthorType = _optionalChain([msg, 'access', _1014 => _1014.owner, 'optionalAccess', _1015 => _1015.type]) === OWNER_TYPE.ADMIN ? "admin" : "user";
42661
+ const userAuthorType = _optionalChain([msg, 'access', _1043 => _1043.owner, 'optionalAccess', _1044 => _1044.type]) === OWNER_TYPE.ADMIN ? "admin" : "user";
41636
42662
  messageDataArray.forEach((data) => {
41637
42663
  if (data.type === MESSAGE_TYPE.TEXT && "text" in data && data.text) {
41638
42664
  processedMessages.push({
@@ -41656,7 +42682,7 @@ function processHistoricalMessages(messages, options = {}) {
41656
42682
  });
41657
42683
  const nextMsg = messages[index + 1];
41658
42684
  const isLastMessage = index === messages.length - 1;
41659
- const nextIsFromUser = nextMsg && (_optionalChain([nextMsg, 'access', _1016 => _1016.owner, 'optionalAccess', _1017 => _1017.type]) === OWNER_TYPE.CLIENT || _optionalChain([nextMsg, 'access', _1018 => _1018.owner, 'optionalAccess', _1019 => _1019.type]) === OWNER_TYPE.ADMIN);
42685
+ const nextIsFromUser = nextMsg && (_optionalChain([nextMsg, 'access', _1045 => _1045.owner, 'optionalAccess', _1046 => _1046.type]) === OWNER_TYPE.CLIENT || _optionalChain([nextMsg, 'access', _1047 => _1047.owner, 'optionalAccess', _1048 => _1048.type]) === OWNER_TYPE.ADMIN);
41660
42686
  if (isLastMessage || nextIsFromUser) {
41661
42687
  flushAssistantMessage();
41662
42688
  }
@@ -41766,7 +42792,7 @@ function processMessageData(data, accumulator, approvalStatuses, options = {}, e
41766
42792
  }
41767
42793
  }
41768
42794
  } else {
41769
- _optionalChain([escalatedApprovals, 'optionalAccess', _1020 => _1020.set, 'call', _1021 => _1021(data.approvalRequestId, {
42795
+ _optionalChain([escalatedApprovals, 'optionalAccess', _1049 => _1049.set, 'call', _1050 => _1050(data.approvalRequestId, {
41770
42796
  command: data.command || "",
41771
42797
  explanation: data.explanation,
41772
42798
  approvalType,
@@ -41779,8 +42805,8 @@ function processMessageData(data, accumulator, approvalStatuses, options = {}, e
41779
42805
  if ("approvalRequestId" in data && data.approvalRequestId) {
41780
42806
  const existingStatus = approvalStatuses[data.approvalRequestId];
41781
42807
  const status = existingStatus || (data.approved ? "approved" : "rejected");
41782
- const escalatedData = _optionalChain([escalatedApprovals, 'optionalAccess', _1022 => _1022.get, 'call', _1023 => _1023(data.approvalRequestId)]);
41783
- if (_optionalChain([escalatedData, 'optionalAccess', _1024 => _1024.toolCalls]) && escalatedData.toolCalls.length > 0) {
42808
+ const escalatedData = _optionalChain([escalatedApprovals, 'optionalAccess', _1051 => _1051.get, 'call', _1052 => _1052(data.approvalRequestId)]);
42809
+ if (_optionalChain([escalatedData, 'optionalAccess', _1053 => _1053.toolCalls]) && escalatedData.toolCalls.length > 0) {
41784
42810
  if (batchApprovalsEnabled) {
41785
42811
  accumulator.addApprovalBatch(
41786
42812
  data.approvalRequestId,
@@ -41800,7 +42826,7 @@ function processMessageData(data, accumulator, approvalStatuses, options = {}, e
41800
42826
  );
41801
42827
  }
41802
42828
  }
41803
- _optionalChain([escalatedApprovals, 'optionalAccess', _1025 => _1025.delete, 'call', _1026 => _1026(data.approvalRequestId)]);
42829
+ _optionalChain([escalatedApprovals, 'optionalAccess', _1054 => _1054.delete, 'call', _1055 => _1055(data.approvalRequestId)]);
41804
42830
  break;
41805
42831
  }
41806
42832
  if (escalatedData) {
@@ -41809,7 +42835,7 @@ function processMessageData(data, accumulator, approvalStatuses, options = {}, e
41809
42835
  explanation: escalatedData.explanation,
41810
42836
  approvalType: escalatedData.approvalType
41811
42837
  });
41812
- _optionalChain([escalatedApprovals, 'optionalAccess', _1027 => _1027.delete, 'call', _1028 => _1028(data.approvalRequestId)]);
42838
+ _optionalChain([escalatedApprovals, 'optionalAccess', _1056 => _1056.delete, 'call', _1057 => _1057(data.approvalRequestId)]);
41813
42839
  }
41814
42840
  const before = accumulator.getSegments();
41815
42841
  const after = accumulator.updateApprovalStatus(data.approvalRequestId, status);
@@ -41825,9 +42851,9 @@ function processMessageData(data, accumulator, approvalStatuses, options = {}, e
41825
42851
  case MESSAGE_TYPE.ERROR:
41826
42852
  if ("error" in data) {
41827
42853
  let message2;
41828
- if ("details" in data && _optionalChain([data, 'optionalAccess', _1029 => _1029.details])) {
42854
+ if ("details" in data && _optionalChain([data, 'optionalAccess', _1058 => _1058.details])) {
41829
42855
  try {
41830
- message2 = _optionalChain([JSON, 'access', _1030 => _1030.parse, 'call', _1031 => _1031(data.details), 'optionalAccess', _1032 => _1032.error, 'optionalAccess', _1033 => _1033.message]);
42856
+ message2 = _optionalChain([JSON, 'access', _1059 => _1059.parse, 'call', _1060 => _1060(data.details), 'optionalAccess', _1061 => _1061.error, 'optionalAccess', _1062 => _1062.message]);
41831
42857
  } catch (e49) {
41832
42858
  message2 = data.details;
41833
42859
  }
@@ -41910,10 +42936,10 @@ function processHistoricalMessagesWithErrors(messages, options = {}) {
41910
42936
  pushStandaloneMessages(processedMessages, msg, messageDataArray);
41911
42937
  return;
41912
42938
  }
41913
- const isUserMessage = _optionalChain([msg, 'access', _1034 => _1034.owner, 'optionalAccess', _1035 => _1035.type]) === OWNER_TYPE.CLIENT || _optionalChain([msg, 'access', _1036 => _1036.owner, 'optionalAccess', _1037 => _1037.type]) === OWNER_TYPE.ADMIN;
42939
+ const isUserMessage = _optionalChain([msg, 'access', _1063 => _1063.owner, 'optionalAccess', _1064 => _1064.type]) === OWNER_TYPE.CLIENT || _optionalChain([msg, 'access', _1065 => _1065.owner, 'optionalAccess', _1066 => _1066.type]) === OWNER_TYPE.ADMIN;
41914
42940
  if (isUserMessage) {
41915
42941
  flushAssistantMessage();
41916
- const userAuthorType = _optionalChain([msg, 'access', _1038 => _1038.owner, 'optionalAccess', _1039 => _1039.type]) === OWNER_TYPE.ADMIN ? "admin" : "user";
42942
+ const userAuthorType = _optionalChain([msg, 'access', _1067 => _1067.owner, 'optionalAccess', _1068 => _1068.type]) === OWNER_TYPE.ADMIN ? "admin" : "user";
41917
42943
  messageDataArray.forEach((data) => {
41918
42944
  if (data.type === MESSAGE_TYPE.TEXT && "text" in data && data.text) {
41919
42945
  processedMessages.push({
@@ -41937,7 +42963,7 @@ function processHistoricalMessagesWithErrors(messages, options = {}) {
41937
42963
  });
41938
42964
  const nextMsg = messages[index + 1];
41939
42965
  const isLastMessage = index === messages.length - 1;
41940
- const nextIsFromUser = nextMsg && (_optionalChain([nextMsg, 'access', _1040 => _1040.owner, 'optionalAccess', _1041 => _1041.type]) === OWNER_TYPE.CLIENT || _optionalChain([nextMsg, 'access', _1042 => _1042.owner, 'optionalAccess', _1043 => _1043.type]) === OWNER_TYPE.ADMIN);
42966
+ const nextIsFromUser = nextMsg && (_optionalChain([nextMsg, 'access', _1069 => _1069.owner, 'optionalAccess', _1070 => _1070.type]) === OWNER_TYPE.CLIENT || _optionalChain([nextMsg, 'access', _1071 => _1071.owner, 'optionalAccess', _1072 => _1072.type]) === OWNER_TYPE.ADMIN);
41941
42967
  if (isLastMessage || nextIsFromUser) {
41942
42968
  flushAssistantMessage();
41943
42969
  }
@@ -41997,7 +43023,7 @@ function extractIncompleteMessageState(lastMessage) {
41997
43023
  break;
41998
43024
  case "approval_batch": {
41999
43025
  const allDone = !!segment.data.executions && segment.data.toolCalls.every(
42000
- (c) => _optionalChain([segment, 'access', _1044 => _1044.data, 'access', _1045 => _1045.executions, 'optionalAccess', _1046 => _1046[c.toolExecutionRequestId], 'optionalAccess', _1047 => _1047.status]) === "done"
43026
+ (c) => _optionalChain([segment, 'access', _1073 => _1073.data, 'access', _1074 => _1074.executions, 'optionalAccess', _1075 => _1075[c.toolExecutionRequestId], 'optionalAccess', _1076 => _1076.status]) === "done"
42001
43027
  );
42002
43028
  if (segment.status !== "rejected" && !allDone) {
42003
43029
  hasIncompleteState = true;
@@ -42041,7 +43067,7 @@ function chatChipClass({ tone, density = "chip", extra }) {
42041
43067
 
42042
43068
  // node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs
42043
43069
 
42044
- var useLayoutEffect22 = _optionalChain([globalThis, 'optionalAccess', _1048 => _1048.document]) ? React114.useLayoutEffect : () => {
43070
+ var useLayoutEffect22 = _optionalChain([globalThis, 'optionalAccess', _1077 => _1077.document]) ? React114.useLayoutEffect : () => {
42045
43071
  };
42046
43072
 
42047
43073
  // node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs
@@ -42079,7 +43105,7 @@ function useControllableState({
42079
43105
  if (isControlled) {
42080
43106
  const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue;
42081
43107
  if (value2 !== prop) {
42082
- _optionalChain([onChangeRef, 'access', _1049 => _1049.current, 'optionalCall', _1050 => _1050(value2)]);
43108
+ _optionalChain([onChangeRef, 'access', _1078 => _1078.current, 'optionalCall', _1079 => _1079(value2)]);
42083
43109
  }
42084
43110
  } else {
42085
43111
  setUncontrolledProp(nextValue);
@@ -42101,7 +43127,7 @@ function useUncontrolledState({
42101
43127
  }, [onChange]);
42102
43128
  React115.useEffect(() => {
42103
43129
  if (prevValueRef.current !== value) {
42104
- _optionalChain([onChangeRef, 'access', _1051 => _1051.current, 'optionalCall', _1052 => _1052(value)]);
43130
+ _optionalChain([onChangeRef, 'access', _1080 => _1080.current, 'optionalCall', _1081 => _1081(value)]);
42105
43131
  prevValueRef.current = value;
42106
43132
  }
42107
43133
  }, [value, prevValueRef]);
@@ -42443,7 +43469,11 @@ function EmbeddableChatInner({
42443
43469
  defaultOpen,
42444
43470
  showInternalTrigger = true,
42445
43471
  extras,
42446
- tableIdForDocumentType
43472
+ tableIdForDocumentType,
43473
+ modes,
43474
+ activeMode: controlledActiveMode,
43475
+ onActiveModeChange,
43476
+ defaultActiveMode
42447
43477
  }) {
42448
43478
  const runtime = _chunk6RZYJICVcjs.useRequiredChatRuntime.call(void 0, );
42449
43479
  const source = runtime.source;
@@ -42514,7 +43544,7 @@ function EmbeddableChatInner({
42514
43544
  setCommandsById(map);
42515
43545
  setCommandsLoaded(true);
42516
43546
  }).catch((err) => {
42517
- if (!cancelled && _optionalChain([err, 'optionalAccess', _1053 => _1053.name]) !== "AbortError") {
43547
+ if (!cancelled && _optionalChain([err, 'optionalAccess', _1082 => _1082.name]) !== "AbortError") {
42518
43548
  console.warn("[embeddable-chat] failed to fetch slash commands:", err);
42519
43549
  setCommandsLoaded(true);
42520
43550
  }
@@ -42542,7 +43572,25 @@ function EmbeddableChatInner({
42542
43572
  _react.useEffect.call(void 0, () => {
42543
43573
  if (!isOpen) setAnimationRest(false);
42544
43574
  }, [isOpen]);
42545
- const userName = _optionalChain([identityUser, 'optionalAccess', _1054 => _1054.firstName, 'optionalAccess', _1055 => _1055.trim, 'call', _1056 => _1056()]) || _optionalChain([identityUser, 'optionalAccess', _1057 => _1057.name, 'optionalAccess', _1058 => _1058.split, 'call', _1059 => _1059(" "), 'access', _1060 => _1060[0], 'optionalAccess', _1061 => _1061.trim, 'call', _1062 => _1062()]) || void 0;
43575
+ const userName = _optionalChain([identityUser, 'optionalAccess', _1083 => _1083.firstName, 'optionalAccess', _1084 => _1084.trim, 'call', _1085 => _1085()]) || _optionalChain([identityUser, 'optionalAccess', _1086 => _1086.name, 'optionalAccess', _1087 => _1087.split, 'call', _1088 => _1088(" "), 'access', _1089 => _1089[0], 'optionalAccess', _1090 => _1090.trim, 'call', _1091 => _1091()]) || void 0;
43576
+ const effectiveModes = _react.useMemo.call(void 0, () => {
43577
+ if (modes) return modes;
43578
+ const guideOptions = tableIdForDocumentType ? { tableIdForDocumentType } : {};
43579
+ return { guide: guideOptions };
43580
+ }, [modes, tableIdForDocumentType]);
43581
+ const initialActiveMode = _nullishCoalesce(_nullishCoalesce(controlledActiveMode, () => ( defaultActiveMode)), () => ( (effectiveModes.guide ? "guide" : "mingo")));
43582
+ const [uncontrolledActiveMode, setUncontrolledActiveMode] = _react.useState.call(void 0, initialActiveMode);
43583
+ const activeMode = _nullishCoalesce(controlledActiveMode, () => ( uncontrolledActiveMode));
43584
+ const handleActiveModeChange = _react.useCallback.call(void 0,
43585
+ (next) => {
43586
+ if (controlledActiveMode === void 0) {
43587
+ setUncontrolledActiveMode(next);
43588
+ }
43589
+ _optionalChain([onActiveModeChange, 'optionalCall', _1092 => _1092(next)]);
43590
+ },
43591
+ [controlledActiveMode, onActiveModeChange]
43592
+ );
43593
+ const showModeToggle = effectiveModes.guide !== void 0 && effectiveModes.mingo !== void 0;
42546
43594
  const {
42547
43595
  messages: rawMessages,
42548
43596
  isLoading: chatLoading,
@@ -42558,7 +43606,7 @@ function EmbeddableChatInner({
42558
43606
  currentCacheHitRatePct,
42559
43607
  currentUsageBreakdown,
42560
43608
  displayRef
42561
- } = useEmbeddedChat({ tableIdForDocumentType });
43609
+ } = useUnifiedChat({ modes: effectiveModes, activeMode });
42562
43610
  const {
42563
43611
  attachments: stagedAttachments,
42564
43612
  readyAttachments,
@@ -42609,7 +43657,7 @@ function EmbeddableChatInner({
42609
43657
  augmentedText = `${text}${markdown}`;
42610
43658
  }
42611
43659
  sendMessage(augmentedText, {
42612
- ...readyAttachments.length > 0 ? { pendingAttachments: readyAttachments } : {}
43660
+ ...readyAttachments.length > 0 ? { attachments: readyAttachments } : {}
42613
43661
  });
42614
43662
  if (readyAttachments.length > 0) {
42615
43663
  clearAttachments();
@@ -42658,9 +43706,9 @@ function EmbeddableChatInner({
42658
43706
  const lastAssistantMsg = [...rawMessages].reverse().find((m) => m.role === "assistant");
42659
43707
  const lastSources = _react.useMemo.call(void 0, () => {
42660
43708
  if (chatLoading) return void 0;
42661
- const sources = _optionalChain([lastAssistantMsg, 'optionalAccess', _1063 => _1063.sources]);
43709
+ const sources = _optionalChain([lastAssistantMsg, 'optionalAccess', _1093 => _1093.sources]);
42662
43710
  if (!sources || sources.length === 0) return void 0;
42663
- const content = _optionalChain([lastAssistantMsg, 'optionalAccess', _1064 => _1064.content]) || "";
43711
+ const content = _optionalChain([lastAssistantMsg, 'optionalAccess', _1094 => _1094.content]) || "";
42664
43712
  const citationOrder = [...content.matchAll(/\[(\d+)\]/g)].map(
42665
43713
  (m) => parseInt(m[1], 10)
42666
43714
  );
@@ -42707,20 +43755,46 @@ function EmbeddableChatInner({
42707
43755
  " AI Assistant"
42708
43756
  ] }) }),
42709
43757
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-full flex-col overflow-hidden", children: [
42710
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex-shrink-0 px-5 pt-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
42711
- ChatHeader,
42712
- {
42713
- userName: "Mingo AI",
42714
- userTitle: `${sourceLabel} Assistant`,
42715
- userIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk24KCAECRcjs.MingoIcon, { className: "h-6 w-6", color: "white" }),
42716
- onNewChat: handleNewChat,
42717
- onClose: handleClose,
42718
- showNewChat: hasMessages,
42719
- connectionStatus: "connected",
42720
- fullWidth: true,
42721
- className: "!rounded-xl"
42722
- }
42723
- ) }),
43758
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-shrink-0 px-5 pt-4", children: [
43759
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
43760
+ ChatHeader,
43761
+ {
43762
+ userName: "Mingo AI",
43763
+ userTitle: `${sourceLabel} Assistant`,
43764
+ userIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk24KCAECRcjs.MingoIcon, { className: "h-6 w-6", color: "white" }),
43765
+ onNewChat: handleNewChat,
43766
+ onClose: handleClose,
43767
+ showNewChat: hasMessages,
43768
+ connectionStatus: "connected",
43769
+ fullWidth: true,
43770
+ className: "!rounded-xl"
43771
+ }
43772
+ ),
43773
+ showModeToggle ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
43774
+ "div",
43775
+ {
43776
+ role: "radiogroup",
43777
+ "aria-label": "Chat mode",
43778
+ className: "mt-3 inline-flex rounded-lg border border-ods-border bg-ods-bg-secondary p-0.5",
43779
+ children: ["mingo", "guide"].map((m) => {
43780
+ const isActive = activeMode === m;
43781
+ const label = m === "mingo" ? "Mingo" : "Guide";
43782
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
43783
+ "button",
43784
+ {
43785
+ type: "button",
43786
+ role: "radio",
43787
+ "aria-checked": isActive,
43788
+ onClick: () => handleActiveModeChange(m),
43789
+ className: "px-3 py-1 text-sm rounded-md transition-colors " + (isActive ? "bg-ods-accent text-ods-text-on-accent" : "text-ods-text-secondary hover:text-ods-text-primary"),
43790
+ children: label
43791
+ },
43792
+ m
43793
+ );
43794
+ })
43795
+ }
43796
+ ) : null
43797
+ ] }),
42724
43798
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
42725
43799
  "div",
42726
43800
  {
@@ -42878,7 +43952,7 @@ function EmbeddableChatInner({
42878
43952
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
42879
43953
  ChatAttachmentAddButton,
42880
43954
  {
42881
- attachmentsEnabled,
43955
+ attachmentsEnabled: attachmentsEnabled && activeMode === "guide",
42882
43956
  attachmentsCount: stagedAttachments.length,
42883
43957
  onAddFiles: addAttachmentFiles,
42884
43958
  disabled: chatLoading
@@ -43706,5 +44780,21 @@ function EmbeddableChatInner({
43706
44780
 
43707
44781
 
43708
44782
 
43709
- exports.Label = Label; exports.AllowedDomainsInput = AllowedDomainsInput; exports.HiddenTagsPopup = HiddenTagsPopup; exports.tagVariants = tagVariants; exports.Tag = Tag; exports.Autocomplete = Autocomplete; exports.Card = Card; exports.CardHeader = CardHeader; exports.CardTitle = CardTitle; exports.CardDescription = CardDescription; exports.CardContent = CardContent; exports.CardFooter = CardFooter; exports.CardHorizontal = CardHorizontal; exports.CheckboxBlock = CheckboxBlock; exports.CheckboxWithDescription = CheckboxWithDescription; exports.Select = Select; exports.SelectGroup = SelectGroup; exports.SelectValue = SelectValue; exports.SelectTrigger = SelectTrigger; exports.SelectScrollUpButton = SelectScrollUpButton; exports.SelectScrollDownButton = SelectScrollDownButton; exports.SelectContent = SelectContent; exports.SelectLabel = SelectLabel; exports.SelectItem = SelectItem; exports.SelectSeparator = SelectSeparator; exports.DatePicker = DatePicker; exports.DatePickerInput = DatePickerInput; exports.DatePickerInputSimple = DatePickerInputSimple; exports.formatDate = formatDate; exports.formatNumber = formatNumber; exports.formatPrice = formatPrice; exports.formatBytes = formatBytes; exports.formatBytesShort = formatBytesShort; exports.formatLargeNumber = formatLargeNumber; exports.formatAbbreviatedNumber = formatAbbreviatedNumber; exports.getFirstLastInitials = getFirstLastInitials; exports.nameInitials = nameInitials; exports.formatDurationMMSS = formatDurationMMSS; exports.formatDurationCompact = formatDurationCompact; exports.formatTimeWithTimezone = formatTimeWithTimezone; exports.formatDurationFromRange = formatDurationFromRange; exports.formatDateUTC = formatDateUTC; exports.formatLegalDate = formatLegalDate; exports.formatCurrency = formatCurrency; exports.formatPercent = formatPercent; exports.formatWholeDollars = formatWholeDollars; exports.formatCompactMetric = formatCompactMetric; exports.getTrendColors = getTrendColors; exports.formatDateRange = formatDateRange; exports.formatDateTimeAt = formatDateTimeAt; exports.formatDurationFromMs = formatDurationFromMs; exports.formatDuration = formatDuration; exports.formatUnderscoreText = formatUnderscoreText; exports.stripHtml = stripHtml; exports.formatClassification = formatClassification; exports.formatPricingModel = formatPricingModel; exports.formatBioText = formatBioText; exports.getPlatformAccentColor = getPlatformAccentColor; exports.getCurrentPlatform = getCurrentPlatform; exports.delay = delay; exports.generateRandomString = generateRandomString; exports.truncateString = truncateString; exports.deepClone = deepClone; exports.getSlackCommunityJoinUrl = getSlackCommunityJoinUrl; exports.OS_PLATFORMS = OS_PLATFORMS; exports.DEFAULT_OS_PLATFORM = DEFAULT_OS_PLATFORM; exports.isValidEmailDomain = isValidEmailDomain; exports.validateEmailDomain = validateEmailDomain; exports.validateEmailDomainList = validateEmailDomainList; exports.cleanEmailDomain = cleanEmailDomain; exports.getConfidenceColorClass = getConfidenceColorClass; exports.getConfidenceLevel = getConfidenceLevel; exports.getConfidenceBorderClass = getConfidenceBorderClass; exports.getConfidenceTextClass = getConfidenceTextClass; exports.getConfidenceBgClass = getConfidenceBgClass; exports.getConfidenceLabel = getConfidenceLabel; exports.formatReleaseDate = formatReleaseDate; exports.formatDateShort = formatDateShort; exports.formatDateSlashUTC = formatDateSlashUTC; exports.ICON_REGISTRY = ICON_REGISTRY; exports.normalizeIconKey = normalizeIconKey; exports.getIconComponent = getIconComponent; exports.getDynamicIcon = getDynamicIcon; exports.normalizeToolType = normalizeToolType; exports.normalizeToolTypeWithFallback = normalizeToolTypeWithFallback; exports.toToolLabel = toToolLabel; exports.isValidToolType = isValidToolType; exports.getToolTypeAliases = getToolTypeAliases; exports.getToolLabel = getToolLabel; exports.ShellTypeValues = ShellTypeValues; exports.SHELL_TYPES = SHELL_TYPES; exports.shellLabels = shellLabels; exports.getShellLabel = getShellLabel; exports.getShellIcon = getShellIcon; exports.OSTypeValues = OSTypeValues; exports.OS_TYPES = OS_TYPES; exports.osLabels = osLabels; exports.normalizeOSType = normalizeOSType; exports.getOSLabel = getOSLabel; exports.getOSIcon = getOSIcon; exports.getOSTypeDefinition = getOSTypeDefinition; exports.getOSPlatformId = getOSPlatformId; exports.isOSPlatform = isOSPlatform; exports.getCountryPhoneData = getCountryPhoneData; exports.getCountryByCode = getCountryByCode; exports.validatePhoneNumber = validatePhoneNumber; exports.formatPhoneE164 = formatPhoneE164; exports.GENERIC_EMAIL_DOMAINS = GENERIC_EMAIL_DOMAINS; exports.extractDomainFromEmail = extractDomainFromEmail; exports.normalizeDomain = normalizeDomain; exports.isGenericDomain = isGenericDomain; exports.hasGenericEmailDomain = hasGenericEmailDomain; exports.isGenericWebsiteDomain = isGenericWebsiteDomain; exports.DESIGN_PALETTE = DESIGN_PALETTE; exports.hexToRgb = hexToRgb; exports.getContrastRatio = getContrastRatio; exports.extractDominantColor = extractDominantColor; exports.getBestContrastColor = getBestContrastColor; exports.analyzeImageColor = analyzeImageColor; exports.extractImageEdgeColorAsync = extractImageEdgeColorAsync; exports.getProxiedImageUrl = getProxiedImageUrl; exports.urlPathLooksLikeSvg = urlPathLooksLikeSvg; exports.shouldProxyImage = shouldProxyImage; exports.generateImageSizes = generateImageSizes; exports.formatRelativeTime = formatRelativeTime; exports.formatAbsoluteDate = formatAbsoluteDate; exports.formatDateTime = formatDateTime; exports.getDetailedTimeDifference = getDetailedTimeDifference; exports.isToday = isToday; exports.isWithinMinutes = isWithinMinutes; exports.createUTCTimestamp = createUTCTimestamp; exports.SOURCE_ICON_NAMES = SOURCE_ICON_NAMES; exports.getSourceIconName = getSourceIconName; exports.SOURCE_LABELS_BY_TABLE = SOURCE_LABELS_BY_TABLE; exports.getSourceLabel = getSourceLabel; exports.DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID = DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID; exports.defaultTableIdForDocumentType = defaultTableIdForDocumentType; exports.CHAT_ATTACHMENT_VIEW_URL_PREFIX = CHAT_ATTACHMENT_VIEW_URL_PREFIX; exports.CHAT_ATTACHMENT_VIEW_TOKEN_QUERY_PARAM = CHAT_ATTACHMENT_VIEW_TOKEN_QUERY_PARAM; exports.ANTHROPIC_SUPPORTED_IMAGE_MIME = ANTHROPIC_SUPPORTED_IMAGE_MIME; exports.buildChatAttachmentViewUrl = buildChatAttachmentViewUrl; exports.escapeMarkdownInline = escapeMarkdownInline; exports.formatChatAttachmentMarkdownForBubble = formatChatAttachmentMarkdownForBubble; exports.CHAT_ATTACHMENT_VIEW_URL_PREFIX_REGEX_ESCAPED = CHAT_ATTACHMENT_VIEW_URL_PREFIX_REGEX_ESCAPED; exports.CHAT_ATTACHMENT_MARKDOWN_PATTERN = CHAT_ATTACHMENT_MARKDOWN_PATTERN; exports.stripChatAttachmentMarkdown = stripChatAttachmentMarkdown; exports.AUTO_CONTINUATION_DIRECTIVE_PREFIX = AUTO_CONTINUATION_DIRECTIVE_PREFIX; exports.buildAutoContinuationDirective = buildAutoContinuationDirective; exports.flattenAssistantContent = flattenAssistantContent; exports.MESSAGE_TYPE = MESSAGE_TYPE; exports.SCROLL_ANCHOR = SCROLL_ANCHOR; exports.SCROLL_ANCHOR_WIRE_KEY = SCROLL_ANCHOR_WIRE_KEY; exports.parseScrollAnchor = parseScrollAnchor; exports.parseWireCommandOverride = parseWireCommandOverride; exports.sanitizeTitleForChat = sanitizeTitleForChat; exports.formatSingularLookupInvocation = formatSingularLookupInvocation; exports.extractEntityIdFilter = extractEntityIdFilter; exports.buildDiscussAddendum = buildDiscussAddendum; exports.CUSTOM_ITEM_ID = CUSTOM_ITEM_ID; exports.getTaskTypeLabel = getTaskTypeLabel; exports.getStatusColorScheme = getStatusColorScheme; exports.clickupTaskUrl = clickupTaskUrl; exports.isCrossOriginUrl = isCrossOriginUrl; exports.fetchPriorityProp = fetchPriorityProp; exports.ApprovalRequestMessage = ApprovalRequestMessage; exports.ExpandChevron = ExpandChevron; exports.useCollapsible = useCollapsible; exports.getCommandText = getCommandText; exports.ArgRow = ArgRow; exports.ResultBlock = ResultBlock; exports.ApprovalBatchMessage = ApprovalBatchMessage; exports.ContextCompactionDisplay = ContextCompactionDisplay; exports.SimpleMarkdownRenderer = SimpleMarkdownRenderer; exports.ThinkingDisplay = ThinkingDisplay; exports.ErrorMessageDisplay = ErrorMessageDisplay; exports.SquareAvatar = SquareAvatar; exports.resolveTicketStatus = resolveTicketStatus; exports.getTicketStatusConfig = getTicketStatusConfig; exports.getTicketStatusTag = getTicketStatusTag; exports.TicketStatusTag = TicketStatusTag; exports.ChatContainer = ChatContainer; exports.ChatHeader = ChatHeader; exports.ChatContent = ChatContent; exports.ChatFooter = ChatFooter; exports.Textarea = Textarea; exports.ChatTypingIndicator = ChatTypingIndicator; exports.SlashCommandSuggestions = SlashCommandSuggestions; exports.ChatInput = ChatInput; exports.ToolExecutionDisplay = ToolExecutionDisplay; exports.remarkCardLinks = remarkCardLinks; exports.BlockCard = BlockCard; exports.MemoizedChatMessageEnhanced = MemoizedChatMessageEnhanced; exports.ChatMessageList = ChatMessageList; exports.ChatQuickAction = ChatQuickAction; exports.ChatTicketItem = ChatTicketItem; exports.ChatTicketList = ChatTicketList; exports.HoverCard = HoverCard; exports.HoverCardTrigger = HoverCardTrigger; exports.HoverCardContent = HoverCardContent; exports.ModelDisplay = ModelDisplay; exports.DialogListItem = DialogListItem; exports.ChatSidebar = ChatSidebar; exports.decideNewTab = decideNewTab; exports.computeIsNewTab = computeIsNewTab; exports.newTabAnchorAttrs = newTabAnchorAttrs; exports.buildAnchorProps = buildAnchorProps; exports.NEW_TAB_FEATURES = NEW_TAB_FEATURES; exports.isModifierClick = isModifierClick; exports.stripSameOriginToPath = stripSameOriginToPath; exports.resolveExternalNavigation = resolveExternalNavigation; exports.handleChatNavClick = handleChatNavClick; exports.NavLinkAnchorViaRuntime = NavLinkAnchorViaRuntime; exports.SourceActionButton = SourceActionButton; exports.CHAT_ATTACHMENT_MIME_TYPES = CHAT_ATTACHMENT_MIME_TYPES; exports.CHAT_ATTACHMENT_CONCURRENT_UPLOADS_PER_USER = CHAT_ATTACHMENT_CONCURRENT_UPLOADS_PER_USER; exports.ChatAttachmentAddButton = ChatAttachmentAddButton; exports.ChatAttachmentChipStrip = ChatAttachmentChipStrip; exports.EMPTY_AUTHOR_PLACEHOLDER = EMPTY_AUTHOR_PLACEHOLDER; exports.EntityMetadataValueCell = EntityMetadataValueCell; exports.EntityMetadataAuthorCell = EntityMetadataAuthorCell; exports.EntityAuthorCard = EntityAuthorCard; exports.BlogImagePlaceholder = BlogImagePlaceholder; exports.PlatformBadge = PlatformBadge; exports.AdminContentCard = AdminContentCard; exports.Tabs = Tabs; exports.TabsList = TabsList; exports.TabsTrigger = TabsTrigger; exports.TabsContent = TabsContent; exports.extractYouTubeId = extractYouTubeId; exports.Video = Video; exports.RATIO_GRID_CLASS = RATIO_GRID_CLASS; exports.RATIO_DISPLAY_GRID_CLASS = RATIO_DISPLAY_GRID_CLASS; exports.RatioTabs = RatioTabs; exports.detectAspectRatio = detectAspectRatio; exports.ratioToCategory = ratioToCategory; exports.groupByAspectRatio = groupByAspectRatio; exports.VideoBitesDisplay = VideoBitesDisplay; exports.VideoBiteCard = VideoBiteCard; exports.EntityVideoSection = EntityVideoSection; exports.ChatVideoEntityCard = ChatVideoEntityCard; exports.InteractiveCard = InteractiveCard; exports.statusBadgeVariants = statusBadgeVariants; exports.StatusBadge = StatusBadge; exports.ProductReleaseCard = ProductReleaseCard; exports.ProductReleaseCardSkeleton = ProductReleaseCardSkeleton; exports.COMPACT_CARD_OUTER = COMPACT_CARD_OUTER; exports.COMPACT_CARD_OUTER_STATIC = COMPACT_CARD_OUTER_STATIC; exports.COMPACT_CARD_SKELETON_OUTER = COMPACT_CARD_SKELETON_OUTER; exports.COMPACT_CARD_IMAGE_SLOT = COMPACT_CARD_IMAGE_SLOT; exports.COMPACT_CARD_SKELETON_IMAGE_SLOT = COMPACT_CARD_SKELETON_IMAGE_SLOT; exports.COMPACT_CARD_ICON_SLOT = COMPACT_CARD_ICON_SLOT; exports.COMPACT_CARD_TEXT_COL = COMPACT_CARD_TEXT_COL; exports.COMPACT_CARD_TITLE_ROW = COMPACT_CARD_TITLE_ROW; exports.COMPACT_CARD_META_ROW_BOX = COMPACT_CARD_META_ROW_BOX; exports.COMPACT_CARD_TITLE = COMPACT_CARD_TITLE; exports.COMPACT_CARD_SUBTITLE = COMPACT_CARD_SUBTITLE; exports.COMPACT_CARD_SUMMARY = COMPACT_CARD_SUMMARY; exports.COMPACT_CARD_META_ROW = COMPACT_CARD_META_ROW; exports.COMPACT_CARD_ROW_FILLER = COMPACT_CARD_ROW_FILLER; exports.safeHref = safeHref; exports.BlogCardSkeleton = BlogCardSkeleton; exports.BlogCard = BlogCard; exports.CaseStudyCardSkeleton = CaseStudyCardSkeleton; exports.CaseStudyCard = CaseStudyCard; exports.CustomerInterviewCardSkeleton = CustomerInterviewCardSkeleton; exports.CustomerInterviewCard = CustomerInterviewCard; exports.formatInvestorUpdatePeriod = formatInvestorUpdatePeriod; exports.InvestorUpdateCardSkeleton = InvestorUpdateCardSkeleton; exports.InvestorUpdateCard = InvestorUpdateCard; exports.OnboardingGuideCardSkeleton = OnboardingGuideCardSkeleton; exports.OnboardingGuideCard = OnboardingGuideCard; exports.RoadmapVoteButton = RoadmapVoteButton; exports.ImageGalleryModal = ImageGalleryModal; exports.TaskTypeIcon = TaskTypeIcon; exports.RoadmapCardSkeleton = RoadmapCardSkeleton; exports.RoadmapCard = RoadmapCard; exports.GitHubActivityCard = GitHubActivityCard; exports.GitHubActivityCardSkeleton = GitHubActivityCardSkeleton; exports.SlackMessageCard = SlackMessageCard; exports.SlackMessageCardSkeleton = SlackMessageCardSkeleton; exports.HubspotTicketCard = HubspotTicketCard; exports.HubspotTicketCardSkeleton = HubspotTicketCardSkeleton; exports.DataRoomDocCard = DataRoomDocCard; exports.DataRoomDocCardSkeleton = DataRoomDocCardSkeleton; exports.ProgramCardSkeleton = ProgramCardSkeleton; exports.ProgramCard = ProgramCard; exports.CampaignCardAdmin = CampaignCardAdmin; exports.CampaignCardAdminSkeleton = CampaignCardAdminSkeleton; exports.GenericEntityCard = GenericEntityCard; exports.GenericEntityCardSkeleton = GenericEntityCardSkeleton; exports.useChatCardItem = useChatCardItem; exports.resolveSourceRowCTA = resolveSourceRowCTA; exports.resolveSourceIcon = resolveSourceIcon; exports.ChatCardLoader = ChatCardLoader; exports.renderChatInlineEntityCard = renderChatInlineEntityCard; exports.CHAT_TYPE = CHAT_TYPE; exports.OWNER_TYPE = OWNER_TYPE; exports.MESSAGE_ROLE = MESSAGE_ROLE; exports.ASSISTANT_TYPE = ASSISTANT_TYPE; exports.AUTHOR_TYPE = AUTHOR_TYPE; exports.APPROVAL_STATUS = APPROVAL_STATUS; exports.CONNECTION_STATUS = CONNECTION_STATUS; exports.buildChatRefKey = buildChatRefKey; exports.isStructuredContent = isStructuredContent; exports.normalizeContent = normalizeContent2; exports.NETWORK_CONFIG = NETWORK_CONFIG; exports.transformEventToProgram = transformEventToProgram; exports.transformPodcastToProgram = transformPodcastToProgram; exports.transformWebinarToProgram = transformWebinarToProgram; exports.useChunkCatchup = useChunkCatchup; exports.useJetStreamDialogSubscription = useJetStreamDialogSubscription; exports.useNatsDialogSubscription = useNatsDialogSubscription; exports.buildNatsWsUrl = buildNatsWsUrl; exports.parseChunkToAction = parseChunkToAction; exports.isControlChunk = isControlChunk; exports.isErrorChunk = isErrorChunk; exports.isMetadataChunk = isMetadataChunk; exports.extractTextFromChunk = extractTextFromChunk; exports.MessageSegmentAccumulator = MessageSegmentAccumulator; exports.createMessageSegmentAccumulator = createMessageSegmentAccumulator; exports.useRealtimeChunkProcessor = useRealtimeChunkProcessor; exports.fetchSlashCommands = fetchSlashCommands; exports.useSlashCommands = useSlashCommands; exports.getChatProxyAuth = getChatProxyAuth; exports.getPersistedProxyEmail = getPersistedProxyEmail; exports.setChatProxyAuth = setChatProxyAuth; exports.clearChatProxyAuth = clearChatProxyAuth; exports.applyProxyAuth = applyProxyAuth; exports.chatAuthedFetch = chatAuthedFetch; exports.useChatAttachments = useChatAttachments; exports.useChatAttachmentImageGallery = useChatAttachmentImageGallery; exports.useChatIdentity = useChatIdentity; exports.useCloseOnNavigation = useCloseOnNavigation; exports.useSSE = useSSE; exports.useChat = useChat; exports.useEmbeddedChat = useEmbeddedChat; exports.useProxiedImageUrl = useProxiedImageUrl; exports.processHistoricalMessages = processHistoricalMessages; exports.extractErrorMessages = extractErrorMessages; exports.processHistoricalMessagesWithErrors = processHistoricalMessagesWithErrors; exports.extractIncompleteMessageState = extractIncompleteMessageState; exports.CHIP_ACTION_BUTTON_CLASS = CHIP_ACTION_BUTTON_CLASS; exports.chatChipClass = chatChipClass; exports.HoverDropdown = HoverDropdown; exports.EmbeddableChat = EmbeddableChat; exports.DynamicThemeProvider = DynamicThemeProvider; exports.useDynamicTheme = useDynamicTheme; exports.THEME_STORAGE_KEY = THEME_STORAGE_KEY; exports.THEME_ATTRIBUTE = THEME_ATTRIBUTE; exports.DEFAULT_THEME = DEFAULT_THEME; exports.ThemeProvider = ThemeProvider; exports.useTheme = useTheme; exports.useThemeToggle = useThemeToggle; exports.ArrayEntryManager = ArrayEntryManager; exports.ProviderButton = ProviderButton; exports.AuthProvidersList = AuthProvidersList; exports.ChangelogManager = ChangelogManager; exports.ChangelogSectionsManager = ChangelogSectionsManager; exports.ClickUpTasksManager = ClickUpTasksManager; exports.CommandBox = CommandBox; exports.ErrorBoundary = ErrorBoundary; exports.badgeVariants = badgeVariants; exports.Badge = Badge; exports.SectionSelector = SectionSelector; exports.FigmaPrototypeViewer = FigmaPrototypeViewer; exports.FiltersDropdown = FiltersDropdown; exports.useFiltersDropdown = useFiltersDropdown; exports.GitHubReleasesManager = GitHubReleasesManager; exports.KnowledgeBaseLinksManager = KnowledgeBaseLinksManager; exports.Progress = Progress; exports.LoadingProvider = LoadingProvider; exports.useLoading = useLoading; exports.MediaGalleryManager = MediaGalleryManager; exports.MoreAboutButton = MoreAboutButton; exports.OSTypeBadge = OSTypeBadge; exports.OSTypeIcon = OSTypeIcon; exports.OSTypeLabel = OSTypeLabel; exports.OSTypeBadgeGroup = OSTypeBadgeGroup; exports.ParallaxImageShowcase = ParallaxImageShowcase; exports.PathsDisplay = PathsDisplay; exports.OPENFRAME_PATHS = OPENFRAME_PATHS; exports.getOpenFramePaths = getOpenFramePaths; exports.PlatformFilterComponent = PlatformFilterComponent; exports.PushButtonSelector = PushButtonSelector; exports.ReleaseMediaManager = ReleaseMediaManager; exports.SelectButton = SelectButton; exports.SEOEditorPreview = SEOEditorPreview; exports.SocialLinksManager = SocialLinksManager; exports.StartWithOpenFrameButton = StartWithOpenFrameButton; exports.StatusFilterComponent = StatusFilterComponent; exports.TagsSelector = TagsSelector; exports.VideoSourceSelector = VideoSourceSelector; exports.ConfidenceBadge = ConfidenceBadge; exports.TranscriptSummaryEditor = TranscriptSummaryEditor; exports.AIEnrichButton = AIEnrichButton; exports.AIWarningsSection = AIWarningsSection; exports.AIEnrichSection = AIEnrichSection; exports.HighlightVideoSection = HighlightVideoSection; exports.HighlightConfigSection = HighlightConfigSection; exports.EntitySummaryEditor = EntitySummaryEditor; exports.AIStatusIndicator = AIStatusIndicator; exports.AIRequiredBadge = AIRequiredBadge; exports.TranscribeSummarizeSection = TranscribeSummarizeSection; exports.VideoClipsSection = VideoClipsSection; exports.HighlightGenerationSection = HighlightGenerationSection; exports.HighlightVideoPreview = HighlightVideoPreview; exports.TranscribeAndSummarizeCombinedSection = TranscribeAndSummarizeCombinedSection; exports.HighlightVideoCombinedSection = HighlightVideoCombinedSection; exports.ViewToggle = ViewToggle; exports.PolicyConfigurationPanel = PolicyConfigurationPanel; exports.PhoneInput = PhoneInput; exports.WaitlistForm = WaitlistForm; exports.NotificationsProvider = NotificationsProvider; exports.useNotifications = useNotifications; exports.useOptionalNotifications = useOptionalNotifications; exports.Drawer = Drawer; exports.DrawerTrigger = DrawerTrigger; exports.DrawerClose = DrawerClose; exports.DrawerPortal = DrawerPortal; exports.DrawerOverlay = DrawerOverlay; exports.DrawerContent = DrawerContent; exports.DrawerHeader = DrawerHeader; exports.DrawerTitle = DrawerTitle; exports.DrawerDescription = DrawerDescription; exports.DrawerBody = DrawerBody; exports.DrawerFooter = DrawerFooter; exports.Switch = Switch; exports.NotificationTile = NotificationTile; exports.NotificationDrawer = NotificationDrawer; exports.BoardColumnHeader = BoardColumnHeader; exports.tintOnDark = tintOnDark; exports.TicketCard = TicketCard; exports.TicketCardSkeleton = TicketCardSkeleton; exports.BoardColumn = BoardColumn; exports.useBoardCollapse = useBoardCollapse; exports.Board = Board; exports.columnFromTicketStatus = columnFromTicketStatus; exports.groupTicketsByStatus = groupTicketsByStatus; exports.Header = Header; exports.HeaderSkeleton = HeaderSkeleton; exports.ClientOnlyHeader = ClientOnlyHeader; exports.MobileNavPanel = MobileNavPanel; exports.SlidingSidebar = SlidingSidebar; exports.StickySectionNav = StickySectionNav; exports.useSectionNavigation = useSectionNavigation; exports.NavigationSidebar = NavigationSidebar; exports.HeaderButton = HeaderButton; exports.HeaderGlobalSearch = HeaderGlobalSearch; exports.HeaderOrganizationFilter = HeaderOrganizationFilter; exports.AppHeader = AppHeader; exports.MobileBurgerMenu = MobileBurgerMenu; exports.AppLayout = AppLayout; exports.SoftwareInfo = SoftwareInfo; exports.SoftwareSourceBadge = SoftwareSourceBadge; exports.CveLink = CveLink; exports.ToolBadge = ToolBadge; exports.ShellTypeBadge = ShellTypeBadge; exports.ScriptInfoSection = ScriptInfoSection; exports.ScriptArguments = ScriptArguments; exports.AnnouncementBar = AnnouncementBar; exports.VendorIcon = VendorIcon; exports.CategoriesCart = CategoriesCart; exports.CategoryCard = CategoryCard; exports.VendorDisplayButton = VendorDisplayButton; exports.setRealAuthHook = setRealAuthHook; exports.useAuth = useAuth; exports.AuthProvider = AuthProvider; exports.CommentCard = CommentCard; exports.ContentLoadingContainer = ContentLoadingContainer; exports.useContentLoading = useContentLoading; exports.DynamicSkeleton = DynamicSkeleton; exports.SkeletonPresets = SkeletonPresets; exports.PlatformSkeletonContainer = PlatformSkeletonContainer; exports.ProgressiveSkeleton = ProgressiveSkeleton; exports.EmptyState = EmptyState3; exports.ChevronButton = ChevronButton; exports.FaqAccordion = FaqAccordion; exports.FilterChip = FilterChip; exports.SocialIconRow = SocialIconRow; exports.Footer = Footer; exports.useUnifiedFiltering = useUnifiedFiltering; exports.vendorFilterConfig = vendorFilterConfig; exports.blogFilterConfig = blogFilterConfig; exports.Pagination = Pagination; exports.PaginationContent = PaginationContent; exports.PaginationItem = PaginationItem; exports.PaginationLink = PaginationLink; exports.PaginationEllipsis = PaginationEllipsis; exports.PaginationPrevious = PaginationPrevious; exports.PaginationNext = PaginationNext; exports.UnifiedPagination = UnifiedPagination; exports.FooterWaitlistButton = FooterWaitlistButton; exports.HeroImageUploader = HeroImageUploader; exports.ResponsiveIconsBlock = ResponsiveIconsBlock; exports.Slider = Slider; exports.ImageCropper = ImageCropper; exports.MediaCarousel = MediaCarousel; exports.MetricValue = MetricValue; exports.MSPDisplay = MSPDisplay; exports.PersistentFilterControls = PersistentFilterControls; exports.PersistentSearchContainer = PersistentSearchContainer; exports.PersistentSidebar = PersistentSidebar; exports.PersistentMobileDropdown = PersistentMobileDropdown; exports.PersistentPagination = PersistentPagination; exports.usePaginationLoading = usePaginationLoading; exports.PersistentPaginationWrapper = PersistentPaginationWrapper; exports.PRICING_STYLES = PRICING_STYLES; exports.PricingDisplay = PricingDisplay; exports.formatPricingForDisplay = formatPricingForDisplay; exports.ResultsCount = ResultsCount; exports.VendorTag = VendorTag; exports.SelectionSourceBadge = SelectionSourceBadge; exports.UserDisplay = UserDisplay; exports.UnifiedSkeleton = UnifiedSkeleton; exports.TextSkeleton = TextSkeleton; exports.InteractiveSkeleton = InteractiveSkeleton; exports.MediaSkeleton = MediaSkeleton; exports.CardSkeleton = CardSkeleton; exports.CardSkeletonGrid = CardSkeletonGrid; exports.AnnouncementBarSkeleton = AnnouncementBarSkeleton; exports.HeroSkeleton = HeroSkeleton; exports.SearchContainerSkeleton = SearchContainerSkeleton; exports.CategorySidebarSkeleton = CategorySidebarSkeleton; exports.BreadcrumbSkeleton = BreadcrumbSkeleton; exports.ResultsHeaderSkeleton = ResultsHeaderSkeleton; exports.TwoColumnLayoutSkeleton = TwoColumnLayoutSkeleton; exports.ArticleLayoutSkeleton = ArticleLayoutSkeleton; exports.VendorDetailLayoutSkeleton = VendorDetailLayoutSkeleton; exports.StatsSectionSkeleton = StatsSectionSkeleton; exports.BlogCardGridSkeleton = BlogCardGridSkeleton; exports.VendorGridSkeleton = VendorGridSkeleton; exports.SlackCommunitySkeleton = SlackCommunitySkeleton; exports.ParagraphSkeleton = ParagraphSkeleton; exports.ListSkeleton = ListSkeleton; exports.TableSkeleton = TableSkeleton; exports.FormSkeleton = FormSkeleton; exports.NavigationSkeleton = NavigationSkeleton; exports.ProfileSkeleton = ProfileSkeleton; exports.CommentSkeleton = CommentSkeleton; exports.FeatureListSkeleton = FeatureListSkeleton; exports.TimelineSkeleton = TimelineSkeleton; exports.PricingSkeleton = PricingSkeleton; exports.ProfileLoadingSkeleton = ProfileLoadingSkeleton; exports.MspProfileFormSkeleton = MspProfileFormSkeleton; exports.CategoryCardSkeleton = CategoryCardSkeleton; exports.CategoryVendorSelectorSkeleton = CategoryVendorSelectorSkeleton; exports.WizardLayoutSkeleton = WizardLayoutSkeleton; exports.MarginReportSkeleton = MarginReportSkeleton; exports.UsersGridSkeleton = UsersGridSkeleton; exports.OrganizationIconSkeleton = OrganizationIconSkeleton; exports.OrganizationCardSkeleton = OrganizationCardSkeleton; exports.OrganizationCardSkeletonGrid = OrganizationCardSkeletonGrid; exports.DeviceCardSkeleton = DeviceCardSkeleton; exports.DeviceCardSkeletonGrid = DeviceCardSkeletonGrid; exports.VendorPageSkeleton = VendorPageSkeleton; exports.CheckIcon = CheckIcon2; exports.XIcon = XIcon; exports.MinusIcon = MinusIcon; exports.CheckCircleIcon = CheckCircleIcon3; exports.XCircleIcon = XCircleIcon; exports.YesNoDisplay = YesNoDisplay; exports.evaluateFeatureValue = evaluateFeatureValue; exports.MadeWithLove = MadeWithLove; exports.DateTimePicker = DateTimePicker; exports.OnboardingStepCard = OnboardingStepCard; exports.OnboardingWalkthrough = OnboardingWalkthrough; exports.PageShell = PageShell; exports.ArticleDetailLayout = ArticleDetailLayout; exports.ReleaseChangelogSection = ReleaseChangelogSection; exports.ActionsMenu = ActionsMenu; exports.ActionsMenuDropdown = ActionsMenuDropdown; exports.PageActions = PageActions; exports.usePageActionsBottomPadding = usePageActionsBottomPadding; exports.PageContainer = PageContainer; exports.ListPageContainer = ListPageContainer; exports.DetailPageContainer = DetailPageContainer; exports.FormPageContainer = FormPageContainer; exports.ContentPageContainer = ContentPageContainer; exports.DetailPageSkeleton = DetailPageSkeleton; exports.ReleaseDetailPage = ReleaseDetailPage; exports.ReleaseDetailSkeleton = ReleaseDetailSkeleton; exports.InfoCard = InfoCard; exports.InfoRow = InfoRow; exports.InputTrigger = InputTrigger; exports.MediaTypeSelector = MediaTypeSelector; exports.PageLoader = PageLoader; exports.CompactPageLoader = CompactPageLoader; exports.ProgressBar = ProgressBar; exports.RadioGroup = RadioGroup2; exports.RadioGroupItem = RadioGroupItem; exports.RadioGroupBlock = RadioGroupBlock; exports.TagsInput = TagsInput; exports.TagsManager = TagsManager; exports.AlertDialog = AlertDialog; exports.AlertDialogTrigger = AlertDialogTrigger; exports.AlertDialogPortal = AlertDialogPortal; exports.AlertDialogOverlay = AlertDialogOverlay; exports.AlertDialogContent = AlertDialogContent; exports.AlertDialogHeader = AlertDialogHeader; exports.AlertDialogFooter = AlertDialogFooter; exports.AlertDialogTitle = AlertDialogTitle; exports.AlertDialogDescription = AlertDialogDescription; exports.AlertDialogAction = AlertDialogAction; exports.AlertDialogCancel = AlertDialogCancel; exports.AspectRatio = AspectRatio; exports.Dialog = Dialog; exports.DialogTrigger = DialogTrigger; exports.DialogPortal = DialogPortal; exports.DialogClose = DialogClose; exports.DialogOverlay = DialogOverlay; exports.DialogContent = DialogContent; exports.DialogHeader = DialogHeader; exports.DialogFooter = DialogFooter; exports.DialogTitle = DialogTitle; exports.DialogDescription = DialogDescription; exports.Modal = Modal2; exports.ModalContent = ModalContent; exports.ModalHeader = ModalHeader2; exports.ModalTitle = ModalTitle2; exports.ModalFooter = ModalFooter; exports.Modal2 = Modal3; exports.ModalContent2 = ModalContent2; exports.ModalHeader2 = ModalHeader3; exports.ModalTitle2 = ModalTitle3; exports.ModalFooter2 = ModalFooter2; exports.Separator = Separator3; exports.Sheet = Sheet; exports.SheetTrigger = SheetTrigger; exports.SheetClose = SheetClose; exports.SheetPortal = SheetPortal; exports.SheetOverlay = SheetOverlay; exports.SheetContent = SheetContent; exports.SheetHeader = SheetHeader; exports.SheetFooter = SheetFooter; exports.SheetTitle = SheetTitle; exports.SheetDescription = SheetDescription; exports.Accordion = Accordion; exports.AccordionItem = AccordionItem; exports.AccordionTrigger = AccordionTrigger; exports.AccordionContent = AccordionContent; exports.Breadcrumb = Breadcrumb; exports.BreadcrumbList = BreadcrumbList; exports.BreadcrumbItem = BreadcrumbItem; exports.BreadcrumbLink = BreadcrumbLink; exports.BreadcrumbPage = BreadcrumbPage; exports.BreadcrumbSeparator = BreadcrumbSeparator; exports.BreadcrumbEllipsis = BreadcrumbEllipsis; exports.MenubarMenu = MenubarMenu; exports.MenubarGroup = MenubarGroup; exports.MenubarPortal = MenubarPortal; exports.MenubarSub = MenubarSub; exports.MenubarRadioGroup = MenubarRadioGroup; exports.Menubar = Menubar; exports.MenubarTrigger = MenubarTrigger; exports.MenubarSubTrigger = MenubarSubTrigger; exports.MenubarSubContent = MenubarSubContent; exports.MenubarContent = MenubarContent; exports.MenubarItem = MenubarItem; exports.MenubarCheckboxItem = MenubarCheckboxItem; exports.MenubarRadioItem = MenubarRadioItem; exports.MenubarLabel = MenubarLabel; exports.MenubarSeparator = MenubarSeparator; exports.MenubarShortcut = MenubarShortcut; exports.NavigationMenu = NavigationMenu; exports.NavigationMenuList = NavigationMenuList; exports.NavigationMenuItem = NavigationMenuItem; exports.navigationMenuTriggerStyle = navigationMenuTriggerStyle; exports.NavigationMenuTrigger = NavigationMenuTrigger; exports.NavigationMenuContent = NavigationMenuContent; exports.NavigationMenuLink = NavigationMenuLink; exports.NavigationMenuViewport = NavigationMenuViewport; exports.NavigationMenuIndicator = NavigationMenuIndicator; exports.TabContent = TabContent; exports.TabNavigation = TabNavigation; exports.getTabById = getTabById; exports.getTabComponent = getTabComponent; exports.Alert = Alert; exports.AlertTitle = AlertTitle; exports.AlertDescription = AlertDescription; exports.StatusIndicator = StatusIndicator; exports.FilterCheckboxItem = FilterCheckboxItem; exports.TagKeyValueFilter = TagKeyValueFilter; exports.FilterModal = FilterModal; exports.ListPageLayout = ListPageLayout; exports.EntityImage = EntityImage; exports.TitleBlock = TitleBlock; exports.PageLayout = PageLayout; exports.toggleVariants = toggleVariants; exports.Toggle = Toggle; exports.ToggleGroup = ToggleGroup; exports.ToggleGroupItem = ToggleGroupItem; exports.BenefitCard = BenefitCard; exports.BenefitCardGrid = BenefitCardGrid; exports.BrandAssociationCard = BrandAssociationCard; exports.BrandAssociationGrid = BrandAssociationGrid; exports.BulletList = BulletList; exports.CircularProgress = CircularProgress; exports.FloatingTooltip = FloatingTooltip; exports.DashboardInfoCard = DashboardInfoCard; exports.DeviceCard = DeviceCard; exports.DeviceCardCompact = DeviceCardCompact; exports.FeatureCardGrid = FeatureCardGrid; exports.FeatureList = FeatureList; exports.TruncateText = TruncateText; exports.HighlightCard = HighlightCard; exports.HighlightCardGrid = HighlightCardGrid; exports.IconsBlock = IconsBlock; exports.MoreActionsMenu = MoreActionsMenu; exports.DropdownButton = DropdownButton; exports.OrganizationCard = OrganizationCard; exports.ServiceCard = ServiceCard; exports.TabSelector = TabSelector; exports.TitleContentBlock = TitleContentBlock; exports.TooltipProvider = TooltipProvider; exports.Tooltip = Tooltip; exports.TooltipTrigger = TooltipTrigger; exports.TooltipContent = TooltipContent; exports.ErrorState = ErrorState; exports.PageError = PageError; exports.LoadError = LoadError; exports.NotFoundError = NotFoundError; exports.ContentLoader = ContentLoader; exports.CardLoader = CardLoader; exports.FormLoader = FormLoader; exports.DetailLoader = DetailLoader; exports.ListLoader = ListLoader; exports.CursorPagination = CursorPagination; exports.CursorPaginationSimple = CursorPaginationSimple; exports.TableEmptyState = TableEmptyState; exports.TableHeader = TableHeader; exports.TableCell = TableCell; exports.TableCardSkeleton = TableCardSkeleton; exports.TableRow = TableRow; exports.Table = Table; exports.TableDescriptionCell = TableDescriptionCell; exports.TableTimestampCell = TableTimestampCell; exports.QueryReportTableHeader = QueryReportTableHeader; exports.QueryReportTableRow = QueryReportTableRow; exports.QueryReportTableSkeleton = QueryReportTableSkeleton; exports.deriveColumns = deriveColumns; exports.exportToCSV = exportToCSV; exports.QueryReportTable = QueryReportTable; exports.useDataTableContext = useDataTableContext; exports.DataTableRoot = DataTableRoot; exports.getHideClasses = getHideClasses2; exports.alignJustify = alignJustify; exports.multiSelectFilterFn = multiSelectFilterFn; exports.DataTableHeader = DataTableHeader; exports.DataTableEmpty = DataTableEmpty; exports.ROW_HEIGHT_DESKTOP = ROW_HEIGHT_DESKTOP2; exports.ROW_HEIGHT_MOBILE = ROW_HEIGHT_MOBILE2; exports.DataTableSkeleton = DataTableSkeleton; exports.DataTableRow = DataTableRow; exports.DataTableBody = DataTableBody; exports.DataTableInfiniteFooter = DataTableInfiniteFooter; exports.DataTableCursorFooter = DataTableCursorFooter; exports.DataTableRowCount = DataTableRowCount; exports.useDataTable = useDataTable; exports.DataTable = DataTable; exports.flexRender = _reacttable.flexRender; exports.createColumnHelper = _reacttable.createColumnHelper; exports.getCoreRowModel = _reacttable.getCoreRowModel; exports.getExpandedRowModel = _reacttable.getExpandedRowModel; exports.getFacetedRowModel = _reacttable.getFacetedRowModel; exports.getFacetedUniqueValues = _reacttable.getFacetedUniqueValues; exports.getFilteredRowModel = _reacttable.getFilteredRowModel; exports.getGroupedRowModel = _reacttable.getGroupedRowModel; exports.getPaginationRowModel = _reacttable.getPaginationRowModel; exports.getSortedRowModel = _reacttable.getSortedRowModel; exports.SearchInput = SearchInput; exports.FilterListItem = FilterListItem; exports.FilterList = FilterList; exports.TagSearchInput = TagSearchInput; exports.MarkdownEditor = MarkdownEditor; exports.FileUpload = FileUpload; exports.ImageUploader = ImageUploader; exports.AssigneeDropdown = AssigneeDropdown; exports.TicketDetailSection = TicketDetailSection; exports.TicketAttachmentsList = TicketAttachmentsList; exports.TicketNoteCard = TicketNoteCard; exports.TicketNotesSection = TicketNotesSection; exports.TicketInfoSection = TicketInfoSection; exports.LOG_SEVERITY_COLORS = LOG_SEVERITY_COLORS; exports.LOG_SEVERITY_LABELS = LOG_SEVERITY_LABELS; exports.LogSeverityDot = LogSeverityDot; exports.LogsList = LogsList; exports.AVAILABLE_SVG_ICONS = AVAILABLE_SVG_ICONS; exports.releaseTypeOptions = releaseTypeOptions; exports.releaseStatusOptions = releaseStatusOptions; exports.changelogLabels = changelogLabels; exports.SEMVER_REGEX = SEMVER_REGEX; exports.TMCG_ROLES = TMCG_ROLES; exports.TMCG_ROLE_DISPLAY_NAMES = TMCG_ROLE_DISPLAY_NAMES; exports.TMCG_SOCIAL_PLATFORMS = TMCG_SOCIAL_PLATFORMS; exports.assets = assets;
43710
- //# sourceMappingURL=chunk-APM6KBPU.cjs.map
44783
+
44784
+
44785
+
44786
+
44787
+
44788
+
44789
+
44790
+
44791
+
44792
+
44793
+
44794
+
44795
+
44796
+
44797
+
44798
+
44799
+ exports.Label = Label; exports.AllowedDomainsInput = AllowedDomainsInput; exports.HiddenTagsPopup = HiddenTagsPopup; exports.tagVariants = tagVariants; exports.Tag = Tag; exports.Autocomplete = Autocomplete; exports.Card = Card; exports.CardHeader = CardHeader; exports.CardTitle = CardTitle; exports.CardDescription = CardDescription; exports.CardContent = CardContent; exports.CardFooter = CardFooter; exports.CardHorizontal = CardHorizontal; exports.CheckboxBlock = CheckboxBlock; exports.CheckboxWithDescription = CheckboxWithDescription; exports.Select = Select; exports.SelectGroup = SelectGroup; exports.SelectValue = SelectValue; exports.SelectTrigger = SelectTrigger; exports.SelectScrollUpButton = SelectScrollUpButton; exports.SelectScrollDownButton = SelectScrollDownButton; exports.SelectContent = SelectContent; exports.SelectLabel = SelectLabel; exports.SelectItem = SelectItem; exports.SelectSeparator = SelectSeparator; exports.DatePicker = DatePicker; exports.DatePickerInput = DatePickerInput; exports.DatePickerInputSimple = DatePickerInputSimple; exports.formatDate = formatDate; exports.formatNumber = formatNumber; exports.formatPrice = formatPrice; exports.formatBytes = formatBytes; exports.formatBytesShort = formatBytesShort; exports.formatLargeNumber = formatLargeNumber; exports.formatAbbreviatedNumber = formatAbbreviatedNumber; exports.getFirstLastInitials = getFirstLastInitials; exports.nameInitials = nameInitials; exports.formatDurationMMSS = formatDurationMMSS; exports.formatDurationCompact = formatDurationCompact; exports.formatTimeWithTimezone = formatTimeWithTimezone; exports.formatDurationFromRange = formatDurationFromRange; exports.formatDateUTC = formatDateUTC; exports.formatLegalDate = formatLegalDate; exports.formatCurrency = formatCurrency; exports.formatPercent = formatPercent; exports.formatWholeDollars = formatWholeDollars; exports.formatCompactMetric = formatCompactMetric; exports.getTrendColors = getTrendColors; exports.formatDateRange = formatDateRange; exports.formatDateTimeAt = formatDateTimeAt; exports.formatDurationFromMs = formatDurationFromMs; exports.formatDuration = formatDuration; exports.formatUnderscoreText = formatUnderscoreText; exports.stripHtml = stripHtml; exports.formatClassification = formatClassification; exports.formatPricingModel = formatPricingModel; exports.formatBioText = formatBioText; exports.getPlatformAccentColor = getPlatformAccentColor; exports.getCurrentPlatform = getCurrentPlatform; exports.delay = delay; exports.generateRandomString = generateRandomString; exports.truncateString = truncateString; exports.deepClone = deepClone; exports.getSlackCommunityJoinUrl = getSlackCommunityJoinUrl; exports.OS_PLATFORMS = OS_PLATFORMS; exports.DEFAULT_OS_PLATFORM = DEFAULT_OS_PLATFORM; exports.isValidEmailDomain = isValidEmailDomain; exports.validateEmailDomain = validateEmailDomain; exports.validateEmailDomainList = validateEmailDomainList; exports.cleanEmailDomain = cleanEmailDomain; exports.getConfidenceColorClass = getConfidenceColorClass; exports.getConfidenceLevel = getConfidenceLevel; exports.getConfidenceBorderClass = getConfidenceBorderClass; exports.getConfidenceTextClass = getConfidenceTextClass; exports.getConfidenceBgClass = getConfidenceBgClass; exports.getConfidenceLabel = getConfidenceLabel; exports.formatReleaseDate = formatReleaseDate; exports.formatDateShort = formatDateShort; exports.formatDateSlashUTC = formatDateSlashUTC; exports.ICON_REGISTRY = ICON_REGISTRY; exports.normalizeIconKey = normalizeIconKey; exports.getIconComponent = getIconComponent; exports.getDynamicIcon = getDynamicIcon; exports.normalizeToolType = normalizeToolType; exports.normalizeToolTypeWithFallback = normalizeToolTypeWithFallback; exports.toToolLabel = toToolLabel; exports.isValidToolType = isValidToolType; exports.getToolTypeAliases = getToolTypeAliases; exports.getToolLabel = getToolLabel; exports.ShellTypeValues = ShellTypeValues; exports.SHELL_TYPES = SHELL_TYPES; exports.shellLabels = shellLabels; exports.getShellLabel = getShellLabel; exports.getShellIcon = getShellIcon; exports.OSTypeValues = OSTypeValues; exports.OS_TYPES = OS_TYPES; exports.osLabels = osLabels; exports.normalizeOSType = normalizeOSType; exports.getOSLabel = getOSLabel; exports.getOSIcon = getOSIcon; exports.getOSTypeDefinition = getOSTypeDefinition; exports.getOSPlatformId = getOSPlatformId; exports.isOSPlatform = isOSPlatform; exports.getCountryPhoneData = getCountryPhoneData; exports.getCountryByCode = getCountryByCode; exports.validatePhoneNumber = validatePhoneNumber; exports.formatPhoneE164 = formatPhoneE164; exports.GENERIC_EMAIL_DOMAINS = GENERIC_EMAIL_DOMAINS; exports.extractDomainFromEmail = extractDomainFromEmail; exports.normalizeDomain = normalizeDomain; exports.isGenericDomain = isGenericDomain; exports.hasGenericEmailDomain = hasGenericEmailDomain; exports.isGenericWebsiteDomain = isGenericWebsiteDomain; exports.DESIGN_PALETTE = DESIGN_PALETTE; exports.hexToRgb = hexToRgb; exports.getContrastRatio = getContrastRatio; exports.extractDominantColor = extractDominantColor; exports.getBestContrastColor = getBestContrastColor; exports.analyzeImageColor = analyzeImageColor; exports.extractImageEdgeColorAsync = extractImageEdgeColorAsync; exports.getProxiedImageUrl = getProxiedImageUrl; exports.urlPathLooksLikeSvg = urlPathLooksLikeSvg; exports.shouldProxyImage = shouldProxyImage; exports.generateImageSizes = generateImageSizes; exports.formatRelativeTime = formatRelativeTime; exports.formatAbsoluteDate = formatAbsoluteDate; exports.formatDateTime = formatDateTime; exports.getDetailedTimeDifference = getDetailedTimeDifference; exports.isToday = isToday; exports.isWithinMinutes = isWithinMinutes; exports.createUTCTimestamp = createUTCTimestamp; exports.SOURCE_ICON_NAMES = SOURCE_ICON_NAMES; exports.getSourceIconName = getSourceIconName; exports.SOURCE_LABELS_BY_TABLE = SOURCE_LABELS_BY_TABLE; exports.getSourceLabel = getSourceLabel; exports.DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID = DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID; exports.defaultTableIdForDocumentType = defaultTableIdForDocumentType; exports.CHAT_ATTACHMENT_VIEW_URL_PREFIX = CHAT_ATTACHMENT_VIEW_URL_PREFIX; exports.CHAT_ATTACHMENT_VIEW_TOKEN_QUERY_PARAM = CHAT_ATTACHMENT_VIEW_TOKEN_QUERY_PARAM; exports.ANTHROPIC_SUPPORTED_IMAGE_MIME = ANTHROPIC_SUPPORTED_IMAGE_MIME; exports.buildChatAttachmentViewUrl = buildChatAttachmentViewUrl; exports.escapeMarkdownInline = escapeMarkdownInline; exports.formatChatAttachmentMarkdownForBubble = formatChatAttachmentMarkdownForBubble; exports.CHAT_ATTACHMENT_VIEW_URL_PREFIX_REGEX_ESCAPED = CHAT_ATTACHMENT_VIEW_URL_PREFIX_REGEX_ESCAPED; exports.CHAT_ATTACHMENT_MARKDOWN_PATTERN = CHAT_ATTACHMENT_MARKDOWN_PATTERN; exports.stripChatAttachmentMarkdown = stripChatAttachmentMarkdown; exports.AUTO_CONTINUATION_DIRECTIVE_PREFIX = AUTO_CONTINUATION_DIRECTIVE_PREFIX; exports.buildAutoContinuationDirective = buildAutoContinuationDirective; exports.flattenAssistantContent = flattenAssistantContent; exports.MESSAGE_TYPE = MESSAGE_TYPE; exports.SCROLL_ANCHOR = SCROLL_ANCHOR; exports.SCROLL_ANCHOR_WIRE_KEY = SCROLL_ANCHOR_WIRE_KEY; exports.parseScrollAnchor = parseScrollAnchor; exports.parseWireCommandOverride = parseWireCommandOverride; exports.sanitizeTitleForChat = sanitizeTitleForChat; exports.formatSingularLookupInvocation = formatSingularLookupInvocation; exports.extractEntityIdFilter = extractEntityIdFilter; exports.buildDiscussAddendum = buildDiscussAddendum; exports.CUSTOM_ITEM_ID = CUSTOM_ITEM_ID; exports.getTaskTypeLabel = getTaskTypeLabel; exports.getStatusColorScheme = getStatusColorScheme; exports.clickupTaskUrl = clickupTaskUrl; exports.isCrossOriginUrl = isCrossOriginUrl; exports.fetchPriorityProp = fetchPriorityProp; exports.AVAILABLE_SVG_ICONS = AVAILABLE_SVG_ICONS; exports.releaseTypeOptions = releaseTypeOptions; exports.releaseStatusOptions = releaseStatusOptions; exports.changelogLabels = changelogLabels; exports.SEMVER_REGEX = SEMVER_REGEX; exports.TASK_TYPE_LABELS = TASK_TYPE_LABELS; exports.TASK_TYPE_TEXT_COLORS = TASK_TYPE_TEXT_COLORS; exports.TMCG_ROLES = TMCG_ROLES; exports.TMCG_ROLE_DISPLAY_NAMES = TMCG_ROLE_DISPLAY_NAMES; exports.TMCG_SOCIAL_PLATFORMS = TMCG_SOCIAL_PLATFORMS; exports.ROADMAP_STATUS_OPTIONS = ROADMAP_STATUS_OPTIONS; exports.DELIVERY_TASK_TYPE_OPTIONS = DELIVERY_TASK_TYPE_OPTIONS; exports.OPENFRAME_DEV_SECTIONS = OPENFRAME_DEV_SECTIONS; exports.ApprovalRequestMessage = ApprovalRequestMessage; exports.ExpandChevron = ExpandChevron; exports.useCollapsible = useCollapsible; exports.getCommandText = getCommandText; exports.ArgRow = ArgRow; exports.ResultBlock = ResultBlock; exports.ApprovalBatchMessage = ApprovalBatchMessage; exports.ContextCompactionDisplay = ContextCompactionDisplay; exports.SimpleMarkdownRenderer = SimpleMarkdownRenderer; exports.ThinkingDisplay = ThinkingDisplay; exports.ErrorMessageDisplay = ErrorMessageDisplay; exports.SquareAvatar = SquareAvatar; exports.resolveTicketStatus = resolveTicketStatus; exports.getTicketStatusConfig = getTicketStatusConfig; exports.getTicketStatusTag = getTicketStatusTag; exports.TicketStatusTag = TicketStatusTag; exports.ChatContainer = ChatContainer; exports.ChatHeader = ChatHeader; exports.ChatContent = ChatContent; exports.ChatFooter = ChatFooter; exports.Textarea = Textarea; exports.ChatTypingIndicator = ChatTypingIndicator; exports.SlashCommandSuggestions = SlashCommandSuggestions; exports.ChatInput = ChatInput; exports.ToolExecutionDisplay = ToolExecutionDisplay; exports.remarkCardLinks = remarkCardLinks; exports.BlockCard = BlockCard; exports.MemoizedChatMessageEnhanced = MemoizedChatMessageEnhanced; exports.ChatMessageList = ChatMessageList; exports.ChatQuickAction = ChatQuickAction; exports.ChatTicketItem = ChatTicketItem; exports.ChatTicketList = ChatTicketList; exports.HoverCard = HoverCard; exports.HoverCardTrigger = HoverCardTrigger; exports.HoverCardContent = HoverCardContent; exports.ModelDisplay = ModelDisplay; exports.DialogListItem = DialogListItem; exports.ChatSidebar = ChatSidebar; exports.decideNewTab = decideNewTab; exports.computeIsNewTab = computeIsNewTab; exports.newTabAnchorAttrs = newTabAnchorAttrs; exports.buildAnchorProps = buildAnchorProps; exports.NEW_TAB_FEATURES = NEW_TAB_FEATURES; exports.isModifierClick = isModifierClick; exports.stripSameOriginToPath = stripSameOriginToPath; exports.resolveExternalNavigation = resolveExternalNavigation; exports.handleChatNavClick = handleChatNavClick; exports.NavLinkAnchorViaRuntime = NavLinkAnchorViaRuntime; exports.SourceActionButton = SourceActionButton; exports.CHAT_ATTACHMENT_MIME_TYPES = CHAT_ATTACHMENT_MIME_TYPES; exports.CHAT_ATTACHMENT_CONCURRENT_UPLOADS_PER_USER = CHAT_ATTACHMENT_CONCURRENT_UPLOADS_PER_USER; exports.ChatAttachmentAddButton = ChatAttachmentAddButton; exports.ChatAttachmentChipStrip = ChatAttachmentChipStrip; exports.EMPTY_AUTHOR_PLACEHOLDER = EMPTY_AUTHOR_PLACEHOLDER; exports.EntityMetadataValueCell = EntityMetadataValueCell; exports.EntityMetadataAuthorCell = EntityMetadataAuthorCell; exports.EntityAuthorCard = EntityAuthorCard; exports.BlogImagePlaceholder = BlogImagePlaceholder; exports.PlatformBadge = PlatformBadge; exports.AdminContentCard = AdminContentCard; exports.Tabs = Tabs; exports.TabsList = TabsList; exports.TabsTrigger = TabsTrigger; exports.TabsContent = TabsContent; exports.extractYouTubeId = extractYouTubeId; exports.Video = Video; exports.RATIO_GRID_CLASS = RATIO_GRID_CLASS; exports.RATIO_DISPLAY_GRID_CLASS = RATIO_DISPLAY_GRID_CLASS; exports.RatioTabs = RatioTabs; exports.detectAspectRatio = detectAspectRatio; exports.ratioToCategory = ratioToCategory; exports.groupByAspectRatio = groupByAspectRatio; exports.VideoBitesDisplay = VideoBitesDisplay; exports.VideoBiteCard = VideoBiteCard; exports.EntityVideoSection = EntityVideoSection; exports.ChatVideoEntityCard = ChatVideoEntityCard; exports.InteractiveCard = InteractiveCard; exports.statusBadgeVariants = statusBadgeVariants; exports.StatusBadge = StatusBadge; exports.ProductReleaseCard = ProductReleaseCard; exports.ProductReleaseCardSkeleton = ProductReleaseCardSkeleton; exports.COMPACT_CARD_OUTER = COMPACT_CARD_OUTER; exports.COMPACT_CARD_OUTER_STATIC = COMPACT_CARD_OUTER_STATIC; exports.COMPACT_CARD_SKELETON_OUTER = COMPACT_CARD_SKELETON_OUTER; exports.COMPACT_CARD_IMAGE_SLOT = COMPACT_CARD_IMAGE_SLOT; exports.COMPACT_CARD_SKELETON_IMAGE_SLOT = COMPACT_CARD_SKELETON_IMAGE_SLOT; exports.COMPACT_CARD_ICON_SLOT = COMPACT_CARD_ICON_SLOT; exports.COMPACT_CARD_TEXT_COL = COMPACT_CARD_TEXT_COL; exports.COMPACT_CARD_TITLE_ROW = COMPACT_CARD_TITLE_ROW; exports.COMPACT_CARD_META_ROW_BOX = COMPACT_CARD_META_ROW_BOX; exports.COMPACT_CARD_TITLE = COMPACT_CARD_TITLE; exports.COMPACT_CARD_SUBTITLE = COMPACT_CARD_SUBTITLE; exports.COMPACT_CARD_SUMMARY = COMPACT_CARD_SUMMARY; exports.COMPACT_CARD_META_ROW = COMPACT_CARD_META_ROW; exports.COMPACT_CARD_ROW_FILLER = COMPACT_CARD_ROW_FILLER; exports.safeHref = safeHref; exports.BlogCardSkeleton = BlogCardSkeleton; exports.BlogCard = BlogCard; exports.CaseStudyCardSkeleton = CaseStudyCardSkeleton; exports.CaseStudyCard = CaseStudyCard; exports.CustomerInterviewCardSkeleton = CustomerInterviewCardSkeleton; exports.CustomerInterviewCard = CustomerInterviewCard; exports.formatInvestorUpdatePeriod = formatInvestorUpdatePeriod; exports.InvestorUpdateCardSkeleton = InvestorUpdateCardSkeleton; exports.InvestorUpdateCard = InvestorUpdateCard; exports.OnboardingGuideCardSkeleton = OnboardingGuideCardSkeleton; exports.OnboardingGuideCard = OnboardingGuideCard; exports.RoadmapVoteButton = RoadmapVoteButton; exports.ImageGalleryModal = ImageGalleryModal; exports.TaskTypeIcon = TaskTypeIcon; exports.RoadmapCardSkeleton = RoadmapCardSkeleton2; exports.RoadmapCard = RoadmapCard; exports.GitHubActivityCard = GitHubActivityCard; exports.GitHubActivityCardSkeleton = GitHubActivityCardSkeleton; exports.SlackMessageCard = SlackMessageCard; exports.SlackMessageCardSkeleton = SlackMessageCardSkeleton; exports.HubspotTicketCard = HubspotTicketCard; exports.HubspotTicketCardSkeleton = HubspotTicketCardSkeleton; exports.DataRoomDocCard = DataRoomDocCard; exports.DataRoomDocCardSkeleton = DataRoomDocCardSkeleton; exports.ProgramCardSkeleton = ProgramCardSkeleton; exports.ProgramCard = ProgramCard; exports.CampaignCardAdmin = CampaignCardAdmin; exports.CampaignCardAdminSkeleton = CampaignCardAdminSkeleton; exports.GenericEntityCard = GenericEntityCard; exports.GenericEntityCardSkeleton = GenericEntityCardSkeleton; exports.useChatCardItem = useChatCardItem; exports.resolveSourceRowCTA = resolveSourceRowCTA; exports.resolveSourceIcon = resolveSourceIcon; exports.ChatCardLoader = ChatCardLoader; exports.renderChatInlineEntityCard = renderChatInlineEntityCard; exports.CHAT_TYPE = CHAT_TYPE; exports.OWNER_TYPE = OWNER_TYPE; exports.MESSAGE_ROLE = MESSAGE_ROLE; exports.ASSISTANT_TYPE = ASSISTANT_TYPE; exports.AUTHOR_TYPE = AUTHOR_TYPE; exports.APPROVAL_STATUS = APPROVAL_STATUS; exports.CONNECTION_STATUS = CONNECTION_STATUS; exports.buildChatRefKey = buildChatRefKey; exports.isStructuredContent = isStructuredContent; exports.normalizeContent = normalizeContent2; exports.NETWORK_CONFIG = NETWORK_CONFIG; exports.transformEventToProgram = transformEventToProgram; exports.transformPodcastToProgram = transformPodcastToProgram; exports.transformWebinarToProgram = transformWebinarToProgram; exports.useChunkCatchup = useChunkCatchup; exports.useJetStreamDialogSubscription = useJetStreamDialogSubscription; exports.useNatsDialogSubscription = useNatsDialogSubscription; exports.buildNatsWsUrl = buildNatsWsUrl; exports.parseChunkToAction = parseChunkToAction; exports.isControlChunk = isControlChunk; exports.isErrorChunk = isErrorChunk; exports.isMetadataChunk = isMetadataChunk; exports.extractTextFromChunk = extractTextFromChunk; exports.MessageSegmentAccumulator = MessageSegmentAccumulator; exports.createMessageSegmentAccumulator = createMessageSegmentAccumulator; exports.useRealtimeChunkProcessor = useRealtimeChunkProcessor; exports.fetchSlashCommands = fetchSlashCommands; exports.useSlashCommands = useSlashCommands; exports.getChatProxyAuth = getChatProxyAuth; exports.getPersistedProxyEmail = getPersistedProxyEmail; exports.setChatProxyAuth = setChatProxyAuth; exports.clearChatProxyAuth = clearChatProxyAuth; exports.applyProxyAuth = applyProxyAuth; exports.chatAuthedFetch = chatAuthedFetch; exports.useChatAttachments = useChatAttachments; exports.useChatAttachmentImageGallery = useChatAttachmentImageGallery; exports.useChatIdentity = useChatIdentity; exports.useCloseOnNavigation = useCloseOnNavigation; exports.useSSE = useSSE; exports.useChat = useChat; exports.useSseChatAdapter = useSseChatAdapter; exports.useNatsChatAdapter = useNatsChatAdapter; exports.useUnifiedChat = useUnifiedChat; exports.useProxiedImageUrl = useProxiedImageUrl; exports.processHistoricalMessages = processHistoricalMessages; exports.extractErrorMessages = extractErrorMessages; exports.processHistoricalMessagesWithErrors = processHistoricalMessagesWithErrors; exports.extractIncompleteMessageState = extractIncompleteMessageState; exports.CHIP_ACTION_BUTTON_CLASS = CHIP_ACTION_BUTTON_CLASS; exports.chatChipClass = chatChipClass; exports.HoverDropdown = HoverDropdown; exports.EmbeddableChat = EmbeddableChat; exports.DynamicThemeProvider = DynamicThemeProvider; exports.useDynamicTheme = useDynamicTheme; exports.THEME_STORAGE_KEY = THEME_STORAGE_KEY; exports.THEME_ATTRIBUTE = THEME_ATTRIBUTE; exports.DEFAULT_THEME = DEFAULT_THEME; exports.ThemeProvider = ThemeProvider; exports.useTheme = useTheme; exports.useThemeToggle = useThemeToggle; exports.ArrayEntryManager = ArrayEntryManager; exports.ProviderButton = ProviderButton; exports.AuthProvidersList = AuthProvidersList; exports.ChangelogManager = ChangelogManager; exports.ChangelogSectionsManager = ChangelogSectionsManager; exports.ClickUpTasksManager = ClickUpTasksManager; exports.CommandBox = CommandBox; exports.ErrorBoundary = ErrorBoundary; exports.badgeVariants = badgeVariants; exports.Badge = Badge; exports.SectionSelector = SectionSelector; exports.FigmaPrototypeViewer = FigmaPrototypeViewer; exports.FiltersDropdown = FiltersDropdown; exports.useFiltersDropdown = useFiltersDropdown; exports.GitHubReleasesManager = GitHubReleasesManager; exports.KnowledgeBaseLinksManager = KnowledgeBaseLinksManager; exports.Progress = Progress; exports.LoadingProvider = LoadingProvider; exports.useLoading = useLoading; exports.MediaGalleryManager = MediaGalleryManager; exports.MoreAboutButton = MoreAboutButton; exports.OSTypeBadge = OSTypeBadge; exports.OSTypeIcon = OSTypeIcon; exports.OSTypeLabel = OSTypeLabel; exports.OSTypeBadgeGroup = OSTypeBadgeGroup; exports.ParallaxImageShowcase = ParallaxImageShowcase; exports.PathsDisplay = PathsDisplay; exports.OPENFRAME_PATHS = OPENFRAME_PATHS; exports.getOpenFramePaths = getOpenFramePaths; exports.PlatformFilterComponent = PlatformFilterComponent; exports.PushButtonSelector = PushButtonSelector; exports.ReleaseMediaManager = ReleaseMediaManager; exports.SelectButton = SelectButton; exports.SEOEditorPreview = SEOEditorPreview; exports.SocialLinksManager = SocialLinksManager; exports.StartWithOpenFrameButton = StartWithOpenFrameButton; exports.StatusFilterComponent = StatusFilterComponent; exports.TagsSelector = TagsSelector; exports.VideoSourceSelector = VideoSourceSelector; exports.ConfidenceBadge = ConfidenceBadge; exports.TranscriptSummaryEditor = TranscriptSummaryEditor; exports.AIEnrichButton = AIEnrichButton; exports.AIWarningsSection = AIWarningsSection; exports.AIEnrichSection = AIEnrichSection; exports.HighlightVideoSection = HighlightVideoSection; exports.HighlightConfigSection = HighlightConfigSection; exports.EntitySummaryEditor = EntitySummaryEditor; exports.AIStatusIndicator = AIStatusIndicator; exports.AIRequiredBadge = AIRequiredBadge; exports.TranscribeSummarizeSection = TranscribeSummarizeSection; exports.VideoClipsSection = VideoClipsSection; exports.HighlightGenerationSection = HighlightGenerationSection; exports.HighlightVideoPreview = HighlightVideoPreview; exports.TranscribeAndSummarizeCombinedSection = TranscribeAndSummarizeCombinedSection; exports.HighlightVideoCombinedSection = HighlightVideoCombinedSection; exports.ViewToggle = ViewToggle; exports.PolicyConfigurationPanel = PolicyConfigurationPanel; exports.PhoneInput = PhoneInput; exports.WaitlistForm = WaitlistForm; exports.NotificationsProvider = NotificationsProvider; exports.useNotifications = useNotifications; exports.useOptionalNotifications = useOptionalNotifications; exports.Drawer = Drawer; exports.DrawerTrigger = DrawerTrigger; exports.DrawerClose = DrawerClose; exports.DrawerPortal = DrawerPortal; exports.DrawerOverlay = DrawerOverlay; exports.DrawerContent = DrawerContent; exports.DrawerHeader = DrawerHeader; exports.DrawerTitle = DrawerTitle; exports.DrawerDescription = DrawerDescription; exports.DrawerBody = DrawerBody; exports.DrawerFooter = DrawerFooter; exports.Switch = Switch; exports.NotificationTile = NotificationTile; exports.NotificationDrawer = NotificationDrawer; exports.BoardColumnHeader = BoardColumnHeader; exports.tintOnDark = tintOnDark; exports.TicketCard = TicketCard; exports.TicketCardSkeleton = TicketCardSkeleton; exports.BoardColumn = BoardColumn; exports.useBoardCollapse = useBoardCollapse; exports.Board = Board; exports.columnFromTicketStatus = columnFromTicketStatus; exports.groupTicketsByStatus = groupTicketsByStatus; exports.Header = Header; exports.HeaderSkeleton = HeaderSkeleton; exports.ClientOnlyHeader = ClientOnlyHeader; exports.MobileNavPanel = MobileNavPanel; exports.SlidingSidebar = SlidingSidebar; exports.StickySectionNav = StickySectionNav; exports.useSectionNavigation = useSectionNavigation; exports.NavigationSidebar = NavigationSidebar; exports.HeaderButton = HeaderButton; exports.HeaderGlobalSearch = HeaderGlobalSearch; exports.HeaderOrganizationFilter = HeaderOrganizationFilter; exports.AppHeader = AppHeader; exports.MobileBurgerMenu = MobileBurgerMenu; exports.AppLayout = AppLayout; exports.SoftwareInfo = SoftwareInfo; exports.SoftwareSourceBadge = SoftwareSourceBadge; exports.CveLink = CveLink; exports.ToolBadge = ToolBadge; exports.ShellTypeBadge = ShellTypeBadge; exports.ScriptInfoSection = ScriptInfoSection; exports.ScriptArguments = ScriptArguments; exports.AnnouncementBar = AnnouncementBar; exports.VendorIcon = VendorIcon; exports.CategoriesCart = CategoriesCart; exports.CategoryCard = CategoryCard; exports.VendorDisplayButton = VendorDisplayButton; exports.setRealAuthHook = setRealAuthHook; exports.useAuth = useAuth; exports.AuthProvider = AuthProvider; exports.CommentCard = CommentCard; exports.ContentLoadingContainer = ContentLoadingContainer; exports.useContentLoading = useContentLoading; exports.DynamicSkeleton = DynamicSkeleton; exports.SkeletonPresets = SkeletonPresets; exports.PlatformSkeletonContainer = PlatformSkeletonContainer; exports.ProgressiveSkeleton = ProgressiveSkeleton; exports.EmptyState = EmptyState3; exports.ChevronButton = ChevronButton; exports.FaqAccordion = FaqAccordion; exports.FilterChip = FilterChip; exports.SocialIconRow = SocialIconRow; exports.Footer = Footer; exports.useUnifiedFiltering = useUnifiedFiltering; exports.vendorFilterConfig = vendorFilterConfig; exports.blogFilterConfig = blogFilterConfig; exports.Pagination = Pagination; exports.PaginationContent = PaginationContent; exports.PaginationItem = PaginationItem; exports.PaginationLink = PaginationLink; exports.PaginationEllipsis = PaginationEllipsis; exports.PaginationPrevious = PaginationPrevious; exports.PaginationNext = PaginationNext; exports.UnifiedPagination = UnifiedPagination; exports.FooterWaitlistButton = FooterWaitlistButton; exports.HeroImageUploader = HeroImageUploader; exports.ResponsiveIconsBlock = ResponsiveIconsBlock; exports.Slider = Slider; exports.ImageCropper = ImageCropper; exports.MediaCarousel = MediaCarousel; exports.MetricValue = MetricValue; exports.MSPDisplay = MSPDisplay; exports.PersistentFilterControls = PersistentFilterControls; exports.PersistentSearchContainer = PersistentSearchContainer; exports.PersistentSidebar = PersistentSidebar; exports.PersistentMobileDropdown = PersistentMobileDropdown; exports.PersistentPagination = PersistentPagination; exports.usePaginationLoading = usePaginationLoading; exports.PersistentPaginationWrapper = PersistentPaginationWrapper; exports.PRICING_STYLES = PRICING_STYLES; exports.PricingDisplay = PricingDisplay; exports.formatPricingForDisplay = formatPricingForDisplay; exports.ResultsCount = ResultsCount; exports.VendorTag = VendorTag; exports.SelectionSourceBadge = SelectionSourceBadge; exports.UserDisplay = UserDisplay; exports.UnifiedSkeleton = UnifiedSkeleton; exports.TextSkeleton = TextSkeleton; exports.InteractiveSkeleton = InteractiveSkeleton; exports.MediaSkeleton = MediaSkeleton; exports.CardSkeleton = CardSkeleton; exports.CardSkeletonGrid = CardSkeletonGrid; exports.AnnouncementBarSkeleton = AnnouncementBarSkeleton; exports.HeroSkeleton = HeroSkeleton; exports.SearchContainerSkeleton = SearchContainerSkeleton; exports.CategorySidebarSkeleton = CategorySidebarSkeleton; exports.BreadcrumbSkeleton = BreadcrumbSkeleton; exports.ResultsHeaderSkeleton = ResultsHeaderSkeleton; exports.TwoColumnLayoutSkeleton = TwoColumnLayoutSkeleton; exports.ArticleLayoutSkeleton = ArticleLayoutSkeleton; exports.VendorDetailLayoutSkeleton = VendorDetailLayoutSkeleton; exports.StatsSectionSkeleton = StatsSectionSkeleton; exports.BlogCardGridSkeleton = BlogCardGridSkeleton; exports.VendorGridSkeleton = VendorGridSkeleton; exports.SlackCommunitySkeleton = SlackCommunitySkeleton; exports.ParagraphSkeleton = ParagraphSkeleton; exports.ListSkeleton = ListSkeleton; exports.TableSkeleton = TableSkeleton; exports.FormSkeleton = FormSkeleton; exports.NavigationSkeleton = NavigationSkeleton; exports.ProfileSkeleton = ProfileSkeleton; exports.CommentSkeleton = CommentSkeleton; exports.FeatureListSkeleton = FeatureListSkeleton; exports.TimelineSkeleton = TimelineSkeleton; exports.PricingSkeleton = PricingSkeleton; exports.ProfileLoadingSkeleton = ProfileLoadingSkeleton; exports.MspProfileFormSkeleton = MspProfileFormSkeleton; exports.CategoryCardSkeleton = CategoryCardSkeleton; exports.CategoryVendorSelectorSkeleton = CategoryVendorSelectorSkeleton; exports.WizardLayoutSkeleton = WizardLayoutSkeleton; exports.MarginReportSkeleton = MarginReportSkeleton; exports.UsersGridSkeleton = UsersGridSkeleton; exports.OrganizationIconSkeleton = OrganizationIconSkeleton; exports.OrganizationCardSkeleton = OrganizationCardSkeleton; exports.OrganizationCardSkeletonGrid = OrganizationCardSkeletonGrid; exports.DeviceCardSkeleton = DeviceCardSkeleton; exports.DeviceCardSkeletonGrid = DeviceCardSkeletonGrid; exports.VendorPageSkeleton = VendorPageSkeleton; exports.CheckIcon = CheckIcon2; exports.XIcon = XIcon; exports.MinusIcon = MinusIcon; exports.CheckCircleIcon = CheckCircleIcon3; exports.XCircleIcon = XCircleIcon; exports.YesNoDisplay = YesNoDisplay; exports.evaluateFeatureValue = evaluateFeatureValue; exports.MadeWithLove = MadeWithLove; exports.DateTimePicker = DateTimePicker; exports.OnboardingStepCard = OnboardingStepCard; exports.OnboardingWalkthrough = OnboardingWalkthrough; exports.PageShell = PageShell; exports.ArticleDetailLayout = ArticleDetailLayout; exports.ReleaseChangelogSection = ReleaseChangelogSection; exports.ActionsMenu = ActionsMenu; exports.ActionsMenuDropdown = ActionsMenuDropdown; exports.PageActions = PageActions; exports.usePageActionsBottomPadding = usePageActionsBottomPadding; exports.PageContainer = PageContainer; exports.ListPageContainer = ListPageContainer; exports.DetailPageContainer = DetailPageContainer; exports.FormPageContainer = FormPageContainer; exports.ContentPageContainer = ContentPageContainer; exports.DetailPageSkeleton = DetailPageSkeleton; exports.ReleaseDetailPage = ReleaseDetailPage; exports.ReleaseDetailSkeleton = ReleaseDetailSkeleton; exports.DevSectionView = DevSectionView; exports.DevSectionPage = DevSectionPage; exports.useRoadmapVoting = useRoadmapVoting; exports.RoadmapGrid = RoadmapGrid; exports.RoadmapGridSkeleton = RoadmapGridSkeleton; exports.DeliveryTable = DeliveryTable; exports.ErrorState = ErrorState; exports.PageError = PageError; exports.LoadError = LoadError; exports.NotFoundError = NotFoundError; exports.DeliveryLists = DeliveryLists; exports.useLegalDocs = useLegalDocs; exports.LegalDocumentPage = LegalDocumentPage; exports.InfoCard = InfoCard; exports.InfoRow = InfoRow; exports.InputTrigger = InputTrigger; exports.MediaTypeSelector = MediaTypeSelector; exports.PageLoader = PageLoader; exports.CompactPageLoader = CompactPageLoader; exports.ProgressBar = ProgressBar; exports.RadioGroup = RadioGroup2; exports.RadioGroupItem = RadioGroupItem; exports.RadioGroupBlock = RadioGroupBlock; exports.TagsInput = TagsInput; exports.TagsManager = TagsManager; exports.AlertDialog = AlertDialog; exports.AlertDialogTrigger = AlertDialogTrigger; exports.AlertDialogPortal = AlertDialogPortal; exports.AlertDialogOverlay = AlertDialogOverlay; exports.AlertDialogContent = AlertDialogContent; exports.AlertDialogHeader = AlertDialogHeader; exports.AlertDialogFooter = AlertDialogFooter; exports.AlertDialogTitle = AlertDialogTitle; exports.AlertDialogDescription = AlertDialogDescription; exports.AlertDialogAction = AlertDialogAction; exports.AlertDialogCancel = AlertDialogCancel; exports.AspectRatio = AspectRatio; exports.Dialog = Dialog; exports.DialogTrigger = DialogTrigger; exports.DialogPortal = DialogPortal; exports.DialogClose = DialogClose; exports.DialogOverlay = DialogOverlay; exports.DialogContent = DialogContent; exports.DialogHeader = DialogHeader; exports.DialogFooter = DialogFooter; exports.DialogTitle = DialogTitle; exports.DialogDescription = DialogDescription; exports.Modal = Modal2; exports.ModalContent = ModalContent; exports.ModalHeader = ModalHeader2; exports.ModalTitle = ModalTitle2; exports.ModalFooter = ModalFooter; exports.Modal2 = Modal3; exports.ModalContent2 = ModalContent2; exports.ModalHeader2 = ModalHeader3; exports.ModalTitle2 = ModalTitle3; exports.ModalFooter2 = ModalFooter2; exports.Separator = Separator3; exports.Sheet = Sheet; exports.SheetTrigger = SheetTrigger; exports.SheetClose = SheetClose; exports.SheetPortal = SheetPortal; exports.SheetOverlay = SheetOverlay; exports.SheetContent = SheetContent; exports.SheetHeader = SheetHeader; exports.SheetFooter = SheetFooter; exports.SheetTitle = SheetTitle; exports.SheetDescription = SheetDescription; exports.Accordion = Accordion; exports.AccordionItem = AccordionItem; exports.AccordionTrigger = AccordionTrigger; exports.AccordionContent = AccordionContent; exports.Breadcrumb = Breadcrumb; exports.BreadcrumbList = BreadcrumbList; exports.BreadcrumbItem = BreadcrumbItem; exports.BreadcrumbLink = BreadcrumbLink; exports.BreadcrumbPage = BreadcrumbPage; exports.BreadcrumbSeparator = BreadcrumbSeparator; exports.BreadcrumbEllipsis = BreadcrumbEllipsis; exports.MenubarMenu = MenubarMenu; exports.MenubarGroup = MenubarGroup; exports.MenubarPortal = MenubarPortal; exports.MenubarSub = MenubarSub; exports.MenubarRadioGroup = MenubarRadioGroup; exports.Menubar = Menubar; exports.MenubarTrigger = MenubarTrigger; exports.MenubarSubTrigger = MenubarSubTrigger; exports.MenubarSubContent = MenubarSubContent; exports.MenubarContent = MenubarContent; exports.MenubarItem = MenubarItem; exports.MenubarCheckboxItem = MenubarCheckboxItem; exports.MenubarRadioItem = MenubarRadioItem; exports.MenubarLabel = MenubarLabel; exports.MenubarSeparator = MenubarSeparator; exports.MenubarShortcut = MenubarShortcut; exports.NavigationMenu = NavigationMenu; exports.NavigationMenuList = NavigationMenuList; exports.NavigationMenuItem = NavigationMenuItem; exports.navigationMenuTriggerStyle = navigationMenuTriggerStyle; exports.NavigationMenuTrigger = NavigationMenuTrigger; exports.NavigationMenuContent = NavigationMenuContent; exports.NavigationMenuLink = NavigationMenuLink; exports.NavigationMenuViewport = NavigationMenuViewport; exports.NavigationMenuIndicator = NavigationMenuIndicator; exports.TabContent = TabContent; exports.TabNavigation = TabNavigation; exports.getTabById = getTabById; exports.getTabComponent = getTabComponent; exports.Alert = Alert; exports.AlertTitle = AlertTitle; exports.AlertDescription = AlertDescription; exports.StatusIndicator = StatusIndicator; exports.FilterCheckboxItem = FilterCheckboxItem; exports.TagKeyValueFilter = TagKeyValueFilter; exports.FilterModal = FilterModal; exports.ListPageLayout = ListPageLayout; exports.EntityImage = EntityImage; exports.TitleBlock = TitleBlock; exports.PageLayout = PageLayout; exports.toggleVariants = toggleVariants; exports.Toggle = Toggle; exports.ToggleGroup = ToggleGroup; exports.ToggleGroupItem = ToggleGroupItem; exports.BenefitCard = BenefitCard; exports.BenefitCardGrid = BenefitCardGrid; exports.BrandAssociationCard = BrandAssociationCard; exports.BrandAssociationGrid = BrandAssociationGrid; exports.BulletList = BulletList; exports.CircularProgress = CircularProgress; exports.FloatingTooltip = FloatingTooltip; exports.DashboardInfoCard = DashboardInfoCard; exports.DeviceCard = DeviceCard; exports.DeviceCardCompact = DeviceCardCompact; exports.FeatureCardGrid = FeatureCardGrid; exports.FeatureList = FeatureList; exports.TruncateText = TruncateText; exports.HighlightCard = HighlightCard; exports.HighlightCardGrid = HighlightCardGrid; exports.IconsBlock = IconsBlock; exports.MoreActionsMenu = MoreActionsMenu; exports.DropdownButton = DropdownButton; exports.OrganizationCard = OrganizationCard; exports.ServiceCard = ServiceCard; exports.TabSelector = TabSelector; exports.TitleContentBlock = TitleContentBlock; exports.TooltipProvider = TooltipProvider; exports.Tooltip = Tooltip; exports.TooltipTrigger = TooltipTrigger; exports.TooltipContent = TooltipContent; exports.ContentLoader = ContentLoader; exports.CardLoader = CardLoader; exports.FormLoader = FormLoader; exports.DetailLoader = DetailLoader; exports.ListLoader = ListLoader; exports.CursorPagination = CursorPagination; exports.CursorPaginationSimple = CursorPaginationSimple; exports.TableEmptyState = TableEmptyState; exports.TableHeader = TableHeader; exports.TableCell = TableCell; exports.TableCardSkeleton = TableCardSkeleton; exports.TableRow = TableRow; exports.Table = Table; exports.TableDescriptionCell = TableDescriptionCell; exports.TableTimestampCell = TableTimestampCell; exports.QueryReportTableHeader = QueryReportTableHeader; exports.QueryReportTableRow = QueryReportTableRow; exports.QueryReportTableSkeleton = QueryReportTableSkeleton; exports.deriveColumns = deriveColumns; exports.exportToCSV = exportToCSV; exports.QueryReportTable = QueryReportTable; exports.useDataTableContext = useDataTableContext; exports.DataTableRoot = DataTableRoot; exports.getHideClasses = getHideClasses2; exports.alignJustify = alignJustify; exports.multiSelectFilterFn = multiSelectFilterFn; exports.DataTableHeader = DataTableHeader; exports.DataTableEmpty = DataTableEmpty; exports.ROW_HEIGHT_DESKTOP = ROW_HEIGHT_DESKTOP2; exports.ROW_HEIGHT_MOBILE = ROW_HEIGHT_MOBILE2; exports.DataTableSkeleton = DataTableSkeleton; exports.DataTableRow = DataTableRow; exports.DataTableBody = DataTableBody; exports.DataTableInfiniteFooter = DataTableInfiniteFooter; exports.DataTableCursorFooter = DataTableCursorFooter; exports.DataTableRowCount = DataTableRowCount; exports.useDataTable = useDataTable; exports.DataTable = DataTable; exports.flexRender = _reacttable.flexRender; exports.createColumnHelper = _reacttable.createColumnHelper; exports.getCoreRowModel = _reacttable.getCoreRowModel; exports.getExpandedRowModel = _reacttable.getExpandedRowModel; exports.getFacetedRowModel = _reacttable.getFacetedRowModel; exports.getFacetedUniqueValues = _reacttable.getFacetedUniqueValues; exports.getFilteredRowModel = _reacttable.getFilteredRowModel; exports.getGroupedRowModel = _reacttable.getGroupedRowModel; exports.getPaginationRowModel = _reacttable.getPaginationRowModel; exports.getSortedRowModel = _reacttable.getSortedRowModel; exports.SearchInput = SearchInput; exports.FilterListItem = FilterListItem; exports.FilterList = FilterList; exports.TagSearchInput = TagSearchInput; exports.MarkdownEditor = MarkdownEditor; exports.FileUpload = FileUpload; exports.ImageUploader = ImageUploader; exports.AssigneeDropdown = AssigneeDropdown; exports.TicketDetailSection = TicketDetailSection; exports.TicketAttachmentsList = TicketAttachmentsList; exports.TicketNoteCard = TicketNoteCard; exports.TicketNotesSection = TicketNotesSection; exports.TicketInfoSection = TicketInfoSection; exports.LOG_SEVERITY_COLORS = LOG_SEVERITY_COLORS; exports.LOG_SEVERITY_LABELS = LOG_SEVERITY_LABELS; exports.LogSeverityDot = LogSeverityDot; exports.LogsList = LogsList; exports.assets = assets;
44800
+ //# sourceMappingURL=chunk-ZRSOPDAV.cjs.map