@handled-ai/design-system 0.2.0 → 0.3.0
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/README.md +80 -65
- package/dist/index.d.ts +190 -1
- package/dist/index.js +694 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { clsx } from 'clsx';
|
|
2
2
|
import { twMerge } from 'tailwind-merge';
|
|
3
3
|
import * as React52 from 'react';
|
|
4
|
-
import { AlertCircle, Phone, Mail, MessageSquare, ArrowLeft, ExternalLink, ChevronDown, ArrowRight, Plus, Square, Video, Clock, Eye, CheckCircle2, CheckSquare, CheckIcon, CircleIcon, ChevronRightIcon, X, ListFilter, Search, ChevronDownIcon, ChevronUpIcon, LayoutGrid, ArrowUpDown, ArrowDown, ArrowUp, XIcon, ThumbsUp, ThumbsDown, Check, CirclePlus, Lock, ChevronUp, Briefcase, History, Calendar, DollarSign, Users, TrendingUp, User, Link, SearchX, CalendarDays, Minimize2, Maximize2, MessageCircle, FileText, Building2, List, Filter, SlidersHorizontal, LayoutTemplate, ArrowDownAZ, ArrowUpAZ, RotateCcw, Info, ChevronLeft, ChevronRight, Paperclip, Inbox, Building, Activity, BarChart2, MoreHorizontal, Settings, Code, LogOut, PanelLeftOpen, PanelLeftClose, MoreVertical, HelpCircle, SkipForward, PanelLeftIcon, Heart, Scale, AlertTriangle, Undo2, Copy, RefreshCw, Redo2, Bold, Italic, Underline, AlignLeft, Trash, PenLine, Sparkles } from 'lucide-react';
|
|
4
|
+
import { AlertCircle, Phone, Mail, MessageSquare, ArrowLeft, ExternalLink, ChevronDown, ArrowRight, Plus, Square, Video, Clock, Eye, CheckCircle2, CheckSquare, CheckIcon, CircleIcon, ChevronRightIcon, X, ListFilter, Search, ChevronDownIcon, ChevronUpIcon, LayoutGrid, ArrowUpDown, ArrowDown, ArrowUp, XIcon, ThumbsUp, ThumbsDown, Check, CirclePlus, Lock, ChevronUp, Briefcase, History, Calendar, DollarSign, Users, TrendingUp, User, Link, SearchX, CalendarDays, Minimize2, Maximize2, MessageCircle, FileText, Building2, List, Filter, SlidersHorizontal, LayoutTemplate, ArrowDownAZ, ArrowUpAZ, RotateCcw, Info, ChevronLeft, ChevronRight, Paperclip, Inbox, Building, Activity, BarChart2, MoreHorizontal, Settings, Code, LogOut, PanelLeftOpen, PanelLeftClose, MoreVertical, HelpCircle, SkipForward, PanelLeftIcon, Tag, Columns2, LayoutList, Heart, Scale, AlertTriangle, Undo2, Copy, RefreshCw, Redo2, Bold, Italic, Underline, AlignLeft, Trash, PenLine, Sparkles } from 'lucide-react';
|
|
5
5
|
import { cva } from 'class-variance-authority';
|
|
6
6
|
import { Slot, Avatar as Avatar$1, DropdownMenu as DropdownMenu$1, Select as Select$1, Dialog as Dialog$1, HoverCard as HoverCard$1, Separator as Separator$1, Popover, ScrollArea as ScrollArea$1, Tooltip as Tooltip$1, Progress as Progress$1, Tabs as Tabs$1 } from 'radix-ui';
|
|
7
7
|
import { format } from 'date-fns';
|
|
@@ -8765,7 +8765,699 @@ function VolumeAnalysisChart({
|
|
|
8765
8765
|
))
|
|
8766
8766
|
))));
|
|
8767
8767
|
}
|
|
8768
|
+
var DEFAULT_DETAIL_SECTIONS = {
|
|
8769
|
+
signalBrief: true,
|
|
8770
|
+
suggestedActions: true,
|
|
8771
|
+
timeline: true
|
|
8772
|
+
};
|
|
8773
|
+
var DEFAULT_SIGNAL_SCORE = {
|
|
8774
|
+
score: 65,
|
|
8775
|
+
factors: [
|
|
8776
|
+
{ key: "trigger", label: "Trigger strength", score: 70, why: "Moderate signal detected based on account activity" },
|
|
8777
|
+
{ key: "fit", label: "Company fit", score: 65, why: "Reasonable fit based on company profile" },
|
|
8778
|
+
{ key: "timing", label: "Timing", score: 58, why: "Within general evaluation window" }
|
|
8779
|
+
],
|
|
8780
|
+
whyNow: "Moderate signals detected that warrant review and potential outreach.",
|
|
8781
|
+
evidence: [
|
|
8782
|
+
"Activity patterns suggest potential opportunity",
|
|
8783
|
+
"Company profile aligns with target segment"
|
|
8784
|
+
],
|
|
8785
|
+
confidence: 72
|
|
8786
|
+
};
|
|
8787
|
+
function DetailView({
|
|
8788
|
+
item,
|
|
8789
|
+
sections,
|
|
8790
|
+
getSignalScore,
|
|
8791
|
+
buildSuggestedActions,
|
|
8792
|
+
buildSourceItems,
|
|
8793
|
+
getTimelineEvents,
|
|
8794
|
+
accountContacts,
|
|
8795
|
+
emailSignature,
|
|
8796
|
+
iconMap,
|
|
8797
|
+
onOpenEntityPanel,
|
|
8798
|
+
onOpenRecentActivity
|
|
8799
|
+
}) {
|
|
8800
|
+
const [evidenceExpanded, setEvidenceExpanded] = React52.useState(false);
|
|
8801
|
+
const [showTimeline, setShowTimeline] = React52.useState(false);
|
|
8802
|
+
const [extraActions, setExtraActions] = React52.useState([]);
|
|
8803
|
+
React52.useEffect(() => {
|
|
8804
|
+
setShowTimeline(false);
|
|
8805
|
+
setEvidenceExpanded(false);
|
|
8806
|
+
setExtraActions([]);
|
|
8807
|
+
}, [item.id]);
|
|
8808
|
+
const suggestedActions = React52.useMemo(
|
|
8809
|
+
() => [...buildSuggestedActions(item), ...extraActions],
|
|
8810
|
+
[buildSuggestedActions, item, extraActions]
|
|
8811
|
+
);
|
|
8812
|
+
const sourceItems = React52.useMemo(() => buildSourceItems(item), [buildSourceItems, item]);
|
|
8813
|
+
const timelineEvents = React52.useMemo(
|
|
8814
|
+
() => {
|
|
8815
|
+
var _a;
|
|
8816
|
+
return (_a = getTimelineEvents == null ? void 0 : getTimelineEvents(item)) != null ? _a : [];
|
|
8817
|
+
},
|
|
8818
|
+
[getTimelineEvents, item]
|
|
8819
|
+
);
|
|
8820
|
+
const handleDuplicate = React52.useCallback(
|
|
8821
|
+
(id) => {
|
|
8822
|
+
const base = suggestedActions.find((a) => a.id === id);
|
|
8823
|
+
if (!base || base.type !== "email") return;
|
|
8824
|
+
const clone = __spreadProps(__spreadValues({}, base), {
|
|
8825
|
+
id: `${base.id}-dup-${Date.now()}`,
|
|
8826
|
+
emailMeta: base.emailMeta ? __spreadProps(__spreadValues({}, base.emailMeta), { to: void 0 }) : void 0
|
|
8827
|
+
});
|
|
8828
|
+
setExtraActions((prev) => [...prev, clone]);
|
|
8829
|
+
},
|
|
8830
|
+
[suggestedActions]
|
|
8831
|
+
);
|
|
8832
|
+
return /* @__PURE__ */ React52.createElement(
|
|
8833
|
+
SignalApproval.Root,
|
|
8834
|
+
{
|
|
8835
|
+
companyName: item.company,
|
|
8836
|
+
opportunityUrl: `https://acme.lightning.force.com/lightning/r/Opportunity/006${item.id}/view`,
|
|
8837
|
+
onApprove: () => {
|
|
8838
|
+
console.log("Approved signal:", { taskId: item.id, company: item.company });
|
|
8839
|
+
},
|
|
8840
|
+
onApproveFeedback: (reasons, detail) => {
|
|
8841
|
+
console.log("Approval feedback:", { taskId: item.id, company: item.company, reasons, detail });
|
|
8842
|
+
},
|
|
8843
|
+
onDismiss: (reasons, detail) => {
|
|
8844
|
+
console.log("Dismissed signal:", { taskId: item.id, reasons, detail });
|
|
8845
|
+
}
|
|
8846
|
+
},
|
|
8847
|
+
/* @__PURE__ */ React52.createElement("div", { className: "mx-auto w-full max-w-3xl p-6 pb-12 md:p-8" }, /* @__PURE__ */ React52.createElement("div", { className: "pb-8" }, /* @__PURE__ */ React52.createElement("div", { className: "mb-4 flex items-center gap-2" }, /* @__PURE__ */ React52.createElement(
|
|
8848
|
+
"button",
|
|
8849
|
+
{
|
|
8850
|
+
type: "button",
|
|
8851
|
+
className: "flex items-center gap-1.5 text-xs font-medium text-muted-foreground transition-colors hover:text-foreground"
|
|
8852
|
+
},
|
|
8853
|
+
/* @__PURE__ */ React52.createElement(ArrowLeft, { className: "h-3.5 w-3.5" }),
|
|
8854
|
+
"Back"
|
|
8855
|
+
), /* @__PURE__ */ React52.createElement("span", { className: "text-muted-foreground/40" }, "\xB7"), /* @__PURE__ */ React52.createElement("span", { className: "text-xs text-muted-foreground" }, item.company)), /* @__PURE__ */ React52.createElement("h1", { className: "mb-3 text-2xl font-bold tracking-tight text-foreground" }, item.title), /* @__PURE__ */ React52.createElement("div", { className: "mb-6 flex flex-wrap items-center gap-2" }, item.statusColor === "red" && /* @__PURE__ */ React52.createElement("div", { className: "inline-flex items-center gap-1 rounded-md bg-red-50 px-2.5 py-1 text-xs font-semibold text-red-700" }, /* @__PURE__ */ React52.createElement("span", { className: "text-[10px] font-bold" }, "!"), " Urgent"), /* @__PURE__ */ React52.createElement("div", { className: "inline-flex items-center gap-1 rounded-md bg-muted px-2.5 py-1 text-xs font-medium text-muted-foreground" }, item.tag1), /* @__PURE__ */ React52.createElement(
|
|
8856
|
+
"button",
|
|
8857
|
+
{
|
|
8858
|
+
type: "button",
|
|
8859
|
+
onClick: onOpenEntityPanel,
|
|
8860
|
+
className: "ml-1 inline-flex items-center gap-1.5 rounded-md border border-border/60 bg-muted/30 px-2 py-1 transition-colors hover:bg-muted/50"
|
|
8861
|
+
},
|
|
8862
|
+
/* @__PURE__ */ React52.createElement("div", { className: "flex h-4 w-4 items-center justify-center rounded bg-muted-foreground/10 text-[9px] font-semibold text-muted-foreground" }, item.company.substring(0, 1)),
|
|
8863
|
+
/* @__PURE__ */ React52.createElement("span", { className: "text-xs font-medium text-foreground" }, item.company),
|
|
8864
|
+
/* @__PURE__ */ React52.createElement(ChevronRight, { className: "h-3 w-3 text-muted-foreground/50" })
|
|
8865
|
+
)), sections.signalBrief && (() => {
|
|
8866
|
+
const signalData = getSignalScore(item.company);
|
|
8867
|
+
const pct = signalData.score;
|
|
8868
|
+
const scoreColor = pct >= 70 ? "text-emerald-600" : pct >= 40 ? "text-amber-600" : "text-red-600";
|
|
8869
|
+
const barColor = pct >= 70 ? "bg-emerald-500" : pct >= 40 ? "bg-amber-500" : "bg-red-500";
|
|
8870
|
+
const scoreLabel = pct >= 70 ? "HIGH" : pct >= 40 ? "MEDIUM" : "LOW";
|
|
8871
|
+
const evidenceWithCitations = sourceItems.length >= 4 ? [
|
|
8872
|
+
/* @__PURE__ */ React52.createElement(React52.Fragment, null, "There are ", /* @__PURE__ */ React52.createElement("span", { className: "font-medium text-foreground" }, "3 unusual signals"), " including a large balance outflow and reduced login frequency", /* @__PURE__ */ React52.createElement(Citation, { number: 1, source: sourceItems[0] }), /* @__PURE__ */ React52.createElement(Citation, { number: 2, source: sourceItems[1] }), /* @__PURE__ */ React52.createElement(Citation, { number: 3, source: sourceItems[2] })),
|
|
8873
|
+
/* @__PURE__ */ React52.createElement(React52.Fragment, null, "Scott mentioned in ", /* @__PURE__ */ React52.createElement("span", { className: "font-medium text-foreground" }, "#treasury-questions"), " that they are actively looking for treasury management options", /* @__PURE__ */ React52.createElement(Citation, { number: 4, source: sourceItems[2] })),
|
|
8874
|
+
/* @__PURE__ */ React52.createElement(React52.Fragment, null, "You have a recent email thread regarding optimization options that hasn't been replied to", /* @__PURE__ */ React52.createElement(Citation, { number: 5, source: sourceItems[3] }))
|
|
8875
|
+
] : signalData.evidence.map((ev, i) => /* @__PURE__ */ React52.createElement("span", { key: i }, ev));
|
|
8876
|
+
return /* @__PURE__ */ React52.createElement("div", { className: "mb-8" }, /* @__PURE__ */ React52.createElement("h3", { className: "text-xs font-bold text-muted-foreground uppercase tracking-wider mb-3" }, "Signal brief"), /* @__PURE__ */ React52.createElement("p", { className: "text-sm text-muted-foreground leading-relaxed mb-2" }, "We detected signals that suggest a potential opportunity with ", item.company, "."), /* @__PURE__ */ React52.createElement("p", { className: "text-sm text-foreground/90 leading-relaxed mb-4" }, signalData.whyNow), /* @__PURE__ */ React52.createElement("div", { className: "mb-5 rounded-md border border-border bg-muted/20 p-3" }, /* @__PURE__ */ React52.createElement("div", { className: "flex items-center justify-between mb-1.5" }, /* @__PURE__ */ React52.createElement("span", { className: "text-[10px] font-bold text-muted-foreground uppercase tracking-wider" }, "Signal Score"), /* @__PURE__ */ React52.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React52.createElement("span", { className: "text-sm font-bold text-foreground" }, signalData.score, "/100"), /* @__PURE__ */ React52.createElement("span", { className: `text-[10px] font-bold uppercase ${scoreColor}` }, scoreLabel))), /* @__PURE__ */ React52.createElement("div", { className: "h-1.5 bg-muted rounded-full overflow-hidden mb-2" }, /* @__PURE__ */ React52.createElement(
|
|
8877
|
+
"div",
|
|
8878
|
+
{
|
|
8879
|
+
className: `h-full rounded-full transition-all duration-500 ${barColor}`,
|
|
8880
|
+
style: { width: `${signalData.score}%` }
|
|
8881
|
+
}
|
|
8882
|
+
)), /* @__PURE__ */ React52.createElement(
|
|
8883
|
+
"button",
|
|
8884
|
+
{
|
|
8885
|
+
type: "button",
|
|
8886
|
+
onClick: () => setEvidenceExpanded((prev) => !prev),
|
|
8887
|
+
className: "flex items-center gap-1 text-[11px] font-medium text-muted-foreground hover:text-foreground transition-colors"
|
|
8888
|
+
},
|
|
8889
|
+
/* @__PURE__ */ React52.createElement(ChevronDown, { className: `h-3 w-3 transition-transform duration-200 ${evidenceExpanded ? "rotate-180" : ""}` }),
|
|
8890
|
+
"View more"
|
|
8891
|
+
), evidenceExpanded && /* @__PURE__ */ React52.createElement("div", { className: "mt-3 space-y-3" }, /* @__PURE__ */ React52.createElement("ul", { className: "space-y-2" }, evidenceWithCitations.map((ev, index) => /* @__PURE__ */ React52.createElement("li", { key: index, className: "flex items-start gap-2 text-sm" }, /* @__PURE__ */ React52.createElement("div", { className: "w-1.5 h-1.5 bg-primary rounded-full mt-2 flex-shrink-0" }), /* @__PURE__ */ React52.createElement("span", { className: "text-muted-foreground leading-relaxed" }, ev)))), /* @__PURE__ */ React52.createElement(
|
|
8892
|
+
ScoreBreakdown,
|
|
8893
|
+
{
|
|
8894
|
+
factors: signalData.factors,
|
|
8895
|
+
onFactorFeedback: (key, type, detail) => console.log("Signal factor feedback:", { company: item.company, factor: key, type, detail })
|
|
8896
|
+
}
|
|
8897
|
+
), /* @__PURE__ */ React52.createElement(SignalApproval.Actions, null))), !evidenceExpanded && /* @__PURE__ */ React52.createElement(SignalApproval.Actions, null));
|
|
8898
|
+
})(), sections.timeline && timelineEvents.length > 0 && /* @__PURE__ */ React52.createElement("div", { className: "mb-8" }, /* @__PURE__ */ React52.createElement(
|
|
8899
|
+
"button",
|
|
8900
|
+
{
|
|
8901
|
+
type: "button",
|
|
8902
|
+
onClick: () => setShowTimeline((prev) => !prev),
|
|
8903
|
+
className: "group/timeline flex w-full items-center justify-between gap-2 py-2 rounded-md transition-colors hover:bg-muted/40 -mx-2 px-2 cursor-pointer"
|
|
8904
|
+
},
|
|
8905
|
+
/* @__PURE__ */ React52.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React52.createElement("h3", { className: "text-xs font-bold text-muted-foreground uppercase tracking-wider group-hover/timeline:text-foreground transition-colors" }, "Activity timeline"), !showTimeline && /* @__PURE__ */ React52.createElement("span", { className: "text-[11px] text-muted-foreground/60" }, "\xB7 Last activity 1d ago")),
|
|
8906
|
+
/* @__PURE__ */ React52.createElement("div", { className: "flex items-center gap-1.5" }, /* @__PURE__ */ React52.createElement("span", { className: "text-[11px] font-medium text-muted-foreground" }, timelineEvents.length, " events"), /* @__PURE__ */ React52.createElement(ChevronDown, { className: `h-3.5 w-3.5 text-muted-foreground transition-transform duration-200 ${showTimeline ? "rotate-180" : ""}` }))
|
|
8907
|
+
), showTimeline && /* @__PURE__ */ React52.createElement("div", { className: "mt-3" }, /* @__PURE__ */ React52.createElement(TimelineActivity, { events: timelineEvents })))), sections.suggestedActions && /* @__PURE__ */ React52.createElement(SignalApproval.Gate, null, /* @__PURE__ */ React52.createElement(
|
|
8908
|
+
SuggestedActions,
|
|
8909
|
+
{
|
|
8910
|
+
actions: suggestedActions,
|
|
8911
|
+
accountContacts,
|
|
8912
|
+
signature: emailSignature,
|
|
8913
|
+
iconMap,
|
|
8914
|
+
onDismiss: (id) => console.log("Dismiss action:", id),
|
|
8915
|
+
onSend: (id) => console.log("Send action:", id),
|
|
8916
|
+
onSaveDraft: (id) => console.log("Save draft:", id),
|
|
8917
|
+
onDuplicate: handleDuplicate,
|
|
8918
|
+
onOpenAccountDetails: onOpenEntityPanel,
|
|
8919
|
+
onOpenRecentActivity,
|
|
8920
|
+
onMarkComplete: (id) => console.log("Mark complete:", id),
|
|
8921
|
+
onDispatchAgent: (id) => console.log("Dispatch agent:", id)
|
|
8922
|
+
}
|
|
8923
|
+
)))
|
|
8924
|
+
);
|
|
8925
|
+
}
|
|
8926
|
+
function PrototypeInboxView({
|
|
8927
|
+
items,
|
|
8928
|
+
filterCategories,
|
|
8929
|
+
detailSections,
|
|
8930
|
+
accountContacts = [],
|
|
8931
|
+
emailSignature = "",
|
|
8932
|
+
buildSuggestedActions: buildSuggestedActionsProp,
|
|
8933
|
+
buildSourceItems: buildSourceItemsProp,
|
|
8934
|
+
getSignalScore: getSignalScoreProp,
|
|
8935
|
+
getTimelineEvents,
|
|
8936
|
+
iconMap = {},
|
|
8937
|
+
headerActions,
|
|
8938
|
+
onOpenEntityPanel,
|
|
8939
|
+
onOpenRecentActivity
|
|
8940
|
+
}) {
|
|
8941
|
+
const [inboxViewMode, setInboxViewMode] = React52.useState("inbox");
|
|
8942
|
+
const [previousViewMode, setPreviousViewMode] = React52.useState("inbox");
|
|
8943
|
+
const [selectedTask, setSelectedTask] = React52.useState(items[0]);
|
|
8944
|
+
const [inboxAssignee, setInboxAssignee] = React52.useState("me");
|
|
8945
|
+
const [inboxFilters, setInboxFilters] = React52.useState({});
|
|
8946
|
+
const sections = React52.useMemo(
|
|
8947
|
+
() => __spreadValues(__spreadValues({}, DEFAULT_DETAIL_SECTIONS), detailSections),
|
|
8948
|
+
[detailSections]
|
|
8949
|
+
);
|
|
8950
|
+
const resolvedFilterCategories = React52.useMemo(
|
|
8951
|
+
() => filterCategories != null ? filterCategories : [
|
|
8952
|
+
{
|
|
8953
|
+
id: "category",
|
|
8954
|
+
label: "Category",
|
|
8955
|
+
icon: /* @__PURE__ */ React52.createElement(Tag, { className: "h-3.5 w-3.5 text-muted-foreground" }),
|
|
8956
|
+
options: [...new Set(items.map((i) => i.tag1))]
|
|
8957
|
+
},
|
|
8958
|
+
{
|
|
8959
|
+
id: "account",
|
|
8960
|
+
label: "Account",
|
|
8961
|
+
icon: /* @__PURE__ */ React52.createElement(Building, { className: "h-3.5 w-3.5 text-muted-foreground" }),
|
|
8962
|
+
options: [...new Set(items.map((i) => i.company))]
|
|
8963
|
+
}
|
|
8964
|
+
],
|
|
8965
|
+
[filterCategories, items]
|
|
8966
|
+
);
|
|
8967
|
+
const buildSuggestedActions = React52.useMemo(
|
|
8968
|
+
() => buildSuggestedActionsProp != null ? buildSuggestedActionsProp : (() => []),
|
|
8969
|
+
[buildSuggestedActionsProp]
|
|
8970
|
+
);
|
|
8971
|
+
const buildSourceItems = React52.useMemo(
|
|
8972
|
+
() => buildSourceItemsProp != null ? buildSourceItemsProp : (() => []),
|
|
8973
|
+
[buildSourceItemsProp]
|
|
8974
|
+
);
|
|
8975
|
+
const getSignalScore = React52.useMemo(
|
|
8976
|
+
() => getSignalScoreProp != null ? getSignalScoreProp : (() => DEFAULT_SIGNAL_SCORE),
|
|
8977
|
+
[getSignalScoreProp]
|
|
8978
|
+
);
|
|
8979
|
+
const inboxGroups = React52.useMemo(() => {
|
|
8980
|
+
const urgent = items.filter((i) => i.statusColor === "red");
|
|
8981
|
+
const active = items.filter((i) => i.statusColor !== "red");
|
|
8982
|
+
return [
|
|
8983
|
+
{ key: "urgent", label: "Urgent", items: urgent },
|
|
8984
|
+
{ key: "active", label: "Active", items: active }
|
|
8985
|
+
].filter((g) => g.items.length > 0);
|
|
8986
|
+
}, [items]);
|
|
8987
|
+
const renderInboxRow = React52.useCallback(
|
|
8988
|
+
(item) => /* @__PURE__ */ React52.createElement(React52.Fragment, null, /* @__PURE__ */ React52.createElement("span", { className: `h-2 w-2 shrink-0 rounded-full ${item.statusColor === "red" ? "bg-[#f43f5e]" : "bg-[#3b82f6]"}` }), /* @__PURE__ */ React52.createElement("span", { className: "w-[80px] shrink-0 font-mono text-xs text-muted-foreground/80" }, item.id), /* @__PURE__ */ React52.createElement("span", { className: "shrink-0 rounded-md border border-border bg-muted px-1.5 py-0.5 text-[10px] font-medium text-muted-foreground whitespace-nowrap" }, item.tag1), /* @__PURE__ */ React52.createElement("span", { className: "min-w-0 flex-1 truncate text-sm font-semibold text-foreground" }, item.title), /* @__PURE__ */ React52.createElement("span", { className: "w-[120px] shrink-0 truncate text-xs font-medium text-foreground" }, item.company), /* @__PURE__ */ React52.createElement("span", { className: "w-[80px] shrink-0 text-right text-xs text-muted-foreground" }, item.time)),
|
|
8989
|
+
[]
|
|
8990
|
+
);
|
|
8991
|
+
const handleInboxItemSelect = React52.useCallback(
|
|
8992
|
+
(item) => {
|
|
8993
|
+
setSelectedTask(item);
|
|
8994
|
+
if (inboxViewMode === "list") {
|
|
8995
|
+
setPreviousViewMode("list");
|
|
8996
|
+
setInboxViewMode("detail");
|
|
8997
|
+
}
|
|
8998
|
+
},
|
|
8999
|
+
[inboxViewMode]
|
|
9000
|
+
);
|
|
9001
|
+
const handleBackFromDetail = React52.useCallback(() => {
|
|
9002
|
+
setInboxViewMode(previousViewMode);
|
|
9003
|
+
}, [previousViewMode]);
|
|
9004
|
+
const handleViewModeChange = React52.useCallback((id) => {
|
|
9005
|
+
const mode = id;
|
|
9006
|
+
if (mode !== "detail") {
|
|
9007
|
+
setPreviousViewMode(mode);
|
|
9008
|
+
}
|
|
9009
|
+
setInboxViewMode(mode);
|
|
9010
|
+
}, []);
|
|
9011
|
+
React52.useEffect(() => {
|
|
9012
|
+
const mql = window.matchMedia("(max-width: 768px)");
|
|
9013
|
+
function handleChange(e) {
|
|
9014
|
+
if (e.matches && inboxViewMode === "inbox") {
|
|
9015
|
+
setPreviousViewMode("inbox");
|
|
9016
|
+
setInboxViewMode("detail");
|
|
9017
|
+
}
|
|
9018
|
+
}
|
|
9019
|
+
handleChange(mql);
|
|
9020
|
+
mql.addEventListener("change", handleChange);
|
|
9021
|
+
return () => mql.removeEventListener("change", handleChange);
|
|
9022
|
+
}, [inboxViewMode]);
|
|
9023
|
+
const detailViewProps = {
|
|
9024
|
+
item: selectedTask,
|
|
9025
|
+
sections,
|
|
9026
|
+
getSignalScore,
|
|
9027
|
+
buildSuggestedActions,
|
|
9028
|
+
buildSourceItems,
|
|
9029
|
+
getTimelineEvents,
|
|
9030
|
+
accountContacts,
|
|
9031
|
+
emailSignature,
|
|
9032
|
+
iconMap,
|
|
9033
|
+
onOpenEntityPanel,
|
|
9034
|
+
onOpenRecentActivity
|
|
9035
|
+
};
|
|
9036
|
+
return /* @__PURE__ */ React52.createElement("div", { className: "flex h-full w-full flex-col" }, /* @__PURE__ */ React52.createElement("div", { className: "flex items-center justify-between border-b border-border bg-background px-4 py-3 shrink-0" }, /* @__PURE__ */ React52.createElement("div", { className: "flex items-center gap-3" }, inboxViewMode === "detail" ? /* @__PURE__ */ React52.createElement(
|
|
9037
|
+
"button",
|
|
9038
|
+
{
|
|
9039
|
+
type: "button",
|
|
9040
|
+
onClick: handleBackFromDetail,
|
|
9041
|
+
className: "flex items-center gap-2 text-sm font-medium text-muted-foreground hover:text-foreground transition-colors"
|
|
9042
|
+
},
|
|
9043
|
+
/* @__PURE__ */ React52.createElement(ArrowLeft, { className: "h-4 w-4" }),
|
|
9044
|
+
"Back"
|
|
9045
|
+
) : null, /* @__PURE__ */ React52.createElement("h2", { className: "text-lg font-semibold text-foreground" }, "Inbox"), /* @__PURE__ */ React52.createElement(Badge, { variant: "secondary", className: "bg-muted text-muted-foreground hover:bg-muted font-medium text-[11px] px-2 py-0.5 rounded-md" }, items.length)), /* @__PURE__ */ React52.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React52.createElement(
|
|
9046
|
+
ViewModeToggle,
|
|
9047
|
+
{
|
|
9048
|
+
modes: [
|
|
9049
|
+
{ id: "inbox", icon: /* @__PURE__ */ React52.createElement(Columns2, { className: "h-3.5 w-3.5" }), label: "Split View" },
|
|
9050
|
+
{ id: "list", icon: /* @__PURE__ */ React52.createElement(LayoutList, { className: "h-3.5 w-3.5" }), label: "List View" },
|
|
9051
|
+
{ id: "detail", icon: /* @__PURE__ */ React52.createElement(Square, { className: "h-3.5 w-3.5" }), label: "Detail View" }
|
|
9052
|
+
],
|
|
9053
|
+
activeMode: inboxViewMode,
|
|
9054
|
+
onModeChange: handleViewModeChange
|
|
9055
|
+
}
|
|
9056
|
+
), headerActions)), inboxViewMode === "detail" ? /* @__PURE__ */ React52.createElement("div", { className: "flex h-full flex-1 flex-col overflow-hidden bg-background" }, /* @__PURE__ */ React52.createElement("div", { className: "flex-1 overflow-y-auto" }, /* @__PURE__ */ React52.createElement(DetailView, __spreadValues({}, detailViewProps)))) : inboxViewMode === "list" ? /* @__PURE__ */ React52.createElement("div", { className: "flex-1 overflow-y-auto bg-background" }, /* @__PURE__ */ React52.createElement(
|
|
9057
|
+
InboxToolbar,
|
|
9058
|
+
{
|
|
9059
|
+
assignee: inboxAssignee,
|
|
9060
|
+
onAssigneeChange: setInboxAssignee,
|
|
9061
|
+
filterCategories: resolvedFilterCategories,
|
|
9062
|
+
selectedFilters: inboxFilters,
|
|
9063
|
+
onFilterChange: (catId, val) => setInboxFilters((prev) => __spreadProps(__spreadValues({}, prev), { [catId]: val })),
|
|
9064
|
+
onClearFilters: () => setInboxFilters({})
|
|
9065
|
+
}
|
|
9066
|
+
), /* @__PURE__ */ React52.createElement(
|
|
9067
|
+
GroupedListView,
|
|
9068
|
+
{
|
|
9069
|
+
groups: inboxGroups,
|
|
9070
|
+
renderRow: renderInboxRow,
|
|
9071
|
+
getItemKey: (item) => item.id,
|
|
9072
|
+
selectedKey: selectedTask.id,
|
|
9073
|
+
onItemClick: handleInboxItemSelect,
|
|
9074
|
+
emptyMessage: "No inbox items"
|
|
9075
|
+
}
|
|
9076
|
+
)) : (
|
|
9077
|
+
/* Split view */
|
|
9078
|
+
/* @__PURE__ */ React52.createElement("div", { className: "flex h-full min-h-0 w-full flex-1" }, /* @__PURE__ */ React52.createElement("div", { className: "flex h-full min-w-[380px] w-[380px] flex-col border-r border-border bg-background shadow-sm z-10" }, /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col gap-4 border-b border-border p-4 shrink-0" }, /* @__PURE__ */ React52.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React52.createElement("div", { className: "flex items-center gap-1" }, /* @__PURE__ */ React52.createElement(Button, { variant: "outline", size: "icon", className: "h-8 w-8 text-muted-foreground" }, /* @__PURE__ */ React52.createElement(Eye, { className: "w-4 h-4" })), /* @__PURE__ */ React52.createElement(Button, { variant: "outline", size: "icon", className: "h-8 w-8 text-muted-foreground" }, /* @__PURE__ */ React52.createElement(FileText, { className: "w-4 h-4" })), /* @__PURE__ */ React52.createElement(Button, { variant: "outline", size: "icon", className: "h-8 w-8 text-muted-foreground" }, /* @__PURE__ */ React52.createElement(Clock, { className: "w-4 h-4" })), /* @__PURE__ */ React52.createElement(Button, { variant: "outline", size: "icon", className: "h-8 w-8 text-muted-foreground" }, /* @__PURE__ */ React52.createElement(CheckSquare, { className: "w-4 h-4" }))), /* @__PURE__ */ React52.createElement(Button, { size: "sm", className: "h-8 px-4 bg-foreground text-background hover:bg-foreground/90 text-xs font-semibold gap-1.5 rounded-md" }, /* @__PURE__ */ React52.createElement(Plus, { className: "w-4 h-4" }), " Add Task")), /* @__PURE__ */ React52.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React52.createElement("div", { className: "relative flex-1" }, /* @__PURE__ */ React52.createElement(Filter, { className: "absolute left-2.5 top-1.5 w-4 h-4 text-muted-foreground" }), /* @__PURE__ */ React52.createElement(Input, { className: "h-8 pl-8 text-xs bg-background border-border rounded-md shadow-none", placeholder: "Categories" })), /* @__PURE__ */ React52.createElement(Button, { variant: "outline", size: "sm", className: "h-8 text-xs font-medium rounded-md shadow-none" }, /* @__PURE__ */ React52.createElement(Building, { className: "w-3.5 h-3.5 mr-1.5" }), " Accounts")), /* @__PURE__ */ React52.createElement("div", { className: "flex items-center gap-1.5 overflow-x-auto pb-1 mt-1 scrollbar-hide" }, /* @__PURE__ */ React52.createElement(Button, { size: "sm", className: "h-7 rounded-full px-3.5 text-[11px] font-semibold bg-foreground text-background hover:bg-foreground/90 shadow-none" }, "All"), /* @__PURE__ */ React52.createElement(Button, { variant: "outline", size: "sm", className: "h-7 rounded-full px-3.5 text-[11px] font-medium bg-transparent border-border text-muted-foreground hover:text-foreground shadow-none" }, "Outbound (10)"), /* @__PURE__ */ React52.createElement(Button, { variant: "outline", size: "sm", className: "h-7 rounded-full px-3.5 text-[11px] font-medium bg-transparent border-border text-muted-foreground hover:text-foreground shadow-none" }, "Retention (12)"), /* @__PURE__ */ React52.createElement(Button, { variant: "outline", size: "sm", className: "h-7 rounded-full px-3.5 text-[11px] font-medium bg-transparent border-border text-muted-foreground hover:text-foreground shadow-none" }, "Relationship (9)"))), /* @__PURE__ */ React52.createElement("div", { className: "flex-1 overflow-y-auto" }, items.map((item) => /* @__PURE__ */ React52.createElement(
|
|
9079
|
+
"div",
|
|
9080
|
+
{
|
|
9081
|
+
key: item.id,
|
|
9082
|
+
onClick: () => setSelectedTask(item),
|
|
9083
|
+
className: `cursor-pointer border-b border-border p-4 transition-colors group relative border-l-2 ${selectedTask.id === item.id ? "bg-muted/30 border-l-brand-purple" : "bg-transparent border-l-transparent hover:bg-muted/10"}`
|
|
9084
|
+
},
|
|
9085
|
+
/* @__PURE__ */ React52.createElement("div", { className: "mb-1.5 flex items-center gap-2" }, /* @__PURE__ */ React52.createElement("span", { className: "min-w-0 truncate text-[13px] font-semibold text-foreground leading-tight" }, item.title), selectedTask.id !== item.id && item.tag1 && /* @__PURE__ */ React52.createElement("span", { className: "shrink-0 rounded-md border border-border bg-muted/60 px-2 py-0.5 text-[10px] font-medium text-muted-foreground" }, item.tag1), /* @__PURE__ */ React52.createElement("span", { className: "ml-auto shrink-0 text-[10px] font-medium text-muted-foreground/80" }, item.time)),
|
|
9086
|
+
/* @__PURE__ */ React52.createElement("div", { className: "flex items-start gap-2 mt-2" }, /* @__PURE__ */ React52.createElement("span", { className: `w-1.5 h-1.5 rounded-full shrink-0 mt-1.5 ${item.statusColor === "red" ? "bg-[#f43f5e]" : "bg-[#3b82f6]"}` }), /* @__PURE__ */ React52.createElement("span", { className: "text-xs text-muted-foreground leading-tight" }, item.details)),
|
|
9087
|
+
/* @__PURE__ */ React52.createElement("div", { className: `absolute right-4 bottom-4 flex items-center gap-1.5 bg-background shadow-sm rounded-md px-1 py-0.5 border border-border ${selectedTask.id === item.id ? "opacity-100" : "opacity-0 group-hover:opacity-100 transition-opacity"}` }, /* @__PURE__ */ React52.createElement(Button, { variant: "ghost", size: "icon", className: "h-6 w-6 rounded text-muted-foreground hover:text-foreground" }, /* @__PURE__ */ React52.createElement(CheckSquare, { className: "w-3.5 h-3.5" })), /* @__PURE__ */ React52.createElement(Button, { variant: "ghost", size: "icon", className: "h-6 w-6 rounded text-muted-foreground hover:text-foreground" }, /* @__PURE__ */ React52.createElement(Clock, { className: "w-3.5 h-3.5" })))
|
|
9088
|
+
)), /* @__PURE__ */ React52.createElement("div", { className: "p-4" }, /* @__PURE__ */ React52.createElement(Button, { variant: "outline", size: "sm", className: "h-8 text-xs font-semibold rounded-md shadow-none" }, "See more")))), /* @__PURE__ */ React52.createElement("div", { className: "flex h-full flex-1 flex-col overflow-hidden bg-background" }, /* @__PURE__ */ React52.createElement("div", { className: "flex-1 overflow-y-auto" }, /* @__PURE__ */ React52.createElement(DetailView, __spreadValues({}, detailViewProps)))))
|
|
9089
|
+
));
|
|
9090
|
+
}
|
|
9091
|
+
var DEFAULT_METRICS = [
|
|
9092
|
+
{
|
|
9093
|
+
title: "Referrals at Risk",
|
|
9094
|
+
value: 28,
|
|
9095
|
+
change: { value: "2 vs last week", direction: "up", isGood: false },
|
|
9096
|
+
showExternalLink: true,
|
|
9097
|
+
showInfo: true,
|
|
9098
|
+
dataPoints: [
|
|
9099
|
+
{ label: "No Contact", value: 6, color: "#166534" },
|
|
9100
|
+
{ label: "Stalled", value: 4, color: "#22c55e" },
|
|
9101
|
+
{ label: "Needs Attn", value: 8, color: "#6ee7b7" },
|
|
9102
|
+
{ label: "Auth Delay", value: 5, color: "#ccfbf1" },
|
|
9103
|
+
{ label: "DCS Hold", value: 3, color: "#99f6e4" },
|
|
9104
|
+
{ label: "Expired Referral", value: 2, color: "#f1f5f9" }
|
|
9105
|
+
]
|
|
9106
|
+
},
|
|
9107
|
+
{
|
|
9108
|
+
title: "Dropped from Pipeline",
|
|
9109
|
+
value: 47,
|
|
9110
|
+
change: { value: "12 vs last week", direction: "down", isGood: true },
|
|
9111
|
+
showExternalLink: true,
|
|
9112
|
+
showInfo: true,
|
|
9113
|
+
dataPoints: [
|
|
9114
|
+
{ label: "No Contact", value: 12, color: "#166534" },
|
|
9115
|
+
{ label: "Ins. Denied", value: 15, color: "#22c55e" },
|
|
9116
|
+
{ label: "Refused", value: 6, color: "#6ee7b7" },
|
|
9117
|
+
{ label: "Intake Stalled", value: 8, color: "#ccfbf1" },
|
|
9118
|
+
{ label: "Other", value: 6, color: "#f1f5f9" }
|
|
9119
|
+
]
|
|
9120
|
+
},
|
|
9121
|
+
{
|
|
9122
|
+
title: "Time to Schedule",
|
|
9123
|
+
value: "4.2 days",
|
|
9124
|
+
subtitle: "median, referrals \u2192 scheduled",
|
|
9125
|
+
change: { value: "0.8d vs last week", direction: "down", isGood: true },
|
|
9126
|
+
footerText: "Slowest stage: Contact \u2192 Intake (1.5d)",
|
|
9127
|
+
showInfo: true
|
|
9128
|
+
},
|
|
9129
|
+
{
|
|
9130
|
+
title: "Conversion Rate",
|
|
9131
|
+
value: "53%",
|
|
9132
|
+
subtitle: "referrals \u2192 scheduled",
|
|
9133
|
+
change: { value: "3% vs last week", direction: "up", isGood: true },
|
|
9134
|
+
footerText: "Largest drop-off: No Contact (22%)",
|
|
9135
|
+
showInfo: true
|
|
9136
|
+
}
|
|
9137
|
+
];
|
|
9138
|
+
var DEFAULT_EXPANDED_METRICS = [
|
|
9139
|
+
{
|
|
9140
|
+
title: "Avg Handle Time",
|
|
9141
|
+
value: "1.2",
|
|
9142
|
+
unit: "days",
|
|
9143
|
+
change: { value: "0.3d vs last week", direction: "down", isGood: true },
|
|
9144
|
+
footerText: "Fastest stage: Verification (0.2d)",
|
|
9145
|
+
showInfo: true
|
|
9146
|
+
},
|
|
9147
|
+
{
|
|
9148
|
+
title: "Conversion Rate",
|
|
9149
|
+
value: "78%",
|
|
9150
|
+
change: { value: "2% vs last week", direction: "up", isGood: true },
|
|
9151
|
+
footerText: "Top source: Internal Referrals (85%)",
|
|
9152
|
+
showInfo: true
|
|
9153
|
+
},
|
|
9154
|
+
{
|
|
9155
|
+
title: "Pending Intakes",
|
|
9156
|
+
value: "124",
|
|
9157
|
+
change: { value: "15 vs last week", direction: "up", isGood: false },
|
|
9158
|
+
footerText: "Requires immediate attention: 32",
|
|
9159
|
+
showInfo: true
|
|
9160
|
+
},
|
|
9161
|
+
{
|
|
9162
|
+
title: "Patient Satisfaction",
|
|
9163
|
+
value: "4.8",
|
|
9164
|
+
unit: "/ 5",
|
|
9165
|
+
change: { value: "0.1 vs last month", direction: "up", isGood: true },
|
|
9166
|
+
footerText: "Based on 450 recent surveys",
|
|
9167
|
+
showInfo: true
|
|
9168
|
+
}
|
|
9169
|
+
];
|
|
9170
|
+
function PrototypeInsightsView({
|
|
9171
|
+
tabs,
|
|
9172
|
+
coaching,
|
|
9173
|
+
metrics,
|
|
9174
|
+
expandedMetrics,
|
|
9175
|
+
dashboardCards,
|
|
9176
|
+
analytics,
|
|
9177
|
+
assistantName,
|
|
9178
|
+
headerActions,
|
|
9179
|
+
onNavigateToInbox
|
|
9180
|
+
}) {
|
|
9181
|
+
var _a, _b, _c, _d, _e, _f;
|
|
9182
|
+
const showOverview = (tabs == null ? void 0 : tabs.overview) !== false;
|
|
9183
|
+
const showAnalytics = (tabs == null ? void 0 : tabs.analytics) !== false;
|
|
9184
|
+
const [insightsTab, setInsightsTab] = React52.useState(
|
|
9185
|
+
showOverview ? "overview" : "analytics"
|
|
9186
|
+
);
|
|
9187
|
+
const [showAllMetrics, setShowAllMetrics] = React52.useState(false);
|
|
9188
|
+
const [showCoaching, setShowCoaching] = React52.useState((coaching == null ? void 0 : coaching.enabled) !== false);
|
|
9189
|
+
const resolvedMetrics = metrics != null ? metrics : DEFAULT_METRICS;
|
|
9190
|
+
const resolvedExpandedMetrics = expandedMetrics != null ? expandedMetrics : DEFAULT_EXPANDED_METRICS;
|
|
9191
|
+
const cards = {
|
|
9192
|
+
topTasks: (dashboardCards == null ? void 0 : dashboardCards.topTasks) !== false,
|
|
9193
|
+
upcomingMeetings: (dashboardCards == null ? void 0 : dashboardCards.upcomingMeetings) !== false,
|
|
9194
|
+
recentlyCompleted: (dashboardCards == null ? void 0 : dashboardCards.recentlyCompleted) !== false,
|
|
9195
|
+
checkIns: (dashboardCards == null ? void 0 : dashboardCards.checkIns) !== false
|
|
9196
|
+
};
|
|
9197
|
+
return /* @__PURE__ */ React52.createElement("div", { className: "mx-auto max-w-7xl space-y-8 p-6 md:p-8" }, /* @__PURE__ */ React52.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React52.createElement("div", null, /* @__PURE__ */ React52.createElement("h2", { className: "mb-1 text-xl font-bold tracking-tight text-foreground" }, "Insights & Overview"), /* @__PURE__ */ React52.createElement("p", { className: "text-sm text-muted-foreground" }, "Monitor your key performance indicators and daily tasks.")), /* @__PURE__ */ React52.createElement("div", { className: "flex items-center gap-3" }, assistantName && /* @__PURE__ */ React52.createElement(Button, { variant: "outline", size: "sm", className: "h-8 gap-2 text-xs font-semibold rounded-full px-4 border-foreground text-foreground hover:bg-muted/50" }, /* @__PURE__ */ React52.createElement(MessageCircle, { className: "w-3.5 h-3.5" }), "Talk to ", assistantName), headerActions)), showOverview && showAnalytics && /* @__PURE__ */ React52.createElement("div", { className: "flex items-center gap-1 border-b border-border" }, /* @__PURE__ */ React52.createElement(
|
|
9198
|
+
"button",
|
|
9199
|
+
{
|
|
9200
|
+
type: "button",
|
|
9201
|
+
onClick: () => setInsightsTab("overview"),
|
|
9202
|
+
className: `relative px-4 py-2 text-sm font-medium transition-colors ${insightsTab === "overview" ? "text-foreground" : "text-muted-foreground hover:text-foreground"}`
|
|
9203
|
+
},
|
|
9204
|
+
/* @__PURE__ */ React52.createElement("span", { className: "flex items-center gap-2" }, /* @__PURE__ */ React52.createElement(BarChart2, { className: "h-3.5 w-3.5" }), "Overview"),
|
|
9205
|
+
insightsTab === "overview" && /* @__PURE__ */ React52.createElement("span", { className: "absolute bottom-0 left-0 right-0 h-0.5 bg-foreground rounded-full" })
|
|
9206
|
+
), /* @__PURE__ */ React52.createElement(
|
|
9207
|
+
"button",
|
|
9208
|
+
{
|
|
9209
|
+
type: "button",
|
|
9210
|
+
onClick: () => setInsightsTab("analytics"),
|
|
9211
|
+
className: `relative px-4 py-2 text-sm font-medium transition-colors ${insightsTab === "analytics" ? "text-foreground" : "text-muted-foreground hover:text-foreground"}`
|
|
9212
|
+
},
|
|
9213
|
+
/* @__PURE__ */ React52.createElement("span", { className: "flex items-center gap-2" }, /* @__PURE__ */ React52.createElement(TrendingUp, { className: "h-3.5 w-3.5" }), "Analytics"),
|
|
9214
|
+
insightsTab === "analytics" && /* @__PURE__ */ React52.createElement("span", { className: "absolute bottom-0 left-0 right-0 h-0.5 bg-foreground rounded-full" })
|
|
9215
|
+
)), insightsTab === "overview" && showOverview && /* @__PURE__ */ React52.createElement(React52.Fragment, null, showCoaching && /* @__PURE__ */ React52.createElement("div", { className: "border border-border rounded-xl p-6 relative bg-card shadow-sm" }, /* @__PURE__ */ React52.createElement(
|
|
9216
|
+
Button,
|
|
9217
|
+
{
|
|
9218
|
+
variant: "ghost",
|
|
9219
|
+
size: "icon",
|
|
9220
|
+
className: "absolute top-4 right-4 h-6 w-6 text-muted-foreground hover:text-foreground",
|
|
9221
|
+
onClick: () => setShowCoaching(false)
|
|
9222
|
+
},
|
|
9223
|
+
/* @__PURE__ */ React52.createElement(X, { className: "w-4 h-4" })
|
|
9224
|
+
), /* @__PURE__ */ React52.createElement("div", { className: "flex items-center gap-2 mb-2" }, /* @__PURE__ */ React52.createElement("h3", { className: "font-bold text-foreground text-sm" }, "Daily Coaching Insight")), /* @__PURE__ */ React52.createElement("p", { className: "text-sm text-muted-foreground leading-relaxed mb-4 max-w-4xl" }, "We analyze your pipeline activity, recent communications, and account health to provide personalized recommendations for your day."), /* @__PURE__ */ React52.createElement("div", { className: "bg-brand-purple/10 rounded-lg p-5 text-[13px] text-foreground font-medium italic border border-brand-purple/20 relative" }, /* @__PURE__ */ React52.createElement("div", { className: "absolute top-0 left-0 w-1 h-full bg-brand-purple rounded-l-lg" }), (_a = coaching == null ? void 0 : coaching.message) != null ? _a : "\u201CGreat job catching the churn risk on Lunchclub yesterday. Today, focus on pushing the stalled intake pipeline. Try making 2 more touches on accounts that have gone dark this week.\u201D"), /* @__PURE__ */ React52.createElement("div", { className: "mt-4 flex items-center gap-2" }, /* @__PURE__ */ React52.createElement(Button, { variant: "outline", size: "sm", className: "h-7 text-xs text-muted-foreground hover:text-foreground shadow-none" }, /* @__PURE__ */ React52.createElement(ThumbsUp, { className: "w-3.5 h-3.5 mr-1.5" }), " Helpful"), /* @__PURE__ */ React52.createElement(Button, { variant: "outline", size: "sm", className: "h-7 text-xs text-muted-foreground hover:text-foreground shadow-none" }, /* @__PURE__ */ React52.createElement(ThumbsDown, { className: "w-3.5 h-3.5 mr-1.5" }), " Not Helpful"), /* @__PURE__ */ React52.createElement("div", { className: "relative max-w-sm ml-2 flex-1" }, /* @__PURE__ */ React52.createElement(Input, { placeholder: "Provide additional feedback...", className: "h-7 text-xs shadow-none border-border bg-muted/20 w-full" })))), /* @__PURE__ */ React52.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ React52.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React52.createElement("h3", { className: "text-sm font-semibold text-foreground uppercase tracking-wider" }, "Key Metrics"), resolvedExpandedMetrics.length > 0 && /* @__PURE__ */ React52.createElement(
|
|
9225
|
+
Button,
|
|
9226
|
+
{
|
|
9227
|
+
variant: "ghost",
|
|
9228
|
+
size: "sm",
|
|
9229
|
+
className: "text-xs text-muted-foreground hover:text-foreground",
|
|
9230
|
+
onClick: () => setShowAllMetrics(!showAllMetrics)
|
|
9231
|
+
},
|
|
9232
|
+
showAllMetrics ? "Hide additional metrics" : "Show more metrics"
|
|
9233
|
+
)), /* @__PURE__ */ React52.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4" }, resolvedMetrics.map((m, i) => /* @__PURE__ */ React52.createElement(MetricCard, __spreadValues({ key: i }, m))), showAllMetrics && resolvedExpandedMetrics.map((m, i) => /* @__PURE__ */ React52.createElement(MetricCard, __spreadValues({ key: `exp-${i}` }, m))))), /* @__PURE__ */ React52.createElement("div", { className: "grid grid-cols-1 lg:grid-cols-3 gap-6 mt-8" }, /* @__PURE__ */ React52.createElement("div", { className: "lg:col-span-2 space-y-6" }, cards.topTasks && /* @__PURE__ */ React52.createElement(TopTasksCard, { onViewAll: onNavigateToInbox }), /* @__PURE__ */ React52.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6" }, cards.upcomingMeetings && /* @__PURE__ */ React52.createElement(UpcomingMeetingsCard, null), cards.recentlyCompleted && /* @__PURE__ */ React52.createElement(RecentlyCompletedCard, null))), /* @__PURE__ */ React52.createElement("div", { className: "space-y-6" }, cards.checkIns && /* @__PURE__ */ React52.createElement(CheckInsCard, null)))), insightsTab === "analytics" && showAnalytics && /* @__PURE__ */ React52.createElement("div", { className: "space-y-6" }, (analytics == null ? void 0 : analytics.pipeline) && /* @__PURE__ */ React52.createElement(
|
|
9234
|
+
PipelineOverview,
|
|
9235
|
+
{
|
|
9236
|
+
stages: analytics.pipeline.stages,
|
|
9237
|
+
stageMetrics: analytics.pipeline.stageMetrics,
|
|
9238
|
+
stageTimings: analytics.pipeline.stageTimings,
|
|
9239
|
+
filterBreakdowns: analytics.pipeline.filterBreakdowns
|
|
9240
|
+
}
|
|
9241
|
+
), (analytics == null ? void 0 : analytics.volumeChart) && /* @__PURE__ */ React52.createElement(
|
|
9242
|
+
ReportCard,
|
|
9243
|
+
{
|
|
9244
|
+
title: "Volume Analysis",
|
|
9245
|
+
subtitle: "Referral volume broken down by facility over time",
|
|
9246
|
+
filterOptions: analytics.volumeChart.filterOptions,
|
|
9247
|
+
selectedFilter: (_c = (_b = analytics.volumeChart.filterOptions) == null ? void 0 : _b[0]) == null ? void 0 : _c.value
|
|
9248
|
+
},
|
|
9249
|
+
/* @__PURE__ */ React52.createElement(
|
|
9250
|
+
VolumeAnalysisChart,
|
|
9251
|
+
{
|
|
9252
|
+
data: analytics.volumeChart.data,
|
|
9253
|
+
dataKeys: analytics.volumeChart.dataKeys
|
|
9254
|
+
}
|
|
9255
|
+
)
|
|
9256
|
+
), /* @__PURE__ */ React52.createElement("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-6" }, (analytics == null ? void 0 : analytics.donutChart) && /* @__PURE__ */ React52.createElement(ReportCard, { title: "Risk Breakdown", subtitle: "Referrals at risk by category" }, /* @__PURE__ */ React52.createElement("div", { className: "flex items-center justify-center" }, /* @__PURE__ */ React52.createElement(
|
|
9257
|
+
DonutChart,
|
|
9258
|
+
{
|
|
9259
|
+
data: analytics.donutChart.data,
|
|
9260
|
+
centerLabel: analytics.donutChart.centerLabel,
|
|
9261
|
+
showLegend: true
|
|
9262
|
+
}
|
|
9263
|
+
))), (analytics == null ? void 0 : analytics.trendChart) && /* @__PURE__ */ React52.createElement(
|
|
9264
|
+
ReportCard,
|
|
9265
|
+
{
|
|
9266
|
+
title: "Referrals Over Time",
|
|
9267
|
+
subtitle: "Weekly appointment trends",
|
|
9268
|
+
toggleOptions: analytics.trendChart.toggleOptions,
|
|
9269
|
+
selectedToggle: (_d = analytics.trendChart.toggleOptions) == null ? void 0 : _d[0]
|
|
9270
|
+
},
|
|
9271
|
+
/* @__PURE__ */ React52.createElement(
|
|
9272
|
+
TrendAreaChart,
|
|
9273
|
+
{
|
|
9274
|
+
data: analytics.trendChart.data,
|
|
9275
|
+
series: analytics.trendChart.series,
|
|
9276
|
+
xAxisKey: (_e = analytics.trendChart.xAxisKey) != null ? _e : "name",
|
|
9277
|
+
height: (_f = analytics.trendChart.height) != null ? _f : 220
|
|
9278
|
+
}
|
|
9279
|
+
)
|
|
9280
|
+
)), ((analytics == null ? void 0 : analytics.barChart) || (analytics == null ? void 0 : analytics.barList)) && /* @__PURE__ */ React52.createElement("div", { className: "grid grid-cols-1 lg:grid-cols-3 gap-6" }, (analytics == null ? void 0 : analytics.barChart) && /* @__PURE__ */ React52.createElement(
|
|
9281
|
+
ReportCard,
|
|
9282
|
+
{
|
|
9283
|
+
title: "Outreach Activity",
|
|
9284
|
+
subtitle: "Daily outreach by channel",
|
|
9285
|
+
className: "lg:col-span-2"
|
|
9286
|
+
},
|
|
9287
|
+
/* @__PURE__ */ React52.createElement(
|
|
9288
|
+
BarChartComponent,
|
|
9289
|
+
{
|
|
9290
|
+
data: analytics.barChart.data,
|
|
9291
|
+
bars: analytics.barChart.bars
|
|
9292
|
+
}
|
|
9293
|
+
)
|
|
9294
|
+
), (analytics == null ? void 0 : analytics.barList) && /* @__PURE__ */ React52.createElement(ReportCard, { title: "Top Activity Types", subtitle: "By completion percentage" }, /* @__PURE__ */ React52.createElement(
|
|
9295
|
+
StyledBarList,
|
|
9296
|
+
{
|
|
9297
|
+
data: analytics.barList.data,
|
|
9298
|
+
valueFormatter: analytics.barList.valueFormatter
|
|
9299
|
+
}
|
|
9300
|
+
)))));
|
|
9301
|
+
}
|
|
9302
|
+
var DEFAULT_FILTER_TABS = [
|
|
9303
|
+
{ label: "All Accounts", count: 6, variant: "default" },
|
|
9304
|
+
{ label: "Needs Attention", count: 11, variant: "attention" },
|
|
9305
|
+
{ label: "Recent", count: 7, variant: "ghost" }
|
|
9306
|
+
];
|
|
9307
|
+
function PrototypeAccountsView({
|
|
9308
|
+
filterTabs,
|
|
9309
|
+
headerActions,
|
|
9310
|
+
onRowClick
|
|
9311
|
+
}) {
|
|
9312
|
+
const tabs = filterTabs != null ? filterTabs : DEFAULT_FILTER_TABS;
|
|
9313
|
+
return /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col h-full w-full bg-background relative" }, headerActions && /* @__PURE__ */ React52.createElement("div", { className: "absolute top-4 right-4 z-10" }, headerActions), /* @__PURE__ */ React52.createElement("div", { className: "px-4 py-3 border-b border-border flex items-center gap-2 overflow-x-auto shrink-0 mt-2" }, tabs.map((tab, i) => {
|
|
9314
|
+
if (tab.variant === "attention") {
|
|
9315
|
+
return /* @__PURE__ */ React52.createElement(Button, { key: i, size: "sm", className: "h-7 text-xs rounded-md bg-emerald-600 hover:bg-emerald-700 text-white font-medium" }, tab.label, tab.count != null && /* @__PURE__ */ React52.createElement(Badge, { variant: "secondary", className: "ml-2 h-4 px-1.5 text-[10px] bg-white/20 text-white border-transparent" }, tab.count));
|
|
9316
|
+
}
|
|
9317
|
+
if (tab.variant === "ghost") {
|
|
9318
|
+
return /* @__PURE__ */ React52.createElement(Button, { key: i, variant: "ghost", size: "sm", className: "h-7 text-xs rounded-md border border-border bg-transparent font-medium" }, tab.label, tab.count != null && /* @__PURE__ */ React52.createElement(Badge, { variant: "secondary", className: "ml-2 h-4 px-1.5 text-[10px]" }, tab.count));
|
|
9319
|
+
}
|
|
9320
|
+
return /* @__PURE__ */ React52.createElement(Button, { key: i, variant: "secondary", size: "sm", className: "h-7 text-xs rounded-md bg-muted font-medium" }, tab.label, tab.count != null && /* @__PURE__ */ React52.createElement(Badge, { variant: "outline", className: "ml-2 h-4 px-1.5 text-[10px]" }, tab.count));
|
|
9321
|
+
})), /* @__PURE__ */ React52.createElement("div", { className: "flex-1 overflow-auto" }, /* @__PURE__ */ React52.createElement(DataTable, { onRowClick })));
|
|
9322
|
+
}
|
|
9323
|
+
function PrototypeWorkQueueView({
|
|
9324
|
+
headerActions
|
|
9325
|
+
}) {
|
|
9326
|
+
return /* @__PURE__ */ React52.createElement("div", { className: "relative flex h-full w-full flex-col bg-background" }, headerActions && /* @__PURE__ */ React52.createElement("div", { className: "absolute top-4 right-4 z-10" }, headerActions), /* @__PURE__ */ React52.createElement("div", { className: "flex-1 overflow-auto" }, /* @__PURE__ */ React52.createElement(ItemList, null)));
|
|
9327
|
+
}
|
|
9328
|
+
|
|
9329
|
+
// registry/new-york/ui/prototype-shell.tsx
|
|
9330
|
+
var VIEW_KEY_MAP = {
|
|
9331
|
+
inbox: "inbox",
|
|
9332
|
+
dashboard: "insights",
|
|
9333
|
+
insights: "insights",
|
|
9334
|
+
accounts: "accounts",
|
|
9335
|
+
activity: "workQueue",
|
|
9336
|
+
workQueue: "workQueue",
|
|
9337
|
+
"work-queue": "workQueue"
|
|
9338
|
+
};
|
|
9339
|
+
var DEFAULT_ENTITY_SECTIONS = [
|
|
9340
|
+
{ type: "details" },
|
|
9341
|
+
{ type: "contacts" },
|
|
9342
|
+
{ type: "recentActivity" },
|
|
9343
|
+
{ type: "connectedApps" },
|
|
9344
|
+
{ type: "systemActivity" }
|
|
9345
|
+
];
|
|
9346
|
+
function PrototypeShell({
|
|
9347
|
+
config,
|
|
9348
|
+
headerActions,
|
|
9349
|
+
entityPanelChildren
|
|
9350
|
+
}) {
|
|
9351
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
9352
|
+
const [currentView, setCurrentView] = React52.useState(config.defaultView);
|
|
9353
|
+
const [isEntityPanelOpen, setIsEntityPanelOpen] = React52.useState(false);
|
|
9354
|
+
const navigableViews = React52.useMemo(() => {
|
|
9355
|
+
if (config.navigableViews) return config.navigableViews;
|
|
9356
|
+
const keys = [];
|
|
9357
|
+
if (config.views.inbox) keys.push("inbox");
|
|
9358
|
+
if (config.views.accounts) keys.push("accounts");
|
|
9359
|
+
if (config.views.workQueue) keys.push("activity", "workQueue", "work-queue");
|
|
9360
|
+
if (config.views.insights) keys.push("dashboard", "insights");
|
|
9361
|
+
return keys;
|
|
9362
|
+
}, [config.navigableViews, config.views]);
|
|
9363
|
+
const handleNavigate = React52.useCallback(
|
|
9364
|
+
(id) => {
|
|
9365
|
+
if (navigableViews.includes(id)) {
|
|
9366
|
+
setCurrentView(id);
|
|
9367
|
+
}
|
|
9368
|
+
},
|
|
9369
|
+
[navigableViews]
|
|
9370
|
+
);
|
|
9371
|
+
const handleOpenEntityPanel = React52.useCallback(() => setIsEntityPanelOpen(true), []);
|
|
9372
|
+
const handleOpenRecentActivity = React52.useCallback(() => {
|
|
9373
|
+
setIsEntityPanelOpen(true);
|
|
9374
|
+
setTimeout(() => {
|
|
9375
|
+
var _a2;
|
|
9376
|
+
(_a2 = document.getElementById("entity-recent-activity")) == null ? void 0 : _a2.scrollIntoView({ behavior: "smooth", block: "start" });
|
|
9377
|
+
}, 150);
|
|
9378
|
+
}, []);
|
|
9379
|
+
const resolvedViewKey = (_a = VIEW_KEY_MAP[currentView]) != null ? _a : currentView;
|
|
9380
|
+
const entitySections = (_c = (_b = config.entityPanel) == null ? void 0 : _b.sections) != null ? _c : DEFAULT_ENTITY_SECTIONS;
|
|
9381
|
+
const entityIcons = (_e = (_d = config.entityPanel) == null ? void 0 : _d.icons) != null ? _e : {};
|
|
9382
|
+
return /* @__PURE__ */ React52.createElement("div", { className: "flex h-screen w-full overflow-hidden bg-background font-sans" }, /* @__PURE__ */ React52.createElement(
|
|
9383
|
+
QuickActionSidebarNav,
|
|
9384
|
+
{
|
|
9385
|
+
className: "z-20 h-screen shrink-0",
|
|
9386
|
+
navSections: config.sidebar,
|
|
9387
|
+
activeItemId: currentView,
|
|
9388
|
+
onNavigate: handleNavigate,
|
|
9389
|
+
onCreateTask: (draft) => {
|
|
9390
|
+
console.log("Quick action created:", draft);
|
|
9391
|
+
}
|
|
9392
|
+
}
|
|
9393
|
+
), /* @__PURE__ */ React52.createElement("main", { className: "flex min-w-0 flex-1 flex-col overflow-hidden bg-background" }, /* @__PURE__ */ React52.createElement("div", { className: "relative h-full flex-1 overflow-auto" }, resolvedViewKey === "insights" && config.views.insights ? /* @__PURE__ */ React52.createElement(
|
|
9394
|
+
PrototypeInsightsView,
|
|
9395
|
+
__spreadProps(__spreadValues({}, config.views.insights), {
|
|
9396
|
+
assistantName: (_f = config.brand) == null ? void 0 : _f.assistantName,
|
|
9397
|
+
headerActions,
|
|
9398
|
+
onNavigateToInbox: () => setCurrentView("inbox")
|
|
9399
|
+
})
|
|
9400
|
+
) : resolvedViewKey === "inbox" && config.views.inbox ? /* @__PURE__ */ React52.createElement(
|
|
9401
|
+
PrototypeInboxView,
|
|
9402
|
+
__spreadProps(__spreadValues({}, config.views.inbox), {
|
|
9403
|
+
headerActions,
|
|
9404
|
+
onOpenEntityPanel: handleOpenEntityPanel,
|
|
9405
|
+
onOpenRecentActivity: handleOpenRecentActivity
|
|
9406
|
+
})
|
|
9407
|
+
) : resolvedViewKey === "accounts" && config.views.accounts ? /* @__PURE__ */ React52.createElement(
|
|
9408
|
+
PrototypeAccountsView,
|
|
9409
|
+
__spreadProps(__spreadValues({}, config.views.accounts), {
|
|
9410
|
+
headerActions,
|
|
9411
|
+
onRowClick: handleOpenEntityPanel
|
|
9412
|
+
})
|
|
9413
|
+
) : resolvedViewKey === "workQueue" && config.views.workQueue ? /* @__PURE__ */ React52.createElement(
|
|
9414
|
+
PrototypeWorkQueueView,
|
|
9415
|
+
{
|
|
9416
|
+
headerActions
|
|
9417
|
+
}
|
|
9418
|
+
) : null)), /* @__PURE__ */ React52.createElement(EntityPanel, { isOpen: isEntityPanelOpen, onClose: setIsEntityPanelOpen }, (_g = typeof entityPanelChildren === "function" ? entityPanelChildren({ onClose: () => setIsEntityPanelOpen(false) }) : entityPanelChildren) != null ? _g : /* @__PURE__ */ React52.createElement(React52.Fragment, null, entitySections.map((section, i) => {
|
|
9419
|
+
var _a2, _b2;
|
|
9420
|
+
switch (section.type) {
|
|
9421
|
+
case "details":
|
|
9422
|
+
return /* @__PURE__ */ React52.createElement(EntityDetails, { key: i, onClose: () => setIsEntityPanelOpen(false) });
|
|
9423
|
+
case "contacts":
|
|
9424
|
+
return /* @__PURE__ */ React52.createElement(
|
|
9425
|
+
PotentialContacts,
|
|
9426
|
+
{
|
|
9427
|
+
key: i,
|
|
9428
|
+
icons: {
|
|
9429
|
+
linkedin: entityIcons.linkedin,
|
|
9430
|
+
gmail: entityIcons.gmail
|
|
9431
|
+
}
|
|
9432
|
+
}
|
|
9433
|
+
);
|
|
9434
|
+
case "recentActivity":
|
|
9435
|
+
return /* @__PURE__ */ React52.createElement(
|
|
9436
|
+
RecentActivity,
|
|
9437
|
+
{
|
|
9438
|
+
key: i,
|
|
9439
|
+
items: (_b2 = (_a2 = section.props) == null ? void 0 : _a2.items) != null ? _b2 : []
|
|
9440
|
+
}
|
|
9441
|
+
);
|
|
9442
|
+
case "connectedApps":
|
|
9443
|
+
return /* @__PURE__ */ React52.createElement(
|
|
9444
|
+
ConnectedApps,
|
|
9445
|
+
{
|
|
9446
|
+
key: i,
|
|
9447
|
+
icons: {
|
|
9448
|
+
slack: entityIcons.slack,
|
|
9449
|
+
gdoc: entityIcons.gdoc
|
|
9450
|
+
}
|
|
9451
|
+
}
|
|
9452
|
+
);
|
|
9453
|
+
case "systemActivity":
|
|
9454
|
+
return /* @__PURE__ */ React52.createElement(SystemActivity, { key: i });
|
|
9455
|
+
default:
|
|
9456
|
+
return null;
|
|
9457
|
+
}
|
|
9458
|
+
}))));
|
|
9459
|
+
}
|
|
8768
9460
|
|
|
8769
|
-
export { ActivityDetail, ActivityLog, ActivityRow, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, Badge, BarChartComponent, Button, CHART_CURSOR_STYLE, CHART_TOOLTIP_STYLE, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, CheckInsCard, Citation, ConnectedApps, ContactList, DataTable, DataTableDisplay, DataTableFilter, DataTableQuickViews, DataTableToolbar, DetailViewHeader, DetailViewSummary, DetailViewThread, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DonutChart, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EntityActivityItem, EntityDetails, EntityMetadataGrid, EntityPanel, EntityPanelHeader, EntityPanelTabs, EntitySection, GroupedListView, InboxGroupHeader, InboxRow, InboxToolbar, Input, ItemList, ItemListDisplay, ItemListFilter, ItemListToolbar, Label2 as Label, MetricCard, PerformanceMetricsTable, PipelineOverview, PotentialContacts, PreviewList, PreviewListItem, Progress, QuickActionChatArea, QuickActionModal, QuickActionSidebarNav, RecentActivity, RecentlyCompletedCard, RecommendedActionsSection, ReportCard, SankeyChart, ScoreAnalysisModal, ScoreAnalysisPanel, ScoreBreakdown, ScoreFeedback, ScoreRing, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, SignalApproval, Actions as SignalApprovalActions, Gate as SignalApprovalGate, Root as SignalApprovalRoot, SimpleChartTooltip, Skeleton, SourceList, StyledBarList, SuggestedActions, SystemActivity, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, ThreadMessage, TimelineActivity, Tooltip4 as Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TopLineMetrics, TopTasksCard, TrendAreaChart, UpcomingMeetingsCard, ViewModeToggle, VolumeAnalysisChart, badgeVariants, buttonVariants, cn, getScoreColor, tabsListVariants, useIsMobile, useScoreFeedback, useSidebar, useSignalApproval };
|
|
9461
|
+
export { ActivityDetail, ActivityLog, ActivityRow, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, Badge, BarChartComponent, Button, CHART_CURSOR_STYLE, CHART_TOOLTIP_STYLE, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, CheckInsCard, Citation, ConnectedApps, ContactList, DataTable, DataTableDisplay, DataTableFilter, DataTableQuickViews, DataTableToolbar, DetailViewHeader, DetailViewSummary, DetailViewThread, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DonutChart, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EntityActivityItem, EntityDetails, EntityMetadataGrid, EntityPanel, EntityPanelHeader, EntityPanelTabs, EntitySection, GroupedListView, InboxGroupHeader, InboxRow, InboxToolbar, Input, ItemList, ItemListDisplay, ItemListFilter, ItemListToolbar, Label2 as Label, MetricCard, PerformanceMetricsTable, PipelineOverview, PotentialContacts, PreviewList, PreviewListItem, Progress, PrototypeAccountsView, PrototypeInboxView, PrototypeInsightsView, PrototypeShell, PrototypeWorkQueueView, QuickActionChatArea, QuickActionModal, QuickActionSidebarNav, RecentActivity, RecentlyCompletedCard, RecommendedActionsSection, ReportCard, SankeyChart, ScoreAnalysisModal, ScoreAnalysisPanel, ScoreBreakdown, ScoreFeedback, ScoreRing, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, SignalApproval, Actions as SignalApprovalActions, Gate as SignalApprovalGate, Root as SignalApprovalRoot, SimpleChartTooltip, Skeleton, SourceList, StyledBarList, SuggestedActions, SystemActivity, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, ThreadMessage, TimelineActivity, Tooltip4 as Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TopLineMetrics, TopTasksCard, TrendAreaChart, UpcomingMeetingsCard, ViewModeToggle, VolumeAnalysisChart, badgeVariants, buttonVariants, cn, getScoreColor, tabsListVariants, useIsMobile, useScoreFeedback, useSidebar, useSignalApproval };
|
|
8770
9462
|
//# sourceMappingURL=index.js.map
|
|
8771
9463
|
//# sourceMappingURL=index.js.map
|