@iblai/iblai-js 2.38.0 → 2.39.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -285443,6 +285443,7 @@ const OutsideButtons = ({
|
|
|
285443
285443
|
const UploadMenu = ({ onFileInputTrigger, onCameraTrigger, disabled = false, mentorId, tenantKey, isPublicRoute, }) => {
|
|
285444
285444
|
const t = useChatT();
|
|
285445
285445
|
const host = useChatHost();
|
|
285446
|
+
const cameraPickedRef = useRef(false);
|
|
285446
285447
|
const showAttachment = useShowAttachment({
|
|
285447
285448
|
mentorId: mentorId || host.mentorId,
|
|
285448
285449
|
tenantKey: tenantKey || host.tenantKey,
|
|
@@ -285458,7 +285459,9 @@ const UploadMenu = ({ onFileInputTrigger, onCameraTrigger, disabled = false, men
|
|
|
285458
285459
|
{
|
|
285459
285460
|
labelKey: 'camera',
|
|
285460
285461
|
icon: jsx(Camera, { className: "h-5 w-5 text-gray-600" }),
|
|
285461
|
-
action:
|
|
285462
|
+
action: () => {
|
|
285463
|
+
cameraPickedRef.current = true;
|
|
285464
|
+
},
|
|
285462
285465
|
isEnabled: host.features.camera,
|
|
285463
285466
|
},
|
|
285464
285467
|
// {
|
|
@@ -285488,7 +285491,16 @@ const UploadMenu = ({ onFileInputTrigger, onCameraTrigger, disabled = false, men
|
|
|
285488
285491
|
if (!showAttachment || uploadMenuItems.length === 0) {
|
|
285489
285492
|
return null;
|
|
285490
285493
|
}
|
|
285491
|
-
return (jsxs(DropdownMenu, { children: [jsx(DropdownMenuTrigger, { asChild: true, disabled: disabled, children: jsxs(Button$1, { variant: "ghost", size: "icon", disabled: disabled, "aria-label": t('chat.chatInputFormUploadMenu.attachFile'), className: "h-8 w-8 rounded-lg text-gray-600 transition-all duration-200 hover:border hover:border-[#38A1E5] hover:bg-[#F5F8FF] disabled:cursor-not-allowed disabled:opacity-50", children: [jsx(Plus, { className: "h-4 w-4" }), jsx("span", { className: "sr-only", children: t('chat.chatInputFormUploadMenu.attachFile') })] }) }), jsx(DropdownMenuContent, { align: "start", className: "z-50 w-56 p-2",
|
|
285494
|
+
return (jsxs(DropdownMenu, { children: [jsx(DropdownMenuTrigger, { asChild: true, disabled: disabled, children: jsxs(Button$1, { variant: "ghost", size: "icon", disabled: disabled, "aria-label": t('chat.chatInputFormUploadMenu.attachFile'), className: "h-8 w-8 rounded-lg text-gray-600 transition-all duration-200 hover:border hover:border-[#38A1E5] hover:bg-[#F5F8FF] disabled:cursor-not-allowed disabled:opacity-50", children: [jsx(Plus, { className: "h-4 w-4" }), jsx("span", { className: "sr-only", children: t('chat.chatInputFormUploadMenu.attachFile') })] }) }), jsx(DropdownMenuContent, { align: "start", className: "z-50 w-56 p-2",
|
|
285495
|
+
// Opening the camera dialog (a separate Radix copy) while this menu is
|
|
285496
|
+
// mounted leaves <body> stuck at `pointer-events: none`; this fires after
|
|
285497
|
+
// the menu has unmounted.
|
|
285498
|
+
onCloseAutoFocus: () => {
|
|
285499
|
+
if (!cameraPickedRef.current)
|
|
285500
|
+
return;
|
|
285501
|
+
cameraPickedRef.current = false;
|
|
285502
|
+
onCameraTrigger();
|
|
285503
|
+
}, children: uploadMenuItems.map((item) => (jsxs(DropdownMenuItem, { onClick: item.action, className: "flex cursor-pointer items-center gap-3 rounded-lg p-3 hover:border-[#38A1E5] hover:bg-gray-50", children: [item.icon, jsx("span", { className: "text-gray-700", children: t(`chat.chatInputFormUploadMenu.${item.labelKey}`) })] }, item.labelKey))) })] }));
|
|
285492
285504
|
};
|
|
285493
285505
|
|
|
285494
285506
|
const CameraCaptureDialog = ({ open, onOpenChange, onCapture, facingMode = 'user', }) => {
|
|
@@ -286524,6 +286536,7 @@ function ComposerPlusMenu({ isMobile, disabled = false, attachDisabled = false,
|
|
|
286524
286536
|
const [memoryOpen, setMemoryOpen] = useState(false);
|
|
286525
286537
|
const [sheetPage, setSheetPage] = useState(null);
|
|
286526
286538
|
const [sheetProvider, setSheetProvider] = useState(null);
|
|
286539
|
+
const cameraPickedRef = useRef(false);
|
|
286527
286540
|
const showAttach = showUpload || showCamera;
|
|
286528
286541
|
const showTools = tools.length > 0;
|
|
286529
286542
|
const showSkills = skills.length > 0;
|
|
@@ -286583,7 +286596,19 @@ function ComposerPlusMenu({ isMobile, disabled = false, attachDisabled = false,
|
|
|
286583
286596
|
}
|
|
286584
286597
|
// --------------------------------------------------------------- desktop
|
|
286585
286598
|
const hasListAfterAttach = showTools || showSkills || showModel || showPrompts || showMemory;
|
|
286586
|
-
return (jsxs(Popover, { open: memoryOpen, onOpenChange: setMemoryOpen, children: [jsx(PopoverAnchor, { asChild: true, children: jsx("div", { className: "flex shrink-0", children: jsxs(DropdownMenu, { open: menuOpen, onOpenChange: setMenuOpen, children: [jsx(DropdownMenuTrigger, { asChild: true, disabled: disabled, children: trigger }), jsxs(DropdownMenuContent, { align: "start", sideOffset: 8, collisionPadding: 8, "data-testid": "composer-plus-menu", className: cn(POP_CLASS, 'flex w-[248px] flex-col gap-0.5'),
|
|
286599
|
+
return (jsxs(Popover, { open: memoryOpen, onOpenChange: setMemoryOpen, children: [jsx(PopoverAnchor, { asChild: true, children: jsx("div", { className: "flex shrink-0", children: jsxs(DropdownMenu, { open: menuOpen, onOpenChange: setMenuOpen, children: [jsx(DropdownMenuTrigger, { asChild: true, disabled: disabled, children: trigger }), jsxs(DropdownMenuContent, { align: "start", sideOffset: 8, collisionPadding: 8, "data-testid": "composer-plus-menu", className: cn(POP_CLASS, 'flex w-[248px] flex-col gap-0.5'),
|
|
286600
|
+
// The camera dialog's DismissableLayer is a separate Radix copy from
|
|
286601
|
+
// this menu's: opened while the menu is mounted it records the menu's
|
|
286602
|
+
// `pointer-events: none` on <body> as the original and restores it on
|
|
286603
|
+
// close, freezing the page. This fires after the menu has unmounted.
|
|
286604
|
+
onCloseAutoFocus: () => {
|
|
286605
|
+
if (!cameraPickedRef.current)
|
|
286606
|
+
return;
|
|
286607
|
+
cameraPickedRef.current = false;
|
|
286608
|
+
onCamera();
|
|
286609
|
+
}, children: [showUpload && (jsxs(DropdownMenuItem, { className: ROW_CLASS, disabled: attachDisabled, onSelect: onUploadFile, children: [jsx(Paperclip, { className: "h-4 w-4 text-gray-600", "aria-hidden": "true" }), jsx("span", { className: "flex-1", children: t('chat.chatInputFormUploadMenu.uploadFile') })] })), showCamera && (jsxs(DropdownMenuItem, { className: ROW_CLASS, disabled: attachDisabled, onSelect: () => {
|
|
286610
|
+
cameraPickedRef.current = true;
|
|
286611
|
+
}, children: [jsx(Camera, { className: "h-4 w-4 text-gray-600", "aria-hidden": "true" }), jsx("span", { className: "flex-1", children: t('chat.chatInputFormUploadMenu.camera') })] })), showAttach && hasListAfterAttach && (jsx(DropdownMenuSeparator, { className: "mx-1.5 my-1 bg-gray-200" })), showTools && (jsxs(DropdownMenuSub, { children: [jsx(SubTrigger, { icon: jsx(SlidersHorizontal, { className: "h-4 w-4 text-gray-600", "aria-hidden": "true" }), label: t('chat.chatComposer.tools'), count: activeToolCount, countLabel: t('chat.chatComposer.activeCount', { count: activeToolCount }), testId: "composer-tools-trigger" }), jsx(Portal2$1, { container: portalContainer !== null && portalContainer !== void 0 ? portalContainer : undefined, children: jsxs(DropdownMenuSubContent, { sideOffset: 6, alignOffset: -7, collisionPadding: 8, "data-testid": "composer-tools-menu", "aria-label": t('chat.chatComposer.tools'), className: cn(POP_CLASS, 'flex max-h-[min(70vh,30rem)] w-56 flex-col gap-0.5 overflow-y-auto'), children: [modes.map((tool) => (jsx(ToolCheckboxItem, { tool: tool, label: toolLabel(tool) }, tool.key))), modes.length > 0 && plainTools.length > 0 && (jsx(DropdownMenuSeparator, { className: "mx-1.5 my-1 bg-gray-200" })), plainTools.map((tool) => (jsx(ToolCheckboxItem, { tool: tool, label: toolLabel(tool) }, tool.key)))] }) })] })), showSkills && (jsxs(DropdownMenuSub, { children: [jsx(SubTrigger, { icon: jsx(Zap, { className: "h-4 w-4 text-gray-600", "aria-hidden": "true" }), label: t('chat.chatInputFormInsideButtons.skills'), count: activeSkillCount, countLabel: t('chat.chatComposer.activeCount', { count: activeSkillCount }), testId: "skills-menu-trigger" }), jsx(Portal2$1, { container: portalContainer !== null && portalContainer !== void 0 ? portalContainer : undefined, children: jsxs(DropdownMenuSubContent, { sideOffset: 6, alignOffset: -7, collisionPadding: 8, "data-testid": "skills-menu-content", "aria-label": t('chat.chatInputFormInsideButtons.skills'), onScroll: handleSkillsScroll, className: cn(POP_CLASS, 'flex max-h-[min(60vh,20rem)] w-56 flex-col gap-0.5 overflow-y-auto'), children: [skills.map((skill) => {
|
|
286587
286612
|
const armed = activeSkillSlugs.has(skill.slug);
|
|
286588
286613
|
return (jsxs(CheckboxItem2, { checked: armed, "data-testid": `skills-menu-item-${skill.slug}`, title: `/${skill.slug}`, className: cn(ROW_CLASS, 'h-auto min-h-9 py-1.5'), onSelect: () => onToggleSkill(skill), children: [jsxs("span", { className: "flex min-w-0 flex-1 flex-col gap-0.5", children: [jsx("span", { "data-testid": "skills-menu-item-name", className: "break-words", children: skill.name }), jsxs("span", { "data-testid": "skills-menu-item-slug", className: "text-xs break-all text-gray-500", children: ["/", skill.slug] })] }), armed && (jsx(Check, { className: "h-4 w-4 text-[#2563eb]", "aria-hidden": "true" }))] }, skill.unique_id));
|
|
286589
286614
|
}), loadingMoreRow] }) })] })), models && (jsxs(DropdownMenuSub, { children: [jsxs(DropdownMenuSubTrigger, { "data-testid": "composer-model-trigger", className: cn(ROW_CLASS, '[&>svg:last-child]:h-3.5 [&>svg:last-child]:w-3.5 [&>svg:last-child]:text-gray-500'), children: [jsx(Cpu, { className: "h-4 w-4 text-gray-600", "aria-hidden": "true" }), jsx("span", { className: "flex-1", children: t('chat.chatComposer.model') }), jsx("span", { className: "max-w-[96px] truncate text-[13px] text-gray-500", children: models.current.label })] }), jsx(Portal2$1, { container: portalContainer !== null && portalContainer !== void 0 ? portalContainer : undefined, children: jsxs(DropdownMenuSubContent, { sideOffset: 6, alignOffset: -7, collisionPadding: 8, "data-testid": "composer-model-providers", "aria-label": t('chat.chatComposer.modelForThisChat'), className: cn(POP_CLASS, 'flex max-h-[min(70vh,30rem)] w-[272px] flex-col gap-0.5 overflow-y-auto'), children: [jsxs("div", { className: "shrink-0 px-2.5 pt-2 pb-1.5", children: [jsx("div", { className: "text-sm font-semibold text-gray-900", children: t('chat.chatComposer.modelForThisChat') }), jsx("div", { className: "text-xs text-gray-600", children: t('chat.chatComposer.newChatsUseDefault', {
|
|
@@ -304920,6 +304920,7 @@ const OutsideButtons = ({
|
|
|
304920
304920
|
const UploadMenu = ({ onFileInputTrigger, onCameraTrigger, disabled = false, mentorId, tenantKey, isPublicRoute, }) => {
|
|
304921
304921
|
const t = useChatT();
|
|
304922
304922
|
const host = useChatHost();
|
|
304923
|
+
const cameraPickedRef = useRef(false);
|
|
304923
304924
|
const showAttachment = useShowAttachment({
|
|
304924
304925
|
mentorId: mentorId || host.mentorId,
|
|
304925
304926
|
tenantKey: tenantKey || host.tenantKey,
|
|
@@ -304935,7 +304936,9 @@ const UploadMenu = ({ onFileInputTrigger, onCameraTrigger, disabled = false, men
|
|
|
304935
304936
|
{
|
|
304936
304937
|
labelKey: 'camera',
|
|
304937
304938
|
icon: jsx(Camera, { className: "h-5 w-5 text-gray-600" }),
|
|
304938
|
-
action:
|
|
304939
|
+
action: () => {
|
|
304940
|
+
cameraPickedRef.current = true;
|
|
304941
|
+
},
|
|
304939
304942
|
isEnabled: host.features.camera,
|
|
304940
304943
|
},
|
|
304941
304944
|
// {
|
|
@@ -304965,7 +304968,16 @@ const UploadMenu = ({ onFileInputTrigger, onCameraTrigger, disabled = false, men
|
|
|
304965
304968
|
if (!showAttachment || uploadMenuItems.length === 0) {
|
|
304966
304969
|
return null;
|
|
304967
304970
|
}
|
|
304968
|
-
return (jsxs(DropdownMenu, { children: [jsx(DropdownMenuTrigger, { asChild: true, disabled: disabled, children: jsxs(Button$1, { variant: "ghost", size: "icon", disabled: disabled, "aria-label": t('chat.chatInputFormUploadMenu.attachFile'), className: "h-8 w-8 rounded-lg text-gray-600 transition-all duration-200 hover:border hover:border-[#38A1E5] hover:bg-[#F5F8FF] disabled:cursor-not-allowed disabled:opacity-50", children: [jsx(Plus, { className: "h-4 w-4" }), jsx("span", { className: "sr-only", children: t('chat.chatInputFormUploadMenu.attachFile') })] }) }), jsx(DropdownMenuContent, { align: "start", className: "z-50 w-56 p-2",
|
|
304971
|
+
return (jsxs(DropdownMenu, { children: [jsx(DropdownMenuTrigger, { asChild: true, disabled: disabled, children: jsxs(Button$1, { variant: "ghost", size: "icon", disabled: disabled, "aria-label": t('chat.chatInputFormUploadMenu.attachFile'), className: "h-8 w-8 rounded-lg text-gray-600 transition-all duration-200 hover:border hover:border-[#38A1E5] hover:bg-[#F5F8FF] disabled:cursor-not-allowed disabled:opacity-50", children: [jsx(Plus, { className: "h-4 w-4" }), jsx("span", { className: "sr-only", children: t('chat.chatInputFormUploadMenu.attachFile') })] }) }), jsx(DropdownMenuContent, { align: "start", className: "z-50 w-56 p-2",
|
|
304972
|
+
// Opening the camera dialog (a separate Radix copy) while this menu is
|
|
304973
|
+
// mounted leaves <body> stuck at `pointer-events: none`; this fires after
|
|
304974
|
+
// the menu has unmounted.
|
|
304975
|
+
onCloseAutoFocus: () => {
|
|
304976
|
+
if (!cameraPickedRef.current)
|
|
304977
|
+
return;
|
|
304978
|
+
cameraPickedRef.current = false;
|
|
304979
|
+
onCameraTrigger();
|
|
304980
|
+
}, children: uploadMenuItems.map((item) => (jsxs(DropdownMenuItem, { onClick: item.action, className: "flex cursor-pointer items-center gap-3 rounded-lg p-3 hover:border-[#38A1E5] hover:bg-gray-50", children: [item.icon, jsx("span", { className: "text-gray-700", children: t(`chat.chatInputFormUploadMenu.${item.labelKey}`) })] }, item.labelKey))) })] }));
|
|
304969
304981
|
};
|
|
304970
304982
|
|
|
304971
304983
|
const CameraCaptureDialog = ({ open, onOpenChange, onCapture, facingMode = 'user', }) => {
|
|
@@ -306597,6 +306609,7 @@ function ComposerPlusMenu({ isMobile, disabled = false, attachDisabled = false,
|
|
|
306597
306609
|
const [memoryOpen, setMemoryOpen] = useState(false);
|
|
306598
306610
|
const [sheetPage, setSheetPage] = useState(null);
|
|
306599
306611
|
const [sheetProvider, setSheetProvider] = useState(null);
|
|
306612
|
+
const cameraPickedRef = useRef(false);
|
|
306600
306613
|
const showAttach = showUpload || showCamera;
|
|
306601
306614
|
const showTools = tools.length > 0;
|
|
306602
306615
|
const showSkills = skills.length > 0;
|
|
@@ -306656,7 +306669,19 @@ function ComposerPlusMenu({ isMobile, disabled = false, attachDisabled = false,
|
|
|
306656
306669
|
}
|
|
306657
306670
|
// --------------------------------------------------------------- desktop
|
|
306658
306671
|
const hasListAfterAttach = showTools || showSkills || showModel || showPrompts || showMemory;
|
|
306659
|
-
return (jsxs(Popover, { open: memoryOpen, onOpenChange: setMemoryOpen, children: [jsx(PopoverAnchor, { asChild: true, children: jsx("div", { className: "flex shrink-0", children: jsxs(DropdownMenu, { open: menuOpen, onOpenChange: setMenuOpen, children: [jsx(DropdownMenuTrigger, { asChild: true, disabled: disabled, children: trigger }), jsxs(DropdownMenuContent, { align: "start", sideOffset: 8, collisionPadding: 8, "data-testid": "composer-plus-menu", className: cn(POP_CLASS, 'flex w-[248px] flex-col gap-0.5'),
|
|
306672
|
+
return (jsxs(Popover, { open: memoryOpen, onOpenChange: setMemoryOpen, children: [jsx(PopoverAnchor, { asChild: true, children: jsx("div", { className: "flex shrink-0", children: jsxs(DropdownMenu, { open: menuOpen, onOpenChange: setMenuOpen, children: [jsx(DropdownMenuTrigger, { asChild: true, disabled: disabled, children: trigger }), jsxs(DropdownMenuContent, { align: "start", sideOffset: 8, collisionPadding: 8, "data-testid": "composer-plus-menu", className: cn(POP_CLASS, 'flex w-[248px] flex-col gap-0.5'),
|
|
306673
|
+
// The camera dialog's DismissableLayer is a separate Radix copy from
|
|
306674
|
+
// this menu's: opened while the menu is mounted it records the menu's
|
|
306675
|
+
// `pointer-events: none` on <body> as the original and restores it on
|
|
306676
|
+
// close, freezing the page. This fires after the menu has unmounted.
|
|
306677
|
+
onCloseAutoFocus: () => {
|
|
306678
|
+
if (!cameraPickedRef.current)
|
|
306679
|
+
return;
|
|
306680
|
+
cameraPickedRef.current = false;
|
|
306681
|
+
onCamera();
|
|
306682
|
+
}, children: [showUpload && (jsxs(DropdownMenuItem, { className: ROW_CLASS, disabled: attachDisabled, onSelect: onUploadFile, children: [jsx(Paperclip, { className: "h-4 w-4 text-gray-600", "aria-hidden": "true" }), jsx("span", { className: "flex-1", children: t('chat.chatInputFormUploadMenu.uploadFile') })] })), showCamera && (jsxs(DropdownMenuItem, { className: ROW_CLASS, disabled: attachDisabled, onSelect: () => {
|
|
306683
|
+
cameraPickedRef.current = true;
|
|
306684
|
+
}, children: [jsx(Camera, { className: "h-4 w-4 text-gray-600", "aria-hidden": "true" }), jsx("span", { className: "flex-1", children: t('chat.chatInputFormUploadMenu.camera') })] })), showAttach && hasListAfterAttach && (jsx(DropdownMenuSeparator, { className: "mx-1.5 my-1 bg-gray-200" })), showTools && (jsxs(DropdownMenuSub, { children: [jsx(SubTrigger, { icon: jsx(SlidersHorizontal, { className: "h-4 w-4 text-gray-600", "aria-hidden": "true" }), label: t('chat.chatComposer.tools'), count: activeToolCount, countLabel: t('chat.chatComposer.activeCount', { count: activeToolCount }), testId: "composer-tools-trigger" }), jsx(Portal2$1, { container: portalContainer !== null && portalContainer !== void 0 ? portalContainer : undefined, children: jsxs(DropdownMenuSubContent, { sideOffset: 6, alignOffset: -7, collisionPadding: 8, "data-testid": "composer-tools-menu", "aria-label": t('chat.chatComposer.tools'), className: cn(POP_CLASS, 'flex max-h-[min(70vh,30rem)] w-56 flex-col gap-0.5 overflow-y-auto'), children: [modes.map((tool) => (jsx(ToolCheckboxItem, { tool: tool, label: toolLabel(tool) }, tool.key))), modes.length > 0 && plainTools.length > 0 && (jsx(DropdownMenuSeparator, { className: "mx-1.5 my-1 bg-gray-200" })), plainTools.map((tool) => (jsx(ToolCheckboxItem, { tool: tool, label: toolLabel(tool) }, tool.key)))] }) })] })), showSkills && (jsxs(DropdownMenuSub, { children: [jsx(SubTrigger, { icon: jsx(Zap, { className: "h-4 w-4 text-gray-600", "aria-hidden": "true" }), label: t('chat.chatInputFormInsideButtons.skills'), count: activeSkillCount, countLabel: t('chat.chatComposer.activeCount', { count: activeSkillCount }), testId: "skills-menu-trigger" }), jsx(Portal2$1, { container: portalContainer !== null && portalContainer !== void 0 ? portalContainer : undefined, children: jsxs(DropdownMenuSubContent, { sideOffset: 6, alignOffset: -7, collisionPadding: 8, "data-testid": "skills-menu-content", "aria-label": t('chat.chatInputFormInsideButtons.skills'), onScroll: handleSkillsScroll, className: cn(POP_CLASS, 'flex max-h-[min(60vh,20rem)] w-56 flex-col gap-0.5 overflow-y-auto'), children: [skills.map((skill) => {
|
|
306660
306685
|
const armed = activeSkillSlugs.has(skill.slug);
|
|
306661
306686
|
return (jsxs(CheckboxItem2, { checked: armed, "data-testid": `skills-menu-item-${skill.slug}`, title: `/${skill.slug}`, className: cn(ROW_CLASS, 'h-auto min-h-9 py-1.5'), onSelect: () => onToggleSkill(skill), children: [jsxs("span", { className: "flex min-w-0 flex-1 flex-col gap-0.5", children: [jsx("span", { "data-testid": "skills-menu-item-name", className: "break-words", children: skill.name }), jsxs("span", { "data-testid": "skills-menu-item-slug", className: "text-xs break-all text-gray-500", children: ["/", skill.slug] })] }), armed && (jsx(Check, { className: "h-4 w-4 text-[#2563eb]", "aria-hidden": "true" }))] }, skill.unique_id));
|
|
306662
306687
|
}), loadingMoreRow] }) })] })), models && (jsxs(DropdownMenuSub, { children: [jsxs(DropdownMenuSubTrigger, { "data-testid": "composer-model-trigger", className: cn(ROW_CLASS, '[&>svg:last-child]:h-3.5 [&>svg:last-child]:w-3.5 [&>svg:last-child]:text-gray-500'), children: [jsx(Cpu, { className: "h-4 w-4 text-gray-600", "aria-hidden": "true" }), jsx("span", { className: "flex-1", children: t('chat.chatComposer.model') }), jsx("span", { className: "max-w-[96px] truncate text-[13px] text-gray-500", children: models.current.label })] }), jsx(Portal2$1, { container: portalContainer !== null && portalContainer !== void 0 ? portalContainer : undefined, children: jsxs(DropdownMenuSubContent, { sideOffset: 6, alignOffset: -7, collisionPadding: 8, "data-testid": "composer-model-providers", "aria-label": t('chat.chatComposer.modelForThisChat'), className: cn(POP_CLASS, 'flex max-h-[min(70vh,30rem)] w-[272px] flex-col gap-0.5 overflow-y-auto'), children: [jsxs("div", { className: "shrink-0 px-2.5 pt-2 pb-1.5", children: [jsx("div", { className: "text-sm font-semibold text-gray-900", children: t('chat.chatComposer.modelForThisChat') }), jsx("div", { className: "text-xs text-gray-600", children: t('chat.chatComposer.newChatsUseDefault', {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@iblai/iblai-js",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.39.1",
|
|
4
4
|
"description": "Unified JavaScript SDK for IBL.ai — re-exports data-layer, web-containers, and web-utils under a single package",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
@@ -76,10 +76,10 @@
|
|
|
76
76
|
"axios": "1.13.6",
|
|
77
77
|
"dotenv": "16.6.1",
|
|
78
78
|
"winston": "3.19.0",
|
|
79
|
-
"@iblai/data-layer": "1.30.1",
|
|
80
79
|
"@iblai/mcp": "1.30.0",
|
|
81
|
-
"@iblai/web-containers": "1.43.
|
|
82
|
-
"@iblai/
|
|
80
|
+
"@iblai/web-containers": "1.43.1",
|
|
81
|
+
"@iblai/data-layer": "1.30.1",
|
|
82
|
+
"@iblai/web-utils": "2.9.0"
|
|
83
83
|
},
|
|
84
84
|
"peerDependencies": {
|
|
85
85
|
"@iblai/iblai-api": "4.166.0-ai",
|