Files
michaelschiemer/resources/css/admin/06-components/_breadcrumbs.css
2025-11-24 21:28:25 +01:00

176 lines
3.9 KiB
CSS

/**
* Breadcrumbs Component - Admin Interface
*
* Navigation breadcrumb trail showing current page hierarchy.
* Responsive with overflow handling for long paths.
*/
@layer components {
/**
* Breadcrumbs Container
*/
.admin-breadcrumbs {
display: flex;
align-items: center;
gap: var(--spacing-xs);
padding: var(--spacing-sm) 0;
overflow-x: auto;
scrollbar-width: thin;
/* Hide scrollbar but keep functionality */
&::-webkit-scrollbar {
height: 0;
}
/* Mobile: Show in header instead of title */
@media (max-width: 767px) {
flex: 1;
min-width: 0;
}
}
/**
* Breadcrumb List
*/
.admin-breadcrumbs__list {
display: flex;
align-items: center;
gap: var(--spacing-xs);
list-style: none;
margin: 0;
padding: 0;
flex-wrap: nowrap;
}
/**
* Breadcrumb Item
*/
.admin-breadcrumbs__item {
display: flex;
align-items: center;
gap: var(--spacing-xs);
white-space: nowrap;
flex-shrink: 0;
/* Last item can shrink */
&:last-child {
flex-shrink: 1;
min-width: 0;
}
}
/**
* Breadcrumb Link
*/
.admin-breadcrumbs__link {
display: inline-flex;
align-items: center;
gap: var(--spacing-xs);
color: var(--link-color);
text-decoration: none;
font-size: var(--font-size-sm);
font-weight: 500;
transition: color var(--transition-base);
&:hover {
color: var(--link-hover);
text-decoration: underline;
}
&:focus-visible {
outline: 2px solid var(--focus-ring);
outline-offset: 2px;
border-radius: 2px;
}
}
/**
* Current Page (not a link)
*/
.admin-breadcrumbs__current {
color: var(--content-text);
font-size: var(--font-size-sm);
font-weight: 600;
overflow: hidden;
text-overflow: ellipsis;
}
/**
* Home Icon
*/
.admin-breadcrumbs__home-icon {
width: 16px;
height: 16px;
flex-shrink: 0;
}
/**
* Separator
*/
.admin-breadcrumbs__separator {
display: inline-flex;
align-items: center;
color: var(--content-text);
opacity: 0.4;
font-size: var(--font-size-sm);
user-select: none;
flex-shrink: 0;
}
.admin-breadcrumbs__separator-icon {
width: 16px;
height: 16px;
}
/**
* Overflow Indicator (for collapsed middle items)
*/
.admin-breadcrumbs__overflow {
display: inline-flex;
align-items: center;
justify-content: center;
width: 32px;
height: 32px;
color: var(--content-text);
background-color: var(--bg-secondary);
border-radius: var(--radius-sm);
cursor: pointer;
transition: background-color var(--transition-base);
&:hover {
background-color: var(--bg-tertiary);
}
&:focus-visible {
outline: 2px solid var(--focus-ring);
outline-offset: 2px;
}
}
/**
* Responsive: Compact Mode
*
* On very small screens, only show: Home > ... > Current
*/
@media (max-width: 480px) {
.admin-breadcrumbs__item:not(:first-child):not(:last-child):not(.admin-breadcrumbs__overflow) {
display: none;
}
}
/**
* Accessibility: Screen Reader Only Text
*/
.admin-breadcrumbs__sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border: 0;
}
}