| Server IP : 47.82.179.145 / Your IP : 216.73.217.129 Web Server : nginx/1.26.3 System : Linux iZt4n9czhka2zvqfajdlr2Z 6.8.0-63-generic #66-Ubuntu SMP PREEMPT_DYNAMIC Fri Jun 13 20:25:30 UTC 2025 x86_64 User : www ( 1001) PHP Version : 8.3.30 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /www/wwwroot/scuipturepactory.com/wp-content/themes/blossom-fashion/src/components/Tab/ |
Upload File : |
import { useRef, useState, useEffect } from 'react';
import { useNavigate } from 'react-router-dom';
function useTabs(initialTabs, initialActiveTab = 0, onChange) {
const tabsRef = useRef(initialTabs);
const [activeTab, setActiveTab] = useState(initialActiveTab);
const navigate = useNavigate();
const handleTabClick = (index) => {
if (index !== activeTab) {
setActiveTab(index);
const newHash = tabsRef.current[index].title.toLowerCase().replace(/ /g, "-");
if (onChange) {
onChange(tabsRef.current[index].title);
}
navigate(`/wp-admin/themes.php?page=blossom-fashion-dashboard#${newHash}`);
}
};
const checkHash = () => {
const hash = window.location.hash.substring(1);
const tabIndex = tabsRef.current.findIndex(
(tab) => tab.title.toLowerCase().replace(/ /g, "-") === hash
);
if (tabIndex !== -1 && tabIndex !== activeTab) {
setActiveTab(tabIndex);
if (onChange) {
onChange(tabsRef.current[tabIndex].title);
}
}
};
useEffect(() => {
checkHash();
window.addEventListener('hashchange', checkHash);
return () => {
window.removeEventListener('hashchange', checkHash);
};
}, []);
const renderTabs = () => {
return tabsRef.current.map((tab, index) => (
<button
key={index}
onClick={() => handleTabClick(index)}
className={activeTab === index ? 'active-tab' : ''}
>
{tab.icon}
{tab.title}
</button>
));
};
const renderContent = () => {
return tabsRef.current[activeTab].content;
};
return { renderTabs, renderContent };
}
export default useTabs;