Initial commit
This commit is contained in:
35
frontend/src/hooks/useDocumentTitle.ts
Normal file
35
frontend/src/hooks/useDocumentTitle.ts
Normal file
@@ -0,0 +1,35 @@
|
||||
import { useEffect } from 'react';
|
||||
import siteConfig from '../config/site.config';
|
||||
|
||||
/**
|
||||
* Hook to set the document title
|
||||
* @param title - Page-specific title (will be appended to site name)
|
||||
* @param useFullTitle - If true, use title as-is without appending site name
|
||||
*/
|
||||
export function useDocumentTitle(title?: string, useFullTitle = false): void {
|
||||
useEffect(() => {
|
||||
if (useFullTitle && title) {
|
||||
document.title = title;
|
||||
} else if (title) {
|
||||
document.title = `${title} | ${siteConfig.name}`;
|
||||
} else {
|
||||
document.title = siteConfig.meta.title;
|
||||
}
|
||||
|
||||
// Cleanup: restore default title on unmount
|
||||
return () => {
|
||||
document.title = siteConfig.meta.title;
|
||||
};
|
||||
}, [title, useFullTitle]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the document title imperatively (for use outside React components)
|
||||
*/
|
||||
export function setDocumentTitle(title?: string): void {
|
||||
if (title) {
|
||||
document.title = `${title} | ${siteConfig.name}`;
|
||||
} else {
|
||||
document.title = siteConfig.meta.title;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user