36 lines
1.5 KiB
JavaScript
36 lines
1.5 KiB
JavaScript
'use client';
|
|
import { makeStyles, mergeClasses } from '@griffel/react';
|
|
import { navItemTokens, useContentStyles, useIndicatorStyles, useRootDefaultClassName, useSmallStyles } from '../sharedNavStyles.styles';
|
|
export const navSubItemClassNames = {
|
|
root: 'fui-NavSubItem'
|
|
};
|
|
/**
|
|
* Styles for the content slot (children)
|
|
*/ const useNavSubItemSpecificStyles = makeStyles({
|
|
base: {
|
|
paddingInlineStart: '46px'
|
|
},
|
|
smallBase: {
|
|
paddingInlineStart: '40px'
|
|
},
|
|
selectedIndicator: {
|
|
'::after': {
|
|
marginInlineStart: `-${navItemTokens.indicatorOffset + 36}px`
|
|
}
|
|
}
|
|
});
|
|
/**
|
|
* Apply styling to the NavSubItem slots based on the state
|
|
*/ export const useNavSubItemStyles_unstable = (state)=>{
|
|
'use no memo';
|
|
const rootDefaultClassName = useRootDefaultClassName();
|
|
const smallStyles = useSmallStyles();
|
|
const contentStyles = useContentStyles();
|
|
const indicatorStyles = useIndicatorStyles();
|
|
const navSubItemSpecificStyles = useNavSubItemSpecificStyles();
|
|
const { selected, density } = state;
|
|
const isSmallDensity = density === 'small';
|
|
state.root.className = mergeClasses(navSubItemClassNames.root, rootDefaultClassName, isSmallDensity && smallStyles.root, isSmallDensity && navSubItemSpecificStyles.smallBase, navSubItemSpecificStyles.base, selected && indicatorStyles.base, selected && contentStyles.selected, selected && navSubItemSpecificStyles.selectedIndicator, state.root.className);
|
|
return state;
|
|
};
|