diff --git a/frontend/src/components/Navigation/Navbar/Navbar.tsx b/frontend/src/components/Navigation/Navbar/Navbar.tsx index d32d0777..e399b24f 100644 --- a/frontend/src/components/Navigation/Navbar/Navbar.tsx +++ b/frontend/src/components/Navigation/Navbar/Navbar.tsx @@ -81,7 +81,13 @@ export function Navbar() {
- Welcome {userName} + Welcome{' '} + + {userName?.split(' ')[0] ?? ''} + = ({ const isEditing = useSelector( (state: RootState) => state.onboarding.isEditing, ); + const [longWordError, setLongWordError] = useState(false); useEffect(() => { if ( @@ -56,6 +57,13 @@ export const AvatarSelectionStep: React.FC = ({ }; const handleNameChange = (value: string) => { + const words = value.split(' '); + const hasLongWord = words.some((word) => word.length > 30); + if (hasLongWord) { + setLongWordError(true); + return; + } + setLongWordError(false); setLocalName(value); }; @@ -115,6 +123,11 @@ export const AvatarSelectionStep: React.FC = ({ onChange={(e) => handleNameChange(e.target.value)} className="h-8 text-sm placeholder:text-sm" /> + {longWordError && ( +

+ A single word in your name cannot exceed 30 characters. +

+ )}
{/* Avatar Grid */} @@ -152,7 +165,7 @@ export const AvatarSelectionStep: React.FC = ({ diff --git a/frontend/src/pages/SettingsPage/components/AccountSettingsCard.tsx b/frontend/src/pages/SettingsPage/components/AccountSettingsCard.tsx index 65070f8a..0a2ffcfe 100644 --- a/frontend/src/pages/SettingsPage/components/AccountSettingsCard.tsx +++ b/frontend/src/pages/SettingsPage/components/AccountSettingsCard.tsx @@ -19,6 +19,7 @@ const AccountSettingsCard: React.FC = () => { return avatars.includes(stored) ? stored : ''; }); const [nameError, setNameError] = useState(false); + const [longWordError, setLongWordError] = useState(false); // The redundant useEffect has been removed. @@ -27,10 +28,15 @@ const AccountSettingsCard: React.FC = () => { }; const handleNameChange = (value: string) => { - setLocalName(value); - if (nameError) { - setNameError(false); + const words = value.split(' '); + const hasLongWord = words.some((word) => word.length > 30); + if (hasLongWord) { + setLongWordError(true); + return; } + setLongWordError(false); + setLocalName(value); + if (nameError) setNameError(false); }; const handleSave = () => { @@ -78,6 +84,11 @@ const AccountSettingsCard: React.FC = () => { : '' }`} /> + {longWordError && ( +

+ A single word in your name cannot exceed 30 characters. +

+ )} {/* Avatar Section */} @@ -115,7 +126,7 @@ const AccountSettingsCard: React.FC = () => {