add glowing effect component for tab tiles improve tab tile appearance with new glow effect add 'none' log level and simplify log level handling simplify tab configuration store by removing developer tabs remove useDebugStatus hook and related debug functionality remove system info endpoints no longer needed
55 lines
1.7 KiB
TypeScript
55 lines
1.7 KiB
TypeScript
import type { TabVisibilityConfig } from '~/components/@settings/core/types';
|
|
import { DEFAULT_TAB_CONFIG } from '~/components/@settings/core/constants';
|
|
|
|
export const getVisibleTabs = (
|
|
tabConfiguration: { userTabs: TabVisibilityConfig[] },
|
|
notificationsEnabled: boolean,
|
|
): TabVisibilityConfig[] => {
|
|
if (!tabConfiguration?.userTabs || !Array.isArray(tabConfiguration.userTabs)) {
|
|
console.warn('Invalid tab configuration, using defaults');
|
|
return DEFAULT_TAB_CONFIG as TabVisibilityConfig[];
|
|
}
|
|
|
|
// In user mode, only show visible user tabs
|
|
return tabConfiguration.userTabs
|
|
.filter((tab) => {
|
|
if (!tab || typeof tab.id !== 'string') {
|
|
console.warn('Invalid tab entry:', tab);
|
|
return false;
|
|
}
|
|
|
|
// Hide notifications tab if notifications are disabled
|
|
if (tab.id === 'notifications' && !notificationsEnabled) {
|
|
return false;
|
|
}
|
|
|
|
// Only show tabs that are explicitly visible and assigned to the user window
|
|
return tab.visible && tab.window === 'user';
|
|
})
|
|
.sort((a, b) => a.order - b.order);
|
|
};
|
|
|
|
export const reorderTabs = (
|
|
tabs: TabVisibilityConfig[],
|
|
startIndex: number,
|
|
endIndex: number,
|
|
): TabVisibilityConfig[] => {
|
|
const result = Array.from(tabs);
|
|
const [removed] = result.splice(startIndex, 1);
|
|
result.splice(endIndex, 0, removed);
|
|
|
|
// Update order property
|
|
return result.map((tab, index) => ({
|
|
...tab,
|
|
order: index,
|
|
}));
|
|
};
|
|
|
|
export const resetToDefaultConfig = (isDeveloperMode: boolean): TabVisibilityConfig[] => {
|
|
return DEFAULT_TAB_CONFIG.map((tab) => ({
|
|
...tab,
|
|
visible: isDeveloperMode ? true : tab.window === 'user',
|
|
window: isDeveloperMode ? 'developer' : tab.window,
|
|
})) as TabVisibilityConfig[];
|
|
};
|