@flamingo-stack/openframe-frontend-core 0.0.536 → 0.0.537-1788.4718.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-FFJL6FEB.js → chunk-3GXMS4OP.js} +2 -2
- package/dist/{chunk-LUZPF7NX.js → chunk-5JPSQOZQ.js} +2 -2
- package/dist/{chunk-6SV4XZMD.js → chunk-7EHGP4QK.js} +843 -720
- package/dist/chunk-7EHGP4QK.js.map +1 -0
- package/dist/{chunk-IOXNHTGX.js → chunk-7FXZHI5D.js} +2 -2
- package/dist/{chunk-ZZDRBFEV.cjs → chunk-7WNJ7RFO.cjs} +14 -14
- package/dist/{chunk-ZZDRBFEV.cjs.map → chunk-7WNJ7RFO.cjs.map} +1 -1
- package/dist/{chunk-AECHSFLC.js → chunk-C4LEH3VE.js} +2 -2
- package/dist/{chunk-NCUZ64LM.cjs → chunk-CATY4DVR.cjs} +87 -87
- package/dist/{chunk-NCUZ64LM.cjs.map → chunk-CATY4DVR.cjs.map} +1 -1
- package/dist/{chunk-BHB7F4EN.js → chunk-CQQXB25K.js} +2 -2
- package/dist/{chunk-QAMRW5TG.js → chunk-CZHCXCWL.js} +2 -2
- package/dist/{chunk-L73PC7MW.cjs → chunk-DHSVBGOX.cjs} +9 -9
- package/dist/{chunk-L73PC7MW.cjs.map → chunk-DHSVBGOX.cjs.map} +1 -1
- package/dist/{chunk-MM5C6NID.js → chunk-HRC56BQW.js} +5 -5
- package/dist/{chunk-PA5NMP6K.cjs → chunk-KKZ2QMQD.cjs} +26 -26
- package/dist/{chunk-PA5NMP6K.cjs.map → chunk-KKZ2QMQD.cjs.map} +1 -1
- package/dist/{chunk-X6UHNN3E.js → chunk-LFMIAPBP.js} +2 -2
- package/dist/{chunk-3XSSW3IZ.cjs → chunk-MDP3YKFI.cjs} +5 -5
- package/dist/{chunk-3XSSW3IZ.cjs.map → chunk-MDP3YKFI.cjs.map} +1 -1
- package/dist/{chunk-ONWQ52QG.js → chunk-MOIHWYSA.js} +2 -2
- package/dist/{chunk-C257223X.cjs → chunk-OYTM3YXO.cjs} +7 -7
- package/dist/{chunk-C257223X.cjs.map → chunk-OYTM3YXO.cjs.map} +1 -1
- package/dist/{chunk-MTLFROMV.cjs → chunk-QPPG3KHW.cjs} +3 -3
- package/dist/{chunk-MTLFROMV.cjs.map → chunk-QPPG3KHW.cjs.map} +1 -1
- package/dist/{chunk-2PJ442HY.js → chunk-SGNWSUL3.js} +6 -6
- package/dist/{chunk-32SKUKQO.cjs → chunk-SKIM263K.cjs} +37 -37
- package/dist/{chunk-32SKUKQO.cjs.map → chunk-SKIM263K.cjs.map} +1 -1
- package/dist/{chunk-BEZFZ2CS.js → chunk-TCSSYTDN.js} +4 -4
- package/dist/{chunk-EEOLXN4D.cjs → chunk-V4D5MPB7.cjs} +4 -4
- package/dist/{chunk-EEOLXN4D.cjs.map → chunk-V4D5MPB7.cjs.map} +1 -1
- package/dist/{chunk-3ROYMRZE.cjs → chunk-VSIHO7DJ.cjs} +61 -61
- package/dist/{chunk-3ROYMRZE.cjs.map → chunk-VSIHO7DJ.cjs.map} +1 -1
- package/dist/{chunk-NEV7TKMB.js → chunk-WHUEUACV.js} +2 -2
- package/dist/{chunk-SL2GDMZR.cjs → chunk-WJIBB3KT.cjs} +31 -31
- package/dist/{chunk-SL2GDMZR.cjs.map → chunk-WJIBB3KT.cjs.map} +1 -1
- package/dist/{chunk-FIPHDAD2.cjs → chunk-YEKXTTAC.cjs} +26 -26
- package/dist/{chunk-FIPHDAD2.cjs.map → chunk-YEKXTTAC.cjs.map} +1 -1
- package/dist/{chunk-GM72KRPS.js → chunk-YIDGB5KP.js} +4 -4
- package/dist/{chunk-TRLZV7WM.cjs → chunk-YMPRMZDD.cjs} +413 -290
- package/dist/{chunk-TRLZV7WM.cjs.map → chunk-YMPRMZDD.cjs.map} +1 -1
- package/dist/{chunk-4TO3WDKH.cjs → chunk-YPI3JIR6.cjs} +11 -11
- package/dist/{chunk-4TO3WDKH.cjs.map → chunk-YPI3JIR6.cjs.map} +1 -1
- package/dist/components/case-studies/index.cjs +8 -8
- package/dist/components/case-studies/index.js +2 -2
- package/dist/components/chat/index.cjs +2 -2
- package/dist/components/chat/index.js +1 -1
- package/dist/components/contact/index.cjs +3 -3
- package/dist/components/contact/index.js +2 -2
- package/dist/components/docs/index.cjs +5 -5
- package/dist/components/docs/index.js +4 -4
- package/dist/components/embeds/index.cjs +3 -3
- package/dist/components/embeds/index.js +2 -2
- package/dist/components/faq/index.cjs +3 -3
- package/dist/components/faq/index.js +2 -2
- package/dist/components/features/index.cjs +2 -2
- package/dist/components/features/index.js +1 -1
- package/dist/components/help-center-pages/index.cjs +22 -22
- package/dist/components/help-center-pages/index.js +13 -13
- package/dist/components/index.cjs +134 -132
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +13 -11
- package/dist/components/index.js.map +1 -1
- package/dist/components/meeting-scheduler/index.cjs +34 -34
- package/dist/components/meeting-scheduler/index.js +3 -3
- package/dist/components/navigation/index.cjs +2 -2
- package/dist/components/navigation/index.js +1 -1
- package/dist/components/onboarding-guides/index.cjs +5 -5
- package/dist/components/onboarding-guides/index.js +4 -4
- package/dist/components/related-content/index.cjs +3 -3
- package/dist/components/related-content/index.js +2 -2
- package/dist/components/tickets/index.cjs +6 -6
- package/dist/components/tickets/index.js +5 -5
- package/dist/components/ui/assignee-dropdown.d.ts +6 -0
- package/dist/components/ui/assignee-dropdown.d.ts.map +1 -1
- package/dist/components/ui/index.cjs +4 -2
- package/dist/components/ui/index.cjs.map +1 -1
- package/dist/components/ui/index.d.ts +1 -0
- package/dist/components/ui/index.d.ts.map +1 -1
- package/dist/components/ui/index.js +3 -1
- package/dist/components/ui/take-over-ticket-modal.d.ts +44 -0
- package/dist/components/ui/take-over-ticket-modal.d.ts.map +1 -0
- package/dist/index.cjs +4 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +3 -1
- package/package.json +1 -1
- package/src/components/ui/assignee-dropdown.tsx +21 -0
- package/src/components/ui/index.ts +1 -0
- package/src/components/ui/take-over-ticket-modal.tsx +183 -0
- package/dist/chunk-6SV4XZMD.js.map +0 -1
- /package/dist/{chunk-FFJL6FEB.js.map → chunk-3GXMS4OP.js.map} +0 -0
- /package/dist/{chunk-LUZPF7NX.js.map → chunk-5JPSQOZQ.js.map} +0 -0
- /package/dist/{chunk-IOXNHTGX.js.map → chunk-7FXZHI5D.js.map} +0 -0
- /package/dist/{chunk-AECHSFLC.js.map → chunk-C4LEH3VE.js.map} +0 -0
- /package/dist/{chunk-BHB7F4EN.js.map → chunk-CQQXB25K.js.map} +0 -0
- /package/dist/{chunk-QAMRW5TG.js.map → chunk-CZHCXCWL.js.map} +0 -0
- /package/dist/{chunk-MM5C6NID.js.map → chunk-HRC56BQW.js.map} +0 -0
- /package/dist/{chunk-X6UHNN3E.js.map → chunk-LFMIAPBP.js.map} +0 -0
- /package/dist/{chunk-ONWQ52QG.js.map → chunk-MOIHWYSA.js.map} +0 -0
- /package/dist/{chunk-2PJ442HY.js.map → chunk-SGNWSUL3.js.map} +0 -0
- /package/dist/{chunk-BEZFZ2CS.js.map → chunk-TCSSYTDN.js.map} +0 -0
- /package/dist/{chunk-NEV7TKMB.js.map → chunk-WHUEUACV.js.map} +0 -0
- /package/dist/{chunk-GM72KRPS.js.map → chunk-YIDGB5KP.js.map} +0 -0
|
@@ -16920,7 +16920,7 @@ function OnboardingGuideCard({
|
|
|
16920
16920
|
}
|
|
16921
16921
|
|
|
16922
16922
|
// src/components/chat/entity-cards/roadmap-card.tsx
|
|
16923
|
-
import { useState as
|
|
16923
|
+
import { useState as useState114 } from "react";
|
|
16924
16924
|
import { ThumbsUp, ThumbsDown } from "lucide-react";
|
|
16925
16925
|
|
|
16926
16926
|
// src/components/chat/entity-cards/roadmap-vote-button.tsx
|
|
@@ -17022,7 +17022,7 @@ function AvatarStack({
|
|
|
17022
17022
|
init_button();
|
|
17023
17023
|
|
|
17024
17024
|
// src/components/ui/image-gallery-modal.tsx
|
|
17025
|
-
import { useState as
|
|
17025
|
+
import { useState as useState113, useEffect as useEffect85 } from "react";
|
|
17026
17026
|
|
|
17027
17027
|
// src/components/ui/allowed-domains-input.tsx
|
|
17028
17028
|
init_cn();
|
|
@@ -19739,7 +19739,8 @@ function CompactAssigneeDropdown({
|
|
|
19739
19739
|
options,
|
|
19740
19740
|
isLoading,
|
|
19741
19741
|
onAssign,
|
|
19742
|
-
className
|
|
19742
|
+
className,
|
|
19743
|
+
onTriggerClick
|
|
19743
19744
|
}) {
|
|
19744
19745
|
const hasAssignee = !!currentAssignee;
|
|
19745
19746
|
const orderedOptions = React55.useMemo(() => {
|
|
@@ -19766,10 +19767,16 @@ function CompactAssigneeDropdown({
|
|
|
19766
19767
|
const handleSelect = (userId) => {
|
|
19767
19768
|
onAssign(currentAssignee?.id === userId ? null : userId);
|
|
19768
19769
|
};
|
|
19770
|
+
const handleTriggerClick = onTriggerClick ? (event) => {
|
|
19771
|
+
event.preventDefault();
|
|
19772
|
+
event.stopPropagation();
|
|
19773
|
+
onTriggerClick();
|
|
19774
|
+
} : void 0;
|
|
19769
19775
|
const trigger = hasAssignee ? /* @__PURE__ */ jsx125(
|
|
19770
19776
|
"button",
|
|
19771
19777
|
{
|
|
19772
19778
|
type: "button",
|
|
19779
|
+
onClick: handleTriggerClick,
|
|
19773
19780
|
"aria-label": "Change assignee",
|
|
19774
19781
|
className: cn(
|
|
19775
19782
|
"shrink-0 rounded-full focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ods-focus",
|
|
@@ -19790,6 +19797,7 @@ function CompactAssigneeDropdown({
|
|
|
19790
19797
|
"button",
|
|
19791
19798
|
{
|
|
19792
19799
|
type: "button",
|
|
19800
|
+
onClick: handleTriggerClick,
|
|
19793
19801
|
"aria-label": "Assign user",
|
|
19794
19802
|
className: cn(
|
|
19795
19803
|
"size-8 rounded-full border border-ods-border flex items-center justify-center shrink-0",
|
|
@@ -19800,6 +19808,7 @@ function CompactAssigneeDropdown({
|
|
|
19800
19808
|
children: /* @__PURE__ */ jsx125(UserPlusIcon, { className: "size-4" })
|
|
19801
19809
|
}
|
|
19802
19810
|
);
|
|
19811
|
+
if (onTriggerClick) return trigger;
|
|
19803
19812
|
return /* @__PURE__ */ jsx125(
|
|
19804
19813
|
SearchableSelect,
|
|
19805
19814
|
{
|
|
@@ -48481,10 +48490,123 @@ function TicketInfoSection({
|
|
|
48481
48490
|
);
|
|
48482
48491
|
}
|
|
48483
48492
|
|
|
48493
|
+
// src/components/ui/take-over-ticket-modal.tsx
|
|
48494
|
+
import * as React143 from "react";
|
|
48495
|
+
init_button2();
|
|
48496
|
+
import { jsx as jsx372, jsxs as jsxs295 } from "react/jsx-runtime";
|
|
48497
|
+
function renderStatusOption(option, isSelected) {
|
|
48498
|
+
const { label, color } = option;
|
|
48499
|
+
return /* @__PURE__ */ jsxs295("div", { className: "flex items-center justify-between w-full min-w-0 gap-[var(--spacing-system-xs)]", children: [
|
|
48500
|
+
/* @__PURE__ */ jsxs295("div", { className: "flex items-center gap-[var(--spacing-system-xs)] min-w-0", children: [
|
|
48501
|
+
/* @__PURE__ */ jsx372(ColorSwatch, { color }),
|
|
48502
|
+
/* @__PURE__ */ jsx372("div", { className: "min-w-0", children: /* @__PURE__ */ jsx372(TruncateText, { className: "text-inherit", children: label }) })
|
|
48503
|
+
] }),
|
|
48504
|
+
isSelected && /* @__PURE__ */ jsx372(CheckIcon, { className: "text-ods-accent", size: 20 })
|
|
48505
|
+
] });
|
|
48506
|
+
}
|
|
48507
|
+
function renderAssigneeOption(option, isSelected) {
|
|
48508
|
+
const { label, imageUrl } = option;
|
|
48509
|
+
return /* @__PURE__ */ jsxs295("div", { className: "flex items-center justify-between w-full min-w-0 gap-[var(--spacing-system-xs)]", children: [
|
|
48510
|
+
/* @__PURE__ */ jsxs295("div", { className: "flex items-center gap-[var(--spacing-system-xs)] min-w-0", children: [
|
|
48511
|
+
/* @__PURE__ */ jsx372(SquareAvatar, { src: imageUrl, alt: label, fallback: label, size: "sm", variant: "round" }),
|
|
48512
|
+
/* @__PURE__ */ jsx372("div", { className: "min-w-0", children: /* @__PURE__ */ jsx372(TruncateText, { className: "text-inherit", children: label }) })
|
|
48513
|
+
] }),
|
|
48514
|
+
isSelected && /* @__PURE__ */ jsx372(CheckIcon, { className: "text-ods-accent", size: 20 })
|
|
48515
|
+
] });
|
|
48516
|
+
}
|
|
48517
|
+
function TakeOverTicketModal({
|
|
48518
|
+
isOpen,
|
|
48519
|
+
onClose,
|
|
48520
|
+
ticketRef,
|
|
48521
|
+
statusOptions,
|
|
48522
|
+
assigneeOptions,
|
|
48523
|
+
assigneesLoading,
|
|
48524
|
+
initialStatusId,
|
|
48525
|
+
initialAssigneeId,
|
|
48526
|
+
isPending = false,
|
|
48527
|
+
onConfirm
|
|
48528
|
+
}) {
|
|
48529
|
+
const [statusId, setStatusId] = React143.useState(null);
|
|
48530
|
+
const [assigneeId, setAssigneeId] = React143.useState(null);
|
|
48531
|
+
React143.useEffect(() => {
|
|
48532
|
+
if (!isOpen) return;
|
|
48533
|
+
setStatusId(initialStatusId ?? null);
|
|
48534
|
+
setAssigneeId(initialAssigneeId ?? null);
|
|
48535
|
+
}, [isOpen, initialStatusId, initialAssigneeId]);
|
|
48536
|
+
const selectedStatusId = statusId ?? statusOptions[0]?.value ?? null;
|
|
48537
|
+
const selectedStatus = statusOptions.find((o) => o.value === selectedStatusId);
|
|
48538
|
+
const selectedAssignee = assigneeOptions.find((o) => o.value === assigneeId);
|
|
48539
|
+
const handleConfirm = () => {
|
|
48540
|
+
if (!selectedStatusId || !assigneeId || isPending) return;
|
|
48541
|
+
onConfirm({ statusId: selectedStatusId, assigneeId });
|
|
48542
|
+
};
|
|
48543
|
+
return /* @__PURE__ */ jsxs295(Modal, { isOpen, onClose: isPending ? () => {
|
|
48544
|
+
} : onClose, className: "text-left md:max-w-[600px]", children: [
|
|
48545
|
+
/* @__PURE__ */ jsx372(ModalHeader, { children: /* @__PURE__ */ jsx372(ModalTitle, { children: "Take Over Ticket" }) }),
|
|
48546
|
+
/* @__PURE__ */ jsxs295("p", { className: "text-h4 text-ods-text-primary", children: [
|
|
48547
|
+
"The ticket ",
|
|
48548
|
+
/* @__PURE__ */ jsx372("span", { className: "text-ods-accent", children: ticketRef }),
|
|
48549
|
+
" will move to the selected status and be assigned to the technician. A direct chat with the user will start, and the AI assistant will stop working on this ticket."
|
|
48550
|
+
] }),
|
|
48551
|
+
/* @__PURE__ */ jsxs295("div", { className: "flex flex-col md:flex-row gap-[var(--spacing-system-l)] w-full", children: [
|
|
48552
|
+
/* @__PURE__ */ jsx372("div", { className: "flex-1 min-w-0", children: /* @__PURE__ */ jsx372(
|
|
48553
|
+
Autocomplete,
|
|
48554
|
+
{
|
|
48555
|
+
label: "Status",
|
|
48556
|
+
options: statusOptions,
|
|
48557
|
+
value: selectedStatusId,
|
|
48558
|
+
onChange: setStatusId,
|
|
48559
|
+
placeholder: "Select Status",
|
|
48560
|
+
startAdornment: selectedStatus ? /* @__PURE__ */ jsx372(ColorSwatch, { color: selectedStatus.color }) : void 0,
|
|
48561
|
+
renderOption: renderStatusOption
|
|
48562
|
+
}
|
|
48563
|
+
) }),
|
|
48564
|
+
/* @__PURE__ */ jsx372("div", { className: "flex-1 min-w-0", children: /* @__PURE__ */ jsx372(
|
|
48565
|
+
Autocomplete,
|
|
48566
|
+
{
|
|
48567
|
+
label: "Assigned",
|
|
48568
|
+
options: assigneeOptions,
|
|
48569
|
+
value: assigneeId,
|
|
48570
|
+
onChange: setAssigneeId,
|
|
48571
|
+
placeholder: "Select Technician",
|
|
48572
|
+
loading: assigneesLoading,
|
|
48573
|
+
startAdornment: selectedAssignee ? /* @__PURE__ */ jsx372(
|
|
48574
|
+
SquareAvatar,
|
|
48575
|
+
{
|
|
48576
|
+
src: selectedAssignee.imageUrl,
|
|
48577
|
+
alt: selectedAssignee.label,
|
|
48578
|
+
fallback: selectedAssignee.label,
|
|
48579
|
+
size: "sm",
|
|
48580
|
+
variant: "round"
|
|
48581
|
+
}
|
|
48582
|
+
) : void 0,
|
|
48583
|
+
renderOption: renderAssigneeOption
|
|
48584
|
+
}
|
|
48585
|
+
) })
|
|
48586
|
+
] }),
|
|
48587
|
+
/* @__PURE__ */ jsxs295(ModalFooter, { children: [
|
|
48588
|
+
/* @__PURE__ */ jsx372(Button, { type: "button", variant: "outline", onClick: onClose, disabled: isPending, className: "flex-1 md:hidden", children: "Cancel" }),
|
|
48589
|
+
/* @__PURE__ */ jsx372("div", { className: "hidden md:block flex-1" }),
|
|
48590
|
+
/* @__PURE__ */ jsx372(
|
|
48591
|
+
Button,
|
|
48592
|
+
{
|
|
48593
|
+
type: "button",
|
|
48594
|
+
variant: "accent",
|
|
48595
|
+
onClick: handleConfirm,
|
|
48596
|
+
loading: isPending,
|
|
48597
|
+
disabled: !selectedStatusId || !assigneeId,
|
|
48598
|
+
className: "flex-1",
|
|
48599
|
+
children: "Take Over"
|
|
48600
|
+
}
|
|
48601
|
+
)
|
|
48602
|
+
] })
|
|
48603
|
+
] });
|
|
48604
|
+
}
|
|
48605
|
+
|
|
48484
48606
|
// src/components/ui/filter-pill-row.tsx
|
|
48485
48607
|
init_button2();
|
|
48486
48608
|
import { Filter as Filter2 } from "lucide-react";
|
|
48487
|
-
import { jsx as
|
|
48609
|
+
import { jsx as jsx373, jsxs as jsxs296 } from "react/jsx-runtime";
|
|
48488
48610
|
function FilterPillRow({
|
|
48489
48611
|
label,
|
|
48490
48612
|
selectedValue,
|
|
@@ -48493,12 +48615,12 @@ function FilterPillRow({
|
|
|
48493
48615
|
countLabel,
|
|
48494
48616
|
children
|
|
48495
48617
|
}) {
|
|
48496
|
-
return /* @__PURE__ */
|
|
48497
|
-
/* @__PURE__ */
|
|
48498
|
-
/* @__PURE__ */
|
|
48499
|
-
/* @__PURE__ */
|
|
48618
|
+
return /* @__PURE__ */ jsxs296("div", { className: "flex flex-wrap items-center gap-3 p-4 bg-ods-card border border-ods-border rounded-lg", children: [
|
|
48619
|
+
/* @__PURE__ */ jsxs296("div", { className: "flex items-center gap-2", children: [
|
|
48620
|
+
/* @__PURE__ */ jsx373(Filter2, { className: "h-4 w-4 text-ods-accent" }),
|
|
48621
|
+
/* @__PURE__ */ jsx373("span", { className: "text-h5 text-ods-text-secondary", children: label })
|
|
48500
48622
|
] }),
|
|
48501
|
-
children || options.map((opt) => /* @__PURE__ */
|
|
48623
|
+
children || options.map((opt) => /* @__PURE__ */ jsx373(
|
|
48502
48624
|
Button,
|
|
48503
48625
|
{
|
|
48504
48626
|
type: "button",
|
|
@@ -48510,21 +48632,21 @@ function FilterPillRow({
|
|
|
48510
48632
|
},
|
|
48511
48633
|
opt.value
|
|
48512
48634
|
)),
|
|
48513
|
-
countLabel && /* @__PURE__ */
|
|
48635
|
+
countLabel && /* @__PURE__ */ jsx373("div", { className: "ml-auto text-h6 text-ods-text-secondary shrink-0", children: countLabel })
|
|
48514
48636
|
] });
|
|
48515
48637
|
}
|
|
48516
48638
|
|
|
48517
48639
|
// src/components/ui/image-gallery-modal.tsx
|
|
48518
48640
|
import { ChevronLeft as ChevronLeft4, ChevronRight as ChevronRight8 } from "lucide-react";
|
|
48519
|
-
import { Fragment as Fragment78, jsx as
|
|
48641
|
+
import { Fragment as Fragment78, jsx as jsx374, jsxs as jsxs297 } from "react/jsx-runtime";
|
|
48520
48642
|
function ImageGalleryModal({
|
|
48521
48643
|
images,
|
|
48522
48644
|
isOpen,
|
|
48523
48645
|
onClose,
|
|
48524
48646
|
initialIndex = 0
|
|
48525
48647
|
}) {
|
|
48526
|
-
const [selectedImageIndex, setSelectedImageIndex] =
|
|
48527
|
-
|
|
48648
|
+
const [selectedImageIndex, setSelectedImageIndex] = useState113(initialIndex);
|
|
48649
|
+
useEffect85(() => {
|
|
48528
48650
|
if (isOpen) {
|
|
48529
48651
|
setSelectedImageIndex(initialIndex);
|
|
48530
48652
|
}
|
|
@@ -48539,7 +48661,7 @@ function ImageGalleryModal({
|
|
|
48539
48661
|
setSelectedImageIndex(selectedImageIndex + 1);
|
|
48540
48662
|
}
|
|
48541
48663
|
};
|
|
48542
|
-
|
|
48664
|
+
useEffect85(() => {
|
|
48543
48665
|
const handleKeyPress = (event) => {
|
|
48544
48666
|
if (!isOpen) return;
|
|
48545
48667
|
switch (event.key) {
|
|
@@ -48565,36 +48687,36 @@ function ImageGalleryModal({
|
|
|
48565
48687
|
}
|
|
48566
48688
|
}, [isOpen, selectedImageIndex, images.length]);
|
|
48567
48689
|
if (!isOpen || images.length === 0) return null;
|
|
48568
|
-
return /* @__PURE__ */
|
|
48690
|
+
return /* @__PURE__ */ jsx374(
|
|
48569
48691
|
Modal2,
|
|
48570
48692
|
{
|
|
48571
48693
|
isOpen,
|
|
48572
48694
|
onClose,
|
|
48573
48695
|
className: "max-w-[95vw]",
|
|
48574
|
-
children: /* @__PURE__ */
|
|
48575
|
-
images.length > 1 && /* @__PURE__ */
|
|
48576
|
-
selectedImageIndex > 0 && /* @__PURE__ */
|
|
48696
|
+
children: /* @__PURE__ */ jsxs297("div", { className: "relative flex items-center justify-center bg-black rounded-lg", children: [
|
|
48697
|
+
images.length > 1 && /* @__PURE__ */ jsxs297(Fragment78, { children: [
|
|
48698
|
+
selectedImageIndex > 0 && /* @__PURE__ */ jsx374("div", { className: "absolute left-4 top-1/2 -translate-y-1/2 z-[10000]", children: /* @__PURE__ */ jsx374(
|
|
48577
48699
|
Button,
|
|
48578
48700
|
{
|
|
48579
48701
|
variant: "transparent",
|
|
48580
48702
|
size: "small-legacy",
|
|
48581
48703
|
onClick: goToPreviousImage,
|
|
48582
48704
|
className: "rounded-full bg-black/50 text-white hover:bg-black/70 p-2",
|
|
48583
|
-
leftIcon: /* @__PURE__ */
|
|
48705
|
+
leftIcon: /* @__PURE__ */ jsx374(ChevronLeft4, { className: "w-6 h-6" })
|
|
48584
48706
|
}
|
|
48585
48707
|
) }),
|
|
48586
|
-
selectedImageIndex < images.length - 1 && /* @__PURE__ */
|
|
48708
|
+
selectedImageIndex < images.length - 1 && /* @__PURE__ */ jsx374("div", { className: "absolute right-4 top-1/2 -translate-y-1/2 z-[10000]", children: /* @__PURE__ */ jsx374(
|
|
48587
48709
|
Button,
|
|
48588
48710
|
{
|
|
48589
48711
|
variant: "transparent",
|
|
48590
48712
|
size: "small-legacy",
|
|
48591
48713
|
onClick: goToNextImage,
|
|
48592
48714
|
className: "rounded-full bg-black/50 text-white hover:bg-black/70 p-2",
|
|
48593
|
-
leftIcon: /* @__PURE__ */
|
|
48715
|
+
leftIcon: /* @__PURE__ */ jsx374(ChevronRight8, { className: "w-6 h-6" })
|
|
48594
48716
|
}
|
|
48595
48717
|
) })
|
|
48596
48718
|
] }),
|
|
48597
|
-
images[selectedImageIndex] && /* @__PURE__ */
|
|
48719
|
+
images[selectedImageIndex] && /* @__PURE__ */ jsx374("div", { className: "relative w-[90vw] h-[90vh] max-w-none flex items-center justify-center", children: /* @__PURE__ */ jsx374(
|
|
48598
48720
|
next_image_default,
|
|
48599
48721
|
{
|
|
48600
48722
|
src: images[selectedImageIndex],
|
|
@@ -48624,7 +48746,7 @@ function ImageGalleryModal({
|
|
|
48624
48746
|
}
|
|
48625
48747
|
}
|
|
48626
48748
|
) }),
|
|
48627
|
-
images.length > 1 && /* @__PURE__ */
|
|
48749
|
+
images.length > 1 && /* @__PURE__ */ jsxs297("div", { className: "absolute bottom-4 left-1/2 -translate-x-1/2 z-[10000] px-4 py-2 rounded-full bg-black/50 text-white text-h6", children: [
|
|
48628
48750
|
selectedImageIndex + 1,
|
|
48629
48751
|
" / ",
|
|
48630
48752
|
images.length
|
|
@@ -48650,7 +48772,7 @@ import {
|
|
|
48650
48772
|
Repeat,
|
|
48651
48773
|
Compass
|
|
48652
48774
|
} from "lucide-react";
|
|
48653
|
-
import { jsx as
|
|
48775
|
+
import { jsx as jsx375 } from "react/jsx-runtime";
|
|
48654
48776
|
function iconFor(customItemId) {
|
|
48655
48777
|
switch (customItemId) {
|
|
48656
48778
|
case CUSTOM_ITEM_ID.BUG:
|
|
@@ -48686,49 +48808,49 @@ function iconFor(customItemId) {
|
|
|
48686
48808
|
}
|
|
48687
48809
|
function TaskTypeIcon({ customItemId, className = "h-5 w-5" }) {
|
|
48688
48810
|
const Icon2 = iconFor(customItemId);
|
|
48689
|
-
return /* @__PURE__ */
|
|
48811
|
+
return /* @__PURE__ */ jsx375(Icon2, { className, "aria-hidden": "true" });
|
|
48690
48812
|
}
|
|
48691
48813
|
|
|
48692
48814
|
// src/components/chat/entity-cards/roadmap-card.tsx
|
|
48693
|
-
import { Fragment as Fragment79, jsx as
|
|
48815
|
+
import { Fragment as Fragment79, jsx as jsx376, jsxs as jsxs298 } from "react/jsx-runtime";
|
|
48694
48816
|
function RoadmapCardSkeleton({ size: size2 = "default" }) {
|
|
48695
48817
|
if (size2 === "sm") {
|
|
48696
|
-
return /* @__PURE__ */
|
|
48697
|
-
/* @__PURE__ */
|
|
48698
|
-
/* @__PURE__ */
|
|
48699
|
-
/* @__PURE__ */
|
|
48700
|
-
/* @__PURE__ */
|
|
48701
|
-
/* @__PURE__ */
|
|
48818
|
+
return /* @__PURE__ */ jsxs298("span", { className: COMPACT_CARD_SKELETON_OUTER, children: [
|
|
48819
|
+
/* @__PURE__ */ jsx376("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" }),
|
|
48820
|
+
/* @__PURE__ */ jsxs298("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
48821
|
+
/* @__PURE__ */ jsxs298("span", { className: `${COMPACT_CARD_TITLE_ROW} flex-nowrap gap-2`, children: [
|
|
48822
|
+
/* @__PURE__ */ jsx376("span", { className: "h-3.5 w-1/2 rounded bg-ods-bg" }),
|
|
48823
|
+
/* @__PURE__ */ jsx376("span", { className: "h-4 w-12 rounded bg-ods-bg/70 shrink-0" })
|
|
48702
48824
|
] }),
|
|
48703
|
-
/* @__PURE__ */
|
|
48704
|
-
/* @__PURE__ */
|
|
48705
|
-
/* @__PURE__ */
|
|
48706
|
-
/* @__PURE__ */
|
|
48825
|
+
/* @__PURE__ */ jsxs298("span", { className: `${COMPACT_CARD_META_ROW_BOX} flex-nowrap gap-2`, children: [
|
|
48826
|
+
/* @__PURE__ */ jsx376("span", { className: "h-3 w-2/5 rounded bg-ods-bg/60 flex-1" }),
|
|
48827
|
+
/* @__PURE__ */ jsx376("span", { className: "h-3 w-10 rounded bg-ods-bg/40 shrink-0" }),
|
|
48828
|
+
/* @__PURE__ */ jsx376("span", { className: "h-6 w-14 rounded-full bg-ods-bg/40 shrink-0" })
|
|
48707
48829
|
] }),
|
|
48708
|
-
/* @__PURE__ */
|
|
48830
|
+
/* @__PURE__ */ jsx376("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx376("span", { className: "h-3 w-5/6 rounded bg-ods-bg/40" }) })
|
|
48709
48831
|
] })
|
|
48710
48832
|
] });
|
|
48711
48833
|
}
|
|
48712
|
-
return /* @__PURE__ */
|
|
48713
|
-
/* @__PURE__ */
|
|
48714
|
-
/* @__PURE__ */
|
|
48715
|
-
/* @__PURE__ */
|
|
48716
|
-
/* @__PURE__ */
|
|
48717
|
-
/* @__PURE__ */
|
|
48834
|
+
return /* @__PURE__ */ jsxs298("div", { className: "bg-ods-card border border-ods-border rounded-[6px] p-[24px] flex flex-col gap-4 h-full animate-pulse", children: [
|
|
48835
|
+
/* @__PURE__ */ jsxs298("div", { className: "flex gap-4 items-center", children: [
|
|
48836
|
+
/* @__PURE__ */ jsx376("div", { className: "w-16 h-16 rounded-lg bg-ods-bg flex-shrink-0" }),
|
|
48837
|
+
/* @__PURE__ */ jsxs298("div", { className: "flex-1 space-y-2", children: [
|
|
48838
|
+
/* @__PURE__ */ jsx376("div", { className: "h-5 w-3/4 bg-ods-bg rounded" }),
|
|
48839
|
+
/* @__PURE__ */ jsx376("div", { className: "h-3 w-1/2 bg-ods-bg/60 rounded" })
|
|
48718
48840
|
] }),
|
|
48719
|
-
/* @__PURE__ */
|
|
48841
|
+
/* @__PURE__ */ jsx376("div", { className: "h-6 w-16 bg-ods-bg rounded" })
|
|
48720
48842
|
] }),
|
|
48721
|
-
/* @__PURE__ */
|
|
48722
|
-
/* @__PURE__ */
|
|
48723
|
-
/* @__PURE__ */
|
|
48724
|
-
/* @__PURE__ */
|
|
48843
|
+
/* @__PURE__ */ jsxs298("div", { className: "space-y-2", children: [
|
|
48844
|
+
/* @__PURE__ */ jsx376("div", { className: "h-3 w-full bg-ods-bg/60 rounded" }),
|
|
48845
|
+
/* @__PURE__ */ jsx376("div", { className: "h-3 w-5/6 bg-ods-bg/60 rounded" }),
|
|
48846
|
+
/* @__PURE__ */ jsx376("div", { className: "h-3 w-4/5 bg-ods-bg/60 rounded" })
|
|
48725
48847
|
] }),
|
|
48726
|
-
/* @__PURE__ */
|
|
48727
|
-
/* @__PURE__ */
|
|
48728
|
-
/* @__PURE__ */
|
|
48729
|
-
/* @__PURE__ */
|
|
48730
|
-
/* @__PURE__ */
|
|
48731
|
-
/* @__PURE__ */
|
|
48848
|
+
/* @__PURE__ */ jsx376("div", { className: "flex-1" }),
|
|
48849
|
+
/* @__PURE__ */ jsxs298("div", { className: "flex items-center justify-between", children: [
|
|
48850
|
+
/* @__PURE__ */ jsx376("div", { className: "h-12 w-32 bg-ods-bg rounded" }),
|
|
48851
|
+
/* @__PURE__ */ jsxs298("div", { className: "flex items-center gap-2", children: [
|
|
48852
|
+
/* @__PURE__ */ jsx376("div", { className: "h-6 w-14 rounded-full bg-ods-bg/60" }),
|
|
48853
|
+
/* @__PURE__ */ jsx376("div", { className: "h-8 w-20 bg-ods-bg rounded" })
|
|
48732
48854
|
] })
|
|
48733
48855
|
] })
|
|
48734
48856
|
] });
|
|
@@ -48753,7 +48875,7 @@ function RoadmapCard({
|
|
|
48753
48875
|
onVote,
|
|
48754
48876
|
isVoting = false
|
|
48755
48877
|
}) {
|
|
48756
|
-
const [showScreenshots, setShowScreenshots] =
|
|
48878
|
+
const [showScreenshots, setShowScreenshots] = useState114(false);
|
|
48757
48879
|
const logoUrl = item.icon && item.icon.startsWith("http") ? item.icon : null;
|
|
48758
48880
|
const iconSrc = logoUrl ? getProxiedImageUrl(logoUrl, { directHttps: true }) || logoUrl : null;
|
|
48759
48881
|
if (size2 === "sm") {
|
|
@@ -48763,13 +48885,13 @@ function RoadmapCard({
|
|
|
48763
48885
|
const hasScreenshots = (item.screenshots?.length ?? 0) > 0;
|
|
48764
48886
|
const typeLabel = getTaskTypeLabel(item.customItemId);
|
|
48765
48887
|
const useTypeIcon = cardType === "internal_task" || !iconSrc && item.customItemId != null;
|
|
48766
|
-
const body = /* @__PURE__ */
|
|
48767
|
-
/* @__PURE__ */
|
|
48888
|
+
const body = /* @__PURE__ */ jsxs298(Fragment79, { children: [
|
|
48889
|
+
/* @__PURE__ */ jsx376(
|
|
48768
48890
|
"span",
|
|
48769
48891
|
{
|
|
48770
48892
|
className: "flex h-12 w-12 aspect-square shrink-0 self-start items-center justify-center rounded-md overflow-hidden bg-ods-bg border border-ods-border p-1.5 text-ods-accent",
|
|
48771
48893
|
title: typeLabel ?? void 0,
|
|
48772
|
-
children: useTypeIcon ? /* @__PURE__ */
|
|
48894
|
+
children: useTypeIcon ? /* @__PURE__ */ jsx376(TaskTypeIcon, { customItemId: item.customItemId, className: "h-6 w-6" }) : iconSrc ? /* @__PURE__ */ jsx376(
|
|
48773
48895
|
next_image_default,
|
|
48774
48896
|
{
|
|
48775
48897
|
src: iconSrc,
|
|
@@ -48779,13 +48901,13 @@ function RoadmapCard({
|
|
|
48779
48901
|
unoptimized: true,
|
|
48780
48902
|
className: "h-8 w-8 object-contain"
|
|
48781
48903
|
}
|
|
48782
|
-
) : /* @__PURE__ */
|
|
48904
|
+
) : /* @__PURE__ */ jsx376("span", { className: "text-h6 uppercase text-ods-text-secondary", children: item.title?.substring(0, 2) || "??" })
|
|
48783
48905
|
}
|
|
48784
48906
|
),
|
|
48785
|
-
/* @__PURE__ */
|
|
48786
|
-
/* @__PURE__ */
|
|
48787
|
-
/* @__PURE__ */
|
|
48788
|
-
item.status && item.status.trim().length > 0 ? /* @__PURE__ */
|
|
48907
|
+
/* @__PURE__ */ jsxs298("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
48908
|
+
/* @__PURE__ */ jsxs298("span", { className: `${COMPACT_CARD_TITLE_ROW} gap-2`, children: [
|
|
48909
|
+
/* @__PURE__ */ jsx376("span", { className: `${COMPACT_CARD_TITLE} min-w-0`, children: item.title }),
|
|
48910
|
+
item.status && item.status.trim().length > 0 ? /* @__PURE__ */ jsx376(
|
|
48789
48911
|
StatusBadge,
|
|
48790
48912
|
{
|
|
48791
48913
|
text: item.status.toUpperCase(),
|
|
@@ -48796,8 +48918,8 @@ function RoadmapCard({
|
|
|
48796
48918
|
}
|
|
48797
48919
|
) : null
|
|
48798
48920
|
] }),
|
|
48799
|
-
/* @__PURE__ */
|
|
48800
|
-
/* @__PURE__ */
|
|
48921
|
+
/* @__PURE__ */ jsxs298("span", { className: `${COMPACT_CARD_META_ROW_BOX} gap-2 text-ods-text-secondary`, children: [
|
|
48922
|
+
/* @__PURE__ */ jsx376("span", { className: "truncate text-h6 min-w-0 flex-1", children: (() => {
|
|
48801
48923
|
const parts = [
|
|
48802
48924
|
item.quarter,
|
|
48803
48925
|
item.targetVersion ? `${item.targetVersion} version` : null
|
|
@@ -48811,41 +48933,41 @@ function RoadmapCard({
|
|
|
48811
48933
|
}
|
|
48812
48934
|
return "Roadmap item";
|
|
48813
48935
|
})() }),
|
|
48814
|
-
hasVotes ? /* @__PURE__ */
|
|
48815
|
-
/* @__PURE__ */
|
|
48816
|
-
/* @__PURE__ */
|
|
48817
|
-
/* @__PURE__ */
|
|
48936
|
+
hasVotes ? /* @__PURE__ */ jsxs298("span", { className: "hidden sm:flex items-center gap-2 shrink-0 text-h6 text-ods-text-secondary", children: [
|
|
48937
|
+
/* @__PURE__ */ jsxs298("span", { className: "flex items-center gap-0.5", children: [
|
|
48938
|
+
/* @__PURE__ */ jsx376(ThumbsUp, { className: "h-3 w-3" }),
|
|
48939
|
+
/* @__PURE__ */ jsx376("span", { children: item.upvotes ?? 0 })
|
|
48818
48940
|
] }),
|
|
48819
|
-
/* @__PURE__ */
|
|
48820
|
-
/* @__PURE__ */
|
|
48821
|
-
/* @__PURE__ */
|
|
48941
|
+
/* @__PURE__ */ jsxs298("span", { className: "flex items-center gap-0.5", children: [
|
|
48942
|
+
/* @__PURE__ */ jsx376(ThumbsDown, { className: "h-3 w-3" }),
|
|
48943
|
+
/* @__PURE__ */ jsx376("span", { children: item.downvotes ?? 0 })
|
|
48822
48944
|
] })
|
|
48823
48945
|
] }) : null,
|
|
48824
|
-
hasFigma ? /* @__PURE__ */
|
|
48825
|
-
hasScreenshots ? /* @__PURE__ */
|
|
48946
|
+
hasFigma ? /* @__PURE__ */ jsx376("span", { className: "hidden sm:flex shrink-0 items-center", title: "Has Figma prototype", children: /* @__PURE__ */ jsx376(FigmaIcon, { className: "h-3 w-3" }) }) : null,
|
|
48947
|
+
hasScreenshots ? /* @__PURE__ */ jsxs298(
|
|
48826
48948
|
"span",
|
|
48827
48949
|
{
|
|
48828
48950
|
className: "hidden sm:flex shrink-0 items-center gap-0.5 text-h6",
|
|
48829
48951
|
title: `${item.screenshots.length} screenshot${item.screenshots.length === 1 ? "" : "s"}`,
|
|
48830
48952
|
children: [
|
|
48831
|
-
/* @__PURE__ */
|
|
48832
|
-
/* @__PURE__ */
|
|
48953
|
+
/* @__PURE__ */ jsx376(ImageIcon, { className: "h-3 w-3" }),
|
|
48954
|
+
/* @__PURE__ */ jsx376("span", { children: item.screenshots.length })
|
|
48833
48955
|
]
|
|
48834
48956
|
}
|
|
48835
48957
|
) : null,
|
|
48836
|
-
item.assignees && item.assignees.length > 0 ? /* @__PURE__ */
|
|
48958
|
+
item.assignees && item.assignees.length > 0 ? /* @__PURE__ */ jsx376(AvatarStack, { size: "xs", people: assigneePeople(item.assignees), className: "shrink-0" }) : null
|
|
48837
48959
|
] }),
|
|
48838
|
-
/* @__PURE__ */
|
|
48960
|
+
/* @__PURE__ */ jsx376("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx376("span", { className: COMPACT_CARD_SUMMARY, children: item.description || COMPACT_CARD_ROW_FILLER }) })
|
|
48839
48961
|
] })
|
|
48840
48962
|
] });
|
|
48841
48963
|
if (!compactHref) {
|
|
48842
|
-
return /* @__PURE__ */
|
|
48964
|
+
return /* @__PURE__ */ jsx376("span", { className: `${COMPACT_CARD_OUTER_STATIC} ${className ?? ""}`, "aria-label": "No link available", children: body });
|
|
48843
48965
|
}
|
|
48844
|
-
return /* @__PURE__ */
|
|
48966
|
+
return /* @__PURE__ */ jsx376("a", { href: compactHref, target, rel, className: `${COMPACT_CARD_OUTER} ${className ?? ""}`, children: body });
|
|
48845
48967
|
}
|
|
48846
|
-
return /* @__PURE__ */
|
|
48847
|
-
/* @__PURE__ */
|
|
48848
|
-
/* @__PURE__ */
|
|
48968
|
+
return /* @__PURE__ */ jsxs298("div", { id, className: `bg-ods-card border border-ods-border rounded-[6px] p-[24px] flex flex-col gap-[16px] hover:border-ods-accent transition-all h-full scroll-mt-24 ${className ?? ""}`, children: [
|
|
48969
|
+
/* @__PURE__ */ jsxs298("div", { className: "flex gap-[16px] items-center w-full", children: [
|
|
48970
|
+
/* @__PURE__ */ jsx376("div", { className: "w-16 h-16 rounded-lg flex items-center justify-center flex-shrink-0 bg-ods-bg border border-ods-border", children: iconSrc ? /* @__PURE__ */ jsx376(
|
|
48849
48971
|
next_image_default,
|
|
48850
48972
|
{
|
|
48851
48973
|
src: iconSrc,
|
|
@@ -48855,16 +48977,16 @@ function RoadmapCard({
|
|
|
48855
48977
|
unoptimized: true,
|
|
48856
48978
|
className: "object-contain p-1"
|
|
48857
48979
|
}
|
|
48858
|
-
) : /* @__PURE__ */
|
|
48859
|
-
/* @__PURE__ */
|
|
48860
|
-
/* @__PURE__ */
|
|
48861
|
-
/* @__PURE__ */
|
|
48980
|
+
) : /* @__PURE__ */ jsx376("span", { className: "text-xs font-medium uppercase text-ods-text-secondary", children: item.title?.substring(0, 2) || "??" }) }),
|
|
48981
|
+
/* @__PURE__ */ jsxs298("div", { className: "flex-1 min-w-0 flex flex-col", children: [
|
|
48982
|
+
/* @__PURE__ */ jsx376("div", { className: "min-h-[48px] flex items-center", children: /* @__PURE__ */ jsx376("h3", { className: "text-h3 text-ods-text-primary flex-1 line-clamp-2", children: item.title }) }),
|
|
48983
|
+
/* @__PURE__ */ jsx376("div", { className: "min-h-[20px] flex items-center", children: /* @__PURE__ */ jsxs298("p", { className: "text-h5 text-ods-text-secondary truncate", children: [
|
|
48862
48984
|
item.quarter,
|
|
48863
48985
|
", ",
|
|
48864
48986
|
item.id
|
|
48865
48987
|
] }) })
|
|
48866
48988
|
] }),
|
|
48867
|
-
/* @__PURE__ */
|
|
48989
|
+
/* @__PURE__ */ jsx376("div", { className: "hidden md:block", children: /* @__PURE__ */ jsx376(
|
|
48868
48990
|
StatusBadge,
|
|
48869
48991
|
{
|
|
48870
48992
|
text: item.status.toUpperCase(),
|
|
@@ -48873,7 +48995,7 @@ function RoadmapCard({
|
|
|
48873
48995
|
}
|
|
48874
48996
|
) })
|
|
48875
48997
|
] }),
|
|
48876
|
-
/* @__PURE__ */
|
|
48998
|
+
/* @__PURE__ */ jsx376("div", { className: "md:hidden", children: /* @__PURE__ */ jsx376(
|
|
48877
48999
|
StatusBadge,
|
|
48878
49000
|
{
|
|
48879
49001
|
text: item.status.toUpperCase(),
|
|
@@ -48881,11 +49003,11 @@ function RoadmapCard({
|
|
|
48881
49003
|
className: "border border-ods-border"
|
|
48882
49004
|
}
|
|
48883
49005
|
) }),
|
|
48884
|
-
/* @__PURE__ */
|
|
48885
|
-
/* @__PURE__ */
|
|
48886
|
-
/* @__PURE__ */
|
|
48887
|
-
onVote && /* @__PURE__ */
|
|
48888
|
-
/* @__PURE__ */
|
|
49006
|
+
/* @__PURE__ */ jsx376("div", { className: "min-h-[72px] flex items-center", children: /* @__PURE__ */ jsx376("p", { className: "text-h4 text-ods-text-secondary line-clamp-3", children: item.description || "" }) }),
|
|
49007
|
+
/* @__PURE__ */ jsx376("div", { className: "flex-1" }),
|
|
49008
|
+
/* @__PURE__ */ jsxs298("div", { className: "flex items-center justify-between w-full", children: [
|
|
49009
|
+
onVote && /* @__PURE__ */ jsxs298("div", { className: "bg-ods-card border border-ods-border h-[48px] rounded-[6px] flex overflow-hidden", children: [
|
|
49010
|
+
/* @__PURE__ */ jsx376(
|
|
48889
49011
|
RoadmapVoteButton,
|
|
48890
49012
|
{
|
|
48891
49013
|
voteType: "up",
|
|
@@ -48897,7 +49019,7 @@ function RoadmapCard({
|
|
|
48897
49019
|
disabled: isVoting
|
|
48898
49020
|
}
|
|
48899
49021
|
),
|
|
48900
|
-
/* @__PURE__ */
|
|
49022
|
+
/* @__PURE__ */ jsx376(
|
|
48901
49023
|
RoadmapVoteButton,
|
|
48902
49024
|
{
|
|
48903
49025
|
voteType: "down",
|
|
@@ -48910,31 +49032,31 @@ function RoadmapCard({
|
|
|
48910
49032
|
}
|
|
48911
49033
|
)
|
|
48912
49034
|
] }),
|
|
48913
|
-
/* @__PURE__ */
|
|
48914
|
-
item.assignees && item.assignees.length > 0 ? /* @__PURE__ */
|
|
48915
|
-
item.screenshots && item.screenshots.length > 0 && /* @__PURE__ */
|
|
49035
|
+
/* @__PURE__ */ jsxs298("div", { className: "flex items-center gap-2 min-w-0", children: [
|
|
49036
|
+
item.assignees && item.assignees.length > 0 ? /* @__PURE__ */ jsx376(AvatarStack, { size: "xs", people: assigneePeople(item.assignees), className: "shrink-0" }) : null,
|
|
49037
|
+
item.screenshots && item.screenshots.length > 0 && /* @__PURE__ */ jsx376(
|
|
48916
49038
|
Button,
|
|
48917
49039
|
{
|
|
48918
49040
|
variant: "outline",
|
|
48919
49041
|
size: "small-legacy",
|
|
48920
49042
|
onClick: () => setShowScreenshots(true),
|
|
48921
|
-
leftIcon: /* @__PURE__ */
|
|
49043
|
+
leftIcon: /* @__PURE__ */ jsx376(ImageIcon, { className: "w-5 h-5" })
|
|
48922
49044
|
}
|
|
48923
49045
|
),
|
|
48924
49046
|
(() => {
|
|
48925
49047
|
const figmaSafe = safeHref(item.figmaUrl);
|
|
48926
|
-
return figmaSafe ? /* @__PURE__ */
|
|
49048
|
+
return figmaSafe ? /* @__PURE__ */ jsx376(
|
|
48927
49049
|
Button,
|
|
48928
49050
|
{
|
|
48929
49051
|
variant: "outline",
|
|
48930
49052
|
size: "small-legacy",
|
|
48931
49053
|
openInNewTab: true,
|
|
48932
49054
|
href: figmaSafe,
|
|
48933
|
-
leftIcon: /* @__PURE__ */
|
|
49055
|
+
leftIcon: /* @__PURE__ */ jsx376(FigmaIcon, { className: "w-5 h-5" })
|
|
48934
49056
|
}
|
|
48935
49057
|
) : null;
|
|
48936
49058
|
})(),
|
|
48937
|
-
item.targetVersion && /* @__PURE__ */
|
|
49059
|
+
item.targetVersion && /* @__PURE__ */ jsx376(
|
|
48938
49060
|
StatusBadge,
|
|
48939
49061
|
{
|
|
48940
49062
|
gen: generationTierFromLabel(item.targetVersion),
|
|
@@ -48943,7 +49065,7 @@ function RoadmapCard({
|
|
|
48943
49065
|
)
|
|
48944
49066
|
] })
|
|
48945
49067
|
] }),
|
|
48946
|
-
item.screenshots && item.screenshots.length > 0 && /* @__PURE__ */
|
|
49068
|
+
item.screenshots && item.screenshots.length > 0 && /* @__PURE__ */ jsx376(
|
|
48947
49069
|
ImageGalleryModal,
|
|
48948
49070
|
{
|
|
48949
49071
|
images: item.screenshots,
|
|
@@ -48955,9 +49077,9 @@ function RoadmapCard({
|
|
|
48955
49077
|
}
|
|
48956
49078
|
|
|
48957
49079
|
// src/components/chat/entity-cards/github-activity-card.tsx
|
|
48958
|
-
import
|
|
49080
|
+
import React145 from "react";
|
|
48959
49081
|
import { GitPullRequest, Eye as Eye4, ExternalLink as ExternalLink8 } from "lucide-react";
|
|
48960
|
-
import { Fragment as Fragment80, jsx as
|
|
49082
|
+
import { Fragment as Fragment80, jsx as jsx377, jsxs as jsxs299 } from "react/jsx-runtime";
|
|
48961
49083
|
function parseRepoFromUrl(url) {
|
|
48962
49084
|
if (!url) return null;
|
|
48963
49085
|
try {
|
|
@@ -48972,12 +49094,12 @@ function parseRepoFromUrl(url) {
|
|
|
48972
49094
|
function kindIcon(kind, className = "h-4 w-4") {
|
|
48973
49095
|
switch (kind) {
|
|
48974
49096
|
case "pull_request":
|
|
48975
|
-
return /* @__PURE__ */
|
|
49097
|
+
return /* @__PURE__ */ jsx377(GitPullRequest, { className: `${className} shrink-0` });
|
|
48976
49098
|
case "pr_review":
|
|
48977
|
-
return /* @__PURE__ */
|
|
49099
|
+
return /* @__PURE__ */ jsx377(Eye4, { className: `${className} shrink-0` });
|
|
48978
49100
|
case "commit":
|
|
48979
49101
|
default:
|
|
48980
|
-
return /* @__PURE__ */
|
|
49102
|
+
return /* @__PURE__ */ jsx377(GitHubIcon, { className: `${className} shrink-0` });
|
|
48981
49103
|
}
|
|
48982
49104
|
}
|
|
48983
49105
|
function kindLabel(kind) {
|
|
@@ -49052,7 +49174,7 @@ function reviewStateLabel(state) {
|
|
|
49052
49174
|
}
|
|
49053
49175
|
function ReviewStateBadge({ state, className = "" }) {
|
|
49054
49176
|
const { label, className: paint } = REVIEW_STATE_STYLE[state] ?? REVIEW_STATE_STYLE.COMMENTED;
|
|
49055
|
-
return /* @__PURE__ */
|
|
49177
|
+
return /* @__PURE__ */ jsx377(
|
|
49056
49178
|
"span",
|
|
49057
49179
|
{
|
|
49058
49180
|
className: `inline-flex items-center rounded px-1.5 py-0.5 text-h5 shrink-0 ${paint} ${className}`,
|
|
@@ -49068,46 +49190,46 @@ function GitHubActivityCard({ item, variant = "compact", className, anchorProps
|
|
|
49068
49190
|
const { display: title, reviewState } = parseGithubTitle(item.title, kind);
|
|
49069
49191
|
const primaryText = kind === "pr_review" ? title.replace(/^by\s+/i, "").trim() || "Reviewer" : title;
|
|
49070
49192
|
if (variant === "row") {
|
|
49071
|
-
return /* @__PURE__ */
|
|
49072
|
-
/* @__PURE__ */
|
|
49193
|
+
return /* @__PURE__ */ jsxs299("div", { className: `flex items-center gap-3 min-w-0 ${className ?? ""}`, children: [
|
|
49194
|
+
/* @__PURE__ */ jsxs299("span", { className: "flex items-center gap-2 w-28 shrink-0", children: [
|
|
49073
49195
|
kindIcon(kind, "h-3.5 w-3.5"),
|
|
49074
|
-
/* @__PURE__ */
|
|
49196
|
+
/* @__PURE__ */ jsx377("code", { className: "text-ods-text-secondary text-code truncate", children: idLabel })
|
|
49075
49197
|
] }),
|
|
49076
|
-
/* @__PURE__ */
|
|
49077
|
-
reviewState ? /* @__PURE__ */
|
|
49078
|
-
/* @__PURE__ */
|
|
49198
|
+
/* @__PURE__ */ jsxs299("span", { className: "flex items-center gap-2 text-ods-text-primary text-h6 flex-1 min-w-0", children: [
|
|
49199
|
+
reviewState ? /* @__PURE__ */ jsx377(ReviewStateBadge, { state: reviewState }) : null,
|
|
49200
|
+
/* @__PURE__ */ jsx377("span", { className: "truncate", children: primaryText })
|
|
49079
49201
|
] }),
|
|
49080
|
-
repo ? /* @__PURE__ */
|
|
49081
|
-
dateText ? /* @__PURE__ */
|
|
49202
|
+
repo ? /* @__PURE__ */ jsx377("span", { className: "text-code text-ods-text-secondary truncate max-w-[240px] shrink-0", children: repo }) : null,
|
|
49203
|
+
dateText ? /* @__PURE__ */ jsx377("span", { className: "text-ods-text-secondary text-h6 w-24 shrink-0 text-right", children: dateText }) : null
|
|
49082
49204
|
] });
|
|
49083
49205
|
}
|
|
49084
49206
|
const metaParts = [];
|
|
49085
49207
|
metaParts.push(
|
|
49086
|
-
/* @__PURE__ */
|
|
49208
|
+
/* @__PURE__ */ jsx377("span", { className: "text-h6 uppercase", children: kindLabel(kind) }, "kind")
|
|
49087
49209
|
);
|
|
49088
|
-
if (idLabel) metaParts.push(/* @__PURE__ */
|
|
49089
|
-
if (repo) metaParts.push(/* @__PURE__ */
|
|
49090
|
-
if (dateText) metaParts.push(/* @__PURE__ */
|
|
49210
|
+
if (idLabel) metaParts.push(/* @__PURE__ */ jsx377("code", { className: "font-mono", children: idLabel }, "id"));
|
|
49211
|
+
if (repo) metaParts.push(/* @__PURE__ */ jsx377("span", { className: "font-mono truncate", children: repo }, "repo"));
|
|
49212
|
+
if (dateText) metaParts.push(/* @__PURE__ */ jsx377("span", { className: "whitespace-nowrap", children: dateText }, "date"));
|
|
49091
49213
|
const href = safeHref(item.url);
|
|
49092
|
-
const body = /* @__PURE__ */
|
|
49093
|
-
/* @__PURE__ */
|
|
49094
|
-
/* @__PURE__ */
|
|
49095
|
-
/* @__PURE__ */
|
|
49096
|
-
reviewState ? /* @__PURE__ */
|
|
49097
|
-
/* @__PURE__ */
|
|
49214
|
+
const body = /* @__PURE__ */ jsxs299(Fragment80, { children: [
|
|
49215
|
+
/* @__PURE__ */ jsx377("span", { className: COMPACT_CARD_ICON_SLOT, children: kindIcon(kind, "h-5 w-5") }),
|
|
49216
|
+
/* @__PURE__ */ jsxs299("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
49217
|
+
/* @__PURE__ */ jsxs299("span", { className: `${COMPACT_CARD_TITLE_ROW} flex-nowrap gap-1.5`, children: [
|
|
49218
|
+
reviewState ? /* @__PURE__ */ jsx377(ReviewStateBadge, { state: reviewState }) : null,
|
|
49219
|
+
/* @__PURE__ */ jsx377("span", { className: COMPACT_CARD_TITLE, children: primaryText })
|
|
49098
49220
|
] }),
|
|
49099
|
-
/* @__PURE__ */
|
|
49100
|
-
i > 0 ? /* @__PURE__ */
|
|
49101
|
-
/* @__PURE__ */
|
|
49221
|
+
/* @__PURE__ */ jsx377("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx377("span", { className: COMPACT_CARD_META_ROW, children: metaParts.map((part, i) => /* @__PURE__ */ jsxs299(React145.Fragment, { children: [
|
|
49222
|
+
i > 0 ? /* @__PURE__ */ jsx377("span", { className: "text-ods-text-secondary/40 shrink-0", children: "\xB7" }) : null,
|
|
49223
|
+
/* @__PURE__ */ jsx377("span", { className: "min-w-0 truncate", children: part })
|
|
49102
49224
|
] }, i)) }) }),
|
|
49103
|
-
/* @__PURE__ */
|
|
49225
|
+
/* @__PURE__ */ jsx377("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx377("span", { className: COMPACT_CARD_SUMMARY, children: COMPACT_CARD_ROW_FILLER }) })
|
|
49104
49226
|
] }),
|
|
49105
|
-
href ? /* @__PURE__ */
|
|
49227
|
+
href ? /* @__PURE__ */ jsx377("span", { className: "flex shrink-0 items-center self-start h-5 text-ods-text-secondary", children: /* @__PURE__ */ jsx377(ExternalLink8, { className: "w-3.5 h-3.5" }) }) : null
|
|
49106
49228
|
] });
|
|
49107
49229
|
if (anchorProps) {
|
|
49108
|
-
return /* @__PURE__ */
|
|
49230
|
+
return /* @__PURE__ */ jsx377("a", { ...anchorProps, className: `${COMPACT_CARD_OUTER} ${className ?? ""}`, children: body });
|
|
49109
49231
|
}
|
|
49110
|
-
return href ? /* @__PURE__ */
|
|
49232
|
+
return href ? /* @__PURE__ */ jsx377(
|
|
49111
49233
|
"a",
|
|
49112
49234
|
{
|
|
49113
49235
|
href,
|
|
@@ -49116,35 +49238,35 @@ function GitHubActivityCard({ item, variant = "compact", className, anchorProps
|
|
|
49116
49238
|
className: `${COMPACT_CARD_OUTER} ${className ?? ""}`,
|
|
49117
49239
|
children: body
|
|
49118
49240
|
}
|
|
49119
|
-
) : /* @__PURE__ */
|
|
49241
|
+
) : /* @__PURE__ */ jsx377("span", { className: `${COMPACT_CARD_OUTER_STATIC} ${className ?? ""}`, "aria-label": "No link available", children: body });
|
|
49120
49242
|
}
|
|
49121
49243
|
function GitHubActivityCardSkeleton({ variant = "compact", className }) {
|
|
49122
49244
|
if (variant === "row") {
|
|
49123
|
-
return /* @__PURE__ */
|
|
49124
|
-
/* @__PURE__ */
|
|
49125
|
-
/* @__PURE__ */
|
|
49126
|
-
/* @__PURE__ */
|
|
49245
|
+
return /* @__PURE__ */ jsxs299("div", { className: `flex items-center gap-3 min-w-0 animate-pulse ${className ?? ""}`, children: [
|
|
49246
|
+
/* @__PURE__ */ jsxs299("div", { className: "flex items-center gap-2 w-28 shrink-0", children: [
|
|
49247
|
+
/* @__PURE__ */ jsx377("div", { className: "h-3.5 w-3.5 rounded bg-ods-bg" }),
|
|
49248
|
+
/* @__PURE__ */ jsx377("div", { className: "h-3 w-16 bg-ods-bg rounded" })
|
|
49127
49249
|
] }),
|
|
49128
|
-
/* @__PURE__ */
|
|
49129
|
-
/* @__PURE__ */
|
|
49130
|
-
/* @__PURE__ */
|
|
49250
|
+
/* @__PURE__ */ jsx377("div", { className: "h-3 w-2/3 bg-ods-bg rounded flex-1" }),
|
|
49251
|
+
/* @__PURE__ */ jsx377("div", { className: "h-3 w-40 bg-ods-bg/60 rounded shrink-0" }),
|
|
49252
|
+
/* @__PURE__ */ jsx377("div", { className: "h-3 w-20 bg-ods-bg/60 rounded shrink-0" })
|
|
49131
49253
|
] });
|
|
49132
49254
|
}
|
|
49133
|
-
return /* @__PURE__ */
|
|
49134
|
-
/* @__PURE__ */
|
|
49135
|
-
/* @__PURE__ */
|
|
49136
|
-
/* @__PURE__ */
|
|
49137
|
-
/* @__PURE__ */
|
|
49138
|
-
/* @__PURE__ */
|
|
49255
|
+
return /* @__PURE__ */ jsxs299("span", { className: `${COMPACT_CARD_SKELETON_OUTER} ${className ?? ""}`, children: [
|
|
49256
|
+
/* @__PURE__ */ jsx377("span", { className: COMPACT_CARD_SKELETON_IMAGE_SLOT }),
|
|
49257
|
+
/* @__PURE__ */ jsxs299("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
49258
|
+
/* @__PURE__ */ jsx377("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx377("span", { className: "h-3.5 w-2/3 rounded bg-ods-bg" }) }),
|
|
49259
|
+
/* @__PURE__ */ jsx377("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx377("span", { className: "h-3 w-1/2 rounded bg-ods-bg/70" }) }),
|
|
49260
|
+
/* @__PURE__ */ jsx377("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx377("span", { className: COMPACT_CARD_SUMMARY, children: COMPACT_CARD_ROW_FILLER }) })
|
|
49139
49261
|
] }),
|
|
49140
|
-
/* @__PURE__ */
|
|
49262
|
+
/* @__PURE__ */ jsx377("span", { className: "flex shrink-0 items-center self-start h-5", children: /* @__PURE__ */ jsx377("span", { className: "h-3.5 w-3.5 rounded bg-ods-bg" }) })
|
|
49141
49263
|
] });
|
|
49142
49264
|
}
|
|
49143
49265
|
|
|
49144
49266
|
// src/components/chat/entity-cards/slack-message-card.tsx
|
|
49145
|
-
import
|
|
49267
|
+
import React146 from "react";
|
|
49146
49268
|
import { ExternalLink as ExternalLink9, Hash } from "lucide-react";
|
|
49147
|
-
import { Fragment as Fragment81, jsx as
|
|
49269
|
+
import { Fragment as Fragment81, jsx as jsx378, jsxs as jsxs300 } from "react/jsx-runtime";
|
|
49148
49270
|
function parseChannelFromUrl(url) {
|
|
49149
49271
|
if (!url) return null;
|
|
49150
49272
|
try {
|
|
@@ -49161,44 +49283,44 @@ function SlackMessageCard({ item, variant = "compact", className, anchorProps })
|
|
|
49161
49283
|
const channel = item.channel ?? parseChannelFromUrl(item.url) ?? null;
|
|
49162
49284
|
const dateText = formatDateUTC(item.dateUpdated, { fallback: "", timezone: "local" });
|
|
49163
49285
|
if (variant === "row") {
|
|
49164
|
-
return /* @__PURE__ */
|
|
49165
|
-
/* @__PURE__ */
|
|
49166
|
-
/* @__PURE__ */
|
|
49167
|
-
item.preview ? /* @__PURE__ */
|
|
49168
|
-
channel ? /* @__PURE__ */
|
|
49169
|
-
/* @__PURE__ */
|
|
49286
|
+
return /* @__PURE__ */ jsxs300("div", { className: `flex items-center gap-3 min-w-0 ${className ?? ""}`, children: [
|
|
49287
|
+
/* @__PURE__ */ jsx378(SlackIcon, { className: "h-3.5 w-3.5 shrink-0" }),
|
|
49288
|
+
/* @__PURE__ */ jsx378("span", { className: "text-ods-text-primary text-h6 truncate max-w-[180px] shrink-0", children: item.title }),
|
|
49289
|
+
item.preview ? /* @__PURE__ */ jsx378("span", { className: "text-ods-text-secondary text-h6 flex-1 min-w-0 truncate", children: item.preview }) : null,
|
|
49290
|
+
channel ? /* @__PURE__ */ jsxs300("span", { className: "text-code text-ods-text-secondary truncate max-w-[140px] shrink-0", children: [
|
|
49291
|
+
/* @__PURE__ */ jsx378(Hash, { className: "inline h-3 w-3" }),
|
|
49170
49292
|
channel
|
|
49171
49293
|
] }) : null,
|
|
49172
|
-
dateText ? /* @__PURE__ */
|
|
49294
|
+
dateText ? /* @__PURE__ */ jsx378("span", { className: "text-ods-text-secondary text-h6 w-24 shrink-0 text-right", children: dateText }) : null
|
|
49173
49295
|
] });
|
|
49174
49296
|
}
|
|
49175
49297
|
const metaParts = [];
|
|
49176
49298
|
if (channel) {
|
|
49177
49299
|
metaParts.push(
|
|
49178
|
-
/* @__PURE__ */
|
|
49179
|
-
/* @__PURE__ */
|
|
49180
|
-
/* @__PURE__ */
|
|
49300
|
+
/* @__PURE__ */ jsxs300("span", { className: "flex items-center gap-0.5 min-w-0", children: [
|
|
49301
|
+
/* @__PURE__ */ jsx378(Hash, { className: "h-3 w-3 shrink-0" }),
|
|
49302
|
+
/* @__PURE__ */ jsx378("span", { className: "truncate font-mono", children: channel })
|
|
49181
49303
|
] }, "channel")
|
|
49182
49304
|
);
|
|
49183
49305
|
}
|
|
49184
|
-
if (dateText) metaParts.push(/* @__PURE__ */
|
|
49306
|
+
if (dateText) metaParts.push(/* @__PURE__ */ jsx378("span", { className: "whitespace-nowrap", children: dateText }, "date"));
|
|
49185
49307
|
const href = safeHref(item.url);
|
|
49186
|
-
const body = /* @__PURE__ */
|
|
49187
|
-
/* @__PURE__ */
|
|
49188
|
-
/* @__PURE__ */
|
|
49189
|
-
/* @__PURE__ */
|
|
49190
|
-
/* @__PURE__ */
|
|
49191
|
-
/* @__PURE__ */
|
|
49192
|
-
i > 0 ? /* @__PURE__ */
|
|
49193
|
-
/* @__PURE__ */
|
|
49194
|
-
] }, i)) : /* @__PURE__ */
|
|
49308
|
+
const body = /* @__PURE__ */ jsxs300(Fragment81, { children: [
|
|
49309
|
+
/* @__PURE__ */ jsx378("span", { className: COMPACT_CARD_ICON_SLOT, children: /* @__PURE__ */ jsx378(SlackIcon, { className: "h-5 w-5" }) }),
|
|
49310
|
+
/* @__PURE__ */ jsxs300("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
49311
|
+
/* @__PURE__ */ jsx378("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx378("span", { className: COMPACT_CARD_TITLE, children: item.title }) }),
|
|
49312
|
+
/* @__PURE__ */ jsx378("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx378("span", { className: COMPACT_CARD_SUMMARY, children: item.preview || COMPACT_CARD_ROW_FILLER }) }),
|
|
49313
|
+
/* @__PURE__ */ jsx378("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx378("span", { className: COMPACT_CARD_META_ROW, children: metaParts.length > 0 ? metaParts.map((part, i) => /* @__PURE__ */ jsxs300(React146.Fragment, { children: [
|
|
49314
|
+
i > 0 ? /* @__PURE__ */ jsx378("span", { className: "text-ods-text-secondary/40 shrink-0", children: "\xB7" }) : null,
|
|
49315
|
+
/* @__PURE__ */ jsx378("span", { className: "min-w-0 truncate", children: part })
|
|
49316
|
+
] }, i)) : /* @__PURE__ */ jsx378("span", { className: COMPACT_CARD_SUMMARY, children: COMPACT_CARD_ROW_FILLER }) }) })
|
|
49195
49317
|
] }),
|
|
49196
|
-
href ? /* @__PURE__ */
|
|
49318
|
+
href ? /* @__PURE__ */ jsx378("span", { className: "flex shrink-0 items-center self-start h-5 text-ods-text-secondary", children: /* @__PURE__ */ jsx378(ExternalLink9, { className: "w-3.5 h-3.5" }) }) : null
|
|
49197
49319
|
] });
|
|
49198
49320
|
if (anchorProps) {
|
|
49199
|
-
return /* @__PURE__ */
|
|
49321
|
+
return /* @__PURE__ */ jsx378("a", { ...anchorProps, className: `${COMPACT_CARD_OUTER} ${className ?? ""}`, children: body });
|
|
49200
49322
|
}
|
|
49201
|
-
return href ? /* @__PURE__ */
|
|
49323
|
+
return href ? /* @__PURE__ */ jsx378(
|
|
49202
49324
|
"a",
|
|
49203
49325
|
{
|
|
49204
49326
|
href,
|
|
@@ -49207,33 +49329,33 @@ function SlackMessageCard({ item, variant = "compact", className, anchorProps })
|
|
|
49207
49329
|
className: `${COMPACT_CARD_OUTER} ${className ?? ""}`,
|
|
49208
49330
|
children: body
|
|
49209
49331
|
}
|
|
49210
|
-
) : /* @__PURE__ */
|
|
49332
|
+
) : /* @__PURE__ */ jsx378("span", { className: `${COMPACT_CARD_OUTER_STATIC} ${className ?? ""}`, "aria-label": "No link available", children: body });
|
|
49211
49333
|
}
|
|
49212
49334
|
function SlackMessageCardSkeleton({ variant = "compact", className }) {
|
|
49213
49335
|
if (variant === "row") {
|
|
49214
|
-
return /* @__PURE__ */
|
|
49215
|
-
/* @__PURE__ */
|
|
49216
|
-
/* @__PURE__ */
|
|
49217
|
-
/* @__PURE__ */
|
|
49218
|
-
/* @__PURE__ */
|
|
49219
|
-
/* @__PURE__ */
|
|
49336
|
+
return /* @__PURE__ */ jsxs300("div", { className: `flex items-center gap-3 min-w-0 animate-pulse ${className ?? ""}`, children: [
|
|
49337
|
+
/* @__PURE__ */ jsx378("div", { className: "h-3.5 w-3.5 rounded bg-ods-bg shrink-0" }),
|
|
49338
|
+
/* @__PURE__ */ jsx378("div", { className: "h-3 w-32 bg-ods-bg rounded shrink-0" }),
|
|
49339
|
+
/* @__PURE__ */ jsx378("div", { className: "h-3 w-2/3 bg-ods-bg/60 rounded flex-1" }),
|
|
49340
|
+
/* @__PURE__ */ jsx378("div", { className: "h-3 w-24 bg-ods-bg/60 rounded shrink-0" }),
|
|
49341
|
+
/* @__PURE__ */ jsx378("div", { className: "h-3 w-20 bg-ods-bg/60 rounded shrink-0" })
|
|
49220
49342
|
] });
|
|
49221
49343
|
}
|
|
49222
|
-
return /* @__PURE__ */
|
|
49223
|
-
/* @__PURE__ */
|
|
49224
|
-
/* @__PURE__ */
|
|
49225
|
-
/* @__PURE__ */
|
|
49226
|
-
/* @__PURE__ */
|
|
49227
|
-
/* @__PURE__ */
|
|
49344
|
+
return /* @__PURE__ */ jsxs300("span", { className: `${COMPACT_CARD_SKELETON_OUTER} ${className ?? ""}`, children: [
|
|
49345
|
+
/* @__PURE__ */ jsx378("span", { className: COMPACT_CARD_SKELETON_IMAGE_SLOT }),
|
|
49346
|
+
/* @__PURE__ */ jsxs300("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
49347
|
+
/* @__PURE__ */ jsx378("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx378("span", { className: "h-3.5 w-2/3 rounded bg-ods-bg" }) }),
|
|
49348
|
+
/* @__PURE__ */ jsx378("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx378("span", { className: "h-3 w-5/6 rounded bg-ods-bg/60" }) }),
|
|
49349
|
+
/* @__PURE__ */ jsx378("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx378("span", { className: "h-3 w-1/3 rounded bg-ods-bg/70" }) })
|
|
49228
49350
|
] }),
|
|
49229
|
-
/* @__PURE__ */
|
|
49351
|
+
/* @__PURE__ */ jsx378("span", { className: "flex shrink-0 items-center self-start h-5", children: /* @__PURE__ */ jsx378("span", { className: "h-3.5 w-3.5 rounded bg-ods-bg" }) })
|
|
49230
49352
|
] });
|
|
49231
49353
|
}
|
|
49232
49354
|
|
|
49233
49355
|
// src/components/chat/entity-cards/hubspot-ticket-card.tsx
|
|
49234
|
-
import
|
|
49356
|
+
import React147 from "react";
|
|
49235
49357
|
import { ExternalLink as ExternalLink10 } from "lucide-react";
|
|
49236
|
-
import { Fragment as Fragment82, jsx as
|
|
49358
|
+
import { Fragment as Fragment82, jsx as jsx379, jsxs as jsxs301 } from "react/jsx-runtime";
|
|
49237
49359
|
function formatToken(token) {
|
|
49238
49360
|
if (!token) return null;
|
|
49239
49361
|
const lower = token.toLowerCase().replace(/_/g, " ");
|
|
@@ -49257,26 +49379,26 @@ function HubspotTicketCard({ item, variant = "compact", className, anchorProps }
|
|
|
49257
49379
|
const priorityText = formatToken(item.priority);
|
|
49258
49380
|
const dateText = formatDateUTC(item.dateUpdated, { fallback: "", timezone: "local" });
|
|
49259
49381
|
if (variant === "row") {
|
|
49260
|
-
return /* @__PURE__ */
|
|
49261
|
-
/* @__PURE__ */
|
|
49262
|
-
item.preview ? /* @__PURE__ */
|
|
49263
|
-
statusText ? /* @__PURE__ */
|
|
49264
|
-
dateText ? /* @__PURE__ */
|
|
49382
|
+
return /* @__PURE__ */ jsxs301("div", { className: `flex items-center gap-3 min-w-0 ${className ?? ""}`, children: [
|
|
49383
|
+
/* @__PURE__ */ jsx379("span", { className: "text-ods-text-primary text-h6 truncate max-w-[260px] shrink-0", children: item.title }),
|
|
49384
|
+
item.preview ? /* @__PURE__ */ jsx379("span", { className: "text-ods-text-secondary text-h6 flex-1 min-w-0 truncate", children: item.preview }) : null,
|
|
49385
|
+
statusText ? /* @__PURE__ */ jsx379(StatusBadge, { text: statusText, variant: "button", colorScheme: statusScheme(item.status) }) : null,
|
|
49386
|
+
dateText ? /* @__PURE__ */ jsx379("span", { className: "text-ods-text-secondary text-h6 w-24 shrink-0 text-right", children: dateText }) : null
|
|
49265
49387
|
] });
|
|
49266
49388
|
}
|
|
49267
49389
|
const metaParts = [];
|
|
49268
49390
|
if (item.customerCompany) {
|
|
49269
49391
|
metaParts.push(
|
|
49270
|
-
/* @__PURE__ */
|
|
49392
|
+
/* @__PURE__ */ jsx379("span", { className: "min-w-0 truncate", children: item.customerCompany }, "company")
|
|
49271
49393
|
);
|
|
49272
49394
|
}
|
|
49273
|
-
if (dateText) metaParts.push(/* @__PURE__ */
|
|
49395
|
+
if (dateText) metaParts.push(/* @__PURE__ */ jsx379("span", { className: "whitespace-nowrap", children: dateText }, "date"));
|
|
49274
49396
|
const href = safeHref(item.url);
|
|
49275
|
-
const body = /* @__PURE__ */
|
|
49276
|
-
/* @__PURE__ */
|
|
49277
|
-
/* @__PURE__ */
|
|
49278
|
-
/* @__PURE__ */
|
|
49279
|
-
priorityText ? /* @__PURE__ */
|
|
49397
|
+
const body = /* @__PURE__ */ jsxs301(Fragment82, { children: [
|
|
49398
|
+
/* @__PURE__ */ jsxs301("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
49399
|
+
/* @__PURE__ */ jsxs301("span", { className: "flex flex-wrap items-center gap-1.5 min-w-0", children: [
|
|
49400
|
+
/* @__PURE__ */ jsx379("span", { className: `${COMPACT_CARD_TITLE} shrink min-w-0`, children: item.title }),
|
|
49401
|
+
priorityText ? /* @__PURE__ */ jsx379(
|
|
49280
49402
|
StatusBadge,
|
|
49281
49403
|
{
|
|
49282
49404
|
text: priorityText,
|
|
@@ -49285,7 +49407,7 @@ function HubspotTicketCard({ item, variant = "compact", className, anchorProps }
|
|
|
49285
49407
|
className: "shrink-0"
|
|
49286
49408
|
}
|
|
49287
49409
|
) : null,
|
|
49288
|
-
statusText ? /* @__PURE__ */
|
|
49410
|
+
statusText ? /* @__PURE__ */ jsx379(
|
|
49289
49411
|
StatusBadge,
|
|
49290
49412
|
{
|
|
49291
49413
|
text: statusText,
|
|
@@ -49295,22 +49417,22 @@ function HubspotTicketCard({ item, variant = "compact", className, anchorProps }
|
|
|
49295
49417
|
}
|
|
49296
49418
|
) : null
|
|
49297
49419
|
] }),
|
|
49298
|
-
item.customerEmail ? /* @__PURE__ */
|
|
49299
|
-
/* @__PURE__ */
|
|
49300
|
-
/* @__PURE__ */
|
|
49420
|
+
item.customerEmail ? /* @__PURE__ */ jsxs301("span", { className: "flex min-w-0 items-center gap-1 text-h6 text-ods-text-secondary", children: [
|
|
49421
|
+
/* @__PURE__ */ jsx379("span", { className: "shrink-0 text-ods-text-secondary/70", children: "From:" }),
|
|
49422
|
+
/* @__PURE__ */ jsx379("span", { className: "min-w-0 truncate", children: item.customerEmail })
|
|
49301
49423
|
] }) : null,
|
|
49302
|
-
/* @__PURE__ */
|
|
49303
|
-
metaParts.length > 0 ? /* @__PURE__ */
|
|
49304
|
-
i > 0 ? /* @__PURE__ */
|
|
49305
|
-
/* @__PURE__ */
|
|
49424
|
+
/* @__PURE__ */ jsx379("span", { className: "flex min-w-0", children: /* @__PURE__ */ jsx379("span", { className: "line-clamp-4 whitespace-pre-wrap break-words text-h6 text-ods-text-secondary", children: item.preview || /* @__PURE__ */ jsx379("span", { className: "italic text-ods-text-secondary/60", children: "No description provided." }) }) }),
|
|
49425
|
+
metaParts.length > 0 ? /* @__PURE__ */ jsx379("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx379("span", { className: COMPACT_CARD_META_ROW, children: metaParts.map((part, i) => /* @__PURE__ */ jsxs301(React147.Fragment, { children: [
|
|
49426
|
+
i > 0 ? /* @__PURE__ */ jsx379("span", { className: "text-ods-text-secondary/40 shrink-0", children: "\xB7" }) : null,
|
|
49427
|
+
/* @__PURE__ */ jsx379("span", { className: "min-w-0 truncate", children: part })
|
|
49306
49428
|
] }, i)) }) }) : null
|
|
49307
49429
|
] }),
|
|
49308
|
-
href ? /* @__PURE__ */
|
|
49430
|
+
href ? /* @__PURE__ */ jsx379("span", { className: "flex shrink-0 items-center self-start h-5 text-ods-text-secondary", children: /* @__PURE__ */ jsx379(ExternalLink10, { className: "w-3.5 h-3.5" }) }) : null
|
|
49309
49431
|
] });
|
|
49310
49432
|
if (anchorProps) {
|
|
49311
|
-
return /* @__PURE__ */
|
|
49433
|
+
return /* @__PURE__ */ jsx379("a", { ...anchorProps, className: `${COMPACT_CARD_OUTER} ${className ?? ""}`, children: body });
|
|
49312
49434
|
}
|
|
49313
|
-
return href ? /* @__PURE__ */
|
|
49435
|
+
return href ? /* @__PURE__ */ jsx379(
|
|
49314
49436
|
"a",
|
|
49315
49437
|
{
|
|
49316
49438
|
href,
|
|
@@ -49319,79 +49441,79 @@ function HubspotTicketCard({ item, variant = "compact", className, anchorProps }
|
|
|
49319
49441
|
className: `${COMPACT_CARD_OUTER} ${className ?? ""}`,
|
|
49320
49442
|
children: body
|
|
49321
49443
|
}
|
|
49322
|
-
) : /* @__PURE__ */
|
|
49444
|
+
) : /* @__PURE__ */ jsx379("span", { className: `${COMPACT_CARD_OUTER_STATIC} ${className ?? ""}`, "aria-label": "No link available", children: body });
|
|
49323
49445
|
}
|
|
49324
49446
|
function HubspotTicketCardSkeleton({ variant = "compact", className }) {
|
|
49325
49447
|
if (variant === "row") {
|
|
49326
|
-
return /* @__PURE__ */
|
|
49327
|
-
/* @__PURE__ */
|
|
49328
|
-
/* @__PURE__ */
|
|
49329
|
-
/* @__PURE__ */
|
|
49330
|
-
/* @__PURE__ */
|
|
49448
|
+
return /* @__PURE__ */ jsxs301("div", { className: `flex items-center gap-3 min-w-0 animate-pulse ${className ?? ""}`, children: [
|
|
49449
|
+
/* @__PURE__ */ jsx379("div", { className: "h-3 w-40 bg-ods-bg rounded shrink-0" }),
|
|
49450
|
+
/* @__PURE__ */ jsx379("div", { className: "h-3 w-2/3 bg-ods-bg/60 rounded flex-1" }),
|
|
49451
|
+
/* @__PURE__ */ jsx379("div", { className: "h-3 w-16 bg-ods-bg/60 rounded shrink-0" }),
|
|
49452
|
+
/* @__PURE__ */ jsx379("div", { className: "h-3 w-20 bg-ods-bg/60 rounded shrink-0" })
|
|
49331
49453
|
] });
|
|
49332
49454
|
}
|
|
49333
|
-
return /* @__PURE__ */
|
|
49334
|
-
/* @__PURE__ */
|
|
49335
|
-
/* @__PURE__ */
|
|
49336
|
-
/* @__PURE__ */
|
|
49337
|
-
/* @__PURE__ */
|
|
49338
|
-
/* @__PURE__ */
|
|
49455
|
+
return /* @__PURE__ */ jsxs301("span", { className: `${COMPACT_CARD_SKELETON_OUTER} ${className ?? ""}`, children: [
|
|
49456
|
+
/* @__PURE__ */ jsxs301("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
49457
|
+
/* @__PURE__ */ jsxs301("span", { className: "flex flex-wrap items-center gap-1.5 min-w-0", children: [
|
|
49458
|
+
/* @__PURE__ */ jsx379("span", { className: "h-3.5 w-2/3 rounded bg-ods-bg" }),
|
|
49459
|
+
/* @__PURE__ */ jsx379("span", { className: "h-4 w-12 rounded-full bg-ods-bg/60" }),
|
|
49460
|
+
/* @__PURE__ */ jsx379("span", { className: "h-4 w-16 rounded-full bg-ods-bg/60" })
|
|
49339
49461
|
] }),
|
|
49340
|
-
/* @__PURE__ */
|
|
49341
|
-
/* @__PURE__ */
|
|
49342
|
-
/* @__PURE__ */
|
|
49343
|
-
/* @__PURE__ */
|
|
49344
|
-
/* @__PURE__ */
|
|
49345
|
-
/* @__PURE__ */
|
|
49462
|
+
/* @__PURE__ */ jsx379("span", { className: "h-4 w-1/2 rounded bg-ods-bg/60" }),
|
|
49463
|
+
/* @__PURE__ */ jsxs301("span", { className: "flex flex-col gap-0 min-w-0", children: [
|
|
49464
|
+
/* @__PURE__ */ jsx379("span", { className: "h-5 w-5/6 rounded bg-ods-bg/60" }),
|
|
49465
|
+
/* @__PURE__ */ jsx379("span", { className: "h-5 w-4/6 rounded bg-ods-bg/60" }),
|
|
49466
|
+
/* @__PURE__ */ jsx379("span", { className: "h-5 w-3/4 rounded bg-ods-bg/60" }),
|
|
49467
|
+
/* @__PURE__ */ jsx379("span", { className: "h-5 w-2/5 rounded bg-ods-bg/60" })
|
|
49346
49468
|
] }),
|
|
49347
|
-
/* @__PURE__ */
|
|
49469
|
+
/* @__PURE__ */ jsx379("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx379("span", { className: "h-3 w-1/3 rounded bg-ods-bg/70" }) })
|
|
49348
49470
|
] }),
|
|
49349
|
-
/* @__PURE__ */
|
|
49471
|
+
/* @__PURE__ */ jsx379("span", { className: "flex shrink-0 items-center self-start h-5", children: /* @__PURE__ */ jsx379("span", { className: "h-3.5 w-3.5 rounded bg-ods-bg" }) })
|
|
49350
49472
|
] });
|
|
49351
49473
|
}
|
|
49352
49474
|
|
|
49353
49475
|
// src/components/chat/entity-cards/data-room-doc-card.tsx
|
|
49354
49476
|
import { ExternalLink as ExternalLink11 } from "lucide-react";
|
|
49355
|
-
import { Fragment as Fragment83, jsx as
|
|
49477
|
+
import { Fragment as Fragment83, jsx as jsx380, jsxs as jsxs302 } from "react/jsx-runtime";
|
|
49356
49478
|
function DataRoomDocCard({ item, className, badgeText, anchorProps }) {
|
|
49357
|
-
const body = /* @__PURE__ */
|
|
49358
|
-
/* @__PURE__ */
|
|
49359
|
-
/* @__PURE__ */
|
|
49360
|
-
/* @__PURE__ */
|
|
49361
|
-
/* @__PURE__ */
|
|
49479
|
+
const body = /* @__PURE__ */ jsxs302(Fragment83, { children: [
|
|
49480
|
+
/* @__PURE__ */ jsxs302("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
49481
|
+
/* @__PURE__ */ jsxs302("span", { className: "flex flex-wrap items-center gap-1.5 min-w-0", children: [
|
|
49482
|
+
/* @__PURE__ */ jsx380("span", { className: `${COMPACT_CARD_TITLE} shrink min-w-0`, children: item.title }),
|
|
49483
|
+
/* @__PURE__ */ jsx380(StatusBadge, { text: badgeText, variant: "button", colorScheme: "cyan", className: "shrink-0" })
|
|
49362
49484
|
] }),
|
|
49363
|
-
item.path ? /* @__PURE__ */
|
|
49364
|
-
/* @__PURE__ */
|
|
49365
|
-
/* @__PURE__ */
|
|
49485
|
+
item.path ? /* @__PURE__ */ jsxs302("span", { className: "flex min-w-0 items-center gap-1 text-h6 text-ods-text-secondary", children: [
|
|
49486
|
+
/* @__PURE__ */ jsx380("span", { className: "shrink-0 text-ods-text-secondary/70", children: "Path:" }),
|
|
49487
|
+
/* @__PURE__ */ jsx380("span", { className: "min-w-0 truncate font-mono", children: item.path })
|
|
49366
49488
|
] }) : null,
|
|
49367
|
-
item.preview ? /* @__PURE__ */
|
|
49489
|
+
item.preview ? /* @__PURE__ */ jsx380("span", { className: "flex min-w-0", children: /* @__PURE__ */ jsx380("span", { className: "line-clamp-2 whitespace-pre-wrap break-words text-h6 text-ods-text-secondary", children: item.preview }) }) : null
|
|
49368
49490
|
] }),
|
|
49369
|
-
anchorProps?.href ? /* @__PURE__ */
|
|
49491
|
+
anchorProps?.href ? /* @__PURE__ */ jsx380("span", { className: "flex shrink-0 items-center self-start h-5 text-ods-text-secondary", children: /* @__PURE__ */ jsx380(ExternalLink11, { className: "w-3.5 h-3.5" }) }) : null
|
|
49370
49492
|
] });
|
|
49371
49493
|
if (!anchorProps) {
|
|
49372
|
-
return /* @__PURE__ */
|
|
49494
|
+
return /* @__PURE__ */ jsx380("span", { className: `${COMPACT_CARD_OUTER_STATIC} ${className ?? ""}`, "aria-label": "No link available", children: body });
|
|
49373
49495
|
}
|
|
49374
|
-
return /* @__PURE__ */
|
|
49496
|
+
return /* @__PURE__ */ jsx380("a", { ...anchorProps, className: `${COMPACT_CARD_OUTER} ${className ?? ""}`, children: body });
|
|
49375
49497
|
}
|
|
49376
49498
|
function DataRoomDocCardSkeleton({ className }) {
|
|
49377
|
-
return /* @__PURE__ */
|
|
49378
|
-
/* @__PURE__ */
|
|
49379
|
-
/* @__PURE__ */
|
|
49380
|
-
/* @__PURE__ */
|
|
49381
|
-
/* @__PURE__ */
|
|
49499
|
+
return /* @__PURE__ */ jsxs302("span", { className: `${COMPACT_CARD_SKELETON_OUTER} ${className ?? ""}`, children: [
|
|
49500
|
+
/* @__PURE__ */ jsxs302("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
49501
|
+
/* @__PURE__ */ jsxs302("span", { className: "flex items-center gap-1.5 min-w-0", children: [
|
|
49502
|
+
/* @__PURE__ */ jsx380("span", { className: "h-3.5 w-2/3 rounded bg-ods-bg" }),
|
|
49503
|
+
/* @__PURE__ */ jsx380("span", { className: "h-4 w-16 rounded-full bg-ods-bg/60" })
|
|
49382
49504
|
] }),
|
|
49383
|
-
/* @__PURE__ */
|
|
49384
|
-
/* @__PURE__ */
|
|
49385
|
-
/* @__PURE__ */
|
|
49386
|
-
/* @__PURE__ */
|
|
49505
|
+
/* @__PURE__ */ jsx380("span", { className: "h-4 w-1/2 rounded bg-ods-bg/60" }),
|
|
49506
|
+
/* @__PURE__ */ jsxs302("span", { className: "flex flex-col gap-0 min-w-0", children: [
|
|
49507
|
+
/* @__PURE__ */ jsx380("span", { className: "h-5 w-5/6 rounded bg-ods-bg/60" }),
|
|
49508
|
+
/* @__PURE__ */ jsx380("span", { className: "h-5 w-3/4 rounded bg-ods-bg/60" })
|
|
49387
49509
|
] })
|
|
49388
49510
|
] }),
|
|
49389
|
-
/* @__PURE__ */
|
|
49511
|
+
/* @__PURE__ */ jsx380("span", { className: "flex shrink-0 items-center self-start h-5", children: /* @__PURE__ */ jsx380("span", { className: "h-3.5 w-3.5 rounded bg-ods-bg" }) })
|
|
49390
49512
|
] });
|
|
49391
49513
|
}
|
|
49392
49514
|
|
|
49393
49515
|
// src/components/chat/entity-cards/program-card.tsx
|
|
49394
|
-
import { useState as
|
|
49516
|
+
import { useState as useState115 } from "react";
|
|
49395
49517
|
|
|
49396
49518
|
// node_modules/date-fns/toDate.mjs
|
|
49397
49519
|
function toDate2(argument) {
|
|
@@ -50964,42 +51086,42 @@ function cleanEscapedString(input) {
|
|
|
50964
51086
|
init_button();
|
|
50965
51087
|
import { ExternalLink as ExternalLink12, Clock as Clock2, Play as Play4, Video as Video5 } from "lucide-react";
|
|
50966
51088
|
init_cn();
|
|
50967
|
-
import { Fragment as Fragment84, jsx as
|
|
51089
|
+
import { Fragment as Fragment84, jsx as jsx381, jsxs as jsxs303 } from "react/jsx-runtime";
|
|
50968
51090
|
function formatUtc(date, fmt) {
|
|
50969
51091
|
return format2(new Date(date.getTime() + date.getTimezoneOffset() * 6e4), fmt);
|
|
50970
51092
|
}
|
|
50971
51093
|
function ProgramCardSkeleton({ size: size2 = "default" }) {
|
|
50972
51094
|
if (size2 === "sm") {
|
|
50973
|
-
return /* @__PURE__ */
|
|
50974
|
-
/* @__PURE__ */
|
|
50975
|
-
/* @__PURE__ */
|
|
50976
|
-
/* @__PURE__ */
|
|
50977
|
-
/* @__PURE__ */
|
|
50978
|
-
/* @__PURE__ */
|
|
51095
|
+
return /* @__PURE__ */ jsxs303("span", { className: COMPACT_CARD_SKELETON_OUTER, children: [
|
|
51096
|
+
/* @__PURE__ */ jsx381("span", { className: COMPACT_CARD_SKELETON_IMAGE_SLOT }),
|
|
51097
|
+
/* @__PURE__ */ jsxs303("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
51098
|
+
/* @__PURE__ */ jsx381("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx381("span", { className: "h-3.5 w-3/5 rounded bg-ods-bg" }) }),
|
|
51099
|
+
/* @__PURE__ */ jsx381("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx381("span", { className: "h-3 w-2/5 rounded bg-ods-bg/70" }) }),
|
|
51100
|
+
/* @__PURE__ */ jsx381("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx381("span", { className: "h-3 w-11/12 rounded bg-ods-bg/40" }) })
|
|
50979
51101
|
] }),
|
|
50980
|
-
/* @__PURE__ */
|
|
51102
|
+
/* @__PURE__ */ jsx381("span", { className: "flex shrink-0 items-center self-start h-5", children: /* @__PURE__ */ jsx381("span", { className: "h-3.5 w-3.5 rounded bg-ods-bg" }) })
|
|
50981
51103
|
] });
|
|
50982
51104
|
}
|
|
50983
|
-
return /* @__PURE__ */
|
|
51105
|
+
return /* @__PURE__ */ jsxs303(
|
|
50984
51106
|
"div",
|
|
50985
51107
|
{
|
|
50986
51108
|
className: "border border-ods-border rounded-lg overflow-hidden flex flex-col animate-pulse",
|
|
50987
51109
|
style: { backgroundColor: "var(--ods-system-greys-black)" },
|
|
50988
51110
|
children: [
|
|
50989
|
-
/* @__PURE__ */
|
|
50990
|
-
/* @__PURE__ */
|
|
50991
|
-
/* @__PURE__ */
|
|
50992
|
-
/* @__PURE__ */
|
|
50993
|
-
/* @__PURE__ */
|
|
50994
|
-
/* @__PURE__ */
|
|
50995
|
-
/* @__PURE__ */
|
|
50996
|
-
/* @__PURE__ */
|
|
50997
|
-
/* @__PURE__ */
|
|
50998
|
-
/* @__PURE__ */
|
|
51111
|
+
/* @__PURE__ */ jsx381("div", { className: "p-6 flex-1", children: /* @__PURE__ */ jsxs303("div", { className: "flex flex-col md:flex-row gap-4 md:gap-6", children: [
|
|
51112
|
+
/* @__PURE__ */ jsx381("div", { className: "w-full md:w-[180px] h-[180px] bg-ods-bg rounded-lg flex-shrink-0" }),
|
|
51113
|
+
/* @__PURE__ */ jsxs303("div", { className: "flex-1 min-w-0 flex flex-col gap-3", children: [
|
|
51114
|
+
/* @__PURE__ */ jsx381("div", { className: "h-7 w-3/4 bg-ods-bg rounded" }),
|
|
51115
|
+
/* @__PURE__ */ jsx381("div", { className: "h-7 w-1/2 bg-ods-bg rounded" }),
|
|
51116
|
+
/* @__PURE__ */ jsx381("div", { className: "h-4 w-1/3 bg-ods-bg/60 rounded" }),
|
|
51117
|
+
/* @__PURE__ */ jsxs303("div", { className: "space-y-2", children: [
|
|
51118
|
+
/* @__PURE__ */ jsx381("div", { className: "h-3 w-full bg-ods-bg/60 rounded" }),
|
|
51119
|
+
/* @__PURE__ */ jsx381("div", { className: "h-3 w-5/6 bg-ods-bg/60 rounded" }),
|
|
51120
|
+
/* @__PURE__ */ jsx381("div", { className: "h-3 w-4/5 bg-ods-bg/60 rounded" })
|
|
50999
51121
|
] })
|
|
51000
51122
|
] })
|
|
51001
51123
|
] }) }),
|
|
51002
|
-
/* @__PURE__ */
|
|
51124
|
+
/* @__PURE__ */ jsx381("div", { className: "p-6 pt-0 mt-auto", children: /* @__PURE__ */ jsx381("div", { className: "pt-4 border-t border-ods-border", children: /* @__PURE__ */ jsx381("div", { className: "h-9 w-40 bg-ods-bg rounded" }) }) })
|
|
51003
51125
|
]
|
|
51004
51126
|
}
|
|
51005
51127
|
);
|
|
@@ -51028,8 +51150,8 @@ function getHosts(hosts) {
|
|
|
51028
51150
|
return [];
|
|
51029
51151
|
}
|
|
51030
51152
|
function MediaGallery({ images, title }) {
|
|
51031
|
-
const [selectedImageIndex, setSelectedImageIndex] =
|
|
51032
|
-
const [isModalOpen, setIsModalOpen] =
|
|
51153
|
+
const [selectedImageIndex, setSelectedImageIndex] = useState115(null);
|
|
51154
|
+
const [isModalOpen, setIsModalOpen] = useState115(false);
|
|
51033
51155
|
const openImageModal = (index, event) => {
|
|
51034
51156
|
if (event) event.stopPropagation();
|
|
51035
51157
|
setSelectedImageIndex(index);
|
|
@@ -51039,14 +51161,14 @@ function MediaGallery({ images, title }) {
|
|
|
51039
51161
|
setIsModalOpen(false);
|
|
51040
51162
|
setSelectedImageIndex(null);
|
|
51041
51163
|
};
|
|
51042
|
-
return /* @__PURE__ */
|
|
51043
|
-
/* @__PURE__ */
|
|
51164
|
+
return /* @__PURE__ */ jsxs303(Fragment84, { children: [
|
|
51165
|
+
/* @__PURE__ */ jsx381("div", { className: "p-6 pt-4", children: /* @__PURE__ */ jsx381("div", { className: "overflow-x-auto mb-4", children: /* @__PURE__ */ jsx381("div", { className: "flex gap-3 pb-2", style: { width: "max-content" }, children: images.map((mediaItem, index) => /* @__PURE__ */ jsxs303(
|
|
51044
51166
|
"div",
|
|
51045
51167
|
{
|
|
51046
51168
|
className: "flex-shrink-0 w-24 h-24 relative rounded-md overflow-hidden cursor-pointer group/thumb",
|
|
51047
51169
|
onClick: (e) => openImageModal(index, e),
|
|
51048
51170
|
children: [
|
|
51049
|
-
/* @__PURE__ */
|
|
51171
|
+
/* @__PURE__ */ jsx381(
|
|
51050
51172
|
next_image_default,
|
|
51051
51173
|
{
|
|
51052
51174
|
src: mediaItem.media_url,
|
|
@@ -51058,12 +51180,12 @@ function MediaGallery({ images, title }) {
|
|
|
51058
51180
|
unoptimized: true
|
|
51059
51181
|
}
|
|
51060
51182
|
),
|
|
51061
|
-
/* @__PURE__ */
|
|
51183
|
+
/* @__PURE__ */ jsx381("div", { className: "absolute inset-0 bg-black/20 opacity-0 group-hover/thumb:opacity-100 transition-opacity duration-200 flex items-center justify-center", children: /* @__PURE__ */ jsx381("div", { className: "w-6 h-6 rounded-full bg-white/90 flex items-center justify-center", children: /* @__PURE__ */ jsx381("span", { className: "text-black text-sm", children: "+" }) }) })
|
|
51062
51184
|
]
|
|
51063
51185
|
},
|
|
51064
51186
|
mediaItem.id
|
|
51065
51187
|
)) }) }) }),
|
|
51066
|
-
/* @__PURE__ */
|
|
51188
|
+
/* @__PURE__ */ jsx381(
|
|
51067
51189
|
ImageGalleryModal,
|
|
51068
51190
|
{
|
|
51069
51191
|
images: images.map((img) => img.media_url),
|
|
@@ -51130,7 +51252,7 @@ function ProgramCard({
|
|
|
51130
51252
|
if (size2 === "portrait") {
|
|
51131
51253
|
const profile = programItemToStripProfile(item);
|
|
51132
51254
|
const dateMeta = [compactDate, compactTypeMeta()].filter(Boolean).join(" \xB7 ");
|
|
51133
|
-
return /* @__PURE__ */
|
|
51255
|
+
return /* @__PURE__ */ jsx381(
|
|
51134
51256
|
EntityPortraitCard,
|
|
51135
51257
|
{
|
|
51136
51258
|
href,
|
|
@@ -51154,9 +51276,9 @@ function ProgramCard({
|
|
|
51154
51276
|
const subtitleParts = [itemDate2, typeMeta, config.labels?.singular].filter(
|
|
51155
51277
|
(s) => typeof s === "string" && s.length > 0
|
|
51156
51278
|
);
|
|
51157
|
-
return /* @__PURE__ */
|
|
51158
|
-
/* @__PURE__ */
|
|
51159
|
-
compactCover ? /* @__PURE__ */
|
|
51279
|
+
return /* @__PURE__ */ jsxs303("a", { href, target, rel, className: cn(COMPACT_CARD_OUTER, className), children: [
|
|
51280
|
+
/* @__PURE__ */ jsxs303("span", { className: COMPACT_CARD_IMAGE_SLOT, children: [
|
|
51281
|
+
compactCover ? /* @__PURE__ */ jsx381(
|
|
51160
51282
|
next_image_default,
|
|
51161
51283
|
{
|
|
51162
51284
|
src: compactCover,
|
|
@@ -51166,39 +51288,39 @@ function ProgramCard({
|
|
|
51166
51288
|
className: "object-contain",
|
|
51167
51289
|
unoptimized: true
|
|
51168
51290
|
}
|
|
51169
|
-
) : /* @__PURE__ */
|
|
51170
|
-
config.type === "podcast" && !isScheduled && compactCover && /* @__PURE__ */
|
|
51291
|
+
) : /* @__PURE__ */ jsx381("span", { className: "flex h-full w-full items-center justify-center text-ods-accent", children: config.type === "podcast" ? /* @__PURE__ */ jsx381(Play4, { className: "w-4 h-4" }) : config.type === "webinar" ? /* @__PURE__ */ jsx381(Video5, { className: "w-4 h-4" }) : /* @__PURE__ */ jsx381(Clock2, { className: "w-4 h-4" }) }),
|
|
51292
|
+
config.type === "podcast" && !isScheduled && compactCover && /* @__PURE__ */ jsx381("span", { className: "absolute inset-0 flex items-center justify-center bg-black/30", children: /* @__PURE__ */ jsx381(Play4, { className: "w-4 h-4 text-ods-text-on-dark", fill: "white" }) })
|
|
51171
51293
|
] }),
|
|
51172
|
-
/* @__PURE__ */
|
|
51173
|
-
/* @__PURE__ */
|
|
51174
|
-
/* @__PURE__ */
|
|
51175
|
-
/* @__PURE__ */
|
|
51294
|
+
/* @__PURE__ */ jsxs303("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
51295
|
+
/* @__PURE__ */ jsx381("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx381("span", { className: cn(COMPACT_CARD_TITLE, "font-heading"), children: item.title }) }),
|
|
51296
|
+
/* @__PURE__ */ jsx381("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx381("span", { className: "truncate text-h6 text-ods-accent", children: subtitleParts.join(" \xB7 ") }) }),
|
|
51297
|
+
/* @__PURE__ */ jsx381("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx381("span", { className: COMPACT_CARD_SUMMARY, children: item.description || COMPACT_CARD_ROW_FILLER }) })
|
|
51176
51298
|
] }),
|
|
51177
|
-
/* @__PURE__ */
|
|
51299
|
+
/* @__PURE__ */ jsx381("span", { className: "flex shrink-0 items-center self-start h-5 text-ods-text-secondary", children: /* @__PURE__ */ jsx381(ExternalLink12, { className: "w-3.5 h-3.5" }) })
|
|
51178
51300
|
] });
|
|
51179
51301
|
}
|
|
51180
51302
|
const itemDate = new Date(item.date);
|
|
51181
51303
|
const dateFormat = formatUtc(itemDate, "EEEE d MMMM");
|
|
51182
51304
|
const defaultRenderMeta = () => {
|
|
51183
51305
|
if (config.type === "podcast" && "duration_seconds" in item && !isScheduled) {
|
|
51184
|
-
return /* @__PURE__ */
|
|
51185
|
-
/* @__PURE__ */
|
|
51186
|
-
/* @__PURE__ */
|
|
51306
|
+
return /* @__PURE__ */ jsxs303(Fragment84, { children: [
|
|
51307
|
+
/* @__PURE__ */ jsx381(Clock2, { className: "w-4 h-4 text-ods-text-secondary" }),
|
|
51308
|
+
/* @__PURE__ */ jsx381("span", { className: "font-body text-ods-text-secondary", children: formatDurationCompact(item.duration_seconds) })
|
|
51187
51309
|
] });
|
|
51188
51310
|
}
|
|
51189
51311
|
if (config.type === "event" && "location_name" in item) {
|
|
51190
|
-
return /* @__PURE__ */
|
|
51312
|
+
return /* @__PURE__ */ jsx381("span", { className: "font-body text-ods-text-secondary", children: item.location_name || "Location TBD" });
|
|
51191
51313
|
}
|
|
51192
51314
|
if (config.type === "webinar" && "start_at" in item) {
|
|
51193
51315
|
const webinarItem = item;
|
|
51194
51316
|
const duration = formatDurationFromRange(webinarItem.start_at, webinarItem.end_at);
|
|
51195
|
-
return /* @__PURE__ */
|
|
51196
|
-
/* @__PURE__ */
|
|
51197
|
-
/* @__PURE__ */
|
|
51317
|
+
return /* @__PURE__ */ jsxs303(Fragment84, { children: [
|
|
51318
|
+
/* @__PURE__ */ jsx381(Video5, { className: "w-4 h-4 text-ods-text-secondary" }),
|
|
51319
|
+
/* @__PURE__ */ jsxs303("span", { className: "font-body text-ods-text-secondary", children: [
|
|
51198
51320
|
formatTimeWithTimezone(webinarItem.start_at, webinarItem.timezone ?? null),
|
|
51199
51321
|
duration && ` \xB7 ${duration}`
|
|
51200
51322
|
] }),
|
|
51201
|
-
webinarItem.timezone && /* @__PURE__ */
|
|
51323
|
+
webinarItem.timezone && /* @__PURE__ */ jsxs303("span", { className: "text-h6 text-ods-text-secondary", children: [
|
|
51202
51324
|
"(",
|
|
51203
51325
|
webinarItem.timezone,
|
|
51204
51326
|
")"
|
|
@@ -51207,9 +51329,9 @@ function ProgramCard({
|
|
|
51207
51329
|
}
|
|
51208
51330
|
return null;
|
|
51209
51331
|
};
|
|
51210
|
-
const cardHeader = /* @__PURE__ */
|
|
51211
|
-
coverImage && /* @__PURE__ */
|
|
51212
|
-
/* @__PURE__ */
|
|
51332
|
+
const cardHeader = /* @__PURE__ */ jsx381("div", { className: "p-6 border-ods-border flex-1", children: /* @__PURE__ */ jsxs303("div", { className: "flex flex-col md:flex-row gap-4 md:gap-6", children: [
|
|
51333
|
+
coverImage && /* @__PURE__ */ jsx381("div", { className: "w-full md:w-[180px] flex-shrink-0 flex items-center", children: /* @__PURE__ */ jsxs303("div", { className: "relative rounded-lg overflow-hidden", children: [
|
|
51334
|
+
/* @__PURE__ */ jsx381(
|
|
51213
51335
|
next_image_default,
|
|
51214
51336
|
{
|
|
51215
51337
|
src: coverImage,
|
|
@@ -51220,23 +51342,23 @@ function ProgramCard({
|
|
|
51220
51342
|
unoptimized: true
|
|
51221
51343
|
}
|
|
51222
51344
|
),
|
|
51223
|
-
config.type === "podcast" && !isScheduled && /* @__PURE__ */
|
|
51345
|
+
config.type === "podcast" && !isScheduled && /* @__PURE__ */ jsx381("div", { className: "absolute inset-0 flex items-center justify-center bg-black/40 opacity-0 group-hover:opacity-100 transition-opacity rounded-lg", children: /* @__PURE__ */ jsx381(Play4, { className: "w-10 h-10 text-ods-text-on-dark", fill: "white" }) })
|
|
51224
51346
|
] }) }),
|
|
51225
|
-
/* @__PURE__ */
|
|
51226
|
-
/* @__PURE__ */
|
|
51227
|
-
/* @__PURE__ */
|
|
51228
|
-
/* @__PURE__ */
|
|
51229
|
-
renderMeta ? /* @__PURE__ */
|
|
51230
|
-
/* @__PURE__ */
|
|
51347
|
+
/* @__PURE__ */ jsxs303("div", { className: "flex-1 min-w-0 flex flex-col", children: [
|
|
51348
|
+
/* @__PURE__ */ jsx381("h3", { className: "text-h2 text-ods-text-primary mb-3 min-h-[3rem] md:min-h-[3.5rem] line-clamp-2 flex items-center", children: item.title }),
|
|
51349
|
+
/* @__PURE__ */ jsxs303("div", { className: "flex flex-col md:flex-row md:items-center gap-2 md:gap-4 mb-4", children: [
|
|
51350
|
+
/* @__PURE__ */ jsx381("span", { className: "text-h6", style: { color: accentColor }, children: dateFormat }),
|
|
51351
|
+
renderMeta ? /* @__PURE__ */ jsxs303(Fragment84, { children: [
|
|
51352
|
+
/* @__PURE__ */ jsx381("span", { className: "hidden md:inline text-ods-text-secondary", children: "\u2022" }),
|
|
51231
51353
|
renderMeta(item)
|
|
51232
|
-
] }) : defaultRenderMeta() && /* @__PURE__ */
|
|
51233
|
-
/* @__PURE__ */
|
|
51234
|
-
/* @__PURE__ */
|
|
51354
|
+
] }) : defaultRenderMeta() && /* @__PURE__ */ jsxs303(Fragment84, { children: [
|
|
51355
|
+
/* @__PURE__ */ jsx381("span", { className: "hidden md:inline text-ods-text-secondary", children: "\u2022" }),
|
|
51356
|
+
/* @__PURE__ */ jsx381("div", { className: "flex items-center gap-2", children: defaultRenderMeta() })
|
|
51235
51357
|
] })
|
|
51236
51358
|
] }),
|
|
51237
|
-
/* @__PURE__ */
|
|
51359
|
+
/* @__PURE__ */ jsx381("div", { className: "flex-1", children: /* @__PURE__ */ jsx381("p", { className: "text-h6 text-ods-text-secondary line-clamp-3 min-h-[4.5rem]", children: item.description }) })
|
|
51238
51360
|
] }),
|
|
51239
|
-
hosts.length > 0 && /* @__PURE__ */
|
|
51361
|
+
hosts.length > 0 && /* @__PURE__ */ jsx381("div", { className: "md:text-right", children: /* @__PURE__ */ jsx381("div", { className: "flex flex-wrap md:justify-end gap-2", children: hosts.map((host, index) => /* @__PURE__ */ jsx381(
|
|
51240
51362
|
SquareAvatar,
|
|
51241
51363
|
{
|
|
51242
51364
|
variant: "round",
|
|
@@ -51254,7 +51376,7 @@ function ProgramCard({
|
|
|
51254
51376
|
);
|
|
51255
51377
|
const cardFrameStyle = { backgroundColor: "var(--ods-system-greys-black)" };
|
|
51256
51378
|
if (wholeCardClickable) {
|
|
51257
|
-
return /* @__PURE__ */
|
|
51379
|
+
return /* @__PURE__ */ jsxs303(
|
|
51258
51380
|
"a",
|
|
51259
51381
|
{
|
|
51260
51382
|
href,
|
|
@@ -51265,8 +51387,8 @@ function ProgramCard({
|
|
|
51265
51387
|
"aria-label": `Open ${item.title}`,
|
|
51266
51388
|
children: [
|
|
51267
51389
|
cardHeader,
|
|
51268
|
-
images.length > 0 && /* @__PURE__ */
|
|
51269
|
-
/* @__PURE__ */
|
|
51390
|
+
images.length > 0 && /* @__PURE__ */ jsx381(MediaGallery, { images, title: item.title }),
|
|
51391
|
+
/* @__PURE__ */ jsx381("div", { className: "p-6 pt-0 mt-auto", children: /* @__PURE__ */ jsx381("div", { className: "pt-4 border-t border-ods-border", children: /* @__PURE__ */ jsxs303(
|
|
51270
51392
|
"span",
|
|
51271
51393
|
{
|
|
51272
51394
|
className: "inline-flex items-center gap-2 px-4 py-2 rounded-md border border-ods-accent text-ods-accent text-h6",
|
|
@@ -51275,7 +51397,7 @@ function ProgramCard({
|
|
|
51275
51397
|
"View ",
|
|
51276
51398
|
config.labels.singular,
|
|
51277
51399
|
" Details",
|
|
51278
|
-
/* @__PURE__ */
|
|
51400
|
+
/* @__PURE__ */ jsx381(ExternalLink12, { className: "w-5 h-5" })
|
|
51279
51401
|
]
|
|
51280
51402
|
}
|
|
51281
51403
|
) }) })
|
|
@@ -51283,17 +51405,17 @@ function ProgramCard({
|
|
|
51283
51405
|
}
|
|
51284
51406
|
);
|
|
51285
51407
|
}
|
|
51286
|
-
return /* @__PURE__ */
|
|
51287
|
-
/* @__PURE__ */
|
|
51288
|
-
images.length > 0 && /* @__PURE__ */
|
|
51289
|
-
/* @__PURE__ */
|
|
51408
|
+
return /* @__PURE__ */ jsxs303("div", { className: cardFrameClass, style: cardFrameStyle, children: [
|
|
51409
|
+
/* @__PURE__ */ jsx381("a", { href, target, rel, className: "block", "aria-label": `Open ${item.title}`, children: cardHeader }),
|
|
51410
|
+
images.length > 0 && /* @__PURE__ */ jsx381(MediaGallery, { images, title: item.title }),
|
|
51411
|
+
/* @__PURE__ */ jsx381("div", { className: "p-6 pt-0 mt-auto", children: /* @__PURE__ */ jsx381("div", { className: "pt-4 border-t border-ods-border", children: /* @__PURE__ */ jsxs303(
|
|
51290
51412
|
Button,
|
|
51291
51413
|
{
|
|
51292
51414
|
variant: "outline",
|
|
51293
51415
|
size: "small-legacy",
|
|
51294
51416
|
href,
|
|
51295
51417
|
openInNewTab: target === "_blank",
|
|
51296
|
-
rightIcon: /* @__PURE__ */
|
|
51418
|
+
rightIcon: /* @__PURE__ */ jsx381(ExternalLink12, { className: "w-5 h-5" }),
|
|
51297
51419
|
children: [
|
|
51298
51420
|
"View ",
|
|
51299
51421
|
config.labels.singular,
|
|
@@ -51306,48 +51428,48 @@ function ProgramCard({
|
|
|
51306
51428
|
|
|
51307
51429
|
// src/components/chat/entity-cards/campaign-card-admin.tsx
|
|
51308
51430
|
import { Megaphone as Megaphone3 } from "lucide-react";
|
|
51309
|
-
import { Fragment as Fragment85, jsx as
|
|
51431
|
+
import { Fragment as Fragment85, jsx as jsx382, jsxs as jsxs304 } from "react/jsx-runtime";
|
|
51310
51432
|
function CampaignCardAdmin({ campaign, className, anchorProps }) {
|
|
51311
51433
|
const goalsCount = campaign.goals?.length || 0;
|
|
51312
|
-
const innerChildren = /* @__PURE__ */
|
|
51313
|
-
/* @__PURE__ */
|
|
51314
|
-
/* @__PURE__ */
|
|
51315
|
-
/* @__PURE__ */
|
|
51316
|
-
/* @__PURE__ */
|
|
51434
|
+
const innerChildren = /* @__PURE__ */ jsxs304(Fragment85, { children: [
|
|
51435
|
+
/* @__PURE__ */ jsx382("span", { className: COMPACT_CARD_ICON_SLOT, children: /* @__PURE__ */ jsx382(Megaphone3, { className: "h-5 w-5" }) }),
|
|
51436
|
+
/* @__PURE__ */ jsxs304("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
51437
|
+
/* @__PURE__ */ jsx382("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx382("span", { className: COMPACT_CARD_TITLE, children: campaign.name }) }),
|
|
51438
|
+
/* @__PURE__ */ jsx382("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx382("span", { className: COMPACT_CARD_SUBTITLE, children: [
|
|
51317
51439
|
campaign.start_date ? formatDateShort(campaign.start_date) : null,
|
|
51318
51440
|
goalsCount > 0 ? `${goalsCount} goal${goalsCount !== 1 ? "s" : ""}` : null,
|
|
51319
51441
|
"Marketing campaign"
|
|
51320
51442
|
].filter(Boolean).join(" \xB7 ") }) }),
|
|
51321
|
-
/* @__PURE__ */
|
|
51443
|
+
/* @__PURE__ */ jsx382("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx382("span", { className: COMPACT_CARD_SUMMARY, children: campaign.description || COMPACT_CARD_ROW_FILLER }) })
|
|
51322
51444
|
] })
|
|
51323
51445
|
] });
|
|
51324
51446
|
if (anchorProps) {
|
|
51325
|
-
return /* @__PURE__ */
|
|
51447
|
+
return /* @__PURE__ */ jsx382("a", { ...anchorProps, className: `${COMPACT_CARD_OUTER} ${className ?? ""}`, children: innerChildren });
|
|
51326
51448
|
}
|
|
51327
|
-
return /* @__PURE__ */
|
|
51449
|
+
return /* @__PURE__ */ jsx382("span", { className: `${COMPACT_CARD_OUTER_STATIC} ${className ?? ""}`, "aria-label": "No link available", children: innerChildren });
|
|
51328
51450
|
}
|
|
51329
51451
|
function CampaignCardAdminSkeleton({ className }) {
|
|
51330
|
-
return /* @__PURE__ */
|
|
51331
|
-
/* @__PURE__ */
|
|
51332
|
-
/* @__PURE__ */
|
|
51333
|
-
/* @__PURE__ */
|
|
51334
|
-
/* @__PURE__ */
|
|
51335
|
-
/* @__PURE__ */
|
|
51452
|
+
return /* @__PURE__ */ jsxs304("span", { className: `${COMPACT_CARD_SKELETON_OUTER} ${className ?? ""}`, children: [
|
|
51453
|
+
/* @__PURE__ */ jsx382("span", { className: COMPACT_CARD_SKELETON_IMAGE_SLOT }),
|
|
51454
|
+
/* @__PURE__ */ jsxs304("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
51455
|
+
/* @__PURE__ */ jsx382("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx382("span", { className: "h-3.5 w-3/5 rounded bg-ods-bg" }) }),
|
|
51456
|
+
/* @__PURE__ */ jsx382("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx382("span", { className: "h-3 w-1/2 rounded bg-ods-bg/70" }) }),
|
|
51457
|
+
/* @__PURE__ */ jsx382("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx382("span", { className: "h-3 w-11/12 rounded bg-ods-bg/40" }) })
|
|
51336
51458
|
] })
|
|
51337
51459
|
] });
|
|
51338
51460
|
}
|
|
51339
51461
|
|
|
51340
51462
|
// src/components/chat/entity-cards/generic-entity-card.tsx
|
|
51341
51463
|
import { ExternalLink as ExternalLink13 } from "lucide-react";
|
|
51342
|
-
import { Fragment as Fragment86, jsx as
|
|
51464
|
+
import { Fragment as Fragment86, jsx as jsx383, jsxs as jsxs305 } from "react/jsx-runtime";
|
|
51343
51465
|
function GenericEntityCard({ item, className, anchorProps }) {
|
|
51344
51466
|
const href = safeHref(item.url);
|
|
51345
51467
|
const dateText = formatDateUTC(item.dateUpdated, { fallback: "", timezone: "local" });
|
|
51346
|
-
const body = /* @__PURE__ */
|
|
51347
|
-
/* @__PURE__ */
|
|
51348
|
-
/* @__PURE__ */
|
|
51349
|
-
/* @__PURE__ */
|
|
51350
|
-
item.badge ? /* @__PURE__ */
|
|
51468
|
+
const body = /* @__PURE__ */ jsxs305(Fragment86, { children: [
|
|
51469
|
+
/* @__PURE__ */ jsxs305("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
51470
|
+
/* @__PURE__ */ jsxs305("span", { className: "flex flex-wrap items-center gap-1.5 min-w-0", children: [
|
|
51471
|
+
/* @__PURE__ */ jsx383("span", { className: `${COMPACT_CARD_TITLE} shrink min-w-0`, children: item.title }),
|
|
51472
|
+
item.badge ? /* @__PURE__ */ jsx383(
|
|
51351
51473
|
StatusBadge,
|
|
51352
51474
|
{
|
|
51353
51475
|
text: item.badge.text,
|
|
@@ -51357,44 +51479,44 @@ function GenericEntityCard({ item, className, anchorProps }) {
|
|
|
51357
51479
|
}
|
|
51358
51480
|
) : null
|
|
51359
51481
|
] }),
|
|
51360
|
-
item.subtitle ? /* @__PURE__ */
|
|
51361
|
-
item.preview ? /* @__PURE__ */
|
|
51362
|
-
item.facts && item.facts.length > 0 ? /* @__PURE__ */
|
|
51363
|
-
/* @__PURE__ */
|
|
51482
|
+
item.subtitle ? /* @__PURE__ */ jsx383("span", { className: "flex min-w-0 items-center gap-1 text-h6 text-ods-text-secondary", children: /* @__PURE__ */ jsx383("span", { className: "min-w-0 truncate font-mono", children: item.subtitle }) }) : null,
|
|
51483
|
+
item.preview ? /* @__PURE__ */ jsx383("span", { className: "flex min-w-0", children: /* @__PURE__ */ jsx383("span", { className: "line-clamp-2 whitespace-pre-wrap break-words text-h6 text-ods-text-secondary", children: item.preview }) }) : null,
|
|
51484
|
+
item.facts && item.facts.length > 0 ? /* @__PURE__ */ jsx383("span", { className: "flex flex-wrap items-center gap-x-3 gap-y-0.5 min-w-0 text-h6", children: item.facts.map((f, i) => /* @__PURE__ */ jsxs305("span", { className: "inline-flex items-center gap-1 min-w-0 truncate", children: [
|
|
51485
|
+
/* @__PURE__ */ jsxs305("span", { className: "text-ods-text-secondary/70 shrink-0", children: [
|
|
51364
51486
|
f.label,
|
|
51365
51487
|
":"
|
|
51366
51488
|
] }),
|
|
51367
|
-
/* @__PURE__ */
|
|
51489
|
+
/* @__PURE__ */ jsx383("span", { className: "text-ods-text-primary font-medium truncate", children: f.value })
|
|
51368
51490
|
] }, i)) }) : null,
|
|
51369
|
-
dateText ? /* @__PURE__ */
|
|
51491
|
+
dateText ? /* @__PURE__ */ jsx383("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx383("span", { className: COMPACT_CARD_META_ROW, children: /* @__PURE__ */ jsx383("span", { className: "whitespace-nowrap", children: dateText }) }) }) : null
|
|
51370
51492
|
] }),
|
|
51371
|
-
href ? /* @__PURE__ */
|
|
51493
|
+
href ? /* @__PURE__ */ jsx383("span", { className: "flex shrink-0 items-center self-start h-5 text-ods-text-secondary", children: /* @__PURE__ */ jsx383(ExternalLink13, { className: "w-3.5 h-3.5" }) }) : null
|
|
51372
51494
|
] });
|
|
51373
51495
|
if (anchorProps) {
|
|
51374
|
-
return /* @__PURE__ */
|
|
51496
|
+
return /* @__PURE__ */ jsx383("a", { ...anchorProps, className: `${COMPACT_CARD_OUTER} ${className ?? ""}`, children: body });
|
|
51375
51497
|
}
|
|
51376
|
-
return href ? /* @__PURE__ */
|
|
51498
|
+
return href ? /* @__PURE__ */ jsx383("a", { href, className: `${COMPACT_CARD_OUTER} ${className ?? ""}`, children: body }) : /* @__PURE__ */ jsx383("span", { className: `${COMPACT_CARD_OUTER_STATIC} ${className ?? ""}`, "aria-label": "No link available", children: body });
|
|
51377
51499
|
}
|
|
51378
51500
|
function GenericEntityCardSkeleton({ className }) {
|
|
51379
|
-
return /* @__PURE__ */
|
|
51380
|
-
/* @__PURE__ */
|
|
51381
|
-
/* @__PURE__ */
|
|
51382
|
-
/* @__PURE__ */
|
|
51383
|
-
/* @__PURE__ */
|
|
51501
|
+
return /* @__PURE__ */ jsxs305("span", { className: `${COMPACT_CARD_SKELETON_OUTER} ${className ?? ""}`, children: [
|
|
51502
|
+
/* @__PURE__ */ jsxs305("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
51503
|
+
/* @__PURE__ */ jsxs305("span", { className: "flex items-center gap-1.5 min-w-0", children: [
|
|
51504
|
+
/* @__PURE__ */ jsx383("span", { className: "h-3.5 w-2/3 rounded bg-ods-bg" }),
|
|
51505
|
+
/* @__PURE__ */ jsx383("span", { className: "h-4 w-16 rounded-full bg-ods-bg/60" })
|
|
51384
51506
|
] }),
|
|
51385
|
-
/* @__PURE__ */
|
|
51386
|
-
/* @__PURE__ */
|
|
51387
|
-
/* @__PURE__ */
|
|
51388
|
-
/* @__PURE__ */
|
|
51507
|
+
/* @__PURE__ */ jsx383("span", { className: "h-4 w-1/2 rounded bg-ods-bg/60" }),
|
|
51508
|
+
/* @__PURE__ */ jsxs305("span", { className: "flex flex-col gap-0 min-w-0", children: [
|
|
51509
|
+
/* @__PURE__ */ jsx383("span", { className: "h-5 w-5/6 rounded bg-ods-bg/60" }),
|
|
51510
|
+
/* @__PURE__ */ jsx383("span", { className: "h-5 w-3/4 rounded bg-ods-bg/60" })
|
|
51389
51511
|
] }),
|
|
51390
|
-
/* @__PURE__ */
|
|
51512
|
+
/* @__PURE__ */ jsx383("span", { className: "h-3 w-1/4 rounded bg-ods-bg/70" })
|
|
51391
51513
|
] }),
|
|
51392
|
-
/* @__PURE__ */
|
|
51514
|
+
/* @__PURE__ */ jsx383("span", { className: "flex shrink-0 items-center self-start h-5", children: /* @__PURE__ */ jsx383("span", { className: "h-3.5 w-3.5 rounded bg-ods-bg" }) })
|
|
51393
51515
|
] });
|
|
51394
51516
|
}
|
|
51395
51517
|
|
|
51396
51518
|
// src/components/chat/entity-cards/dispatch.tsx
|
|
51397
|
-
import
|
|
51519
|
+
import React149 from "react";
|
|
51398
51520
|
init_next_navigation();
|
|
51399
51521
|
|
|
51400
51522
|
// src/components/chat/hooks/use-chat-card-item.ts
|
|
@@ -51581,14 +51703,14 @@ function resolveFetchedCardHref({
|
|
|
51581
51703
|
|
|
51582
51704
|
// src/components/chat/entity-cards/deleted-data-card.tsx
|
|
51583
51705
|
import { Trash2 as Trash27 } from "lucide-react";
|
|
51584
|
-
import { jsx as
|
|
51706
|
+
import { jsx as jsx384, jsxs as jsxs306 } from "react/jsx-runtime";
|
|
51585
51707
|
function DeletedDataCard({ title, entityLabel, recoveryNote, className }) {
|
|
51586
51708
|
const label = entityLabel || "Item";
|
|
51587
|
-
return /* @__PURE__ */
|
|
51588
|
-
/* @__PURE__ */
|
|
51589
|
-
/* @__PURE__ */
|
|
51590
|
-
/* @__PURE__ */
|
|
51591
|
-
/* @__PURE__ */
|
|
51709
|
+
return /* @__PURE__ */ jsxs306("div", { className: `${COMPACT_CARD_OUTER_STATIC} opacity-70 ${className ?? ""}`, children: [
|
|
51710
|
+
/* @__PURE__ */ jsx384("div", { className: COMPACT_CARD_ICON_SLOT, children: /* @__PURE__ */ jsx384(Trash27, { className: "h-4 w-4 text-ods-text-secondary" }) }),
|
|
51711
|
+
/* @__PURE__ */ jsxs306("div", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
51712
|
+
/* @__PURE__ */ jsx384("div", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx384("span", { className: `${COMPACT_CARD_TITLE} line-through text-ods-text-secondary`, children: title || `Deleted ${label.toLowerCase()}` }) }),
|
|
51713
|
+
/* @__PURE__ */ jsx384("div", { className: COMPACT_CARD_META_ROW, children: /* @__PURE__ */ jsxs306("span", { className: "text-ods-text-secondary", children: [
|
|
51592
51714
|
label,
|
|
51593
51715
|
" deleted",
|
|
51594
51716
|
recoveryNote ? ` \xB7 ${recoveryNote}` : ""
|
|
@@ -51599,16 +51721,16 @@ function DeletedDataCard({ title, entityLabel, recoveryNote, className }) {
|
|
|
51599
51721
|
|
|
51600
51722
|
// src/components/chat/mingo-info-card.tsx
|
|
51601
51723
|
init_cn();
|
|
51602
|
-
import { Fragment as Fragment87, jsx as
|
|
51724
|
+
import { Fragment as Fragment87, jsx as jsx385, jsxs as jsxs307 } from "react/jsx-runtime";
|
|
51603
51725
|
function CardMedia({
|
|
51604
51726
|
imageSrc,
|
|
51605
51727
|
imageAlt,
|
|
51606
51728
|
icon
|
|
51607
51729
|
}) {
|
|
51608
51730
|
if (imageSrc) {
|
|
51609
|
-
return /* @__PURE__ */
|
|
51610
|
-
/* @__PURE__ */
|
|
51611
|
-
/* @__PURE__ */
|
|
51731
|
+
return /* @__PURE__ */ jsxs307("span", { className: "relative block size-10 shrink-0", children: [
|
|
51732
|
+
/* @__PURE__ */ jsx385("span", { className: "absolute inset-0 flex items-center justify-center rounded-sm border border-ods-border bg-ods-bg text-h6 text-ods-text-primary", children: getFirstLastInitials(imageAlt) || "?" }),
|
|
51733
|
+
/* @__PURE__ */ jsx385(
|
|
51612
51734
|
"img",
|
|
51613
51735
|
{
|
|
51614
51736
|
src: imageSrc,
|
|
@@ -51622,12 +51744,12 @@ function CardMedia({
|
|
|
51622
51744
|
] });
|
|
51623
51745
|
}
|
|
51624
51746
|
if (icon) {
|
|
51625
|
-
return /* @__PURE__ */
|
|
51747
|
+
return /* @__PURE__ */ jsx385("span", { className: "flex size-10 shrink-0 items-center justify-center overflow-hidden rounded-md border border-ods-border bg-ods-bg text-ods-text-secondary", children: /* @__PURE__ */ jsx385("span", { className: "flex size-6 items-center justify-center", children: icon }) });
|
|
51626
51748
|
}
|
|
51627
51749
|
return null;
|
|
51628
51750
|
}
|
|
51629
51751
|
function MingoInfoCardSkeleton({ className }) {
|
|
51630
|
-
return /* @__PURE__ */
|
|
51752
|
+
return /* @__PURE__ */ jsxs307(
|
|
51631
51753
|
"span",
|
|
51632
51754
|
{
|
|
51633
51755
|
className: cn(
|
|
@@ -51635,12 +51757,12 @@ function MingoInfoCardSkeleton({ className }) {
|
|
|
51635
51757
|
className
|
|
51636
51758
|
),
|
|
51637
51759
|
children: [
|
|
51638
|
-
/* @__PURE__ */
|
|
51639
|
-
/* @__PURE__ */
|
|
51640
|
-
/* @__PURE__ */
|
|
51641
|
-
/* @__PURE__ */
|
|
51760
|
+
/* @__PURE__ */ jsx385("span", { className: "block size-10 shrink-0 rounded-md border border-ods-border bg-ods-bg" }),
|
|
51761
|
+
/* @__PURE__ */ jsxs307("span", { className: "flex min-w-0 flex-1 flex-col justify-center gap-1.5", children: [
|
|
51762
|
+
/* @__PURE__ */ jsx385("span", { className: "block h-4 w-1/2 rounded bg-ods-bg" }),
|
|
51763
|
+
/* @__PURE__ */ jsx385("span", { className: "block h-3 w-3/4 rounded bg-ods-bg/60" })
|
|
51642
51764
|
] }),
|
|
51643
|
-
/* @__PURE__ */
|
|
51765
|
+
/* @__PURE__ */ jsx385("span", { className: "block h-5 w-16 shrink-0 rounded bg-ods-bg/60" })
|
|
51644
51766
|
]
|
|
51645
51767
|
}
|
|
51646
51768
|
);
|
|
@@ -51662,16 +51784,16 @@ function MingoInfoCard({
|
|
|
51662
51784
|
const hasMenu = !!menuGroups && menuGroups.length > 0;
|
|
51663
51785
|
const isAnchor = !!anchorProps;
|
|
51664
51786
|
const isInteractive = isAnchor || !!onClick;
|
|
51665
|
-
const content = /* @__PURE__ */
|
|
51666
|
-
hasMedia && /* @__PURE__ */
|
|
51667
|
-
/* @__PURE__ */
|
|
51668
|
-
/* @__PURE__ */
|
|
51669
|
-
description ? /* @__PURE__ */
|
|
51787
|
+
const content = /* @__PURE__ */ jsxs307(Fragment87, { children: [
|
|
51788
|
+
hasMedia && /* @__PURE__ */ jsx385(CardMedia, { imageSrc, imageAlt, icon }),
|
|
51789
|
+
/* @__PURE__ */ jsxs307("span", { className: "flex min-w-0 flex-1 flex-col justify-center", children: [
|
|
51790
|
+
/* @__PURE__ */ jsx385("span", { className: "truncate text-h4 text-ods-text-primary", children: title }),
|
|
51791
|
+
description ? /* @__PURE__ */ jsx385("span", { className: "truncate text-h6 text-ods-text-secondary", children: description }) : null
|
|
51670
51792
|
] }),
|
|
51671
51793
|
status ? (
|
|
51672
51794
|
// Reuse the shared Tag palette (single source of truth for colours)
|
|
51673
51795
|
// without rendering Tag's `<div>` — span-only for `<p>` validity.
|
|
51674
|
-
/* @__PURE__ */
|
|
51796
|
+
/* @__PURE__ */ jsx385("span", { className: cn(tagVariants({ variant: status.variant ?? "success" }), "shrink-0"), children: /* @__PURE__ */ jsx385("span", { className: "truncate uppercase tracking-[-0.28px]", children: status.label }) })
|
|
51675
51797
|
) : null
|
|
51676
51798
|
] });
|
|
51677
51799
|
const contentClass = cn(
|
|
@@ -51679,7 +51801,7 @@ function MingoInfoCard({
|
|
|
51679
51801
|
hasMenu && "border-r border-ods-border",
|
|
51680
51802
|
isInteractive && "transition-colors hover:bg-ods-bg-hover active:bg-ods-bg-active focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ods-accent cursor-pointer"
|
|
51681
51803
|
);
|
|
51682
|
-
return /* @__PURE__ */
|
|
51804
|
+
return /* @__PURE__ */ jsxs307(
|
|
51683
51805
|
"span",
|
|
51684
51806
|
{
|
|
51685
51807
|
className: cn(
|
|
@@ -51687,20 +51809,20 @@ function MingoInfoCard({
|
|
|
51687
51809
|
className
|
|
51688
51810
|
),
|
|
51689
51811
|
children: [
|
|
51690
|
-
isAnchor ? /* @__PURE__ */
|
|
51691
|
-
hasMenu && /* @__PURE__ */
|
|
51812
|
+
isAnchor ? /* @__PURE__ */ jsx385("a", { ...anchorProps, className: cn(contentClass, "no-underline"), children: content }) : onClick ? /* @__PURE__ */ jsx385("button", { type: "button", onClick, className: contentClass, children: content }) : /* @__PURE__ */ jsx385("span", { className: contentClass, children: content }),
|
|
51813
|
+
hasMenu && /* @__PURE__ */ jsx385(
|
|
51692
51814
|
ActionsMenuDropdown,
|
|
51693
51815
|
{
|
|
51694
51816
|
groups: menuGroups,
|
|
51695
51817
|
triggerAriaLabel: menuAriaLabel,
|
|
51696
51818
|
onCloseAutoFocus: (e) => e.preventDefault(),
|
|
51697
|
-
customTrigger: /* @__PURE__ */
|
|
51819
|
+
customTrigger: /* @__PURE__ */ jsx385(
|
|
51698
51820
|
"button",
|
|
51699
51821
|
{
|
|
51700
51822
|
type: "button",
|
|
51701
51823
|
"aria-label": menuAriaLabel,
|
|
51702
51824
|
className: "flex w-[56px] md:w-[68px] shrink-0 items-center justify-center self-stretch text-ods-text-secondary transition-colors hover:bg-ods-bg-hover hover:text-ods-text-primary active:bg-ods-bg-active active:text-ods-text-primary focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ods-accent",
|
|
51703
|
-
children: /* @__PURE__ */
|
|
51825
|
+
children: /* @__PURE__ */ jsx385(Ellipsis01Icon, { size: 24 })
|
|
51704
51826
|
}
|
|
51705
51827
|
)
|
|
51706
51828
|
}
|
|
@@ -51711,16 +51833,16 @@ function MingoInfoCard({
|
|
|
51711
51833
|
}
|
|
51712
51834
|
|
|
51713
51835
|
// src/components/chat/entity-cards/dispatch.tsx
|
|
51714
|
-
import { Fragment as Fragment88, jsx as
|
|
51836
|
+
import { Fragment as Fragment88, jsx as jsx386, jsxs as jsxs308 } from "react/jsx-runtime";
|
|
51715
51837
|
function githubKindIcon(kind) {
|
|
51716
51838
|
switch (kind) {
|
|
51717
51839
|
case "pull_request":
|
|
51718
|
-
return /* @__PURE__ */
|
|
51840
|
+
return /* @__PURE__ */ jsx386(CodingPullRequestIcon, { size: 24 });
|
|
51719
51841
|
case "pr_review":
|
|
51720
|
-
return /* @__PURE__ */
|
|
51842
|
+
return /* @__PURE__ */ jsx386(CodeIcon, { size: 24 });
|
|
51721
51843
|
case "commit":
|
|
51722
51844
|
default:
|
|
51723
|
-
return /* @__PURE__ */
|
|
51845
|
+
return /* @__PURE__ */ jsx386(CodingCommitIcon, { size: 24 });
|
|
51724
51846
|
}
|
|
51725
51847
|
}
|
|
51726
51848
|
function reviewStateToVariant(state) {
|
|
@@ -51749,7 +51871,7 @@ function GitHubChatCard({
|
|
|
51749
51871
|
const idLabel = formatActivityId(chatRef.id, kind);
|
|
51750
51872
|
const dateText = formatDateUTC(chatRef.date ?? null, { fallback: "", timezone: "local" });
|
|
51751
51873
|
const description = [idLabel, dateText].filter(Boolean).join(" \xB7 ") || void 0;
|
|
51752
|
-
return /* @__PURE__ */
|
|
51874
|
+
return /* @__PURE__ */ jsx386(
|
|
51753
51875
|
MingoInfoCard,
|
|
51754
51876
|
{
|
|
51755
51877
|
title,
|
|
@@ -51776,12 +51898,12 @@ function cardMenuGroups(href, discuss, openDetails, externalLink) {
|
|
|
51776
51898
|
items.push({
|
|
51777
51899
|
id: "open-details",
|
|
51778
51900
|
label: openDetails?.label ?? "Open Details",
|
|
51779
|
-
icon: openDetails?.icon ?? /* @__PURE__ */
|
|
51901
|
+
icon: openDetails?.icon ?? /* @__PURE__ */ jsx386(EyeIcon2, { size: 20 }),
|
|
51780
51902
|
// Main row → open the entity (same tab, soft Link nav).
|
|
51781
51903
|
href,
|
|
51782
51904
|
// Trailing 40px ↗ side-button → open in a new tab.
|
|
51783
51905
|
iconAction: {
|
|
51784
|
-
icon: /* @__PURE__ */
|
|
51906
|
+
icon: /* @__PURE__ */ jsx386(ArrowRightUpIcon, { size: 20 }),
|
|
51785
51907
|
"aria-label": "Open in new tab",
|
|
51786
51908
|
href,
|
|
51787
51909
|
openInNewTab: true
|
|
@@ -51858,12 +51980,12 @@ function CardLoadFailure({
|
|
|
51858
51980
|
id,
|
|
51859
51981
|
detail
|
|
51860
51982
|
}) {
|
|
51861
|
-
return /* @__PURE__ */
|
|
51983
|
+
return /* @__PURE__ */ jsx386(
|
|
51862
51984
|
MingoInfoCard,
|
|
51863
51985
|
{
|
|
51864
51986
|
title: label,
|
|
51865
51987
|
description: `${detail} \xB7 id: ${id}`,
|
|
51866
|
-
icon: /* @__PURE__ */
|
|
51988
|
+
icon: /* @__PURE__ */ jsx386(AlertTriangleIcon, { size: 24 }),
|
|
51867
51989
|
status: { label: "FAILED", variant: "error" },
|
|
51868
51990
|
menuAriaLabel: "Card failed to load"
|
|
51869
51991
|
}
|
|
@@ -51898,17 +52020,17 @@ function HubspotTicketChatCard({
|
|
|
51898
52020
|
const status = typeof chatRef.metadata?.status === "string" ? chatRef.metadata.status : void 0;
|
|
51899
52021
|
const statusLabel = typeof chatRef.metadata?.statusLabel === "string" ? chatRef.metadata.statusLabel : void 0;
|
|
51900
52022
|
const statusText = statusLabel ?? formatStatusToken(status);
|
|
51901
|
-
return /* @__PURE__ */
|
|
52023
|
+
return /* @__PURE__ */ jsx386(
|
|
51902
52024
|
MingoInfoCard,
|
|
51903
52025
|
{
|
|
51904
52026
|
title: chatRef.title,
|
|
51905
52027
|
description: chatRef.preview ?? void 0,
|
|
51906
|
-
icon: /* @__PURE__ */
|
|
52028
|
+
icon: /* @__PURE__ */ jsx386(TagIcon, { size: 24 }),
|
|
51907
52029
|
status: statusText ? { label: statusText, variant: hubspotStatusToVariant(status) } : void 0,
|
|
51908
52030
|
anchorProps: buildAnchorProps(chatRef.url, isNewTab),
|
|
51909
52031
|
menuGroups: cardMenuGroups(chatRef.url, discuss, {
|
|
51910
52032
|
label: "Open Ticket Details",
|
|
51911
|
-
icon: /* @__PURE__ */
|
|
52033
|
+
icon: /* @__PURE__ */ jsx386(TagIcon, { size: 20 })
|
|
51912
52034
|
}),
|
|
51913
52035
|
menuAriaLabel: "Ticket actions"
|
|
51914
52036
|
}
|
|
@@ -51921,12 +52043,12 @@ function FaqChatCard({
|
|
|
51921
52043
|
}) {
|
|
51922
52044
|
const section = typeof chatRef.metadata?.section === "string" ? chatRef.metadata.section.trim() : void 0;
|
|
51923
52045
|
const statusLabel = section && section.length > 0 ? section : "FAQ";
|
|
51924
|
-
return /* @__PURE__ */
|
|
52046
|
+
return /* @__PURE__ */ jsx386(
|
|
51925
52047
|
MingoInfoCard,
|
|
51926
52048
|
{
|
|
51927
52049
|
title: chatRef.title,
|
|
51928
52050
|
description: chatRef.preview ?? void 0,
|
|
51929
|
-
icon: /* @__PURE__ */
|
|
52051
|
+
icon: /* @__PURE__ */ jsx386(QuestionCircleIcon, { size: 24 }),
|
|
51930
52052
|
status: { label: statusLabel, variant: "grey" },
|
|
51931
52053
|
anchorProps: buildAnchorProps(chatRef.url, isNewTab),
|
|
51932
52054
|
menuGroups: cardMenuGroups(chatRef.url, discuss),
|
|
@@ -51942,12 +52064,12 @@ function SlackChatCard({
|
|
|
51942
52064
|
const channelName = typeof chatRef.metadata?.channelName === "string" ? chatRef.metadata.channelName.trim() : void 0;
|
|
51943
52065
|
const channelPretty = channelName ? channelName.startsWith("#") ? channelName : `#${channelName}` : void 0;
|
|
51944
52066
|
const title = channelPretty ? `${chatRef.title} \xB7 ${channelPretty}` : chatRef.title;
|
|
51945
|
-
return /* @__PURE__ */
|
|
52067
|
+
return /* @__PURE__ */ jsx386(
|
|
51946
52068
|
MingoInfoCard,
|
|
51947
52069
|
{
|
|
51948
52070
|
title,
|
|
51949
52071
|
description: chatRef.preview ?? void 0,
|
|
51950
|
-
icon: /* @__PURE__ */
|
|
52072
|
+
icon: /* @__PURE__ */ jsx386(SlackLogoGreyIcon, { size: 24 }),
|
|
51951
52073
|
anchorProps: buildAnchorProps(chatRef.url, isNewTab),
|
|
51952
52074
|
menuGroups: cardMenuGroups(chatRef.url, discuss),
|
|
51953
52075
|
menuAriaLabel: "Message actions"
|
|
@@ -51960,12 +52082,12 @@ function DataRoomDocChatCard({
|
|
|
51960
52082
|
discuss
|
|
51961
52083
|
}) {
|
|
51962
52084
|
const badgeText = chatRef.sourceRepo ? getSourceLabel(chatRef.sourceRepo) : "Document";
|
|
51963
|
-
return /* @__PURE__ */
|
|
52085
|
+
return /* @__PURE__ */ jsx386(
|
|
51964
52086
|
MingoInfoCard,
|
|
51965
52087
|
{
|
|
51966
52088
|
title: chatRef.title,
|
|
51967
52089
|
description: chatRef.preview ?? void 0,
|
|
51968
|
-
icon: /* @__PURE__ */
|
|
52090
|
+
icon: /* @__PURE__ */ jsx386(FileContentIcon, { size: 24 }),
|
|
51969
52091
|
status: { label: badgeText, variant: "grey" },
|
|
51970
52092
|
anchorProps: buildAnchorProps(chatRef.url, isNewTab),
|
|
51971
52093
|
menuGroups: cardMenuGroups(chatRef.url, discuss),
|
|
@@ -51980,7 +52102,7 @@ function GenericFinancialChatCard({
|
|
|
51980
52102
|
discuss
|
|
51981
52103
|
}) {
|
|
51982
52104
|
const subtitle = typeof chatRef.metadata?.subtitle === "string" ? chatRef.metadata.subtitle : void 0;
|
|
51983
|
-
return /* @__PURE__ */
|
|
52105
|
+
return /* @__PURE__ */ jsx386(
|
|
51984
52106
|
MingoInfoCard,
|
|
51985
52107
|
{
|
|
51986
52108
|
title: chatRef.title,
|
|
@@ -51994,9 +52116,9 @@ function GenericFinancialChatCard({
|
|
|
51994
52116
|
}
|
|
51995
52117
|
function ChatInlineVideoPill({ chatRef }) {
|
|
51996
52118
|
const title = chatRef.title || "Video";
|
|
51997
|
-
return /* @__PURE__ */
|
|
51998
|
-
/* @__PURE__ */
|
|
51999
|
-
/* @__PURE__ */
|
|
52119
|
+
return /* @__PURE__ */ jsxs308("span", { className: "inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-xs align-middle bg-ods-card border border-ods-border text-ods-text-primary", children: [
|
|
52120
|
+
/* @__PURE__ */ jsx386("span", { "aria-hidden": "true", className: "text-ods-text-secondary", children: "\u25B6" }),
|
|
52121
|
+
/* @__PURE__ */ jsx386("span", { className: "truncate max-w-[220px]", children: title })
|
|
52000
52122
|
] });
|
|
52001
52123
|
}
|
|
52002
52124
|
function ChatCardWithDiscuss({
|
|
@@ -52012,11 +52134,11 @@ function ChatCardWithDiscuss({
|
|
|
52012
52134
|
});
|
|
52013
52135
|
const idDisplay = chatRef.id && (chatRef.id.length > 24 ? `${chatRef.id.slice(0, 24)}\u2026` : chatRef.id);
|
|
52014
52136
|
const useDisplay = displayAction && !!onDisplay;
|
|
52015
|
-
const cardBody = /* @__PURE__ */
|
|
52016
|
-
return /* @__PURE__ */
|
|
52137
|
+
const cardBody = /* @__PURE__ */ jsx386("span", { className: "block [&>*]:!my-0", children });
|
|
52138
|
+
return /* @__PURE__ */ jsxs308("span", { className: "mt-1.5 mb-2 block w-full", children: [
|
|
52017
52139
|
cardBody,
|
|
52018
|
-
/* @__PURE__ */
|
|
52019
|
-
/* @__PURE__ */
|
|
52140
|
+
/* @__PURE__ */ jsxs308("span", { className: "mt-1 flex items-center justify-between gap-2 pl-0.5", children: [
|
|
52141
|
+
/* @__PURE__ */ jsx386(
|
|
52020
52142
|
SourceActionButton,
|
|
52021
52143
|
{
|
|
52022
52144
|
chatRef,
|
|
@@ -52025,15 +52147,15 @@ function ChatCardWithDiscuss({
|
|
|
52025
52147
|
density: "card"
|
|
52026
52148
|
}
|
|
52027
52149
|
),
|
|
52028
|
-
!onDiscuss && !useDisplay ? /* @__PURE__ */
|
|
52029
|
-
idDisplay ? /* @__PURE__ */
|
|
52150
|
+
!onDiscuss && !useDisplay ? /* @__PURE__ */ jsx386("span", {}) : null,
|
|
52151
|
+
idDisplay ? /* @__PURE__ */ jsxs308(
|
|
52030
52152
|
"span",
|
|
52031
52153
|
{
|
|
52032
52154
|
className: "inline-flex items-center gap-1 text-code shrink-0 text-ods-text-secondary opacity-60 hover:opacity-100 hover:text-ods-text-primary transition-opacity",
|
|
52033
52155
|
title: `${sourceLabel} \xB7 ${chatRef.id}`,
|
|
52034
52156
|
children: [
|
|
52035
|
-
/* @__PURE__ */
|
|
52036
|
-
/* @__PURE__ */
|
|
52157
|
+
/* @__PURE__ */ jsx386(SourceIcon, { className: "h-3 w-3 shrink-0" }),
|
|
52158
|
+
/* @__PURE__ */ jsx386("span", { className: "truncate max-w-[180px]", children: idDisplay })
|
|
52037
52159
|
]
|
|
52038
52160
|
}
|
|
52039
52161
|
) : null
|
|
@@ -52049,13 +52171,13 @@ function ProductReleaseChatCard({
|
|
|
52049
52171
|
}) {
|
|
52050
52172
|
const releaseProps = buildProps(item);
|
|
52051
52173
|
const status = item?.version ? { label: String(item.version), variant: "grey" } : { label: "Release", variant: "grey" };
|
|
52052
|
-
return /* @__PURE__ */
|
|
52174
|
+
return /* @__PURE__ */ jsx386(
|
|
52053
52175
|
EntityMingoCard,
|
|
52054
52176
|
{
|
|
52055
52177
|
title: item?.title ?? "",
|
|
52056
52178
|
description: item?.summary || releaseProps.formattedDate || void 0,
|
|
52057
52179
|
cover: releaseProps.coverImage || void 0,
|
|
52058
|
-
fallbackIcon: /* @__PURE__ */
|
|
52180
|
+
fallbackIcon: /* @__PURE__ */ jsx386(Rocket02Icon, { size: 24 }),
|
|
52059
52181
|
status,
|
|
52060
52182
|
chatRef,
|
|
52061
52183
|
isNewTab,
|
|
@@ -52076,12 +52198,12 @@ function CampaignChatCard({
|
|
|
52076
52198
|
goalsCount > 0 ? `${goalsCount} goal${goalsCount !== 1 ? "s" : ""}` : null,
|
|
52077
52199
|
"Marketing campaign"
|
|
52078
52200
|
].filter(Boolean).join(" \xB7 ");
|
|
52079
|
-
return /* @__PURE__ */
|
|
52201
|
+
return /* @__PURE__ */ jsx386(
|
|
52080
52202
|
EntityMingoCard,
|
|
52081
52203
|
{
|
|
52082
52204
|
title: item?.name ?? "",
|
|
52083
52205
|
description: meta || item?.description || void 0,
|
|
52084
|
-
fallbackIcon: /* @__PURE__ */
|
|
52206
|
+
fallbackIcon: /* @__PURE__ */ jsx386(Megaphone01Icon, { size: 24 }),
|
|
52085
52207
|
chatRef,
|
|
52086
52208
|
isNewTab,
|
|
52087
52209
|
discuss,
|
|
@@ -52102,7 +52224,7 @@ function EntityMingoCard({
|
|
|
52102
52224
|
openDetails,
|
|
52103
52225
|
externalLink
|
|
52104
52226
|
}) {
|
|
52105
|
-
return /* @__PURE__ */
|
|
52227
|
+
return /* @__PURE__ */ jsx386(
|
|
52106
52228
|
MingoInfoCard,
|
|
52107
52229
|
{
|
|
52108
52230
|
title,
|
|
@@ -52137,13 +52259,13 @@ function BlogChatCard({
|
|
|
52137
52259
|
}) {
|
|
52138
52260
|
const category = Array.isArray(item?.categories) ? item.categories.find((c) => c && c.name)?.name : void 0;
|
|
52139
52261
|
const status = hasEmbeddedVideo ? { label: "Video", variant: "primary" } : category ? { label: category, variant: "grey" } : void 0;
|
|
52140
|
-
return /* @__PURE__ */
|
|
52262
|
+
return /* @__PURE__ */ jsx386(
|
|
52141
52263
|
EntityMingoCard,
|
|
52142
52264
|
{
|
|
52143
52265
|
title: item?.title ?? "",
|
|
52144
52266
|
description: item?.summary ?? void 0,
|
|
52145
52267
|
cover: entityCover(item?.featured_image, ogPlaceholder),
|
|
52146
|
-
fallbackIcon: /* @__PURE__ */
|
|
52268
|
+
fallbackIcon: /* @__PURE__ */ jsx386(NewspaperIcon, { size: 24 }),
|
|
52147
52269
|
status,
|
|
52148
52270
|
chatRef,
|
|
52149
52271
|
isNewTab,
|
|
@@ -52160,13 +52282,13 @@ function CaseStudyChatCard({
|
|
|
52160
52282
|
discuss
|
|
52161
52283
|
}) {
|
|
52162
52284
|
const meta = [item?.msp?.name, item?.user?.full_name].filter(Boolean).join(" \xB7 ");
|
|
52163
|
-
return /* @__PURE__ */
|
|
52285
|
+
return /* @__PURE__ */ jsx386(
|
|
52164
52286
|
EntityMingoCard,
|
|
52165
52287
|
{
|
|
52166
52288
|
title: item?.title ?? "",
|
|
52167
52289
|
description: item?.summary || meta || void 0,
|
|
52168
52290
|
cover: entityCover(item?.featured_image, ogPlaceholder),
|
|
52169
|
-
fallbackIcon: /* @__PURE__ */
|
|
52291
|
+
fallbackIcon: /* @__PURE__ */ jsx386(TrophyIcon, { size: 24 }),
|
|
52170
52292
|
status: { label: "Case study", variant: "grey" },
|
|
52171
52293
|
chatRef,
|
|
52172
52294
|
isNewTab,
|
|
@@ -52183,13 +52305,13 @@ function CustomerInterviewChatCard({
|
|
|
52183
52305
|
discuss
|
|
52184
52306
|
}) {
|
|
52185
52307
|
const meta = [item?.user?.full_name, item?.msp?.name].filter(Boolean).join(" \xB7 ");
|
|
52186
|
-
return /* @__PURE__ */
|
|
52308
|
+
return /* @__PURE__ */ jsx386(
|
|
52187
52309
|
EntityMingoCard,
|
|
52188
52310
|
{
|
|
52189
52311
|
title: item?.title ?? "",
|
|
52190
52312
|
description: item?.video_summary || meta || void 0,
|
|
52191
52313
|
cover: entityCover(item?.featured_image, ogPlaceholder),
|
|
52192
|
-
fallbackIcon: /* @__PURE__ */
|
|
52314
|
+
fallbackIcon: /* @__PURE__ */ jsx386(MicrophoneIcon, { size: 24 }),
|
|
52193
52315
|
status: { label: "Interview", variant: "grey" },
|
|
52194
52316
|
chatRef,
|
|
52195
52317
|
isNewTab,
|
|
@@ -52206,13 +52328,13 @@ function InvestorUpdateChatCard({
|
|
|
52206
52328
|
discuss
|
|
52207
52329
|
}) {
|
|
52208
52330
|
const title = item?.title || `Update #${item?.update_number ?? "?"}`;
|
|
52209
|
-
return /* @__PURE__ */
|
|
52331
|
+
return /* @__PURE__ */ jsx386(
|
|
52210
52332
|
EntityMingoCard,
|
|
52211
52333
|
{
|
|
52212
52334
|
title,
|
|
52213
52335
|
description: item?.strategic_update || item?.content || formatInvestorUpdatePeriod(item?.period_start, item?.period_end) || void 0,
|
|
52214
52336
|
cover: entityCover(item?.featured_image, ogPlaceholder),
|
|
52215
|
-
fallbackIcon: /* @__PURE__ */
|
|
52337
|
+
fallbackIcon: /* @__PURE__ */ jsx386(PresentationLineIcon, { size: 24 }),
|
|
52216
52338
|
status: { label: "Investor update", variant: "grey" },
|
|
52217
52339
|
chatRef,
|
|
52218
52340
|
isNewTab,
|
|
@@ -52229,13 +52351,13 @@ function OnboardingGuideChatCard({
|
|
|
52229
52351
|
discuss
|
|
52230
52352
|
}) {
|
|
52231
52353
|
const cover = entityCover(item?.featured_image) ?? entityCover(item?.main_video_thumbnail) ?? entityCover(item?.og_image_url, ogPlaceholder);
|
|
52232
|
-
return /* @__PURE__ */
|
|
52354
|
+
return /* @__PURE__ */ jsx386(
|
|
52233
52355
|
EntityMingoCard,
|
|
52234
52356
|
{
|
|
52235
52357
|
title: item?.title ?? "",
|
|
52236
52358
|
description: item?.summary ?? item?.description ?? void 0,
|
|
52237
52359
|
cover,
|
|
52238
|
-
fallbackIcon: /* @__PURE__ */
|
|
52360
|
+
fallbackIcon: /* @__PURE__ */ jsx386(CompassIcon, { size: 24 }),
|
|
52239
52361
|
status: { label: "Guide", variant: "grey" },
|
|
52240
52362
|
chatRef,
|
|
52241
52363
|
isNewTab,
|
|
@@ -52253,7 +52375,7 @@ function ProgramChatCard({
|
|
|
52253
52375
|
ogPlaceholder,
|
|
52254
52376
|
discuss
|
|
52255
52377
|
}) {
|
|
52256
|
-
const icon = configKey === "webinar" ? /* @__PURE__ */
|
|
52378
|
+
const icon = configKey === "webinar" ? /* @__PURE__ */ jsx386(PresentationBarIcon, { size: 24 }) : configKey === "event" ? /* @__PURE__ */ jsx386(CalendarIcon, { size: 24 }) : /* @__PURE__ */ jsx386(MicrophoneIcon, { size: 24 });
|
|
52257
52379
|
const isScheduled = item?.status === "scheduled";
|
|
52258
52380
|
let typeMeta;
|
|
52259
52381
|
if (configKey === "podcast" && typeof item?.duration_seconds === "number" && item.duration_seconds > 0 && !isScheduled) {
|
|
@@ -52267,7 +52389,7 @@ function ProgramChatCard({
|
|
|
52267
52389
|
}
|
|
52268
52390
|
const itemDate = formatDateUTC(item?.date ?? null, { fallback: "", timezone: "local" });
|
|
52269
52391
|
const meta = [itemDate, typeMeta].filter(Boolean).join(" \xB7 ");
|
|
52270
|
-
return /* @__PURE__ */
|
|
52392
|
+
return /* @__PURE__ */ jsx386(
|
|
52271
52393
|
EntityMingoCard,
|
|
52272
52394
|
{
|
|
52273
52395
|
title: item?.title ?? "",
|
|
@@ -52291,16 +52413,16 @@ function RoadmapChatCard({
|
|
|
52291
52413
|
}) {
|
|
52292
52414
|
const logoUrl = typeof item?.icon === "string" && item.icon.startsWith("http") ? item.icon : void 0;
|
|
52293
52415
|
const useTypeIcon = cardType === "internal_task" || !logoUrl && item?.customItemId != null;
|
|
52294
|
-
const defaultIcon = cardType === "delivery_item" ? /* @__PURE__ */
|
|
52295
|
-
const icon = useTypeIcon ? /* @__PURE__ */
|
|
52416
|
+
const defaultIcon = cardType === "delivery_item" ? /* @__PURE__ */ jsx386(TruckFastIcon, { size: 24 }) : cardType === "internal_task" ? /* @__PURE__ */ jsx386(CheckSquareIcon, { size: 24 }) : /* @__PURE__ */ jsx386(MapIcon, { size: 24 });
|
|
52417
|
+
const icon = useTypeIcon ? /* @__PURE__ */ jsx386(TaskTypeIcon, { customItemId: item?.customItemId, className: "size-6" }) : logoUrl ? (
|
|
52296
52418
|
// Contained (not full-bleed) so the integration logo keeps its aspect
|
|
52297
52419
|
// ratio inside the bordered icon box — matches RoadmapCard.
|
|
52298
|
-
/* @__PURE__ */
|
|
52420
|
+
/* @__PURE__ */ jsx386("img", { src: logoUrl, alt: "", className: "size-6 object-contain" })
|
|
52299
52421
|
) : defaultIcon;
|
|
52300
52422
|
const clickupHref = clickupTaskUrl(chatRef.id);
|
|
52301
|
-
const clickupIcon = /* @__PURE__ */
|
|
52423
|
+
const clickupIcon = /* @__PURE__ */ jsx386(ClickupLogoIcon, { size: 20 });
|
|
52302
52424
|
const cardUrlIsClickup = cardType === "internal_task";
|
|
52303
|
-
return /* @__PURE__ */
|
|
52425
|
+
return /* @__PURE__ */ jsx386(
|
|
52304
52426
|
EntityMingoCard,
|
|
52305
52427
|
{
|
|
52306
52428
|
title: item?.title ?? "",
|
|
@@ -52323,16 +52445,16 @@ function refHydratedEntry(docType, label, renderRef) {
|
|
|
52323
52445
|
contentRefType: docType,
|
|
52324
52446
|
noComposedHref: true,
|
|
52325
52447
|
fallbackHref: (item) => item?.url ?? null,
|
|
52326
|
-
skeleton: () => /* @__PURE__ */
|
|
52448
|
+
skeleton: () => /* @__PURE__ */ jsx386(MingoInfoCardSkeleton, {}),
|
|
52327
52449
|
render: (item, chatRef, opts) => renderRef(fetchedItemDisplayRef(item, chatRef), opts)
|
|
52328
52450
|
};
|
|
52329
52451
|
}
|
|
52330
52452
|
var FINANCIAL_CARD_CONFIGS = {
|
|
52331
|
-
financial_kpi: { label: "Financial KPI", icon: () => /* @__PURE__ */
|
|
52332
|
-
cap_table: { label: "Cap table entry", icon: () => /* @__PURE__ */
|
|
52333
|
-
profit_loss: { label: "P&L period", icon: () => /* @__PURE__ */
|
|
52334
|
-
balance_sheet: { label: "Balance sheet", icon: () => /* @__PURE__ */
|
|
52335
|
-
cash_flow: { label: "Cash flow", icon: () => /* @__PURE__ */
|
|
52453
|
+
financial_kpi: { label: "Financial KPI", icon: () => /* @__PURE__ */ jsx386(ChartBar01VerIcon, { size: 24 }) },
|
|
52454
|
+
cap_table: { label: "Cap table entry", icon: () => /* @__PURE__ */ jsx386(ChartPieIcon, { size: 24 }) },
|
|
52455
|
+
profit_loss: { label: "P&L period", icon: () => /* @__PURE__ */ jsx386(MoneyBillDollarIcon, { size: 24 }) },
|
|
52456
|
+
balance_sheet: { label: "Balance sheet", icon: () => /* @__PURE__ */ jsx386(BankIcon, { size: 24 }) },
|
|
52457
|
+
cash_flow: { label: "Cash flow", icon: () => /* @__PURE__ */ jsx386(CoinsExchangeCurrencyIcon, { size: 24 }) }
|
|
52336
52458
|
};
|
|
52337
52459
|
function registryEntries(configs, build) {
|
|
52338
52460
|
const out = {};
|
|
@@ -52342,7 +52464,7 @@ function registryEntries(configs, build) {
|
|
|
52342
52464
|
function financialRegistryEntries() {
|
|
52343
52465
|
return registryEntries(
|
|
52344
52466
|
FINANCIAL_CARD_CONFIGS,
|
|
52345
|
-
(cfg, docType) => refHydratedEntry(docType, cfg.label, (displayRef, opts) => /* @__PURE__ */
|
|
52467
|
+
(cfg, docType) => refHydratedEntry(docType, cfg.label, (displayRef, opts) => /* @__PURE__ */ jsx386(
|
|
52346
52468
|
GenericFinancialChatCard,
|
|
52347
52469
|
{
|
|
52348
52470
|
chatRef: displayRef,
|
|
@@ -52364,7 +52486,7 @@ var GITHUB_CARD_CONFIGS = {
|
|
|
52364
52486
|
function githubRegistryEntries() {
|
|
52365
52487
|
return registryEntries(
|
|
52366
52488
|
GITHUB_CARD_CONFIGS,
|
|
52367
|
-
(cfg, docType) => refHydratedEntry(docType, cfg.label, (displayRef, opts) => /* @__PURE__ */
|
|
52489
|
+
(cfg, docType) => refHydratedEntry(docType, cfg.label, (displayRef, opts) => /* @__PURE__ */ jsx386(
|
|
52368
52490
|
GitHubChatCard,
|
|
52369
52491
|
{
|
|
52370
52492
|
chatRef: displayRef,
|
|
@@ -52385,8 +52507,8 @@ function programRegistryEntries() {
|
|
|
52385
52507
|
label: cfg.label,
|
|
52386
52508
|
contentRefType: cfg.contentRefType,
|
|
52387
52509
|
bareInline: true,
|
|
52388
|
-
skeleton: () => /* @__PURE__ */
|
|
52389
|
-
render: (item, chatRef, opts) => /* @__PURE__ */
|
|
52510
|
+
skeleton: () => /* @__PURE__ */ jsx386(ProgramCardSkeleton, { size: "sm" }),
|
|
52511
|
+
render: (item, chatRef, opts) => /* @__PURE__ */ jsx386(
|
|
52390
52512
|
ProgramChatCard,
|
|
52391
52513
|
{
|
|
52392
52514
|
item,
|
|
@@ -52426,8 +52548,8 @@ function roadmapRegistryEntries() {
|
|
|
52426
52548
|
bareInline: true,
|
|
52427
52549
|
...cfg.noComposedHref ? { noComposedHref: true } : {},
|
|
52428
52550
|
...cfg.fallbackHref ? { fallbackHref: cfg.fallbackHref } : {},
|
|
52429
|
-
skeleton: () => /* @__PURE__ */
|
|
52430
|
-
render: (item, chatRef, opts) => /* @__PURE__ */
|
|
52551
|
+
skeleton: () => /* @__PURE__ */ jsx386(RoadmapCardSkeleton, { size: "sm" }),
|
|
52552
|
+
render: (item, chatRef, opts) => /* @__PURE__ */ jsx386(
|
|
52431
52553
|
RoadmapChatCard,
|
|
52432
52554
|
{
|
|
52433
52555
|
item,
|
|
@@ -52454,7 +52576,7 @@ var CHAT_CARD_REGISTRY = {
|
|
|
52454
52576
|
// null and the card renders its generic "Deleted item" tombstone. The
|
|
52455
52577
|
// descriptor's `title` defaults to the raw cardId — suppress it so the
|
|
52456
52578
|
// strikethrough line never shows an opaque id.
|
|
52457
|
-
render: (_item, chatRef) => /* @__PURE__ */
|
|
52579
|
+
render: (_item, chatRef) => /* @__PURE__ */ jsx386(
|
|
52458
52580
|
DeletedDataCard,
|
|
52459
52581
|
{
|
|
52460
52582
|
title: chatRef.title && chatRef.title !== chatRef.id ? chatRef.title : null,
|
|
@@ -52463,7 +52585,7 @@ var CHAT_CARD_REGISTRY = {
|
|
|
52463
52585
|
}
|
|
52464
52586
|
)
|
|
52465
52587
|
},
|
|
52466
|
-
slack_message: refHydratedEntry("slack_message", "Slack message", (displayRef, opts) => /* @__PURE__ */
|
|
52588
|
+
slack_message: refHydratedEntry("slack_message", "Slack message", (displayRef, opts) => /* @__PURE__ */ jsx386(SlackChatCard, { chatRef: displayRef, isNewTab: opts.isNewTab, discuss: opts.discuss })),
|
|
52467
52589
|
// FAQ hydrates from its EXISTING public list API (`/api/faqs?ids=` —
|
|
52468
52590
|
// also feeding related-content rails, so its base path must not move).
|
|
52469
52591
|
// Rows are faq-shaped, not ChatRef-shaped, hence the bespoke row→display
|
|
@@ -52474,8 +52596,8 @@ var CHAT_CARD_REGISTRY = {
|
|
|
52474
52596
|
contentRefType: "faq",
|
|
52475
52597
|
noComposedHref: true,
|
|
52476
52598
|
fallbackHref: (item) => item?.id != null ? `/faqs#${faqItemAnchor(item.id)}` : null,
|
|
52477
|
-
skeleton: () => /* @__PURE__ */
|
|
52478
|
-
render: (item, chatRef, opts) => /* @__PURE__ */
|
|
52599
|
+
skeleton: () => /* @__PURE__ */ jsx386(MingoInfoCardSkeleton, {}),
|
|
52600
|
+
render: (item, chatRef, opts) => /* @__PURE__ */ jsx386(
|
|
52479
52601
|
FaqChatCard,
|
|
52480
52602
|
{
|
|
52481
52603
|
chatRef: fetchedFaqDisplayRef(item, chatRef),
|
|
@@ -52484,7 +52606,7 @@ var CHAT_CARD_REGISTRY = {
|
|
|
52484
52606
|
}
|
|
52485
52607
|
)
|
|
52486
52608
|
},
|
|
52487
|
-
hubspot_ticket: refHydratedEntry("hubspot_ticket", "HubSpot ticket", (displayRef, opts) => /* @__PURE__ */
|
|
52609
|
+
hubspot_ticket: refHydratedEntry("hubspot_ticket", "HubSpot ticket", (displayRef, opts) => /* @__PURE__ */ jsx386(
|
|
52488
52610
|
HubspotTicketChatCard,
|
|
52489
52611
|
{
|
|
52490
52612
|
chatRef: displayRef,
|
|
@@ -52495,7 +52617,7 @@ var CHAT_CARD_REGISTRY = {
|
|
|
52495
52617
|
hubspot_ticket_anon: refHydratedEntry(
|
|
52496
52618
|
"hubspot_ticket_anon",
|
|
52497
52619
|
"HubSpot ticket (anon)",
|
|
52498
|
-
(displayRef, opts) => /* @__PURE__ */
|
|
52620
|
+
(displayRef, opts) => /* @__PURE__ */ jsx386(
|
|
52499
52621
|
HubspotTicketChatCard,
|
|
52500
52622
|
{
|
|
52501
52623
|
chatRef: displayRef,
|
|
@@ -52511,7 +52633,7 @@ var CHAT_CARD_REGISTRY = {
|
|
|
52511
52633
|
hubspot_ticket_self: refHydratedEntry(
|
|
52512
52634
|
"hubspot_ticket_self",
|
|
52513
52635
|
"HubSpot ticket (self)",
|
|
52514
|
-
(displayRef, opts) => /* @__PURE__ */
|
|
52636
|
+
(displayRef, opts) => /* @__PURE__ */ jsx386(
|
|
52515
52637
|
HubspotTicketChatCard,
|
|
52516
52638
|
{
|
|
52517
52639
|
chatRef: displayRef,
|
|
@@ -52520,7 +52642,7 @@ var CHAT_CARD_REGISTRY = {
|
|
|
52520
52642
|
}
|
|
52521
52643
|
)
|
|
52522
52644
|
),
|
|
52523
|
-
data_room_doc: refHydratedEntry("data_room_doc", "Data-room doc", (displayRef, opts) => /* @__PURE__ */
|
|
52645
|
+
data_room_doc: refHydratedEntry("data_room_doc", "Data-room doc", (displayRef, opts) => /* @__PURE__ */ jsx386(
|
|
52524
52646
|
DataRoomDocChatCard,
|
|
52525
52647
|
{
|
|
52526
52648
|
chatRef: displayRef,
|
|
@@ -52528,7 +52650,7 @@ var CHAT_CARD_REGISTRY = {
|
|
|
52528
52650
|
discuss: opts.discuss
|
|
52529
52651
|
}
|
|
52530
52652
|
)),
|
|
52531
|
-
markdown: refHydratedEntry("markdown", "Doc page (markdown)", (displayRef, opts) => /* @__PURE__ */
|
|
52653
|
+
markdown: refHydratedEntry("markdown", "Doc page (markdown)", (displayRef, opts) => /* @__PURE__ */ jsx386(
|
|
52532
52654
|
DataRoomDocChatCard,
|
|
52533
52655
|
{
|
|
52534
52656
|
chatRef: displayRef,
|
|
@@ -52541,7 +52663,7 @@ var CHAT_CARD_REGISTRY = {
|
|
|
52541
52663
|
video: {
|
|
52542
52664
|
label: "Video",
|
|
52543
52665
|
bareInline: true,
|
|
52544
|
-
render: (_item, chatRef) => /* @__PURE__ */
|
|
52666
|
+
render: (_item, chatRef) => /* @__PURE__ */ jsx386(ChatInlineVideoPill, { chatRef })
|
|
52545
52667
|
},
|
|
52546
52668
|
...financialRegistryEntries(),
|
|
52547
52669
|
// ───────── content types: full rows from their public list APIs ─────────
|
|
@@ -52549,8 +52671,8 @@ var CHAT_CARD_REGISTRY = {
|
|
|
52549
52671
|
label: "Blog post",
|
|
52550
52672
|
contentRefType: "blog_post_existing",
|
|
52551
52673
|
bareInline: true,
|
|
52552
|
-
skeleton: () => /* @__PURE__ */
|
|
52553
|
-
render: (item, chatRef, opts) => /* @__PURE__ */
|
|
52674
|
+
skeleton: () => /* @__PURE__ */ jsx386(BlogCardSkeleton, { size: "sm" }),
|
|
52675
|
+
render: (item, chatRef, opts) => /* @__PURE__ */ jsx386(
|
|
52554
52676
|
BlogChatCard,
|
|
52555
52677
|
{
|
|
52556
52678
|
item,
|
|
@@ -52566,8 +52688,8 @@ var CHAT_CARD_REGISTRY = {
|
|
|
52566
52688
|
label: "Case study",
|
|
52567
52689
|
contentRefType: "case_study",
|
|
52568
52690
|
bareInline: true,
|
|
52569
|
-
skeleton: () => /* @__PURE__ */
|
|
52570
|
-
render: (item, chatRef, opts) => /* @__PURE__ */
|
|
52691
|
+
skeleton: () => /* @__PURE__ */ jsx386(CaseStudyCardSkeleton, { size: "sm" }),
|
|
52692
|
+
render: (item, chatRef, opts) => /* @__PURE__ */ jsx386(
|
|
52571
52693
|
CaseStudyChatCard,
|
|
52572
52694
|
{
|
|
52573
52695
|
item,
|
|
@@ -52582,8 +52704,8 @@ var CHAT_CARD_REGISTRY = {
|
|
|
52582
52704
|
label: "Customer interview",
|
|
52583
52705
|
contentRefType: "customer_interview",
|
|
52584
52706
|
bareInline: true,
|
|
52585
|
-
skeleton: () => /* @__PURE__ */
|
|
52586
|
-
render: (item, chatRef, opts) => /* @__PURE__ */
|
|
52707
|
+
skeleton: () => /* @__PURE__ */ jsx386(CustomerInterviewCardSkeleton, { size: "sm" }),
|
|
52708
|
+
render: (item, chatRef, opts) => /* @__PURE__ */ jsx386(
|
|
52587
52709
|
CustomerInterviewChatCard,
|
|
52588
52710
|
{
|
|
52589
52711
|
item,
|
|
@@ -52598,10 +52720,10 @@ var CHAT_CARD_REGISTRY = {
|
|
|
52598
52720
|
label: "Product release",
|
|
52599
52721
|
contentRefType: "product_release",
|
|
52600
52722
|
bareInline: true,
|
|
52601
|
-
skeleton: () => /* @__PURE__ */
|
|
52723
|
+
skeleton: () => /* @__PURE__ */ jsx386(ProductReleaseCardSkeleton, { size: "sm" }),
|
|
52602
52724
|
render: (item, chatRef, opts) => {
|
|
52603
52725
|
const builder = opts?.extras?.buildProductReleaseCardProps ?? defaultBuildProductReleaseCardProps;
|
|
52604
|
-
return /* @__PURE__ */
|
|
52726
|
+
return /* @__PURE__ */ jsx386(
|
|
52605
52727
|
ProductReleaseChatCard,
|
|
52606
52728
|
{
|
|
52607
52729
|
item,
|
|
@@ -52618,8 +52740,8 @@ var CHAT_CARD_REGISTRY = {
|
|
|
52618
52740
|
label: "Investor update",
|
|
52619
52741
|
contentRefType: "investor_update",
|
|
52620
52742
|
bareInline: true,
|
|
52621
|
-
skeleton: () => /* @__PURE__ */
|
|
52622
|
-
render: (item, chatRef, opts) => /* @__PURE__ */
|
|
52743
|
+
skeleton: () => /* @__PURE__ */ jsx386(InvestorUpdateCardSkeleton, { size: "sm" }),
|
|
52744
|
+
render: (item, chatRef, opts) => /* @__PURE__ */ jsx386(
|
|
52623
52745
|
InvestorUpdateChatCard,
|
|
52624
52746
|
{
|
|
52625
52747
|
item,
|
|
@@ -52636,8 +52758,8 @@ var CHAT_CARD_REGISTRY = {
|
|
|
52636
52758
|
bareInline: true,
|
|
52637
52759
|
// "Display" affordance (verbatim guide body) instead of "Ask".
|
|
52638
52760
|
displayAction: true,
|
|
52639
|
-
skeleton: () => /* @__PURE__ */
|
|
52640
|
-
render: (item, chatRef, opts) => /* @__PURE__ */
|
|
52761
|
+
skeleton: () => /* @__PURE__ */ jsx386(OnboardingGuideCardSkeleton, { size: "sm" }),
|
|
52762
|
+
render: (item, chatRef, opts) => /* @__PURE__ */ jsx386(
|
|
52641
52763
|
OnboardingGuideChatCard,
|
|
52642
52764
|
{
|
|
52643
52765
|
item,
|
|
@@ -52652,11 +52774,11 @@ var CHAT_CARD_REGISTRY = {
|
|
|
52652
52774
|
label: "Marketing campaign",
|
|
52653
52775
|
contentRefType: "marketing_campaign",
|
|
52654
52776
|
bareInline: true,
|
|
52655
|
-
skeleton: () => /* @__PURE__ */
|
|
52777
|
+
skeleton: () => /* @__PURE__ */ jsx386(CampaignCardAdminSkeleton, {}),
|
|
52656
52778
|
// No public viewer — synthesize the hub-internal admin URL post-fetch
|
|
52657
52779
|
// so the wrapper + isNewTab computation see the actual destination.
|
|
52658
52780
|
fallbackHref: (item) => item?.id ? `/admin/campaigns/${encodeURIComponent(item.id)}` : null,
|
|
52659
|
-
render: (item, chatRef, opts) => /* @__PURE__ */
|
|
52781
|
+
render: (item, chatRef, opts) => /* @__PURE__ */ jsx386(
|
|
52660
52782
|
CampaignChatCard,
|
|
52661
52783
|
{
|
|
52662
52784
|
item,
|
|
@@ -52690,7 +52812,7 @@ function ChatCardNavWrap({
|
|
|
52690
52812
|
e.stopPropagation();
|
|
52691
52813
|
if (!isNewTab && panel?.closeChat) panel.closeChat();
|
|
52692
52814
|
};
|
|
52693
|
-
return /* @__PURE__ */
|
|
52815
|
+
return /* @__PURE__ */ jsx386("span", { className: "contents", onClickCapture, children });
|
|
52694
52816
|
}
|
|
52695
52817
|
function ChatCardLoader({
|
|
52696
52818
|
chatRef,
|
|
@@ -52701,7 +52823,7 @@ function ChatCardLoader({
|
|
|
52701
52823
|
extras
|
|
52702
52824
|
}) {
|
|
52703
52825
|
const runtime = useRequiredChatRuntime();
|
|
52704
|
-
const resolvedChatRef =
|
|
52826
|
+
const resolvedChatRef = React149.useMemo(() => {
|
|
52705
52827
|
const cta = resolveSourceRowCTA(
|
|
52706
52828
|
{
|
|
52707
52829
|
sourceRepo: chatRef.sourceRepo,
|
|
@@ -52749,7 +52871,7 @@ function ChatCardLoader({
|
|
|
52749
52871
|
const discussFn = useDisplay ? onDisplay : onDiscuss;
|
|
52750
52872
|
const discuss = discussFn ? {
|
|
52751
52873
|
label: useDisplay ? "Display" : "Ask Mingo",
|
|
52752
|
-
icon: useDisplay ? /* @__PURE__ */
|
|
52874
|
+
icon: useDisplay ? /* @__PURE__ */ jsx386(FileContentIcon, { size: 20 }) : /* @__PURE__ */ jsx386(
|
|
52753
52875
|
MingoIcon,
|
|
52754
52876
|
{
|
|
52755
52877
|
className: "size-5",
|
|
@@ -52768,7 +52890,7 @@ function ChatCardLoader({
|
|
|
52768
52890
|
discuss
|
|
52769
52891
|
};
|
|
52770
52892
|
const path = typeof finalChatRef.metadata?.path === "string" ? finalChatRef.metadata.path : null;
|
|
52771
|
-
const navWrap = (children) => /* @__PURE__ */
|
|
52893
|
+
const navWrap = (children) => /* @__PURE__ */ jsx386(
|
|
52772
52894
|
ChatCardNavWrap,
|
|
52773
52895
|
{
|
|
52774
52896
|
href: finalChatRef.url ?? null,
|
|
@@ -52778,7 +52900,7 @@ function ChatCardLoader({
|
|
|
52778
52900
|
children
|
|
52779
52901
|
}
|
|
52780
52902
|
);
|
|
52781
|
-
const finish = (node) => entry.bareInline ? /* @__PURE__ */
|
|
52903
|
+
const finish = (node) => entry.bareInline ? /* @__PURE__ */ jsx386(Fragment88, { children: navWrap(node) }) : /* @__PURE__ */ jsx386(
|
|
52782
52904
|
ChatCardWithDiscuss,
|
|
52783
52905
|
{
|
|
52784
52906
|
chatRef: finalChatRef,
|
|
@@ -52791,15 +52913,15 @@ function ChatCardLoader({
|
|
|
52791
52913
|
if (!fetchEntry) {
|
|
52792
52914
|
return finish(entry.render(void 0, finalChatRef, renderOpts));
|
|
52793
52915
|
}
|
|
52794
|
-
if (isLoading) return /* @__PURE__ */
|
|
52916
|
+
if (isLoading) return /* @__PURE__ */ jsx386(Fragment88, { children: fetchEntry.skeleton?.() ?? null });
|
|
52795
52917
|
if (!item) {
|
|
52796
52918
|
if (isError) {
|
|
52797
|
-
return /* @__PURE__ */
|
|
52919
|
+
return /* @__PURE__ */ jsx386(CardLoadFailure, { label: entry.label, id: finalChatRef.id, detail: "Failed to load" });
|
|
52798
52920
|
}
|
|
52799
52921
|
if (!isFetched) {
|
|
52800
|
-
return /* @__PURE__ */
|
|
52922
|
+
return /* @__PURE__ */ jsx386(CardLoadFailure, { label: entry.label, id: finalChatRef.id, detail: "Not loadable" });
|
|
52801
52923
|
}
|
|
52802
|
-
return /* @__PURE__ */
|
|
52924
|
+
return /* @__PURE__ */ jsx386(CardLoadFailure, { label: entry.label, id: finalChatRef.id, detail: "Not found" });
|
|
52803
52925
|
}
|
|
52804
52926
|
const videoMeta = itemVideoMetadata(item);
|
|
52805
52927
|
if (videoMeta) {
|
|
@@ -52811,9 +52933,9 @@ function ChatCardLoader({
|
|
|
52811
52933
|
// Same 12px rhythm as the message renderer's block-sibling wrapper
|
|
52812
52934
|
// (`my-3` in chat-message-enhanced) so card→player spacing matches
|
|
52813
52935
|
// the spacing between any two hoisted blocks.
|
|
52814
|
-
/* @__PURE__ */
|
|
52936
|
+
/* @__PURE__ */ jsxs308("div", { className: "flex min-w-0 flex-col gap-3", children: [
|
|
52815
52937
|
finish(entry.render(item, finalChatRef, renderOpts)),
|
|
52816
|
-
/* @__PURE__ */
|
|
52938
|
+
/* @__PURE__ */ jsx386(ChatVideoEntityCard, { chatRef: videoRef })
|
|
52817
52939
|
] })
|
|
52818
52940
|
);
|
|
52819
52941
|
}
|
|
@@ -52821,7 +52943,7 @@ function ChatCardLoader({
|
|
|
52821
52943
|
}
|
|
52822
52944
|
function renderChatInlineEntityCard(chatRef, options = {}) {
|
|
52823
52945
|
const { onDiscuss, onDisplay, baseRoute, chipBasePlatform, extras } = options;
|
|
52824
|
-
const loader = /* @__PURE__ */
|
|
52946
|
+
const loader = /* @__PURE__ */ jsx386(
|
|
52825
52947
|
ChatCardLoader,
|
|
52826
52948
|
{
|
|
52827
52949
|
chatRef,
|
|
@@ -52841,7 +52963,7 @@ function renderChatInlineEntityCard(chatRef, options = {}) {
|
|
|
52841
52963
|
url: chatRef.url ?? (decoded.videoUrl ?? (decoded.youtubeUrl ? `https://www.youtube.com/watch?v=${decoded.youtubeUrl}` : null)),
|
|
52842
52964
|
metadata: { ...chatRef.metadata ?? {}, ...decoded }
|
|
52843
52965
|
};
|
|
52844
|
-
return /* @__PURE__ */
|
|
52966
|
+
return /* @__PURE__ */ jsx386(BlockCard, { inline: /* @__PURE__ */ jsx386(ChatInlineVideoPill, { chatRef: displayRef }), children: /* @__PURE__ */ jsx386(ChatVideoEntityCard, { chatRef: displayRef }) });
|
|
52845
52967
|
}
|
|
52846
52968
|
return loader;
|
|
52847
52969
|
}
|
|
@@ -53128,20 +53250,20 @@ function useChunkCatchup({
|
|
|
53128
53250
|
}
|
|
53129
53251
|
|
|
53130
53252
|
// src/components/chat/hooks/use-scripted-stream.ts
|
|
53131
|
-
import { useEffect as
|
|
53253
|
+
import { useEffect as useEffect86, useState as useState116 } from "react";
|
|
53132
53254
|
var EMPTY_FRAME = { messages: [], phase: "idle", typing: false, delayMs: 0 };
|
|
53133
53255
|
function prefersReducedMotion() {
|
|
53134
53256
|
return typeof window !== "undefined" && window.matchMedia?.("(prefers-reduced-motion: reduce)").matches === true;
|
|
53135
53257
|
}
|
|
53136
53258
|
function useScriptedStream(frames, resetKey, enabled = true) {
|
|
53137
|
-
const [index, setIndex] =
|
|
53138
|
-
const [reducedMotion, setReducedMotion] =
|
|
53139
|
-
const [prevKey, setPrevKey] =
|
|
53259
|
+
const [index, setIndex] = useState116(0);
|
|
53260
|
+
const [reducedMotion, setReducedMotion] = useState116(false);
|
|
53261
|
+
const [prevKey, setPrevKey] = useState116(resetKey);
|
|
53140
53262
|
if (resetKey !== prevKey) {
|
|
53141
53263
|
setPrevKey(resetKey);
|
|
53142
53264
|
setIndex(0);
|
|
53143
53265
|
}
|
|
53144
|
-
|
|
53266
|
+
useEffect86(() => {
|
|
53145
53267
|
setReducedMotion(prefersReducedMotion());
|
|
53146
53268
|
const mq = window.matchMedia?.("(prefers-reduced-motion: reduce)");
|
|
53147
53269
|
if (!mq) return;
|
|
@@ -53151,7 +53273,7 @@ function useScriptedStream(frames, resetKey, enabled = true) {
|
|
|
53151
53273
|
}, []);
|
|
53152
53274
|
const playing = enabled && !reducedMotion && frames.length > 0;
|
|
53153
53275
|
const lastIndex = Math.max(0, frames.length - 1);
|
|
53154
|
-
|
|
53276
|
+
useEffect86(() => {
|
|
53155
53277
|
if (!playing || index >= lastIndex) return;
|
|
53156
53278
|
const current = frames[Math.min(index, lastIndex)] ?? EMPTY_FRAME;
|
|
53157
53279
|
const t = setTimeout(() => setIndex((i) => Math.min(i + 1, lastIndex)), current.delayMs);
|
|
@@ -53163,7 +53285,7 @@ function useScriptedStream(frames, resetKey, enabled = true) {
|
|
|
53163
53285
|
}
|
|
53164
53286
|
|
|
53165
53287
|
// src/components/chat/hooks/use-jetstream-dialog-subscription.ts
|
|
53166
|
-
import { useCallback as useCallback50, useEffect as
|
|
53288
|
+
import { useCallback as useCallback50, useEffect as useEffect87, useRef as useRef70, useState as useState117 } from "react";
|
|
53167
53289
|
var DEFAULT_STREAM_NAME = "CHAT_CHUNKS";
|
|
53168
53290
|
var RESYNC_AFTER_HIDDEN_MS = 1e4;
|
|
53169
53291
|
var RESYNC_COALESCE_MS = 1e3;
|
|
@@ -53185,11 +53307,11 @@ function useJetStreamDialogSubscription({
|
|
|
53185
53307
|
inactiveThresholdMs,
|
|
53186
53308
|
resyncSignal = 0
|
|
53187
53309
|
}) {
|
|
53188
|
-
const [isConnected, setIsConnected] =
|
|
53189
|
-
const [isSubscribed, setIsSubscribed] =
|
|
53190
|
-
const [reconnectionCount, setReconnectionCount] =
|
|
53191
|
-
const [recoveryCount, setRecoveryCount] =
|
|
53192
|
-
const [currentStreamSeq, setCurrentStreamSeq] =
|
|
53310
|
+
const [isConnected, setIsConnected] = useState117(false);
|
|
53311
|
+
const [isSubscribed, setIsSubscribed] = useState117(false);
|
|
53312
|
+
const [reconnectionCount, setReconnectionCount] = useState117(0);
|
|
53313
|
+
const [recoveryCount, setRecoveryCount] = useState117(0);
|
|
53314
|
+
const [currentStreamSeq, setCurrentStreamSeq] = useState117(null);
|
|
53193
53315
|
const lastRecoveryReportRef = useRef70(0);
|
|
53194
53316
|
const resyncTimerRef = useRef70(null);
|
|
53195
53317
|
const lastResyncSignalRef = useRef70(resyncSignal);
|
|
@@ -53197,49 +53319,49 @@ function useJetStreamDialogSubscription({
|
|
|
53197
53319
|
const subscriptionRef = useRef70(null);
|
|
53198
53320
|
const highestStreamSeqRef = useRef70(null);
|
|
53199
53321
|
const onEventRef = useRef70(onEvent);
|
|
53200
|
-
|
|
53322
|
+
useEffect87(() => {
|
|
53201
53323
|
onEventRef.current = onEvent;
|
|
53202
53324
|
}, [onEvent]);
|
|
53203
53325
|
const onConnectRef = useRef70(onConnect);
|
|
53204
|
-
|
|
53326
|
+
useEffect87(() => {
|
|
53205
53327
|
onConnectRef.current = onConnect;
|
|
53206
53328
|
}, [onConnect]);
|
|
53207
53329
|
const onDisconnectRef = useRef70(onDisconnect);
|
|
53208
|
-
|
|
53330
|
+
useEffect87(() => {
|
|
53209
53331
|
onDisconnectRef.current = onDisconnect;
|
|
53210
53332
|
}, [onDisconnect]);
|
|
53211
53333
|
const onSubscribedRef = useRef70(onSubscribed);
|
|
53212
|
-
|
|
53334
|
+
useEffect87(() => {
|
|
53213
53335
|
onSubscribedRef.current = onSubscribed;
|
|
53214
53336
|
}, [onSubscribed]);
|
|
53215
53337
|
const onBeforeReconnectRef = useRef70(onBeforeReconnect);
|
|
53216
|
-
|
|
53338
|
+
useEffect87(() => {
|
|
53217
53339
|
onBeforeReconnectRef.current = onBeforeReconnect;
|
|
53218
53340
|
}, [onBeforeReconnect]);
|
|
53219
53341
|
const getNatsWsUrlRef = useRef70(getNatsWsUrl);
|
|
53220
|
-
|
|
53342
|
+
useEffect87(() => {
|
|
53221
53343
|
getNatsWsUrlRef.current = getNatsWsUrl;
|
|
53222
53344
|
}, [getNatsWsUrl]);
|
|
53223
53345
|
const reconnectionBackoffRef = useRef70(reconnectionBackoff);
|
|
53224
|
-
|
|
53346
|
+
useEffect87(() => {
|
|
53225
53347
|
reconnectionBackoffRef.current = reconnectionBackoff;
|
|
53226
53348
|
}, [reconnectionBackoff]);
|
|
53227
53349
|
const optStartSeqRef = useRef70(optStartSeq);
|
|
53228
|
-
|
|
53350
|
+
useEffect87(() => {
|
|
53229
53351
|
optStartSeqRef.current = optStartSeq;
|
|
53230
53352
|
}, [optStartSeq]);
|
|
53231
53353
|
const inactiveThresholdRef = useRef70(inactiveThresholdMs);
|
|
53232
|
-
|
|
53354
|
+
useEffect87(() => {
|
|
53233
53355
|
inactiveThresholdRef.current = inactiveThresholdMs;
|
|
53234
53356
|
}, [inactiveThresholdMs]);
|
|
53235
53357
|
const hadConnectionBeforeRef = useRef70(false);
|
|
53236
53358
|
const clientConfigRef = useRef70(clientConfig);
|
|
53237
|
-
|
|
53359
|
+
useEffect87(() => {
|
|
53238
53360
|
clientConfigRef.current = clientConfig;
|
|
53239
53361
|
}, [clientConfig]);
|
|
53240
53362
|
const currentWsUrlRef = useRef70("");
|
|
53241
53363
|
const wsUrl = getNatsWsUrl();
|
|
53242
|
-
|
|
53364
|
+
useEffect87(() => {
|
|
53243
53365
|
if (!enabled || !wsUrl) {
|
|
53244
53366
|
if (currentWsUrlRef.current && clientRef.current) {
|
|
53245
53367
|
releaseClient(currentWsUrlRef.current);
|
|
@@ -53320,7 +53442,7 @@ function useJetStreamDialogSubscription({
|
|
|
53320
53442
|
}
|
|
53321
53443
|
};
|
|
53322
53444
|
}, [enabled, wsUrl]);
|
|
53323
|
-
|
|
53445
|
+
useEffect87(() => {
|
|
53324
53446
|
highestStreamSeqRef.current = null;
|
|
53325
53447
|
lastResyncSignalRef.current = resyncSignal;
|
|
53326
53448
|
setCurrentStreamSeq(null);
|
|
@@ -53338,7 +53460,7 @@ function useJetStreamDialogSubscription({
|
|
|
53338
53460
|
setReconnectionCount((c) => c + 1);
|
|
53339
53461
|
}, RESYNC_COALESCE_MS);
|
|
53340
53462
|
}, []);
|
|
53341
|
-
|
|
53463
|
+
useEffect87(() => {
|
|
53342
53464
|
if (!enabled) return;
|
|
53343
53465
|
let hiddenSince = document.visibilityState === "hidden" ? Date.now() : 0;
|
|
53344
53466
|
const onVisibilityChange = () => {
|
|
@@ -53355,13 +53477,13 @@ function useJetStreamDialogSubscription({
|
|
|
53355
53477
|
document.addEventListener("visibilitychange", onVisibilityChange);
|
|
53356
53478
|
return () => document.removeEventListener("visibilitychange", onVisibilityChange);
|
|
53357
53479
|
}, [enabled, requestResync]);
|
|
53358
|
-
|
|
53480
|
+
useEffect87(() => {
|
|
53359
53481
|
if (!enabled) return;
|
|
53360
53482
|
if (resyncSignal <= lastResyncSignalRef.current) return;
|
|
53361
53483
|
lastResyncSignalRef.current = resyncSignal;
|
|
53362
53484
|
requestResync();
|
|
53363
53485
|
}, [enabled, resyncSignal, requestResync]);
|
|
53364
|
-
|
|
53486
|
+
useEffect87(() => {
|
|
53365
53487
|
if (!enabled || !dialogId || !isConnected) {
|
|
53366
53488
|
if (subscriptionRef.current) {
|
|
53367
53489
|
try {
|
|
@@ -53462,7 +53584,7 @@ function useJetStreamDialogSubscription({
|
|
|
53462
53584
|
}
|
|
53463
53585
|
|
|
53464
53586
|
// src/components/chat/hooks/use-nats-dialog-subscription.ts
|
|
53465
|
-
import { useEffect as
|
|
53587
|
+
import { useEffect as useEffect88, useRef as useRef71, useState as useState118 } from "react";
|
|
53466
53588
|
function useNatsDialogSubscription({
|
|
53467
53589
|
enabled,
|
|
53468
53590
|
dialogId,
|
|
@@ -53476,47 +53598,47 @@ function useNatsDialogSubscription({
|
|
|
53476
53598
|
clientConfig = {},
|
|
53477
53599
|
reconnectionBackoff
|
|
53478
53600
|
}) {
|
|
53479
|
-
const [isConnected, setIsConnected] =
|
|
53480
|
-
const [isSubscribed, setIsSubscribed] =
|
|
53481
|
-
const [reconnectionCount, setReconnectionCount] =
|
|
53601
|
+
const [isConnected, setIsConnected] = useState118(false);
|
|
53602
|
+
const [isSubscribed, setIsSubscribed] = useState118(false);
|
|
53603
|
+
const [reconnectionCount, setReconnectionCount] = useState118(0);
|
|
53482
53604
|
const clientRef = useRef71(null);
|
|
53483
53605
|
const subscriptionRefs = useRef71(/* @__PURE__ */ new Map());
|
|
53484
53606
|
const onEventRef = useRef71(onEvent);
|
|
53485
|
-
|
|
53607
|
+
useEffect88(() => {
|
|
53486
53608
|
onEventRef.current = onEvent;
|
|
53487
53609
|
}, [onEvent]);
|
|
53488
53610
|
const onConnectRef = useRef71(onConnect);
|
|
53489
|
-
|
|
53611
|
+
useEffect88(() => {
|
|
53490
53612
|
onConnectRef.current = onConnect;
|
|
53491
53613
|
}, [onConnect]);
|
|
53492
53614
|
const onDisconnectRef = useRef71(onDisconnect);
|
|
53493
|
-
|
|
53615
|
+
useEffect88(() => {
|
|
53494
53616
|
onDisconnectRef.current = onDisconnect;
|
|
53495
53617
|
}, [onDisconnect]);
|
|
53496
53618
|
const onSubscribedRef = useRef71(onSubscribed);
|
|
53497
|
-
|
|
53619
|
+
useEffect88(() => {
|
|
53498
53620
|
onSubscribedRef.current = onSubscribed;
|
|
53499
53621
|
}, [onSubscribed]);
|
|
53500
53622
|
const onBeforeReconnectRef = useRef71(onBeforeReconnect);
|
|
53501
|
-
|
|
53623
|
+
useEffect88(() => {
|
|
53502
53624
|
onBeforeReconnectRef.current = onBeforeReconnect;
|
|
53503
53625
|
}, [onBeforeReconnect]);
|
|
53504
53626
|
const hadConnectionBeforeRef = useRef71(false);
|
|
53505
53627
|
const getNatsWsUrlRef = useRef71(getNatsWsUrl);
|
|
53506
|
-
|
|
53628
|
+
useEffect88(() => {
|
|
53507
53629
|
getNatsWsUrlRef.current = getNatsWsUrl;
|
|
53508
53630
|
}, [getNatsWsUrl]);
|
|
53509
53631
|
const reconnectionBackoffRef = useRef71(reconnectionBackoff);
|
|
53510
|
-
|
|
53632
|
+
useEffect88(() => {
|
|
53511
53633
|
reconnectionBackoffRef.current = reconnectionBackoff;
|
|
53512
53634
|
}, [reconnectionBackoff]);
|
|
53513
53635
|
const clientConfigRef = useRef71(clientConfig);
|
|
53514
|
-
|
|
53636
|
+
useEffect88(() => {
|
|
53515
53637
|
clientConfigRef.current = clientConfig;
|
|
53516
53638
|
}, [clientConfig]);
|
|
53517
53639
|
const currentWsUrlRef = useRef71("");
|
|
53518
53640
|
const wsUrl = getNatsWsUrl();
|
|
53519
|
-
|
|
53641
|
+
useEffect88(() => {
|
|
53520
53642
|
if (!enabled || !wsUrl) {
|
|
53521
53643
|
if (currentWsUrlRef.current && clientRef.current) {
|
|
53522
53644
|
releaseClient(currentWsUrlRef.current);
|
|
@@ -53602,12 +53724,12 @@ function useNatsDialogSubscription({
|
|
|
53602
53724
|
topicsRef.current = topics;
|
|
53603
53725
|
const lastSubscribedDialogIdRef = useRef71(null);
|
|
53604
53726
|
const isConnectedRef = useRef71(isConnected);
|
|
53605
|
-
|
|
53727
|
+
useEffect88(() => {
|
|
53606
53728
|
isConnectedRef.current = isConnected;
|
|
53607
53729
|
}, [isConnected]);
|
|
53608
53730
|
const currentDialogIdRef = useRef71(null);
|
|
53609
53731
|
const abortControllerRef = useRef71(null);
|
|
53610
|
-
|
|
53732
|
+
useEffect88(() => {
|
|
53611
53733
|
currentDialogIdRef.current = dialogId;
|
|
53612
53734
|
if (!enabled || !dialogId) {
|
|
53613
53735
|
if (subscriptionRefs.current.size > 0) {
|
|
@@ -53688,7 +53810,7 @@ function useNatsDialogSubscription({
|
|
|
53688
53810
|
abortControllerRef.current = null;
|
|
53689
53811
|
};
|
|
53690
53812
|
}, [enabled, dialogId, topicsKey]);
|
|
53691
|
-
|
|
53813
|
+
useEffect88(() => {
|
|
53692
53814
|
if (!enabled || !currentDialogIdRef.current || !isConnected) {
|
|
53693
53815
|
return;
|
|
53694
53816
|
}
|
|
@@ -53738,7 +53860,7 @@ function buildNatsWsUrl(apiBaseUrl, options) {
|
|
|
53738
53860
|
}
|
|
53739
53861
|
|
|
53740
53862
|
// src/components/chat/hooks/use-slash-commands.ts
|
|
53741
|
-
import { useEffect as
|
|
53863
|
+
import { useEffect as useEffect89, useState as useState119 } from "react";
|
|
53742
53864
|
import { useQuery as useQuery3 } from "@tanstack/react-query";
|
|
53743
53865
|
async function fetchSlashCommands(prefix, signal, commandsUrl) {
|
|
53744
53866
|
try {
|
|
@@ -53755,9 +53877,9 @@ async function fetchSlashCommands(prefix, signal, commandsUrl) {
|
|
|
53755
53877
|
}
|
|
53756
53878
|
}
|
|
53757
53879
|
function useSlashCommands(prefix, commandsUrl) {
|
|
53758
|
-
const [commands, setCommands] =
|
|
53759
|
-
const [loading, setLoading] =
|
|
53760
|
-
|
|
53880
|
+
const [commands, setCommands] = useState119([]);
|
|
53881
|
+
const [loading, setLoading] = useState119(false);
|
|
53882
|
+
useEffect89(() => {
|
|
53761
53883
|
if (prefix == null) {
|
|
53762
53884
|
setCommands([]);
|
|
53763
53885
|
return;
|
|
@@ -53863,7 +53985,7 @@ function useEmptyStateConfig(emptyStateUrl, options) {
|
|
|
53863
53985
|
}
|
|
53864
53986
|
|
|
53865
53987
|
// src/components/chat/hooks/use-chat-attachments.ts
|
|
53866
|
-
import { useCallback as useCallback51, useMemo as useMemo50, useRef as useRef72, useState as
|
|
53988
|
+
import { useCallback as useCallback51, useMemo as useMemo50, useRef as useRef72, useState as useState120 } from "react";
|
|
53867
53989
|
import { fileTypeFromBlob } from "file-type";
|
|
53868
53990
|
var CHAT_ATTACHMENTS_BUCKET = "chat-attachments";
|
|
53869
53991
|
var CHAT_ATTACHMENTS_FOLDER = "chat";
|
|
@@ -53939,7 +54061,7 @@ function uploadWithProgress(url, file, token, onProgress, signal) {
|
|
|
53939
54061
|
function useChatAttachments() {
|
|
53940
54062
|
const runtime = useRequiredChatRuntime();
|
|
53941
54063
|
const uploadUrlEndpoint = runtime.endpoints.attachmentUploadUrl;
|
|
53942
|
-
const [attachments, setAttachments] =
|
|
54064
|
+
const [attachments, setAttachments] = useState120([]);
|
|
53943
54065
|
const controllersRef = useRef72(/* @__PURE__ */ new Map());
|
|
53944
54066
|
const updateOne = useCallback51((id, patch) => {
|
|
53945
54067
|
setAttachments((prev) => prev.map((a) => a.id === id ? { ...a, ...patch } : a));
|
|
@@ -54106,16 +54228,16 @@ function useChatAttachments() {
|
|
|
54106
54228
|
}
|
|
54107
54229
|
|
|
54108
54230
|
// src/components/chat/hooks/use-chat-attachment-image-gallery.tsx
|
|
54109
|
-
import { useCallback as useCallback52, useEffect as
|
|
54110
|
-
import { jsx as
|
|
54231
|
+
import { useCallback as useCallback52, useEffect as useEffect90, useRef as useRef73, useState as useState121 } from "react";
|
|
54232
|
+
import { jsx as jsx387 } from "react/jsx-runtime";
|
|
54111
54233
|
var CLOSED = { isOpen: false, images: [], initialIndex: 0 };
|
|
54112
54234
|
function useChatAttachmentImageGallery() {
|
|
54113
54235
|
const runtime = useRequiredChatRuntime();
|
|
54114
54236
|
const viewUrlPrefix = runtime.endpoints.attachmentViewUrlPrefix;
|
|
54115
54237
|
const panelRef = useRef73(null);
|
|
54116
|
-
const [state, setState] =
|
|
54238
|
+
const [state, setState] = useState121(CLOSED);
|
|
54117
54239
|
const handleClose = useCallback52(() => setState(CLOSED), []);
|
|
54118
|
-
|
|
54240
|
+
useEffect90(() => {
|
|
54119
54241
|
const root = panelRef.current;
|
|
54120
54242
|
if (!root) return;
|
|
54121
54243
|
const onClick = (ev) => {
|
|
@@ -54143,7 +54265,7 @@ function useChatAttachmentImageGallery() {
|
|
|
54143
54265
|
root.addEventListener("click", onClick);
|
|
54144
54266
|
return () => root.removeEventListener("click", onClick);
|
|
54145
54267
|
}, [viewUrlPrefix]);
|
|
54146
|
-
const modal = state.isOpen ? /* @__PURE__ */
|
|
54268
|
+
const modal = state.isOpen ? /* @__PURE__ */ jsx387(
|
|
54147
54269
|
ImageGalleryModal,
|
|
54148
54270
|
{
|
|
54149
54271
|
images: state.images,
|
|
@@ -54161,11 +54283,11 @@ function absolutize(prefix) {
|
|
|
54161
54283
|
}
|
|
54162
54284
|
|
|
54163
54285
|
// src/components/chat/hooks/use-close-on-navigation.ts
|
|
54164
|
-
import { useEffect as
|
|
54286
|
+
import { useEffect as useEffect91, useRef as useRef74 } from "react";
|
|
54165
54287
|
function useCloseOnNavigation(close, pathname) {
|
|
54166
54288
|
const prevPathnameRef = useRef74(null);
|
|
54167
54289
|
const initializedRef = useRef74(false);
|
|
54168
|
-
|
|
54290
|
+
useEffect91(() => {
|
|
54169
54291
|
if (!initializedRef.current) {
|
|
54170
54292
|
initializedRef.current = true;
|
|
54171
54293
|
prevPathnameRef.current = pathname;
|
|
@@ -54179,13 +54301,13 @@ function useCloseOnNavigation(close, pathname) {
|
|
|
54179
54301
|
}
|
|
54180
54302
|
|
|
54181
54303
|
// src/components/chat/hooks/use-chat.ts
|
|
54182
|
-
import { useState as
|
|
54304
|
+
import { useState as useState123, useCallback as useCallback54, useEffect as useEffect92, useRef as useRef76 } from "react";
|
|
54183
54305
|
|
|
54184
54306
|
// src/components/chat/hooks/use-sse.ts
|
|
54185
|
-
import { useState as
|
|
54307
|
+
import { useState as useState122, useCallback as useCallback53, useRef as useRef75 } from "react";
|
|
54186
54308
|
function useSSE({ useMock = true, debugMode = false, streamFn } = {}) {
|
|
54187
|
-
const [isStreaming, setIsStreaming] =
|
|
54188
|
-
const [error, setError] =
|
|
54309
|
+
const [isStreaming, setIsStreaming] = useState122(false);
|
|
54310
|
+
const [error, setError] = useState122(null);
|
|
54189
54311
|
const abortControllerRef = useRef75(null);
|
|
54190
54312
|
const fallbackStream = useCallback53(async function* () {
|
|
54191
54313
|
throw new Error(
|
|
@@ -54252,12 +54374,12 @@ function useChat({
|
|
|
54252
54374
|
initialMessages,
|
|
54253
54375
|
onMessagesChange
|
|
54254
54376
|
} = {}) {
|
|
54255
|
-
const [messages, setMessages] =
|
|
54256
|
-
const [isTyping, setIsTyping] =
|
|
54377
|
+
const [messages, setMessages] = useState123(() => initialMessages ?? []);
|
|
54378
|
+
const [isTyping, setIsTyping] = useState123(false);
|
|
54257
54379
|
const currentAssistantSegmentsRef = useRef76([]);
|
|
54258
54380
|
const onMessagesChangeRef = useRef76(onMessagesChange);
|
|
54259
54381
|
onMessagesChangeRef.current = onMessagesChange;
|
|
54260
|
-
|
|
54382
|
+
useEffect92(() => {
|
|
54261
54383
|
onMessagesChangeRef.current?.(messages);
|
|
54262
54384
|
}, [messages]);
|
|
54263
54385
|
const {
|
|
@@ -54794,7 +54916,7 @@ function pruneStaleChatConversationStorage(source) {
|
|
|
54794
54916
|
}
|
|
54795
54917
|
|
|
54796
54918
|
// src/components/chat/hooks/use-chat-history-hydration.ts
|
|
54797
|
-
import { useEffect as
|
|
54919
|
+
import { useEffect as useEffect93, useRef as useRef77, useState as useState124 } from "react";
|
|
54798
54920
|
function useChatHistoryHydration({
|
|
54799
54921
|
active,
|
|
54800
54922
|
source,
|
|
@@ -54804,9 +54926,9 @@ function useChatHistoryHydration({
|
|
|
54804
54926
|
hydrateMessages,
|
|
54805
54927
|
bumpMetaTick
|
|
54806
54928
|
}) {
|
|
54807
|
-
const [isHydratingHistory, setIsHydratingHistory] =
|
|
54929
|
+
const [isHydratingHistory, setIsHydratingHistory] = useState124(false);
|
|
54808
54930
|
const hydratedKeyRef = useRef77(null);
|
|
54809
|
-
|
|
54931
|
+
useEffect93(() => {
|
|
54810
54932
|
if (!active) return;
|
|
54811
54933
|
const conversationId = conversationIdRef.current;
|
|
54812
54934
|
if (!conversationId) return;
|
|
@@ -56942,7 +57064,7 @@ function createChatDialogStore(options = {}) {
|
|
|
56942
57064
|
}
|
|
56943
57065
|
|
|
56944
57066
|
// src/components/chat/stream/use-chat-stream-reducer.ts
|
|
56945
|
-
import { useCallback as useCallback55, useEffect as
|
|
57067
|
+
import { useCallback as useCallback55, useEffect as useEffect94, useMemo as useMemo51, useRef as useRef78, useSyncExternalStore } from "react";
|
|
56946
57068
|
|
|
56947
57069
|
// src/components/chat/stream/delta-batcher.ts
|
|
56948
57070
|
var DELTA_FLUSH_FALLBACK_MS = 50;
|
|
@@ -57038,7 +57160,7 @@ function useChatStreamReducer({
|
|
|
57038
57160
|
const getServerSnapshot = useCallback55(() => store.getServerSnapshot(), [store]);
|
|
57039
57161
|
const subscribe = useCallback55((listener) => store.subscribe(listener), [store]);
|
|
57040
57162
|
const state = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
|
|
57041
|
-
|
|
57163
|
+
useEffect94(() => store.retain(dialogId, side), [store, dialogId, side]);
|
|
57042
57164
|
const keyRef = useRef78({ dialogId, side });
|
|
57043
57165
|
if (keyRef.current.dialogId !== dialogId || keyRef.current.side !== side) {
|
|
57044
57166
|
keyRef.current = { dialogId, side };
|
|
@@ -57063,7 +57185,7 @@ function useChatStreamReducer({
|
|
|
57063
57185
|
},
|
|
57064
57186
|
[batcher, store, dialogId, side]
|
|
57065
57187
|
);
|
|
57066
|
-
|
|
57188
|
+
useEffect94(() => () => batcher.dispose(), [batcher]);
|
|
57067
57189
|
const mutate = useCallback55(
|
|
57068
57190
|
(fn) => store.mutate(dialogId, side, fn),
|
|
57069
57191
|
[store, dialogId, side]
|
|
@@ -57444,7 +57566,7 @@ var noopBumpMetaTick = () => {
|
|
|
57444
57566
|
};
|
|
57445
57567
|
|
|
57446
57568
|
// src/components/chat/hooks/use-nats-chat-adapter.ts
|
|
57447
|
-
import { useCallback as useCallback57, useEffect as
|
|
57569
|
+
import { useCallback as useCallback57, useEffect as useEffect95, useMemo as useMemo53, useRef as useRef80, useState as useState125 } from "react";
|
|
57448
57570
|
|
|
57449
57571
|
// src/chat-protocol/nats-decoder.ts
|
|
57450
57572
|
function normalizeToolCalls(raw) {
|
|
@@ -58423,7 +58545,7 @@ function useNatsChatAdapter(config, options = {}) {
|
|
|
58423
58545
|
modelLabel = null
|
|
58424
58546
|
} = config;
|
|
58425
58547
|
const isManagedMode = fetchDialogs !== void 0;
|
|
58426
|
-
const [internalDialogId, setInternalDialogId] =
|
|
58548
|
+
const [internalDialogId, setInternalDialogId] = useState125(null);
|
|
58427
58549
|
const dialogId = isManagedMode ? internalDialogId : controlledDialogId !== void 0 ? controlledDialogId : null;
|
|
58428
58550
|
const currentDialogIdRef = useRef80(dialogId);
|
|
58429
58551
|
currentDialogIdRef.current = dialogId;
|
|
@@ -58498,14 +58620,14 @@ function useNatsChatAdapter(config, options = {}) {
|
|
|
58498
58620
|
},
|
|
58499
58621
|
[applyEvent]
|
|
58500
58622
|
);
|
|
58501
|
-
const [dialogs, setDialogs] =
|
|
58502
|
-
const [dialogsNextCursor, setDialogsNextCursor] =
|
|
58503
|
-
const [isDialogsLoading, setIsDialogsLoading] =
|
|
58504
|
-
const [dialogsError, setDialogsError] =
|
|
58505
|
-
const [isCreatingDialog, setIsCreatingDialog] =
|
|
58506
|
-
const [messagesNextCursor, setMessagesNextCursor] =
|
|
58507
|
-
const [isMessagesLoading, setIsMessagesLoading] =
|
|
58508
|
-
const [connectionState, setConnectionState] =
|
|
58623
|
+
const [dialogs, setDialogs] = useState125([]);
|
|
58624
|
+
const [dialogsNextCursor, setDialogsNextCursor] = useState125(null);
|
|
58625
|
+
const [isDialogsLoading, setIsDialogsLoading] = useState125(false);
|
|
58626
|
+
const [dialogsError, setDialogsError] = useState125(false);
|
|
58627
|
+
const [isCreatingDialog, setIsCreatingDialog] = useState125(false);
|
|
58628
|
+
const [messagesNextCursor, setMessagesNextCursor] = useState125(null);
|
|
58629
|
+
const [isMessagesLoading, setIsMessagesLoading] = useState125(false);
|
|
58630
|
+
const [connectionState, setConnectionState] = useState125("connecting");
|
|
58509
58631
|
const hasConnectedOnceRef = useRef80(false);
|
|
58510
58632
|
const {
|
|
58511
58633
|
processChunk: catchupProcessChunk,
|
|
@@ -58583,7 +58705,7 @@ function useNatsChatAdapter(config, options = {}) {
|
|
|
58583
58705
|
]
|
|
58584
58706
|
);
|
|
58585
58707
|
const prevDialogIdRef = useRef80(void 0);
|
|
58586
|
-
|
|
58708
|
+
useEffect95(() => {
|
|
58587
58709
|
if (prevDialogIdRef.current === dialogId) return;
|
|
58588
58710
|
prevDialogIdRef.current = dialogId;
|
|
58589
58711
|
historyLoadSeqRef.current += 1;
|
|
@@ -58596,7 +58718,7 @@ function useNatsChatAdapter(config, options = {}) {
|
|
|
58596
58718
|
if (!active || !dialogId) return;
|
|
58597
58719
|
void loadDialogHistory(dialogId);
|
|
58598
58720
|
}, [active, dialogId, dialogKey, loadDialogHistory]);
|
|
58599
|
-
|
|
58721
|
+
useEffect95(() => {
|
|
58600
58722
|
if (!active || !dialogId) return;
|
|
58601
58723
|
const store = storeRef.current;
|
|
58602
58724
|
store.mutate(dialogId, DEFAULT_DIALOG_SIDE, (r) => r.adjustAgentBusySuppression(1));
|
|
@@ -58659,7 +58781,7 @@ function useNatsChatAdapter(config, options = {}) {
|
|
|
58659
58781
|
})();
|
|
58660
58782
|
}
|
|
58661
58783
|
});
|
|
58662
|
-
|
|
58784
|
+
useEffect95(() => {
|
|
58663
58785
|
if (!active || !dialogId) {
|
|
58664
58786
|
setConnectionState("connected");
|
|
58665
58787
|
return;
|
|
@@ -58698,7 +58820,7 @@ function useNatsChatAdapter(config, options = {}) {
|
|
|
58698
58820
|
const reloadDialogs = useCallback57(() => {
|
|
58699
58821
|
void loadDialogsPage();
|
|
58700
58822
|
}, [loadDialogsPage]);
|
|
58701
|
-
|
|
58823
|
+
useEffect95(() => {
|
|
58702
58824
|
if (!fetchDialogs) return;
|
|
58703
58825
|
if (!active) return;
|
|
58704
58826
|
if (initialDialogsLoadedRef.current) return;
|
|
@@ -59362,19 +59484,19 @@ function buildStreamFrames(messages) {
|
|
|
59362
59484
|
|
|
59363
59485
|
// src/components/chat/embeddable-chat.tsx
|
|
59364
59486
|
init_cn();
|
|
59365
|
-
import { useCallback as useCallback60, useEffect as
|
|
59487
|
+
import { useCallback as useCallback60, useEffect as useEffect96, useMemo as useMemo56, useRef as useRef83, useState as useState127 } from "react";
|
|
59366
59488
|
import * as DialogPrimitive5 from "@radix-ui/react-dialog";
|
|
59367
59489
|
import { usePreventScroll as usePreventScroll5 } from "@react-aria/overlays";
|
|
59368
59490
|
import { isIOS } from "@react-aria/utils";
|
|
59369
59491
|
|
|
59370
59492
|
// node_modules/@radix-ui/react-visually-hidden/dist/index.mjs
|
|
59371
|
-
import * as
|
|
59493
|
+
import * as React151 from "react";
|
|
59372
59494
|
|
|
59373
59495
|
// node_modules/@radix-ui/react-primitive/dist/index.mjs
|
|
59374
|
-
import * as
|
|
59496
|
+
import * as React150 from "react";
|
|
59375
59497
|
import * as ReactDOM2 from "react-dom";
|
|
59376
59498
|
import { createSlot } from "@radix-ui/react-slot";
|
|
59377
|
-
import { jsx as
|
|
59499
|
+
import { jsx as jsx388 } from "react/jsx-runtime";
|
|
59378
59500
|
var __defProp3 = Object.defineProperty;
|
|
59379
59501
|
var __name3 = (target, value) => __defProp3(target, "name", { value, configurable: true });
|
|
59380
59502
|
var NODES = [
|
|
@@ -59398,13 +59520,13 @@ var NODES = [
|
|
|
59398
59520
|
];
|
|
59399
59521
|
var Primitive = NODES.reduce((primitive, node) => {
|
|
59400
59522
|
const Slot2 = createSlot(`Primitive.${node}`);
|
|
59401
|
-
const Node2 =
|
|
59523
|
+
const Node2 = React150.forwardRef((props, forwardedRef) => {
|
|
59402
59524
|
const { asChild, ...primitiveProps } = props;
|
|
59403
59525
|
const Comp = asChild ? Slot2 : node;
|
|
59404
59526
|
if (typeof window !== "undefined") {
|
|
59405
59527
|
window[/* @__PURE__ */ Symbol.for("radix-ui")] = true;
|
|
59406
59528
|
}
|
|
59407
|
-
return /* @__PURE__ */
|
|
59529
|
+
return /* @__PURE__ */ jsx388(Comp, { ...primitiveProps, ref: forwardedRef });
|
|
59408
59530
|
});
|
|
59409
59531
|
Node2.displayName = `Primitive.${node}`;
|
|
59410
59532
|
return { ...primitive, [node]: Node2 };
|
|
@@ -59415,7 +59537,7 @@ function dispatchDiscreteCustomEvent(target, event) {
|
|
|
59415
59537
|
__name3(dispatchDiscreteCustomEvent, "dispatchDiscreteCustomEvent");
|
|
59416
59538
|
|
|
59417
59539
|
// node_modules/@radix-ui/react-visually-hidden/dist/index.mjs
|
|
59418
|
-
import { jsx as
|
|
59540
|
+
import { jsx as jsx389 } from "react/jsx-runtime";
|
|
59419
59541
|
var __defProp4 = Object.defineProperty;
|
|
59420
59542
|
var __name4 = (target, value) => __defProp4(target, "name", { value, configurable: true });
|
|
59421
59543
|
var VISUALLY_HIDDEN_STYLES = Object.freeze({
|
|
@@ -59431,9 +59553,9 @@ var VISUALLY_HIDDEN_STYLES = Object.freeze({
|
|
|
59431
59553
|
whiteSpace: "nowrap",
|
|
59432
59554
|
wordWrap: "normal"
|
|
59433
59555
|
});
|
|
59434
|
-
var VisuallyHidden = /* @__PURE__ */
|
|
59556
|
+
var VisuallyHidden = /* @__PURE__ */ React151.forwardRef(
|
|
59435
59557
|
/* @__PURE__ */ __name4(function VisuallyHidden2(props, forwardedRef) {
|
|
59436
|
-
return /* @__PURE__ */
|
|
59558
|
+
return /* @__PURE__ */ jsx389(
|
|
59437
59559
|
Primitive.span,
|
|
59438
59560
|
{
|
|
59439
59561
|
...props,
|
|
@@ -59449,7 +59571,7 @@ init_button2();
|
|
|
59449
59571
|
import { FileText as FileText8, MessageSquare as MessageSquare3 } from "lucide-react";
|
|
59450
59572
|
|
|
59451
59573
|
// src/components/chat/hooks/use-chat-dialog-manager.ts
|
|
59452
|
-
import { useCallback as useCallback59, useMemo as useMemo55, useRef as useRef82, useState as
|
|
59574
|
+
import { useCallback as useCallback59, useMemo as useMemo55, useRef as useRef82, useState as useState126 } from "react";
|
|
59453
59575
|
function useChatDialogManager({
|
|
59454
59576
|
dialogs,
|
|
59455
59577
|
activeDialogId,
|
|
@@ -59460,8 +59582,8 @@ function useChatDialogManager({
|
|
|
59460
59582
|
fetchArchivedDialogs,
|
|
59461
59583
|
unarchiveDialog
|
|
59462
59584
|
}) {
|
|
59463
|
-
const [renameTarget, setRenameTarget] =
|
|
59464
|
-
const [archiveTarget, setArchiveTarget] =
|
|
59585
|
+
const [renameTarget, setRenameTarget] = useState126(null);
|
|
59586
|
+
const [archiveTarget, setArchiveTarget] = useState126(null);
|
|
59465
59587
|
const handleConfirmRename = useCallback59(
|
|
59466
59588
|
(name) => {
|
|
59467
59589
|
if (renameTarget) void renameDialog(renameTarget.id, name);
|
|
@@ -59484,11 +59606,11 @@ function useChatDialogManager({
|
|
|
59484
59606
|
}
|
|
59485
59607
|
setArchiveTarget(null);
|
|
59486
59608
|
}, [archiveTarget, archiveDialog, activeDialogId, clearMessages]);
|
|
59487
|
-
const [archiveOpen, setArchiveOpen] =
|
|
59488
|
-
const [archivedDialogs, setArchivedDialogs] =
|
|
59489
|
-
const [archivedCursor, setArchivedCursor] =
|
|
59490
|
-
const [archivedLoading, setArchivedLoading] =
|
|
59491
|
-
const [archivedPending, setArchivedPending] =
|
|
59609
|
+
const [archiveOpen, setArchiveOpen] = useState126(false);
|
|
59610
|
+
const [archivedDialogs, setArchivedDialogs] = useState126([]);
|
|
59611
|
+
const [archivedCursor, setArchivedCursor] = useState126(null);
|
|
59612
|
+
const [archivedLoading, setArchivedLoading] = useState126(false);
|
|
59613
|
+
const [archivedPending, setArchivedPending] = useState126(false);
|
|
59492
59614
|
const archivedRequestIdRef = useRef82(0);
|
|
59493
59615
|
const loadArchivedPage = useCallback59(
|
|
59494
59616
|
async (cursor) => {
|
|
@@ -59530,10 +59652,10 @@ function useChatDialogManager({
|
|
|
59530
59652
|
void loadArchivedPage();
|
|
59531
59653
|
}, [loadArchivedPage]);
|
|
59532
59654
|
const closeArchive = useCallback59(() => setArchiveOpen(false), []);
|
|
59533
|
-
const [viewingArchivedId, setViewingArchivedId] =
|
|
59655
|
+
const [viewingArchivedId, setViewingArchivedId] = useState126(
|
|
59534
59656
|
null
|
|
59535
59657
|
);
|
|
59536
|
-
const [openingDialogId, setOpeningDialogId] =
|
|
59658
|
+
const [openingDialogId, setOpeningDialogId] = useState126(null);
|
|
59537
59659
|
const handleSelectDialog = useCallback59(
|
|
59538
59660
|
(id) => {
|
|
59539
59661
|
setViewingArchivedId(null);
|
|
@@ -59552,7 +59674,7 @@ function useChatDialogManager({
|
|
|
59552
59674
|
},
|
|
59553
59675
|
[selectDialog]
|
|
59554
59676
|
);
|
|
59555
|
-
const [restoreTarget, setRestoreTarget] =
|
|
59677
|
+
const [restoreTarget, setRestoreTarget] = useState126(null);
|
|
59556
59678
|
const handleConfirmRestore = useCallback59(async () => {
|
|
59557
59679
|
if (restoreTarget) {
|
|
59558
59680
|
try {
|
|
@@ -59623,7 +59745,7 @@ function useChatDialogManager({
|
|
|
59623
59745
|
|
|
59624
59746
|
// src/components/chat/embeddable-chat.tsx
|
|
59625
59747
|
init_next_navigation();
|
|
59626
|
-
import { Fragment as Fragment89, jsx as
|
|
59748
|
+
import { Fragment as Fragment89, jsx as jsx390, jsxs as jsxs309 } from "react/jsx-runtime";
|
|
59627
59749
|
var DRAWER_DEFAULT_WIDTH_RATIO = 0.5;
|
|
59628
59750
|
var DRAWER_WIDTH_KEY = "mingo-chat-width-v3";
|
|
59629
59751
|
var DRAWER_DEFAULT_WIDTH_PX = 750;
|
|
@@ -59645,9 +59767,9 @@ var SPLIT_MIN_WIDTH = HISTORY_RAIL_WIDTH + CHAT_BLOCK_MIN_WIDTH;
|
|
|
59645
59767
|
var RAIL_COLLAPSED_STORAGE_KEY = "mingo-chat-history-collapsed";
|
|
59646
59768
|
var RAIL_ANIM_MS = 320;
|
|
59647
59769
|
function useRailPresence(open) {
|
|
59648
|
-
const [mounted, setMounted] =
|
|
59649
|
-
const [active, setActive] =
|
|
59650
|
-
|
|
59770
|
+
const [mounted, setMounted] = useState127(open);
|
|
59771
|
+
const [active, setActive] = useState127(false);
|
|
59772
|
+
useEffect96(() => {
|
|
59651
59773
|
if (open) {
|
|
59652
59774
|
setMounted(true);
|
|
59653
59775
|
let raf2 = 0;
|
|
@@ -59671,7 +59793,7 @@ function RailSlot({
|
|
|
59671
59793
|
innerClassName,
|
|
59672
59794
|
children
|
|
59673
59795
|
}) {
|
|
59674
|
-
return /* @__PURE__ */
|
|
59796
|
+
return /* @__PURE__ */ jsx390(
|
|
59675
59797
|
"div",
|
|
59676
59798
|
{
|
|
59677
59799
|
className: cn(
|
|
@@ -59680,7 +59802,7 @@ function RailSlot({
|
|
|
59680
59802
|
"shrink-0 overflow-hidden border-r border-ods-border transition-[width,opacity] ease-out",
|
|
59681
59803
|
active ? "w-80 opacity-100 duration-[240ms]" : "w-0 opacity-0 duration-[300ms]"
|
|
59682
59804
|
),
|
|
59683
|
-
children: /* @__PURE__ */
|
|
59805
|
+
children: /* @__PURE__ */ jsx390("div", { className: cn("h-full w-80", innerClassName), children })
|
|
59684
59806
|
}
|
|
59685
59807
|
);
|
|
59686
59808
|
}
|
|
@@ -59737,7 +59859,7 @@ function SourceChip({
|
|
|
59737
59859
|
sourceRowCtxFromRuntime(runtime, { baseRoute, chipBasePlatform })
|
|
59738
59860
|
);
|
|
59739
59861
|
const Icon2 = cta.icon;
|
|
59740
|
-
const icon = /* @__PURE__ */
|
|
59862
|
+
const icon = /* @__PURE__ */ jsx390(Icon2, { className: "h-3.5 w-3.5" });
|
|
59741
59863
|
const chipClass = chatChipClass({ tone: "secondary" });
|
|
59742
59864
|
const decideTab = (href, targetPlatform) => computeIsNewTab(runtime, href, targetPlatform);
|
|
59743
59865
|
if (src.items && src.items.length > 0) {
|
|
@@ -59757,22 +59879,22 @@ function SourceChip({
|
|
|
59757
59879
|
const ItemIcon = itemCta.icon;
|
|
59758
59880
|
return {
|
|
59759
59881
|
label: item.name,
|
|
59760
|
-
icon: /* @__PURE__ */
|
|
59882
|
+
icon: /* @__PURE__ */ jsx390(ItemIcon, { className: "h-3.5 w-3.5" }),
|
|
59761
59883
|
href: itemCta.href ?? void 0,
|
|
59762
59884
|
targetPlatform: itemCta.targetPlatform,
|
|
59763
59885
|
path: item.path ?? null,
|
|
59764
59886
|
secondaryAction: onDiscuss && itemCta.askable && itemCta.chatRef ? {
|
|
59765
|
-
icon: /* @__PURE__ */
|
|
59887
|
+
icon: /* @__PURE__ */ jsx390(MessageSquare3, {}),
|
|
59766
59888
|
label: `Ask about ${item.name}`,
|
|
59767
59889
|
onClick: () => onDiscuss(itemCta.chatRef)
|
|
59768
59890
|
} : void 0
|
|
59769
59891
|
};
|
|
59770
59892
|
});
|
|
59771
|
-
return /* @__PURE__ */
|
|
59893
|
+
return /* @__PURE__ */ jsx390(
|
|
59772
59894
|
HoverDropdown,
|
|
59773
59895
|
{
|
|
59774
59896
|
items: dropdownItems,
|
|
59775
|
-
renderAnchor: ({ href, targetPlatform, path, className, children }) => /* @__PURE__ */
|
|
59897
|
+
renderAnchor: ({ href, targetPlatform, path, className, children }) => /* @__PURE__ */ jsx390(
|
|
59776
59898
|
NavLinkAnchorViaRuntime,
|
|
59777
59899
|
{
|
|
59778
59900
|
href,
|
|
@@ -59782,9 +59904,9 @@ function SourceChip({
|
|
|
59782
59904
|
children
|
|
59783
59905
|
}
|
|
59784
59906
|
),
|
|
59785
|
-
children: /* @__PURE__ */
|
|
59907
|
+
children: /* @__PURE__ */ jsxs309("span", { className: `${chipClass} cursor-pointer`, children: [
|
|
59786
59908
|
icon,
|
|
59787
|
-
/* @__PURE__ */
|
|
59909
|
+
/* @__PURE__ */ jsxs309("span", { className: "truncate max-w-[160px]", children: [
|
|
59788
59910
|
"[",
|
|
59789
59911
|
src.index,
|
|
59790
59912
|
"] ",
|
|
@@ -59795,18 +59917,18 @@ function SourceChip({
|
|
|
59795
59917
|
);
|
|
59796
59918
|
}
|
|
59797
59919
|
const displayName = src.name || formatRelativePath(src.path);
|
|
59798
|
-
const chipBody = (label) => /* @__PURE__ */
|
|
59920
|
+
const chipBody = (label) => /* @__PURE__ */ jsxs309(Fragment89, { children: [
|
|
59799
59921
|
icon,
|
|
59800
|
-
/* @__PURE__ */
|
|
59922
|
+
/* @__PURE__ */ jsxs309("span", { className: "truncate max-w-[160px]", children: [
|
|
59801
59923
|
"[",
|
|
59802
59924
|
src.index,
|
|
59803
59925
|
"] ",
|
|
59804
59926
|
label
|
|
59805
59927
|
] })
|
|
59806
59928
|
] });
|
|
59807
|
-
const wrapChip = (clickable) => /* @__PURE__ */
|
|
59929
|
+
const wrapChip = (clickable) => /* @__PURE__ */ jsxs309("span", { className: "inline-flex items-center", children: [
|
|
59808
59930
|
clickable,
|
|
59809
|
-
/* @__PURE__ */
|
|
59931
|
+
/* @__PURE__ */ jsx390(
|
|
59810
59932
|
SourceActionButton,
|
|
59811
59933
|
{
|
|
59812
59934
|
chatRef: cta.chatRef,
|
|
@@ -59824,7 +59946,7 @@ function SourceChip({
|
|
|
59824
59946
|
const resolvedHref = resolveHrefForRuntime(cta.href, runtime);
|
|
59825
59947
|
const isNewTab = decideTab(resolvedHref, cta.targetPlatform ?? null);
|
|
59826
59948
|
return wrapChip(
|
|
59827
|
-
/* @__PURE__ */
|
|
59949
|
+
/* @__PURE__ */ jsx390(
|
|
59828
59950
|
"a",
|
|
59829
59951
|
{
|
|
59830
59952
|
href: resolvedHref,
|
|
@@ -59840,7 +59962,7 @@ function SourceChip({
|
|
|
59840
59962
|
const resolvedHref = resolveHrefForRuntime(cta.href, runtime);
|
|
59841
59963
|
const isNewTab = decideTab(resolvedHref, cta.targetPlatform ?? null);
|
|
59842
59964
|
return wrapChip(
|
|
59843
|
-
/* @__PURE__ */
|
|
59965
|
+
/* @__PURE__ */ jsx390(
|
|
59844
59966
|
"a",
|
|
59845
59967
|
{
|
|
59846
59968
|
href: resolvedHref,
|
|
@@ -59854,7 +59976,7 @@ function SourceChip({
|
|
|
59854
59976
|
);
|
|
59855
59977
|
}
|
|
59856
59978
|
return wrapChip(
|
|
59857
|
-
/* @__PURE__ */
|
|
59979
|
+
/* @__PURE__ */ jsx390("span", { className: `${chipClass} cursor-default`, title: displayName, children: chipBody(displayName) })
|
|
59858
59980
|
);
|
|
59859
59981
|
}
|
|
59860
59982
|
function SourceChips({
|
|
@@ -59865,13 +59987,13 @@ function SourceChips({
|
|
|
59865
59987
|
onClose,
|
|
59866
59988
|
onDiscuss
|
|
59867
59989
|
}) {
|
|
59868
|
-
const [expanded, setExpanded] =
|
|
59990
|
+
const [expanded, setExpanded] = useState127(false);
|
|
59869
59991
|
if (cited.length === 0) {
|
|
59870
59992
|
const fallback = uncited.slice(0, FALLBACK_TOP_RETRIEVED);
|
|
59871
59993
|
if (fallback.length === 0) return null;
|
|
59872
|
-
return /* @__PURE__ */
|
|
59873
|
-
/* @__PURE__ */
|
|
59874
|
-
/* @__PURE__ */
|
|
59994
|
+
return /* @__PURE__ */ jsxs309("div", { className: "flex flex-col gap-1.5 mt-2 pt-2 border-t border-ods-border", children: [
|
|
59995
|
+
/* @__PURE__ */ jsx390("span", { className: "text-h6 text-ods-text-muted uppercase", children: "Top retrieved sources" }),
|
|
59996
|
+
/* @__PURE__ */ jsx390("div", { className: "flex flex-wrap gap-1.5", children: fallback.map((src) => /* @__PURE__ */ jsx390(
|
|
59875
59997
|
SourceChip,
|
|
59876
59998
|
{
|
|
59877
59999
|
src,
|
|
@@ -59886,14 +60008,14 @@ function SourceChips({
|
|
|
59886
60008
|
}
|
|
59887
60009
|
const hiddenCount = uncited.length;
|
|
59888
60010
|
const hasOverflow = hiddenCount > 0;
|
|
59889
|
-
return /* @__PURE__ */
|
|
59890
|
-
/* @__PURE__ */
|
|
59891
|
-
/* @__PURE__ */
|
|
60011
|
+
return /* @__PURE__ */ jsxs309("div", { className: "flex flex-col gap-1.5 mt-2 pt-2 border-t border-ods-border", children: [
|
|
60012
|
+
/* @__PURE__ */ jsx390("span", { className: "text-h6 text-ods-text-muted uppercase", children: "Sources" }),
|
|
60013
|
+
/* @__PURE__ */ jsxs309(
|
|
59892
60014
|
"div",
|
|
59893
60015
|
{
|
|
59894
60016
|
className: `flex flex-wrap gap-1.5 ${expanded ? "max-h-[200px] overflow-y-auto overscroll-contain" : ""}`,
|
|
59895
60017
|
children: [
|
|
59896
|
-
cited.map((src) => /* @__PURE__ */
|
|
60018
|
+
cited.map((src) => /* @__PURE__ */ jsx390(
|
|
59897
60019
|
SourceChip,
|
|
59898
60020
|
{
|
|
59899
60021
|
src,
|
|
@@ -59904,7 +60026,7 @@ function SourceChips({
|
|
|
59904
60026
|
},
|
|
59905
60027
|
src.index
|
|
59906
60028
|
)),
|
|
59907
|
-
expanded && uncited.map((src) => /* @__PURE__ */
|
|
60029
|
+
expanded && uncited.map((src) => /* @__PURE__ */ jsx390(
|
|
59908
60030
|
SourceChip,
|
|
59909
60031
|
{
|
|
59910
60032
|
src,
|
|
@@ -59915,7 +60037,7 @@ function SourceChips({
|
|
|
59915
60037
|
},
|
|
59916
60038
|
src.index
|
|
59917
60039
|
)),
|
|
59918
|
-
hasOverflow && /* @__PURE__ */
|
|
60040
|
+
hasOverflow && /* @__PURE__ */ jsx390(
|
|
59919
60041
|
"button",
|
|
59920
60042
|
{
|
|
59921
60043
|
onClick: () => setExpanded(!expanded),
|
|
@@ -59931,7 +60053,7 @@ function SourceChips({
|
|
|
59931
60053
|
] });
|
|
59932
60054
|
}
|
|
59933
60055
|
function EmbeddableChat(props) {
|
|
59934
|
-
return /* @__PURE__ */
|
|
60056
|
+
return /* @__PURE__ */ jsx390(EmbeddableChatInner, { ...props });
|
|
59935
60057
|
}
|
|
59936
60058
|
function EmbeddableChatInner({
|
|
59937
60059
|
baseRoute,
|
|
@@ -59974,7 +60096,7 @@ function EmbeddableChatInner({
|
|
|
59974
60096
|
const commandsUrl = runtime.endpoints.commandsUrl;
|
|
59975
60097
|
const { attachmentsEnabled, user: identityUser } = useChatIdentity();
|
|
59976
60098
|
const viewUrlPrefix = runtime.endpoints.attachmentViewUrlPrefix;
|
|
59977
|
-
|
|
60099
|
+
useEffect96(() => {
|
|
59978
60100
|
if (process.env.NODE_ENV !== "production") {
|
|
59979
60101
|
const hasOpen = open !== void 0;
|
|
59980
60102
|
const hasHandler = onOpenChange !== void 0;
|
|
@@ -59990,13 +60112,13 @@ function EmbeddableChatInner({
|
|
|
59990
60112
|
defaultProp: defaultOpen ?? false,
|
|
59991
60113
|
onChange: onOpenChange
|
|
59992
60114
|
});
|
|
59993
|
-
const [autoFocusInput] =
|
|
60115
|
+
const [autoFocusInput] = useState127(() => {
|
|
59994
60116
|
if (typeof window === "undefined") return false;
|
|
59995
60117
|
return !window.matchMedia("(pointer: coarse)").matches;
|
|
59996
60118
|
});
|
|
59997
60119
|
usePreventScroll5({ isDisabled: !isOpen || shellLess });
|
|
59998
60120
|
const navigatingAwayRef = useRef83(false);
|
|
59999
|
-
|
|
60121
|
+
useEffect96(() => {
|
|
60000
60122
|
if (!isOpen) return;
|
|
60001
60123
|
if (shellLess) return;
|
|
60002
60124
|
if (typeof window === "undefined") return;
|
|
@@ -60023,7 +60145,7 @@ function EmbeddableChatInner({
|
|
|
60023
60145
|
};
|
|
60024
60146
|
}, [isOpen, shellLess]);
|
|
60025
60147
|
const chatInputRef = useRef83(null);
|
|
60026
|
-
const [quickActionPreview, setQuickActionPreview] =
|
|
60148
|
+
const [quickActionPreview, setQuickActionPreview] = useState127(null);
|
|
60027
60149
|
const slashCommandsProp = useMemo56(
|
|
60028
60150
|
() => ({
|
|
60029
60151
|
fetchCommands: (prefix, signal) => fetchSlashCommands(prefix, signal, commandsUrl),
|
|
@@ -60066,7 +60188,7 @@ function EmbeddableChatInner({
|
|
|
60066
60188
|
}, [mingoState, mingoDialogCapabilities, effectiveModes]);
|
|
60067
60189
|
const hasMingoMode = !!effectiveModes.mingo || !!mingoState;
|
|
60068
60190
|
const initialActiveMode = controlledActiveMode ?? defaultActiveMode ?? (effectiveModes.guide ? "guide" : "mingo");
|
|
60069
|
-
const [uncontrolledActiveMode, setUncontrolledActiveMode] =
|
|
60191
|
+
const [uncontrolledActiveMode, setUncontrolledActiveMode] = useState127(initialActiveMode);
|
|
60070
60192
|
const activeMode = controlledActiveMode ?? uncontrolledActiveMode;
|
|
60071
60193
|
const handleActiveModeChange = useCallback60(
|
|
60072
60194
|
(next) => {
|
|
@@ -60129,7 +60251,7 @@ function EmbeddableChatInner({
|
|
|
60129
60251
|
loadMoreMessages
|
|
60130
60252
|
} = useUnifiedChat({ modes: effectiveModes, activeMode, mingoStateOverride: mingoState });
|
|
60131
60253
|
const guidePromptSentRef = useRef83(false);
|
|
60132
|
-
|
|
60254
|
+
useEffect96(() => {
|
|
60133
60255
|
if (!guidePendingPrompt) {
|
|
60134
60256
|
guidePromptSentRef.current = false;
|
|
60135
60257
|
return;
|
|
@@ -60150,15 +60272,15 @@ function EmbeddableChatInner({
|
|
|
60150
60272
|
const { panelRef: galleryPanelRef, modal: galleryModal } = useChatAttachmentImageGallery();
|
|
60151
60273
|
const contextMaxItems = contextPicker?.maxItems ?? 10;
|
|
60152
60274
|
const contextPickerForMode = activeMode === "mingo" ? contextPicker : void 0;
|
|
60153
|
-
const [contextItems, setContextItems] =
|
|
60154
|
-
const [contextPickerOpen, setContextPickerOpen] =
|
|
60155
|
-
const [mentionQuery, setMentionQuery] =
|
|
60275
|
+
const [contextItems, setContextItems] = useState127([]);
|
|
60276
|
+
const [contextPickerOpen, setContextPickerOpen] = useState127(false);
|
|
60277
|
+
const [mentionQuery, setMentionQuery] = useState127(null);
|
|
60156
60278
|
const mentionActiveRef = useRef83(false);
|
|
60157
|
-
|
|
60279
|
+
useEffect96(() => {
|
|
60158
60280
|
mentionActiveRef.current = mentionQuery !== null;
|
|
60159
60281
|
}, [mentionQuery]);
|
|
60160
60282
|
const mentionKeysRef = useRef83(/* @__PURE__ */ new Set());
|
|
60161
|
-
|
|
60283
|
+
useEffect96(() => {
|
|
60162
60284
|
setContextItems([]);
|
|
60163
60285
|
setMentionQuery(null);
|
|
60164
60286
|
mentionKeysRef.current.clear();
|
|
@@ -60251,7 +60373,7 @@ function EmbeddableChatInner({
|
|
|
60251
60373
|
[discussRef, displayRef, resolvedBaseRoute, chipBasePlatform, extras]
|
|
60252
60374
|
);
|
|
60253
60375
|
const mingoAssistantIcon = useMemo56(
|
|
60254
|
-
() => effectiveAssistantIcon ? /* @__PURE__ */
|
|
60376
|
+
() => effectiveAssistantIcon ? /* @__PURE__ */ jsx390(EntityIcon, { icon: effectiveAssistantIcon, size: 24 }) : /* @__PURE__ */ jsx390(MingoIcon, { className: "h-6 w-6", cornerColor: "var(--ods-flamingo-cyan-base)" }),
|
|
60255
60377
|
[effectiveAssistantIcon]
|
|
60256
60378
|
);
|
|
60257
60379
|
const timestampCacheRef = useRef83(/* @__PURE__ */ new Map());
|
|
@@ -60392,7 +60514,7 @@ function EmbeddableChatInner({
|
|
|
60392
60514
|
});
|
|
60393
60515
|
const handleOpen = useCallback60(() => setIsOpen(true), [setIsOpen]);
|
|
60394
60516
|
useCloseOnNavigation(handleNavigationClose, null);
|
|
60395
|
-
|
|
60517
|
+
useEffect96(() => {
|
|
60396
60518
|
const handler = (e) => {
|
|
60397
60519
|
const detail = e.detail;
|
|
60398
60520
|
if (!detail || detail.source !== source) return;
|
|
@@ -60402,7 +60524,7 @@ function EmbeddableChatInner({
|
|
|
60402
60524
|
window.addEventListener("ask-ai:open-with-ref", handler);
|
|
60403
60525
|
return () => window.removeEventListener("ask-ai:open-with-ref", handler);
|
|
60404
60526
|
}, [source, discussRef, setIsOpen]);
|
|
60405
|
-
|
|
60527
|
+
useEffect96(() => {
|
|
60406
60528
|
const handler = (e) => {
|
|
60407
60529
|
const detail = e.detail;
|
|
60408
60530
|
if (!detail || detail.source !== source) return;
|
|
@@ -60419,7 +60541,7 @@ function EmbeddableChatInner({
|
|
|
60419
60541
|
const contentViewKey = hasConversation ? "conversation" : activeMode;
|
|
60420
60542
|
const isGuideEmpty = !hasConversation && activeMode === "guide";
|
|
60421
60543
|
const isQuickActionEmpty = !hasConversation && (activeMode === "guide" || activeMode === "mingo");
|
|
60422
|
-
|
|
60544
|
+
useEffect96(() => {
|
|
60423
60545
|
if (!isQuickActionEmpty) setQuickActionPreview(null);
|
|
60424
60546
|
}, [isQuickActionEmpty]);
|
|
60425
60547
|
const guideCanReturnToMingo = isGuideEmpty && hasMingoMode;
|
|
@@ -60461,11 +60583,11 @@ function EmbeddableChatInner({
|
|
|
60461
60583
|
const uncited = sources.filter((s) => !seenOrder.has(s.index));
|
|
60462
60584
|
return { cited, uncited };
|
|
60463
60585
|
}, [lastAssistantMsg, chatLoading]);
|
|
60464
|
-
const [portalHost, setPortalHost] =
|
|
60465
|
-
const [panelBoundary, setPanelBoundary] =
|
|
60466
|
-
const [panelWidth, setPanelWidth] =
|
|
60586
|
+
const [portalHost, setPortalHost] = useState127(null);
|
|
60587
|
+
const [panelBoundary, setPanelBoundary] = useState127(null);
|
|
60588
|
+
const [panelWidth, setPanelWidth] = useState127(0);
|
|
60467
60589
|
const panelMeasureRef = useRef83(null);
|
|
60468
|
-
|
|
60590
|
+
useEffect96(() => {
|
|
60469
60591
|
const el = panelMeasureRef.current;
|
|
60470
60592
|
if (!el || typeof ResizeObserver === "undefined") return;
|
|
60471
60593
|
const ro = new ResizeObserver((entries) => {
|
|
@@ -60480,8 +60602,8 @@ function EmbeddableChatInner({
|
|
|
60480
60602
|
panelMeasureRef.current = node;
|
|
60481
60603
|
setPanelBoundary(node);
|
|
60482
60604
|
}, []);
|
|
60483
|
-
const [railCollapsed, setRailCollapsed] =
|
|
60484
|
-
|
|
60605
|
+
const [railCollapsed, setRailCollapsed] = useState127(false);
|
|
60606
|
+
useEffect96(() => {
|
|
60485
60607
|
try {
|
|
60486
60608
|
if (window.localStorage.getItem(RAIL_COLLAPSED_STORAGE_KEY) === "1")
|
|
60487
60609
|
setRailCollapsed(true);
|
|
@@ -60498,15 +60620,15 @@ function EmbeddableChatInner({
|
|
|
60498
60620
|
return next;
|
|
60499
60621
|
});
|
|
60500
60622
|
}, []);
|
|
60501
|
-
const [railSearchOpen, setRailSearchOpen] =
|
|
60623
|
+
const [railSearchOpen, setRailSearchOpen] = useState127(false);
|
|
60502
60624
|
const splitEligible = activeMode === "mingo";
|
|
60503
60625
|
const canSplit = panelWidth >= SPLIT_MIN_WIDTH;
|
|
60504
60626
|
const wideMingo = splitEligible && canSplit && !previewMode;
|
|
60505
60627
|
const splitActive = wideMingo && !railCollapsed;
|
|
60506
60628
|
const railPresence = useRailPresence(splitActive);
|
|
60507
60629
|
const showWideHeader = wideMingo || railPresence.mounted;
|
|
60508
|
-
const [composeOpen, setComposeOpen] =
|
|
60509
|
-
|
|
60630
|
+
const [composeOpen, setComposeOpen] = useState127(false);
|
|
60631
|
+
useEffect96(() => {
|
|
60510
60632
|
if (hasConversation) setComposeOpen(false);
|
|
60511
60633
|
}, [hasConversation]);
|
|
60512
60634
|
const isMingoMode = activeMode === "mingo";
|
|
@@ -60562,17 +60684,17 @@ function EmbeddableChatInner({
|
|
|
60562
60684
|
onArchive: headerOnArchive,
|
|
60563
60685
|
onOpenArchive: headerOnOpenArchive
|
|
60564
60686
|
};
|
|
60565
|
-
const body = /* @__PURE__ */
|
|
60566
|
-
/* @__PURE__ */
|
|
60687
|
+
const body = /* @__PURE__ */ jsx390(PortalContainerContext.Provider, { value: portalHost, children: /* @__PURE__ */ jsxs309(CollisionBoundaryContext.Provider, { value: panelBoundary, children: [
|
|
60688
|
+
/* @__PURE__ */ jsx390(
|
|
60567
60689
|
"div",
|
|
60568
60690
|
{
|
|
60569
60691
|
ref: setPanelNode,
|
|
60570
60692
|
className: `flex h-full flex-col overflow-hidden transition-colors duration-200 ${archiveOpen && !splitActive || stackedListView ? "bg-ods-card" : "bg-ods-bg"} ${previewMode ? "pointer-events-none select-none" : ""}`,
|
|
60571
|
-
children: archiveOpen && !splitActive ? /* @__PURE__ */
|
|
60693
|
+
children: archiveOpen && !splitActive ? /* @__PURE__ */ jsx390(
|
|
60572
60694
|
"div",
|
|
60573
60695
|
{
|
|
60574
60696
|
className: "flex flex-1 min-h-0 flex-col animate-in fade-in-0 duration-200",
|
|
60575
|
-
children: /* @__PURE__ */
|
|
60697
|
+
children: /* @__PURE__ */ jsx390(
|
|
60576
60698
|
ChatArchivePage,
|
|
60577
60699
|
{
|
|
60578
60700
|
dialogs: archivedDialogs,
|
|
@@ -60589,7 +60711,7 @@ function EmbeddableChatInner({
|
|
|
60589
60711
|
)
|
|
60590
60712
|
},
|
|
60591
60713
|
"archive-view"
|
|
60592
|
-
) : /* @__PURE__ */
|
|
60714
|
+
) : /* @__PURE__ */ jsxs309(
|
|
60593
60715
|
"div",
|
|
60594
60716
|
{
|
|
60595
60717
|
className: "flex flex-1 min-h-0 flex-col animate-in fade-in-0 duration-200",
|
|
@@ -60607,8 +60729,8 @@ function EmbeddableChatInner({
|
|
|
60607
60729
|
// the viewport `md` breakpoint — otherwise a 720–799px panel on a
|
|
60608
60730
|
// sub-`md` viewport would split the body yet drop to the mobile
|
|
60609
60731
|
// single-bar header (no rail search / collapse controls).
|
|
60610
|
-
/* @__PURE__ */
|
|
60611
|
-
railPresence.mounted && /* @__PURE__ */
|
|
60732
|
+
/* @__PURE__ */ jsxs309("div", { className: "flex h-14 w-full flex-shrink-0 overflow-hidden border-b border-ods-border bg-ods-card", children: [
|
|
60733
|
+
railPresence.mounted && /* @__PURE__ */ jsx390(
|
|
60612
60734
|
RailSlot,
|
|
60613
60735
|
{
|
|
60614
60736
|
active: railPresence.active,
|
|
@@ -60619,50 +60741,50 @@ function EmbeddableChatInner({
|
|
|
60619
60741
|
// renders in the rail below); the chat block is untouched.
|
|
60620
60742
|
// Back is a full-height leading cell, matching the other
|
|
60621
60743
|
// header cells (not a small inline chevron).
|
|
60622
|
-
/* @__PURE__ */
|
|
60623
|
-
/* @__PURE__ */
|
|
60744
|
+
/* @__PURE__ */ jsxs309(Fragment89, { children: [
|
|
60745
|
+
/* @__PURE__ */ jsx390(
|
|
60624
60746
|
ChatHeaderIconButton,
|
|
60625
60747
|
{
|
|
60626
60748
|
divider: "right",
|
|
60627
60749
|
onClick: closeArchive,
|
|
60628
60750
|
"aria-label": "Back to chats",
|
|
60629
|
-
children: /* @__PURE__ */
|
|
60751
|
+
children: /* @__PURE__ */ jsx390(Chevron02LeftIcon, { size: 24 })
|
|
60630
60752
|
}
|
|
60631
60753
|
),
|
|
60632
|
-
/* @__PURE__ */
|
|
60754
|
+
/* @__PURE__ */ jsx390("div", { className: "flex min-w-0 flex-1 items-center px-[var(--spacing-system-mf)]", children: /* @__PURE__ */ jsx390("span", { className: "min-w-0 flex-1 truncate text-h3 text-ods-text-primary", children: "Chat Archive" }) })
|
|
60633
60755
|
] })
|
|
60634
60756
|
) : (
|
|
60635
60757
|
// "Current Chats" rail header — title fills, then the
|
|
60636
60758
|
// search + archive controls. When search is open the
|
|
60637
60759
|
// inline field takes over the title area in place
|
|
60638
60760
|
// (Figma 116:51217) and the magnifier toggle is hidden.
|
|
60639
|
-
/* @__PURE__ */
|
|
60640
|
-
railSearchOpen && mingoCaps.onSearchChange ? /* @__PURE__ */
|
|
60761
|
+
/* @__PURE__ */ jsxs309(Fragment89, { children: [
|
|
60762
|
+
railSearchOpen && mingoCaps.onSearchChange ? /* @__PURE__ */ jsx390(
|
|
60641
60763
|
ChatHeaderSearchField,
|
|
60642
60764
|
{
|
|
60643
60765
|
initialValue: mingoCaps.searchQuery,
|
|
60644
60766
|
onSearchChange: mingoCaps.onSearchChange,
|
|
60645
60767
|
onCollapse: () => setRailSearchOpen(false)
|
|
60646
60768
|
}
|
|
60647
|
-
) : /* @__PURE__ */
|
|
60648
|
-
/* @__PURE__ */
|
|
60649
|
-
mingoCaps.onSearchChange && /* @__PURE__ */
|
|
60769
|
+
) : /* @__PURE__ */ jsxs309(Fragment89, { children: [
|
|
60770
|
+
/* @__PURE__ */ jsx390("div", { className: "flex min-w-0 flex-1 items-center px-[var(--spacing-system-mf)]", children: /* @__PURE__ */ jsx390("span", { className: "min-w-0 flex-1 truncate text-h3 text-ods-text-primary", children: "Current Chats" }) }),
|
|
60771
|
+
mingoCaps.onSearchChange && /* @__PURE__ */ jsx390(
|
|
60650
60772
|
ChatHeaderIconButton,
|
|
60651
60773
|
{
|
|
60652
60774
|
onClick: () => setRailSearchOpen((o) => !o),
|
|
60653
60775
|
"aria-label": "Search chats",
|
|
60654
60776
|
"aria-pressed": railSearchOpen,
|
|
60655
|
-
children: /* @__PURE__ */
|
|
60777
|
+
children: /* @__PURE__ */ jsx390(SearchIcon, { size: 24 })
|
|
60656
60778
|
}
|
|
60657
60779
|
)
|
|
60658
60780
|
] }),
|
|
60659
|
-
headerOnOpenArchive && /* @__PURE__ */
|
|
60781
|
+
headerOnOpenArchive && /* @__PURE__ */ jsx390(ChatHeaderIconButton, { onClick: headerOnOpenArchive, "aria-label": "Chat archive", children: /* @__PURE__ */ jsx390(ClockHistoryIcon, { size: 24 }) })
|
|
60660
60782
|
] })
|
|
60661
60783
|
)
|
|
60662
60784
|
}
|
|
60663
60785
|
),
|
|
60664
|
-
/* @__PURE__ */
|
|
60665
|
-
/* @__PURE__ */
|
|
60786
|
+
/* @__PURE__ */ jsxs309("div", { className: "flex flex-1 min-w-0", children: [
|
|
60787
|
+
/* @__PURE__ */ jsx390(
|
|
60666
60788
|
"button",
|
|
60667
60789
|
{
|
|
60668
60790
|
type: "button",
|
|
@@ -60670,17 +60792,17 @@ function EmbeddableChatInner({
|
|
|
60670
60792
|
"aria-label": splitActive ? "Collapse chat list" : "Show chat list",
|
|
60671
60793
|
"aria-pressed": !splitActive,
|
|
60672
60794
|
className: "flex size-14 shrink-0 items-center justify-center border-r border-ods-border text-ods-text-secondary transition-colors hover:bg-ods-bg-hover hover:text-ods-text-primary focus:outline-none focus-visible:ring-2 focus-visible:ring-ods-accent",
|
|
60673
|
-
children: splitActive ? /* @__PURE__ */
|
|
60795
|
+
children: splitActive ? /* @__PURE__ */ jsx390(Arrow02RightIcon, { size: 24 }) : /* @__PURE__ */ jsx390(Arrow02LeftIcon, { size: 24 })
|
|
60674
60796
|
}
|
|
60675
60797
|
),
|
|
60676
|
-
/* @__PURE__ */
|
|
60677
|
-
/* @__PURE__ */
|
|
60678
|
-
/* @__PURE__ */
|
|
60679
|
-
headerPersonName && /* @__PURE__ */
|
|
60798
|
+
/* @__PURE__ */ jsxs309("div", { className: "flex flex-1 min-w-0 items-center gap-[var(--spacing-system-m)] px-[var(--spacing-system-mf)] py-[var(--spacing-system-sf)]", children: [
|
|
60799
|
+
/* @__PURE__ */ jsxs309("div", { className: "flex min-w-0 flex-col", children: [
|
|
60800
|
+
/* @__PURE__ */ jsx390("p", { className: "truncate text-h3 leading-tight text-ods-text-primary", children: headerShowBack ? headerTitle : "New Chat" }),
|
|
60801
|
+
headerPersonName && /* @__PURE__ */ jsx390("p", { className: "truncate text-h6 leading-tight text-ods-text-secondary", children: headerPersonName })
|
|
60680
60802
|
] }),
|
|
60681
60803
|
headerAvatar ? (
|
|
60682
60804
|
// Owner avatar at the title cell's right edge (Figma 113:63273).
|
|
60683
|
-
/* @__PURE__ */
|
|
60805
|
+
/* @__PURE__ */ jsx390(
|
|
60684
60806
|
SquareAvatar,
|
|
60685
60807
|
{
|
|
60686
60808
|
variant: "round",
|
|
@@ -60695,17 +60817,17 @@ function EmbeddableChatInner({
|
|
|
60695
60817
|
)
|
|
60696
60818
|
) : null
|
|
60697
60819
|
] }),
|
|
60698
|
-
isViewingArchived && headerOnRestore && /* @__PURE__ */
|
|
60699
|
-
headerShowBack && !isViewingArchived && splitHeaderMenuItems.length > 0 && /* @__PURE__ */
|
|
60820
|
+
isViewingArchived && headerOnRestore && /* @__PURE__ */ jsx390(ChatHeaderIconButton, { onClick: headerOnRestore, "aria-label": "Unarchive chat", children: /* @__PURE__ */ jsx390(Refresh01LeftIcon, { size: 24 }) }),
|
|
60821
|
+
headerShowBack && !isViewingArchived && splitHeaderMenuItems.length > 0 && /* @__PURE__ */ jsx390(
|
|
60700
60822
|
ActionsMenuDropdown,
|
|
60701
60823
|
{
|
|
60702
60824
|
triggerAriaLabel: "Chat actions",
|
|
60703
60825
|
onCloseAutoFocus: (e) => e.preventDefault(),
|
|
60704
60826
|
groups: [{ items: splitHeaderMenuItems }],
|
|
60705
|
-
customTrigger: /* @__PURE__ */
|
|
60827
|
+
customTrigger: /* @__PURE__ */ jsx390(ChatHeaderIconButton, { "aria-label": "Chat actions", children: /* @__PURE__ */ jsx390(Ellipsis01Icon, { size: 24 }) })
|
|
60706
60828
|
}
|
|
60707
60829
|
),
|
|
60708
|
-
/* @__PURE__ */
|
|
60830
|
+
/* @__PURE__ */ jsx390(ChatHeaderIconButton, { onClick: handleClose, "aria-label": "Close", children: /* @__PURE__ */ jsx390(XmarkIcon, { size: 24 }) })
|
|
60709
60831
|
] })
|
|
60710
60832
|
] })
|
|
60711
60833
|
) : (
|
|
@@ -60713,11 +60835,11 @@ function EmbeddableChatInner({
|
|
|
60713
60835
|
// guide, resolved into `narrowHeaderProps` above. (Wide layouts,
|
|
60714
60836
|
// including rail-collapsed, use the wide header above.) Embedded
|
|
60715
60837
|
// previews (hero demo tabs) force the compact bar via `compact`.
|
|
60716
|
-
/* @__PURE__ */
|
|
60838
|
+
/* @__PURE__ */ jsx390(ChatPanelHeader, { ...narrowHeaderProps, compact: previewMode })
|
|
60717
60839
|
),
|
|
60718
|
-
activeMode === "guide" && hasMingoMode && /* @__PURE__ */
|
|
60719
|
-
/* @__PURE__ */
|
|
60720
|
-
railPresence.mounted && /* @__PURE__ */
|
|
60840
|
+
activeMode === "guide" && hasMingoMode && /* @__PURE__ */ jsx390(GuideModeBanner, { className: "animate-in fade-in-0 duration-200" }),
|
|
60841
|
+
/* @__PURE__ */ jsxs309("div", { className: "flex flex-1 min-h-0 overflow-hidden", children: [
|
|
60842
|
+
railPresence.mounted && /* @__PURE__ */ jsx390(
|
|
60721
60843
|
RailSlot,
|
|
60722
60844
|
{
|
|
60723
60845
|
active: railPresence.active,
|
|
@@ -60725,7 +60847,7 @@ function EmbeddableChatInner({
|
|
|
60725
60847
|
children: archiveOpen ? (
|
|
60726
60848
|
// Archive list inside the rail (header lives in the split
|
|
60727
60849
|
// header's left cell above). Right chat block stays put.
|
|
60728
|
-
/* @__PURE__ */
|
|
60850
|
+
/* @__PURE__ */ jsx390(
|
|
60729
60851
|
ChatArchivePage,
|
|
60730
60852
|
{
|
|
60731
60853
|
embedded: true,
|
|
@@ -60739,7 +60861,7 @@ function EmbeddableChatInner({
|
|
|
60739
60861
|
}
|
|
60740
60862
|
}
|
|
60741
60863
|
)
|
|
60742
|
-
) : /* @__PURE__ */
|
|
60864
|
+
) : /* @__PURE__ */ jsx390(
|
|
60743
60865
|
MingoHistoryRail,
|
|
60744
60866
|
{
|
|
60745
60867
|
dialogs,
|
|
@@ -60763,11 +60885,11 @@ function EmbeddableChatInner({
|
|
|
60763
60885
|
)
|
|
60764
60886
|
}
|
|
60765
60887
|
),
|
|
60766
|
-
/* @__PURE__ */
|
|
60888
|
+
/* @__PURE__ */ jsx390("div", { className: "flex flex-1 flex-col min-h-0 min-w-0", children: stackedListView ? (
|
|
60767
60889
|
// Narrow "Current Chats" list (Figma 341:36190) — the default
|
|
60768
60890
|
// single-column view. No composer here; "Start New Chat" opens
|
|
60769
60891
|
// the compose view.
|
|
60770
|
-
/* @__PURE__ */
|
|
60892
|
+
/* @__PURE__ */ jsx390(
|
|
60771
60893
|
MingoHistoryRail,
|
|
60772
60894
|
{
|
|
60773
60895
|
className: "animate-in fade-in-0 duration-200",
|
|
@@ -60790,17 +60912,17 @@ function EmbeddableChatInner({
|
|
|
60790
60912
|
onRetry: reloadDialogs
|
|
60791
60913
|
}
|
|
60792
60914
|
)
|
|
60793
|
-
) : /* @__PURE__ */
|
|
60794
|
-
/* @__PURE__ */
|
|
60915
|
+
) : /* @__PURE__ */ jsxs309(Fragment89, { children: [
|
|
60916
|
+
/* @__PURE__ */ jsx390(
|
|
60795
60917
|
"div",
|
|
60796
60918
|
{
|
|
60797
60919
|
ref: galleryPanelRef,
|
|
60798
60920
|
className: "flex-1 flex flex-col min-h-0 p-[var(--spacing-system-m)]",
|
|
60799
|
-
children: /* @__PURE__ */
|
|
60921
|
+
children: /* @__PURE__ */ jsx390(
|
|
60800
60922
|
"div",
|
|
60801
60923
|
{
|
|
60802
60924
|
className: "flex-1 flex flex-col min-h-0 animate-in fade-in-0 duration-200",
|
|
60803
|
-
children: hasConversation ? /* @__PURE__ */
|
|
60925
|
+
children: hasConversation ? /* @__PURE__ */ jsxs309("div", { className: "flex-1 flex flex-col min-h-0", children: [
|
|
60804
60926
|
messagesInitialLoading ? (
|
|
60805
60927
|
// Match the real list's `fullWidth` layout so swapping
|
|
60806
60928
|
// skeleton → bubbles doesn't shift the column. The panel
|
|
@@ -60812,7 +60934,7 @@ function EmbeddableChatInner({
|
|
|
60812
60934
|
// skeleton overflows a short panel and grows its OWN
|
|
60813
60935
|
// scrollbar — ugly. `fill` top-anchors + clips overflow so
|
|
60814
60936
|
// it reads as "the whole panel is loading" and never scrolls.
|
|
60815
|
-
/* @__PURE__ */
|
|
60937
|
+
/* @__PURE__ */ jsx390(
|
|
60816
60938
|
ChatMessageListSkeleton,
|
|
60817
60939
|
{
|
|
60818
60940
|
fullWidth: true,
|
|
@@ -60820,7 +60942,7 @@ function EmbeddableChatInner({
|
|
|
60820
60942
|
className: "flex-1"
|
|
60821
60943
|
}
|
|
60822
60944
|
)
|
|
60823
|
-
) : /* @__PURE__ */
|
|
60945
|
+
) : /* @__PURE__ */ jsx390(
|
|
60824
60946
|
ChatMessageList,
|
|
60825
60947
|
{
|
|
60826
60948
|
messages,
|
|
@@ -60845,7 +60967,7 @@ function EmbeddableChatInner({
|
|
|
60845
60967
|
onLoadMore: loadMoreMessages
|
|
60846
60968
|
}
|
|
60847
60969
|
),
|
|
60848
|
-
lastSources && (lastSources.cited.length > 0 || lastSources.uncited.length > 0) && !chatLoading && /* @__PURE__ */
|
|
60970
|
+
lastSources && (lastSources.cited.length > 0 || lastSources.uncited.length > 0) && !chatLoading && /* @__PURE__ */ jsx390("div", { className: "flex-shrink-0 pb-2", children: /* @__PURE__ */ jsx390(
|
|
60849
60971
|
SourceChips,
|
|
60850
60972
|
{
|
|
60851
60973
|
cited: lastSources.cited,
|
|
@@ -60861,7 +60983,7 @@ function EmbeddableChatInner({
|
|
|
60861
60983
|
centred greeting + capability grid + Guide-chat promo +
|
|
60862
60984
|
quick-action chips. Guide mode keeps the slash-command
|
|
60863
60985
|
onboarding list below. */
|
|
60864
|
-
/* @__PURE__ */
|
|
60986
|
+
/* @__PURE__ */ jsx390(
|
|
60865
60987
|
MingoWelcome,
|
|
60866
60988
|
{
|
|
60867
60989
|
onStartGuideChat: effectiveModes.guide ? () => handleActiveModeChange("guide") : void 0,
|
|
@@ -60876,7 +60998,7 @@ function EmbeddableChatInner({
|
|
|
60876
60998
|
/* Figma node 7532:328214 — Guide-mode empty state: greeting
|
|
60877
60999
|
+ slash-command onboarding list share one scroll region,
|
|
60878
61000
|
with a pinned quick-action chip row above the composer. */
|
|
60879
|
-
/* @__PURE__ */
|
|
61001
|
+
/* @__PURE__ */ jsx390(
|
|
60880
61002
|
GuideWelcome,
|
|
60881
61003
|
{
|
|
60882
61004
|
subtitle: effectiveGreeting ?? void 0,
|
|
@@ -60892,8 +61014,8 @@ function EmbeddableChatInner({
|
|
|
60892
61014
|
onQuickActionHover: (action) => setQuickActionPreview(action.prompt ?? action.label),
|
|
60893
61015
|
onQuickActionHoverEnd: () => setQuickActionPreview(null),
|
|
60894
61016
|
agentSlug: activeAgentSlug,
|
|
60895
|
-
children: (chipCommands.length > 0 || !commandsLoaded) && /* @__PURE__ */
|
|
60896
|
-
!commandsLoaded && chipCommands.length === 0 && SKELETON_ROW_VARIANTS.map((variant, i) => /* @__PURE__ */
|
|
61017
|
+
children: (chipCommands.length > 0 || !commandsLoaded) && /* @__PURE__ */ jsxs309("div", { className: "shrink-0 overflow-hidden rounded-md border border-ods-border", children: [
|
|
61018
|
+
!commandsLoaded && chipCommands.length === 0 && SKELETON_ROW_VARIANTS.map((variant, i) => /* @__PURE__ */ jsx390(
|
|
60897
61019
|
MingoOnboardingCardSkeleton,
|
|
60898
61020
|
{
|
|
60899
61021
|
titleWidth: variant.titleWidth,
|
|
@@ -60915,10 +61037,10 @@ function EmbeddableChatInner({
|
|
|
60915
61037
|
chatInputRef
|
|
60916
61038
|
)
|
|
60917
61039
|
}));
|
|
60918
|
-
return /* @__PURE__ */
|
|
61040
|
+
return /* @__PURE__ */ jsx390(
|
|
60919
61041
|
MingoOnboardingCard,
|
|
60920
61042
|
{
|
|
60921
|
-
icon: /* @__PURE__ */
|
|
61043
|
+
icon: /* @__PURE__ */ jsx390(Icon2, { size: 16 }),
|
|
60922
61044
|
title: label,
|
|
60923
61045
|
slashCommand: `/${cmdId}`,
|
|
60924
61046
|
description: cmd.description,
|
|
@@ -60936,7 +61058,7 @@ function EmbeddableChatInner({
|
|
|
60936
61058
|
)
|
|
60937
61059
|
}
|
|
60938
61060
|
),
|
|
60939
|
-
/* @__PURE__ */
|
|
61061
|
+
/* @__PURE__ */ jsx390(
|
|
60940
61062
|
ChatAttachmentChipStrip,
|
|
60941
61063
|
{
|
|
60942
61064
|
attachments: stagedAttachments,
|
|
@@ -60944,7 +61066,7 @@ function EmbeddableChatInner({
|
|
|
60944
61066
|
disabled: chatLoading
|
|
60945
61067
|
}
|
|
60946
61068
|
),
|
|
60947
|
-
/* @__PURE__ */
|
|
61069
|
+
/* @__PURE__ */ jsx390(
|
|
60948
61070
|
ChatComposer,
|
|
60949
61071
|
{
|
|
60950
61072
|
archived: isViewingArchived,
|
|
@@ -60993,7 +61115,7 @@ function EmbeddableChatInner({
|
|
|
60993
61115
|
}
|
|
60994
61116
|
),
|
|
60995
61117
|
galleryModal,
|
|
60996
|
-
/* @__PURE__ */
|
|
61118
|
+
/* @__PURE__ */ jsx390(
|
|
60997
61119
|
ChatDialogModals,
|
|
60998
61120
|
{
|
|
60999
61121
|
renameTarget,
|
|
@@ -61007,15 +61129,15 @@ function EmbeddableChatInner({
|
|
|
61007
61129
|
onConfirmRestore: handleConfirmRestore
|
|
61008
61130
|
}
|
|
61009
61131
|
),
|
|
61010
|
-
/* @__PURE__ */
|
|
61132
|
+
/* @__PURE__ */ jsx390("div", { ref: setPortalHost, style: { display: "contents" } })
|
|
61011
61133
|
] }) });
|
|
61012
|
-
const panel = shellLess ? /* @__PURE__ */
|
|
61013
|
-
/* @__PURE__ */
|
|
61134
|
+
const panel = shellLess ? /* @__PURE__ */ jsxs309(ChatPanelContext.Provider, { value: chatPanelHandle, children: [
|
|
61135
|
+
/* @__PURE__ */ jsx390(VisuallyHidden, { children: /* @__PURE__ */ jsxs309(DialogPrimitive5.Title, { children: [
|
|
61014
61136
|
sourceLabel,
|
|
61015
61137
|
" AI Assistant"
|
|
61016
61138
|
] }) }),
|
|
61017
61139
|
body
|
|
61018
|
-
] }) : /* @__PURE__ */
|
|
61140
|
+
] }) : /* @__PURE__ */ jsx390(Drawer, { open: isOpen, onOpenChange: (o) => !o && handleClose(), children: /* @__PURE__ */ jsx390(ChatPanelContext.Provider, { value: chatPanelHandle, children: /* @__PURE__ */ jsxs309(
|
|
61019
61141
|
DrawerContent,
|
|
61020
61142
|
{
|
|
61021
61143
|
side: "right",
|
|
@@ -61030,7 +61152,7 @@ function EmbeddableChatInner({
|
|
|
61030
61152
|
"aria-describedby": void 0,
|
|
61031
61153
|
className: "\n mingo-chat-content !bg-ods-bg shadow-2xl\n focus:outline-none focus-visible:outline-none\n w-screen md:w-auto\n ",
|
|
61032
61154
|
children: [
|
|
61033
|
-
/* @__PURE__ */
|
|
61155
|
+
/* @__PURE__ */ jsx390(VisuallyHidden, { children: /* @__PURE__ */ jsxs309(DialogPrimitive5.Title, { children: [
|
|
61034
61156
|
sourceLabel,
|
|
61035
61157
|
" AI Assistant"
|
|
61036
61158
|
] }) }),
|
|
@@ -61038,17 +61160,17 @@ function EmbeddableChatInner({
|
|
|
61038
61160
|
]
|
|
61039
61161
|
}
|
|
61040
61162
|
) }) });
|
|
61041
|
-
return /* @__PURE__ */
|
|
61042
|
-
showInternalTrigger && !shellLess && /* @__PURE__ */
|
|
61163
|
+
return /* @__PURE__ */ jsxs309(Fragment89, { children: [
|
|
61164
|
+
showInternalTrigger && !shellLess && /* @__PURE__ */ jsx390(
|
|
61043
61165
|
"div",
|
|
61044
61166
|
{
|
|
61045
61167
|
"aria-hidden": isOpen,
|
|
61046
61168
|
className: `sticky bottom-0 h-0 z-[9990] pointer-events-none ${isOpen ? "opacity-0" : "opacity-100"}`,
|
|
61047
|
-
children: /* @__PURE__ */
|
|
61169
|
+
children: /* @__PURE__ */ jsx390("div", { className: "absolute bottom-4 md:bottom-6 right-4 md:right-6", children: /* @__PURE__ */ jsx390(
|
|
61048
61170
|
Button,
|
|
61049
61171
|
{
|
|
61050
61172
|
onClick: handleOpen,
|
|
61051
|
-
leftIcon: /* @__PURE__ */
|
|
61173
|
+
leftIcon: /* @__PURE__ */ jsx390(MingoIcon, { className: "h-5 w-5", color: "currentColor" }),
|
|
61052
61174
|
tabIndex: isOpen ? -1 : 0,
|
|
61053
61175
|
className: `shadow-lg !w-auto pointer-events-auto ${isOpen ? "!pointer-events-none" : ""}`,
|
|
61054
61176
|
children: "Ask AI"
|
|
@@ -62110,6 +62232,7 @@ export {
|
|
|
62110
62232
|
TicketNoteCard,
|
|
62111
62233
|
TicketNotesSection,
|
|
62112
62234
|
TicketInfoSection,
|
|
62235
|
+
TakeOverTicketModal,
|
|
62113
62236
|
FilterPillRow,
|
|
62114
62237
|
MingoAiButton,
|
|
62115
62238
|
MOBILE_NAV_PANEL_ID,
|
|
@@ -62154,4 +62277,4 @@ export {
|
|
|
62154
62277
|
LogsList,
|
|
62155
62278
|
assets
|
|
62156
62279
|
};
|
|
62157
|
-
//# sourceMappingURL=chunk-
|
|
62280
|
+
//# sourceMappingURL=chunk-7EHGP4QK.js.map
|