@iblai/iblai-js 2.5.7 → 2.5.8

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.
@@ -65112,6 +65112,7 @@ var tabsUserstab$3 = {
65112
65112
  columnStatus: "Status",
65113
65113
  roleAdmin: "Admin",
65114
65114
  roleUser: "User",
65115
+ selectRoleAriaLabel: "Select role for {name}",
65115
65116
  selectPoliciesAriaLabel: "Select policies for {name}",
65116
65117
  allPoliciesSelected: "All ({count}) selected",
65117
65118
  nPoliciesSelected: "{count} selected",
@@ -72161,6 +72162,7 @@ var tabsUserstab$2 = {
72161
72162
  columnStatus: "Statut",
72162
72163
  roleAdmin: "Admin",
72163
72164
  roleUser: "Utilisateur",
72165
+ selectRoleAriaLabel: "Sélectionner le rôle pour {name}",
72164
72166
  selectPoliciesAriaLabel: "Sélectionner les politiques pour {name}",
72165
72167
  allPoliciesSelected: "Tout ({count}) sélectionné",
72166
72168
  nPoliciesSelected: "{count} sélectionné(s)",
@@ -79044,6 +79046,7 @@ var tabsUserstab$1 = {
79044
79046
  columnStatus: "Estado",
79045
79047
  roleAdmin: "Admin",
79046
79048
  roleUser: "Usuario",
79049
+ selectRoleAriaLabel: "Seleccionar rol para {name}",
79047
79050
  selectPoliciesAriaLabel: "Seleccionar políticas para {name}",
79048
79051
  allPoliciesSelected: "Todas ({count}) seleccionadas",
79049
79052
  nPoliciesSelected: "{count} seleccionada(s)",
@@ -85927,6 +85930,7 @@ var tabsUserstab = {
85927
85930
  columnStatus: "状态",
85928
85931
  roleAdmin: "管理员",
85929
85932
  roleUser: "用户",
85933
+ selectRoleAriaLabel: "为 {name} 选择角色",
85930
85934
  selectPoliciesAriaLabel: "为 {name} 选择策略",
85931
85935
  allPoliciesSelected: "全部({count})已选",
85932
85936
  nPoliciesSelected: "已选 {count} 个",
@@ -147895,6 +147899,7 @@ function UsersTab({ tenant, onInviteClick, currentSpa, showGradebookTab = false,
147895
147899
  const [updateUserStatus] = useUpdateUserStatusMutation();
147896
147900
  const [updatePlatformUserRoleWithPolicies] = useUpdatePlatformUserRoleWithPoliciesMutation();
147897
147901
  const [updatingUserIds, setUpdatingUserIds] = useState(new Set());
147902
+ const [pendingRoles, setPendingRoles] = useState({});
147898
147903
  const [openPolicyPopover, setOpenPolicyPopover] = useState(null);
147899
147904
  const [selectedUser, setSelectedUser] = useState(null);
147900
147905
  const { currentTenant } = useCurrentTenant();
@@ -147947,18 +147952,19 @@ function UsersTab({ tenant, onInviteClick, currentSpa, showGradebookTab = false,
147947
147952
  if (!isWatcher)
147948
147953
  await refetchPlatformUsers();
147949
147954
  };
147950
- const handleUserRoleChange = async (user) => {
147955
+ const handleUserRoleChange = async (user, nextRole) => {
147951
147956
  const userId = user === null || user === void 0 ? void 0 : user.user_id;
147952
147957
  if (!userId)
147953
147958
  return;
147954
147959
  // Add to updating state
147955
147960
  setUpdatingUserIds((prev) => new Set(prev).add(userId));
147961
+ setPendingRoles((prev) => ({ ...prev, [userId]: nextRole }));
147956
147962
  try {
147957
147963
  await updateUserRole({
147958
147964
  username: user === null || user === void 0 ? void 0 : user.username,
147959
147965
  org: user === null || user === void 0 ? void 0 : user.platform_org,
147960
147966
  role: 'org-instructor',
147961
- active: !(user === null || user === void 0 ? void 0 : user.is_admin),
147967
+ active: nextRole === 'admin',
147962
147968
  }).unwrap();
147963
147969
  // Only clear policies if role change succeeded
147964
147970
  try {
@@ -147980,6 +147986,7 @@ function UsersTab({ tenant, onInviteClick, currentSpa, showGradebookTab = false,
147980
147986
  toast.success(t('tabsUserstab.roleUpdatedSuccess'));
147981
147987
  // Manually invalidate the platformUsers query since it's in a different API slice
147982
147988
  dispatch(platformApiSlice.util.invalidateTags([featureTags.PLATFORM_USERS]));
147989
+ await refetchPlatformUsers();
147983
147990
  }
147984
147991
  catch (error) {
147985
147992
  toast.error(t('tabsUserstab.roleUpdateFailed'));
@@ -147990,6 +147997,10 @@ function UsersTab({ tenant, onInviteClick, currentSpa, showGradebookTab = false,
147990
147997
  newSet.delete(userId);
147991
147998
  return newSet;
147992
147999
  });
148000
+ setPendingRoles((prev) => {
148001
+ const { [userId]: _removed, ...rest } = prev;
148002
+ return rest;
148003
+ });
147993
148004
  }
147994
148005
  };
147995
148006
  const handleUserStatusChange = async (user, newStatus) => {
@@ -148090,6 +148101,7 @@ function UsersTab({ tenant, onInviteClick, currentSpa, showGradebookTab = false,
148090
148101
  const totalCount = (_b = (isWatcher ? accessibleUsers === null || accessibleUsers === void 0 ? void 0 : accessibleUsers.count : users === null || users === void 0 ? void 0 : users.count)) !== null && _b !== void 0 ? _b : 0;
148091
148102
  const totalPages = Math.ceil(totalCount / PAGE_SIZE$5);
148092
148103
  return (jsxs("div", { className: "mt-4", children: [jsxs("div", { className: "flex justify-between items-center gap-1", children: [jsxs("div", { className: "relative mb-6 max-w-sm", children: [jsx(Search, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-gray-400" }), jsx(Input, { type: "text", value: searchQuery, onChange: (event) => setQuerySearch(event.target.value), placeholder: t('tabsUserstab.searchPlaceholder'), className: "pl-10 pr-10 focus:ring-blue-500 focus:border-blue-500 h-[35px]", "aria-label": t('tabsUserstab.searchAriaLabel') }), searchQuery.length > 0 && (searchQuery !== debouncedSearchQuery || isLoading) && (jsx(LoaderCircle, { "data-testid": "search-spinner", className: "absolute right-3 top-1/2 -translate-y-1/2 h-4 w-4 text-gray-400 animate-spin", "aria-hidden": "true" }))] }), !isWatcher && (jsx("div", { className: "mb-6", children: jsx(Button$1, { className: "bg-gradient-to-r from-[#2563EB] to-[#93C5FD] hover:opacity-90 text-white h-[35px]", onClick: onInviteClick, children: t('tabsUserstab.inviteButton') }) }))] }), isLoading ? (jsx("div", { className: "flex justify-center items-center h-64", children: jsx(Spinner, {}) })) : (jsxs(Fragment$1, { children: [jsx("div", { className: "bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-lg overflow-x-auto", children: jsxs("table", { className: "w-full text-sm", children: [jsx("thead", { className: "bg-gray-50 dark:bg-gray-700 border-b border-gray-200 dark:border-gray-600", children: jsxs("tr", { children: [jsx("th", { className: `px-6 py-3 text-left font-medium text-gray-500 dark:text-gray-400 ${isWatcher ? 'w-full' : 'w-[41%]'}`, children: t('tabsUserstab.columnEmail') }), !isWatcher && (jsxs(Fragment$1, { children: [jsx("th", { className: "px-6 py-3 text-left font-medium text-gray-500 dark:text-gray-400 w-[16%]", children: t('tabsUserstab.columnRole') }), jsx("th", { className: "px-6 py-3 text-left font-medium text-gray-500 dark:text-gray-400 w-[25%]", children: t('tabsUserstab.columnPolicies') }), jsx("th", { className: "px-6 py-3 text-left font-medium text-gray-500 dark:text-gray-400 w-[18%]", children: t('tabsUserstab.columnStatus') })] }))] }) }), jsxs("tbody", { className: "divide-y divide-gray-200 dark:divide-gray-600", children: [rows.map((row) => {
148104
+ var _a;
148093
148105
  // Only set on the admin path — see {@link UserRow}.
148094
148106
  const user = row.managed;
148095
148107
  return (jsxs("tr", { onClick: () => setSelectedUser(row), className: "cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-700/50 transition-colors", children: [jsx("td", { "aria-label": 'user-management-email-column', className: "px-6 py-4 text-gray-900 dark:text-gray-100 text-sm max-w-0", children: jsx("button", { type: "button", onClick: (e) => {
@@ -148097,7 +148109,9 @@ function UsersTab({ tenant, onInviteClick, currentSpa, showGradebookTab = false,
148097
148109
  setSelectedUser(row);
148098
148110
  }, className: "block max-w-full truncate text-left hover:text-blue-600 hover:underline focus:outline-none focus:text-blue-600", "aria-label": t('tabsUserstab.viewProfileAriaLabel', {
148099
148111
  name: row.name || row.email,
148100
- }), children: row.email }) }), user && (jsxs(Fragment$1, { children: [jsx("td", { className: "px-6 py-4", onClick: (e) => e.stopPropagation(), children: jsxs(Select$1, { value: user.is_admin ? 'admin' : 'student', onValueChange: () => handleUserRoleChange(user), children: [jsx(SelectTrigger, { className: "w-full text-sm", children: jsx(SelectValue, {}) }), jsxs(SelectContent, { className: "text-sm", children: [jsx(SelectItem, { value: "admin", children: t('tabsUserstab.roleAdmin') }), jsx(SelectItem, { value: "student", children: t('tabsUserstab.roleUser') })] })] }) }), jsx("td", { className: "px-6 py-4", onClick: (e) => e.stopPropagation(), children: jsxs(Popover, { modal: true, open: openPolicyPopover === user.user_id, onOpenChange: (open) => setOpenPolicyPopover(open ? user.user_id : null), children: [jsx(PopoverTrigger, { asChild: true, children: jsxs(Button$1, { variant: "outline", role: "combobox", "aria-expanded": openPolicyPopover === user.user_id, "aria-label": t('tabsUserstab.selectPoliciesAriaLabel', {
148112
+ }), children: row.email }) }), user && (jsxs(Fragment$1, { children: [jsx("td", { className: "px-6 py-4", onClick: (e) => e.stopPropagation(), children: jsxs(Select$1, { value: (_a = pendingRoles[user.user_id]) !== null && _a !== void 0 ? _a : (user.is_admin ? 'admin' : 'student'), onValueChange: (nextRole) => handleUserRoleChange(user, nextRole), disabled: updatingUserIds.has(user === null || user === void 0 ? void 0 : user.user_id), children: [jsxs(SelectTrigger, { className: "w-full text-sm", "aria-label": t('tabsUserstab.selectRoleAriaLabel', {
148113
+ name: user.name,
148114
+ }), children: [jsx(SelectValue, {}), updatingUserIds.has(user === null || user === void 0 ? void 0 : user.user_id) && (jsx(LoaderCircle, { "data-testid": "role-update-spinner", className: "h-4 w-4 animate-spin", "aria-hidden": "true" }))] }), jsxs(SelectContent, { className: "text-sm", children: [jsx(SelectItem, { value: "admin", children: t('tabsUserstab.roleAdmin') }), jsx(SelectItem, { value: "student", children: t('tabsUserstab.roleUser') })] })] }) }), jsx("td", { className: "px-6 py-4", onClick: (e) => e.stopPropagation(), children: jsxs(Popover, { modal: true, open: openPolicyPopover === user.user_id, onOpenChange: (open) => setOpenPolicyPopover(open ? user.user_id : null), children: [jsx(PopoverTrigger, { asChild: true, children: jsxs(Button$1, { variant: "outline", role: "combobox", "aria-expanded": openPolicyPopover === user.user_id, "aria-label": t('tabsUserstab.selectPoliciesAriaLabel', {
148101
148115
  name: user.name,
148102
148116
  }), className: "w-full justify-between text-sm h-9 font-normal", disabled: updatingUserIds.has(user === null || user === void 0 ? void 0 : user.user_id), children: [jsx("span", { className: "truncate", children: user.is_admin
148103
148117
  ? t('tabsUserstab.allPoliciesSelected', {
@@ -101937,6 +101937,7 @@ var tabsUserstab$3 = {
101937
101937
  columnStatus: "Status",
101938
101938
  roleAdmin: "Admin",
101939
101939
  roleUser: "User",
101940
+ selectRoleAriaLabel: "Select role for {name}",
101940
101941
  selectPoliciesAriaLabel: "Select policies for {name}",
101941
101942
  allPoliciesSelected: "All ({count}) selected",
101942
101943
  nPoliciesSelected: "{count} selected",
@@ -108986,6 +108987,7 @@ var tabsUserstab$2 = {
108986
108987
  columnStatus: "Statut",
108987
108988
  roleAdmin: "Admin",
108988
108989
  roleUser: "Utilisateur",
108990
+ selectRoleAriaLabel: "Sélectionner le rôle pour {name}",
108989
108991
  selectPoliciesAriaLabel: "Sélectionner les politiques pour {name}",
108990
108992
  allPoliciesSelected: "Tout ({count}) sélectionné",
108991
108993
  nPoliciesSelected: "{count} sélectionné(s)",
@@ -115869,6 +115871,7 @@ var tabsUserstab$1 = {
115869
115871
  columnStatus: "Estado",
115870
115872
  roleAdmin: "Admin",
115871
115873
  roleUser: "Usuario",
115874
+ selectRoleAriaLabel: "Seleccionar rol para {name}",
115872
115875
  selectPoliciesAriaLabel: "Seleccionar políticas para {name}",
115873
115876
  allPoliciesSelected: "Todas ({count}) seleccionadas",
115874
115877
  nPoliciesSelected: "{count} seleccionada(s)",
@@ -122752,6 +122755,7 @@ var tabsUserstab = {
122752
122755
  columnStatus: "状态",
122753
122756
  roleAdmin: "管理员",
122754
122757
  roleUser: "用户",
122758
+ selectRoleAriaLabel: "为 {name} 选择角色",
122755
122759
  selectPoliciesAriaLabel: "为 {name} 选择策略",
122756
122760
  allPoliciesSelected: "全部({count})已选",
122757
122761
  nPoliciesSelected: "已选 {count} 个",
@@ -181008,6 +181012,7 @@ function UsersTab({ tenant, onInviteClick, currentSpa, showGradebookTab = false,
181008
181012
  const [updateUserStatus] = useUpdateUserStatusMutation();
181009
181013
  const [updatePlatformUserRoleWithPolicies] = useUpdatePlatformUserRoleWithPoliciesMutation();
181010
181014
  const [updatingUserIds, setUpdatingUserIds] = useState(new Set());
181015
+ const [pendingRoles, setPendingRoles] = useState({});
181011
181016
  const [openPolicyPopover, setOpenPolicyPopover] = useState(null);
181012
181017
  const [selectedUser, setSelectedUser] = useState(null);
181013
181018
  const { currentTenant } = useCurrentTenant();
@@ -181060,18 +181065,19 @@ function UsersTab({ tenant, onInviteClick, currentSpa, showGradebookTab = false,
181060
181065
  if (!isWatcher)
181061
181066
  await refetchPlatformUsers();
181062
181067
  };
181063
- const handleUserRoleChange = async (user) => {
181068
+ const handleUserRoleChange = async (user, nextRole) => {
181064
181069
  const userId = user === null || user === void 0 ? void 0 : user.user_id;
181065
181070
  if (!userId)
181066
181071
  return;
181067
181072
  // Add to updating state
181068
181073
  setUpdatingUserIds((prev) => new Set(prev).add(userId));
181074
+ setPendingRoles((prev) => ({ ...prev, [userId]: nextRole }));
181069
181075
  try {
181070
181076
  await updateUserRole({
181071
181077
  username: user === null || user === void 0 ? void 0 : user.username,
181072
181078
  org: user === null || user === void 0 ? void 0 : user.platform_org,
181073
181079
  role: 'org-instructor',
181074
- active: !(user === null || user === void 0 ? void 0 : user.is_admin),
181080
+ active: nextRole === 'admin',
181075
181081
  }).unwrap();
181076
181082
  // Only clear policies if role change succeeded
181077
181083
  try {
@@ -181093,6 +181099,7 @@ function UsersTab({ tenant, onInviteClick, currentSpa, showGradebookTab = false,
181093
181099
  toast.success(t('tabsUserstab.roleUpdatedSuccess'));
181094
181100
  // Manually invalidate the platformUsers query since it's in a different API slice
181095
181101
  dispatch(platformApiSlice.util.invalidateTags([featureTags.PLATFORM_USERS]));
181102
+ await refetchPlatformUsers();
181096
181103
  }
181097
181104
  catch (error) {
181098
181105
  toast.error(t('tabsUserstab.roleUpdateFailed'));
@@ -181103,6 +181110,10 @@ function UsersTab({ tenant, onInviteClick, currentSpa, showGradebookTab = false,
181103
181110
  newSet.delete(userId);
181104
181111
  return newSet;
181105
181112
  });
181113
+ setPendingRoles((prev) => {
181114
+ const { [userId]: _removed, ...rest } = prev;
181115
+ return rest;
181116
+ });
181106
181117
  }
181107
181118
  };
181108
181119
  const handleUserStatusChange = async (user, newStatus) => {
@@ -181203,6 +181214,7 @@ function UsersTab({ tenant, onInviteClick, currentSpa, showGradebookTab = false,
181203
181214
  const totalCount = (_b = (isWatcher ? accessibleUsers === null || accessibleUsers === void 0 ? void 0 : accessibleUsers.count : users === null || users === void 0 ? void 0 : users.count)) !== null && _b !== void 0 ? _b : 0;
181204
181215
  const totalPages = Math.ceil(totalCount / PAGE_SIZE$d);
181205
181216
  return (jsxs("div", { className: "mt-4", children: [jsxs("div", { className: "flex justify-between items-center gap-1", children: [jsxs("div", { className: "relative mb-6 max-w-sm", children: [jsx(Search, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-gray-400" }), jsx(Input, { type: "text", value: searchQuery, onChange: (event) => setQuerySearch(event.target.value), placeholder: t('tabsUserstab.searchPlaceholder'), className: "pl-10 pr-10 focus:ring-blue-500 focus:border-blue-500 h-[35px]", "aria-label": t('tabsUserstab.searchAriaLabel') }), searchQuery.length > 0 && (searchQuery !== debouncedSearchQuery || isLoading) && (jsx(LoaderCircle, { "data-testid": "search-spinner", className: "absolute right-3 top-1/2 -translate-y-1/2 h-4 w-4 text-gray-400 animate-spin", "aria-hidden": "true" }))] }), !isWatcher && (jsx("div", { className: "mb-6", children: jsx(Button$1, { className: "bg-gradient-to-r from-[#2563EB] to-[#93C5FD] hover:opacity-90 text-white h-[35px]", onClick: onInviteClick, children: t('tabsUserstab.inviteButton') }) }))] }), isLoading ? (jsx("div", { className: "flex justify-center items-center h-64", children: jsx(Spinner, {}) })) : (jsxs(Fragment$1, { children: [jsx("div", { className: "bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-lg overflow-x-auto", children: jsxs("table", { className: "w-full text-sm", children: [jsx("thead", { className: "bg-gray-50 dark:bg-gray-700 border-b border-gray-200 dark:border-gray-600", children: jsxs("tr", { children: [jsx("th", { className: `px-6 py-3 text-left font-medium text-gray-500 dark:text-gray-400 ${isWatcher ? 'w-full' : 'w-[41%]'}`, children: t('tabsUserstab.columnEmail') }), !isWatcher && (jsxs(Fragment$1, { children: [jsx("th", { className: "px-6 py-3 text-left font-medium text-gray-500 dark:text-gray-400 w-[16%]", children: t('tabsUserstab.columnRole') }), jsx("th", { className: "px-6 py-3 text-left font-medium text-gray-500 dark:text-gray-400 w-[25%]", children: t('tabsUserstab.columnPolicies') }), jsx("th", { className: "px-6 py-3 text-left font-medium text-gray-500 dark:text-gray-400 w-[18%]", children: t('tabsUserstab.columnStatus') })] }))] }) }), jsxs("tbody", { className: "divide-y divide-gray-200 dark:divide-gray-600", children: [rows.map((row) => {
181217
+ var _a;
181206
181218
  // Only set on the admin path — see {@link UserRow}.
181207
181219
  const user = row.managed;
181208
181220
  return (jsxs("tr", { onClick: () => setSelectedUser(row), className: "cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-700/50 transition-colors", children: [jsx("td", { "aria-label": 'user-management-email-column', className: "px-6 py-4 text-gray-900 dark:text-gray-100 text-sm max-w-0", children: jsx("button", { type: "button", onClick: (e) => {
@@ -181210,7 +181222,9 @@ function UsersTab({ tenant, onInviteClick, currentSpa, showGradebookTab = false,
181210
181222
  setSelectedUser(row);
181211
181223
  }, className: "block max-w-full truncate text-left hover:text-blue-600 hover:underline focus:outline-none focus:text-blue-600", "aria-label": t('tabsUserstab.viewProfileAriaLabel', {
181212
181224
  name: row.name || row.email,
181213
- }), children: row.email }) }), user && (jsxs(Fragment$1, { children: [jsx("td", { className: "px-6 py-4", onClick: (e) => e.stopPropagation(), children: jsxs(Select$1, { value: user.is_admin ? 'admin' : 'student', onValueChange: () => handleUserRoleChange(user), children: [jsx(SelectTrigger, { className: "w-full text-sm", children: jsx(SelectValue, {}) }), jsxs(SelectContent, { className: "text-sm", children: [jsx(SelectItem, { value: "admin", children: t('tabsUserstab.roleAdmin') }), jsx(SelectItem, { value: "student", children: t('tabsUserstab.roleUser') })] })] }) }), jsx("td", { className: "px-6 py-4", onClick: (e) => e.stopPropagation(), children: jsxs(Popover, { modal: true, open: openPolicyPopover === user.user_id, onOpenChange: (open) => setOpenPolicyPopover(open ? user.user_id : null), children: [jsx(PopoverTrigger, { asChild: true, children: jsxs(Button$1, { variant: "outline", role: "combobox", "aria-expanded": openPolicyPopover === user.user_id, "aria-label": t('tabsUserstab.selectPoliciesAriaLabel', {
181225
+ }), children: row.email }) }), user && (jsxs(Fragment$1, { children: [jsx("td", { className: "px-6 py-4", onClick: (e) => e.stopPropagation(), children: jsxs(Select$1, { value: (_a = pendingRoles[user.user_id]) !== null && _a !== void 0 ? _a : (user.is_admin ? 'admin' : 'student'), onValueChange: (nextRole) => handleUserRoleChange(user, nextRole), disabled: updatingUserIds.has(user === null || user === void 0 ? void 0 : user.user_id), children: [jsxs(SelectTrigger, { className: "w-full text-sm", "aria-label": t('tabsUserstab.selectRoleAriaLabel', {
181226
+ name: user.name,
181227
+ }), children: [jsx(SelectValue, {}), updatingUserIds.has(user === null || user === void 0 ? void 0 : user.user_id) && (jsx(LoaderCircle, { "data-testid": "role-update-spinner", className: "h-4 w-4 animate-spin", "aria-hidden": "true" }))] }), jsxs(SelectContent, { className: "text-sm", children: [jsx(SelectItem, { value: "admin", children: t('tabsUserstab.roleAdmin') }), jsx(SelectItem, { value: "student", children: t('tabsUserstab.roleUser') })] })] }) }), jsx("td", { className: "px-6 py-4", onClick: (e) => e.stopPropagation(), children: jsxs(Popover, { modal: true, open: openPolicyPopover === user.user_id, onOpenChange: (open) => setOpenPolicyPopover(open ? user.user_id : null), children: [jsx(PopoverTrigger, { asChild: true, children: jsxs(Button$1, { variant: "outline", role: "combobox", "aria-expanded": openPolicyPopover === user.user_id, "aria-label": t('tabsUserstab.selectPoliciesAriaLabel', {
181214
181228
  name: user.name,
181215
181229
  }), className: "w-full justify-between text-sm h-9 font-normal", disabled: updatingUserIds.has(user === null || user === void 0 ? void 0 : user.user_id), children: [jsx("span", { className: "truncate", children: user.is_admin
181216
181230
  ? t('tabsUserstab.allPoliciesSelected', {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iblai/iblai-js",
3
- "version": "2.5.7",
3
+ "version": "2.5.8",
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,9 +76,9 @@
76
76
  "axios": "1.13.6",
77
77
  "dotenv": "16.6.1",
78
78
  "winston": "3.19.0",
79
- "@iblai/mcp": "1.10.5",
80
79
  "@iblai/data-layer": "1.12.106",
81
- "@iblai/web-containers": "1.18.7",
80
+ "@iblai/mcp": "1.10.5",
81
+ "@iblai/web-containers": "1.18.8",
82
82
  "@iblai/web-utils": "2.1.17"
83
83
  },
84
84
  "peerDependencies": {