@flamingo-stack/openframe-frontend-core 0.0.491 → 0.0.492
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-J2V4B6FF.cjs → chunk-2XAAFAQT.cjs} +11 -11
- package/dist/{chunk-J2V4B6FF.cjs.map → chunk-2XAAFAQT.cjs.map} +1 -1
- package/dist/{chunk-GTMW4KY7.js → chunk-4AWRPTKE.js} +4 -4
- package/dist/{chunk-IUGJAILN.js → chunk-4J3CB4KO.js} +2 -2
- package/dist/{chunk-2RTNC3KP.cjs → chunk-4MLOMMDX.cjs} +886 -749
- package/dist/chunk-4MLOMMDX.cjs.map +1 -0
- package/dist/{chunk-CYIUPI7J.js → chunk-56J7RLMM.js} +353 -216
- package/dist/{chunk-CYIUPI7J.js.map → chunk-56J7RLMM.js.map} +1 -1
- package/dist/{chunk-GL33BHGZ.cjs → chunk-5ICPQAUI.cjs} +59 -59
- package/dist/{chunk-GL33BHGZ.cjs.map → chunk-5ICPQAUI.cjs.map} +1 -1
- package/dist/{chunk-35CTCUJ7.js → chunk-5RHJVPL7.js} +4 -4
- package/dist/{chunk-2YQK6LHR.js → chunk-BTIRYGDT.js} +4 -4
- package/dist/{chunk-QNFAZIFC.cjs → chunk-DY6AJNVK.cjs} +5 -5
- package/dist/{chunk-QNFAZIFC.cjs.map → chunk-DY6AJNVK.cjs.map} +1 -1
- package/dist/{chunk-U2JIGUXF.js → chunk-FG5ALORQ.js} +2 -2
- package/dist/{chunk-VD4QDSP7.cjs → chunk-J2J36PEN.cjs} +31 -31
- package/dist/{chunk-VD4QDSP7.cjs.map → chunk-J2J36PEN.cjs.map} +1 -1
- package/dist/{chunk-ITV6LSG7.cjs → chunk-LIRXKEOE.cjs} +15 -15
- package/dist/{chunk-ITV6LSG7.cjs.map → chunk-LIRXKEOE.cjs.map} +1 -1
- package/dist/{chunk-PVSXTCJY.cjs → chunk-LVDI7R7T.cjs} +37 -37
- package/dist/{chunk-PVSXTCJY.cjs.map → chunk-LVDI7R7T.cjs.map} +1 -1
- package/dist/{chunk-6O3YTVLG.cjs → chunk-M4SCYPCR.cjs} +7 -7
- package/dist/{chunk-6O3YTVLG.cjs.map → chunk-M4SCYPCR.cjs.map} +1 -1
- package/dist/{chunk-YKE2KZ2Y.cjs → chunk-O6S6Q52W.cjs} +26 -26
- package/dist/{chunk-YKE2KZ2Y.cjs.map → chunk-O6S6Q52W.cjs.map} +1 -1
- package/dist/{chunk-7NRRONK5.cjs → chunk-OFFYASUY.cjs} +26 -26
- package/dist/{chunk-7NRRONK5.cjs.map → chunk-OFFYASUY.cjs.map} +1 -1
- package/dist/{chunk-ZDUJ6BDI.js → chunk-P3ITKTUE.js} +2 -2
- package/dist/{chunk-EHHX22JL.cjs → chunk-PI5BMKV3.cjs} +62 -62
- package/dist/{chunk-EHHX22JL.cjs.map → chunk-PI5BMKV3.cjs.map} +1 -1
- package/dist/{chunk-6XNWT2KC.js → chunk-QHRNQTW5.js} +2 -2
- package/dist/{chunk-ZEC5U5T7.js → chunk-SZWMJIH3.js} +2 -2
- package/dist/{chunk-CZTKQVIQ.js → chunk-U5LU56JE.js} +2 -2
- package/dist/{chunk-HRMOCJKU.cjs → chunk-VML66FJQ.cjs} +9 -9
- package/dist/{chunk-HRMOCJKU.cjs.map → chunk-VML66FJQ.cjs.map} +1 -1
- package/dist/{chunk-T4BUS6JV.js → chunk-WKWZ7LVC.js} +2 -2
- package/dist/{chunk-QF54RPHZ.js → chunk-WPFLV4QJ.js} +4 -4
- 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/floating-walkthrough-video.d.ts.map +1 -1
- package/dist/components/features/index.cjs +2 -2
- package/dist/components/features/index.js +1 -1
- package/dist/components/help-center-pages/index.cjs +20 -20
- package/dist/components/help-center-pages/index.js +11 -11
- package/dist/components/index.cjs +130 -130
- package/dist/components/index.js +9 -9
- package/dist/components/navigation/index.cjs +2 -2
- package/dist/components/navigation/index.js +1 -1
- package/dist/components/navigation/navigation-sidebar-item.d.ts +23 -1
- package/dist/components/navigation/navigation-sidebar-item.d.ts.map +1 -1
- package/dist/components/navigation/navigation-sidebar.d.ts.map +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 +5 -5
- package/dist/components/tickets/index.js +4 -4
- package/dist/components/ui/data-table/data-table-column-filter.d.ts.map +1 -1
- package/dist/components/ui/data-table/data-table-header.d.ts.map +1 -1
- package/dist/components/ui/data-table/data-table-skeleton.d.ts.map +1 -1
- package/dist/components/ui/index.cjs +2 -2
- package/dist/components/ui/index.js +1 -1
- package/dist/components/ui/tab-navigation.d.ts.map +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/src/components/features/floating-walkthrough-video.tsx +3 -1
- package/src/components/navigation/navigation-sidebar-item.tsx +80 -30
- package/src/components/navigation/navigation-sidebar.tsx +106 -46
- package/src/components/ui/__tests__/tab-navigation.test.tsx +159 -0
- package/src/components/ui/data-table/data-table-column-filter.tsx +7 -1
- package/src/components/ui/data-table/data-table-header.tsx +4 -1
- package/src/components/ui/data-table/data-table-skeleton.tsx +7 -0
- package/src/components/ui/tab-navigation.tsx +370 -171
- package/dist/chunk-2RTNC3KP.cjs.map +0 -1
- /package/dist/{chunk-GTMW4KY7.js.map → chunk-4AWRPTKE.js.map} +0 -0
- /package/dist/{chunk-IUGJAILN.js.map → chunk-4J3CB4KO.js.map} +0 -0
- /package/dist/{chunk-35CTCUJ7.js.map → chunk-5RHJVPL7.js.map} +0 -0
- /package/dist/{chunk-2YQK6LHR.js.map → chunk-BTIRYGDT.js.map} +0 -0
- /package/dist/{chunk-U2JIGUXF.js.map → chunk-FG5ALORQ.js.map} +0 -0
- /package/dist/{chunk-ZDUJ6BDI.js.map → chunk-P3ITKTUE.js.map} +0 -0
- /package/dist/{chunk-6XNWT2KC.js.map → chunk-QHRNQTW5.js.map} +0 -0
- /package/dist/{chunk-ZEC5U5T7.js.map → chunk-SZWMJIH3.js.map} +0 -0
- /package/dist/{chunk-CZTKQVIQ.js.map → chunk-U5LU56JE.js.map} +0 -0
- /package/dist/{chunk-T4BUS6JV.js.map → chunk-WKWZ7LVC.js.map} +0 -0
- /package/dist/{chunk-QF54RPHZ.js.map → chunk-WPFLV4QJ.js.map} +0 -0
|
@@ -19736,72 +19736,50 @@ function TabContent({
|
|
|
19736
19736
|
// src/components/ui/tab-navigation.tsx
|
|
19737
19737
|
init_next_navigation();
|
|
19738
19738
|
init_cn();
|
|
19739
|
-
import { useState as useState43, useEffect as useEffect34, useDeferredValue, useMemo as useMemo24, useRef as useRef26, useCallback as useCallback19 } from "react";
|
|
19739
|
+
import { useState as useState43, useEffect as useEffect34, useLayoutEffect as useLayoutEffect7, useDeferredValue, useMemo as useMemo24, useRef as useRef26, useCallback as useCallback19, memo as memo4, startTransition } from "react";
|
|
19740
19740
|
import { Fragment as Fragment32, jsx as jsx139, jsxs as jsxs111 } from "react/jsx-runtime";
|
|
19741
|
-
|
|
19742
|
-
|
|
19743
|
-
|
|
19741
|
+
var HIDDEN_INDICATOR = { left: 0, width: 0 };
|
|
19742
|
+
var StatusDot = ({ indicator, className }) => /* @__PURE__ */ jsx139("div", { className: cn(
|
|
19743
|
+
"w-3 h-3 rounded-full border-2 border-ods-bg",
|
|
19744
|
+
indicator === "error" && "bg-ods-error",
|
|
19745
|
+
indicator === "warning" && "bg-ods-accent",
|
|
19746
|
+
indicator === "success" && "bg-ods-success",
|
|
19747
|
+
className
|
|
19748
|
+
) });
|
|
19749
|
+
var TabBar = memo4(function TabBar2({
|
|
19744
19750
|
tabs,
|
|
19751
|
+
activeTab,
|
|
19752
|
+
onTabChange,
|
|
19745
19753
|
className,
|
|
19746
19754
|
shadowClassName,
|
|
19747
|
-
|
|
19748
|
-
|
|
19749
|
-
stretchTabs
|
|
19750
|
-
urlSync = false,
|
|
19751
|
-
defaultTab,
|
|
19752
|
-
children
|
|
19755
|
+
showLeftGradient,
|
|
19756
|
+
showRightGradient,
|
|
19757
|
+
stretchTabs
|
|
19753
19758
|
}) {
|
|
19754
|
-
const router = useRouter();
|
|
19755
|
-
const pathname = usePathname();
|
|
19756
|
-
const searchParams = useSearchParams();
|
|
19757
|
-
const isUrlSyncEnabled = !!urlSync;
|
|
19758
|
-
const paramName = typeof urlSync === "object" ? urlSync.paramName || "tab" : "tab";
|
|
19759
|
-
const replaceState = typeof urlSync === "object" ? urlSync.replaceState !== false : true;
|
|
19760
|
-
const validTabIds = useMemo24(() => new Set(tabs.map((t) => t.id)), [tabs]);
|
|
19761
|
-
const getInitialTab = () => {
|
|
19762
|
-
if (isUrlSyncEnabled) {
|
|
19763
|
-
const fromUrl = searchParams?.get(paramName) || "";
|
|
19764
|
-
if (validTabIds.has(fromUrl)) {
|
|
19765
|
-
return fromUrl;
|
|
19766
|
-
}
|
|
19767
|
-
}
|
|
19768
|
-
return defaultTab || tabs[0]?.id || "";
|
|
19769
|
-
};
|
|
19770
|
-
const [internalActiveTab, setInternalActiveTab] = useState43(getInitialTab);
|
|
19771
|
-
const activeTab = isUrlSyncEnabled ? internalActiveTab : controlledActiveTab || "";
|
|
19772
|
-
useEffect34(() => {
|
|
19773
|
-
if (!isUrlSyncEnabled) return;
|
|
19774
|
-
const fromUrl = searchParams?.get(paramName) || "";
|
|
19775
|
-
const nextTab = validTabIds.has(fromUrl) ? fromUrl : defaultTab || tabs[0]?.id || "";
|
|
19776
|
-
if (nextTab !== internalActiveTab) {
|
|
19777
|
-
setInternalActiveTab(nextTab);
|
|
19778
|
-
}
|
|
19779
|
-
}, [isUrlSyncEnabled, searchParams, paramName, validTabIds, defaultTab, tabs, internalActiveTab]);
|
|
19780
|
-
const handleTabChange = (tabId) => {
|
|
19781
|
-
if (isUrlSyncEnabled) {
|
|
19782
|
-
setInternalActiveTab(tabId);
|
|
19783
|
-
const params = new URLSearchParams(searchParams?.toString());
|
|
19784
|
-
params.set(paramName, tabId);
|
|
19785
|
-
const method = replaceState ? "replace" : "push";
|
|
19786
|
-
router[method](`${pathname}?${params.toString()}`);
|
|
19787
|
-
controlledOnTabChange?.(tabId);
|
|
19788
|
-
} else {
|
|
19789
|
-
controlledOnTabChange?.(tabId);
|
|
19790
|
-
}
|
|
19791
|
-
};
|
|
19792
|
-
const deferredActiveTab = useDeferredValue(activeTab);
|
|
19793
|
-
const isStale = activeTab !== deferredActiveTab;
|
|
19794
19759
|
const scrollRef = useRef26(null);
|
|
19795
19760
|
const activeTabRef = useRef26(null);
|
|
19796
19761
|
const isFirstActiveScrollRef = useRef26(true);
|
|
19797
19762
|
const [canScrollLeft, setCanScrollLeft] = useState43(false);
|
|
19798
19763
|
const [canScrollRight, setCanScrollRight] = useState43(false);
|
|
19764
|
+
const [indicator, setIndicator] = useState43(HIDDEN_INDICATOR);
|
|
19765
|
+
const hasPlacedIndicatorRef = useRef26(false);
|
|
19766
|
+
const measureIndicator = useCallback19(() => {
|
|
19767
|
+
const active = activeTabRef.current;
|
|
19768
|
+
const next = active ? { left: active.offsetLeft, width: active.offsetWidth } : HIDDEN_INDICATOR;
|
|
19769
|
+
setIndicator((prev) => prev.left === next.left && prev.width === next.width ? prev : next);
|
|
19770
|
+
}, []);
|
|
19799
19771
|
const updateScrollShadows = useCallback19(() => {
|
|
19800
19772
|
const el = scrollRef.current;
|
|
19801
19773
|
if (!el) return;
|
|
19802
19774
|
setCanScrollLeft(el.scrollLeft > 0);
|
|
19803
19775
|
setCanScrollRight(el.scrollLeft + el.clientWidth < el.scrollWidth - 1);
|
|
19804
19776
|
}, []);
|
|
19777
|
+
useLayoutEffect7(() => {
|
|
19778
|
+
measureIndicator();
|
|
19779
|
+
}, [measureIndicator, activeTab, tabs]);
|
|
19780
|
+
useLayoutEffect7(() => {
|
|
19781
|
+
if (indicator.width > 0) hasPlacedIndicatorRef.current = true;
|
|
19782
|
+
}, [indicator]);
|
|
19805
19783
|
useEffect34(() => {
|
|
19806
19784
|
const el = scrollRef.current;
|
|
19807
19785
|
if (!el) return;
|
|
@@ -19818,14 +19796,23 @@ function TabNavigation({
|
|
|
19818
19796
|
};
|
|
19819
19797
|
el.addEventListener("scroll", updateScrollShadows, { passive: true });
|
|
19820
19798
|
el.addEventListener("wheel", onWheel, { passive: false });
|
|
19821
|
-
const ro = new ResizeObserver(
|
|
19799
|
+
const ro = new ResizeObserver(() => {
|
|
19800
|
+
updateScrollShadows();
|
|
19801
|
+
measureIndicator();
|
|
19802
|
+
});
|
|
19822
19803
|
ro.observe(el);
|
|
19804
|
+
let cancelled = false;
|
|
19805
|
+
document.fonts?.ready.then(() => {
|
|
19806
|
+
if (!cancelled) measureIndicator();
|
|
19807
|
+
}).catch(() => {
|
|
19808
|
+
});
|
|
19823
19809
|
return () => {
|
|
19810
|
+
cancelled = true;
|
|
19824
19811
|
el.removeEventListener("scroll", updateScrollShadows);
|
|
19825
19812
|
el.removeEventListener("wheel", onWheel);
|
|
19826
19813
|
ro.disconnect();
|
|
19827
19814
|
};
|
|
19828
|
-
}, [updateScrollShadows]);
|
|
19815
|
+
}, [updateScrollShadows, measureIndicator]);
|
|
19829
19816
|
useEffect34(() => {
|
|
19830
19817
|
const el = scrollRef.current;
|
|
19831
19818
|
const active = activeTabRef.current;
|
|
@@ -19842,7 +19829,7 @@ function TabNavigation({
|
|
|
19842
19829
|
}, [activeTab]);
|
|
19843
19830
|
const leftFade = canScrollLeft || showLeftGradient;
|
|
19844
19831
|
const rightFade = canScrollRight || showRightGradient;
|
|
19845
|
-
const borderStyle = (() => {
|
|
19832
|
+
const borderStyle = useMemo24(() => {
|
|
19846
19833
|
const c = "var(--color-border-default)";
|
|
19847
19834
|
if (leftFade && rightFade) {
|
|
19848
19835
|
return { background: `linear-gradient(to right, transparent 0, ${c} 40px, ${c} calc(100% - 40px), transparent 100%)` };
|
|
@@ -19854,20 +19841,37 @@ function TabNavigation({
|
|
|
19854
19841
|
return { background: `linear-gradient(to right, ${c} 0, ${c} calc(100% - 40px), transparent 100%)` };
|
|
19855
19842
|
}
|
|
19856
19843
|
return { background: c };
|
|
19857
|
-
})
|
|
19858
|
-
|
|
19859
|
-
|
|
19860
|
-
|
|
19844
|
+
}, [leftFade, rightFade]);
|
|
19845
|
+
const isPlaced = indicator.width > 0;
|
|
19846
|
+
const indicatorStyle = {
|
|
19847
|
+
transform: `translateX(${indicator.left}px) scaleX(${indicator.width})`,
|
|
19848
|
+
opacity: isPlaced ? 1 : 0
|
|
19849
|
+
};
|
|
19850
|
+
const shouldAnimateIndicator = hasPlacedIndicatorRef.current;
|
|
19851
|
+
return /* @__PURE__ */ jsxs111("div", { className: cn("relative w-full", className), children: [
|
|
19852
|
+
/* @__PURE__ */ jsxs111("div", { ref: scrollRef, className: "relative flex gap-[var(--spacing-system-xxs)] items-center justify-start h-full overflow-x-auto overflow-y-hidden scrollbar-hide", children: [
|
|
19853
|
+
tabs.map((tab) => {
|
|
19861
19854
|
const isActive = activeTab === tab.id;
|
|
19862
19855
|
return /* @__PURE__ */ jsxs111(
|
|
19863
19856
|
"button",
|
|
19864
19857
|
{
|
|
19865
19858
|
ref: isActive ? activeTabRef : void 0,
|
|
19866
19859
|
type: "button",
|
|
19867
|
-
onClick: () =>
|
|
19860
|
+
onClick: () => onTabChange(tab.id),
|
|
19868
19861
|
className: cn(
|
|
19869
19862
|
"flex gap-[var(--spacing-system-xxs)] items-center justify-center p-[var(--spacing-system-m)] relative shrink-0 cursor-pointer",
|
|
19870
|
-
|
|
19863
|
+
// Named rather than `transition-all`: the only thing that moves
|
|
19864
|
+
// here is colour. `all` also made the browser re-check every
|
|
19865
|
+
// property each frame, including the background GRADIENT — which
|
|
19866
|
+
// never animated anyway, since the inactive state has no
|
|
19867
|
+
// background-image to interpolate from.
|
|
19868
|
+
"transition-colors duration-200 bg-transparent border-none outline-none",
|
|
19869
|
+
// `outline-none` above drops the browser's own focus ring, so
|
|
19870
|
+
// put one back or the strip is un-navigable by keyboard — you
|
|
19871
|
+
// can tab through it with nothing to show where you are. Inset,
|
|
19872
|
+
// so it stays within the button instead of overlapping the tab
|
|
19873
|
+
// sitting 4px away.
|
|
19874
|
+
"focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ods-focus",
|
|
19871
19875
|
stretchTabs && "flex-1",
|
|
19872
19876
|
// Known limitation: ODS color vars hold hex values, so Tailwind
|
|
19873
19877
|
// alpha modifiers (to-ods-accent/10) silently produce no CSS.
|
|
@@ -19882,36 +19886,123 @@ function TabNavigation({
|
|
|
19882
19886
|
className: cn("h-4 w-4 md:h-6 md:w-6 transition-colors", isActive ? "text-ods-accent" : "text-ods-text-secondary")
|
|
19883
19887
|
}
|
|
19884
19888
|
),
|
|
19885
|
-
tab.indicator && /* @__PURE__ */ jsx139(
|
|
19886
|
-
"absolute right-0 top-[-3px] w-3 h-3 rounded-full border-2 border-ods-bg",
|
|
19887
|
-
tab.indicator === "error" && "bg-ods-error",
|
|
19888
|
-
tab.indicator === "warning" && "bg-ods-accent",
|
|
19889
|
-
tab.indicator === "success" && "bg-ods-success"
|
|
19890
|
-
) })
|
|
19889
|
+
tab.indicator && /* @__PURE__ */ jsx139(StatusDot, { indicator: tab.indicator, className: "absolute right-0 top-[-3px]" })
|
|
19891
19890
|
] }) : tab.indicator ? (
|
|
19892
19891
|
// Text-only tabs keep their status badge — inline dot before
|
|
19893
19892
|
// the label (there's no icon corner to anchor to).
|
|
19894
|
-
/* @__PURE__ */ jsx139(
|
|
19895
|
-
"w-3 h-3 shrink-0 rounded-full border-2 border-ods-bg",
|
|
19896
|
-
tab.indicator === "error" && "bg-ods-error",
|
|
19897
|
-
tab.indicator === "warning" && "bg-ods-accent",
|
|
19898
|
-
tab.indicator === "success" && "bg-ods-success"
|
|
19899
|
-
) })
|
|
19893
|
+
/* @__PURE__ */ jsx139(StatusDot, { indicator: tab.indicator, className: "shrink-0" })
|
|
19900
19894
|
) : null,
|
|
19901
19895
|
/* @__PURE__ */ jsx139("span", { className: cn(
|
|
19902
19896
|
"text-h4 whitespace-nowrap transition-colors",
|
|
19903
19897
|
isActive ? "text-ods-text-primary" : "text-ods-text-secondary"
|
|
19904
|
-
), children: tab.label })
|
|
19905
|
-
isActive && /* @__PURE__ */ jsx139("div", { className: "absolute bottom-0 left-0 right-0 h-1 bg-ods-accent" })
|
|
19898
|
+
), children: tab.label })
|
|
19906
19899
|
]
|
|
19907
19900
|
},
|
|
19908
19901
|
tab.id
|
|
19909
19902
|
);
|
|
19910
|
-
})
|
|
19911
|
-
|
|
19912
|
-
|
|
19913
|
-
|
|
19903
|
+
}),
|
|
19904
|
+
/* @__PURE__ */ jsx139(
|
|
19905
|
+
"div",
|
|
19906
|
+
{
|
|
19907
|
+
"aria-hidden": true,
|
|
19908
|
+
className: cn(
|
|
19909
|
+
"pointer-events-none absolute bottom-0 left-0 h-1 w-px origin-left bg-ods-accent",
|
|
19910
|
+
shouldAnimateIndicator && "transition-[transform,opacity] duration-200 ease-out motion-reduce:transition-none"
|
|
19911
|
+
),
|
|
19912
|
+
style: indicatorStyle
|
|
19913
|
+
}
|
|
19914
|
+
)
|
|
19914
19915
|
] }),
|
|
19916
|
+
leftFade && /* @__PURE__ */ jsx139("div", { className: cn("absolute left-0 top-0 bottom-0 w-10 pointer-events-none bg-gradient-to-r to-transparent", shadowClassName || "from-ods-bg") }),
|
|
19917
|
+
rightFade && /* @__PURE__ */ jsx139("div", { className: cn("absolute right-0 top-0 bottom-0 w-10 pointer-events-none bg-gradient-to-l to-transparent", shadowClassName || "from-ods-bg") }),
|
|
19918
|
+
/* @__PURE__ */ jsx139("div", { className: "absolute bottom-0 left-0 right-0 h-px pointer-events-none", style: borderStyle })
|
|
19919
|
+
] });
|
|
19920
|
+
});
|
|
19921
|
+
function TabNavigation({
|
|
19922
|
+
activeTab: controlledActiveTab,
|
|
19923
|
+
onTabChange: controlledOnTabChange,
|
|
19924
|
+
tabs,
|
|
19925
|
+
className,
|
|
19926
|
+
shadowClassName,
|
|
19927
|
+
showRightGradient = false,
|
|
19928
|
+
showLeftGradient = false,
|
|
19929
|
+
stretchTabs = false,
|
|
19930
|
+
urlSync = false,
|
|
19931
|
+
defaultTab,
|
|
19932
|
+
children
|
|
19933
|
+
}) {
|
|
19934
|
+
const router = useRouter();
|
|
19935
|
+
const pathname = usePathname();
|
|
19936
|
+
const searchParams = useSearchParams();
|
|
19937
|
+
const isUrlSyncEnabled = !!urlSync;
|
|
19938
|
+
const paramName = typeof urlSync === "object" ? urlSync.paramName || "tab" : "tab";
|
|
19939
|
+
const replaceState = typeof urlSync === "object" ? urlSync.replaceState !== false : true;
|
|
19940
|
+
const validTabIds = useMemo24(() => new Set(tabs.map((t) => t.id)), [tabs]);
|
|
19941
|
+
const fallbackTab = defaultTab || tabs[0]?.id || "";
|
|
19942
|
+
const urlTab = isUrlSyncEnabled ? searchParams?.get(paramName) || "" : "";
|
|
19943
|
+
const getInitialTab = () => {
|
|
19944
|
+
if (isUrlSyncEnabled && validTabIds.has(urlTab)) return urlTab;
|
|
19945
|
+
return fallbackTab;
|
|
19946
|
+
};
|
|
19947
|
+
const [internalActiveTab, setInternalActiveTab] = useState43(getInitialTab);
|
|
19948
|
+
const activeTab = isUrlSyncEnabled ? internalActiveTab : controlledActiveTab || "";
|
|
19949
|
+
const lastSyncedUrlTabRef = useRef26(urlTab);
|
|
19950
|
+
const inFlightUrlTabsRef = useRef26([]);
|
|
19951
|
+
useEffect34(() => {
|
|
19952
|
+
if (!isUrlSyncEnabled) return;
|
|
19953
|
+
const landed = inFlightUrlTabsRef.current.indexOf(urlTab);
|
|
19954
|
+
if (landed !== -1) {
|
|
19955
|
+
inFlightUrlTabsRef.current.splice(0, landed + 1);
|
|
19956
|
+
lastSyncedUrlTabRef.current = urlTab;
|
|
19957
|
+
return;
|
|
19958
|
+
}
|
|
19959
|
+
if (urlTab === lastSyncedUrlTabRef.current) {
|
|
19960
|
+
setInternalActiveTab(
|
|
19961
|
+
(prev) => validTabIds.has(prev) ? prev : validTabIds.has(urlTab) ? urlTab : fallbackTab
|
|
19962
|
+
);
|
|
19963
|
+
return;
|
|
19964
|
+
}
|
|
19965
|
+
inFlightUrlTabsRef.current.length = 0;
|
|
19966
|
+
lastSyncedUrlTabRef.current = urlTab;
|
|
19967
|
+
setInternalActiveTab(validTabIds.has(urlTab) ? urlTab : fallbackTab);
|
|
19968
|
+
}, [isUrlSyncEnabled, urlTab, validTabIds, fallbackTab]);
|
|
19969
|
+
const navRef = useRef26({ isUrlSyncEnabled, controlledOnTabChange, searchParams, pathname, paramName, replaceState });
|
|
19970
|
+
useEffect34(() => {
|
|
19971
|
+
navRef.current = { isUrlSyncEnabled, controlledOnTabChange, searchParams, pathname, paramName, replaceState };
|
|
19972
|
+
});
|
|
19973
|
+
const handleTabChange = useCallback19((tabId) => {
|
|
19974
|
+
const nav = navRef.current;
|
|
19975
|
+
if (!nav.isUrlSyncEnabled) {
|
|
19976
|
+
nav.controlledOnTabChange?.(tabId);
|
|
19977
|
+
return;
|
|
19978
|
+
}
|
|
19979
|
+
setInternalActiveTab(tabId);
|
|
19980
|
+
const inFlight = inFlightUrlTabsRef.current;
|
|
19981
|
+
if (inFlight[inFlight.length - 1] !== tabId) inFlight.push(tabId);
|
|
19982
|
+
const params = new URLSearchParams(nav.searchParams?.toString());
|
|
19983
|
+
params.set(nav.paramName, tabId);
|
|
19984
|
+
const method = nav.replaceState ? "replace" : "push";
|
|
19985
|
+
startTransition(() => {
|
|
19986
|
+
router[method](`${nav.pathname}?${params.toString()}`, { scroll: false });
|
|
19987
|
+
});
|
|
19988
|
+
nav.controlledOnTabChange?.(tabId);
|
|
19989
|
+
}, [router]);
|
|
19990
|
+
const deferredActiveTab = useDeferredValue(activeTab);
|
|
19991
|
+
const isStale = activeTab !== deferredActiveTab;
|
|
19992
|
+
return /* @__PURE__ */ jsxs111(Fragment32, { children: [
|
|
19993
|
+
/* @__PURE__ */ jsx139(
|
|
19994
|
+
TabBar,
|
|
19995
|
+
{
|
|
19996
|
+
tabs,
|
|
19997
|
+
activeTab,
|
|
19998
|
+
onTabChange: handleTabChange,
|
|
19999
|
+
className,
|
|
20000
|
+
shadowClassName,
|
|
20001
|
+
showLeftGradient,
|
|
20002
|
+
showRightGradient,
|
|
20003
|
+
stretchTabs
|
|
20004
|
+
}
|
|
20005
|
+
),
|
|
19915
20006
|
children && children(deferredActiveTab, { isStale })
|
|
19916
20007
|
] });
|
|
19917
20008
|
}
|
|
@@ -20351,12 +20442,12 @@ var socialCache = SocialEmbedCache.getInstance();
|
|
|
20351
20442
|
|
|
20352
20443
|
// src/components/media-carousel.tsx
|
|
20353
20444
|
init_cn();
|
|
20354
|
-
import { useState as useState45, useRef as useRef28, useEffect as useEffect36, memo as
|
|
20445
|
+
import { useState as useState45, useRef as useRef28, useEffect as useEffect36, memo as memo5, useCallback as useCallback20 } from "react";
|
|
20355
20446
|
init_button2();
|
|
20356
20447
|
import { Fragment as Fragment34, jsx as jsx144, jsxs as jsxs114 } from "react/jsx-runtime";
|
|
20357
20448
|
var ChevronLeftIcon = () => /* @__PURE__ */ jsx144("svg", { width: "24", height: "24", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx144("polyline", { points: "15,18 9,12 15,6" }) });
|
|
20358
20449
|
var ChevronRightIcon = () => /* @__PURE__ */ jsx144("svg", { width: "24", height: "24", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx144("polyline", { points: "9,18 15,12 9,6" }) });
|
|
20359
|
-
var MediaCarousel =
|
|
20450
|
+
var MediaCarousel = memo5(function MediaCarousel2({
|
|
20360
20451
|
media,
|
|
20361
20452
|
className,
|
|
20362
20453
|
aspectRatio = "16/9",
|
|
@@ -32418,7 +32509,7 @@ function FloatingWalkthroughVideo({
|
|
|
32418
32509
|
),
|
|
32419
32510
|
/* @__PURE__ */ jsxs190("span", { className: "pointer-events-none absolute bottom-[var(--spacing-system-xsf)] left-[var(--spacing-system-xsf)] z-20 flex max-w-[calc(100%-2*var(--spacing-system-xsf))] items-center gap-[var(--spacing-system-xsf)] rounded-full bg-ods-overlay py-[var(--spacing-system-xxs)] pl-[var(--spacing-system-xxs)] pr-[var(--spacing-system-sf)] text-h6 text-ods-text-primary", children: [
|
|
32420
32511
|
presenterAvatarSrc ? /* @__PURE__ */ jsx242(SquareAvatar, { src: presenterAvatarSrc, alt: "", sizePx: 20, variant: "round", className: "shrink-0 border-0" }) : /* @__PURE__ */ jsx242(VideoPlayBadge, { size: "sm", className: "h-5 w-5 shrink-0" }),
|
|
32421
|
-
/* @__PURE__ */ jsx242("span", { className: "truncate", children: label })
|
|
32512
|
+
/* @__PURE__ */ jsx242("span", { className: "truncate", children: summaryTitle || label })
|
|
32422
32513
|
] }),
|
|
32423
32514
|
showBigUnmute && /* @__PURE__ */ jsx242(
|
|
32424
32515
|
Button,
|
|
@@ -38352,7 +38443,7 @@ function useSectionNavigation(sections, options) {
|
|
|
38352
38443
|
}
|
|
38353
38444
|
|
|
38354
38445
|
// src/components/navigation/navigation-sidebar.tsx
|
|
38355
|
-
import { useCallback as useCallback37, useEffect as useEffect70, useLayoutEffect as
|
|
38446
|
+
import { useCallback as useCallback37, useEffect as useEffect70, useLayoutEffect as useLayoutEffect8, useMemo as useMemo39, useState as useState93 } from "react";
|
|
38356
38447
|
|
|
38357
38448
|
// src/components/navigation/navigation-sidebar-header.tsx
|
|
38358
38449
|
import { jsx as jsx288, jsxs as jsxs226 } from "react/jsx-runtime";
|
|
@@ -38381,65 +38472,75 @@ function NavigationSidebarHeader({ minimized }) {
|
|
|
38381
38472
|
}
|
|
38382
38473
|
|
|
38383
38474
|
// src/components/navigation/navigation-sidebar-item.tsx
|
|
38384
|
-
|
|
38385
|
-
import {
|
|
38386
|
-
|
|
38475
|
+
init_next_link();
|
|
38476
|
+
import { cloneElement, memo as memo6 } from "react";
|
|
38477
|
+
import { Fragment as Fragment59, jsx as jsx289, jsxs as jsxs227 } from "react/jsx-runtime";
|
|
38478
|
+
var NavigationSidebarItemButton = memo6(function NavigationSidebarItemButton2({
|
|
38387
38479
|
item,
|
|
38480
|
+
isActive,
|
|
38481
|
+
isPending,
|
|
38388
38482
|
showLabel,
|
|
38389
38483
|
disabled,
|
|
38390
38484
|
onClick
|
|
38391
38485
|
}) {
|
|
38392
|
-
const isActive = item.isActive ?? false;
|
|
38393
38486
|
const unreadCount = item.unreadCount ?? 0;
|
|
38394
38487
|
const hasUnread = unreadCount > 0;
|
|
38395
|
-
|
|
38396
|
-
"
|
|
38397
|
-
|
|
38398
|
-
|
|
38399
|
-
|
|
38400
|
-
|
|
38401
|
-
|
|
38402
|
-
|
|
38403
|
-
|
|
38404
|
-
|
|
38405
|
-
|
|
38406
|
-
|
|
38407
|
-
|
|
38408
|
-
|
|
38409
|
-
|
|
38410
|
-
|
|
38411
|
-
|
|
38412
|
-
|
|
38413
|
-
|
|
38414
|
-
|
|
38415
|
-
|
|
38416
|
-
|
|
38417
|
-
|
|
38418
|
-
|
|
38419
|
-
"aria-current": isActive ? "page" : void 0,
|
|
38420
|
-
children: [
|
|
38421
|
-
/* @__PURE__ */ jsxs227("div", { className: "relative flex items-center justify-center flex-shrink-0", children: [
|
|
38422
|
-
cloneElement(item.icon, {
|
|
38423
|
-
color: isActive && !disabled ? "text-ods-accent" : "text-ods-text-secondary"
|
|
38424
|
-
}),
|
|
38425
|
-
hasUnread && !showLabel && /* @__PURE__ */ jsx289("span", { className: "absolute top-0 right-0 bg-ods-warning rounded-full w-2 h-2" })
|
|
38426
|
-
] }),
|
|
38427
|
-
/* @__PURE__ */ jsx289(
|
|
38428
|
-
"span",
|
|
38429
|
-
{
|
|
38430
|
-
className: cn(
|
|
38431
|
-
"text-h4 flex-1 text-left truncate transition-[opacity,margin-left] duration-300",
|
|
38432
|
-
showLabel ? "opacity-100 ml-[var(--spacing-system-xs)]" : "opacity-0 ml-0"
|
|
38433
|
-
),
|
|
38434
|
-
"aria-hidden": !showLabel,
|
|
38435
|
-
children: item.label
|
|
38436
|
-
}
|
|
38437
|
-
),
|
|
38438
|
-
hasUnread && showLabel && /* @__PURE__ */ jsx289("span", { className: "bg-ods-accent flex items-center justify-center flex-shrink-0 p-2 rounded-md size-6", children: /* @__PURE__ */ jsx289("span", { className: "text-h5 text-ods-text-on-accent", children: unreadCount > 99 ? "99+" : unreadCount }) })
|
|
38439
|
-
]
|
|
38440
|
-
}
|
|
38488
|
+
const className = cn(
|
|
38489
|
+
"w-full flex items-center justify-start relative",
|
|
38490
|
+
"h-14 p-[var(--spacing-system-m)]",
|
|
38491
|
+
// 150ms, not 300: the outgoing and incoming entries cross-fade, so for the
|
|
38492
|
+
// whole duration TWO rows read as half-active. At 300ms that window is long
|
|
38493
|
+
// enough to look like a flicker rather than a transition.
|
|
38494
|
+
"transition-colors duration-150",
|
|
38495
|
+
"[&_svg]:transition-colors [&_svg]:duration-150",
|
|
38496
|
+
"before:content-[''] before:absolute before:left-0 before:top-0 before:bottom-0 before:w-1",
|
|
38497
|
+
"before:transition-colors before:duration-150",
|
|
38498
|
+
// Pending borrows the HOVER weight and nothing else — no accent bar, no
|
|
38499
|
+
// accent text, no `aria-current`. It says "this row is working", not "this
|
|
38500
|
+
// is where you are", and it reads as the row staying pressed under the
|
|
38501
|
+
// cursor, which is exactly what happened.
|
|
38502
|
+
!isActive && !disabled && "hover:bg-ods-bg-hover text-ods-text-primary [&_svg]:fill-ods-text-secondary",
|
|
38503
|
+
!isActive && !disabled && isPending && "bg-ods-bg-hover",
|
|
38504
|
+
!isActive && disabled && "text-ods-text-secondary [&_svg]:fill-ods-text-secondary",
|
|
38505
|
+
isActive && !disabled && [
|
|
38506
|
+
"bg-[var(--ods-open-yellow-light)] text-ods-accent",
|
|
38507
|
+
"[&_svg]:fill-ods-accent",
|
|
38508
|
+
"before:bg-ods-accent"
|
|
38509
|
+
],
|
|
38510
|
+
isActive && disabled && "text-ods-text-secondary [&_svg]:fill-ods-text-secondary",
|
|
38511
|
+
disabled && "cursor-not-allowed opacity-50"
|
|
38441
38512
|
);
|
|
38442
|
-
|
|
38513
|
+
const content = /* @__PURE__ */ jsxs227(Fragment59, { children: [
|
|
38514
|
+
/* @__PURE__ */ jsxs227("div", { className: "relative flex items-center justify-center flex-shrink-0", children: [
|
|
38515
|
+
cloneElement(item.icon, {
|
|
38516
|
+
color: isActive && !disabled ? "text-ods-accent" : "text-ods-text-secondary"
|
|
38517
|
+
}),
|
|
38518
|
+
hasUnread && !showLabel && /* @__PURE__ */ jsx289("span", { className: "absolute top-0 right-0 bg-ods-warning rounded-full w-2 h-2" })
|
|
38519
|
+
] }),
|
|
38520
|
+
/* @__PURE__ */ jsx289(
|
|
38521
|
+
"span",
|
|
38522
|
+
{
|
|
38523
|
+
className: cn(
|
|
38524
|
+
"text-h4 flex-1 text-left truncate transition-[opacity,margin-left] duration-300",
|
|
38525
|
+
showLabel ? "opacity-100 ml-[var(--spacing-system-xs)]" : "opacity-0 ml-0"
|
|
38526
|
+
),
|
|
38527
|
+
"aria-hidden": !showLabel,
|
|
38528
|
+
children: item.label
|
|
38529
|
+
}
|
|
38530
|
+
),
|
|
38531
|
+
hasUnread && showLabel && /* @__PURE__ */ jsx289("span", { className: "bg-ods-accent flex items-center justify-center flex-shrink-0 p-2 rounded-md size-6", children: /* @__PURE__ */ jsx289("span", { className: "text-h5 text-ods-text-on-accent", children: unreadCount > 99 ? "99+" : unreadCount }) })
|
|
38532
|
+
] });
|
|
38533
|
+
const shared = {
|
|
38534
|
+
className,
|
|
38535
|
+
title: !showLabel ? item.label : void 0,
|
|
38536
|
+
"aria-label": item.label,
|
|
38537
|
+
"aria-current": isActive ? "page" : void 0
|
|
38538
|
+
};
|
|
38539
|
+
if (disabled || !item.path || item.onClick) {
|
|
38540
|
+
return /* @__PURE__ */ jsx289("button", { type: "button", onClick: (event) => onClick(item, event), disabled, ...shared, children: content });
|
|
38541
|
+
}
|
|
38542
|
+
return /* @__PURE__ */ jsx289(next_link_default, { href: item.path, onClick: (event) => onClick(item, event), ...shared, children: content });
|
|
38543
|
+
});
|
|
38443
38544
|
|
|
38444
38545
|
// src/components/navigation/navigation-sidebar-toggle.tsx
|
|
38445
38546
|
import { jsx as jsx290, jsxs as jsxs228 } from "react/jsx-runtime";
|
|
@@ -38488,10 +38589,11 @@ function NavigationSidebarToggle({
|
|
|
38488
38589
|
}
|
|
38489
38590
|
|
|
38490
38591
|
// src/components/navigation/navigation-sidebar.tsx
|
|
38491
|
-
import { Fragment as
|
|
38592
|
+
import { Fragment as Fragment60, jsx as jsx291, jsxs as jsxs229 } from "react/jsx-runtime";
|
|
38492
38593
|
var MINIMIZED_WIDTH = 56;
|
|
38493
38594
|
var EXPANDED_WIDTH = 224;
|
|
38494
38595
|
var STORAGE_KEY = "of.navigationSidebar.minimized";
|
|
38596
|
+
var isModifiedClick = (event) => !!event && (event.metaKey || event.ctrlKey || event.shiftKey || event.altKey || event.button !== 0);
|
|
38495
38597
|
function NavigationSidebar({ config, disabled = false }) {
|
|
38496
38598
|
const isMdUp = useMdUp() ?? false;
|
|
38497
38599
|
const isLgUp = useLgUp() ?? false;
|
|
@@ -38527,15 +38629,30 @@ function NavigationSidebar({ config, disabled = false }) {
|
|
|
38527
38629
|
document.addEventListener("keydown", handleKeyDown);
|
|
38528
38630
|
return () => document.removeEventListener("keydown", handleKeyDown);
|
|
38529
38631
|
}, [isOverlayOpen, closeOverlay]);
|
|
38632
|
+
const [pendingItemId, setPendingItemId] = useState93(null);
|
|
38633
|
+
const committedActiveId = useMemo39(
|
|
38634
|
+
() => config.items.find((item) => item.isActive)?.id ?? null,
|
|
38635
|
+
[config.items]
|
|
38636
|
+
);
|
|
38637
|
+
useEffect70(() => {
|
|
38638
|
+
setPendingItemId(null);
|
|
38639
|
+
}, [committedActiveId]);
|
|
38530
38640
|
const handleItemClick = useCallback37((item, event) => {
|
|
38531
38641
|
event?.stopPropagation();
|
|
38532
38642
|
if (item.onClick) {
|
|
38533
38643
|
item.onClick();
|
|
38534
|
-
|
|
38535
|
-
|
|
38644
|
+
if (isTablet) setTabletMinimized(true);
|
|
38645
|
+
return;
|
|
38646
|
+
}
|
|
38647
|
+
if (!item.path) return;
|
|
38648
|
+
if (isModifiedClick(event)) return;
|
|
38649
|
+
if (config.onNavigate) {
|
|
38650
|
+
event?.preventDefault();
|
|
38651
|
+
if (item.id !== committedActiveId) setPendingItemId(item.id);
|
|
38652
|
+
config.onNavigate(item.path);
|
|
38536
38653
|
}
|
|
38537
38654
|
if (isTablet) setTabletMinimized(true);
|
|
38538
|
-
}, [config, isTablet]);
|
|
38655
|
+
}, [config, isTablet, committedActiveId]);
|
|
38539
38656
|
const { primaryItems, secondaryItems } = useMemo39(() => ({
|
|
38540
38657
|
primaryItems: config.items.filter((item) => item.section !== "secondary"),
|
|
38541
38658
|
secondaryItems: config.items.filter((item) => item.section === "secondary")
|
|
@@ -38544,16 +38661,15 @@ function NavigationSidebar({ config, disabled = false }) {
|
|
|
38544
38661
|
() => minimized ? `${MINIMIZED_WIDTH}px` : `${EXPANDED_WIDTH}px`,
|
|
38545
38662
|
[minimized]
|
|
38546
38663
|
);
|
|
38547
|
-
|
|
38548
|
-
|
|
38549
|
-
if (isHydrated && !transitionsEnabled) {
|
|
38664
|
+
useLayoutEffect8(() => {
|
|
38665
|
+
if (!transitionsEnabled) {
|
|
38550
38666
|
const id = requestAnimationFrame(() => {
|
|
38551
38667
|
setTransitionsEnabled(true);
|
|
38552
38668
|
});
|
|
38553
38669
|
return () => cancelAnimationFrame(id);
|
|
38554
38670
|
}
|
|
38555
|
-
}, [
|
|
38556
|
-
return /* @__PURE__ */ jsxs229(
|
|
38671
|
+
}, [transitionsEnabled]);
|
|
38672
|
+
return /* @__PURE__ */ jsxs229(Fragment60, { children: [
|
|
38557
38673
|
/* @__PURE__ */ jsx291(
|
|
38558
38674
|
"div",
|
|
38559
38675
|
{
|
|
@@ -38575,7 +38691,7 @@ function NavigationSidebar({ config, disabled = false }) {
|
|
|
38575
38691
|
"aria-hidden": "true"
|
|
38576
38692
|
}
|
|
38577
38693
|
),
|
|
38578
|
-
/* @__PURE__ */
|
|
38694
|
+
/* @__PURE__ */ jsxs229(
|
|
38579
38695
|
"aside",
|
|
38580
38696
|
{
|
|
38581
38697
|
className: cn(
|
|
@@ -38592,13 +38708,15 @@ function NavigationSidebar({ config, disabled = false }) {
|
|
|
38592
38708
|
),
|
|
38593
38709
|
style: { width: sidebarWidth },
|
|
38594
38710
|
"aria-label": "Main navigation sidebar",
|
|
38595
|
-
children:
|
|
38711
|
+
children: [
|
|
38596
38712
|
/* @__PURE__ */ jsx291(NavigationSidebarHeader, { minimized }),
|
|
38597
38713
|
/* @__PURE__ */ jsxs229("div", { className: "flex-1 flex flex-col justify-between py-4 overflow-y-auto", children: [
|
|
38598
38714
|
/* @__PURE__ */ jsx291("nav", { className: "flex flex-col", "aria-label": "Primary navigation", children: primaryItems.map((item) => /* @__PURE__ */ jsx291(
|
|
38599
38715
|
NavigationSidebarItemButton,
|
|
38600
38716
|
{
|
|
38601
38717
|
item,
|
|
38718
|
+
isActive: item.id === committedActiveId,
|
|
38719
|
+
isPending: item.id === pendingItemId,
|
|
38602
38720
|
showLabel,
|
|
38603
38721
|
disabled,
|
|
38604
38722
|
onClick: handleItemClick
|
|
@@ -38609,6 +38727,8 @@ function NavigationSidebar({ config, disabled = false }) {
|
|
|
38609
38727
|
NavigationSidebarItemButton,
|
|
38610
38728
|
{
|
|
38611
38729
|
item,
|
|
38730
|
+
isActive: item.id === committedActiveId,
|
|
38731
|
+
isPending: item.id === pendingItemId,
|
|
38612
38732
|
showLabel,
|
|
38613
38733
|
disabled,
|
|
38614
38734
|
onClick: handleItemClick
|
|
@@ -38624,7 +38744,7 @@ function NavigationSidebar({ config, disabled = false }) {
|
|
|
38624
38744
|
onToggle: handleToggle
|
|
38625
38745
|
}
|
|
38626
38746
|
)
|
|
38627
|
-
]
|
|
38747
|
+
]
|
|
38628
38748
|
}
|
|
38629
38749
|
)
|
|
38630
38750
|
] });
|
|
@@ -39005,7 +39125,7 @@ import { Suspense as Suspense2, useCallback as useCallback39, useMemo as useMemo
|
|
|
39005
39125
|
// src/components/navigation/mobile-burger-menu.tsx
|
|
39006
39126
|
import React117, { useCallback as useCallback38, useRef as useRef52 } from "react";
|
|
39007
39127
|
import { usePreventScroll as usePreventScroll5 } from "@react-aria/overlays";
|
|
39008
|
-
import { Fragment as
|
|
39128
|
+
import { Fragment as Fragment61, jsx as jsx296, jsxs as jsxs234 } from "react/jsx-runtime";
|
|
39009
39129
|
var HEADER_HEIGHT = 48;
|
|
39010
39130
|
var MobileBurgerMenu = React117.memo(function MobileBurgerMenu2({
|
|
39011
39131
|
isOpen,
|
|
@@ -39065,7 +39185,7 @@ var MobileBurgerMenu = React117.memo(function MobileBurgerMenu2({
|
|
|
39065
39185
|
);
|
|
39066
39186
|
};
|
|
39067
39187
|
const renderNavigationGrid = (items) => /* @__PURE__ */ jsx296("div", { className: "grid grid-cols-2 gap-3", children: items.map((item) => /* @__PURE__ */ jsx296(React117.Fragment, { children: renderNavigationItem(item, true) }, item.id)) });
|
|
39068
|
-
return /* @__PURE__ */ jsxs234(
|
|
39188
|
+
return /* @__PURE__ */ jsxs234(Fragment61, { children: [
|
|
39069
39189
|
/* @__PURE__ */ jsx296(
|
|
39070
39190
|
"div",
|
|
39071
39191
|
{
|
|
@@ -39829,7 +39949,7 @@ import React119, { useRef as useRef54, useCallback as useCallback40 } from "reac
|
|
|
39829
39949
|
import React118 from "react";
|
|
39830
39950
|
init_button2();
|
|
39831
39951
|
init_cn();
|
|
39832
|
-
import { Fragment as
|
|
39952
|
+
import { Fragment as Fragment62, jsx as jsx306, jsxs as jsxs244 } from "react/jsx-runtime";
|
|
39833
39953
|
function OnboardingStepCard({
|
|
39834
39954
|
step,
|
|
39835
39955
|
isCompleted,
|
|
@@ -39871,10 +39991,10 @@ function OnboardingStepCard({
|
|
|
39871
39991
|
/* @__PURE__ */ jsx306("h3", { className: "text-h4 text-ods-text-primary truncate", title: step.title, children: step.title }),
|
|
39872
39992
|
/* @__PURE__ */ jsx306("p", { className: "text-h6 text-ods-text-secondary truncate h-[20px]", title: step.description, children: step.description })
|
|
39873
39993
|
] }),
|
|
39874
|
-
/* @__PURE__ */ jsx306("div", { className: "flex items-center gap-2 w-full md:w-auto justify-start md:justify-end shrink-0", onClick: (e) => e.stopPropagation(), children: isCheckingCompletion ? /* @__PURE__ */ jsxs244(
|
|
39994
|
+
/* @__PURE__ */ jsx306("div", { className: "flex items-center gap-2 w-full md:w-auto justify-start md:justify-end shrink-0", onClick: (e) => e.stopPropagation(), children: isCheckingCompletion ? /* @__PURE__ */ jsxs244(Fragment62, { children: [
|
|
39875
39995
|
/* @__PURE__ */ jsx306("div", { className: "h-[32px] w-[100px] bg-ods-border rounded-[6px] animate-pulse" }),
|
|
39876
39996
|
/* @__PURE__ */ jsx306("div", { className: "h-[32px] w-[120px] bg-ods-border rounded-[6px] animate-pulse" })
|
|
39877
|
-
] }) : isCompleted ? /* @__PURE__ */ jsxs244(
|
|
39997
|
+
] }) : isCompleted ? /* @__PURE__ */ jsxs244(Fragment62, { children: [
|
|
39878
39998
|
/* @__PURE__ */ jsx306(
|
|
39879
39999
|
StatusBadge,
|
|
39880
40000
|
{
|
|
@@ -39893,14 +40013,14 @@ function OnboardingStepCard({
|
|
|
39893
40013
|
children: step.completedText
|
|
39894
40014
|
}
|
|
39895
40015
|
)
|
|
39896
|
-
] }) : isSkipped ? /* @__PURE__ */ jsx306(
|
|
40016
|
+
] }) : isSkipped ? /* @__PURE__ */ jsx306(Fragment62, { children: /* @__PURE__ */ jsx306(
|
|
39897
40017
|
StatusBadge,
|
|
39898
40018
|
{
|
|
39899
40019
|
text: "SKIPPED",
|
|
39900
40020
|
variant: "card",
|
|
39901
40021
|
colorScheme: "default"
|
|
39902
40022
|
}
|
|
39903
|
-
) }) : /* @__PURE__ */ jsxs244(
|
|
40023
|
+
) }) : /* @__PURE__ */ jsxs244(Fragment62, { children: [
|
|
39904
40024
|
/* @__PURE__ */ jsx306(
|
|
39905
40025
|
Button,
|
|
39906
40026
|
{
|
|
@@ -40860,7 +40980,7 @@ function getHideClasses(hideAt) {
|
|
|
40860
40980
|
}
|
|
40861
40981
|
|
|
40862
40982
|
// src/components/ui/table/table-header.tsx
|
|
40863
|
-
import { Fragment as
|
|
40983
|
+
import { Fragment as Fragment63, jsx as jsx319, jsxs as jsxs254 } from "react/jsx-runtime";
|
|
40864
40984
|
function TableHeader({
|
|
40865
40985
|
columns,
|
|
40866
40986
|
className,
|
|
@@ -40971,10 +41091,10 @@ function TableHeader({
|
|
|
40971
41091
|
column.sortable && "cursor-pointer hover:text-ods-text-primary transition-colors"
|
|
40972
41092
|
),
|
|
40973
41093
|
onClick: () => handleSort(column),
|
|
40974
|
-
children: column.renderHeader ? /* @__PURE__ */ jsxs254(
|
|
41094
|
+
children: column.renderHeader ? /* @__PURE__ */ jsxs254(Fragment63, { children: [
|
|
40975
41095
|
column.renderHeader(),
|
|
40976
41096
|
getSortIcon(column)
|
|
40977
|
-
] }) : /* @__PURE__ */ jsxs254(
|
|
41097
|
+
] }) : /* @__PURE__ */ jsxs254(Fragment63, { children: [
|
|
40978
41098
|
/* @__PURE__ */ jsx319("span", { className: "text-h5 text-ods-text-secondary uppercase whitespace-nowrap", children: column.label }),
|
|
40979
41099
|
getSortIcon(column)
|
|
40980
41100
|
] })
|
|
@@ -41029,7 +41149,7 @@ function TableCell({
|
|
|
41029
41149
|
|
|
41030
41150
|
// src/components/ui/table/table-skeleton.tsx
|
|
41031
41151
|
init_cn();
|
|
41032
|
-
import { Fragment as
|
|
41152
|
+
import { Fragment as Fragment64, jsx as jsx321, jsxs as jsxs255 } from "react/jsx-runtime";
|
|
41033
41153
|
var ROW_HEIGHT_DESKTOP = "h-[66px] md:h-[78px]";
|
|
41034
41154
|
var ROW_HEIGHT_MOBILE = "h-[66px]";
|
|
41035
41155
|
function TableCardSkeleton({
|
|
@@ -41041,7 +41161,7 @@ function TableCardSkeleton({
|
|
|
41041
41161
|
rowClassName
|
|
41042
41162
|
}) {
|
|
41043
41163
|
const primaryKey = (columns.find((c) => /flex-(1|\[)/.test(c.width || "")) ?? columns[0])?.key;
|
|
41044
|
-
return /* @__PURE__ */ jsx321(
|
|
41164
|
+
return /* @__PURE__ */ jsx321(Fragment64, { children: Array.from({ length: rows }).map((_, index) => /* @__PURE__ */ jsxs255(
|
|
41045
41165
|
"div",
|
|
41046
41166
|
{
|
|
41047
41167
|
className: cn(
|
|
@@ -41220,7 +41340,7 @@ function useTableMotion(enabled) {
|
|
|
41220
41340
|
}
|
|
41221
41341
|
|
|
41222
41342
|
// src/components/ui/table/table.tsx
|
|
41223
|
-
import { Fragment as
|
|
41343
|
+
import { Fragment as Fragment65, jsx as jsx323, jsxs as jsxs257 } from "react/jsx-runtime";
|
|
41224
41344
|
function injectSyntheticColumns(columns, rowActions, renderRowActions, rowHref) {
|
|
41225
41345
|
const hasActions = Boolean(rowActions?.length) || Boolean(renderRowActions);
|
|
41226
41346
|
const result = [...columns];
|
|
@@ -41422,7 +41542,7 @@ function Table({
|
|
|
41422
41542
|
hasActions: Boolean(rowActions) && rowActions.length > 0,
|
|
41423
41543
|
hasChevron: Boolean(rowHref)
|
|
41424
41544
|
}
|
|
41425
|
-
) : data.length === 0 ? /* @__PURE__ */ jsx323(TableEmptyState, { message: emptyMessage }) : /* @__PURE__ */ jsxs257(
|
|
41545
|
+
) : data.length === 0 ? /* @__PURE__ */ jsx323(TableEmptyState, { message: emptyMessage }) : /* @__PURE__ */ jsxs257(Fragment65, { children: [
|
|
41426
41546
|
(() => {
|
|
41427
41547
|
const rows = data.map((item, index) => /* @__PURE__ */ jsx323(
|
|
41428
41548
|
TableRow,
|
|
@@ -42019,7 +42139,13 @@ function DataTableColumnFilter({
|
|
|
42019
42139
|
"div",
|
|
42020
42140
|
{
|
|
42021
42141
|
className: cn(
|
|
42022
|
-
|
|
42142
|
+
// Fixed 48px per design, same as the plain header cell next to it —
|
|
42143
|
+
// NOT padding around the label. The two were drifting: 12px+20px+12px
|
|
42144
|
+
// came out 44px here while the sibling was pinned to 48, so in a
|
|
42145
|
+
// header mixing filterable and plain columns the labels sat on
|
|
42146
|
+
// different centre lines and the filter's hit area was 4px short of
|
|
42147
|
+
// the row it belongs to.
|
|
42148
|
+
"group flex w-full items-center gap-[var(--spacing-system-xsf)] h-12 rounded-sm cursor-pointer transition-colors duration-200 select-none",
|
|
42023
42149
|
alignJustify(align)
|
|
42024
42150
|
),
|
|
42025
42151
|
"aria-label": `Filter by ${label}`,
|
|
@@ -42048,7 +42174,7 @@ function DataTableColumnFilter({
|
|
|
42048
42174
|
}
|
|
42049
42175
|
|
|
42050
42176
|
// src/components/ui/data-table/data-table-header.tsx
|
|
42051
|
-
import { Fragment as
|
|
42177
|
+
import { Fragment as Fragment66, jsx as jsx332, jsxs as jsxs264 } from "react/jsx-runtime";
|
|
42052
42178
|
function DataTableHeader({
|
|
42053
42179
|
className,
|
|
42054
42180
|
stickyHeader,
|
|
@@ -42086,7 +42212,12 @@ function DataTableHeader({
|
|
|
42086
42212
|
},
|
|
42087
42213
|
header.id
|
|
42088
42214
|
)),
|
|
42089
|
-
rightSlot && (hasVisibleHeaderCell ? /* @__PURE__ */ jsx332("div", { className: "absolute right-[var(--spacing-system-mf)] inset-y-0 flex items-center", children: rightSlot }) :
|
|
42215
|
+
rightSlot && (hasVisibleHeaderCell ? /* @__PURE__ */ jsx332("div", { className: "absolute right-[var(--spacing-system-mf)] inset-y-0 flex items-center", children: rightSlot }) : (
|
|
42216
|
+
// In-flow fallback: with no visible header cell this slot is the
|
|
42217
|
+
// only thing giving the row height, so it carries the same fixed 48
|
|
42218
|
+
// rather than padding out to 44.
|
|
42219
|
+
/* @__PURE__ */ jsx332("div", { className: "ml-auto flex items-center h-12", children: rightSlot })
|
|
42220
|
+
))
|
|
42090
42221
|
] })
|
|
42091
42222
|
}
|
|
42092
42223
|
);
|
|
@@ -42146,7 +42277,7 @@ function HeaderLabel({ header }) {
|
|
|
42146
42277
|
if (typeof headerDef === "string") {
|
|
42147
42278
|
return /* @__PURE__ */ jsx332("span", { className: "text-h5 text-ods-text-secondary uppercase whitespace-nowrap transition-colors duration-200 group-hover:text-ods-text-primary", children: headerDef });
|
|
42148
42279
|
}
|
|
42149
|
-
return /* @__PURE__ */ jsx332(
|
|
42280
|
+
return /* @__PURE__ */ jsx332(Fragment66, { children: flexRender(headerDef, header.getContext()) });
|
|
42150
42281
|
}
|
|
42151
42282
|
function SortIcon({ sorted }) {
|
|
42152
42283
|
if (sorted === "asc") return /* @__PURE__ */ jsx332(Arrow01UpIcon, { className: "w-4 h-4 text-ods-accent" });
|
|
@@ -42180,12 +42311,12 @@ function DataTableEmpty({ className, ...props }) {
|
|
|
42180
42311
|
// src/components/ui/data-table/data-table-row.tsx
|
|
42181
42312
|
init_next_link();
|
|
42182
42313
|
init_cn();
|
|
42183
|
-
import { memo as
|
|
42314
|
+
import { memo as memo7, useCallback as useCallback44, useRef as useRef59 } from "react";
|
|
42184
42315
|
import { flexRender as flexRender2 } from "@tanstack/react-table";
|
|
42185
42316
|
|
|
42186
42317
|
// src/components/ui/data-table/data-table-skeleton.tsx
|
|
42187
42318
|
init_cn();
|
|
42188
|
-
import { Fragment as
|
|
42319
|
+
import { Fragment as Fragment67, jsx as jsx334, jsxs as jsxs265 } from "react/jsx-runtime";
|
|
42189
42320
|
var ROW_HEIGHT_DESKTOP2 = "h-[66px] md:h-[78px]";
|
|
42190
42321
|
var ROW_HEIGHT_MOBILE2 = "h-[66px]";
|
|
42191
42322
|
function DataTableSkeleton({
|
|
@@ -42196,7 +42327,7 @@ function DataTableSkeleton({
|
|
|
42196
42327
|
const table = useDataTableContext();
|
|
42197
42328
|
const columns = table.getVisibleFlatColumns();
|
|
42198
42329
|
const firstColumnId = columns[0]?.id;
|
|
42199
|
-
return /* @__PURE__ */ jsx334(
|
|
42330
|
+
return /* @__PURE__ */ jsx334(Fragment67, { children: Array.from({ length: rows }).map((_, index) => /* @__PURE__ */ jsxs265(
|
|
42200
42331
|
"div",
|
|
42201
42332
|
{
|
|
42202
42333
|
className: cn(
|
|
@@ -42219,7 +42350,13 @@ function DataTableSkeleton({
|
|
|
42219
42350
|
{
|
|
42220
42351
|
className: cn(
|
|
42221
42352
|
"flex flex-col justify-center shrink-0",
|
|
42222
|
-
meta?.width || "flex-1"
|
|
42353
|
+
meta?.width || "flex-1",
|
|
42354
|
+
// Same responsive hiding the real header and row apply.
|
|
42355
|
+
// Without it a `hideAt` column was drawn in the skeleton and
|
|
42356
|
+
// absent from the loaded table, so below that breakpoint the
|
|
42357
|
+
// remaining columns were sized against a different total and
|
|
42358
|
+
// the whole row re-laid-out the moment data arrived.
|
|
42359
|
+
getHideClasses2(meta?.hideAt)
|
|
42223
42360
|
),
|
|
42224
42361
|
children: [
|
|
42225
42362
|
/* @__PURE__ */ jsx334("div", { className: "h-5 bg-ods-bg-surface rounded-sm w-3/4 mb-[var(--spacing-system-xxs)]" }),
|
|
@@ -42252,7 +42389,7 @@ function DataTableSkeleton({
|
|
|
42252
42389
|
}
|
|
42253
42390
|
|
|
42254
42391
|
// src/components/ui/data-table/data-table-row.tsx
|
|
42255
|
-
import { Fragment as
|
|
42392
|
+
import { Fragment as Fragment68, jsx as jsx335, jsxs as jsxs266 } from "react/jsx-runtime";
|
|
42256
42393
|
function DataTableRowImpl({
|
|
42257
42394
|
row,
|
|
42258
42395
|
onClick,
|
|
@@ -42349,12 +42486,12 @@ function DataTableRowImpl({
|
|
|
42349
42486
|
}
|
|
42350
42487
|
);
|
|
42351
42488
|
}
|
|
42352
|
-
var DataTableRow =
|
|
42489
|
+
var DataTableRow = memo7(DataTableRowImpl);
|
|
42353
42490
|
function CellContent({ children }) {
|
|
42354
42491
|
if (typeof children === "string" || typeof children === "number") {
|
|
42355
42492
|
return /* @__PURE__ */ jsx335("span", { className: "text-h4 text-ods-text-primary truncate", title: String(children), children });
|
|
42356
42493
|
}
|
|
42357
|
-
return /* @__PURE__ */ jsx335(
|
|
42494
|
+
return /* @__PURE__ */ jsx335(Fragment68, { children });
|
|
42358
42495
|
}
|
|
42359
42496
|
|
|
42360
42497
|
// src/components/ui/data-table/data-table-body.tsx
|
|
@@ -42434,7 +42571,7 @@ function DataTableBody({
|
|
|
42434
42571
|
|
|
42435
42572
|
// src/components/ui/data-table/data-table-infinite-footer.tsx
|
|
42436
42573
|
import { useEffect as useEffect73, useRef as useRef60 } from "react";
|
|
42437
|
-
import { Fragment as
|
|
42574
|
+
import { Fragment as Fragment69, jsx as jsx337, jsxs as jsxs268 } from "react/jsx-runtime";
|
|
42438
42575
|
function DataTableInfiniteFooter({
|
|
42439
42576
|
hasNextPage,
|
|
42440
42577
|
isFetchingNextPage,
|
|
@@ -42458,7 +42595,7 @@ function DataTableInfiniteFooter({
|
|
|
42458
42595
|
observer.observe(sentinel);
|
|
42459
42596
|
return () => observer.disconnect();
|
|
42460
42597
|
}, [hasNextPage, isFetchingNextPage, rootMargin]);
|
|
42461
|
-
return /* @__PURE__ */ jsxs268(
|
|
42598
|
+
return /* @__PURE__ */ jsxs268(Fragment69, { children: [
|
|
42462
42599
|
isFetchingNextPage && /* @__PURE__ */ jsx337(DataTableSkeleton, { rows: skeletonRows }),
|
|
42463
42600
|
hasNextPage && /* @__PURE__ */ jsx337("div", { ref: sentinelRef, className: "h-1", "aria-hidden": "true" })
|
|
42464
42601
|
] });
|
|
@@ -43876,7 +44013,7 @@ function FileUpload({
|
|
|
43876
44013
|
import * as React130 from "react";
|
|
43877
44014
|
import { Loader2 as Loader210 } from "lucide-react";
|
|
43878
44015
|
init_cn();
|
|
43879
|
-
import { Fragment as
|
|
44016
|
+
import { Fragment as Fragment71, jsx as jsx344, jsxs as jsxs275 } from "react/jsx-runtime";
|
|
43880
44017
|
var DEFAULT_MAX_SIZE = 25 * 1024 * 1024;
|
|
43881
44018
|
function formatSize(bytes) {
|
|
43882
44019
|
const mb = bytes / (1024 * 1024);
|
|
@@ -44005,7 +44142,7 @@ function ImageUploader({
|
|
|
44005
44142
|
!hasImage && !interactive && "cursor-not-allowed",
|
|
44006
44143
|
dropzoneClassName
|
|
44007
44144
|
),
|
|
44008
|
-
children: hasImage ? /* @__PURE__ */ jsxs275(
|
|
44145
|
+
children: hasImage ? /* @__PURE__ */ jsxs275(Fragment71, { children: [
|
|
44009
44146
|
/* @__PURE__ */ jsx344("div", { className: "relative min-h-0 w-full flex-1 overflow-hidden rounded-md", children: resolvedValue && /* @__PURE__ */ jsx344(
|
|
44010
44147
|
"img",
|
|
44011
44148
|
{
|
|
@@ -44042,7 +44179,7 @@ function ImageUploader({
|
|
|
44042
44179
|
)
|
|
44043
44180
|
] }),
|
|
44044
44181
|
loading && /* @__PURE__ */ jsx344("div", { className: "absolute inset-0 flex items-center justify-center rounded-md bg-ods-overlay", children: /* @__PURE__ */ jsx344(Loader210, { className: "size-8 animate-spin text-ods-text-on-dark" }) })
|
|
44045
|
-
] }) : loading ? /* @__PURE__ */ jsx344(Loader210, { className: "size-8 animate-spin text-ods-accent" }) : /* @__PURE__ */ jsxs275(
|
|
44182
|
+
] }) : loading ? /* @__PURE__ */ jsx344(Loader210, { className: "size-8 animate-spin text-ods-accent" }) : /* @__PURE__ */ jsxs275(Fragment71, { children: [
|
|
44046
44183
|
/* @__PURE__ */ jsx344("div", { className: "flex shrink-0 items-center justify-center rounded-full border border-ods-border bg-ods-card p-[var(--spacing-system-s)]", children: /* @__PURE__ */ jsx344(ImagePlusIcon, { className: "size-6 text-ods-text-primary" }) }),
|
|
44047
44184
|
/* @__PURE__ */ jsxs275("div", { className: "flex w-full flex-col items-center text-center", children: [
|
|
44048
44185
|
/* @__PURE__ */ jsx344("p", { className: "text-h4 text-ods-text-primary", children: label }),
|
|
@@ -44112,7 +44249,7 @@ PopoverContent.displayName = PopoverPrimitive7.Content.displayName;
|
|
|
44112
44249
|
|
|
44113
44250
|
// src/components/ui/color-preset-select.tsx
|
|
44114
44251
|
init_cn();
|
|
44115
|
-
import { Fragment as
|
|
44252
|
+
import { Fragment as Fragment72, jsx as jsx346, jsxs as jsxs276 } from "react/jsx-runtime";
|
|
44116
44253
|
var TICKET_STATUS_COLOR_PRESETS = [
|
|
44117
44254
|
{ key: "green", label: "Green", color: "#5ea62e" },
|
|
44118
44255
|
{ key: "lime", label: "Lime", color: "#8bc34a" },
|
|
@@ -44263,7 +44400,7 @@ function RgbInputs({ value, onChange }) {
|
|
|
44263
44400
|
const b = next.b ?? rgb.b;
|
|
44264
44401
|
onChange(rgbToHex(r, g, b));
|
|
44265
44402
|
};
|
|
44266
|
-
return /* @__PURE__ */ jsxs276(
|
|
44403
|
+
return /* @__PURE__ */ jsxs276(Fragment72, { children: [
|
|
44267
44404
|
/* @__PURE__ */ jsx346(ChannelInput, { value: rgb.r, min: 0, max: 255, ariaLabel: "Red", onCommit: (r) => update({ r }) }),
|
|
44268
44405
|
/* @__PURE__ */ jsx346(ChannelInput, { value: rgb.g, min: 0, max: 255, ariaLabel: "Green", onCommit: (g) => update({ g }) }),
|
|
44269
44406
|
/* @__PURE__ */ jsx346(ChannelInput, { value: rgb.b, min: 0, max: 255, ariaLabel: "Blue", onCommit: (b) => update({ b }) })
|
|
@@ -44279,7 +44416,7 @@ function HslInputs({ value, onChange }) {
|
|
|
44279
44416
|
const out = hslToRgb(h, s, l);
|
|
44280
44417
|
onChange(rgbToHex(out.r, out.g, out.b));
|
|
44281
44418
|
};
|
|
44282
|
-
return /* @__PURE__ */ jsxs276(
|
|
44419
|
+
return /* @__PURE__ */ jsxs276(Fragment72, { children: [
|
|
44283
44420
|
/* @__PURE__ */ jsx346(ChannelInput, { value: hsl.h, min: 0, max: 360, ariaLabel: "Hue", onCommit: (h) => update({ h }) }),
|
|
44284
44421
|
/* @__PURE__ */ jsx346(ChannelInput, { value: hsl.s, min: 0, max: 100, ariaLabel: "Saturation", onCommit: (s) => update({ s }) }),
|
|
44285
44422
|
/* @__PURE__ */ jsx346(ChannelInput, { value: hsl.l, min: 0, max: 100, ariaLabel: "Lightness", onCommit: (l) => update({ l }) })
|
|
@@ -44714,7 +44851,7 @@ init_cn();
|
|
|
44714
44851
|
// src/components/ui/ticket-note-card.tsx
|
|
44715
44852
|
import * as React135 from "react";
|
|
44716
44853
|
init_cn();
|
|
44717
|
-
import { Fragment as
|
|
44854
|
+
import { Fragment as Fragment73, jsx as jsx351, jsxs as jsxs281 } from "react/jsx-runtime";
|
|
44718
44855
|
function TicketNoteCard({ note, onEdit, onDelete, className }) {
|
|
44719
44856
|
const [isEditing, setIsEditing] = React135.useState(false);
|
|
44720
44857
|
const [editText, setEditText] = React135.useState(note.text);
|
|
@@ -44788,7 +44925,7 @@ function TicketNoteCard({ note, onEdit, onDelete, className }) {
|
|
|
44788
44925
|
children: /* @__PURE__ */ jsx351(XmarkIcon, { className: "size-5" })
|
|
44789
44926
|
}
|
|
44790
44927
|
)
|
|
44791
|
-
] }) : /* @__PURE__ */ jsxs281(
|
|
44928
|
+
] }) : /* @__PURE__ */ jsxs281(Fragment73, { children: [
|
|
44792
44929
|
/* @__PURE__ */ jsx351("p", { className: "text-h4 text-ods-text-primary", children: note.text }),
|
|
44793
44930
|
/* @__PURE__ */ jsxs281(
|
|
44794
44931
|
"p",
|
|
@@ -44895,7 +45032,7 @@ function TicketNotesSection({
|
|
|
44895
45032
|
}
|
|
44896
45033
|
|
|
44897
45034
|
// src/components/ui/ticket-info-section.tsx
|
|
44898
|
-
import { Fragment as
|
|
45035
|
+
import { Fragment as Fragment74, jsx as jsx353, jsxs as jsxs283 } from "react/jsx-runtime";
|
|
44899
45036
|
function InfoCell2({ value, label, icon, onClick }) {
|
|
44900
45037
|
return /* @__PURE__ */ jsx353("div", { className: "flex-1 min-w-0 overflow-hidden", children: /* @__PURE__ */ jsxs283("div", { className: "flex flex-col justify-center", children: [
|
|
44901
45038
|
/* @__PURE__ */ jsxs283("div", { className: "flex items-center gap-1 w-full min-w-0", children: [
|
|
@@ -45020,7 +45157,7 @@ function TicketInfoSection({
|
|
|
45020
45157
|
)
|
|
45021
45158
|
] })
|
|
45022
45159
|
] }),
|
|
45023
|
-
expanded && /* @__PURE__ */ jsxs283(
|
|
45160
|
+
expanded && /* @__PURE__ */ jsxs283(Fragment74, { children: [
|
|
45024
45161
|
createdAt && /* @__PURE__ */ jsx353("div", { className: "grid grid-cols-2 gap-4 px-4 py-3 bg-ods-bg border-b border-ods-border items-center", children: /* @__PURE__ */ jsx353(InfoCell2, { value: createdAt, label: "Created" }) }),
|
|
45025
45162
|
/* @__PURE__ */ jsxs283("div", { className: "flex flex-col gap-4 p-4 bg-ods-bg border-b border-ods-border", children: [
|
|
45026
45163
|
description && /* @__PURE__ */ jsx353(SimpleMarkdownRenderer, { content: description }),
|
|
@@ -45078,7 +45215,7 @@ function FilterPillRow({
|
|
|
45078
45215
|
|
|
45079
45216
|
// src/components/ui/image-gallery-modal.tsx
|
|
45080
45217
|
import { ChevronLeft as ChevronLeft4, ChevronRight as ChevronRight8 } from "lucide-react";
|
|
45081
|
-
import { Fragment as
|
|
45218
|
+
import { Fragment as Fragment75, jsx as jsx355, jsxs as jsxs285 } from "react/jsx-runtime";
|
|
45082
45219
|
function ImageGalleryModal({
|
|
45083
45220
|
images,
|
|
45084
45221
|
isOpen,
|
|
@@ -45134,7 +45271,7 @@ function ImageGalleryModal({
|
|
|
45134
45271
|
onClose,
|
|
45135
45272
|
className: "max-w-[95vw]",
|
|
45136
45273
|
children: /* @__PURE__ */ jsxs285("div", { className: "relative flex items-center justify-center bg-black rounded-lg", children: [
|
|
45137
|
-
images.length > 1 && /* @__PURE__ */ jsxs285(
|
|
45274
|
+
images.length > 1 && /* @__PURE__ */ jsxs285(Fragment75, { children: [
|
|
45138
45275
|
selectedImageIndex > 0 && /* @__PURE__ */ jsx355("div", { className: "absolute left-4 top-1/2 -translate-y-1/2 z-[10000]", children: /* @__PURE__ */ jsx355(
|
|
45139
45276
|
Button,
|
|
45140
45277
|
{
|
|
@@ -45252,7 +45389,7 @@ function TaskTypeIcon({ customItemId, className = "h-5 w-5" }) {
|
|
|
45252
45389
|
}
|
|
45253
45390
|
|
|
45254
45391
|
// src/components/chat/entity-cards/roadmap-card.tsx
|
|
45255
|
-
import { Fragment as
|
|
45392
|
+
import { Fragment as Fragment76, jsx as jsx357, jsxs as jsxs286 } from "react/jsx-runtime";
|
|
45256
45393
|
function RoadmapCardSkeleton({ size: size2 = "default" }) {
|
|
45257
45394
|
if (size2 === "sm") {
|
|
45258
45395
|
return /* @__PURE__ */ jsxs286("span", { className: COMPACT_CARD_SKELETON_OUTER, children: [
|
|
@@ -45314,7 +45451,7 @@ function RoadmapCard({
|
|
|
45314
45451
|
const hasScreenshots = (item.screenshots?.length ?? 0) > 0;
|
|
45315
45452
|
const typeLabel = getTaskTypeLabel(item.customItemId);
|
|
45316
45453
|
const useTypeIcon = cardType === "internal_task" || !iconSrc && item.customItemId != null;
|
|
45317
|
-
const body = /* @__PURE__ */ jsxs286(
|
|
45454
|
+
const body = /* @__PURE__ */ jsxs286(Fragment76, { children: [
|
|
45318
45455
|
/* @__PURE__ */ jsx357(
|
|
45319
45456
|
"span",
|
|
45320
45457
|
{
|
|
@@ -45506,7 +45643,7 @@ function RoadmapCard({
|
|
|
45506
45643
|
// src/components/chat/entity-cards/github-activity-card.tsx
|
|
45507
45644
|
import React138 from "react";
|
|
45508
45645
|
import { GitPullRequest, Eye as Eye4, ExternalLink as ExternalLink8 } from "lucide-react";
|
|
45509
|
-
import { Fragment as
|
|
45646
|
+
import { Fragment as Fragment77, jsx as jsx358, jsxs as jsxs287 } from "react/jsx-runtime";
|
|
45510
45647
|
function parseRepoFromUrl(url) {
|
|
45511
45648
|
if (!url) return null;
|
|
45512
45649
|
try {
|
|
@@ -45638,7 +45775,7 @@ function GitHubActivityCard({ item, variant = "compact", className, anchorProps
|
|
|
45638
45775
|
if (repo) metaParts.push(/* @__PURE__ */ jsx358("span", { className: "font-mono truncate", children: repo }, "repo"));
|
|
45639
45776
|
if (dateText) metaParts.push(/* @__PURE__ */ jsx358("span", { className: "whitespace-nowrap", children: dateText }, "date"));
|
|
45640
45777
|
const href = safeHref(item.url);
|
|
45641
|
-
const body = /* @__PURE__ */ jsxs287(
|
|
45778
|
+
const body = /* @__PURE__ */ jsxs287(Fragment77, { children: [
|
|
45642
45779
|
/* @__PURE__ */ jsx358("span", { className: COMPACT_CARD_ICON_SLOT, children: kindIcon(kind, "h-5 w-5") }),
|
|
45643
45780
|
/* @__PURE__ */ jsxs287("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
45644
45781
|
/* @__PURE__ */ jsxs287("span", { className: `${COMPACT_CARD_TITLE_ROW} flex-nowrap gap-1.5`, children: [
|
|
@@ -45693,7 +45830,7 @@ function GitHubActivityCardSkeleton({ variant = "compact", className }) {
|
|
|
45693
45830
|
// src/components/chat/entity-cards/slack-message-card.tsx
|
|
45694
45831
|
import React139 from "react";
|
|
45695
45832
|
import { ExternalLink as ExternalLink9, Hash } from "lucide-react";
|
|
45696
|
-
import { Fragment as
|
|
45833
|
+
import { Fragment as Fragment78, jsx as jsx359, jsxs as jsxs288 } from "react/jsx-runtime";
|
|
45697
45834
|
function parseChannelFromUrl(url) {
|
|
45698
45835
|
if (!url) return null;
|
|
45699
45836
|
try {
|
|
@@ -45732,7 +45869,7 @@ function SlackMessageCard({ item, variant = "compact", className, anchorProps })
|
|
|
45732
45869
|
}
|
|
45733
45870
|
if (dateText) metaParts.push(/* @__PURE__ */ jsx359("span", { className: "whitespace-nowrap", children: dateText }, "date"));
|
|
45734
45871
|
const href = safeHref(item.url);
|
|
45735
|
-
const body = /* @__PURE__ */ jsxs288(
|
|
45872
|
+
const body = /* @__PURE__ */ jsxs288(Fragment78, { children: [
|
|
45736
45873
|
/* @__PURE__ */ jsx359("span", { className: COMPACT_CARD_ICON_SLOT, children: /* @__PURE__ */ jsx359(SlackIcon, { className: "h-5 w-5" }) }),
|
|
45737
45874
|
/* @__PURE__ */ jsxs288("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
45738
45875
|
/* @__PURE__ */ jsx359("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx359("span", { className: COMPACT_CARD_TITLE, children: item.title }) }),
|
|
@@ -45782,7 +45919,7 @@ function SlackMessageCardSkeleton({ variant = "compact", className }) {
|
|
|
45782
45919
|
// src/components/chat/entity-cards/hubspot-ticket-card.tsx
|
|
45783
45920
|
import React140 from "react";
|
|
45784
45921
|
import { ExternalLink as ExternalLink10 } from "lucide-react";
|
|
45785
|
-
import { Fragment as
|
|
45922
|
+
import { Fragment as Fragment79, jsx as jsx360, jsxs as jsxs289 } from "react/jsx-runtime";
|
|
45786
45923
|
function formatToken(token) {
|
|
45787
45924
|
if (!token) return null;
|
|
45788
45925
|
const lower = token.toLowerCase().replace(/_/g, " ");
|
|
@@ -45821,7 +45958,7 @@ function HubspotTicketCard({ item, variant = "compact", className, anchorProps }
|
|
|
45821
45958
|
}
|
|
45822
45959
|
if (dateText) metaParts.push(/* @__PURE__ */ jsx360("span", { className: "whitespace-nowrap", children: dateText }, "date"));
|
|
45823
45960
|
const href = safeHref(item.url);
|
|
45824
|
-
const body = /* @__PURE__ */ jsxs289(
|
|
45961
|
+
const body = /* @__PURE__ */ jsxs289(Fragment79, { children: [
|
|
45825
45962
|
/* @__PURE__ */ jsxs289("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
45826
45963
|
/* @__PURE__ */ jsxs289("span", { className: "flex flex-wrap items-center gap-1.5 min-w-0", children: [
|
|
45827
45964
|
/* @__PURE__ */ jsx360("span", { className: `${COMPACT_CARD_TITLE} shrink min-w-0`, children: item.title }),
|
|
@@ -45901,9 +46038,9 @@ function HubspotTicketCardSkeleton({ variant = "compact", className }) {
|
|
|
45901
46038
|
|
|
45902
46039
|
// src/components/chat/entity-cards/data-room-doc-card.tsx
|
|
45903
46040
|
import { ExternalLink as ExternalLink11 } from "lucide-react";
|
|
45904
|
-
import { Fragment as
|
|
46041
|
+
import { Fragment as Fragment80, jsx as jsx361, jsxs as jsxs290 } from "react/jsx-runtime";
|
|
45905
46042
|
function DataRoomDocCard({ item, className, badgeText, anchorProps }) {
|
|
45906
|
-
const body = /* @__PURE__ */ jsxs290(
|
|
46043
|
+
const body = /* @__PURE__ */ jsxs290(Fragment80, { children: [
|
|
45907
46044
|
/* @__PURE__ */ jsxs290("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
45908
46045
|
/* @__PURE__ */ jsxs290("span", { className: "flex flex-wrap items-center gap-1.5 min-w-0", children: [
|
|
45909
46046
|
/* @__PURE__ */ jsx361("span", { className: `${COMPACT_CARD_TITLE} shrink min-w-0`, children: item.title }),
|
|
@@ -47513,7 +47650,7 @@ function cleanEscapedString(input) {
|
|
|
47513
47650
|
init_button();
|
|
47514
47651
|
import { ExternalLink as ExternalLink12, Clock as Clock2, Play as Play4, Video as Video5 } from "lucide-react";
|
|
47515
47652
|
init_cn();
|
|
47516
|
-
import { Fragment as
|
|
47653
|
+
import { Fragment as Fragment81, jsx as jsx362, jsxs as jsxs291 } from "react/jsx-runtime";
|
|
47517
47654
|
function formatUtc(date, fmt) {
|
|
47518
47655
|
return format2(new Date(date.getTime() + date.getTimezoneOffset() * 6e4), fmt);
|
|
47519
47656
|
}
|
|
@@ -47588,7 +47725,7 @@ function MediaGallery({ images, title }) {
|
|
|
47588
47725
|
setIsModalOpen(false);
|
|
47589
47726
|
setSelectedImageIndex(null);
|
|
47590
47727
|
};
|
|
47591
|
-
return /* @__PURE__ */ jsxs291(
|
|
47728
|
+
return /* @__PURE__ */ jsxs291(Fragment81, { children: [
|
|
47592
47729
|
/* @__PURE__ */ jsx362("div", { className: "p-6 pt-4", children: /* @__PURE__ */ jsx362("div", { className: "overflow-x-auto mb-4", children: /* @__PURE__ */ jsx362("div", { className: "flex gap-3 pb-2", style: { width: "max-content" }, children: images.map((mediaItem, index) => /* @__PURE__ */ jsxs291(
|
|
47593
47730
|
"div",
|
|
47594
47731
|
{
|
|
@@ -47730,7 +47867,7 @@ function ProgramCard({
|
|
|
47730
47867
|
const dateFormat = formatUtc(itemDate, "EEEE d MMMM");
|
|
47731
47868
|
const defaultRenderMeta = () => {
|
|
47732
47869
|
if (config.type === "podcast" && "duration_seconds" in item && !isScheduled) {
|
|
47733
|
-
return /* @__PURE__ */ jsxs291(
|
|
47870
|
+
return /* @__PURE__ */ jsxs291(Fragment81, { children: [
|
|
47734
47871
|
/* @__PURE__ */ jsx362(Clock2, { className: "w-4 h-4 text-ods-text-secondary" }),
|
|
47735
47872
|
/* @__PURE__ */ jsx362("span", { className: "font-body text-ods-text-secondary", children: formatDurationCompact(item.duration_seconds) })
|
|
47736
47873
|
] });
|
|
@@ -47741,7 +47878,7 @@ function ProgramCard({
|
|
|
47741
47878
|
if (config.type === "webinar" && "start_at" in item) {
|
|
47742
47879
|
const webinarItem = item;
|
|
47743
47880
|
const duration = formatDurationFromRange(webinarItem.start_at, webinarItem.end_at);
|
|
47744
|
-
return /* @__PURE__ */ jsxs291(
|
|
47881
|
+
return /* @__PURE__ */ jsxs291(Fragment81, { children: [
|
|
47745
47882
|
/* @__PURE__ */ jsx362(Video5, { className: "w-4 h-4 text-ods-text-secondary" }),
|
|
47746
47883
|
/* @__PURE__ */ jsxs291("span", { className: "font-body text-ods-text-secondary", children: [
|
|
47747
47884
|
formatTimeWithTimezone(webinarItem.start_at, webinarItem.timezone ?? null),
|
|
@@ -47775,10 +47912,10 @@ function ProgramCard({
|
|
|
47775
47912
|
/* @__PURE__ */ jsx362("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 }),
|
|
47776
47913
|
/* @__PURE__ */ jsxs291("div", { className: "flex flex-col md:flex-row md:items-center gap-2 md:gap-4 mb-4", children: [
|
|
47777
47914
|
/* @__PURE__ */ jsx362("span", { className: "text-h6", style: { color: accentColor }, children: dateFormat }),
|
|
47778
|
-
renderMeta ? /* @__PURE__ */ jsxs291(
|
|
47915
|
+
renderMeta ? /* @__PURE__ */ jsxs291(Fragment81, { children: [
|
|
47779
47916
|
/* @__PURE__ */ jsx362("span", { className: "hidden md:inline text-ods-text-secondary", children: "\u2022" }),
|
|
47780
47917
|
renderMeta(item)
|
|
47781
|
-
] }) : defaultRenderMeta() && /* @__PURE__ */ jsxs291(
|
|
47918
|
+
] }) : defaultRenderMeta() && /* @__PURE__ */ jsxs291(Fragment81, { children: [
|
|
47782
47919
|
/* @__PURE__ */ jsx362("span", { className: "hidden md:inline text-ods-text-secondary", children: "\u2022" }),
|
|
47783
47920
|
/* @__PURE__ */ jsx362("div", { className: "flex items-center gap-2", children: defaultRenderMeta() })
|
|
47784
47921
|
] })
|
|
@@ -47855,10 +47992,10 @@ function ProgramCard({
|
|
|
47855
47992
|
|
|
47856
47993
|
// src/components/chat/entity-cards/campaign-card-admin.tsx
|
|
47857
47994
|
import { Megaphone as Megaphone3 } from "lucide-react";
|
|
47858
|
-
import { Fragment as
|
|
47995
|
+
import { Fragment as Fragment82, jsx as jsx363, jsxs as jsxs292 } from "react/jsx-runtime";
|
|
47859
47996
|
function CampaignCardAdmin({ campaign, className, anchorProps }) {
|
|
47860
47997
|
const goalsCount = campaign.goals?.length || 0;
|
|
47861
|
-
const innerChildren = /* @__PURE__ */ jsxs292(
|
|
47998
|
+
const innerChildren = /* @__PURE__ */ jsxs292(Fragment82, { children: [
|
|
47862
47999
|
/* @__PURE__ */ jsx363("span", { className: COMPACT_CARD_ICON_SLOT, children: /* @__PURE__ */ jsx363(Megaphone3, { className: "h-5 w-5" }) }),
|
|
47863
48000
|
/* @__PURE__ */ jsxs292("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
47864
48001
|
/* @__PURE__ */ jsx363("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx363("span", { className: COMPACT_CARD_TITLE, children: campaign.name }) }),
|
|
@@ -47888,11 +48025,11 @@ function CampaignCardAdminSkeleton({ className }) {
|
|
|
47888
48025
|
|
|
47889
48026
|
// src/components/chat/entity-cards/generic-entity-card.tsx
|
|
47890
48027
|
import { ExternalLink as ExternalLink13 } from "lucide-react";
|
|
47891
|
-
import { Fragment as
|
|
48028
|
+
import { Fragment as Fragment83, jsx as jsx364, jsxs as jsxs293 } from "react/jsx-runtime";
|
|
47892
48029
|
function GenericEntityCard({ item, className, anchorProps }) {
|
|
47893
48030
|
const href = safeHref(item.url);
|
|
47894
48031
|
const dateText = formatDateUTC(item.dateUpdated, { fallback: "", timezone: "local" });
|
|
47895
|
-
const body = /* @__PURE__ */ jsxs293(
|
|
48032
|
+
const body = /* @__PURE__ */ jsxs293(Fragment83, { children: [
|
|
47896
48033
|
/* @__PURE__ */ jsxs293("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
47897
48034
|
/* @__PURE__ */ jsxs293("span", { className: "flex flex-wrap items-center gap-1.5 min-w-0", children: [
|
|
47898
48035
|
/* @__PURE__ */ jsx364("span", { className: `${COMPACT_CARD_TITLE} shrink min-w-0`, children: item.title }),
|
|
@@ -48077,7 +48214,7 @@ function resolveSourceIcon(input, ctx = {}) {
|
|
|
48077
48214
|
|
|
48078
48215
|
// src/components/chat/mingo-info-card.tsx
|
|
48079
48216
|
init_cn();
|
|
48080
|
-
import { Fragment as
|
|
48217
|
+
import { Fragment as Fragment84, jsx as jsx365, jsxs as jsxs294 } from "react/jsx-runtime";
|
|
48081
48218
|
function CardMedia({
|
|
48082
48219
|
imageSrc,
|
|
48083
48220
|
imageAlt,
|
|
@@ -48121,7 +48258,7 @@ function MingoInfoCard({
|
|
|
48121
48258
|
const hasMenu = !!menuGroups && menuGroups.length > 0;
|
|
48122
48259
|
const isAnchor = !!anchorProps;
|
|
48123
48260
|
const isInteractive = isAnchor || !!onClick;
|
|
48124
|
-
const content = /* @__PURE__ */ jsxs294(
|
|
48261
|
+
const content = /* @__PURE__ */ jsxs294(Fragment84, { children: [
|
|
48125
48262
|
hasMedia && /* @__PURE__ */ jsx365(CardMedia, { imageSrc, imageAlt, icon }),
|
|
48126
48263
|
/* @__PURE__ */ jsxs294("span", { className: "flex min-w-0 flex-1 flex-col justify-center", children: [
|
|
48127
48264
|
/* @__PURE__ */ jsx365("span", { className: "truncate text-h4 text-ods-text-primary", children: title }),
|
|
@@ -48170,7 +48307,7 @@ function MingoInfoCard({
|
|
|
48170
48307
|
}
|
|
48171
48308
|
|
|
48172
48309
|
// src/components/chat/entity-cards/dispatch.tsx
|
|
48173
|
-
import { Fragment as
|
|
48310
|
+
import { Fragment as Fragment85, jsx as jsx366, jsxs as jsxs295 } from "react/jsx-runtime";
|
|
48174
48311
|
function githubKindIcon(kind) {
|
|
48175
48312
|
switch (kind) {
|
|
48176
48313
|
case "pull_request":
|
|
@@ -49138,10 +49275,10 @@ function ChatCardLoader({
|
|
|
49138
49275
|
}
|
|
49139
49276
|
);
|
|
49140
49277
|
}
|
|
49141
|
-
if (isLoading) return /* @__PURE__ */ jsx366(
|
|
49278
|
+
if (isLoading) return /* @__PURE__ */ jsx366(Fragment85, { children: entry.skeleton() });
|
|
49142
49279
|
if (!item) return null;
|
|
49143
49280
|
if (entry.bareInline) {
|
|
49144
|
-
return /* @__PURE__ */ jsx366(
|
|
49281
|
+
return /* @__PURE__ */ jsx366(Fragment85, { children: navWrap(entry.render(item, finalChatRef, renderOpts)) });
|
|
49145
49282
|
}
|
|
49146
49283
|
return /* @__PURE__ */ jsx366(
|
|
49147
49284
|
ChatCardWithDiscuss,
|
|
@@ -54596,7 +54733,7 @@ function useChatDialogManager({
|
|
|
54596
54733
|
|
|
54597
54734
|
// src/components/chat/embeddable-chat.tsx
|
|
54598
54735
|
init_next_navigation();
|
|
54599
|
-
import { Fragment as
|
|
54736
|
+
import { Fragment as Fragment86, jsx as jsx370, jsxs as jsxs296 } from "react/jsx-runtime";
|
|
54600
54737
|
var DRAWER_DEFAULT_WIDTH_RATIO = 0.5;
|
|
54601
54738
|
var DRAWER_WIDTH_KEY = "mingo-chat-width-v3";
|
|
54602
54739
|
var DRAWER_DEFAULT_WIDTH_PX = 750;
|
|
@@ -54768,7 +54905,7 @@ function SourceChip({
|
|
|
54768
54905
|
);
|
|
54769
54906
|
}
|
|
54770
54907
|
const displayName = src.name || formatRelativePath(src.path);
|
|
54771
|
-
const chipBody = (label) => /* @__PURE__ */ jsxs296(
|
|
54908
|
+
const chipBody = (label) => /* @__PURE__ */ jsxs296(Fragment86, { children: [
|
|
54772
54909
|
icon,
|
|
54773
54910
|
/* @__PURE__ */ jsxs296("span", { className: "truncate max-w-[160px]", children: [
|
|
54774
54911
|
"[",
|
|
@@ -55575,7 +55712,7 @@ function EmbeddableChatInner({
|
|
|
55575
55712
|
// renders in the rail below); the chat block is untouched.
|
|
55576
55713
|
// Back is a full-height leading cell, matching the other
|
|
55577
55714
|
// header cells (not a small inline chevron).
|
|
55578
|
-
/* @__PURE__ */ jsxs296(
|
|
55715
|
+
/* @__PURE__ */ jsxs296(Fragment86, { children: [
|
|
55579
55716
|
/* @__PURE__ */ jsx370(
|
|
55580
55717
|
ChatHeaderIconButton,
|
|
55581
55718
|
{
|
|
@@ -55592,7 +55729,7 @@ function EmbeddableChatInner({
|
|
|
55592
55729
|
// search + archive controls. When search is open the
|
|
55593
55730
|
// inline field takes over the title area in place
|
|
55594
55731
|
// (Figma 116:51217) and the magnifier toggle is hidden.
|
|
55595
|
-
/* @__PURE__ */ jsxs296(
|
|
55732
|
+
/* @__PURE__ */ jsxs296(Fragment86, { children: [
|
|
55596
55733
|
railSearchOpen && mingoCaps.onSearchChange ? /* @__PURE__ */ jsx370(
|
|
55597
55734
|
ChatHeaderSearchField,
|
|
55598
55735
|
{
|
|
@@ -55600,7 +55737,7 @@ function EmbeddableChatInner({
|
|
|
55600
55737
|
onSearchChange: mingoCaps.onSearchChange,
|
|
55601
55738
|
onCollapse: () => setRailSearchOpen(false)
|
|
55602
55739
|
}
|
|
55603
|
-
) : /* @__PURE__ */ jsxs296(
|
|
55740
|
+
) : /* @__PURE__ */ jsxs296(Fragment86, { children: [
|
|
55604
55741
|
/* @__PURE__ */ jsx370("div", { className: "flex min-w-0 flex-1 items-center px-[var(--spacing-system-mf)]", children: /* @__PURE__ */ jsx370("span", { className: "min-w-0 flex-1 truncate text-h3 text-ods-text-primary", children: "Current Chats" }) }),
|
|
55605
55742
|
mingoCaps.onSearchChange && /* @__PURE__ */ jsx370(
|
|
55606
55743
|
ChatHeaderIconButton,
|
|
@@ -55746,7 +55883,7 @@ function EmbeddableChatInner({
|
|
|
55746
55883
|
onRetry: reloadDialogs
|
|
55747
55884
|
}
|
|
55748
55885
|
)
|
|
55749
|
-
) : /* @__PURE__ */ jsxs296(
|
|
55886
|
+
) : /* @__PURE__ */ jsxs296(Fragment86, { children: [
|
|
55750
55887
|
/* @__PURE__ */ jsx370(
|
|
55751
55888
|
"div",
|
|
55752
55889
|
{
|
|
@@ -55992,7 +56129,7 @@ function EmbeddableChatInner({
|
|
|
55992
56129
|
]
|
|
55993
56130
|
}
|
|
55994
56131
|
) }) });
|
|
55995
|
-
return /* @__PURE__ */ jsxs296(
|
|
56132
|
+
return /* @__PURE__ */ jsxs296(Fragment86, { children: [
|
|
55996
56133
|
showInternalTrigger && !shellLess && /* @__PURE__ */ jsx370(
|
|
55997
56134
|
"div",
|
|
55998
56135
|
{
|
|
@@ -57040,4 +57177,4 @@ export {
|
|
|
57040
57177
|
LogsList,
|
|
57041
57178
|
assets
|
|
57042
57179
|
};
|
|
57043
|
-
//# sourceMappingURL=chunk-
|
|
57180
|
+
//# sourceMappingURL=chunk-56J7RLMM.js.map
|