@flamingo-stack/openframe-frontend-core 0.0.206 → 0.0.207-snapshot.20260526154403

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 (137) hide show
  1. package/dist/{chunk-OLTGB32E.js → chunk-2HMZSCJY.js} +3179 -2078
  2. package/dist/chunk-2HMZSCJY.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-YGOJIDL5.cjs → chunk-C5EC5AZM.cjs} +1660 -559
  6. package/dist/chunk-C5EC5AZM.cjs.map +1 -0
  7. package/dist/chunk-VFKQMAUF.cjs +12 -0
  8. package/dist/chunk-VFKQMAUF.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/hooks/index.d.ts +3 -0
  12. package/dist/components/chat/hooks/index.d.ts.map +1 -1
  13. package/dist/components/chat/hooks/use-embedded-chat.d.ts +10 -169
  14. package/dist/components/chat/hooks/use-embedded-chat.d.ts.map +1 -1
  15. package/dist/components/chat/hooks/use-nats-chat-adapter.d.ts +85 -0
  16. package/dist/components/chat/hooks/use-nats-chat-adapter.d.ts.map +1 -0
  17. package/dist/components/chat/hooks/use-realtime-chunk-processor.d.ts.map +1 -1
  18. package/dist/components/chat/hooks/use-sse-chat-adapter.d.ts +124 -0
  19. package/dist/components/chat/hooks/use-sse-chat-adapter.d.ts.map +1 -0
  20. package/dist/components/chat/hooks/use-unified-chat.d.ts +33 -0
  21. package/dist/components/chat/hooks/use-unified-chat.d.ts.map +1 -0
  22. package/dist/components/chat/index.cjs +8 -2
  23. package/dist/components/chat/index.cjs.map +1 -1
  24. package/dist/components/chat/index.js +11 -5
  25. package/dist/components/chat/types/api.types.d.ts +17 -1
  26. package/dist/components/chat/types/api.types.d.ts.map +1 -1
  27. package/dist/components/chat/types/index.d.ts +1 -0
  28. package/dist/components/chat/types/index.d.ts.map +1 -1
  29. package/dist/components/chat/types/unified-chat-state.types.d.ts +185 -0
  30. package/dist/components/chat/types/unified-chat-state.types.d.ts.map +1 -0
  31. package/dist/components/features/index.cjs +3 -2
  32. package/dist/components/features/index.cjs.map +1 -1
  33. package/dist/components/features/index.js +2 -1
  34. package/dist/components/index.cjs +26 -2
  35. package/dist/components/index.cjs.map +1 -1
  36. package/dist/components/index.d.ts +4 -0
  37. package/dist/components/index.d.ts.map +1 -1
  38. package/dist/components/index.js +27 -3
  39. package/dist/components/navigation/index.cjs +3 -2
  40. package/dist/components/navigation/index.cjs.map +1 -1
  41. package/dist/components/navigation/index.js +2 -1
  42. package/dist/components/shared/delivery/delivery-lists.d.ts +16 -0
  43. package/dist/components/shared/delivery/delivery-lists.d.ts.map +1 -0
  44. package/dist/components/shared/delivery/delivery-table.d.ts +12 -0
  45. package/dist/components/shared/delivery/delivery-table.d.ts.map +1 -0
  46. package/dist/components/shared/delivery/index.d.ts +3 -0
  47. package/dist/components/shared/delivery/index.d.ts.map +1 -0
  48. package/dist/components/shared/dev-section/dev-section-page.d.ts +31 -0
  49. package/dist/components/shared/dev-section/dev-section-page.d.ts.map +1 -0
  50. package/dist/components/shared/dev-section/dev-section-view.d.ts +34 -0
  51. package/dist/components/shared/dev-section/dev-section-view.d.ts.map +1 -0
  52. package/dist/components/shared/dev-section/index.d.ts +3 -0
  53. package/dist/components/shared/dev-section/index.d.ts.map +1 -0
  54. package/dist/components/shared/legal-document/index.d.ts +10 -0
  55. package/dist/components/shared/legal-document/index.d.ts.map +1 -0
  56. package/dist/components/shared/legal-document/legal-document-page.d.ts +66 -0
  57. package/dist/components/shared/legal-document/legal-document-page.d.ts.map +1 -0
  58. package/dist/components/shared/legal-document/use-legal-docs.d.ts +40 -0
  59. package/dist/components/shared/legal-document/use-legal-docs.d.ts.map +1 -0
  60. package/dist/components/shared/product-release/index.d.ts +2 -1
  61. package/dist/components/shared/product-release/index.d.ts.map +1 -1
  62. package/dist/components/shared/product-release/release-detail-page.d.ts +11 -7
  63. package/dist/components/shared/product-release/release-detail-page.d.ts.map +1 -1
  64. package/dist/components/shared/roadmap/index.d.ts +18 -0
  65. package/dist/components/shared/roadmap/index.d.ts.map +1 -0
  66. package/dist/components/shared/roadmap/roadmap-grid-skeleton.d.ts +24 -0
  67. package/dist/components/shared/roadmap/roadmap-grid-skeleton.d.ts.map +1 -0
  68. package/dist/components/shared/roadmap/roadmap-grid.d.ts +18 -0
  69. package/dist/components/shared/roadmap/roadmap-grid.d.ts.map +1 -0
  70. package/dist/components/shared/roadmap/use-roadmap-voting.d.ts +25 -0
  71. package/dist/components/shared/roadmap/use-roadmap-voting.d.ts.map +1 -0
  72. package/dist/components/ui/index.cjs +8 -2
  73. package/dist/components/ui/index.cjs.map +1 -1
  74. package/dist/components/ui/index.js +11 -5
  75. package/dist/components/ui/release-changelog-section.d.ts +13 -2
  76. package/dist/components/ui/release-changelog-section.d.ts.map +1 -1
  77. package/dist/embed-shims/index.cjs +1 -6
  78. package/dist/embed-shims/index.cjs.map +1 -1
  79. package/dist/embed-shims/index.js +1 -6
  80. package/dist/embed-shims/index.js.map +1 -1
  81. package/dist/index.cjs +18 -2
  82. package/dist/index.cjs.map +1 -1
  83. package/dist/index.js +19 -3
  84. package/dist/types/delivery.d.ts +49 -0
  85. package/dist/types/delivery.d.ts.map +1 -0
  86. package/dist/types/index.cjs +13 -0
  87. package/dist/types/index.cjs.map +1 -1
  88. package/dist/types/index.d.ts +1 -0
  89. package/dist/types/index.d.ts.map +1 -1
  90. package/dist/types/index.js +12 -1
  91. package/dist/types/index.js.map +1 -1
  92. package/dist/utils/dev-sections/index.d.ts +11 -0
  93. package/dist/utils/dev-sections/index.d.ts.map +1 -0
  94. package/dist/utils/dev-sections/openframe-dev-sections.d.ts +209 -0
  95. package/dist/utils/dev-sections/openframe-dev-sections.d.ts.map +1 -0
  96. package/dist/utils/index.cjs +82 -0
  97. package/dist/utils/index.cjs.map +1 -1
  98. package/dist/utils/index.d.ts +1 -0
  99. package/dist/utils/index.d.ts.map +1 -1
  100. package/dist/utils/index.js +81 -2
  101. package/dist/utils/index.js.map +1 -1
  102. package/package.json +1 -1
  103. package/src/components/chat/embeddable-chat.tsx +123 -8
  104. package/src/components/chat/hooks/index.ts +9 -2
  105. package/src/components/chat/hooks/use-embedded-chat.ts +18 -1016
  106. package/src/components/chat/hooks/use-nats-chat-adapter.ts +372 -0
  107. package/src/components/chat/hooks/use-realtime-chunk-processor.ts +53 -6
  108. package/src/components/chat/hooks/use-sse-chat-adapter.ts +1058 -0
  109. package/src/components/chat/hooks/use-unified-chat.ts +171 -0
  110. package/src/components/chat/types/api.types.ts +23 -1
  111. package/src/components/chat/types/index.ts +1 -0
  112. package/src/components/chat/types/unified-chat-state.types.ts +215 -0
  113. package/src/components/index.ts +8 -0
  114. package/src/components/shared/delivery/delivery-lists.tsx +199 -0
  115. package/src/components/shared/delivery/delivery-table.tsx +174 -0
  116. package/src/components/shared/delivery/index.ts +9 -0
  117. package/src/components/shared/dev-section/dev-section-page.tsx +72 -0
  118. package/src/components/shared/dev-section/dev-section-view.tsx +129 -0
  119. package/src/components/shared/dev-section/index.ts +2 -0
  120. package/src/components/shared/legal-document/index.ts +19 -0
  121. package/src/components/shared/legal-document/legal-document-page.tsx +178 -0
  122. package/src/components/shared/legal-document/use-legal-docs.ts +123 -0
  123. package/src/components/shared/product-release/index.ts +14 -3
  124. package/src/components/shared/product-release/release-detail-page.tsx +45 -7
  125. package/src/components/shared/roadmap/index.ts +23 -0
  126. package/src/components/shared/roadmap/roadmap-grid-skeleton.tsx +74 -0
  127. package/src/components/shared/roadmap/roadmap-grid.tsx +106 -0
  128. package/src/components/shared/roadmap/use-roadmap-voting.ts +163 -0
  129. package/src/components/ui/release-changelog-section.tsx +113 -32
  130. package/src/stories/EmbeddableChat.stories.tsx +186 -0
  131. package/src/types/delivery.ts +54 -0
  132. package/src/types/index.ts +1 -0
  133. package/src/utils/dev-sections/index.ts +17 -0
  134. package/src/utils/dev-sections/openframe-dev-sections.ts +148 -0
  135. package/src/utils/index.ts +6 -1
  136. package/dist/chunk-OLTGB32E.js.map +0 -1
  137. package/dist/chunk-YGOJIDL5.cjs.map +0 -1
@@ -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
 
@@ -24530,6 +24683,7 @@ function OnboardingWalkthrough({
24530
24683
 
24531
24684
  // src/components/shared/product-release/release-detail-page.tsx
24532
24685
  _chunkWBR7H6E3cjs.init_next_link.call(void 0, );
24686
+ _chunkG7UE6RKVcjs.init_next_navigation.call(void 0, );
24533
24687
 
24534
24688
 
24535
24689
  // src/components/layout/article-detail-layout.tsx
@@ -24547,10 +24701,36 @@ function ArticleDetailLayout({ children, schemas }) {
24547
24701
  ] });
24548
24702
  }
24549
24703
 
24704
+ // src/components/layout/back-button.tsx
24705
+ _chunk664KA5FIcjs.init_cn.call(void 0, );
24706
+
24707
+ function BackButton({ label = "Back", className, type = "button", ...props }) {
24708
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
24709
+ "button",
24710
+ {
24711
+ type,
24712
+ className: _chunk664KA5FIcjs.cn.call(void 0,
24713
+ "group inline-flex items-center justify-center self-start rounded-md",
24714
+ "gap-[var(--spacing-system-xsf)] py-[var(--spacing-system-sf)]",
24715
+ "text-ods-text-secondary hover:text-ods-text-primary",
24716
+ "transition-colors duration-200",
24717
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ods-focus",
24718
+ className
24719
+ ),
24720
+ ...props,
24721
+ children: [
24722
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVJTFBYVGcjs.Chevron02LeftIcon, { className: "size-6 shrink-0" }),
24723
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-h4", children: label })
24724
+ ]
24725
+ }
24726
+ );
24727
+ }
24728
+
24550
24729
  // src/components/ui/release-changelog-section.tsx
24551
24730
 
24552
24731
 
24553
24732
 
24733
+ var PREVIEW_COLLAPSED_HEIGHT = 120;
24554
24734
  function ReleaseChangelogSection({
24555
24735
  title,
24556
24736
  entries,
@@ -24558,11 +24738,19 @@ function ReleaseChangelogSection({
24558
24738
  hideTitle = false,
24559
24739
  collapsible = false,
24560
24740
  defaultCollapsed = true,
24741
+ previewFirst = false,
24561
24742
  icon,
24562
24743
  SimpleMarkdownRenderer: SimpleMarkdownRenderer2
24563
24744
  }) {
24564
24745
  const [collapsed, setCollapsed] = _react.useState.call(void 0, collapsible ? defaultCollapsed : false);
24746
+ const [previewExpanded, setPreviewExpanded] = _react.useState.call(void 0, false);
24747
+ const previewContentRef = _react.useRef.call(void 0, null);
24748
+ _react.useEffect.call(void 0, () => {
24749
+ setPreviewExpanded(false);
24750
+ }, [entries.length]);
24565
24751
  if (!entries || entries.length === 0) return null;
24752
+ const inPreviewMode = previewFirst && !collapsible;
24753
+ const previewNeedsFade = inPreviewMode && entries.length > 1;
24566
24754
  const showEntries = !collapsible || !collapsed;
24567
24755
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4", children: [
24568
24756
  !hideTitle && (collapsible ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
@@ -24590,25 +24778,67 @@ function ReleaseChangelogSection({
24590
24778
  title,
24591
24779
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Badge, { variant: "secondary", className: "ml-2", children: entries.length })
24592
24780
  ] })),
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)) })
24781
+ showEntries && (inPreviewMode ? (
24782
+ /* Preview-first mode: render the list in a height-clamped +
24783
+ mask-faded wrapper. The CSS mask creates the soft fade-out
24784
+ at the bottom of the collapsed region; the inline maxHeight
24785
+ + transition animate the open/close. When `previewExpanded`
24786
+ flips, the wrapper falls back to its natural scrollHeight
24787
+ (or 2000px on first render before the ref measures). */
24788
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "relative", children: [
24789
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
24790
+ "div",
24791
+ {
24792
+ ref: previewContentRef,
24793
+ className: "overflow-hidden transition-[max-height] duration-500",
24794
+ style: {
24795
+ transitionTimingFunction: "cubic-bezier(0.33, 1, 0.68, 1)",
24796
+ maxHeight: previewExpanded || !previewNeedsFade ? _nullishCoalesce(_optionalChain([previewContentRef, 'access', _490 => _490.current, 'optionalAccess', _491 => _491.scrollHeight]), () => ( 2e3)) : PREVIEW_COLLAPSED_HEIGHT,
24797
+ ...previewNeedsFade && !previewExpanded ? {
24798
+ maskImage: "linear-gradient(to bottom, black 30%, transparent 100%)",
24799
+ WebkitMaskImage: "linear-gradient(to bottom, black 30%, transparent 100%)"
24800
+ } : {}
24801
+ },
24802
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ChangelogEntryList, { entries, SimpleMarkdownRenderer: SimpleMarkdownRenderer2 })
24803
+ }
24804
+ ),
24805
+ previewNeedsFade && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
24806
+ "button",
24807
+ {
24808
+ type: "button",
24809
+ onClick: () => setPreviewExpanded(!previewExpanded),
24810
+ className: "mt-4 flex items-center gap-1.5 text-sm text-ods-text-secondary hover:text-ods-accent transition-colors duration-200",
24811
+ children: [
24812
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: previewExpanded ? "Show less" : `Show ${entries.length - 1} more` }),
24813
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
24814
+ _lucidereact.ChevronDown,
24815
+ {
24816
+ className: `w-3.5 h-3.5 transition-transform duration-300 ${previewExpanded ? "rotate-180" : ""}`
24817
+ }
24818
+ )
24819
+ ]
24820
+ }
24821
+ )
24822
+ ] })
24823
+ ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ChangelogEntryList, { entries, SimpleMarkdownRenderer: SimpleMarkdownRenderer2 }))
24610
24824
  ] });
24611
24825
  }
24826
+ function ChangelogEntryList({
24827
+ entries,
24828
+ SimpleMarkdownRenderer: SimpleMarkdownRenderer2
24829
+ }) {
24830
+ 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: [
24831
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h3 text-ods-text-primary mb-2", children: entry.title }),
24832
+ entry.description && /* Entry description — body text matches the main release
24833
+ summary at the SAME 14/18px responsive `text-h4` scale.
24834
+ The `SimpleMarkdownRenderer` forces its own `<p>` typography
24835
+ which would override `text-h4` on `lg+` viewports and
24836
+ inflate the changelog body to 20px. The `[&_p]:!` overrides
24837
+ pin every descendant `<p>` back to the h4 responsive tokens
24838
+ so the breakpoints stay aligned with the rest of the page. */
24839
+ /* @__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 }) })
24840
+ ] }, index)) });
24841
+ }
24612
24842
 
24613
24843
  // src/components/shared/product-release/release-detail-page.tsx
24614
24844
 
@@ -24639,7 +24869,7 @@ var SecondaryAction = ({ action }) => {
24639
24869
  e.preventDefault();
24640
24870
  return;
24641
24871
  }
24642
- _optionalChain([action, 'access', _490 => _490.onClick, 'optionalCall', _491 => _491()]);
24872
+ _optionalChain([action, 'access', _492 => _492.onClick, 'optionalCall', _493 => _493()]);
24643
24873
  },
24644
24874
  [action]
24645
24875
  );
@@ -24680,13 +24910,13 @@ var MenuItem = ({ item, onItemClick }) => {
24680
24910
  const activate = _react.useCallback.call(void 0, () => {
24681
24911
  if (item.disabled) return;
24682
24912
  if (item.type === "checkbox") {
24683
- _optionalChain([item, 'access', _492 => _492.onClick, 'optionalCall', _493 => _493()]);
24684
- _optionalChain([onItemClick, 'optionalCall', _494 => _494(item)]);
24913
+ _optionalChain([item, 'access', _494 => _494.onClick, 'optionalCall', _495 => _495()]);
24914
+ _optionalChain([onItemClick, 'optionalCall', _496 => _496(item)]);
24685
24915
  return;
24686
24916
  }
24687
24917
  if (item.type === "submenu") return;
24688
- _optionalChain([item, 'access', _495 => _495.onClick, 'optionalCall', _496 => _496()]);
24689
- _optionalChain([onItemClick, 'optionalCall', _497 => _497(item)]);
24918
+ _optionalChain([item, 'access', _497 => _497.onClick, 'optionalCall', _498 => _498()]);
24919
+ _optionalChain([onItemClick, 'optionalCall', _499 => _499(item)]);
24690
24920
  }, [item, onItemClick]);
24691
24921
  const handleClick = _react.useCallback.call(void 0,
24692
24922
  (e) => {
@@ -24712,8 +24942,8 @@ var MenuItem = ({ item, onItemClick }) => {
24712
24942
  e.stopPropagation();
24713
24943
  return;
24714
24944
  }
24715
- _optionalChain([item, 'access', _498 => _498.onClick, 'optionalCall', _499 => _499()]);
24716
- _optionalChain([onItemClick, 'optionalCall', _500 => _500(item)]);
24945
+ _optionalChain([item, 'access', _500 => _500.onClick, 'optionalCall', _501 => _501()]);
24946
+ _optionalChain([onItemClick, 'optionalCall', _502 => _502(item)]);
24717
24947
  },
24718
24948
  [item, onItemClick]
24719
24949
  );
@@ -24868,7 +25098,7 @@ var ActionsMenuDropdown = ({
24868
25098
  const [open, setOpen] = _react.useState.call(void 0, false);
24869
25099
  const handleItemClick = _react.useCallback.call(void 0,
24870
25100
  (item) => {
24871
- _optionalChain([onItemClick, 'optionalCall', _501 => _501(item)]);
25101
+ _optionalChain([onItemClick, 'optionalCall', _503 => _503(item)]);
24872
25102
  if (item.type !== "checkbox" && item.type !== "submenu") {
24873
25103
  setOpen(false);
24874
25104
  }
@@ -25039,7 +25269,7 @@ function IconButtonsVariant({
25039
25269
  }) {
25040
25270
  const desktopActions = actions.filter((a) => !a.showOnlyMobile);
25041
25271
  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]);
25272
+ const isSingleAction = actions.length === 1 && !_optionalChain([actions, 'access', _504 => _504[0], 'access', _505 => _505.submenu, 'optionalAccess', _506 => _506.length]);
25043
25273
  const singleAction = isSingleAction ? actions[0] : null;
25044
25274
  const useSingleActionMobile = isSingleAction && !hasMenuActions;
25045
25275
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
@@ -25111,31 +25341,6 @@ function usePageActionsBottomPadding(variant) {
25111
25341
  return variant === "primary-buttons" || variant === "menu-primary" ? "pb-40 md:pb-0" : "";
25112
25342
  }
25113
25343
 
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
25344
  // src/components/layout/page-container.tsx
25140
25345
 
25141
25346
  function isAdvancedProps(props) {
@@ -25384,12 +25589,17 @@ function ReleaseDetailPage({
25384
25589
  VideoSection,
25385
25590
  VideoDisplaySection,
25386
25591
  roadmapApiEndpoint = "/api/roadmap",
25387
- deliveryApiEndpoint = "/api/delivery"
25592
+ deliveryApiEndpoint = "/api/delivery",
25593
+ backButton
25388
25594
  }) {
25595
+ const router = _chunkG7UE6RKVcjs.useRouter.call(void 0, );
25389
25596
  const { data: fetchedRelease, error, isLoading } = useRelease(initialData ? void 0 : slug);
25390
25597
  const release = initialData || fetchedRelease;
25391
25598
  const [galleryOpen, setGalleryOpen] = _react.useState.call(void 0, false);
25392
25599
  const [galleryIndex, setGalleryIndex] = _react.useState.call(void 0, 0);
25600
+ const showBackButton = backButton !== false;
25601
+ const backLabel = _nullishCoalesce((backButton ? backButton.label : void 0), () => ( "Back to home"));
25602
+ const backHref = _nullishCoalesce((backButton ? backButton.href : void 0), () => ( "/"));
25393
25603
  const [roadmapTasks, setRoadmapTasks] = _react.useState.call(void 0, []);
25394
25604
  const [deliveryData, setDeliveryData] = _react.useState.call(void 0, null);
25395
25605
  const [roadmapLoading, setRoadmapLoading] = _react.useState.call(void 0, false);
@@ -25458,6 +25668,14 @@ function ReleaseDetailPage({
25458
25668
  const bugFixed = release.bugs_fixed;
25459
25669
  const improvements = release.improvements;
25460
25670
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, ArticleDetailLayout, { children: [
25671
+ showBackButton && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
25672
+ BackButton,
25673
+ {
25674
+ label: backLabel,
25675
+ onClick: () => router.push(backHref),
25676
+ className: "hidden md:inline-flex mb-4"
25677
+ }
25678
+ ),
25461
25679
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-6 md:space-y-8", children: [
25462
25680
  /* @__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
25681
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h1", { className: "text-h1 tracking-[-1.12px] text-ods-text-primary", children: releaseTitle }),
@@ -25466,14 +25684,14 @@ function ReleaseDetailPage({
25466
25684
  releaseVersion
25467
25685
  ] })
25468
25686
  ] }) }),
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,
25687
+ /* @__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
25688
  StatusBadge,
25471
25689
  {
25472
- text: (tag.name || _optionalChain([tag, 'access', _507 => _507.blog_tags, 'optionalAccess', _508 => _508.name]) || "").toUpperCase(),
25690
+ text: (tag.name || _optionalChain([tag, 'access', _509 => _509.blog_tags, 'optionalAccess', _510 => _510.name]) || "").toUpperCase(),
25473
25691
  variant: "card",
25474
25692
  className: "bg-ods-card border border-ods-border"
25475
25693
  },
25476
- tag.id || _optionalChain([tag, 'access', _509 => _509.blog_tags, 'optionalAccess', _510 => _510.id])
25694
+ tag.id || _optionalChain([tag, 'access', _511 => _511.blog_tags, 'optionalAccess', _512 => _512.id])
25477
25695
  ))]) }),
25478
25696
  /* @__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
25697
  /* @__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 +25710,15 @@ function ReleaseDetailPage({
25492
25710
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
25493
25711
  SquareAvatar,
25494
25712
  {
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", ""),
25713
+ src: _optionalChain([author, 'optionalAccess', _513 => _513.avatar_url]) || "",
25714
+ alt: _optionalChain([author, 'optionalAccess', _514 => _514.full_name]) || "Author",
25715
+ fallback: nameInitials(_optionalChain([author, 'optionalAccess', _515 => _515.full_name]) || "Unknown", ""),
25498
25716
  size: "md",
25499
25717
  variant: "round"
25500
25718
  }
25501
25719
  ),
25502
25720
  /* @__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" }),
25721
+ /* @__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
25722
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary", children: "Author" })
25505
25723
  ] })
25506
25724
  ] })
@@ -25531,8 +25749,8 @@ function ReleaseDetailPage({
25531
25749
  videoBites,
25532
25750
  bitesTitle: "Video Clips",
25533
25751
  filterPublishedBites: true,
25534
- srtContent: _optionalChain([release, 'optionalAccess', _516 => _516.srt_content]),
25535
- captionsUrl: _optionalChain([release, 'optionalAccess', _517 => _517.captionsUrl])
25752
+ srtContent: _optionalChain([release, 'optionalAccess', _518 => _518.srt_content]),
25753
+ captionsUrl: _optionalChain([release, 'optionalAccess', _519 => _519.captionsUrl])
25536
25754
  }
25537
25755
  ) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
25538
25756
  youtubeUrl && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -25548,8 +25766,8 @@ function ReleaseDetailPage({
25548
25766
  Video,
25549
25767
  {
25550
25768
  url: mainVideoUrl,
25551
- srtContent: _optionalChain([release, 'optionalAccess', _518 => _518.srt_content]),
25552
- captionsUrl: _optionalChain([release, 'optionalAccess', _519 => _519.captionsUrl]),
25769
+ srtContent: _optionalChain([release, 'optionalAccess', _520 => _520.srt_content]),
25770
+ captionsUrl: _optionalChain([release, 'optionalAccess', _521 => _521.captionsUrl]),
25553
25771
  layout: "centered"
25554
25772
  }
25555
25773
  ),
@@ -25587,6 +25805,7 @@ function ReleaseDetailPage({
25587
25805
  title: "Features Added",
25588
25806
  entries: featuresAdded || [],
25589
25807
  icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Sparkles, { className: "h-6 w-6" }),
25808
+ previewFirst: true,
25590
25809
  SimpleMarkdownRenderer: MarkdownRenderer
25591
25810
  }
25592
25811
  ),
@@ -25596,6 +25815,7 @@ function ReleaseDetailPage({
25596
25815
  title: "Bugs Fixed",
25597
25816
  entries: bugFixed || [],
25598
25817
  icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Wrench, { className: "h-6 w-6" }),
25818
+ previewFirst: true,
25599
25819
  SimpleMarkdownRenderer: MarkdownRenderer
25600
25820
  }
25601
25821
  ),
@@ -25605,6 +25825,7 @@ function ReleaseDetailPage({
25605
25825
  title: "Improvements",
25606
25826
  entries: improvements || [],
25607
25827
  icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.TrendingUp, { className: "h-6 w-6" }),
25828
+ previewFirst: true,
25608
25829
  SimpleMarkdownRenderer: MarkdownRenderer
25609
25830
  }
25610
25831
  ),
@@ -25643,7 +25864,7 @@ function ReleaseDetailPage({
25643
25864
  }
25644
25865
  )
25645
25866
  ] }),
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: [
25867
+ (_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
25868
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h5 tracking-[-0.28px] text-ods-text-secondary", children: "Related Links" }),
25648
25869
  /* @__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
25870
  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 +25893,7 @@ function ReleaseDetailPage({
25672
25893
  {
25673
25894
  href: path.startsWith("http") ? path : `/knowledge-base${path.startsWith("/") ? "" : "/"}${path}`,
25674
25895
  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"
25896
+ 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
25897
  }
25677
25898
  ),
25678
25899
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ExternalLink, { className: "h-6 w-6 text-[#ffc008] shrink-0" })
@@ -25727,6 +25948,753 @@ function ReleaseDetailSkeleton() {
25727
25948
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DetailPageSkeleton, { metadataColumns: 4, showImageGallery: true });
25728
25949
  }
25729
25950
 
25951
+ // src/components/shared/dev-section/dev-section-view.tsx
25952
+
25953
+
25954
+ function DevSectionView({ sectionKey, hero, children }) {
25955
+ const section = OPENFRAME_DEV_SECTIONS[sectionKey];
25956
+ const router = _chunkG7UE6RKVcjs.useRouter.call(void 0, );
25957
+ const pathname = _chunkG7UE6RKVcjs.usePathname.call(void 0, );
25958
+ const searchParams = _chunkG7UE6RKVcjs.useSearchParams.call(void 0, );
25959
+ const search = section.search;
25960
+ const filter = section.filter;
25961
+ const currentSearch = search ? searchParams.get(search.paramKey) || "" : "";
25962
+ const currentFilterValue = filter ? searchParams.get(filter.paramKey) || filter.defaultValue : "";
25963
+ const [searchValue, setSearchValue] = _react.useState.call(void 0, () => currentSearch);
25964
+ _react.useEffect.call(void 0, () => {
25965
+ setSearchValue(currentSearch);
25966
+ }, [currentSearch]);
25967
+ const handleSearchSubmit = (value) => {
25968
+ if (!search) return;
25969
+ const params = new URLSearchParams(searchParams.toString());
25970
+ if (value.trim()) params.set(search.paramKey, value.trim());
25971
+ else params.delete(search.paramKey);
25972
+ router.replace(`${pathname}?${params.toString()}`, { scroll: false });
25973
+ };
25974
+ const handleFilterChange = (value) => {
25975
+ if (!filter) return;
25976
+ const params = new URLSearchParams(searchParams.toString());
25977
+ if (value === filter.defaultValue) params.delete(filter.paramKey);
25978
+ else params.set(filter.paramKey, value);
25979
+ router.replace(`${pathname}?${params.toString()}`, { scroll: false });
25980
+ };
25981
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "w-full flex flex-col gap-10", children: [
25982
+ hero ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4", children: [
25983
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "h1", { className: "text-h1 tracking-[-1.12px] text-ods-text-primary flex items-center gap-3", children: [
25984
+ hero.icon,
25985
+ section.hero.title
25986
+ ] }),
25987
+ /* @__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 })
25988
+ ] }) : /* @__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: [
25989
+ section.hero.title,
25990
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-accent", children: ":" })
25991
+ ] }) }),
25992
+ (search || filter) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4", children: [
25993
+ search && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
25994
+ SearchInput,
25995
+ {
25996
+ showDropdown: false,
25997
+ placeholder: search.placeholder,
25998
+ value: searchValue,
25999
+ onChange: setSearchValue,
26000
+ onSubmit: handleSearchSubmit
26001
+ }
26002
+ ),
26003
+ filter && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
26004
+ StatusFilterComponent,
26005
+ {
26006
+ selectedStatus: currentFilterValue,
26007
+ onStatusChange: handleFilterChange,
26008
+ statusOptions: [...filter.options]
26009
+ }
26010
+ )
26011
+ ] }),
26012
+ children
26013
+ ] });
26014
+ }
26015
+
26016
+ // src/components/shared/dev-section/dev-section-page.tsx
26017
+ _chunkG7UE6RKVcjs.init_next_navigation.call(void 0, );
26018
+
26019
+ var SECTION_HERO_ICON_CLASS = "h-10 w-10 text-ods-accent";
26020
+ function DevSectionPage({ sectionKey, children, backButton }) {
26021
+ const router = _chunkG7UE6RKVcjs.useRouter.call(void 0, );
26022
+ const section = OPENFRAME_DEV_SECTIONS[sectionKey];
26023
+ const Icon2 = section.icon;
26024
+ const backCfg = backButton === false ? void 0 : {
26025
+ label: _nullishCoalesce((backButton ? backButton.label : void 0), () => ( "Back to home")),
26026
+ onClick: () => router.push(_nullishCoalesce((backButton ? backButton.href : void 0), () => ( "/")))
26027
+ };
26028
+ 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,
26029
+ DevSectionView,
26030
+ {
26031
+ sectionKey,
26032
+ hero: {
26033
+ icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Icon2, { className: SECTION_HERO_ICON_CLASS }),
26034
+ description: section.hero.description
26035
+ },
26036
+ children
26037
+ }
26038
+ ) }) });
26039
+ }
26040
+
26041
+ // src/components/shared/roadmap/roadmap-grid.tsx
26042
+
26043
+
26044
+ // src/components/shared/roadmap/use-roadmap-voting.ts
26045
+
26046
+ var DEFAULT_VOTE_ENDPOINT = "/api/roadmap/vote";
26047
+ var DEFAULT_STORAGE_KEY = "roadmap_votes_v1";
26048
+ function useRoadmapVoting(options = {}) {
26049
+ const voteApiEndpoint = _nullishCoalesce(options.voteApiEndpoint, () => ( DEFAULT_VOTE_ENDPOINT));
26050
+ const storageKey = _nullishCoalesce(options.storageKey, () => ( DEFAULT_STORAGE_KEY));
26051
+ const [votes, setVotes] = _react.useState.call(void 0, {});
26052
+ const [isLoading, setIsLoading] = _react.useState.call(void 0, true);
26053
+ _react.useEffect.call(void 0, () => {
26054
+ setIsLoading(true);
26055
+ setVotes({});
26056
+ try {
26057
+ const stored = localStorage.getItem(storageKey);
26058
+ if (stored) {
26059
+ setVotes(JSON.parse(stored));
26060
+ }
26061
+ } catch (error) {
26062
+ console.error("[Voting] Error loading votes from localStorage:", error);
26063
+ } finally {
26064
+ setIsLoading(false);
26065
+ }
26066
+ }, [storageKey]);
26067
+ _react.useEffect.call(void 0, () => {
26068
+ if (!isLoading) {
26069
+ try {
26070
+ localStorage.setItem(storageKey, JSON.stringify(votes));
26071
+ } catch (error) {
26072
+ console.error("[Voting] Error saving votes to localStorage:", error);
26073
+ }
26074
+ }
26075
+ }, [votes, isLoading, storageKey]);
26076
+ const getVote = _react.useCallback.call(void 0,
26077
+ (taskId) => {
26078
+ return votes[taskId] || null;
26079
+ },
26080
+ [votes]
26081
+ );
26082
+ const toggleVote = _react.useCallback.call(void 0,
26083
+ async (taskId, voteType) => {
26084
+ const currentVote = votes[taskId];
26085
+ let newVote = null;
26086
+ let action = "add";
26087
+ if (currentVote === voteType) {
26088
+ newVote = null;
26089
+ action = "remove";
26090
+ } else {
26091
+ if (currentVote) {
26092
+ await fetch(voteApiEndpoint, {
26093
+ method: "POST",
26094
+ headers: { "Content-Type": "application/json" },
26095
+ body: JSON.stringify({
26096
+ taskId,
26097
+ voteType: currentVote,
26098
+ action: "remove"
26099
+ })
26100
+ }).catch((err) => console.error("[Voting] Error removing opposite vote:", err));
26101
+ }
26102
+ newVote = voteType;
26103
+ action = "add";
26104
+ }
26105
+ setVotes((prev) => ({
26106
+ ...prev,
26107
+ [taskId]: newVote
26108
+ }));
26109
+ try {
26110
+ const response = await fetch(voteApiEndpoint, {
26111
+ method: "POST",
26112
+ headers: { "Content-Type": "application/json" },
26113
+ body: JSON.stringify({ taskId, voteType, action })
26114
+ });
26115
+ if (!response.ok) {
26116
+ throw new Error("Vote API request failed");
26117
+ }
26118
+ return { success: true, newVote, action };
26119
+ } catch (error) {
26120
+ console.error("[Voting] API error:", error);
26121
+ setVotes((prev) => ({
26122
+ ...prev,
26123
+ [taskId]: currentVote
26124
+ }));
26125
+ return { success: false, newVote: currentVote, action };
26126
+ }
26127
+ },
26128
+ [votes, voteApiEndpoint]
26129
+ );
26130
+ const clearVotes = _react.useCallback.call(void 0, () => {
26131
+ setVotes({});
26132
+ localStorage.removeItem(storageKey);
26133
+ }, [storageKey]);
26134
+ return {
26135
+ votes,
26136
+ isLoading,
26137
+ getVote,
26138
+ toggleVote,
26139
+ clearVotes
26140
+ };
26141
+ }
26142
+
26143
+ // src/components/shared/roadmap/roadmap-grid.tsx
26144
+
26145
+ var DEFAULT_BUILD_REFRESH_URL = (taskId) => `/api/roadmap/${taskId}`;
26146
+ function RoadmapGrid({
26147
+ items,
26148
+ onItemUpdate,
26149
+ showLeftMargin = true,
26150
+ buildRefreshUrl = DEFAULT_BUILD_REFRESH_URL,
26151
+ votingOptions
26152
+ }) {
26153
+ const { getVote, toggleVote } = useRoadmapVoting(votingOptions);
26154
+ const [votingTasks, setVotingTasks] = _react.useState.call(void 0, /* @__PURE__ */ new Set());
26155
+ const handleVote = async (taskId, voteType) => {
26156
+ if (votingTasks.has(taskId)) return;
26157
+ setVotingTasks((prev) => new Set(prev).add(taskId));
26158
+ try {
26159
+ const result = await toggleVote(taskId, voteType);
26160
+ if (result.success) {
26161
+ const response = await fetch(buildRefreshUrl(taskId));
26162
+ if (response.ok) {
26163
+ const data = await response.json();
26164
+ if (data.item && onItemUpdate) {
26165
+ onItemUpdate(data.item);
26166
+ }
26167
+ }
26168
+ }
26169
+ } finally {
26170
+ setVotingTasks((prev) => {
26171
+ const next = new Set(prev);
26172
+ next.delete(taskId);
26173
+ return next;
26174
+ });
26175
+ }
26176
+ };
26177
+ if (items.length === 0) {
26178
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
26179
+ EmptyState3,
26180
+ {
26181
+ type: "generic",
26182
+ title: "No roadmap items",
26183
+ description: "Check back soon for upcoming features and improvements!"
26184
+ }
26185
+ );
26186
+ }
26187
+ 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,
26188
+ RoadmapCard,
26189
+ {
26190
+ item,
26191
+ userVote: getVote(item.id),
26192
+ onVote: (voteType) => handleVote(item.id, voteType),
26193
+ isVoting: votingTasks.has(item.id)
26194
+ },
26195
+ item.id
26196
+ )) });
26197
+ }
26198
+
26199
+ // src/components/shared/roadmap/roadmap-grid-skeleton.tsx
26200
+
26201
+ function RoadmapCardSkeleton() {
26202
+ 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: [
26203
+ /* @__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" }) }),
26204
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-[16px] pr-[120px]", children: [
26205
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-[80px] h-[80px] bg-ods-border rounded-lg flex-shrink-0 animate-pulse" }),
26206
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-1 min-w-0 flex flex-col gap-1", children: [
26207
+ /* @__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" }) }),
26208
+ /* @__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" }) })
26209
+ ] })
26210
+ ] }),
26211
+ /* @__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: [
26212
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[24px] bg-ods-border rounded animate-pulse" }),
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] w-4/5 bg-ods-border rounded animate-pulse" })
26215
+ ] }) }),
26216
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex-1" }),
26217
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center justify-between", children: [
26218
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[48px] w-[120px] bg-ods-border rounded animate-pulse" }),
26219
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[32px] w-[100px] bg-ods-border rounded animate-pulse" })
26220
+ ] })
26221
+ ] });
26222
+ }
26223
+ function RoadmapGridSkeleton({ count = 4, showLeftMargin = true }) {
26224
+ 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)) });
26225
+ }
26226
+
26227
+ // src/components/shared/delivery/delivery-lists.tsx
26228
+
26229
+
26230
+ // src/components/shared/delivery/delivery-table.tsx
26231
+
26232
+ function getRelativeTime(timestamp) {
26233
+ const now = Date.now();
26234
+ const diff = now - timestamp;
26235
+ const days = Math.floor(diff / (1e3 * 60 * 60 * 24));
26236
+ const weeks = Math.floor(days / 7);
26237
+ const months = Math.floor(days / 30);
26238
+ if (months > 0) {
26239
+ return months === 1 ? "last month" : `${months} months ago`;
26240
+ }
26241
+ if (weeks > 0) {
26242
+ return weeks === 1 ? "last week" : `${weeks} weeks ago`;
26243
+ }
26244
+ if (days > 0) {
26245
+ return days === 1 ? "yesterday" : `${days} days ago`;
26246
+ }
26247
+ return "today";
26248
+ }
26249
+ function SkeletonRow() {
26250
+ 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: [
26251
+ /* @__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: [
26252
+ /* @__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" }) }),
26253
+ /* @__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" }) }),
26254
+ /* @__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: [
26255
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[20px] bg-ods-border rounded animate-pulse w-full" }),
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-2/3" })
26258
+ ] }) })
26259
+ ] }),
26260
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-shrink-0 self-start flex flex-col gap-2", children: [
26261
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[32px] w-[100px] bg-ods-border rounded animate-pulse" }),
26262
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[32px] w-[120px] bg-ods-border rounded animate-pulse" })
26263
+ ] })
26264
+ ] }) });
26265
+ }
26266
+ function DeliveryTable({ items, isLoading = false }) {
26267
+ if (isLoading) {
26268
+ 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)) }) });
26269
+ }
26270
+ if (items.length === 0) {
26271
+ 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" }) });
26272
+ }
26273
+ 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) => {
26274
+ const taskType = item.taskType;
26275
+ const typeBadgeLabel = TASK_TYPE_LABELS[taskType] || "TASK";
26276
+ const typeBadgeTextColor = TASK_TYPE_TEXT_COLORS[taskType] || "";
26277
+ const statusBadgeScheme = getStatusColorScheme(item.status);
26278
+ const relativeTime = getRelativeTime(item.dateUpdated);
26279
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
26280
+ "div",
26281
+ {
26282
+ className: `border-b border-ods-border last:border-b-0 p-[12px] md:p-[16px] ${index === 0 ? "" : ""}`,
26283
+ 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: [
26284
+ /* @__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: [
26285
+ /* @__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 }) }),
26286
+ /* @__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: [
26287
+ "ACTIVE ",
26288
+ relativeTime,
26289
+ item.listNames.length > 0 ? `, ${item.listNames.join(", ")}` : "",
26290
+ ", ",
26291
+ item.id
26292
+ ] }) }),
26293
+ /* @__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" }) })
26294
+ ] }),
26295
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-shrink-0 self-start flex flex-col gap-2", children: [
26296
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
26297
+ StatusBadge,
26298
+ {
26299
+ text: item.status.toUpperCase(),
26300
+ colorScheme: statusBadgeScheme,
26301
+ variant: "card",
26302
+ className: "border border-ods-border"
26303
+ }
26304
+ ),
26305
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
26306
+ StatusBadge,
26307
+ {
26308
+ text: typeBadgeLabel,
26309
+ variant: "card",
26310
+ className: `border border-ods-border ${typeBadgeTextColor}`
26311
+ }
26312
+ )
26313
+ ] })
26314
+ ] })
26315
+ },
26316
+ item.id
26317
+ );
26318
+ }) }) });
26319
+ }
26320
+
26321
+ // src/components/ui/error-state.tsx
26322
+ _chunkKUZGEA7Ucjs.init_button2.call(void 0, );
26323
+ _chunk664KA5FIcjs.init_cn.call(void 0, );
26324
+
26325
+
26326
+ function ErrorState({
26327
+ title = "Error",
26328
+ message: message2,
26329
+ variant = "error",
26330
+ showIcon = true,
26331
+ showRetry = false,
26332
+ showHome = false,
26333
+ onRetry,
26334
+ onHome,
26335
+ className,
26336
+ containerClassName
26337
+ }) {
26338
+ const getVariantStyles = () => {
26339
+ switch (variant) {
26340
+ case "error":
26341
+ return {
26342
+ bg: "bg-ods-attention-red-error/20",
26343
+ border: "border-ods-attention-red-error",
26344
+ text: "text-ods-attention-red-error",
26345
+ icon: "text-ods-attention-red-error"
26346
+ };
26347
+ case "warning":
26348
+ return {
26349
+ bg: "bg-ods-attention-yellow-warning/20",
26350
+ border: "border-ods-attention-yellow-warning",
26351
+ text: "text-ods-attention-yellow-warning",
26352
+ icon: "text-ods-attention-yellow-warning"
26353
+ };
26354
+ case "info":
26355
+ return {
26356
+ bg: "bg-ods-bg-surface",
26357
+ border: "border-ods-border",
26358
+ text: "text-ods-text-secondary",
26359
+ icon: "text-ods-text-secondary"
26360
+ };
26361
+ }
26362
+ };
26363
+ const styles = getVariantStyles();
26364
+ 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,
26365
+ "rounded-lg p-4 border",
26366
+ styles.bg,
26367
+ styles.border,
26368
+ className
26369
+ ), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-start gap-3", children: [
26370
+ 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) }),
26371
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-1", children: [
26372
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: _chunk664KA5FIcjs.cn.call(void 0, "font-semibold mb-1", styles.text), children: title }),
26373
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: _chunk664KA5FIcjs.cn.call(void 0, "text-sm", styles.text), children: message2 }),
26374
+ (showRetry || showHome) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex gap-2 mt-3", children: [
26375
+ showRetry && onRetry && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
26376
+ _chunkKUZGEA7Ucjs.Button,
26377
+ {
26378
+ onClick: onRetry,
26379
+ variant: "outline",
26380
+ size: "small-legacy",
26381
+ className: "h-8",
26382
+ leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.RefreshCw, { className: "h-4 w-4" }),
26383
+ children: "Try Again"
26384
+ }
26385
+ ),
26386
+ showHome && onHome && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
26387
+ _chunkKUZGEA7Ucjs.Button,
26388
+ {
26389
+ onClick: onHome,
26390
+ variant: "outline",
26391
+ size: "small-legacy",
26392
+ className: "h-8",
26393
+ leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Home, { className: "h-4 w-4" }),
26394
+ children: "Go Home"
26395
+ }
26396
+ )
26397
+ ] })
26398
+ ] })
26399
+ ] }) }) });
26400
+ }
26401
+ function PageError({ message: message2, onRetry, onHome }) {
26402
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
26403
+ ErrorState,
26404
+ {
26405
+ title: "Page Error",
26406
+ message: message2,
26407
+ variant: "error",
26408
+ showRetry: !!onRetry,
26409
+ showHome: !!onHome,
26410
+ onRetry,
26411
+ onHome
26412
+ }
26413
+ );
26414
+ }
26415
+ function LoadError({ message: message2, onRetry }) {
26416
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
26417
+ ErrorState,
26418
+ {
26419
+ title: "Loading Error",
26420
+ message: message2,
26421
+ variant: "error",
26422
+ showRetry: !!onRetry,
26423
+ onRetry
26424
+ }
26425
+ );
26426
+ }
26427
+ function NotFoundError({ message: message2 = "The requested item was not found", onHome }) {
26428
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
26429
+ ErrorState,
26430
+ {
26431
+ title: "Not Found",
26432
+ message: message2,
26433
+ variant: "warning",
26434
+ showHome: !!onHome,
26435
+ onHome
26436
+ }
26437
+ );
26438
+ }
26439
+
26440
+ // src/components/shared/delivery/delivery-lists.tsx
26441
+
26442
+ var DEFAULT_COMPLETED_ENDPOINT = "/api/delivery/completed";
26443
+ var DEFAULT_IN_PROGRESS_ENDPOINT = "/api/delivery/in-progress";
26444
+ var DEFAULT_SEARCH_PARAM_KEY = "search";
26445
+ var DEFAULT_TASK_TYPE_PARAM_KEY = "task_type";
26446
+ function DeliveryLists({
26447
+ completedApiEndpoint = DEFAULT_COMPLETED_ENDPOINT,
26448
+ inProgressApiEndpoint = DEFAULT_IN_PROGRESS_ENDPOINT,
26449
+ searchParamKey = DEFAULT_SEARCH_PARAM_KEY,
26450
+ taskTypeParamKey = DEFAULT_TASK_TYPE_PARAM_KEY
26451
+ } = {}) {
26452
+ const searchParams = _chunkG7UE6RKVcjs.useSearchParams.call(void 0, );
26453
+ const router = _chunkG7UE6RKVcjs.useRouter.call(void 0, );
26454
+ const pathname = _chunkG7UE6RKVcjs.usePathname.call(void 0, );
26455
+ const [data, setData] = _react.useState.call(void 0, null);
26456
+ const [isLoading, setIsLoading] = _react.useState.call(void 0, true);
26457
+ const [error, setError] = _react.useState.call(void 0, null);
26458
+ const searchQuery = searchParams.get(searchParamKey) || "";
26459
+ const taskTypeFilter = searchParams.get(taskTypeParamKey) || "all";
26460
+ _react.useEffect.call(void 0, () => {
26461
+ async function fetchDeliveryData() {
26462
+ try {
26463
+ setIsLoading(true);
26464
+ setError(null);
26465
+ const params = new URLSearchParams();
26466
+ if (searchQuery) {
26467
+ params.set(searchParamKey, searchQuery);
26468
+ }
26469
+ if (taskTypeFilter && taskTypeFilter !== "all") {
26470
+ params.set(taskTypeParamKey, taskTypeFilter);
26471
+ }
26472
+ const queryString = params.toString();
26473
+ const queryParam = queryString ? `?${queryString}` : "";
26474
+ const [completedResponse, inProgressResponse] = await Promise.all([
26475
+ fetch(`${completedApiEndpoint}${queryParam}`),
26476
+ fetch(`${inProgressApiEndpoint}${queryParam}`)
26477
+ ]);
26478
+ if (!completedResponse.ok || !inProgressResponse.ok) {
26479
+ throw new Error("Failed to fetch delivery items");
26480
+ }
26481
+ const [completedResult, inProgressResult] = await Promise.all([
26482
+ completedResponse.json(),
26483
+ inProgressResponse.json()
26484
+ ]);
26485
+ setData({
26486
+ completed: completedResult.items || [],
26487
+ inProgress: inProgressResult.items || []
26488
+ });
26489
+ } catch (err) {
26490
+ console.error("Error fetching delivery items:", err);
26491
+ setError("Failed to load delivery items. Please try again later.");
26492
+ } finally {
26493
+ setIsLoading(false);
26494
+ }
26495
+ }
26496
+ fetchDeliveryData();
26497
+ }, [searchQuery, taskTypeFilter, completedApiEndpoint, inProgressApiEndpoint, searchParamKey, taskTypeParamKey]);
26498
+ const filteredCompleted = _optionalChain([data, 'optionalAccess', _532 => _532.completed]) || [];
26499
+ const filteredInProgress = _optionalChain([data, 'optionalAccess', _533 => _533.inProgress]) || [];
26500
+ const showCompleted = true;
26501
+ const showInProgress = true;
26502
+ const hasActiveFilters = searchQuery !== "" || taskTypeFilter !== "all";
26503
+ const hasResults = showCompleted && filteredCompleted.length > 0 || showInProgress && filteredInProgress.length > 0;
26504
+ if (error) {
26505
+ 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() }) });
26506
+ }
26507
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "w-full flex flex-col gap-[40px]", children: [
26508
+ !isLoading && !hasResults && (hasActiveFilters ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
26509
+ EmptyState3,
26510
+ {
26511
+ type: "search",
26512
+ title: "No tasks found",
26513
+ description: "No tasks match your current filters. Try adjusting your search or status filter.",
26514
+ showCTA: true,
26515
+ ctaText: "Reset Filters",
26516
+ onCtaClick: () => {
26517
+ const params = new URLSearchParams(searchParams.toString());
26518
+ params.delete(searchParamKey);
26519
+ params.delete(taskTypeParamKey);
26520
+ router.replace(`${pathname}?${params.toString()}`, { scroll: false });
26521
+ }
26522
+ }
26523
+ ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
26524
+ EmptyState3,
26525
+ {
26526
+ type: "generic",
26527
+ title: "No tasks available",
26528
+ description: "Check back soon for upcoming tasks!",
26529
+ showCTA: false
26530
+ }
26531
+ )),
26532
+ showCompleted && (hasResults || isLoading) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "w-full", children: [
26533
+ /* @__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: [
26534
+ "Recently Completed",
26535
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-accent", children: ":" })
26536
+ ] }),
26537
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
26538
+ DeliveryTable,
26539
+ {
26540
+ items: filteredCompleted,
26541
+ isLoading
26542
+ }
26543
+ )
26544
+ ] }),
26545
+ showInProgress && (hasResults || isLoading) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "w-full", children: [
26546
+ /* @__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: [
26547
+ "Active Tasks",
26548
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-accent", children: ":" })
26549
+ ] }),
26550
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
26551
+ DeliveryTable,
26552
+ {
26553
+ items: filteredInProgress,
26554
+ isLoading
26555
+ }
26556
+ )
26557
+ ] })
26558
+ ] });
26559
+ }
26560
+
26561
+ // src/components/shared/legal-document/legal-document-page.tsx
26562
+ _chunkG7UE6RKVcjs.init_next_navigation.call(void 0, );
26563
+
26564
+ // src/components/shared/legal-document/use-legal-docs.ts
26565
+
26566
+ function useLegalDocs(docType, options = {}) {
26567
+ const { initialData = null, apiEndpoint } = options;
26568
+ const effectiveEndpoint = _nullishCoalesce(apiEndpoint, () => ( `/api/legal/${docType}`));
26569
+ const [data, setData] = _react.useState.call(void 0, _nullishCoalesce(initialData, () => ( null)));
26570
+ const [isLoading, setIsLoading] = _react.useState.call(void 0, !initialData);
26571
+ const [error, setError] = _react.useState.call(void 0, null);
26572
+ const fetchDocument = _react.useCallback.call(void 0, async () => {
26573
+ try {
26574
+ setIsLoading(true);
26575
+ setError(null);
26576
+ const response = await fetch(effectiveEndpoint);
26577
+ if (!response.ok) {
26578
+ throw new Error(
26579
+ `Failed to fetch ${docType} document: ${response.status} ${response.statusText}`
26580
+ );
26581
+ }
26582
+ const result = await response.json();
26583
+ if (!result.content) {
26584
+ throw new Error(`${docType} document content is empty`);
26585
+ }
26586
+ setData(result);
26587
+ } catch (err) {
26588
+ const errorMessage = err instanceof Error ? err.message : "Unknown error occurred";
26589
+ console.error(`Error fetching ${docType} document:`, err);
26590
+ setError(errorMessage);
26591
+ } finally {
26592
+ setIsLoading(false);
26593
+ }
26594
+ }, [docType, effectiveEndpoint]);
26595
+ _react.useEffect.call(void 0, () => {
26596
+ setData(_nullishCoalesce(initialData, () => ( null)));
26597
+ setError(null);
26598
+ setIsLoading(!initialData);
26599
+ }, [docType, initialData]);
26600
+ _react.useEffect.call(void 0, () => {
26601
+ if (initialData) return;
26602
+ fetchDocument();
26603
+ }, [fetchDocument, initialData]);
26604
+ const refetch = () => {
26605
+ fetchDocument();
26606
+ };
26607
+ return {
26608
+ data,
26609
+ isLoading,
26610
+ error,
26611
+ refetch
26612
+ };
26613
+ }
26614
+
26615
+ // src/components/shared/legal-document/legal-document-page.tsx
26616
+
26617
+ function LegalDocumentPage({
26618
+ docType,
26619
+ title,
26620
+ fallbackDescription,
26621
+ contactEmail,
26622
+ errorContactPrompt,
26623
+ errorTitle,
26624
+ emptyStateMessage,
26625
+ initialData = null,
26626
+ initialLastUpdatedLabel = null,
26627
+ apiEndpoint,
26628
+ MarkdownRenderer = SimpleMarkdownRenderer,
26629
+ backButton
26630
+ }) {
26631
+ const router = _chunkG7UE6RKVcjs.useRouter.call(void 0, );
26632
+ const { data, isLoading, error } = useLegalDocs(docType, { initialData, apiEndpoint });
26633
+ const backCfg = backButton === false ? void 0 : {
26634
+ label: _nullishCoalesce(_optionalChain([backButton, 'optionalAccess', _534 => _534.label]), () => ( "Back to home")),
26635
+ onClick: () => router.push(_nullishCoalesce(_optionalChain([backButton, 'optionalAccess', _535 => _535.href]), () => ( "/")))
26636
+ };
26637
+ const fallbackLastUpdatedLabel = _optionalChain([data, 'optionalAccess', _536 => _536.lastSynced]) != null ? formatLegalDate(data.lastSynced) : null;
26638
+ const effectiveLastUpdatedLabel = _nullishCoalesce(initialLastUpdatedLabel, () => ( fallbackLastUpdatedLabel));
26639
+ const customTitle = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-4", children: [
26640
+ /* @__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: [
26641
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: title }),
26642
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-accent", children: "." })
26643
+ ] }),
26644
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: "font-['DM_Sans'] text-base md:text-lg text-ods-text-secondary max-w-2xl", children: [
26645
+ effectiveLastUpdatedLabel ? `Last Updated: ${effectiveLastUpdatedLabel}` : fallbackDescription,
26646
+ _optionalChain([data, 'optionalAccess', _537 => _537.sourceFile]) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "block text-sm mt-1 opacity-75", children: [
26647
+ "Source: ",
26648
+ data.sourceFile
26649
+ ] })
26650
+ ] })
26651
+ ] });
26652
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, PageShell, { children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, PageLayout, { backButton: backCfg, children: [
26653
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-col gap-4", children: customTitle }),
26654
+ /* @__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 ? (
26655
+ // Loading skeleton matching Knowledge Hub pattern
26656
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-6", children: [
26657
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-10 bg-ods-skeleton rounded-lg w-3/4 animate-pulse" }),
26658
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4", children: [
26659
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-4 bg-ods-skeleton rounded w-full animate-pulse" }),
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-5/6 animate-pulse" })
26662
+ ] }),
26663
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-32 bg-ods-card border border-ods-border rounded-lg animate-pulse" }),
26664
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4", children: [
26665
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-4 bg-ods-skeleton rounded w-full animate-pulse" }),
26666
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-4 bg-ods-skeleton rounded w-4/5 animate-pulse" })
26667
+ ] })
26668
+ ] })
26669
+ ) : error ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "text-center space-y-4", children: [
26670
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "bg-red-900/20 border border-red-700 rounded-lg p-6", children: [
26671
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-red-400 mb-2", children: errorTitle }),
26672
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-red-300 text-sm", children: error })
26673
+ ] }),
26674
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "text-ods-text-secondary", children: [
26675
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { children: errorContactPrompt }),
26676
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "a", { href: `mailto:${contactEmail}`, className: "text-ods-accent hover:underline", children: contactEmail })
26677
+ ] })
26678
+ ] }) : data ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
26679
+ MarkdownRenderer,
26680
+ {
26681
+ content: data.content,
26682
+ sectionIds: data.sections || [],
26683
+ demoteMarkdownH1ToH2: true
26684
+ }
26685
+ ) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "text-center text-ods-text-secondary py-16", children: [
26686
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-xl", children: emptyStateMessage }),
26687
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: "mt-2", children: [
26688
+ "Please contact",
26689
+ " ",
26690
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "a", { href: `mailto:${contactEmail}`, className: "text-ods-accent hover:underline", children: contactEmail }),
26691
+ " ",
26692
+ "for more information."
26693
+ ] })
26694
+ ] }) }) }) }) })
26695
+ ] }) });
26696
+ }
26697
+
25730
26698
  // src/components/ui/info-card.tsx
25731
26699
 
25732
26700
  function InfoCard({ data, className = "" }) {
@@ -26320,7 +27288,7 @@ function TagsManager({
26320
27288
  const name = search.trim();
26321
27289
  if (!name) return;
26322
27290
  const result = await onCreateTag(name);
26323
- if (_optionalChain([result, 'optionalAccess', _530 => _530.id])) {
27291
+ if (_optionalChain([result, 'optionalAccess', _538 => _538.id])) {
26324
27292
  onChange([...selectedIds, result.id]);
26325
27293
  setSearch("");
26326
27294
  }
@@ -26328,7 +27296,7 @@ function TagsManager({
26328
27296
  const startEdit = React71.useCallback((id, name) => {
26329
27297
  setEditingId(id);
26330
27298
  setEditingName(name);
26331
- setTimeout(() => _optionalChain([editInputRef, 'access', _531 => _531.current, 'optionalAccess', _532 => _532.focus, 'call', _533 => _533()]), 0);
27299
+ setTimeout(() => _optionalChain([editInputRef, 'access', _539 => _539.current, 'optionalAccess', _540 => _540.focus, 'call', _541 => _541()]), 0);
26332
27300
  }, []);
26333
27301
  const confirmEdit = React71.useCallback(async () => {
26334
27302
  if (!onUpdateTag || !editingId || !editingName.trim()) return;
@@ -26355,7 +27323,7 @@ function TagsManager({
26355
27323
  e.stopPropagation();
26356
27324
  onChange([]);
26357
27325
  setSearch("");
26358
- _optionalChain([inputRef, 'access', _534 => _534.current, 'optionalAccess', _535 => _535.focus, 'call', _536 => _536()]);
27326
+ _optionalChain([inputRef, 'access', _542 => _542.current, 'optionalAccess', _543 => _543.focus, 'call', _544 => _544()]);
26359
27327
  },
26360
27328
  [onChange]
26361
27329
  );
@@ -26454,10 +27422,10 @@ function TagsManager({
26454
27422
  align: "start",
26455
27423
  onOpenAutoFocus: (e) => {
26456
27424
  e.preventDefault();
26457
- _optionalChain([inputRef, 'access', _537 => _537.current, 'optionalAccess', _538 => _538.focus, 'call', _539 => _539()]);
27425
+ _optionalChain([inputRef, 'access', _545 => _545.current, 'optionalAccess', _546 => _546.focus, 'call', _547 => _547()]);
26458
27426
  },
26459
27427
  onInteractOutside: (e) => {
26460
- if (_optionalChain([containerRef, 'access', _540 => _540.current, 'optionalAccess', _541 => _541.contains, 'call', _542 => _542(e.target)])) {
27428
+ if (_optionalChain([containerRef, 'access', _548 => _548.current, 'optionalAccess', _549 => _549.contains, 'call', _550 => _550(e.target)])) {
26461
27429
  e.preventDefault();
26462
27430
  }
26463
27431
  },
@@ -27561,19 +28529,19 @@ function TabNavigation({
27561
28529
  const validTabIds = _react.useMemo.call(void 0, () => new Set(tabs.map((t) => t.id)), [tabs]);
27562
28530
  const getInitialTab = () => {
27563
28531
  if (isUrlSyncEnabled) {
27564
- const fromUrl = _optionalChain([searchParams, 'optionalAccess', _543 => _543.get, 'call', _544 => _544(paramName)]) || "";
28532
+ const fromUrl = _optionalChain([searchParams, 'optionalAccess', _551 => _551.get, 'call', _552 => _552(paramName)]) || "";
27565
28533
  if (validTabIds.has(fromUrl)) {
27566
28534
  return fromUrl;
27567
28535
  }
27568
28536
  }
27569
- return defaultTab || _optionalChain([tabs, 'access', _545 => _545[0], 'optionalAccess', _546 => _546.id]) || "";
28537
+ return defaultTab || _optionalChain([tabs, 'access', _553 => _553[0], 'optionalAccess', _554 => _554.id]) || "";
27570
28538
  };
27571
28539
  const [internalActiveTab, setInternalActiveTab] = _react.useState.call(void 0, getInitialTab);
27572
28540
  const activeTab = isUrlSyncEnabled ? internalActiveTab : controlledActiveTab || "";
27573
28541
  _react.useEffect.call(void 0, () => {
27574
28542
  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]) || "";
28543
+ const fromUrl = _optionalChain([searchParams, 'optionalAccess', _555 => _555.get, 'call', _556 => _556(paramName)]) || "";
28544
+ const nextTab = validTabIds.has(fromUrl) ? fromUrl : defaultTab || _optionalChain([tabs, 'access', _557 => _557[0], 'optionalAccess', _558 => _558.id]) || "";
27577
28545
  if (nextTab !== internalActiveTab) {
27578
28546
  setInternalActiveTab(nextTab);
27579
28547
  }
@@ -27581,13 +28549,13 @@ function TabNavigation({
27581
28549
  const handleTabChange = (tabId) => {
27582
28550
  if (isUrlSyncEnabled) {
27583
28551
  setInternalActiveTab(tabId);
27584
- const params = new URLSearchParams(_optionalChain([searchParams, 'optionalAccess', _551 => _551.toString, 'call', _552 => _552()]));
28552
+ const params = new URLSearchParams(_optionalChain([searchParams, 'optionalAccess', _559 => _559.toString, 'call', _560 => _560()]));
27585
28553
  params.set(paramName, tabId);
27586
28554
  const method = replaceState ? "replace" : "push";
27587
28555
  router[method](`${pathname}?${params.toString()}`);
27588
- _optionalChain([controlledOnTabChange, 'optionalCall', _553 => _553(tabId)]);
28556
+ _optionalChain([controlledOnTabChange, 'optionalCall', _561 => _561(tabId)]);
27589
28557
  } else {
27590
- _optionalChain([controlledOnTabChange, 'optionalCall', _554 => _554(tabId)]);
28558
+ _optionalChain([controlledOnTabChange, 'optionalCall', _562 => _562(tabId)]);
27591
28559
  }
27592
28560
  };
27593
28561
  const scrollRef = _react.useRef.call(void 0, null);
@@ -27675,7 +28643,7 @@ function TabNavigation({
27675
28643
  var getTabById = (tabs, tabId) => tabs.find((tab) => tab.id === tabId);
27676
28644
  var getTabComponent = (tabs, tabId) => {
27677
28645
  const tab = getTabById(tabs, tabId);
27678
- return _optionalChain([tab, 'optionalAccess', _555 => _555.component]) || null;
28646
+ return _optionalChain([tab, 'optionalAccess', _563 => _563.component]) || null;
27679
28647
  };
27680
28648
 
27681
28649
  // src/components/ui/alert.tsx
@@ -28116,16 +29084,16 @@ function FilterModal({
28116
29084
  };
28117
29085
  const handleReset = () => {
28118
29086
  onFilterChange({});
28119
- _optionalChain([onTagsChange, 'optionalCall', _556 => _556([])]);
29087
+ _optionalChain([onTagsChange, 'optionalCall', _564 => _564([])]);
28120
29088
  onClose();
28121
29089
  };
28122
29090
  const handleApply = () => {
28123
29091
  onFilterChange(selectedFilters);
28124
- _optionalChain([onTagsChange, 'optionalCall', _557 => _557(pendingTags)]);
29092
+ _optionalChain([onTagsChange, 'optionalCall', _565 => _565(pendingTags)]);
28125
29093
  onClose();
28126
29094
  };
28127
29095
  const getColumnDirection = (columnKey) => {
28128
- return _optionalChain([sortConfig, 'optionalAccess', _558 => _558.sortBy]) === columnKey ? sortConfig.sortDirection : void 0;
29096
+ return _optionalChain([sortConfig, 'optionalAccess', _566 => _566.sortBy]) === columnKey ? sortConfig.sortDirection : void 0;
28129
29097
  };
28130
29098
  const hasSort = !!sortConfig && sortConfig.columns.length > 0;
28131
29099
  const hasFilterGroups = filterGroups.length > 0;
@@ -28174,7 +29142,7 @@ function FilterModal({
28174
29142
  {
28175
29143
  column,
28176
29144
  currentDirection: getColumnDirection(column.key),
28177
- onSort: (direction) => _optionalChain([onSort, 'optionalCall', _559 => _559(column.key, direction)]),
29145
+ onSort: (direction) => _optionalChain([onSort, 'optionalCall', _567 => _567(column.key, direction)]),
28178
29146
  onClear: onSortClear ? () => onSortClear(column.key) : void 0
28179
29147
  },
28180
29148
  column.key
@@ -29093,26 +30061,26 @@ function DeviceCard({
29093
30061
  ] }),
29094
30062
  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
30063
  ] }),
29096
- _optionalChain([actions, 'access', _560 => _560.moreButton, 'optionalAccess', _561 => _561.visible]) !== false && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
30064
+ _optionalChain([actions, 'access', _568 => _568.moreButton, 'optionalAccess', _569 => _569.visible]) !== false && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
29097
30065
  "div",
29098
30066
  {
29099
30067
  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
30068
  onClick: (e) => {
29101
30069
  e.stopPropagation();
29102
- _optionalChain([actions, 'access', _562 => _562.moreButton, 'optionalAccess', _563 => _563.onClick, 'optionalCall', _564 => _564()]);
30070
+ _optionalChain([actions, 'access', _570 => _570.moreButton, 'optionalAccess', _571 => _571.onClick, 'optionalCall', _572 => _572()]);
29103
30071
  },
29104
30072
  children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVJTFBYVGcjs.Ellipsis01Icon, { className: "text-ods-text-primary" })
29105
30073
  }
29106
30074
  ),
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(
30075
+ _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 }),
30076
+ _optionalChain([actions, 'access', _577 => _577.customActions, 'optionalAccess', _578 => _578.map, 'call', _579 => _579(
29109
30077
  (action, index) => action.visible !== false && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
29110
30078
  "div",
29111
30079
  {
29112
30080
  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
30081
  onClick: (e) => {
29114
30082
  e.stopPropagation();
29115
- _optionalChain([action, 'access', _572 => _572.onClick, 'optionalCall', _573 => _573()]);
30083
+ _optionalChain([action, 'access', _580 => _580.onClick, 'optionalCall', _581 => _581()]);
29116
30084
  },
29117
30085
  children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-h3 text-ods-text-primary text-nowrap tracking-[-0.36px]", children: action.label })
29118
30086
  },
@@ -29545,7 +30513,7 @@ function MoreActionsMenu({
29545
30513
  ] });
29546
30514
  const handleActivate = (e) => {
29547
30515
  e.stopPropagation();
29548
- if (!item.disabled) _optionalChain([item, 'access', _574 => _574.onClick, 'optionalCall', _575 => _575()]);
30516
+ if (!item.disabled) _optionalChain([item, 'access', _582 => _582.onClick, 'optionalCall', _583 => _583()]);
29549
30517
  };
29550
30518
  if (item.href) {
29551
30519
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -29675,7 +30643,7 @@ function OrganizationCard({
29675
30643
  const handleActionClick = (e) => {
29676
30644
  e.preventDefault();
29677
30645
  e.stopPropagation();
29678
- _optionalChain([actionButton, 'optionalAccess', _576 => _576.onClick, 'call', _577 => _577(organization, e)]);
30646
+ _optionalChain([actionButton, 'optionalAccess', _584 => _584.onClick, 'call', _585 => _585(organization, e)]);
29679
30647
  };
29680
30648
  const card = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
29681
30649
  "div",
@@ -29828,7 +30796,7 @@ var LogCard = ({ log, isLast, showConnector, onClick }) => {
29828
30796
  onKeyDown: (e) => {
29829
30797
  if (e.key === "Enter" || e.key === " ") {
29830
30798
  e.preventDefault();
29831
- _optionalChain([onClick, 'optionalCall', _578 => _578()]);
30799
+ _optionalChain([onClick, 'optionalCall', _586 => _586()]);
29832
30800
  }
29833
30801
  },
29834
30802
  children: [
@@ -29929,7 +30897,7 @@ var LogsList = React96.forwardRef(({
29929
30897
  log,
29930
30898
  isLast: index === logs.length - 1,
29931
30899
  showConnector,
29932
- onClick: () => _optionalChain([onLogClick, 'optionalCall', _579 => _579(log)])
30900
+ onClick: () => _optionalChain([onLogClick, 'optionalCall', _587 => _587(log)])
29933
30901
  },
29934
30902
  log.id
29935
30903
  ))
@@ -29940,74 +30908,6 @@ var LogsList = React96.forwardRef(({
29940
30908
  });
29941
30909
  LogsList.displayName = "LogsList";
29942
30910
 
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
30911
  // src/assets/index.ts
30012
30912
  var assets = {};
30013
30913
 
@@ -30184,125 +31084,6 @@ var TooltipContent = React98.forwardRef(({ className, sideOffset = 4, ...props }
30184
31084
  ) }));
30185
31085
  TooltipContent.displayName = TooltipPrimitive.Content.displayName;
30186
31086
 
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
31087
  // src/components/ui/content-loader.tsx
30307
31088
  _chunk664KA5FIcjs.init_cn.call(void 0, );
30308
31089
 
@@ -30518,7 +31299,7 @@ function CursorPaginationSimple({
30518
31299
  {
30519
31300
  variant: "transparent",
30520
31301
  size: "icon",
30521
- onClick: () => _optionalChain([onPrevious, 'optionalCall', _580 => _580("")]),
31302
+ onClick: () => _optionalChain([onPrevious, 'optionalCall', _588 => _588("")]),
30522
31303
  disabled: !hasPreviousPage || loading,
30523
31304
  className: "h-8 w-8",
30524
31305
  leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ChevronLeft, { className: "h-4 w-4" }),
@@ -30530,7 +31311,7 @@ function CursorPaginationSimple({
30530
31311
  {
30531
31312
  variant: "transparent",
30532
31313
  size: "icon",
30533
- onClick: () => _optionalChain([onNext, 'optionalCall', _581 => _581("")]),
31314
+ onClick: () => _optionalChain([onNext, 'optionalCall', _589 => _589("")]),
30534
31315
  disabled: !hasNextPage || loading,
30535
31316
  className: "h-8 w-8",
30536
31317
  rightIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ChevronRight, { className: "h-4 w-4" }),
@@ -30590,7 +31371,7 @@ function TableColumnFilterDropdown({
30590
31371
  placement = "bottom-start",
30591
31372
  dropdownClassName = "min-w-[240px]"
30592
31373
  }) {
30593
- const activeCount = _optionalChain([filters, 'optionalAccess', _582 => _582[columnKey], 'optionalAccess', _583 => _583.length]) || 0;
31374
+ const activeCount = _optionalChain([filters, 'optionalAccess', _590 => _590[columnKey], 'optionalAccess', _591 => _591.length]) || 0;
30594
31375
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
30595
31376
  FiltersDropdown,
30596
31377
  {
@@ -30633,7 +31414,7 @@ function TableColumnFilterDropdown({
30633
31414
  delete newFilters[columnKey];
30634
31415
  onFilterChange(newFilters);
30635
31416
  },
30636
- currentFilters: { [columnKey]: _optionalChain([filters, 'optionalAccess', _584 => _584[columnKey]]) || [] },
31417
+ currentFilters: { [columnKey]: _optionalChain([filters, 'optionalAccess', _592 => _592[columnKey]]) || [] },
30637
31418
  placement,
30638
31419
  dropdownClassName
30639
31420
  }
@@ -30930,7 +31711,7 @@ function TableRow({
30930
31711
  const keys = column.key.split(".");
30931
31712
  let value = item;
30932
31713
  for (const key of keys) {
30933
- value = _optionalChain([value, 'optionalAccess', _585 => _585[key]]);
31714
+ value = _optionalChain([value, 'optionalAccess', _593 => _593[key]]);
30934
31715
  }
30935
31716
  if (value === null || value === void 0) {
30936
31717
  return "-";
@@ -31000,7 +31781,7 @@ function TableRow({
31000
31781
  // src/components/ui/table/table.tsx
31001
31782
 
31002
31783
  function injectSyntheticColumns(columns, rowActions, renderRowActions, rowHref) {
31003
- const hasActions = Boolean(_optionalChain([rowActions, 'optionalAccess', _586 => _586.length])) || Boolean(renderRowActions);
31784
+ const hasActions = Boolean(_optionalChain([rowActions, 'optionalAccess', _594 => _594.length])) || Boolean(renderRowActions);
31004
31785
  const result = [...columns];
31005
31786
  if (hasActions) {
31006
31787
  const actionsColumn = {
@@ -31094,7 +31875,7 @@ function Table({
31094
31875
  return rowKey(item);
31095
31876
  }
31096
31877
  const key = item[rowKey];
31097
- return _optionalChain([key, 'optionalAccess', _587 => _587.toString, 'call', _588 => _588()]) || index.toString();
31878
+ return _optionalChain([key, 'optionalAccess', _595 => _595.toString, 'call', _596 => _596()]) || index.toString();
31098
31879
  };
31099
31880
  const getRowClassName = (item, index) => {
31100
31881
  if (typeof rowClassName === "function") {
@@ -31128,23 +31909,23 @@ function Table({
31128
31909
  const allSelected = selectedRows.length > 0 && selectedRows.length === data.length;
31129
31910
  const someSelected = selectedRows.length > 0 && selectedRows.length < data.length;
31130
31911
  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]);
31912
+ const onLoadMoreRef = _react.useRef.call(void 0, _optionalChain([infiniteScroll, 'optionalAccess', _597 => _597.onLoadMore]));
31913
+ onLoadMoreRef.current = _optionalChain([infiniteScroll, 'optionalAccess', _598 => _598.onLoadMore]);
31133
31914
  _react.useEffect.call(void 0, () => {
31134
- if (!_optionalChain([infiniteScroll, 'optionalAccess', _591 => _591.hasNextPage]) || infiniteScroll.isFetchingNextPage) return;
31915
+ if (!_optionalChain([infiniteScroll, 'optionalAccess', _599 => _599.hasNextPage]) || infiniteScroll.isFetchingNextPage) return;
31135
31916
  const sentinel = sentinelRef.current;
31136
31917
  if (!sentinel) return;
31137
31918
  const observer = new IntersectionObserver(
31138
31919
  (entries) => {
31139
- if (_optionalChain([entries, 'access', _592 => _592[0], 'optionalAccess', _593 => _593.isIntersecting])) {
31140
- _optionalChain([onLoadMoreRef, 'access', _594 => _594.current, 'optionalCall', _595 => _595()]);
31920
+ if (_optionalChain([entries, 'access', _600 => _600[0], 'optionalAccess', _601 => _601.isIntersecting])) {
31921
+ _optionalChain([onLoadMoreRef, 'access', _602 => _602.current, 'optionalCall', _603 => _603()]);
31141
31922
  }
31142
31923
  },
31143
31924
  { rootMargin: "200px" }
31144
31925
  );
31145
31926
  observer.observe(sentinel);
31146
31927
  return () => observer.disconnect();
31147
- }, [_optionalChain([infiniteScroll, 'optionalAccess', _596 => _596.hasNextPage]), _optionalChain([infiniteScroll, 'optionalAccess', _597 => _597.isFetchingNextPage])]);
31928
+ }, [_optionalChain([infiniteScroll, 'optionalAccess', _604 => _604.hasNextPage]), _optionalChain([infiniteScroll, 'optionalAccess', _605 => _605.isFetchingNextPage])]);
31148
31929
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk664KA5FIcjs.cn.call(void 0, "flex flex-col gap-1 w-full", containerClassName), children: [
31149
31930
  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
31931
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "text-ods-text-secondary text-sm", children: [
@@ -31215,7 +31996,7 @@ function Table({
31215
31996
  },
31216
31997
  getRowKey(item, index)
31217
31998
  )),
31218
- _optionalChain([infiniteScroll, 'optionalAccess', _598 => _598.isFetchingNextPage]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
31999
+ _optionalChain([infiniteScroll, 'optionalAccess', _606 => _606.isFetchingNextPage]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
31219
32000
  TableCardSkeleton,
31220
32001
  {
31221
32002
  columns,
@@ -31224,7 +32005,7 @@ function Table({
31224
32005
  hasChevron: Boolean(rowHref)
31225
32006
  }
31226
32007
  ),
31227
- _optionalChain([infiniteScroll, 'optionalAccess', _599 => _599.hasNextPage]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: sentinelRef, className: "h-1", "aria-hidden": "true" }),
32008
+ _optionalChain([infiniteScroll, 'optionalAccess', _607 => _607.hasNextPage]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: sentinelRef, className: "h-1", "aria-hidden": "true" }),
31228
32009
  !infiniteScroll && Array.from({ length: Math.max(0, skeletonRows - data.length) }).map((_, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
31229
32010
  "div",
31230
32011
  {
@@ -31582,7 +32363,7 @@ function QueryReportTable({
31582
32363
  );
31583
32364
  const handleExport = () => {
31584
32365
  exportToCSV(data, columns, exportFilename);
31585
- _optionalChain([onExport, 'optionalCall', _600 => _600()]);
32366
+ _optionalChain([onExport, 'optionalCall', _608 => _608()]);
31586
32367
  };
31587
32368
  const tableMinWidth = columns.length * (columnWidth + 16);
31588
32369
  const {
@@ -31755,7 +32536,7 @@ function DataTableColumnFilter({
31755
32536
  align = "left"
31756
32537
  }) {
31757
32538
  const currentValue = column.getFilterValue();
31758
- const activeCount = _nullishCoalesce(_optionalChain([currentValue, 'optionalAccess', _601 => _601.length]), () => ( 0));
32539
+ const activeCount = _nullishCoalesce(_optionalChain([currentValue, 'optionalAccess', _609 => _609.length]), () => ( 0));
31759
32540
  const sections = _react.useMemo.call(void 0,
31760
32541
  () => [
31761
32542
  {
@@ -31835,7 +32616,7 @@ function DataTableHeader({
31835
32616
  const hasVisibleHeaderCell = headerGroup.headers.some((header) => {
31836
32617
  if (header.isPlaceholder) return false;
31837
32618
  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]));
32619
+ return Boolean(_optionalChain([header, 'access', _610 => _610.column, 'access', _611 => _611.columnDef, 'access', _612 => _612.meta, 'optionalAccess', _613 => _613.filter]));
31839
32620
  });
31840
32621
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
31841
32622
  "div",
@@ -31865,20 +32646,20 @@ function HeaderCell({ header, isLgUp, sort, onSortChange }) {
31865
32646
  if (header.isPlaceholder) return null;
31866
32647
  const column = header.column;
31867
32648
  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;
32649
+ const hasFilter = Boolean(_optionalChain([meta, 'optionalAccess', _614 => _614.filter]));
32650
+ const align = _nullishCoalesce(_optionalChain([meta, 'optionalAccess', _615 => _615.align]), () => ( "left"));
32651
+ const canSort = _optionalChain([meta, 'optionalAccess', _616 => _616.sortable]) === true;
32652
+ const sortDir = _optionalChain([sort, 'optionalAccess', _617 => _617.id]) === column.id ? sort.desc ? "desc" : "asc" : false;
31872
32653
  if (!isLgUp && !hasFilter) return null;
31873
32654
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
31874
32655
  "div",
31875
32656
  {
31876
32657
  className: _chunk664KA5FIcjs.cn.call(void 0,
31877
32658
  "flex items-stretch",
31878
- isLgUp && (_optionalChain([meta, 'optionalAccess', _610 => _610.width]) || "flex-1 min-w-0"),
31879
- _optionalChain([meta, 'optionalAccess', _611 => _611.headerClassName]),
32659
+ isLgUp && (_optionalChain([meta, 'optionalAccess', _618 => _618.width]) || "flex-1 min-w-0"),
32660
+ _optionalChain([meta, 'optionalAccess', _619 => _619.headerClassName]),
31880
32661
  // Don't apply hide classes if column is filterable on tablet (keep filter accessible)
31881
- !(hasFilter && !isLgUp) && getHideClasses2(_optionalChain([meta, 'optionalAccess', _612 => _612.hideAt]))
32662
+ !(hasFilter && !isLgUp) && getHideClasses2(_optionalChain([meta, 'optionalAccess', _620 => _620.hideAt]))
31882
32663
  ),
31883
32664
  children: hasFilter ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
31884
32665
  DataTableColumnFilter,
@@ -31897,7 +32678,7 @@ function HeaderCell({ header, isLgUp, sort, onSortChange }) {
31897
32678
  isLgUp && alignJustify(align),
31898
32679
  canSort && "group cursor-pointer"
31899
32680
  ),
31900
- onClick: canSort ? () => _optionalChain([onSortChange, 'optionalCall', _613 => _613(column.id)]) : void 0,
32681
+ onClick: canSort ? () => _optionalChain([onSortChange, 'optionalCall', _621 => _621(column.id)]) : void 0,
31901
32682
  children: [
31902
32683
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, HeaderLabel, { header }),
31903
32684
  canSort && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SortIcon, { sorted: sortDir })
@@ -31981,7 +32762,7 @@ function DataTableSkeleton({
31981
32762
  }) {
31982
32763
  const table = useDataTableContext();
31983
32764
  const columns = table.getVisibleFlatColumns();
31984
- const firstColumnId = _optionalChain([columns, 'access', _614 => _614[0], 'optionalAccess', _615 => _615.id]);
32765
+ const firstColumnId = _optionalChain([columns, 'access', _622 => _622[0], 'optionalAccess', _623 => _623.id]);
31985
32766
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, { children: Array.from({ length: rows }).map((_, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
31986
32767
  "div",
31987
32768
  {
@@ -32005,7 +32786,7 @@ function DataTableSkeleton({
32005
32786
  {
32006
32787
  className: _chunk664KA5FIcjs.cn.call(void 0,
32007
32788
  "flex flex-col justify-center shrink-0",
32008
- _optionalChain([meta, 'optionalAccess', _616 => _616.width]) || "flex-1"
32789
+ _optionalChain([meta, 'optionalAccess', _624 => _624.width]) || "flex-1"
32009
32790
  ),
32010
32791
  children: [
32011
32792
  /* @__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 +32832,7 @@ function DataTableRowImpl({
32051
32832
  const handleClick = _react.useCallback.call(void 0,
32052
32833
  (e) => {
32053
32834
  const target = e.target;
32054
- if (!_optionalChain([containerRef, 'access', _617 => _617.current, 'optionalAccess', _618 => _618.contains, 'call', _619 => _619(target)])) {
32835
+ if (!_optionalChain([containerRef, 'access', _625 => _625.current, 'optionalAccess', _626 => _626.contains, 'call', _627 => _627(target)])) {
32055
32836
  if (isLinkMode) e.preventDefault();
32056
32837
  return;
32057
32838
  }
@@ -32059,7 +32840,7 @@ function DataTableRowImpl({
32059
32840
  if (isLinkMode) e.preventDefault();
32060
32841
  return;
32061
32842
  }
32062
- _optionalChain([onClick, 'optionalCall', _620 => _620(row.original)]);
32843
+ _optionalChain([onClick, 'optionalCall', _628 => _628(row.original)]);
32063
32844
  },
32064
32845
  [onClick, row.original, isLinkMode]
32065
32846
  );
@@ -32082,10 +32863,10 @@ function DataTableRowImpl({
32082
32863
  {
32083
32864
  className: _chunk664KA5FIcjs.cn.call(void 0,
32084
32865
  "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]))
32866
+ alignJustify(_optionalChain([meta, 'optionalAccess', _629 => _629.align])),
32867
+ _optionalChain([meta, 'optionalAccess', _630 => _630.width]) || "flex-1 min-w-0",
32868
+ _optionalChain([meta, 'optionalAccess', _631 => _631.cellClassName]),
32869
+ getHideClasses2(_optionalChain([meta, 'optionalAccess', _632 => _632.hideAt]))
32089
32870
  ),
32090
32871
  children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CellContent, { children: _reacttable.flexRender.call(void 0, cell.column.columnDef.cell, cell.getContext()) })
32091
32872
  },
@@ -32150,7 +32931,7 @@ function DataTableBody({
32150
32931
  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
32932
  rows.map((row, index) => {
32152
32933
  const item = row.original;
32153
- const href = _nullishCoalesce(_optionalChain([rowHref, 'optionalCall', _625 => _625(item)]), () => ( void 0));
32934
+ const href = _nullishCoalesce(_optionalChain([rowHref, 'optionalCall', _633 => _633(item)]), () => ( void 0));
32154
32935
  const cls = typeof rowClassName === "function" ? rowClassName(item, index) : rowClassName;
32155
32936
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
32156
32937
  DataTableRow,
@@ -32214,7 +32995,7 @@ function DataTableInfiniteFooter({
32214
32995
  if (!sentinel) return;
32215
32996
  const observer = new IntersectionObserver(
32216
32997
  (entries) => {
32217
- if (_optionalChain([entries, 'access', _626 => _626[0], 'optionalAccess', _627 => _627.isIntersecting])) onLoadMoreRef.current();
32998
+ if (_optionalChain([entries, 'access', _634 => _634[0], 'optionalAccess', _635 => _635.isIntersecting])) onLoadMoreRef.current();
32218
32999
  },
32219
33000
  { rootMargin }
32220
33001
  );
@@ -32262,7 +33043,7 @@ function DataTableRowCount({
32262
33043
  const table = useDataTableContext();
32263
33044
  const count = _nullishCoalesce(totalCount, () => ( table.getRowModel().rows.length));
32264
33045
  if (hideWhenEmpty && count === 0) return null;
32265
- const label = _nullishCoalesce(_optionalChain([pluralize, 'optionalCall', _628 => _628(count, itemName)]), () => ( (count === 1 ? itemName : `${itemName}s`)));
33046
+ const label = _nullishCoalesce(_optionalChain([pluralize, 'optionalCall', _636 => _636(count, itemName)]), () => ( (count === 1 ? itemName : `${itemName}s`)));
32266
33047
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
32267
33048
  "span",
32268
33049
  {
@@ -32418,7 +33199,7 @@ function SearchInput({
32418
33199
  if (!showHiddenTags) return;
32419
33200
  const handleClick = (e) => {
32420
33201
  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)])) {
33202
+ 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
33203
  setShowHiddenTags(false);
32423
33204
  }
32424
33205
  };
@@ -32466,10 +33247,10 @@ function SearchInput({
32466
33247
  } else {
32467
33248
  setInternalValue("");
32468
33249
  }
32469
- _optionalChain([inputRef, 'access', _635 => _635.current, 'optionalAccess', _636 => _636.focus, 'call', _637 => _637()]);
33250
+ _optionalChain([inputRef, 'access', _643 => _643.current, 'optionalAccess', _644 => _644.focus, 'call', _645 => _645()]);
32470
33251
  };
32471
33252
  const handleResultClick = (result, e) => {
32472
- _optionalChain([onResultSelect, 'optionalCall', _638 => _638(
33253
+ _optionalChain([onResultSelect, 'optionalCall', _646 => _646(
32473
33254
  result,
32474
33255
  e ? {
32475
33256
  metaKey: e.metaKey,
@@ -32501,7 +33282,7 @@ function SearchInput({
32501
33282
  if (highlightedIndex >= 0 && flatResults[highlightedIndex]) {
32502
33283
  handleResultClick(flatResults[highlightedIndex]);
32503
33284
  } else {
32504
- _optionalChain([onSubmit, 'optionalCall', _639 => _639(currentValue)]);
33285
+ _optionalChain([onSubmit, 'optionalCall', _647 => _647(currentValue)]);
32505
33286
  }
32506
33287
  break;
32507
33288
  case "Escape":
@@ -32579,7 +33360,7 @@ function SearchInput({
32579
33360
  dropdownVisible && "!border-ods-accent"
32580
33361
  ),
32581
33362
  onClick: () => {
32582
- _optionalChain([inputRef, 'access', _640 => _640.current, 'optionalAccess', _641 => _641.focus, 'call', _642 => _642()]);
33363
+ _optionalChain([inputRef, 'access', _648 => _648.current, 'optionalAccess', _649 => _649.focus, 'call', _650 => _650()]);
32583
33364
  setIsOpen(true);
32584
33365
  },
32585
33366
  children: [
@@ -32663,10 +33444,10 @@ function SearchInput({
32663
33444
  align: "start",
32664
33445
  onOpenAutoFocus: (e) => {
32665
33446
  e.preventDefault();
32666
- _optionalChain([inputRef, 'access', _643 => _643.current, 'optionalAccess', _644 => _644.focus, 'call', _645 => _645()]);
33447
+ _optionalChain([inputRef, 'access', _651 => _651.current, 'optionalAccess', _652 => _652.focus, 'call', _653 => _653()]);
32667
33448
  },
32668
33449
  onInteractOutside: (e) => {
32669
- if (_optionalChain([containerRef, 'access', _646 => _646.current, 'optionalAccess', _647 => _647.contains, 'call', _648 => _648(e.target)])) {
33450
+ if (_optionalChain([containerRef, 'access', _654 => _654.current, 'optionalAccess', _655 => _655.contains, 'call', _656 => _656(e.target)])) {
32670
33451
  e.preventDefault();
32671
33452
  }
32672
33453
  },
@@ -32683,10 +33464,10 @@ function SearchInput({
32683
33464
  ref: hiddenTagsPopupRef,
32684
33465
  items: hiddenChips.map((chip) => ({ label: chip.label, value: chip.id })),
32685
33466
  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
33467
+ 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
33468
  },
32688
33469
  onRemove: (value2) => {
32689
- _optionalChain([onFilterRemove, 'optionalCall', _653 => _653(value2)]);
33470
+ _optionalChain([onFilterRemove, 'optionalCall', _661 => _661(value2)]);
32690
33471
  if (hiddenCount <= 1) setShowHiddenTags(false);
32691
33472
  }
32692
33473
  }
@@ -32737,7 +33518,7 @@ function FilterListItem({
32737
33518
  }) {
32738
33519
  const handleToggle = () => {
32739
33520
  if (disabled) return;
32740
- _optionalChain([onToggle, 'optionalCall', _654 => _654(!selected)]);
33521
+ _optionalChain([onToggle, 'optionalCall', _662 => _662(!selected)]);
32741
33522
  };
32742
33523
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
32743
33524
  "div",
@@ -32784,7 +33565,7 @@ function FilterListItem({
32784
33565
  CheckboxPrimitive4.Root,
32785
33566
  {
32786
33567
  checked: selected,
32787
- onCheckedChange: (c) => _optionalChain([onToggle, 'optionalCall', _655 => _655(c === true)]),
33568
+ onCheckedChange: (c) => _optionalChain([onToggle, 'optionalCall', _663 => _663(c === true)]),
32788
33569
  onClick: (e) => e.stopPropagation(),
32789
33570
  disabled,
32790
33571
  "aria-label": title,
@@ -32883,7 +33664,7 @@ function TagSearchInput({
32883
33664
  if (!showHiddenTags) return;
32884
33665
  const handleClick = (e) => {
32885
33666
  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)])) {
33667
+ 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
33668
  setShowHiddenTags(false);
32888
33669
  }
32889
33670
  };
@@ -32899,13 +33680,13 @@ function TagSearchInput({
32899
33680
  e.preventDefault();
32900
33681
  onSubmit(searchValue);
32901
33682
  }
32902
- _optionalChain([onKeyDown, 'optionalCall', _662 => _662(e)]);
33683
+ _optionalChain([onKeyDown, 'optionalCall', _670 => _670(e)]);
32903
33684
  };
32904
33685
  const handleClearAll = (e) => {
32905
33686
  e.stopPropagation();
32906
33687
  e.preventDefault();
32907
- _optionalChain([onClearAll, 'optionalCall', _663 => _663()]);
32908
- _optionalChain([inputRef, 'access', _664 => _664.current, 'optionalAccess', _665 => _665.focus, 'call', _666 => _666()]);
33688
+ _optionalChain([onClearAll, 'optionalCall', _671 => _671()]);
33689
+ _optionalChain([inputRef, 'access', _672 => _672.current, 'optionalAccess', _673 => _673.focus, 'call', _674 => _674()]);
32909
33690
  };
32910
33691
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { ref: wrapperRef, className: "relative", children: [
32911
33692
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
@@ -32922,7 +33703,7 @@ function TagSearchInput({
32922
33703
  className
32923
33704
  ),
32924
33705
  onClick: () => {
32925
- if (!disabled) _optionalChain([inputRef, 'access', _667 => _667.current, 'optionalAccess', _668 => _668.focus, 'call', _669 => _669()]);
33706
+ if (!disabled) _optionalChain([inputRef, 'access', _675 => _675.current, 'optionalAccess', _676 => _676.focus, 'call', _677 => _677()]);
32926
33707
  },
32927
33708
  children: [
32928
33709
  /* @__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 +33775,7 @@ function TagSearchInput({
32994
33775
  items: hiddenTags,
32995
33776
  disabled,
32996
33777
  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
33778
+ 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
33779
  },
32999
33780
  onRemove: (value) => {
33000
33781
  onTagRemove(value);
@@ -33095,7 +33876,7 @@ function MarkdownEditor({
33095
33876
  const [defaultExtraCommands, setDefaultExtraCommands] = _react.useState.call(void 0, []);
33096
33877
  _react.useEffect.call(void 0, () => {
33097
33878
  Promise.resolve().then(() => _interopRequireWildcard(require("@uiw/react-md-editor"))).then((mod) => {
33098
- if (_optionalChain([mod, 'access', _674 => _674.commands, 'optionalAccess', _675 => _675.getExtraCommands])) {
33879
+ if (_optionalChain([mod, 'access', _682 => _682.commands, 'optionalAccess', _683 => _683.getExtraCommands])) {
33099
33880
  setDefaultExtraCommands(mod.commands.getExtraCommands());
33100
33881
  }
33101
33882
  });
@@ -33129,7 +33910,7 @@ function MarkdownEditor({
33129
33910
  const isImage = file.type.startsWith("image/");
33130
33911
  const markdown = isImage ? `![${file.name}](${url})` : `[${file.name}](${url})`;
33131
33912
  insertTextAtCursor(markdown);
33132
- _optionalChain([onFileUploaded, 'optionalCall', _676 => _676(url, file.name)]);
33913
+ _optionalChain([onFileUploaded, 'optionalCall', _684 => _684(url, file.name)]);
33133
33914
  } catch (error) {
33134
33915
  console.error("File upload failed:", error);
33135
33916
  setUploadProgress("Upload failed. Please try again.");
@@ -33142,7 +33923,7 @@ function MarkdownEditor({
33142
33923
  );
33143
33924
  const handleFileInputChange = _react.useCallback.call(void 0,
33144
33925
  (e) => {
33145
- const file = _optionalChain([e, 'access', _677 => _677.target, 'access', _678 => _678.files, 'optionalAccess', _679 => _679[0]]);
33926
+ const file = _optionalChain([e, 'access', _685 => _685.target, 'access', _686 => _686.files, 'optionalAccess', _687 => _687[0]]);
33146
33927
  if (file) {
33147
33928
  handleFileUpload(file);
33148
33929
  e.target.value = "";
@@ -33153,7 +33934,7 @@ function MarkdownEditor({
33153
33934
  const handlePaste = _react.useCallback.call(void 0,
33154
33935
  (e) => {
33155
33936
  if (!onUploadFile) return;
33156
- const items = _optionalChain([e, 'access', _680 => _680.clipboardData, 'optionalAccess', _681 => _681.items]);
33937
+ const items = _optionalChain([e, 'access', _688 => _688.clipboardData, 'optionalAccess', _689 => _689.items]);
33157
33938
  if (!items) return;
33158
33939
  for (const item of items) {
33159
33940
  if (item.type.startsWith("image/")) {
@@ -33178,7 +33959,7 @@ function MarkdownEditor({
33178
33959
  buttonProps: { "aria-label": "Upload file", title: "Upload file" },
33179
33960
  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
33961
  execute: () => {
33181
- _optionalChain([fileInputRef, 'access', _682 => _682.current, 'optionalAccess', _683 => _683.click, 'call', _684 => _684()]);
33962
+ _optionalChain([fileInputRef, 'access', _690 => _690.current, 'optionalAccess', _691 => _691.click, 'call', _692 => _692()]);
33182
33963
  }
33183
33964
  } : null;
33184
33965
  const extraCommands = uploadCommand ? [...defaultExtraCommands, uploadCommand] : defaultExtraCommands;
@@ -33190,7 +33971,7 @@ function MarkdownEditor({
33190
33971
  const EDGE_ZONE = 60;
33191
33972
  const MAX_SCROLL_SPEED = 15;
33192
33973
  const findScrollParent = _react.useCallback.call(void 0, (el) => {
33193
- let node = _optionalChain([el, 'optionalAccess', _685 => _685.parentElement]);
33974
+ let node = _optionalChain([el, 'optionalAccess', _693 => _693.parentElement]);
33194
33975
  while (node && node !== document.documentElement) {
33195
33976
  const { overflowY } = window.getComputedStyle(node);
33196
33977
  if ((overflowY === "auto" || overflowY === "scroll") && node.scrollHeight > node.clientHeight) {
@@ -33333,7 +34114,7 @@ function matchesAccept(file, accept) {
33333
34114
  });
33334
34115
  }
33335
34116
  function dragHasFiles(e) {
33336
- const types = _optionalChain([e, 'access', _686 => _686.dataTransfer, 'optionalAccess', _687 => _687.types]);
34117
+ const types = _optionalChain([e, 'access', _694 => _694.dataTransfer, 'optionalAccess', _695 => _695.types]);
33337
34118
  if (!types) return false;
33338
34119
  for (let i = 0; i < types.length; i++) {
33339
34120
  if (types[i] === "Files") return true;
@@ -33428,7 +34209,7 @@ function FileUpload({
33428
34209
  e.stopPropagation();
33429
34210
  setDragActive(false);
33430
34211
  if (disabled) return;
33431
- if (_optionalChain([e, 'access', _688 => _688.dataTransfer, 'access', _689 => _689.files, 'optionalAccess', _690 => _690.length])) {
34212
+ if (_optionalChain([e, 'access', _696 => _696.dataTransfer, 'access', _697 => _697.files, 'optionalAccess', _698 => _698.length])) {
33432
34213
  handleFiles(e.dataTransfer.files);
33433
34214
  }
33434
34215
  };
@@ -33456,7 +34237,7 @@ function FileUpload({
33456
34237
  e.preventDefault();
33457
34238
  dragCounter = 0;
33458
34239
  setDragActive(false);
33459
- if (_optionalChain([e, 'access', _691 => _691.dataTransfer, 'optionalAccess', _692 => _692.files, 'optionalAccess', _693 => _693.length])) {
34240
+ if (_optionalChain([e, 'access', _699 => _699.dataTransfer, 'optionalAccess', _700 => _700.files, 'optionalAccess', _701 => _701.length])) {
33460
34241
  handleFilesRef.current(e.dataTransfer.files);
33461
34242
  }
33462
34243
  };
@@ -33478,7 +34259,7 @@ function FileUpload({
33478
34259
  };
33479
34260
  }, [acceptWindowDrops, disabled]);
33480
34261
  const handleFileSelect = (e) => {
33481
- if (_optionalChain([e, 'access', _694 => _694.target, 'access', _695 => _695.files, 'optionalAccess', _696 => _696.length])) {
34262
+ if (_optionalChain([e, 'access', _702 => _702.target, 'access', _703 => _703.files, 'optionalAccess', _704 => _704.length])) {
33482
34263
  handleFiles(e.target.files);
33483
34264
  }
33484
34265
  };
@@ -33495,7 +34276,7 @@ function FileUpload({
33495
34276
  };
33496
34277
  const openDialog = async () => {
33497
34278
  if (disabled) return;
33498
- _optionalChain([fileInputRef, 'access', _697 => _697.current, 'optionalAccess', _698 => _698.click, 'call', _699 => _699()]);
34279
+ _optionalChain([fileInputRef, 'access', _705 => _705.current, 'optionalAccess', _706 => _706.click, 'call', _707 => _707()]);
33499
34280
  };
33500
34281
  const displayError = error || validationError || void 0;
33501
34282
  const hasFiles = isManaged ? managedFiles.length > 0 : files.length > 0;
@@ -33573,7 +34354,7 @@ function FileUpload({
33573
34354
  "button",
33574
34355
  {
33575
34356
  type: "button",
33576
- onClick: () => _optionalChain([onRemoveManagedFile, 'optionalCall', _700 => _700(entry.id)]),
34357
+ onClick: () => _optionalChain([onRemoveManagedFile, 'optionalCall', _708 => _708(entry.id)]),
33577
34358
  className: "shrink-0 p-1 rounded hover:bg-ods-bg transition-colors",
33578
34359
  "aria-label": `Remove ${entry.fileName}`,
33579
34360
  children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.X, { className: "size-4 text-ods-text-secondary" })
@@ -33696,7 +34477,7 @@ function ImageUploader({
33696
34477
  onChange(file);
33697
34478
  };
33698
34479
  const handleFileSelect = (e) => {
33699
- validateAndEmit(_optionalChain([e, 'access', _701 => _701.target, 'access', _702 => _702.files, 'optionalAccess', _703 => _703[0]]));
34480
+ validateAndEmit(_optionalChain([e, 'access', _709 => _709.target, 'access', _710 => _710.files, 'optionalAccess', _711 => _711[0]]));
33700
34481
  if (inputRef.current) inputRef.current.value = "";
33701
34482
  };
33702
34483
  const handleDrag = (e) => {
@@ -33711,11 +34492,11 @@ function ImageUploader({
33711
34492
  e.stopPropagation();
33712
34493
  setDragActive(false);
33713
34494
  if (!interactive) return;
33714
- validateAndEmit(_optionalChain([e, 'access', _704 => _704.dataTransfer, 'access', _705 => _705.files, 'optionalAccess', _706 => _706[0]]));
34495
+ validateAndEmit(_optionalChain([e, 'access', _712 => _712.dataTransfer, 'access', _713 => _713.files, 'optionalAccess', _714 => _714[0]]));
33715
34496
  };
33716
34497
  const openDialog = () => {
33717
34498
  if (!interactive) return;
33718
- _optionalChain([inputRef, 'access', _707 => _707.current, 'optionalAccess', _708 => _708.click, 'call', _709 => _709()]);
34499
+ _optionalChain([inputRef, 'access', _715 => _715.current, 'optionalAccess', _716 => _716.click, 'call', _717 => _717()]);
33719
34500
  };
33720
34501
  const handleRootKeyDown = (e) => {
33721
34502
  if (hasImage || !interactive) return;
@@ -33872,7 +34653,7 @@ function CompactAssigneeDropdown({
33872
34653
  return [current, ...filtered.filter((o) => o.value !== currentAssignee.id)];
33873
34654
  }, [filtered, currentAssignee]);
33874
34655
  const handleSelect = (userId) => {
33875
- const next = _optionalChain([currentAssignee, 'optionalAccess', _710 => _710.id]) === userId ? null : userId;
34656
+ const next = _optionalChain([currentAssignee, 'optionalAccess', _718 => _718.id]) === userId ? null : userId;
33876
34657
  onAssign(next);
33877
34658
  setIsOpen(false);
33878
34659
  };
@@ -33937,7 +34718,7 @@ function CompactAssigneeDropdown({
33937
34718
  }
33938
34719
  ) }),
33939
34720
  /* @__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;
34721
+ const isCurrent = _optionalChain([currentAssignee, 'optionalAccess', _719 => _719.id]) === opt.value;
33941
34722
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
33942
34723
  "button",
33943
34724
  {
@@ -34006,7 +34787,7 @@ function DefaultAssigneeDropdown({
34006
34787
  Autocomplete,
34007
34788
  {
34008
34789
  options,
34009
- value: _nullishCoalesce(_optionalChain([currentAssignee, 'optionalAccess', _712 => _712.id]), () => ( null)),
34790
+ value: _nullishCoalesce(_optionalChain([currentAssignee, 'optionalAccess', _720 => _720.id]), () => ( null)),
34010
34791
  onChange: (val) => {
34011
34792
  onAssign(val);
34012
34793
  setIsEditing(false);
@@ -34372,14 +35153,14 @@ function TicketInfoSection({
34372
35153
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
34373
35154
  SquareAvatar,
34374
35155
  {
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",
35156
+ src: _optionalChain([organization, 'optionalAccess', _721 => _721.imageSrc]),
35157
+ alt: _optionalChain([organization, 'optionalAccess', _722 => _722.name]),
35158
+ fallback: _optionalChain([organization, 'optionalAccess', _723 => _723.name]) || "Org",
34378
35159
  size: "md",
34379
35160
  className: "shrink-0"
34380
35161
  }
34381
35162
  ),
34382
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, InfoCell2, { value: _optionalChain([organization, 'optionalAccess', _716 => _716.name]) || "Unassigned", label: "Organization" })
35163
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, InfoCell2, { value: _optionalChain([organization, 'optionalAccess', _724 => _724.name]) || "Unassigned", label: "Organization" })
34383
35164
  ] }),
34384
35165
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-w-0", children: assigned ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
34385
35166
  AssigneeDropdown,
@@ -34400,10 +35181,10 @@ function TicketInfoSection({
34400
35181
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
34401
35182
  InfoCell2,
34402
35183
  {
34403
- value: _optionalChain([device, 'optionalAccess', _717 => _717.name]) || "Unassigned",
35184
+ value: _optionalChain([device, 'optionalAccess', _725 => _725.name]) || "Unassigned",
34404
35185
  label: "Device",
34405
- icon: _optionalChain([device, 'optionalAccess', _718 => _718.icon]),
34406
- onClick: _optionalChain([device, 'optionalAccess', _719 => _719.onClick])
35186
+ icon: _optionalChain([device, 'optionalAccess', _726 => _726.icon]),
35187
+ onClick: _optionalChain([device, 'optionalAccess', _727 => _727.onClick])
34407
35188
  }
34408
35189
  ),
34409
35190
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-4 min-w-0", children: [
@@ -34632,7 +35413,7 @@ function TaskTypeIcon({ customItemId, className = "h-5 w-5" }) {
34632
35413
 
34633
35414
  // src/components/chat/entity-cards/roadmap-card.tsx
34634
35415
 
34635
- function RoadmapCardSkeleton({ size = "default" }) {
35416
+ function RoadmapCardSkeleton2({ size = "default" }) {
34636
35417
  if (size === "sm") {
34637
35418
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_SKELETON_OUTER, children: [
34638
35419
  /* @__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 +35470,7 @@ function RoadmapCard({
34689
35470
  const compactHref = safeHref(_nullishCoalesce(href, () => ( null)));
34690
35471
  const hasVotes = (_nullishCoalesce(item.upvotes, () => ( 0))) > 0 || (_nullishCoalesce(item.downvotes, () => ( 0))) > 0;
34691
35472
  const hasFigma = !!item.figmaUrl;
34692
- const hasScreenshots = (_nullishCoalesce(_optionalChain([item, 'access', _720 => _720.screenshots, 'optionalAccess', _721 => _721.length]), () => ( 0))) > 0;
35473
+ const hasScreenshots = (_nullishCoalesce(_optionalChain([item, 'access', _728 => _728.screenshots, 'optionalAccess', _729 => _729.length]), () => ( 0))) > 0;
34693
35474
  const typeLabel = getTaskTypeLabel(item.customItemId);
34694
35475
  const useTypeIcon = cardType === "internal_task" || !iconSrc && item.customItemId != null;
34695
35476
  const body = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
@@ -34708,7 +35489,7 @@ function RoadmapCard({
34708
35489
  unoptimized: true,
34709
35490
  className: "h-8 w-8 object-contain"
34710
35491
  }
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)]) || "??" })
35492
+ ) : /* @__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
35493
  }
34713
35494
  ),
34714
35495
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_TEXT_COL, children: [
@@ -34783,7 +35564,7 @@ function RoadmapCard({
34783
35564
  unoptimized: true,
34784
35565
  className: "object-contain p-1"
34785
35566
  }
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)]) || "??" }) }),
35567
+ ) : /* @__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
35568
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-1 min-w-0 flex flex-col", children: [
34788
35569
  /* @__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
35570
  /* @__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 +36071,7 @@ function DataRoomDocCard({ item, className, badgeText, anchorProps }) {
35290
36071
  ] }) : null,
35291
36072
  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
36073
  ] }),
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
36074
+ _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
36075
  ] });
35295
36076
  if (!anchorProps) {
35296
36077
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `${COMPACT_CARD_OUTER_STATIC} ${_nullishCoalesce(className, () => ( ""))}`, "aria-label": "No link available", children: body });
@@ -35360,7 +36141,7 @@ function getDefaultOptions() {
35360
36141
  // node_modules/date-fns/startOfWeek.mjs
35361
36142
  function startOfWeek(date, options) {
35362
36143
  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));
36144
+ 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
36145
  const _date = toDate(date);
35365
36146
  const day = _date.getDay();
35366
36147
  const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;
@@ -35535,7 +36316,7 @@ var formatDistance = (token, count, options) => {
35535
36316
  } else {
35536
36317
  result = tokenValue.other.replace("{{count}}", count.toString());
35537
36318
  }
35538
- if (_optionalChain([options, 'optionalAccess', _736 => _736.addSuffix])) {
36319
+ if (_optionalChain([options, 'optionalAccess', _744 => _744.addSuffix])) {
35539
36320
  if (options.comparison && options.comparison > 0) {
35540
36321
  return "in " + result;
35541
36322
  } else {
@@ -35602,15 +36383,15 @@ var formatRelative = (token, _date, _baseDate, _options) => formatRelativeLocale
35602
36383
  // node_modules/date-fns/locale/_lib/buildLocalizeFn.mjs
35603
36384
  function buildLocalizeFn(args) {
35604
36385
  return (value, options) => {
35605
- const context = _optionalChain([options, 'optionalAccess', _737 => _737.context]) ? String(options.context) : "standalone";
36386
+ const context = _optionalChain([options, 'optionalAccess', _745 => _745.context]) ? String(options.context) : "standalone";
35606
36387
  let valuesArray;
35607
36388
  if (context === "formatting" && args.formattingValues) {
35608
36389
  const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;
35609
- const width = _optionalChain([options, 'optionalAccess', _738 => _738.width]) ? String(options.width) : defaultWidth;
36390
+ const width = _optionalChain([options, 'optionalAccess', _746 => _746.width]) ? String(options.width) : defaultWidth;
35610
36391
  valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];
35611
36392
  } else {
35612
36393
  const defaultWidth = args.defaultWidth;
35613
- const width = _optionalChain([options, 'optionalAccess', _739 => _739.width]) ? String(options.width) : args.defaultWidth;
36394
+ const width = _optionalChain([options, 'optionalAccess', _747 => _747.width]) ? String(options.width) : args.defaultWidth;
35614
36395
  valuesArray = args.values[width] || args.values[defaultWidth];
35615
36396
  }
35616
36397
  const index = args.argumentCallback ? args.argumentCallback(value) : value;
@@ -35990,7 +36771,7 @@ function getWeekYear(date, options) {
35990
36771
  const _date = toDate(date);
35991
36772
  const year = _date.getFullYear();
35992
36773
  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));
36774
+ 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
36775
  const firstWeekOfNextYear = constructFrom(date, 0);
35995
36776
  firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);
35996
36777
  firstWeekOfNextYear.setHours(0, 0, 0, 0);
@@ -36011,7 +36792,7 @@ function getWeekYear(date, options) {
36011
36792
  // node_modules/date-fns/startOfWeekYear.mjs
36012
36793
  function startOfWeekYear(date, options) {
36013
36794
  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));
36795
+ 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
36796
  const year = getWeekYear(date, options);
36016
36797
  const firstWeek = constructFrom(date, 0);
36017
36798
  firstWeek.setFullYear(year, 0, firstWeekContainsDate);
@@ -36826,9 +37607,9 @@ var doubleQuoteRegExp = /''/g;
36826
37607
  var unescapedLatinCharacterRegExp = /[a-zA-Z]/;
36827
37608
  function format(date, formatStr, options) {
36828
37609
  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));
37610
+ const locale = _nullishCoalesce(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _762 => _762.locale]), () => ( defaultOptions2.locale)), () => ( enUS));
37611
+ 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));
37612
+ 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
37613
  const originalDate = toDate(date);
36833
37614
  if (!isValid(originalDate)) {
36834
37615
  throw new RangeError("Invalid time value");
@@ -36869,7 +37650,7 @@ function format(date, formatStr, options) {
36869
37650
  return parts.map((part) => {
36870
37651
  if (!part.isToken) return part.value;
36871
37652
  const token = part.value;
36872
- if (!_optionalChain([options, 'optionalAccess', _769 => _769.useAdditionalWeekYearTokens]) && isProtectedWeekYearToken(token) || !_optionalChain([options, 'optionalAccess', _770 => _770.useAdditionalDayOfYearTokens]) && isProtectedDayOfYearToken(token)) {
37653
+ if (!_optionalChain([options, 'optionalAccess', _777 => _777.useAdditionalWeekYearTokens]) && isProtectedWeekYearToken(token) || !_optionalChain([options, 'optionalAccess', _778 => _778.useAdditionalDayOfYearTokens]) && isProtectedDayOfYearToken(token)) {
36873
37654
  warnOrThrowProtectedError(token, formatStr, String(date));
36874
37655
  }
36875
37656
  const formatter = formatters[token[0]];
@@ -37035,7 +37816,7 @@ function ProgramCard({
37035
37816
  const dur = formatDurationFromRange(w.start_at, w.end_at);
37036
37817
  typeMeta = dur ? `${time} \xB7 ${dur}` : time;
37037
37818
  }
37038
- const subtitleParts = [itemDate2, typeMeta, _optionalChain([config, 'access', _771 => _771.labels, 'optionalAccess', _772 => _772.singular])].filter(
37819
+ const subtitleParts = [itemDate2, typeMeta, _optionalChain([config, 'access', _779 => _779.labels, 'optionalAccess', _780 => _780.singular])].filter(
37039
37820
  (s) => typeof s === "string" && s.length > 0
37040
37821
  );
37041
37822
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "a", { href, target, rel, className: _chunk664KA5FIcjs.cn.call(void 0, COMPACT_CARD_OUTER, className), children: [
@@ -37192,7 +37973,7 @@ function ProgramCard({
37192
37973
 
37193
37974
 
37194
37975
  function CampaignCardAdmin({ campaign, className, anchorProps }) {
37195
- const goalsCount = _optionalChain([campaign, 'access', _773 => _773.goals, 'optionalAccess', _774 => _774.length]) || 0;
37976
+ const goalsCount = _optionalChain([campaign, 'access', _781 => _781.goals, 'optionalAccess', _782 => _782.length]) || 0;
37196
37977
  const innerChildren = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
37197
37978
  /* @__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
37979
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_TEXT_COL, children: [
@@ -37487,11 +38268,11 @@ function HubspotTicketChatCard({
37487
38268
  chatRef,
37488
38269
  isNewTab
37489
38270
  }) {
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;
38271
+ const status = typeof _optionalChain([chatRef, 'access', _783 => _783.metadata, 'optionalAccess', _784 => _784.status]) === "string" ? chatRef.metadata.status : void 0;
38272
+ const statusLabel = typeof _optionalChain([chatRef, 'access', _785 => _785.metadata, 'optionalAccess', _786 => _786.statusLabel]) === "string" ? chatRef.metadata.statusLabel : void 0;
38273
+ const priority = typeof _optionalChain([chatRef, 'access', _787 => _787.metadata, 'optionalAccess', _788 => _788.priority]) === "string" ? chatRef.metadata.priority : void 0;
38274
+ const customerCompany = typeof _optionalChain([chatRef, 'access', _789 => _789.metadata, 'optionalAccess', _790 => _790.customerCompany]) === "string" ? chatRef.metadata.customerCompany : void 0;
38275
+ const customerEmail = typeof _optionalChain([chatRef, 'access', _791 => _791.metadata, 'optionalAccess', _792 => _792.customerEmail]) === "string" ? chatRef.metadata.customerEmail : void 0;
37495
38276
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
37496
38277
  HubspotTicketCard,
37497
38278
  {
@@ -37513,7 +38294,7 @@ function HubspotTicketChatCard({
37513
38294
  );
37514
38295
  }
37515
38296
  function SlackChatCard({ chatRef, isNewTab }) {
37516
- const channelName = typeof _optionalChain([chatRef, 'access', _785 => _785.metadata, 'optionalAccess', _786 => _786.channelName]) === "string" ? chatRef.metadata.channelName : void 0;
38297
+ const channelName = typeof _optionalChain([chatRef, 'access', _793 => _793.metadata, 'optionalAccess', _794 => _794.channelName]) === "string" ? chatRef.metadata.channelName : void 0;
37517
38298
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
37518
38299
  SlackMessageCard,
37519
38300
  {
@@ -37536,7 +38317,7 @@ function DataRoomDocChatCard({
37536
38317
  chipBasePlatform,
37537
38318
  isNewTab
37538
38319
  }) {
37539
- const path = typeof _optionalChain([chatRef, 'access', _787 => _787.metadata, 'optionalAccess', _788 => _788.path]) === "string" ? chatRef.metadata.path : void 0;
38320
+ const path = typeof _optionalChain([chatRef, 'access', _795 => _795.metadata, 'optionalAccess', _796 => _796.path]) === "string" ? chatRef.metadata.path : void 0;
37540
38321
  const badgeText = chatRef.sourceRepo ? getSourceLabel(chatRef.sourceRepo) : "Document";
37541
38322
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
37542
38323
  DataRoomDocCard,
@@ -37562,8 +38343,8 @@ function GenericFinancialChatCard({
37562
38343
  scheme,
37563
38344
  isNewTab
37564
38345
  }) {
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;
38346
+ const facts = Array.isArray(_optionalChain([chatRef, 'access', _797 => _797.metadata, 'optionalAccess', _798 => _798.facts])) ? chatRef.metadata.facts : null;
38347
+ const subtitle = typeof _optionalChain([chatRef, 'access', _799 => _799.metadata, 'optionalAccess', _800 => _800.subtitle]) === "string" ? chatRef.metadata.subtitle : null;
37567
38348
  const anchorProps = buildAnchorProps(
37568
38349
  chatRef.url,
37569
38350
  isNewTab
@@ -37725,7 +38506,7 @@ function programRegistryEntries() {
37725
38506
  contentRefType: cfg.contentRefType,
37726
38507
  skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ProgramCardSkeleton, { size: "sm" }),
37727
38508
  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]));
38509
+ const config = _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _801 => _801.extras, 'optionalAccess', _802 => _802.programConfigs, 'optionalAccess', _803 => _803[cfg.configKey]]), () => ( DEFAULT_PROGRAM_CONFIGS[cfg.configKey]));
37729
38510
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
37730
38511
  ProgramCard,
37731
38512
  {
@@ -37762,7 +38543,7 @@ function roadmapRegistryEntries() {
37762
38543
  mode: "fetch",
37763
38544
  label: cfg.label,
37764
38545
  contentRefType: cfg.contentRefType,
37765
- skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, RoadmapCardSkeleton, { size: "sm" }),
38546
+ skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, RoadmapCardSkeleton2, { size: "sm" }),
37766
38547
  render: (item, chatRef, opts) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
37767
38548
  RoadmapCard,
37768
38549
  {
@@ -37811,8 +38592,8 @@ var CHAT_CARD_REGISTRY = {
37811
38592
  DataRoomDocChatCard,
37812
38593
  {
37813
38594
  chatRef,
37814
- baseRoute: _optionalChain([opts, 'optionalAccess', _796 => _796.baseRoute]),
37815
- chipBasePlatform: _optionalChain([opts, 'optionalAccess', _797 => _797.chipBasePlatform]),
38595
+ baseRoute: _optionalChain([opts, 'optionalAccess', _804 => _804.baseRoute]),
38596
+ chipBasePlatform: _optionalChain([opts, 'optionalAccess', _805 => _805.chipBasePlatform]),
37816
38597
  isNewTab: opts.isNewTab
37817
38598
  }
37818
38599
  )
@@ -37824,8 +38605,8 @@ var CHAT_CARD_REGISTRY = {
37824
38605
  DataRoomDocChatCard,
37825
38606
  {
37826
38607
  chatRef,
37827
- baseRoute: _optionalChain([opts, 'optionalAccess', _798 => _798.baseRoute]),
37828
- chipBasePlatform: _optionalChain([opts, 'optionalAccess', _799 => _799.chipBasePlatform]),
38608
+ baseRoute: _optionalChain([opts, 'optionalAccess', _806 => _806.baseRoute]),
38609
+ chipBasePlatform: _optionalChain([opts, 'optionalAccess', _807 => _807.chipBasePlatform]),
37829
38610
  isNewTab: opts.isNewTab
37830
38611
  }
37831
38612
  )
@@ -37851,7 +38632,7 @@ var CHAT_CARD_REGISTRY = {
37851
38632
  href: _nullishCoalesce(chatRef.url, () => ( "")),
37852
38633
  targetPlatform: _nullishCoalesce(chatRef.targetPlatform, () => ( null)),
37853
38634
  ...newTabAnchorAttrs(opts.isNewTab),
37854
- hasEmbeddedVideo: _optionalChain([chatRef, 'access', _800 => _800.metadata, 'optionalAccess', _801 => _801.hasEmbeddedVideo]) === true
38635
+ hasEmbeddedVideo: _optionalChain([chatRef, 'access', _808 => _808.metadata, 'optionalAccess', _809 => _809.hasEmbeddedVideo]) === true
37855
38636
  }
37856
38637
  )
37857
38638
  },
@@ -37893,7 +38674,7 @@ var CHAT_CARD_REGISTRY = {
37893
38674
  contentRefType: "product_release",
37894
38675
  skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ProductReleaseCardSkeleton, { size: "sm" }),
37895
38676
  render: (item, chatRef, opts) => {
37896
- const builder = _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _802 => _802.extras, 'optionalAccess', _803 => _803.buildProductReleaseCardProps]), () => ( defaultBuildProductReleaseCardProps));
38677
+ const builder = _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _810 => _810.extras, 'optionalAccess', _811 => _811.buildProductReleaseCardProps]), () => ( defaultBuildProductReleaseCardProps));
37897
38678
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
37898
38679
  ProductReleaseChatCard,
37899
38680
  {
@@ -37946,7 +38727,7 @@ var CHAT_CARD_REGISTRY = {
37946
38727
  skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CampaignCardAdminSkeleton, {}),
37947
38728
  // No public viewer — synthesize the hub-internal admin URL post-fetch
37948
38729
  // so the wrapper + isNewTab computation see the actual destination.
37949
- fallbackHref: (item) => _optionalChain([item, 'optionalAccess', _804 => _804.id]) ? `/admin/campaigns/${encodeURIComponent(item.id)}` : null,
38730
+ fallbackHref: (item) => _optionalChain([item, 'optionalAccess', _812 => _812.id]) ? `/admin/campaigns/${encodeURIComponent(item.id)}` : null,
37950
38731
  render: (item, chatRef, opts) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
37951
38732
  CampaignChatCard,
37952
38733
  {
@@ -37970,12 +38751,12 @@ function ChatCardNavWrap({
37970
38751
  const onClickCapture = (e) => {
37971
38752
  if (!href) return;
37972
38753
  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;
38754
+ if (_optionalChain([targetEl, 'optionalAccess', _813 => _813.closest, 'optionalCall', _814 => _814("button")])) return;
38755
+ if (!_optionalChain([targetEl, 'optionalAccess', _815 => _815.closest, 'optionalCall', _816 => _816("a")])) return;
37975
38756
  const handled = handleChatNavClick(e, runtime, { href, path, targetPlatform });
37976
38757
  if (!handled) return;
37977
38758
  e.stopPropagation();
37978
- if (!isNewTab && _optionalChain([panel, 'optionalAccess', _809 => _809.closeChat])) panel.closeChat();
38759
+ if (!isNewTab && _optionalChain([panel, 'optionalAccess', _817 => _817.closeChat])) panel.closeChat();
37979
38760
  };
37980
38761
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "contents", onClickCapture, children });
37981
38762
  }
@@ -37997,7 +38778,7 @@ function ChatCardLoader({
37997
38778
  title: chatRef.title,
37998
38779
  externalUrl: chatRef.url,
37999
38780
  targetPlatform: chatRef.targetPlatform,
38000
- path: typeof _optionalChain([chatRef, 'access', _810 => _810.metadata, 'optionalAccess', _811 => _811.path]) === "string" ? chatRef.metadata.path : null
38781
+ path: typeof _optionalChain([chatRef, 'access', _818 => _818.metadata, 'optionalAccess', _819 => _819.path]) === "string" ? chatRef.metadata.path : null
38001
38782
  },
38002
38783
  {
38003
38784
  baseRoute,
@@ -38015,7 +38796,7 @@ function ChatCardLoader({
38015
38796
  const entry = CHAT_CARD_REGISTRY[resolvedChatRef.type];
38016
38797
  const fetchEntry = entry && entry.mode === "fetch" ? entry : null;
38017
38798
  const { item, isLoading } = useChatCardItem(
38018
- _nullishCoalesce(_optionalChain([fetchEntry, 'optionalAccess', _812 => _812.contentRefType]), () => ( "")),
38799
+ _nullishCoalesce(_optionalChain([fetchEntry, 'optionalAccess', _820 => _820.contentRefType]), () => ( "")),
38019
38800
  fetchEntry ? resolvedChatRef.id : ""
38020
38801
  );
38021
38802
  if (!entry) return null;
@@ -38025,7 +38806,7 @@ function ChatCardLoader({
38025
38806
  } : resolvedChatRef;
38026
38807
  const isNewTab = computeIsNewTab(runtime, finalChatRef.url, _nullishCoalesce(finalChatRef.targetPlatform, () => ( null)));
38027
38808
  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;
38809
+ const path = typeof _optionalChain([finalChatRef, 'access', _821 => _821.metadata, 'optionalAccess', _822 => _822.path]) === "string" ? finalChatRef.metadata.path : null;
38029
38810
  const navWrap = (children) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
38030
38811
  ChatCardNavWrap,
38031
38812
  {
@@ -38507,7 +39288,7 @@ function useJetStreamDialogSubscription({
38507
39288
  const hadConnectionBeforeRef = _react.useRef.call(void 0, false);
38508
39289
  const acquireClient = _react.useCallback.call(void 0,
38509
39290
  (url) => {
38510
- if (_optionalChain([shared, 'optionalAccess', _815 => _815.wsUrl]) !== url) {
39291
+ if (_optionalChain([shared, 'optionalAccess', _823 => _823.wsUrl]) !== url) {
38511
39292
  if (shared) {
38512
39293
  if (shared.closeTimer) clearTimeout(shared.closeTimer);
38513
39294
  const old = shared;
@@ -38609,7 +39390,7 @@ function useJetStreamDialogSubscription({
38609
39390
  if (closed) return;
38610
39391
  if (shared !== sharedConn) return;
38611
39392
  try {
38612
- await _optionalChain([onBeforeReconnectRef, 'access', _816 => _816.current, 'optionalCall', _817 => _817()]);
39393
+ await _optionalChain([onBeforeReconnectRef, 'access', _824 => _824.current, 'optionalCall', _825 => _825()]);
38613
39394
  } catch (e21) {
38614
39395
  }
38615
39396
  if (closed) return;
@@ -38642,7 +39423,7 @@ function useJetStreamDialogSubscription({
38642
39423
  }
38643
39424
  hadConnectionBeforeRef.current = true;
38644
39425
  retryAttempt = 0;
38645
- _optionalChain([onConnectRef, 'access', _818 => _818.current, 'optionalCall', _819 => _819()]);
39426
+ _optionalChain([onConnectRef, 'access', _826 => _826.current, 'optionalCall', _827 => _827()]);
38646
39427
  }
38647
39428
  if (event.status === "error") {
38648
39429
  console.warn("[JetStream] NATS protocol error:", event.data);
@@ -38658,7 +39439,7 @@ function useJetStreamDialogSubscription({
38658
39439
  }
38659
39440
  subscriptionRef.current = null;
38660
39441
  }
38661
- _optionalChain([onDisconnectRef, 'access', _820 => _820.current, 'optionalCall', _821 => _821()]);
39442
+ _optionalChain([onDisconnectRef, 'access', _828 => _828.current, 'optionalCall', _829 => _829()]);
38662
39443
  scheduleRetry();
38663
39444
  }
38664
39445
  });
@@ -38674,7 +39455,7 @@ function useJetStreamDialogSubscription({
38674
39455
  sharedConn.connectPromise = null;
38675
39456
  if (!closed) {
38676
39457
  setIsConnected(false);
38677
- _optionalChain([onDisconnectRef, 'access', _822 => _822.current, 'optionalCall', _823 => _823()]);
39458
+ _optionalChain([onDisconnectRef, 'access', _830 => _830.current, 'optionalCall', _831 => _831()]);
38678
39459
  scheduleRetry();
38679
39460
  }
38680
39461
  }
@@ -38765,7 +39546,7 @@ function useJetStreamDialogSubscription({
38765
39546
  }
38766
39547
  subscriptionRef.current = handle;
38767
39548
  setIsSubscribed(true);
38768
- _optionalChain([onSubscribedRef, 'access', _824 => _824.current, 'optionalCall', _825 => _825()]);
39549
+ _optionalChain([onSubscribedRef, 'access', _832 => _832.current, 'optionalCall', _833 => _833()]);
38769
39550
  } catch (e29) {
38770
39551
  if (!cancelled) {
38771
39552
  setIsSubscribed(false);
@@ -38843,7 +39624,7 @@ function useNatsDialogSubscription({
38843
39624
  reconnectionBackoffRef.current = reconnectionBackoff;
38844
39625
  }, [reconnectionBackoff]);
38845
39626
  const acquireClient = _react.useCallback.call(void 0, (url) => {
38846
- if (_optionalChain([shared2, 'optionalAccess', _826 => _826.wsUrl]) !== url) {
39627
+ if (_optionalChain([shared2, 'optionalAccess', _834 => _834.wsUrl]) !== url) {
38847
39628
  if (shared2) {
38848
39629
  shared2.closeTimer && clearTimeout(shared2.closeTimer);
38849
39630
  const old = shared2;
@@ -38934,7 +39715,7 @@ function useNatsDialogSubscription({
38934
39715
  if (closed) return;
38935
39716
  if (shared2 !== sharedConn) return;
38936
39717
  try {
38937
- await _optionalChain([onBeforeReconnectRef, 'access', _827 => _827.current, 'optionalCall', _828 => _828()]);
39718
+ await _optionalChain([onBeforeReconnectRef, 'access', _835 => _835.current, 'optionalCall', _836 => _836()]);
38938
39719
  } catch (e31) {
38939
39720
  }
38940
39721
  if (closed) return;
@@ -38967,22 +39748,22 @@ function useNatsDialogSubscription({
38967
39748
  }
38968
39749
  hadConnectionBeforeRef.current = true;
38969
39750
  retryAttempt = 0;
38970
- _optionalChain([onConnectRef, 'access', _829 => _829.current, 'optionalCall', _830 => _830()]);
39751
+ _optionalChain([onConnectRef, 'access', _837 => _837.current, 'optionalCall', _838 => _838()]);
38971
39752
  }
38972
39753
  if (disconnected) {
38973
39754
  setIsConnected(false);
38974
39755
  setIsSubscribed(false);
38975
39756
  subscriptionRefs.current.forEach((sub) => {
38976
39757
  try {
38977
- _optionalChain([sub, 'optionalAccess', _831 => _831.unsubscribe, 'call', _832 => _832()]);
39758
+ _optionalChain([sub, 'optionalAccess', _839 => _839.unsubscribe, 'call', _840 => _840()]);
38978
39759
  } catch (e33) {
38979
39760
  }
38980
39761
  });
38981
39762
  subscriptionRefs.current.clear();
38982
39763
  lastSubscribedDialogIdRef.current = null;
38983
- _optionalChain([abortControllerRef, 'access', _833 => _833.current, 'optionalAccess', _834 => _834.abort, 'call', _835 => _835()]);
39764
+ _optionalChain([abortControllerRef, 'access', _841 => _841.current, 'optionalAccess', _842 => _842.abort, 'call', _843 => _843()]);
38984
39765
  abortControllerRef.current = null;
38985
- _optionalChain([onDisconnectRef, 'access', _836 => _836.current, 'optionalCall', _837 => _837()]);
39766
+ _optionalChain([onDisconnectRef, 'access', _844 => _844.current, 'optionalCall', _845 => _845()]);
38986
39767
  scheduleRetry();
38987
39768
  }
38988
39769
  });
@@ -38998,7 +39779,7 @@ function useNatsDialogSubscription({
38998
39779
  sharedConn.connectPromise = null;
38999
39780
  if (!closed) {
39000
39781
  setIsConnected(false);
39001
- _optionalChain([onDisconnectRef, 'access', _838 => _838.current, 'optionalCall', _839 => _839()]);
39782
+ _optionalChain([onDisconnectRef, 'access', _846 => _846.current, 'optionalCall', _847 => _847()]);
39002
39783
  scheduleRetry();
39003
39784
  }
39004
39785
  }
@@ -39014,7 +39795,7 @@ function useNatsDialogSubscription({
39014
39795
  }
39015
39796
  subscriptionRefs.current.forEach((sub) => {
39016
39797
  try {
39017
- _optionalChain([sub, 'optionalAccess', _840 => _840.unsubscribe, 'call', _841 => _841()]);
39798
+ _optionalChain([sub, 'optionalAccess', _848 => _848.unsubscribe, 'call', _849 => _849()]);
39018
39799
  } catch (e35) {
39019
39800
  }
39020
39801
  });
@@ -39042,13 +39823,13 @@ function useNatsDialogSubscription({
39042
39823
  setIsSubscribed(false);
39043
39824
  subscriptionRefs.current.forEach((sub) => {
39044
39825
  try {
39045
- _optionalChain([sub, 'optionalAccess', _842 => _842.unsubscribe, 'call', _843 => _843()]);
39826
+ _optionalChain([sub, 'optionalAccess', _850 => _850.unsubscribe, 'call', _851 => _851()]);
39046
39827
  } catch (e36) {
39047
39828
  }
39048
39829
  });
39049
39830
  subscriptionRefs.current.clear();
39050
39831
  lastSubscribedDialogIdRef.current = null;
39051
- _optionalChain([abortControllerRef, 'access', _844 => _844.current, 'optionalAccess', _845 => _845.abort, 'call', _846 => _846()]);
39832
+ _optionalChain([abortControllerRef, 'access', _852 => _852.current, 'optionalAccess', _853 => _853.abort, 'call', _854 => _854()]);
39052
39833
  abortControllerRef.current = null;
39053
39834
  }
39054
39835
  return;
@@ -39060,12 +39841,12 @@ function useNatsDialogSubscription({
39060
39841
  if (subscriptionRefs.current.size > 0) {
39061
39842
  subscriptionRefs.current.forEach((sub) => {
39062
39843
  try {
39063
- _optionalChain([sub, 'optionalAccess', _847 => _847.unsubscribe, 'call', _848 => _848()]);
39844
+ _optionalChain([sub, 'optionalAccess', _855 => _855.unsubscribe, 'call', _856 => _856()]);
39064
39845
  } catch (e37) {
39065
39846
  }
39066
39847
  });
39067
39848
  subscriptionRefs.current.clear();
39068
- _optionalChain([abortControllerRef, 'access', _849 => _849.current, 'optionalAccess', _850 => _850.abort, 'call', _851 => _851()]);
39849
+ _optionalChain([abortControllerRef, 'access', _857 => _857.current, 'optionalAccess', _858 => _858.abort, 'call', _859 => _859()]);
39069
39850
  }
39070
39851
  abortControllerRef.current = new AbortController();
39071
39852
  const abort = abortControllerRef.current;
@@ -39097,7 +39878,7 @@ function useNatsDialogSubscription({
39097
39878
  });
39098
39879
  lastSubscribedDialogIdRef.current = dialogId;
39099
39880
  setIsSubscribed(true);
39100
- _optionalChain([onSubscribedRef, 'access', _852 => _852.current, 'optionalCall', _853 => _853()]);
39881
+ _optionalChain([onSubscribedRef, 'access', _860 => _860.current, 'optionalCall', _861 => _861()]);
39101
39882
  };
39102
39883
  if (isConnectedRef.current) {
39103
39884
  createSubscriptions();
@@ -39107,7 +39888,7 @@ function useNatsDialogSubscription({
39107
39888
  abort.abort();
39108
39889
  subscriptionRefs.current.forEach((sub) => {
39109
39890
  try {
39110
- _optionalChain([sub, 'optionalAccess', _854 => _854.unsubscribe, 'call', _855 => _855()]);
39891
+ _optionalChain([sub, 'optionalAccess', _862 => _862.unsubscribe, 'call', _863 => _863()]);
39111
39892
  } catch (e39) {
39112
39893
  }
39113
39894
  });
@@ -39148,7 +39929,7 @@ function useNatsDialogSubscription({
39148
39929
  });
39149
39930
  lastSubscribedDialogIdRef.current = dialogId2;
39150
39931
  setIsSubscribed(true);
39151
- _optionalChain([onSubscribedRef, 'access', _856 => _856.current, 'optionalCall', _857 => _857()]);
39932
+ _optionalChain([onSubscribedRef, 'access', _864 => _864.current, 'optionalCall', _865 => _865()]);
39152
39933
  } else if (subscriptionRefs.current.size > 0) {
39153
39934
  setIsSubscribed(true);
39154
39935
  }
@@ -39156,10 +39937,10 @@ function useNatsDialogSubscription({
39156
39937
  return { isConnected, isSubscribed, reconnectionCount };
39157
39938
  }
39158
39939
  function buildNatsWsUrl(apiBaseUrl, options) {
39159
- const path = _optionalChain([options, 'optionalAccess', _858 => _858.source]) === "dashboard" ? "/ws/nats-api" : "/ws/nats";
39940
+ const path = _optionalChain([options, 'optionalAccess', _866 => _866.source]) === "dashboard" ? "/ws/nats-api" : "/ws/nats";
39160
39941
  const u = new URL(path, apiBaseUrl);
39161
39942
  u.protocol = u.protocol === "https:" ? "wss:" : "ws:";
39162
- if (_optionalChain([options, 'optionalAccess', _859 => _859.includeAuthParam]) && _optionalChain([options, 'optionalAccess', _860 => _860.token])) {
39943
+ if (_optionalChain([options, 'optionalAccess', _867 => _867.includeAuthParam]) && _optionalChain([options, 'optionalAccess', _868 => _868.token])) {
39163
39944
  u.searchParams.set("authorization", options.token);
39164
39945
  }
39165
39946
  return u.toString();
@@ -39475,8 +40256,8 @@ var MessageSegmentAccumulator = class {
39475
40256
  type: "tool_execution",
39476
40257
  data: {
39477
40258
  ...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])
40259
+ toolTitle: _nullishCoalesce(_nullishCoalesce(toolData.toolTitle, () => ( _optionalChain([existingExecuting, 'optionalAccess', _869 => _869.data, 'access', _870 => _870.toolTitle]))), () => ( _optionalChain([executingTool, 'optionalAccess', _871 => _871.toolTitle]))),
40260
+ parameters: toolData.parameters || _optionalChain([executingTool, 'optionalAccess', _872 => _872.parameters])
39480
40261
  }
39481
40262
  };
39482
40263
  if (existingIndex !== -1) {
@@ -39500,8 +40281,8 @@ var MessageSegmentAccumulator = class {
39500
40281
  if (seg.type !== "approval_batch") return seg;
39501
40282
  const hasCall = seg.data.toolCalls.some((c) => c.toolExecutionRequestId === execId);
39502
40283
  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]) };
40284
+ const prev = _optionalChain([seg, 'access', _873 => _873.data, 'access', _874 => _874.executions, 'optionalAccess', _875 => _875[execId]]);
40285
+ const next = toolData.type === "EXECUTED_TOOL" ? { status: "done", result: toolData.result, success: toolData.success } : { status: "executing", result: _optionalChain([prev, 'optionalAccess', _876 => _876.result]), success: _optionalChain([prev, 'optionalAccess', _877 => _877.success]) };
39505
40286
  matched = true;
39506
40287
  return {
39507
40288
  ...seg,
@@ -39621,10 +40402,10 @@ var MessageSegmentAccumulator = class {
39621
40402
  const segment = {
39622
40403
  type: "approval_request",
39623
40404
  data: {
39624
- command: _optionalChain([pendingApproval, 'optionalAccess', _870 => _870.command]) || "",
39625
- explanation: _optionalChain([pendingApproval, 'optionalAccess', _871 => _871.explanation]),
40405
+ command: _optionalChain([pendingApproval, 'optionalAccess', _878 => _878.command]) || "",
40406
+ explanation: _optionalChain([pendingApproval, 'optionalAccess', _879 => _879.explanation]),
39626
40407
  requestId,
39627
- approvalType: _optionalChain([pendingApproval, 'optionalAccess', _872 => _872.approvalType]) || approvalType
40408
+ approvalType: _optionalChain([pendingApproval, 'optionalAccess', _880 => _880.approvalType]) || approvalType
39628
40409
  },
39629
40410
  status,
39630
40411
  onApprove: this.callbacks.onApprove,
@@ -39812,13 +40593,15 @@ function useRealtimeChunkProcessor(options) {
39812
40593
  if (initialState.escalatedApprovals) {
39813
40594
  pendingEscalatedRef.current = new Map(initialState.escalatedApprovals);
39814
40595
  initialState.escalatedApprovals.forEach((data, requestId) => {
39815
- _optionalChain([callbacks, 'access', _873 => _873.onEscalatedApproval, 'optionalCall', _874 => _874(requestId, data)]);
40596
+ _optionalChain([callbacks, 'access', _881 => _881.onEscalatedApproval, 'optionalCall', _882 => _882(requestId, data)]);
39816
40597
  });
39817
40598
  }
40599
+ hasEverStreamedRef.current = true;
39818
40600
  hasInitializedWithData.current = true;
39819
40601
  }
39820
40602
  }, [initialState, callbacks]);
39821
40603
  const isInStreamRef = _react.useRef.call(void 0, false);
40604
+ const hasEverStreamedRef = _react.useRef.call(void 0, false);
39822
40605
  const pendingEscalatedRef = _react.useRef.call(void 0, /* @__PURE__ */ new Map());
39823
40606
  const processChunk = _react.useCallback.call(void 0,
39824
40607
  (chunk) => {
@@ -39831,30 +40614,43 @@ function useRealtimeChunkProcessor(options) {
39831
40614
  switch (action.action) {
39832
40615
  case "message_start":
39833
40616
  isInStreamRef.current = true;
39834
- _optionalChain([callbacks, 'access', _875 => _875.onStreamStart, 'optionalCall', _876 => _876()]);
40617
+ hasEverStreamedRef.current = true;
40618
+ _optionalChain([callbacks, 'access', _883 => _883.onStreamStart, 'optionalCall', _884 => _884()]);
39835
40619
  accumulator.resetSegments();
39836
40620
  break;
39837
40621
  case "message_end":
39838
40622
  isInStreamRef.current = false;
39839
- _optionalChain([callbacks, 'access', _877 => _877.onStreamEnd, 'optionalCall', _878 => _878()]);
40623
+ _optionalChain([callbacks, 'access', _885 => _885.onStreamEnd, 'optionalCall', _886 => _886()]);
39840
40624
  accumulator.resetSegments();
39841
40625
  break;
39842
40626
  case "metadata":
39843
- _optionalChain([callbacks, 'access', _879 => _879.onMetadata, 'optionalCall', _880 => _880(action)]);
40627
+ _optionalChain([callbacks, 'access', _887 => _887.onMetadata, 'optionalCall', _888 => _888(action)]);
39844
40628
  break;
39845
40629
  case "text": {
39846
40630
  const segments = accumulator.appendText(action.text);
39847
- _optionalChain([callbacks, 'access', _881 => _881.onSegmentsUpdate, 'optionalCall', _882 => _882(segments)]);
40631
+ if (isInStreamRef.current || !hasEverStreamedRef.current) {
40632
+ _optionalChain([callbacks, 'access', _889 => _889.onSegmentsUpdate, 'optionalCall', _890 => _890(segments)]);
40633
+ } else {
40634
+ _optionalChain([callbacks, 'access', _891 => _891.onSegmentsUpdate, 'optionalCall', _892 => _892([{ type: "text", text: action.text }], { append: true })]);
40635
+ }
39848
40636
  break;
39849
40637
  }
39850
40638
  case "thinking": {
39851
40639
  const segments = accumulator.appendThinking(action.text);
39852
- _optionalChain([callbacks, 'access', _883 => _883.onSegmentsUpdate, 'optionalCall', _884 => _884(segments)]);
40640
+ if (isInStreamRef.current || !hasEverStreamedRef.current) {
40641
+ _optionalChain([callbacks, 'access', _893 => _893.onSegmentsUpdate, 'optionalCall', _894 => _894(segments)]);
40642
+ } else {
40643
+ _optionalChain([callbacks, 'access', _895 => _895.onSegmentsUpdate, 'optionalCall', _896 => _896([{ type: "thinking", text: action.text }], { append: true })]);
40644
+ }
39853
40645
  break;
39854
40646
  }
39855
40647
  case "tool_execution": {
40648
+ if (!isInStreamRef.current && callbacks.onToolExecuted) {
40649
+ callbacks.onToolExecuted(action.segment);
40650
+ break;
40651
+ }
39856
40652
  const segments = accumulator.addToolExecution(action.segment);
39857
- _optionalChain([callbacks, 'access', _885 => _885.onSegmentsUpdate, 'optionalCall', _886 => _886(segments)]);
40653
+ _optionalChain([callbacks, 'access', _897 => _897.onSegmentsUpdate, 'optionalCall', _898 => _898(segments)]);
39858
40654
  break;
39859
40655
  }
39860
40656
  case "approval_request": {
@@ -39868,10 +40664,10 @@ function useRealtimeChunkProcessor(options) {
39868
40664
  approvalType,
39869
40665
  status
39870
40666
  );
39871
- _optionalChain([callbacks, 'access', _887 => _887.onSegmentsUpdate, 'optionalCall', _888 => _888(segments)]);
40667
+ _optionalChain([callbacks, 'access', _899 => _899.onSegmentsUpdate, 'optionalCall', _900 => _900(segments)]);
39872
40668
  } else {
39873
40669
  pendingEscalatedRef.current.set(requestId, { command, explanation, approvalType });
39874
- _optionalChain([callbacks, 'access', _889 => _889.onEscalatedApproval, 'optionalCall', _890 => _890(requestId, { command, explanation, approvalType })]);
40670
+ _optionalChain([callbacks, 'access', _901 => _901.onEscalatedApproval, 'optionalCall', _902 => _902(requestId, { command, explanation, approvalType })]);
39875
40671
  }
39876
40672
  break;
39877
40673
  }
@@ -39883,20 +40679,20 @@ function useRealtimeChunkProcessor(options) {
39883
40679
  const summary = required ? getCommandText(required) : `Batch of ${toolCalls.length} tool calls`;
39884
40680
  pendingEscalatedRef.current.set(requestId, {
39885
40681
  command: summary,
39886
- explanation: _optionalChain([required, 'optionalAccess', _891 => _891.toolExplanation]),
40682
+ explanation: _optionalChain([required, 'optionalAccess', _903 => _903.toolExplanation]),
39887
40683
  approvalType,
39888
40684
  toolCalls
39889
40685
  });
39890
- _optionalChain([callbacks, 'access', _892 => _892.onEscalatedApproval, 'optionalCall', _893 => _893(requestId, {
40686
+ _optionalChain([callbacks, 'access', _904 => _904.onEscalatedApproval, 'optionalCall', _905 => _905(requestId, {
39891
40687
  command: summary,
39892
- explanation: _optionalChain([required, 'optionalAccess', _894 => _894.toolExplanation]),
40688
+ explanation: _optionalChain([required, 'optionalAccess', _906 => _906.toolExplanation]),
39893
40689
  approvalType
39894
40690
  })]);
39895
40691
  break;
39896
40692
  }
39897
40693
  if (batchApprovalsEnabled) {
39898
40694
  const segments2 = accumulator.addApprovalBatch(requestId, approvalType, toolCalls, status);
39899
- _optionalChain([callbacks, 'access', _895 => _895.onSegmentsUpdate, 'optionalCall', _896 => _896(segments2)]);
40695
+ _optionalChain([callbacks, 'access', _907 => _907.onSegmentsUpdate, 'optionalCall', _908 => _908(segments2)]);
39900
40696
  break;
39901
40697
  }
39902
40698
  let segments = accumulator.getSegments();
@@ -39910,7 +40706,7 @@ function useRealtimeChunkProcessor(options) {
39910
40706
  status
39911
40707
  );
39912
40708
  }
39913
- _optionalChain([callbacks, 'access', _897 => _897.onSegmentsUpdate, 'optionalCall', _898 => _898(segments)]);
40709
+ _optionalChain([callbacks, 'access', _909 => _909.onSegmentsUpdate, 'optionalCall', _910 => _910(segments)]);
39914
40710
  break;
39915
40711
  }
39916
40712
  case "approval_result": {
@@ -39919,7 +40715,7 @@ function useRealtimeChunkProcessor(options) {
39919
40715
  const status = approved ? "approved" : "rejected";
39920
40716
  if (escalatedData) {
39921
40717
  pendingEscalatedRef.current.delete(requestId);
39922
- _optionalChain([callbacks, 'access', _899 => _899.onEscalatedApprovalResult, 'optionalCall', _900 => _900(requestId, approved, {
40718
+ _optionalChain([callbacks, 'access', _911 => _911.onEscalatedApprovalResult, 'optionalCall', _912 => _912(requestId, approved, {
39923
40719
  command: escalatedData.command,
39924
40720
  explanation: escalatedData.explanation,
39925
40721
  approvalType: escalatedData.approvalType
@@ -39932,7 +40728,7 @@ function useRealtimeChunkProcessor(options) {
39932
40728
  escalatedData.toolCalls,
39933
40729
  status
39934
40730
  );
39935
- _optionalChain([callbacks, 'access', _901 => _901.onSegmentsUpdate, 'optionalCall', _902 => _902(segments)]);
40731
+ _optionalChain([callbacks, 'access', _913 => _913.onSegmentsUpdate, 'optionalCall', _914 => _914(segments)]);
39936
40732
  } else {
39937
40733
  let segments = accumulator.getSegments();
39938
40734
  for (const call of escalatedData.toolCalls) {
@@ -39945,7 +40741,7 @@ function useRealtimeChunkProcessor(options) {
39945
40741
  status
39946
40742
  );
39947
40743
  }
39948
- _optionalChain([callbacks, 'access', _903 => _903.onSegmentsUpdate, 'optionalCall', _904 => _904(segments)]);
40744
+ _optionalChain([callbacks, 'access', _915 => _915.onSegmentsUpdate, 'optionalCall', _916 => _916(segments)]);
39949
40745
  }
39950
40746
  } else {
39951
40747
  const segments = accumulator.addApprovalRequest(
@@ -39955,63 +40751,65 @@ function useRealtimeChunkProcessor(options) {
39955
40751
  escalatedData.approvalType,
39956
40752
  status
39957
40753
  );
39958
- _optionalChain([callbacks, 'access', _905 => _905.onSegmentsUpdate, 'optionalCall', _906 => _906(segments)]);
40754
+ _optionalChain([callbacks, 'access', _917 => _917.onSegmentsUpdate, 'optionalCall', _918 => _918(segments)]);
39959
40755
  }
39960
40756
  } else {
39961
- const segments = accumulator.updateApprovalStatus(requestId, status);
39962
- _optionalChain([callbacks, 'access', _907 => _907.onSegmentsUpdate, 'optionalCall', _908 => _908(segments)]);
40757
+ accumulator.updateApprovalStatus(requestId, status);
40758
+ if (!callbacks.onApprovalResolved) {
40759
+ _optionalChain([callbacks, 'access', _919 => _919.onSegmentsUpdate, 'optionalCall', _920 => _920(accumulator.getSegments())]);
40760
+ }
39963
40761
  }
39964
- void approvalType;
40762
+ _optionalChain([callbacks, 'access', _921 => _921.onApprovalResolved, 'optionalCall', _922 => _922(requestId, status, approvalType)]);
39965
40763
  break;
39966
40764
  }
39967
40765
  case "error": {
39968
40766
  let message2;
39969
- if ("details" in action && _optionalChain([action, 'optionalAccess', _909 => _909.details])) {
40767
+ if ("details" in action && _optionalChain([action, 'optionalAccess', _923 => _923.details])) {
39970
40768
  try {
39971
- message2 = _optionalChain([JSON, 'access', _910 => _910.parse, 'call', _911 => _911(action.details), 'optionalAccess', _912 => _912.error, 'optionalAccess', _913 => _913.message]);
40769
+ message2 = _optionalChain([JSON, 'access', _924 => _924.parse, 'call', _925 => _925(action.details), 'optionalAccess', _926 => _926.error, 'optionalAccess', _927 => _927.message]);
39972
40770
  } catch (e41) {
39973
40771
  message2 = action.details;
39974
40772
  }
39975
40773
  }
39976
40774
  const segments = accumulator.addError(action.error, message2);
39977
- _optionalChain([callbacks, 'access', _914 => _914.onSegmentsUpdate, 'optionalCall', _915 => _915(segments)]);
39978
- _optionalChain([callbacks, 'access', _916 => _916.onError, 'optionalCall', _917 => _917(action.error, message2)]);
40775
+ _optionalChain([callbacks, 'access', _928 => _928.onSegmentsUpdate, 'optionalCall', _929 => _929(segments)]);
40776
+ _optionalChain([callbacks, 'access', _930 => _930.onError, 'optionalCall', _931 => _931(action.error, message2)]);
39979
40777
  break;
39980
40778
  }
39981
40779
  case "system": {
39982
- _optionalChain([callbacks, 'access', _918 => _918.onSystemMessage, 'optionalCall', _919 => _919(action.text)]);
40780
+ _optionalChain([callbacks, 'access', _932 => _932.onSystemMessage, 'optionalCall', _933 => _933(action.text)]);
39983
40781
  break;
39984
40782
  }
39985
40783
  case "direct_message": {
39986
- _optionalChain([callbacks, 'access', _920 => _920.onDirectMessage, 'optionalCall', _921 => _921(action.text, {
40784
+ _optionalChain([callbacks, 'access', _934 => _934.onDirectMessage, 'optionalCall', _935 => _935(action.text, {
39987
40785
  ownerType: action.ownerType,
39988
40786
  displayName: action.displayName
39989
40787
  })]);
39990
40788
  break;
39991
40789
  }
39992
40790
  case "message_request":
39993
- _optionalChain([callbacks, 'access', _922 => _922.onUserMessage, 'optionalCall', _923 => _923(action.text, {
40791
+ _optionalChain([callbacks, 'access', _936 => _936.onUserMessage, 'optionalCall', _937 => _937(action.text, {
39994
40792
  ownerType: action.ownerType,
39995
40793
  displayName: action.displayName
39996
40794
  })]);
39997
40795
  break;
39998
40796
  case "token_usage":
39999
- _optionalChain([callbacks, 'access', _924 => _924.onTokenUsage, 'optionalCall', _925 => _925(action.data)]);
40797
+ _optionalChain([callbacks, 'access', _938 => _938.onTokenUsage, 'optionalCall', _939 => _939(action.data)]);
40000
40798
  break;
40001
40799
  case "context_compaction_start": {
40002
40800
  const standalone = !isInStreamRef.current;
40003
40801
  const segments = accumulator.addContextCompaction();
40004
- _optionalChain([callbacks, 'access', _926 => _926.onSegmentsUpdate, 'optionalCall', _927 => _927(segments, standalone ? { append: true, isCompacting: true } : void 0)]);
40802
+ _optionalChain([callbacks, 'access', _940 => _940.onSegmentsUpdate, 'optionalCall', _941 => _941(segments, standalone ? { append: true, isCompacting: true } : void 0)]);
40005
40803
  break;
40006
40804
  }
40007
40805
  case "context_compaction_end": {
40008
40806
  const standalone = !isInStreamRef.current;
40009
40807
  const segments = accumulator.completeContextCompaction(action.summary);
40010
- _optionalChain([callbacks, 'access', _928 => _928.onSegmentsUpdate, 'optionalCall', _929 => _929(segments, standalone ? { append: true, isCompacting: true } : void 0)]);
40808
+ _optionalChain([callbacks, 'access', _942 => _942.onSegmentsUpdate, 'optionalCall', _943 => _943(segments, standalone ? { append: true, isCompacting: true } : void 0)]);
40011
40809
  break;
40012
40810
  }
40013
40811
  case "dialog_closed":
40014
- _optionalChain([callbacks, 'access', _930 => _930.onDialogClosed, 'optionalCall', _931 => _931()]);
40812
+ _optionalChain([callbacks, 'access', _944 => _944.onDialogClosed, 'optionalCall', _945 => _945()]);
40015
40813
  break;
40016
40814
  default:
40017
40815
  break;
@@ -40071,7 +40869,7 @@ function useSlashCommands(prefix, commandsUrl) {
40071
40869
  const next = await fetchSlashCommands(prefix, ctrl.signal, commandsUrl);
40072
40870
  if (!cancelled) setCommands(next);
40073
40871
  } catch (err) {
40074
- if (!cancelled && _optionalChain([err, 'optionalAccess', _932 => _932.name]) !== "AbortError") {
40872
+ if (!cancelled && _optionalChain([err, 'optionalAccess', _946 => _946.name]) !== "AbortError") {
40075
40873
  console.warn("[use-slash-commands] fetch failed:", err);
40076
40874
  }
40077
40875
  } finally {
@@ -40104,7 +40902,7 @@ function createLocalStorageAdapter(options) {
40104
40902
  const tag = _nullishCoalesce(options.logTag, () => ( "[local-storage]"));
40105
40903
  const backend = _nullishCoalesce(options.backend, () => ( "local"));
40106
40904
  const resolveKey = () => {
40107
- const ns = _optionalChain([options, 'access', _933 => _933.namespace, 'optionalCall', _934 => _934()]);
40905
+ const ns = _optionalChain([options, 'access', _947 => _947.namespace, 'optionalCall', _948 => _948()]);
40108
40906
  return ns ? `${ns}.${options.key}` : options.key;
40109
40907
  };
40110
40908
  return {
@@ -40185,7 +40983,7 @@ function getChatProxyAuth() {
40185
40983
  }
40186
40984
  function getPersistedProxyEmail() {
40187
40985
  const persisted = adapter.load();
40188
- return _nullishCoalesce(_optionalChain([persisted, 'optionalAccess', _935 => _935.email, 'access', _936 => _936.trim, 'call', _937 => _937(), 'access', _938 => _938.toLowerCase, 'call', _939 => _939()]), () => ( null));
40986
+ return _nullishCoalesce(_optionalChain([persisted, 'optionalAccess', _949 => _949.email, 'access', _950 => _950.trim, 'call', _951 => _951(), 'access', _952 => _952.toLowerCase, 'call', _953 => _953()]), () => ( null));
40189
40987
  }
40190
40988
  function setChatProxyAuth(value) {
40191
40989
  adapter.save({
@@ -40202,15 +41000,15 @@ function clearChatProxyAuth() {
40202
41000
  function applyProxyAuth(url, baseHeaders = { "Content-Type": "application/json" }) {
40203
41001
  const auth = getChatProxyAuth();
40204
41002
  const headers = { ...baseHeaders };
40205
- if (_optionalChain([auth, 'optionalAccess', _940 => _940.secret])) {
41003
+ if (_optionalChain([auth, 'optionalAccess', _954 => _954.secret])) {
40206
41004
  headers.Authorization = `Bearer ${auth.secret}`;
40207
41005
  }
40208
- if (_optionalChain([auth, 'optionalAccess', _941 => _941.email])) {
41006
+ if (_optionalChain([auth, 'optionalAccess', _955 => _955.email])) {
40209
41007
  headers["X-Chat-Act-As"] = auth.email;
40210
41008
  }
40211
- if (_optionalChain([auth, 'optionalAccess', _942 => _942.firstName])) headers["X-Chat-First-Name"] = auth.firstName;
40212
- if (_optionalChain([auth, 'optionalAccess', _943 => _943.lastName])) headers["X-Chat-Last-Name"] = auth.lastName;
40213
- if (_optionalChain([auth, 'optionalAccess', _944 => _944.avatarUrl])) headers["X-Chat-Avatar-Url"] = auth.avatarUrl;
41009
+ if (_optionalChain([auth, 'optionalAccess', _956 => _956.firstName])) headers["X-Chat-First-Name"] = auth.firstName;
41010
+ if (_optionalChain([auth, 'optionalAccess', _957 => _957.lastName])) headers["X-Chat-Last-Name"] = auth.lastName;
41011
+ if (_optionalChain([auth, 'optionalAccess', _958 => _958.avatarUrl])) headers["X-Chat-Avatar-Url"] = auth.avatarUrl;
40214
41012
  return { url, headers };
40215
41013
  }
40216
41014
 
@@ -40248,7 +41046,7 @@ var CHAT_ATTACHMENT_MAX_SIZE_BYTES = 25 * 1024 * 1024;
40248
41046
  var STORAGE_CACHE_CONTROL_IMMUTABLE = "public, max-age=31536000, immutable";
40249
41047
  function uploadWithProgress(url, file, token, onProgress, signal) {
40250
41048
  return new Promise((resolve, reject) => {
40251
- if (_optionalChain([signal, 'optionalAccess', _945 => _945.aborted])) {
41049
+ if (_optionalChain([signal, 'optionalAccess', _959 => _959.aborted])) {
40252
41050
  reject(new Error("Upload cancelled"));
40253
41051
  return;
40254
41052
  }
@@ -40262,7 +41060,7 @@ function uploadWithProgress(url, file, token, onProgress, signal) {
40262
41060
  xhr.removeEventListener("error", handleError);
40263
41061
  xhr.removeEventListener("abort", handleAbort);
40264
41062
  xhr.removeEventListener("timeout", handleTimeout);
40265
- _optionalChain([signal, 'optionalAccess', _946 => _946.removeEventListener, 'call', _947 => _947("abort", handleSignalAbort)]);
41063
+ _optionalChain([signal, 'optionalAccess', _960 => _960.removeEventListener, 'call', _961 => _961("abort", handleSignalAbort)]);
40266
41064
  if (xhr.readyState !== XMLHttpRequest.DONE) xhr.abort();
40267
41065
  };
40268
41066
  const handleProgress = (event) => {
@@ -40298,7 +41096,7 @@ function uploadWithProgress(url, file, token, onProgress, signal) {
40298
41096
  const handleSignalAbort = () => {
40299
41097
  xhr.abort();
40300
41098
  };
40301
- _optionalChain([signal, 'optionalAccess', _948 => _948.addEventListener, 'call', _949 => _949("abort", handleSignalAbort, { once: true })]);
41099
+ _optionalChain([signal, 'optionalAccess', _962 => _962.addEventListener, 'call', _963 => _963("abort", handleSignalAbort, { once: true })]);
40302
41100
  xhr.upload.addEventListener("progress", handleProgress);
40303
41101
  xhr.addEventListener("load", handleLoad);
40304
41102
  xhr.addEventListener("error", handleError);
@@ -40342,12 +41140,12 @@ function useChatAttachments() {
40342
41140
  try {
40343
41141
  sniffed = await _filetype.fileTypeFromBlob.call(void 0, att.file);
40344
41142
  } catch (err) {
40345
- if (_optionalChain([ctrl, 'optionalAccess', _950 => _950.signal, 'access', _951 => _951.aborted])) return;
41143
+ if (_optionalChain([ctrl, 'optionalAccess', _964 => _964.signal, 'access', _965 => _965.aborted])) return;
40346
41144
  throw new Error(
40347
41145
  `Could not read file content: ${err instanceof Error ? err.message : String(err)}`
40348
41146
  );
40349
41147
  }
40350
- if (_optionalChain([ctrl, 'optionalAccess', _952 => _952.signal, 'access', _953 => _953.aborted])) return;
41148
+ if (_optionalChain([ctrl, 'optionalAccess', _966 => _966.signal, 'access', _967 => _967.aborted])) return;
40351
41149
  if (!sniffed) {
40352
41150
  throw new Error("Unrecognized file format");
40353
41151
  }
@@ -40361,7 +41159,7 @@ function useChatAttachments() {
40361
41159
  const urlResp = await chatAuthedFetch(uploadUrlEndpoint, {
40362
41160
  method: "POST",
40363
41161
  headers: { "Content-Type": "application/json" },
40364
- signal: _optionalChain([ctrl, 'optionalAccess', _954 => _954.signal]),
41162
+ signal: _optionalChain([ctrl, 'optionalAccess', _968 => _968.signal]),
40365
41163
  body: JSON.stringify({
40366
41164
  fileName: att.file.name,
40367
41165
  // Pass the SNIFFED MIME (not `file.type`, which can be a
@@ -40387,9 +41185,9 @@ function useChatAttachments() {
40387
41185
  (pct) => {
40388
41186
  updateOne(att.id, { progress: pct });
40389
41187
  },
40390
- _optionalChain([ctrl, 'optionalAccess', _955 => _955.signal])
41188
+ _optionalChain([ctrl, 'optionalAccess', _969 => _969.signal])
40391
41189
  );
40392
- if (_optionalChain([ctrl, 'optionalAccess', _956 => _956.signal, 'access', _957 => _957.aborted])) return;
41190
+ if (_optionalChain([ctrl, 'optionalAccess', _970 => _970.signal, 'access', _971 => _971.aborted])) return;
40393
41191
  updateOne(att.id, {
40394
41192
  status: "ready",
40395
41193
  progress: 100,
@@ -40397,7 +41195,7 @@ function useChatAttachments() {
40397
41195
  viewToken: mintData.viewToken
40398
41196
  });
40399
41197
  } catch (err) {
40400
- if (_optionalChain([ctrl, 'optionalAccess', _958 => _958.signal, 'access', _959 => _959.aborted])) return;
41198
+ if (_optionalChain([ctrl, 'optionalAccess', _972 => _972.signal, 'access', _973 => _973.aborted])) return;
40401
41199
  const message2 = err instanceof Error ? err.message : String(err);
40402
41200
  updateOne(att.id, { status: "error", progress: 0, errorMessage: message2 });
40403
41201
  } finally {
@@ -40548,7 +41346,7 @@ var ANON_DEFAULTS = {
40548
41346
  function useChatIdentity() {
40549
41347
  const runtime = _chunk6RZYJICVcjs.useRequiredChatRuntime.call(void 0, );
40550
41348
  const url = runtime.endpoints.chatIdentityUrl;
40551
- const proxyEmail = _nullishCoalesce(_optionalChain([getChatProxyAuth, 'call', _960 => _960(), 'optionalAccess', _961 => _961.email]), () => ( null));
41349
+ const proxyEmail = _nullishCoalesce(_optionalChain([getChatProxyAuth, 'call', _974 => _974(), 'optionalAccess', _975 => _975.email]), () => ( null));
40552
41350
  const [data, setData] = _react.useState.call(void 0, ANON_DEFAULTS);
40553
41351
  const [isLoading, setIsLoading] = _react.useState.call(void 0, true);
40554
41352
  _react.useEffect.call(void 0, () => {
@@ -40625,7 +41423,7 @@ function useSSE({ useMock = true, debugMode = false, streamFn } = {}) {
40625
41423
  yield chunk;
40626
41424
  }
40627
41425
  } catch (err) {
40628
- if (_optionalChain([err, 'optionalAccess', _962 => _962.name]) === "AbortError" || ctrl.signal.aborted) {
41426
+ if (_optionalChain([err, 'optionalAccess', _976 => _976.name]) === "AbortError" || ctrl.signal.aborted) {
40629
41427
  return;
40630
41428
  }
40631
41429
  const errorMessage = err instanceof Error ? err.message : "An error occurred";
@@ -40676,7 +41474,7 @@ function useChat({
40676
41474
  const onMessagesChangeRef = _react.useRef.call(void 0, onMessagesChange);
40677
41475
  onMessagesChangeRef.current = onMessagesChange;
40678
41476
  _react.useEffect.call(void 0, () => {
40679
- _optionalChain([onMessagesChangeRef, 'access', _963 => _963.current, 'optionalCall', _964 => _964(messages)]);
41477
+ _optionalChain([onMessagesChangeRef, 'access', _977 => _977.current, 'optionalCall', _978 => _978(messages)]);
40680
41478
  }, [messages]);
40681
41479
  const {
40682
41480
  streamMessage,
@@ -40713,7 +41511,7 @@ function useChat({
40713
41511
  name: "You",
40714
41512
  content: text,
40715
41513
  timestamp: /* @__PURE__ */ new Date(),
40716
- ..._optionalChain([options, 'optionalAccess', _965 => _965.hidden]) ? { hidden: true } : {}
41514
+ ..._optionalChain([options, 'optionalAccess', _979 => _979.hidden]) ? { hidden: true } : {}
40717
41515
  };
40718
41516
  addMessage(userMessage);
40719
41517
  setIsTyping(true);
@@ -40775,7 +41573,7 @@ function useChat({
40775
41573
  currentTextSegment = "";
40776
41574
  }
40777
41575
  const seg = segment;
40778
- const proposalId = _optionalChain([seg, 'access', _966 => _966.data, 'optionalAccess', _967 => _967.requestId]);
41576
+ const proposalId = _optionalChain([seg, 'access', _980 => _980.data, 'optionalAccess', _981 => _981.requestId]);
40779
41577
  const updateApprovalMessage = (transform) => {
40780
41578
  setMessages((prev) => {
40781
41579
  for (let i = prev.length - 1; i >= 0; i--) {
@@ -40784,7 +41582,7 @@ function useChat({
40784
41582
  if (!Array.isArray(m.content)) continue;
40785
41583
  const segments = m.content;
40786
41584
  const hasMatch = segments.some(
40787
- (s) => s.type === "approval_request" && _optionalChain([s, 'access', _968 => _968.data, 'optionalAccess', _969 => _969.requestId]) === proposalId
41585
+ (s) => s.type === "approval_request" && _optionalChain([s, 'access', _982 => _982.data, 'optionalAccess', _983 => _983.requestId]) === proposalId
40788
41586
  );
40789
41587
  if (!hasMatch) continue;
40790
41588
  const next = [...prev];
@@ -40826,11 +41624,11 @@ function useChat({
40826
41624
  if (!Array.isArray(m.content)) continue;
40827
41625
  const segments = m.content;
40828
41626
  const hasMatch = segments.some(
40829
- (s) => s.type === "approval_request" && _optionalChain([s, 'access', _970 => _970.data, 'optionalAccess', _971 => _971.requestId]) === decision.proposalId
41627
+ (s) => s.type === "approval_request" && _optionalChain([s, 'access', _984 => _984.data, 'optionalAccess', _985 => _985.requestId]) === decision.proposalId
40830
41628
  );
40831
41629
  if (!hasMatch) continue;
40832
41630
  const flipped = segments.map(
40833
- (s) => s.type === "approval_request" && _optionalChain([s, 'access', _972 => _972.data, 'optionalAccess', _973 => _973.requestId]) === decision.proposalId ? { ...s, status: decision.action } : s
41631
+ (s) => s.type === "approval_request" && _optionalChain([s, 'access', _986 => _986.data, 'optionalAccess', _987 => _987.requestId]) === decision.proposalId ? { ...s, status: decision.action } : s
40834
41632
  );
40835
41633
  const next = [...prev];
40836
41634
  next[i] = { ...m, content: flipped };
@@ -40963,7 +41761,7 @@ function useChat({
40963
41761
  };
40964
41762
  }
40965
41763
 
40966
- // src/components/chat/hooks/use-embedded-chat.ts
41764
+ // src/components/chat/hooks/use-sse-chat-adapter.ts
40967
41765
 
40968
41766
  function createEmptyTurnMeta() {
40969
41767
  return {
@@ -40992,8 +41790,8 @@ function createDocStreamFn(source, endpoints, messagesRef, sourcesMapRef, refsMa
40992
41790
  })),
40993
41791
  { role: "user", content: message2 }
40994
41792
  ];
40995
- const targetPath = _optionalChain([extra, 'optionalAccess', _974 => _974.approvalAction]) ? endpoints.approvalToolUrl : endpoints.chatStreamUrl;
40996
- const requestBody = _optionalChain([extra, 'optionalAccess', _975 => _975.approvalAction]) ? {
41793
+ const targetPath = _optionalChain([extra, 'optionalAccess', _988 => _988.approvalAction]) ? endpoints.approvalToolUrl : endpoints.chatStreamUrl;
41794
+ const requestBody = _optionalChain([extra, 'optionalAccess', _989 => _989.approvalAction]) ? {
40997
41795
  proposal_id: extra.approvalAction.proposalId,
40998
41796
  action: extra.approvalAction.action,
40999
41797
  messages: currentMessages.filter((m) => (m.role === "user" || m.role === "assistant") && !m.hidden).map((m) => ({
@@ -41002,8 +41800,8 @@ function createDocStreamFn(source, endpoints, messagesRef, sourcesMapRef, refsMa
41002
41800
  }))
41003
41801
  } : {
41004
41802
  messages: apiMessages,
41005
- ..._optionalChain([extra, 'optionalAccess', _976 => _976.commandOverride]) ? { commandOverride: extra.commandOverride } : {},
41006
- ..._optionalChain([extra, 'optionalAccess', _977 => _977.pendingAttachments]) && extra.pendingAttachments.length > 0 ? { pendingAttachments: extra.pendingAttachments } : {}
41803
+ ..._optionalChain([extra, 'optionalAccess', _990 => _990.commandOverride]) ? { commandOverride: extra.commandOverride } : {},
41804
+ ..._optionalChain([extra, 'optionalAccess', _991 => _991.pendingAttachments]) && extra.pendingAttachments.length > 0 ? { pendingAttachments: extra.pendingAttachments } : {}
41007
41805
  };
41008
41806
  const response = await chatAuthedFetch(targetPath, {
41009
41807
  method: "POST",
@@ -41013,7 +41811,7 @@ function createDocStreamFn(source, endpoints, messagesRef, sourcesMapRef, refsMa
41013
41811
  if (!response.ok) {
41014
41812
  throw new Error(`Chat request failed: ${response.status}`);
41015
41813
  }
41016
- const reader = _optionalChain([response, 'access', _978 => _978.body, 'optionalAccess', _979 => _979.getReader, 'call', _980 => _980()]);
41814
+ const reader = _optionalChain([response, 'access', _992 => _992.body, 'optionalAccess', _993 => _993.getReader, 'call', _994 => _994()]);
41017
41815
  if (!reader) throw new Error("No response body");
41018
41816
  const decoder = new TextDecoder();
41019
41817
  let buffer = "";
@@ -41096,7 +41894,7 @@ function createDocStreamFn(source, endpoints, messagesRef, sourcesMapRef, refsMa
41096
41894
  const toolName = typeof meta.tool_name === "string" ? meta.tool_name : void 0;
41097
41895
  const result = _nullishCoalesce(meta.result, () => ( null));
41098
41896
  const card = _nullishCoalesce(meta.card, () => ( null));
41099
- if (_optionalChain([card, 'optionalAccess', _981 => _981.ref, 'optionalAccess', _982 => _982.id]) && _optionalChain([card, 'optionalAccess', _983 => _983.type])) {
41897
+ if (_optionalChain([card, 'optionalAccess', _995 => _995.ref, 'optionalAccess', _996 => _996.id]) && _optionalChain([card, 'optionalAccess', _997 => _997.type])) {
41100
41898
  const existing = _nullishCoalesce(refsMapRef.current.get(sendIdx), () => ( {}));
41101
41899
  const key = buildChatRefKey(card.type, card.ref.id);
41102
41900
  refsMapRef.current.set(sendIdx, { ...existing, [key]: card.ref });
@@ -41109,8 +41907,8 @@ function createDocStreamFn(source, endpoints, messagesRef, sourcesMapRef, refsMa
41109
41907
  willAutoContinue: meta.willAutoContinue === true,
41110
41908
  ...toolName ? { toolName } : {},
41111
41909
  ...result ? { result } : {},
41112
- ..._optionalChain([card, 'optionalAccess', _984 => _984.marker]) ? { marker: card.marker } : {},
41113
- ..._optionalChain([card, 'optionalAccess', _985 => _985.ref]) ? { cardRef: card.ref } : {},
41910
+ ..._optionalChain([card, 'optionalAccess', _998 => _998.marker]) ? { marker: card.marker } : {},
41911
+ ..._optionalChain([card, 'optionalAccess', _999 => _999.ref]) ? { cardRef: card.ref } : {},
41114
41912
  ...typeof meta.receiptText === "string" ? { receiptText: meta.receiptText } : {},
41115
41913
  proposalId: typeof meta.proposalId === "string" ? meta.proposalId : void 0
41116
41914
  };
@@ -41228,7 +42026,7 @@ var CHAT_STORAGE_VERSION = 1;
41228
42026
  var chatStorageKey = (source) => {
41229
42027
  const base = `mingo-chat-${source}-v${CHAT_STORAGE_VERSION}`;
41230
42028
  const auth = getChatProxyAuth();
41231
- if (_optionalChain([auth, 'optionalAccess', _986 => _986.email])) {
42029
+ if (_optionalChain([auth, 'optionalAccess', _1000 => _1000.email])) {
41232
42030
  return `${base}-u-${encodeURIComponent(auth.email.toLowerCase())}`;
41233
42031
  }
41234
42032
  return base;
@@ -41279,15 +42077,15 @@ function savePersistedChat(source, state) {
41279
42077
  } catch (e47) {
41280
42078
  }
41281
42079
  }
41282
- function useEmbeddedChat(options) {
42080
+ function useSseChatAdapter(options) {
41283
42081
  const runtime = _chunk6RZYJICVcjs.useRequiredChatRuntime.call(void 0, );
41284
42082
  const source = runtime.source;
41285
42083
  if (!source) {
41286
42084
  throw new Error(
41287
- "[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."
42085
+ "[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."
41288
42086
  );
41289
42087
  }
41290
- const tableIdForDocumentType = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _987 => _987.tableIdForDocumentType]), () => ( defaultTableIdForDocumentType));
42088
+ const tableIdForDocumentType = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _1001 => _1001.tableIdForDocumentType]), () => ( defaultTableIdForDocumentType));
41291
42089
  const persistedRef = _react.useRef.call(void 0, null);
41292
42090
  if (persistedRef.current === null) {
41293
42091
  pruneStaleChatStorage(source);
@@ -41355,9 +42153,9 @@ function useEmbeddedChat(options) {
41355
42153
  }
41356
42154
  setCmdIdByTableId(map);
41357
42155
  }).catch((err) => {
41358
- if (!cancelled && _optionalChain([err, 'optionalAccess', _988 => _988.name]) !== "AbortError") {
42156
+ if (!cancelled && _optionalChain([err, 'optionalAccess', _1002 => _1002.name]) !== "AbortError") {
41359
42157
  console.warn(
41360
- "[useEmbeddedChat] failed to fetch slash commands for displayRef:",
42158
+ "[useSseChatAdapter] failed to fetch slash commands for displayRef:",
41361
42159
  err
41362
42160
  );
41363
42161
  }
@@ -41408,7 +42206,7 @@ function useEmbeddedChat(options) {
41408
42206
  const lookupIdx = sendIdx >= 0 ? sendIdx : 0;
41409
42207
  sources = sourcesMapRef.current.get(lookupIdx);
41410
42208
  chatRefs = _nullishCoalesce(m.chatRefs, () => ( refsMapRef.current.get(lookupIdx)));
41411
- scrollAnchor = _nullishCoalesce(_optionalChain([metaMapRef, 'access', _989 => _989.current, 'access', _990 => _990.get, 'call', _991 => _991(lookupIdx), 'optionalAccess', _992 => _992.scrollAnchor]), () => ( void 0));
42209
+ scrollAnchor = _nullishCoalesce(_optionalChain([metaMapRef, 'access', _1003 => _1003.current, 'access', _1004 => _1004.get, 'call', _1005 => _1005(lookupIdx), 'optionalAccess', _1006 => _1006.scrollAnchor]), () => ( void 0));
41412
42210
  }
41413
42211
  return {
41414
42212
  id: m.id,
@@ -41422,10 +42220,21 @@ function useEmbeddedChat(options) {
41422
42220
  };
41423
42221
  });
41424
42222
  const sendMessage = _react.useCallback.call(void 0,
41425
- (text, options2, messageOptions) => {
42223
+ async (text, options2) => {
42224
+ const {
42225
+ hidden,
42226
+ attachments,
42227
+ commandOverride,
42228
+ approvalAction
42229
+ } = _nullishCoalesce(options2, () => ( {}));
42230
+ const sseExtras = {
42231
+ ...commandOverride ? { commandOverride } : {},
42232
+ ...approvalAction ? { approvalAction } : {},
42233
+ ...attachments && attachments.length > 0 ? { pendingAttachments: attachments } : {}
42234
+ };
41426
42235
  sendCountRef.current++;
41427
42236
  setStreamingPhase("thinking");
41428
- chatSendMessage(text, options2, messageOptions);
42237
+ await chatSendMessage(text, sseExtras, hidden ? { hidden } : void 0);
41429
42238
  },
41430
42239
  [chatSendMessage]
41431
42240
  );
@@ -41434,18 +42243,18 @@ function useEmbeddedChat(options) {
41434
42243
  const tableId = tableIdForDocumentType(reference.type);
41435
42244
  if (!tableId) {
41436
42245
  console.warn(
41437
- `[useEmbeddedChat] displayRef: no tableId for documentType="${reference.type}"; ignoring click`
42246
+ `[useSseChatAdapter] displayRef: no tableId for documentType="${reference.type}"; ignoring click`
41438
42247
  );
41439
42248
  return;
41440
42249
  }
41441
42250
  const cmdId = cmdIdByTableId.get(tableId);
41442
42251
  if (!cmdId) {
41443
42252
  console.warn(
41444
- `[useEmbeddedChat] displayRef: no slash command for tableId="${tableId}" source="${source}"; ignoring click`
42253
+ `[useSseChatAdapter] displayRef: no slash command for tableId="${tableId}" source="${source}"; ignoring click`
41445
42254
  );
41446
42255
  return;
41447
42256
  }
41448
- const refSlug = typeof _optionalChain([reference, 'access', _993 => _993.metadata, 'optionalAccess', _994 => _994.slug]) === "string" && reference.metadata.slug.length > 0 ? reference.metadata.slug : "";
42257
+ const refSlug = typeof _optionalChain([reference, 'access', _1007 => _1007.metadata, 'optionalAccess', _1008 => _1008.slug]) === "string" && reference.metadata.slug.length > 0 ? reference.metadata.slug : "";
41449
42258
  const queryValue = refSlug || sanitizeTitleForChat(reference.title) || reference.id;
41450
42259
  const escaped = queryValue.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
41451
42260
  const text = `/${cmdId} display "${escaped}"`;
@@ -41458,14 +42267,14 @@ function useEmbeddedChat(options) {
41458
42267
  const tableId = tableIdForDocumentType(reference.type);
41459
42268
  if (!tableId) {
41460
42269
  console.warn(
41461
- `[useEmbeddedChat] discussRef: no tableId for documentType="${reference.type}"; ignoring click`
42270
+ `[useSseChatAdapter] discussRef: no tableId for documentType="${reference.type}"; ignoring click`
41462
42271
  );
41463
42272
  return;
41464
42273
  }
41465
42274
  const refId = (_nullishCoalesce(reference.id, () => ( ""))).trim();
41466
42275
  if (!refId) {
41467
42276
  console.warn(
41468
- `[useEmbeddedChat] discussRef: empty reference.id for type="${reference.type}"; ignoring click`
42277
+ `[useSseChatAdapter] discussRef: empty reference.id for type="${reference.type}"; ignoring click`
41469
42278
  );
41470
42279
  return;
41471
42280
  }
@@ -41517,21 +42326,249 @@ function useEmbeddedChat(options) {
41517
42326
  clearMessages,
41518
42327
  streamingPhase,
41519
42328
  /** Provider key for the lib's `<ModelDisplay>` icon. */
41520
- currentProvider: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _995 => _995.provider]), () => ( null)),
41521
- currentModelLabel: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _996 => _996.modelLabel]), () => ( null)),
41522
- currentContextWindowMaxTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _997 => _997.contextWindowMaxTokens]), () => ( null)),
42329
+ currentProvider: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1009 => _1009.provider]), () => ( null)),
42330
+ currentModelLabel: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1010 => _1010.modelLabel]), () => ( null)),
42331
+ currentContextWindowMaxTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1011 => _1011.contextWindowMaxTokens]), () => ( null)),
41523
42332
  /** Input tokens (known after server's message_start frame; null until). */
41524
- currentInputTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _998 => _998.inputTokens]), () => ( null)),
42333
+ currentInputTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1012 => _1012.inputTokens]), () => ( null)),
41525
42334
  /** Output tokens (known only after server's trailing usage frame). */
41526
- currentOutputTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _999 => _999.outputTokens]), () => ( null)),
42335
+ currentOutputTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1013 => _1013.outputTokens]), () => ( null)),
41527
42336
  /** Cache hit % (read / total-input × 100). null during streaming. */
41528
- currentCacheHitRatePct: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1000 => _1000.cacheHitRatePct]), () => ( null)),
42337
+ currentCacheHitRatePct: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1014 => _1014.cacheHitRatePct]), () => ( null)),
41529
42338
  /** Cross-call usage breakdown (Haiku rewriter/classifier/summarizer
41530
42339
  * token counts). null until the trailing usage frame lands. */
41531
- currentUsageBreakdown: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1001 => _1001.breakdown]), () => ( null))
42340
+ currentUsageBreakdown: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1015 => _1015.breakdown]), () => ( null))
41532
42341
  };
41533
42342
  }
41534
42343
 
42344
+ // src/components/chat/hooks/use-nats-chat-adapter.ts
42345
+
42346
+
42347
+
42348
+
42349
+
42350
+
42351
+
42352
+ function nextId(role) {
42353
+ return `${role}-${Date.now()}-${Math.random().toString(36).slice(2, 7)}`;
42354
+ }
42355
+ function updateTrailingAssistant(prev, segments) {
42356
+ const last = prev[prev.length - 1];
42357
+ if (!last || last.role !== "assistant") {
42358
+ return [
42359
+ ...prev,
42360
+ {
42361
+ id: nextId("assistant"),
42362
+ role: "assistant",
42363
+ content: "",
42364
+ segments
42365
+ }
42366
+ ];
42367
+ }
42368
+ return [
42369
+ ...prev.slice(0, -1),
42370
+ { ...last, segments }
42371
+ ];
42372
+ }
42373
+ function useNatsChatAdapter(config, options = {}) {
42374
+ const { active = true } = options;
42375
+ const {
42376
+ dialogId,
42377
+ getNatsWsUrl,
42378
+ clientConfig,
42379
+ publishUserMessage,
42380
+ fetchChunks,
42381
+ enableThinking,
42382
+ batchApprovalsEnabled
42383
+ } = config;
42384
+ const [messages, setMessages] = _react.useState.call(void 0, []);
42385
+ const [streamingPhase, setStreamingPhase] = _react.useState.call(void 0, "idle");
42386
+ const callbacksRef = _react.useRef.call(void 0, {
42387
+ onSegmentsUpdate: (segments) => {
42388
+ setMessages((prev) => updateTrailingAssistant(prev, segments));
42389
+ },
42390
+ onStreamStart: () => setStreamingPhase("streaming"),
42391
+ onStreamEnd: () => setStreamingPhase("idle")
42392
+ });
42393
+ const { processChunk, reset: resetAccumulator } = useRealtimeChunkProcessor({
42394
+ callbacks: {
42395
+ onSegmentsUpdate: (segments) => callbacksRef.current.onSegmentsUpdate(segments),
42396
+ onStreamStart: () => callbacksRef.current.onStreamStart(),
42397
+ onStreamEnd: () => callbacksRef.current.onStreamEnd()
42398
+ },
42399
+ enableThinking,
42400
+ batchApprovalsEnabled
42401
+ });
42402
+ const {
42403
+ processChunk: catchupProcessChunk,
42404
+ catchUpChunks,
42405
+ startInitialBuffering,
42406
+ resetChunkTracking
42407
+ } = useChunkCatchup({
42408
+ dialogId: active ? dialogId : null,
42409
+ onChunkReceived: (chunk) => processChunk(chunk),
42410
+ fetchChunks
42411
+ });
42412
+ _react.useEffect.call(void 0, () => {
42413
+ if (!active || !dialogId) return;
42414
+ resetChunkTracking();
42415
+ startInitialBuffering();
42416
+ catchUpChunks().catch((err) => {
42417
+ console.error("[useNatsChatAdapter] initial catchup failed:", err);
42418
+ });
42419
+ }, [active, dialogId, resetChunkTracking, startInitialBuffering, catchUpChunks]);
42420
+ useNatsDialogSubscription({
42421
+ enabled: active && dialogId != null,
42422
+ dialogId,
42423
+ getNatsWsUrl,
42424
+ clientConfig,
42425
+ onEvent: (payload, messageType) => {
42426
+ catchupProcessChunk(payload, messageType);
42427
+ }
42428
+ });
42429
+ const sendMessage = _react.useCallback.call(void 0,
42430
+ async (text, sendOptions) => {
42431
+ const hidden = _nullishCoalesce(_optionalChain([sendOptions, 'optionalAccess', _1016 => _1016.hidden]), () => ( false));
42432
+ setMessages((prev) => [
42433
+ ...prev,
42434
+ {
42435
+ id: nextId("user"),
42436
+ role: "user",
42437
+ content: text,
42438
+ ...hidden ? { hidden: true } : {}
42439
+ },
42440
+ {
42441
+ id: nextId("assistant"),
42442
+ role: "assistant",
42443
+ content: "",
42444
+ segments: []
42445
+ }
42446
+ ]);
42447
+ setStreamingPhase("thinking");
42448
+ await publishUserMessage(text, { hidden, dialogId });
42449
+ },
42450
+ [publishUserMessage, dialogId]
42451
+ );
42452
+ const stopMessage = _react.useCallback.call(void 0, () => {
42453
+ setStreamingPhase("idle");
42454
+ }, []);
42455
+ const clearMessages = _react.useCallback.call(void 0, () => {
42456
+ setMessages([]);
42457
+ resetAccumulator();
42458
+ setStreamingPhase("idle");
42459
+ }, [resetAccumulator]);
42460
+ const discussRef = _react.useCallback.call(void 0, (_ref) => {
42461
+ }, []);
42462
+ const displayRef = _react.useCallback.call(void 0, (_ref) => {
42463
+ }, []);
42464
+ const isLoading = streamingPhase !== "idle";
42465
+ return _react.useMemo.call(void 0,
42466
+ () => ({
42467
+ messages,
42468
+ isLoading,
42469
+ streamingPhase,
42470
+ sendMessage,
42471
+ stopMessage,
42472
+ clearMessages,
42473
+ discussRef,
42474
+ displayRef,
42475
+ // SSE-only telemetry — null in NATS mode.
42476
+ currentProvider: null,
42477
+ currentModelLabel: null,
42478
+ currentContextWindowMaxTokens: null,
42479
+ currentInputTokens: null,
42480
+ currentOutputTokens: null,
42481
+ currentCacheHitRatePct: null,
42482
+ currentUsageBreakdown: null
42483
+ }),
42484
+ [
42485
+ messages,
42486
+ isLoading,
42487
+ streamingPhase,
42488
+ sendMessage,
42489
+ stopMessage,
42490
+ clearMessages,
42491
+ discussRef,
42492
+ displayRef
42493
+ ]
42494
+ );
42495
+ }
42496
+
42497
+ // src/components/chat/hooks/use-unified-chat.ts
42498
+
42499
+ var EMPTY_SSE_OPTIONS = {};
42500
+ function createDisabledNatsConfig() {
42501
+ return {
42502
+ dialogId: null,
42503
+ getNatsWsUrl: () => null,
42504
+ publishUserMessage: () => {
42505
+ throw new Error(
42506
+ "[useUnifiedChat] publishUserMessage invoked but mingo mode is not configured. Pass `modes.mingo` to enable Mingo agent transport."
42507
+ );
42508
+ }
42509
+ };
42510
+ }
42511
+ function useUnifiedChat(options) {
42512
+ const { modes, activeMode } = options;
42513
+ const disabledNatsRef = _react.useRef.call(void 0, null);
42514
+ if (disabledNatsRef.current === null) {
42515
+ disabledNatsRef.current = createDisabledNatsConfig();
42516
+ }
42517
+ const sseActive = activeMode === "guide" && modes.guide !== void 0;
42518
+ const natsActive = activeMode === "mingo" && modes.mingo !== void 0;
42519
+ const sseState = useSseChatAdapter(_nullishCoalesce(modes.guide, () => ( EMPTY_SSE_OPTIONS)));
42520
+ const natsState = useNatsChatAdapter(
42521
+ _nullishCoalesce(modes.mingo, () => ( disabledNatsRef.current)),
42522
+ { active: natsActive }
42523
+ );
42524
+ void sseActive;
42525
+ const activeState = activeMode === "guide" ? sseState : natsState;
42526
+ const stopMessage = _react.useCallback.call(void 0, () => activeState.stopMessage(), [activeState]);
42527
+ const clearMessages = _react.useCallback.call(void 0,
42528
+ () => activeState.clearMessages(),
42529
+ [activeState]
42530
+ );
42531
+ const sendMessage = _react.useCallback.call(void 0,
42532
+ (text, opts) => activeState.sendMessage(text, opts),
42533
+ [activeState]
42534
+ );
42535
+ const discussRef = _react.useCallback.call(void 0,
42536
+ (ref) => activeState.discussRef(ref),
42537
+ [activeState]
42538
+ );
42539
+ const displayRef = _react.useCallback.call(void 0,
42540
+ (ref) => activeState.displayRef(ref),
42541
+ [activeState]
42542
+ );
42543
+ return _react.useMemo.call(void 0,
42544
+ () => ({
42545
+ messages: activeState.messages,
42546
+ isLoading: activeState.isLoading,
42547
+ streamingPhase: activeState.streamingPhase,
42548
+ sendMessage,
42549
+ stopMessage,
42550
+ clearMessages,
42551
+ discussRef,
42552
+ displayRef,
42553
+ currentProvider: activeState.currentProvider,
42554
+ currentModelLabel: activeState.currentModelLabel,
42555
+ currentContextWindowMaxTokens: activeState.currentContextWindowMaxTokens,
42556
+ currentInputTokens: activeState.currentInputTokens,
42557
+ currentOutputTokens: activeState.currentOutputTokens,
42558
+ currentCacheHitRatePct: activeState.currentCacheHitRatePct,
42559
+ currentUsageBreakdown: activeState.currentUsageBreakdown
42560
+ }),
42561
+ [
42562
+ activeState,
42563
+ sendMessage,
42564
+ stopMessage,
42565
+ clearMessages,
42566
+ discussRef,
42567
+ displayRef
42568
+ ]
42569
+ );
42570
+ }
42571
+
41535
42572
  // src/components/chat/hooks/use-proxied-image-url.ts
41536
42573
  function useProxiedImageUrl(url) {
41537
42574
  const r = _chunk6RZYJICVcjs.useRequiredChatRuntime.call(void 0, );
@@ -41544,12 +42581,12 @@ function useProxiedImageUrl(url) {
41544
42581
 
41545
42582
  // src/components/chat/utils/process-historical-messages.ts
41546
42583
  function getOwnerDisplayName(owner) {
41547
- if (_optionalChain([owner, 'optionalAccess', _1002 => _1002.type]) === OWNER_TYPE.ADMIN && owner.user) {
42584
+ if (_optionalChain([owner, 'optionalAccess', _1017 => _1017.type]) === OWNER_TYPE.ADMIN && owner.user) {
41548
42585
  const { firstName, lastName } = owner.user;
41549
42586
  const name = [firstName, lastName].filter(Boolean).join(" ");
41550
42587
  if (name) return name;
41551
42588
  }
41552
- return _optionalChain([owner, 'optionalAccess', _1003 => _1003.type]) === OWNER_TYPE.ADMIN ? "Admin" : "You";
42589
+ return _optionalChain([owner, 'optionalAccess', _1018 => _1018.type]) === OWNER_TYPE.ADMIN ? "Admin" : "You";
41553
42590
  }
41554
42591
  function pushStandaloneMessages(processedMessages, msg, messageDataArray) {
41555
42592
  messageDataArray.forEach((data) => {
@@ -41612,10 +42649,10 @@ function processHistoricalMessages(messages, options = {}) {
41612
42649
  pushStandaloneMessages(processedMessages, msg, messageDataArray);
41613
42650
  return;
41614
42651
  }
41615
- const isUserMessage = _optionalChain([msg, 'access', _1004 => _1004.owner, 'optionalAccess', _1005 => _1005.type]) === OWNER_TYPE.CLIENT || _optionalChain([msg, 'access', _1006 => _1006.owner, 'optionalAccess', _1007 => _1007.type]) === OWNER_TYPE.ADMIN;
42652
+ const isUserMessage = _optionalChain([msg, 'access', _1019 => _1019.owner, 'optionalAccess', _1020 => _1020.type]) === OWNER_TYPE.CLIENT || _optionalChain([msg, 'access', _1021 => _1021.owner, 'optionalAccess', _1022 => _1022.type]) === OWNER_TYPE.ADMIN;
41616
42653
  if (isUserMessage) {
41617
42654
  flushAssistantMessage();
41618
- const userAuthorType = _optionalChain([msg, 'access', _1008 => _1008.owner, 'optionalAccess', _1009 => _1009.type]) === OWNER_TYPE.ADMIN ? "admin" : "user";
42655
+ const userAuthorType = _optionalChain([msg, 'access', _1023 => _1023.owner, 'optionalAccess', _1024 => _1024.type]) === OWNER_TYPE.ADMIN ? "admin" : "user";
41619
42656
  messageDataArray.forEach((data) => {
41620
42657
  if (data.type === MESSAGE_TYPE.TEXT && "text" in data && data.text) {
41621
42658
  processedMessages.push({
@@ -41639,7 +42676,7 @@ function processHistoricalMessages(messages, options = {}) {
41639
42676
  });
41640
42677
  const nextMsg = messages[index + 1];
41641
42678
  const isLastMessage = index === messages.length - 1;
41642
- const nextIsFromUser = nextMsg && (_optionalChain([nextMsg, 'access', _1010 => _1010.owner, 'optionalAccess', _1011 => _1011.type]) === OWNER_TYPE.CLIENT || _optionalChain([nextMsg, 'access', _1012 => _1012.owner, 'optionalAccess', _1013 => _1013.type]) === OWNER_TYPE.ADMIN);
42679
+ const nextIsFromUser = nextMsg && (_optionalChain([nextMsg, 'access', _1025 => _1025.owner, 'optionalAccess', _1026 => _1026.type]) === OWNER_TYPE.CLIENT || _optionalChain([nextMsg, 'access', _1027 => _1027.owner, 'optionalAccess', _1028 => _1028.type]) === OWNER_TYPE.ADMIN);
41643
42680
  if (isLastMessage || nextIsFromUser) {
41644
42681
  flushAssistantMessage();
41645
42682
  }
@@ -41749,7 +42786,7 @@ function processMessageData(data, accumulator, approvalStatuses, options = {}, e
41749
42786
  }
41750
42787
  }
41751
42788
  } else {
41752
- _optionalChain([escalatedApprovals, 'optionalAccess', _1014 => _1014.set, 'call', _1015 => _1015(data.approvalRequestId, {
42789
+ _optionalChain([escalatedApprovals, 'optionalAccess', _1029 => _1029.set, 'call', _1030 => _1030(data.approvalRequestId, {
41753
42790
  command: data.command || "",
41754
42791
  explanation: data.explanation,
41755
42792
  approvalType,
@@ -41762,8 +42799,8 @@ function processMessageData(data, accumulator, approvalStatuses, options = {}, e
41762
42799
  if ("approvalRequestId" in data && data.approvalRequestId) {
41763
42800
  const existingStatus = approvalStatuses[data.approvalRequestId];
41764
42801
  const status = existingStatus || (data.approved ? "approved" : "rejected");
41765
- const escalatedData = _optionalChain([escalatedApprovals, 'optionalAccess', _1016 => _1016.get, 'call', _1017 => _1017(data.approvalRequestId)]);
41766
- if (_optionalChain([escalatedData, 'optionalAccess', _1018 => _1018.toolCalls]) && escalatedData.toolCalls.length > 0) {
42802
+ const escalatedData = _optionalChain([escalatedApprovals, 'optionalAccess', _1031 => _1031.get, 'call', _1032 => _1032(data.approvalRequestId)]);
42803
+ if (_optionalChain([escalatedData, 'optionalAccess', _1033 => _1033.toolCalls]) && escalatedData.toolCalls.length > 0) {
41767
42804
  if (batchApprovalsEnabled) {
41768
42805
  accumulator.addApprovalBatch(
41769
42806
  data.approvalRequestId,
@@ -41783,7 +42820,7 @@ function processMessageData(data, accumulator, approvalStatuses, options = {}, e
41783
42820
  );
41784
42821
  }
41785
42822
  }
41786
- _optionalChain([escalatedApprovals, 'optionalAccess', _1019 => _1019.delete, 'call', _1020 => _1020(data.approvalRequestId)]);
42823
+ _optionalChain([escalatedApprovals, 'optionalAccess', _1034 => _1034.delete, 'call', _1035 => _1035(data.approvalRequestId)]);
41787
42824
  break;
41788
42825
  }
41789
42826
  if (escalatedData) {
@@ -41792,7 +42829,7 @@ function processMessageData(data, accumulator, approvalStatuses, options = {}, e
41792
42829
  explanation: escalatedData.explanation,
41793
42830
  approvalType: escalatedData.approvalType
41794
42831
  });
41795
- _optionalChain([escalatedApprovals, 'optionalAccess', _1021 => _1021.delete, 'call', _1022 => _1022(data.approvalRequestId)]);
42832
+ _optionalChain([escalatedApprovals, 'optionalAccess', _1036 => _1036.delete, 'call', _1037 => _1037(data.approvalRequestId)]);
41796
42833
  }
41797
42834
  const before = accumulator.getSegments();
41798
42835
  const after = accumulator.updateApprovalStatus(data.approvalRequestId, status);
@@ -41808,9 +42845,9 @@ function processMessageData(data, accumulator, approvalStatuses, options = {}, e
41808
42845
  case MESSAGE_TYPE.ERROR:
41809
42846
  if ("error" in data) {
41810
42847
  let message2;
41811
- if ("details" in data && _optionalChain([data, 'optionalAccess', _1023 => _1023.details])) {
42848
+ if ("details" in data && _optionalChain([data, 'optionalAccess', _1038 => _1038.details])) {
41812
42849
  try {
41813
- message2 = _optionalChain([JSON, 'access', _1024 => _1024.parse, 'call', _1025 => _1025(data.details), 'optionalAccess', _1026 => _1026.error, 'optionalAccess', _1027 => _1027.message]);
42850
+ message2 = _optionalChain([JSON, 'access', _1039 => _1039.parse, 'call', _1040 => _1040(data.details), 'optionalAccess', _1041 => _1041.error, 'optionalAccess', _1042 => _1042.message]);
41814
42851
  } catch (e49) {
41815
42852
  message2 = data.details;
41816
42853
  }
@@ -41893,10 +42930,10 @@ function processHistoricalMessagesWithErrors(messages, options = {}) {
41893
42930
  pushStandaloneMessages(processedMessages, msg, messageDataArray);
41894
42931
  return;
41895
42932
  }
41896
- const isUserMessage = _optionalChain([msg, 'access', _1028 => _1028.owner, 'optionalAccess', _1029 => _1029.type]) === OWNER_TYPE.CLIENT || _optionalChain([msg, 'access', _1030 => _1030.owner, 'optionalAccess', _1031 => _1031.type]) === OWNER_TYPE.ADMIN;
42933
+ const isUserMessage = _optionalChain([msg, 'access', _1043 => _1043.owner, 'optionalAccess', _1044 => _1044.type]) === OWNER_TYPE.CLIENT || _optionalChain([msg, 'access', _1045 => _1045.owner, 'optionalAccess', _1046 => _1046.type]) === OWNER_TYPE.ADMIN;
41897
42934
  if (isUserMessage) {
41898
42935
  flushAssistantMessage();
41899
- const userAuthorType = _optionalChain([msg, 'access', _1032 => _1032.owner, 'optionalAccess', _1033 => _1033.type]) === OWNER_TYPE.ADMIN ? "admin" : "user";
42936
+ const userAuthorType = _optionalChain([msg, 'access', _1047 => _1047.owner, 'optionalAccess', _1048 => _1048.type]) === OWNER_TYPE.ADMIN ? "admin" : "user";
41900
42937
  messageDataArray.forEach((data) => {
41901
42938
  if (data.type === MESSAGE_TYPE.TEXT && "text" in data && data.text) {
41902
42939
  processedMessages.push({
@@ -41920,7 +42957,7 @@ function processHistoricalMessagesWithErrors(messages, options = {}) {
41920
42957
  });
41921
42958
  const nextMsg = messages[index + 1];
41922
42959
  const isLastMessage = index === messages.length - 1;
41923
- const nextIsFromUser = nextMsg && (_optionalChain([nextMsg, 'access', _1034 => _1034.owner, 'optionalAccess', _1035 => _1035.type]) === OWNER_TYPE.CLIENT || _optionalChain([nextMsg, 'access', _1036 => _1036.owner, 'optionalAccess', _1037 => _1037.type]) === OWNER_TYPE.ADMIN);
42960
+ const nextIsFromUser = nextMsg && (_optionalChain([nextMsg, 'access', _1049 => _1049.owner, 'optionalAccess', _1050 => _1050.type]) === OWNER_TYPE.CLIENT || _optionalChain([nextMsg, 'access', _1051 => _1051.owner, 'optionalAccess', _1052 => _1052.type]) === OWNER_TYPE.ADMIN);
41924
42961
  if (isLastMessage || nextIsFromUser) {
41925
42962
  flushAssistantMessage();
41926
42963
  }
@@ -41980,7 +43017,7 @@ function extractIncompleteMessageState(lastMessage) {
41980
43017
  break;
41981
43018
  case "approval_batch": {
41982
43019
  const allDone = !!segment.data.executions && segment.data.toolCalls.every(
41983
- (c) => _optionalChain([segment, 'access', _1038 => _1038.data, 'access', _1039 => _1039.executions, 'optionalAccess', _1040 => _1040[c.toolExecutionRequestId], 'optionalAccess', _1041 => _1041.status]) === "done"
43020
+ (c) => _optionalChain([segment, 'access', _1053 => _1053.data, 'access', _1054 => _1054.executions, 'optionalAccess', _1055 => _1055[c.toolExecutionRequestId], 'optionalAccess', _1056 => _1056.status]) === "done"
41984
43021
  );
41985
43022
  if (segment.status !== "rejected" && !allDone) {
41986
43023
  hasIncompleteState = true;
@@ -42024,7 +43061,7 @@ function chatChipClass({ tone, density = "chip", extra }) {
42024
43061
 
42025
43062
  // node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs
42026
43063
 
42027
- var useLayoutEffect22 = _optionalChain([globalThis, 'optionalAccess', _1042 => _1042.document]) ? React114.useLayoutEffect : () => {
43064
+ var useLayoutEffect22 = _optionalChain([globalThis, 'optionalAccess', _1057 => _1057.document]) ? React114.useLayoutEffect : () => {
42028
43065
  };
42029
43066
 
42030
43067
  // node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs
@@ -42062,7 +43099,7 @@ function useControllableState({
42062
43099
  if (isControlled) {
42063
43100
  const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue;
42064
43101
  if (value2 !== prop) {
42065
- _optionalChain([onChangeRef, 'access', _1043 => _1043.current, 'optionalCall', _1044 => _1044(value2)]);
43102
+ _optionalChain([onChangeRef, 'access', _1058 => _1058.current, 'optionalCall', _1059 => _1059(value2)]);
42066
43103
  }
42067
43104
  } else {
42068
43105
  setUncontrolledProp(nextValue);
@@ -42084,7 +43121,7 @@ function useUncontrolledState({
42084
43121
  }, [onChange]);
42085
43122
  React115.useEffect(() => {
42086
43123
  if (prevValueRef.current !== value) {
42087
- _optionalChain([onChangeRef, 'access', _1045 => _1045.current, 'optionalCall', _1046 => _1046(value)]);
43124
+ _optionalChain([onChangeRef, 'access', _1060 => _1060.current, 'optionalCall', _1061 => _1061(value)]);
42088
43125
  prevValueRef.current = value;
42089
43126
  }
42090
43127
  }, [value, prevValueRef]);
@@ -42426,7 +43463,11 @@ function EmbeddableChatInner({
42426
43463
  defaultOpen,
42427
43464
  showInternalTrigger = true,
42428
43465
  extras,
42429
- tableIdForDocumentType
43466
+ tableIdForDocumentType,
43467
+ modes,
43468
+ activeMode: controlledActiveMode,
43469
+ onActiveModeChange,
43470
+ defaultActiveMode
42430
43471
  }) {
42431
43472
  const runtime = _chunk6RZYJICVcjs.useRequiredChatRuntime.call(void 0, );
42432
43473
  const source = runtime.source;
@@ -42497,7 +43538,7 @@ function EmbeddableChatInner({
42497
43538
  setCommandsById(map);
42498
43539
  setCommandsLoaded(true);
42499
43540
  }).catch((err) => {
42500
- if (!cancelled && _optionalChain([err, 'optionalAccess', _1047 => _1047.name]) !== "AbortError") {
43541
+ if (!cancelled && _optionalChain([err, 'optionalAccess', _1062 => _1062.name]) !== "AbortError") {
42501
43542
  console.warn("[embeddable-chat] failed to fetch slash commands:", err);
42502
43543
  setCommandsLoaded(true);
42503
43544
  }
@@ -42525,7 +43566,25 @@ function EmbeddableChatInner({
42525
43566
  _react.useEffect.call(void 0, () => {
42526
43567
  if (!isOpen) setAnimationRest(false);
42527
43568
  }, [isOpen]);
42528
- const userName = _optionalChain([identityUser, 'optionalAccess', _1048 => _1048.firstName, 'optionalAccess', _1049 => _1049.trim, 'call', _1050 => _1050()]) || _optionalChain([identityUser, 'optionalAccess', _1051 => _1051.name, 'optionalAccess', _1052 => _1052.split, 'call', _1053 => _1053(" "), 'access', _1054 => _1054[0], 'optionalAccess', _1055 => _1055.trim, 'call', _1056 => _1056()]) || void 0;
43569
+ const userName = _optionalChain([identityUser, 'optionalAccess', _1063 => _1063.firstName, 'optionalAccess', _1064 => _1064.trim, 'call', _1065 => _1065()]) || _optionalChain([identityUser, 'optionalAccess', _1066 => _1066.name, 'optionalAccess', _1067 => _1067.split, 'call', _1068 => _1068(" "), 'access', _1069 => _1069[0], 'optionalAccess', _1070 => _1070.trim, 'call', _1071 => _1071()]) || void 0;
43570
+ const effectiveModes = _react.useMemo.call(void 0, () => {
43571
+ if (modes) return modes;
43572
+ const guideOptions = tableIdForDocumentType ? { tableIdForDocumentType } : {};
43573
+ return { guide: guideOptions };
43574
+ }, [modes, tableIdForDocumentType]);
43575
+ const initialActiveMode = _nullishCoalesce(_nullishCoalesce(controlledActiveMode, () => ( defaultActiveMode)), () => ( (effectiveModes.guide ? "guide" : "mingo")));
43576
+ const [uncontrolledActiveMode, setUncontrolledActiveMode] = _react.useState.call(void 0, initialActiveMode);
43577
+ const activeMode = _nullishCoalesce(controlledActiveMode, () => ( uncontrolledActiveMode));
43578
+ const handleActiveModeChange = _react.useCallback.call(void 0,
43579
+ (next) => {
43580
+ if (controlledActiveMode === void 0) {
43581
+ setUncontrolledActiveMode(next);
43582
+ }
43583
+ _optionalChain([onActiveModeChange, 'optionalCall', _1072 => _1072(next)]);
43584
+ },
43585
+ [controlledActiveMode, onActiveModeChange]
43586
+ );
43587
+ const showModeToggle = effectiveModes.guide !== void 0 && effectiveModes.mingo !== void 0;
42529
43588
  const {
42530
43589
  messages: rawMessages,
42531
43590
  isLoading: chatLoading,
@@ -42541,7 +43600,7 @@ function EmbeddableChatInner({
42541
43600
  currentCacheHitRatePct,
42542
43601
  currentUsageBreakdown,
42543
43602
  displayRef
42544
- } = useEmbeddedChat({ tableIdForDocumentType });
43603
+ } = useUnifiedChat({ modes: effectiveModes, activeMode });
42545
43604
  const {
42546
43605
  attachments: stagedAttachments,
42547
43606
  readyAttachments,
@@ -42592,7 +43651,7 @@ function EmbeddableChatInner({
42592
43651
  augmentedText = `${text}${markdown}`;
42593
43652
  }
42594
43653
  sendMessage(augmentedText, {
42595
- ...readyAttachments.length > 0 ? { pendingAttachments: readyAttachments } : {}
43654
+ ...readyAttachments.length > 0 ? { attachments: readyAttachments } : {}
42596
43655
  });
42597
43656
  if (readyAttachments.length > 0) {
42598
43657
  clearAttachments();
@@ -42641,9 +43700,9 @@ function EmbeddableChatInner({
42641
43700
  const lastAssistantMsg = [...rawMessages].reverse().find((m) => m.role === "assistant");
42642
43701
  const lastSources = _react.useMemo.call(void 0, () => {
42643
43702
  if (chatLoading) return void 0;
42644
- const sources = _optionalChain([lastAssistantMsg, 'optionalAccess', _1057 => _1057.sources]);
43703
+ const sources = _optionalChain([lastAssistantMsg, 'optionalAccess', _1073 => _1073.sources]);
42645
43704
  if (!sources || sources.length === 0) return void 0;
42646
- const content = _optionalChain([lastAssistantMsg, 'optionalAccess', _1058 => _1058.content]) || "";
43705
+ const content = _optionalChain([lastAssistantMsg, 'optionalAccess', _1074 => _1074.content]) || "";
42647
43706
  const citationOrder = [...content.matchAll(/\[(\d+)\]/g)].map(
42648
43707
  (m) => parseInt(m[1], 10)
42649
43708
  );
@@ -42690,20 +43749,46 @@ function EmbeddableChatInner({
42690
43749
  " AI Assistant"
42691
43750
  ] }) }),
42692
43751
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-full flex-col overflow-hidden", children: [
42693
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex-shrink-0 px-5 pt-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
42694
- ChatHeader,
42695
- {
42696
- userName: "Mingo AI",
42697
- userTitle: `${sourceLabel} Assistant`,
42698
- userIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk24KCAECRcjs.MingoIcon, { className: "h-6 w-6", color: "white" }),
42699
- onNewChat: handleNewChat,
42700
- onClose: handleClose,
42701
- showNewChat: hasMessages,
42702
- connectionStatus: "connected",
42703
- fullWidth: true,
42704
- className: "!rounded-xl"
42705
- }
42706
- ) }),
43752
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-shrink-0 px-5 pt-4", children: [
43753
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
43754
+ ChatHeader,
43755
+ {
43756
+ userName: "Mingo AI",
43757
+ userTitle: `${sourceLabel} Assistant`,
43758
+ userIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk24KCAECRcjs.MingoIcon, { className: "h-6 w-6", color: "white" }),
43759
+ onNewChat: handleNewChat,
43760
+ onClose: handleClose,
43761
+ showNewChat: hasMessages,
43762
+ connectionStatus: "connected",
43763
+ fullWidth: true,
43764
+ className: "!rounded-xl"
43765
+ }
43766
+ ),
43767
+ showModeToggle ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
43768
+ "div",
43769
+ {
43770
+ role: "radiogroup",
43771
+ "aria-label": "Chat mode",
43772
+ className: "mt-3 inline-flex rounded-lg border border-ods-border bg-ods-bg-secondary p-0.5",
43773
+ children: ["mingo", "guide"].map((m) => {
43774
+ const isActive = activeMode === m;
43775
+ const label = m === "mingo" ? "Mingo" : "Guide";
43776
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
43777
+ "button",
43778
+ {
43779
+ type: "button",
43780
+ role: "radio",
43781
+ "aria-checked": isActive,
43782
+ onClick: () => handleActiveModeChange(m),
43783
+ 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"),
43784
+ children: label
43785
+ },
43786
+ m
43787
+ );
43788
+ })
43789
+ }
43790
+ ) : null
43791
+ ] }),
42707
43792
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
42708
43793
  "div",
42709
43794
  {
@@ -42861,7 +43946,7 @@ function EmbeddableChatInner({
42861
43946
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
42862
43947
  ChatAttachmentAddButton,
42863
43948
  {
42864
- attachmentsEnabled,
43949
+ attachmentsEnabled: attachmentsEnabled && activeMode === "guide",
42865
43950
  attachmentsCount: stagedAttachments.length,
42866
43951
  onAddFiles: addAttachmentFiles,
42867
43952
  disabled: chatLoading
@@ -43689,5 +44774,21 @@ function EmbeddableChatInner({
43689
44774
 
43690
44775
 
43691
44776
 
43692
- 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;
43693
- //# sourceMappingURL=chunk-YGOJIDL5.cjs.map
44777
+
44778
+
44779
+
44780
+
44781
+
44782
+
44783
+
44784
+
44785
+
44786
+
44787
+
44788
+
44789
+
44790
+
44791
+
44792
+
44793
+ 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;
44794
+ //# sourceMappingURL=chunk-C5EC5AZM.cjs.map