141 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			SCSS
		
	
	
	
	
	
			
		
		
	
	
			141 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			SCSS
		
	
	
	
	
	
| /**
 | ||
|  * Nav
 | ||
|  */
 | ||
| 
 | ||
| // Reboot based on :
 | ||
| // - sanitize.css v13.0.0 | CC0 1.0 Universal | github.com/csstools/sanitize.css
 | ||
| 
 | ||
| // Prevent VoiceOver from ignoring list semantics in Safari (opinionated)
 | ||
| :where(nav li)::before {
 | ||
|   float: left;
 | ||
|   content: "\200B";
 | ||
| }
 | ||
| 
 | ||
| // Pico
 | ||
| // ––––––––––––––––––––
 | ||
| 
 | ||
| // Horizontal Nav
 | ||
| nav,
 | ||
| nav ul {
 | ||
|   display: flex;
 | ||
| }
 | ||
| 
 | ||
| nav {
 | ||
|   justify-content: space-between;
 | ||
| 
 | ||
|   ol,
 | ||
|   ul {
 | ||
|     align-items: center;
 | ||
|     margin-bottom: 0;
 | ||
|     padding: 0;
 | ||
|     list-style: none;
 | ||
| 
 | ||
|     &:first-of-type {
 | ||
|       margin-left: calc(var(--nav-element-spacing-horizontal) * -1);
 | ||
|     }
 | ||
|     &:last-of-type {
 | ||
|       margin-right: calc(var(--nav-element-spacing-horizontal) * -1);
 | ||
|     }
 | ||
|   }
 | ||
| 
 | ||
|   li {
 | ||
|     display: inline-block;
 | ||
|     margin: 0;
 | ||
|     padding: var(--nav-element-spacing-vertical)
 | ||
|       var(--nav-element-spacing-horizontal);
 | ||
| 
 | ||
|     // Minimal support for buttons and forms elements
 | ||
|     > * {
 | ||
|       --spacing: 0;
 | ||
|     }
 | ||
|   }
 | ||
| 
 | ||
|   :where(a, [role="link"]) {
 | ||
|     display: inline-block;
 | ||
|     margin: calc(var(--nav-link-spacing-vertical) * -1)
 | ||
|       calc(var(--nav-link-spacing-horizontal) * -1);
 | ||
|     padding: var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal);
 | ||
|     border-radius: var(--border-radius);
 | ||
|     text-decoration: none;
 | ||
| 
 | ||
|     &:is([aria-current], :hover, :active, :focus) {
 | ||
|       text-decoration: none;
 | ||
|     }
 | ||
|   }
 | ||
| 
 | ||
|   // Breadcrumb
 | ||
|   &[aria-label="breadcrumb"] {
 | ||
|     align-items: center;
 | ||
|     justify-content: start;
 | ||
| 
 | ||
|     & ul li {
 | ||
|       &:not(:first-child) {
 | ||
|         margin-inline-start: var(--nav-link-spacing-horizontal);
 | ||
|       }
 | ||
| 
 | ||
|       &:not(:last-child) {
 | ||
|         ::after {
 | ||
|           position: absolute;
 | ||
|           width: calc(var(--nav-link-spacing-horizontal) * 2);
 | ||
|           margin-inline-start: calc(var(--nav-link-spacing-horizontal) / 2);
 | ||
|           content: "/";
 | ||
|           color: var(--muted-color);
 | ||
|           text-align: center;
 | ||
|         }
 | ||
|       }
 | ||
|     }
 | ||
| 
 | ||
|     & a[aria-current] {
 | ||
|       background-color: transparent;
 | ||
|       color: inherit;
 | ||
|       text-decoration: none;
 | ||
|       pointer-events: none;
 | ||
|     }
 | ||
|   }
 | ||
| 
 | ||
|   // Minimal support for role="button"
 | ||
|   [role="button"] {
 | ||
|     margin-right: inherit;
 | ||
|     margin-left: inherit;
 | ||
|     padding: var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal);
 | ||
|   }
 | ||
| }
 | ||
| 
 | ||
| // Vertical Nav
 | ||
| aside {
 | ||
|   nav,
 | ||
|   ol,
 | ||
|   ul,
 | ||
|   li {
 | ||
|     display: block;
 | ||
|   }
 | ||
| 
 | ||
|   li {
 | ||
|     padding: calc(var(--nav-element-spacing-vertical) * 0.5)
 | ||
|       var(--nav-element-spacing-horizontal);
 | ||
| 
 | ||
|     a {
 | ||
|       display: block;
 | ||
|     }
 | ||
| 
 | ||
|     // Minimal support for links as buttons
 | ||
|     [role="button"] {
 | ||
|       margin: inherit;
 | ||
|     }
 | ||
|   }
 | ||
| }
 | ||
| 
 | ||
| // Breadcrumb RTL
 | ||
| [dir="rtl"] {
 | ||
|   nav {
 | ||
|     &[aria-label="breadcrumb"] {
 | ||
|       & ul li {
 | ||
|         &:not(:last-child) {
 | ||
|           ::after {
 | ||
|             content: "\\";
 | ||
|           }
 | ||
|         }
 | ||
|       }
 | ||
|     }
 | ||
|   }
 | ||
| }
 |