From db0b071c8f57d984ac7c01b4f469957ea188deb4 Mon Sep 17 00:00:00 2001 From: Marco Beretta <81851188+berry-13@users.noreply.github.com> Date: Wed, 6 Aug 2025 00:34:06 +0200 Subject: [PATCH] feat: Improve PublicSharingToggle component with enhanced styling and accessibility features --- .../Sharing/GenericGrantAccessDialog.tsx | 1 - .../Sharing/PublicSharingToggle.tsx | 123 +++++++++++++----- 2 files changed, 89 insertions(+), 35 deletions(-) diff --git a/client/src/components/Sharing/GenericGrantAccessDialog.tsx b/client/src/components/Sharing/GenericGrantAccessDialog.tsx index cea0b3fe4a..3a1c7165af 100644 --- a/client/src/components/Sharing/GenericGrantAccessDialog.tsx +++ b/client/src/components/Sharing/GenericGrantAccessDialog.tsx @@ -196,7 +196,6 @@ export default function GenericGrantAccessDialog({ }); setHasChanges(false); - setIsModalOpen(false); } catch (error) { console.error('Error updating permissions:', error); showToast({ diff --git a/client/src/components/Sharing/PublicSharingToggle.tsx b/client/src/components/Sharing/PublicSharingToggle.tsx index eba2002b2d..5ede10f860 100644 --- a/client/src/components/Sharing/PublicSharingToggle.tsx +++ b/client/src/components/Sharing/PublicSharingToggle.tsx @@ -5,6 +5,16 @@ import { Switch, InfoHoverCard, ESide, Label } from '@librechat/client'; import type { AccessRoleIds } from 'librechat-data-provider'; import AccessRolesPicker from './AccessRolesPicker'; import { useLocalize } from '~/hooks'; +import { cn } from '~/utils'; + +interface PublicSharingToggleProps { + isPublic: boolean; + publicRole: AccessRoleIds; + onPublicToggle: (isPublic: boolean) => void; + onPublicRoleChange: (role: AccessRoleIds) => void; + resourceType?: ResourceType; + className?: string; +} export default function PublicSharingToggle({ isPublic, @@ -12,53 +22,98 @@ export default function PublicSharingToggle({ onPublicToggle, onPublicRoleChange, resourceType = ResourceType.AGENT, -}: { - isPublic: boolean; - publicRole: AccessRoleIds; - onPublicToggle: (isPublic: boolean) => void; - onPublicRoleChange: (role: AccessRoleIds) => void; - resourceType?: ResourceType; -}) { + className, +}: PublicSharingToggleProps) { const localize = useLocalize(); + const handleToggle = React.useCallback( + (checked: boolean) => { + onPublicToggle(checked); + }, + [onPublicToggle], + ); + return ( -