161 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			SCSS
		
	
	
	
	
	
			
		
		
	
	
			161 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			SCSS
		
	
	
	
	
	
| @use "sass:map";
 | ||
| @use "../settings" as *;
 | ||
| 
 | ||
| @if map.get($modules, "components/nav") {
 | ||
|   /**
 | ||
|    * 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
 | ||
|   // ––––––––––––––––––––
 | ||
| 
 | ||
|   #{$parent-selector} nav,
 | ||
|   #{$parent-selector} nav ul {
 | ||
|     display: flex;
 | ||
|   }
 | ||
| 
 | ||
|   #{$parent-selector} nav {
 | ||
|     justify-content: space-between;
 | ||
|     overflow: visible;
 | ||
| 
 | ||
|     ol,
 | ||
|     ul {
 | ||
|       align-items: center;
 | ||
|       margin-bottom: 0;
 | ||
|       padding: 0;
 | ||
|       list-style: none;
 | ||
| 
 | ||
|       &:first-of-type {
 | ||
|         margin-left: calc(var(#{$css-var-prefix}nav-element-spacing-horizontal) * -1);
 | ||
|       }
 | ||
|       &:last-of-type {
 | ||
|         margin-right: calc(var(#{$css-var-prefix}nav-element-spacing-horizontal) * -1);
 | ||
|       }
 | ||
|     }
 | ||
| 
 | ||
|     li {
 | ||
|       display: inline-block;
 | ||
|       margin: 0;
 | ||
|       padding: var(#{$css-var-prefix}nav-element-spacing-vertical)
 | ||
|         var(#{$css-var-prefix}nav-element-spacing-horizontal);
 | ||
| 
 | ||
|       :where(a, [role="link"]) {
 | ||
|         display: inline-block;
 | ||
|         margin: calc(var(#{$css-var-prefix}nav-link-spacing-vertical) * -1)
 | ||
|           calc(var(#{$css-var-prefix}nav-link-spacing-horizontal) * -1);
 | ||
|         padding: var(#{$css-var-prefix}nav-link-spacing-vertical)
 | ||
|           var(#{$css-var-prefix}nav-link-spacing-horizontal);
 | ||
|         border-radius: var(#{$css-var-prefix}border-radius);
 | ||
| 
 | ||
|         &:not(:hover) {
 | ||
|           text-decoration: none;
 | ||
|         }
 | ||
|       }
 | ||
| 
 | ||
|       // Minimal support for buttons and forms elements
 | ||
|       button,
 | ||
|       [role="button"],
 | ||
|       [type="button"],
 | ||
|       input:not([type="checkbox"], [type="radio"], [type="range"], [type="file"]),
 | ||
|       select {
 | ||
|         height: auto;
 | ||
|         margin-right: inherit;
 | ||
|         margin-bottom: 0;
 | ||
|         margin-left: inherit;
 | ||
|         padding: calc(
 | ||
|             var(#{$css-var-prefix}nav-link-spacing-vertical) -
 | ||
|               (var(#{$css-var-prefix}border-width) * 2)
 | ||
|           )
 | ||
|           var(#{$css-var-prefix}nav-link-spacing-horizontal);
 | ||
|       }
 | ||
|     }
 | ||
| 
 | ||
|     // Breadcrumb
 | ||
|     &[aria-label="breadcrumb"] {
 | ||
|       align-items: center;
 | ||
|       justify-content: start;
 | ||
| 
 | ||
|       & ul li {
 | ||
|         &:not(:first-child) {
 | ||
|           margin-inline-start: var(#{$css-var-prefix}nav-link-spacing-horizontal);
 | ||
|         }
 | ||
| 
 | ||
|         a {
 | ||
|           margin: calc(var(#{$css-var-prefix}nav-link-spacing-vertical) * -1) 0;
 | ||
|           margin-inline-start: calc(var(#{$css-var-prefix}nav-link-spacing-horizontal) * -1);
 | ||
|         }
 | ||
| 
 | ||
|         &:not(:last-child) {
 | ||
|           &::after {
 | ||
|             display: inline-block;
 | ||
|             position: absolute;
 | ||
|             width: calc(var(#{$css-var-prefix}nav-link-spacing-horizontal) * 4);
 | ||
|             margin: 0 calc(var(#{$css-var-prefix}nav-link-spacing-horizontal) * -1);
 | ||
|             content: var(#{$css-var-prefix}nav-breadcrumb-divider);
 | ||
|             color: var(#{$css-var-prefix}muted-color);
 | ||
|             text-align: center;
 | ||
|             text-decoration: none;
 | ||
|             white-space: nowrap;
 | ||
|           }
 | ||
|         }
 | ||
|       }
 | ||
| 
 | ||
|       // Minimal support for aria-current
 | ||
|       & a[aria-current]:not([aria-current="false"]) {
 | ||
|         background-color: transparent;
 | ||
|         color: inherit;
 | ||
|         text-decoration: none;
 | ||
|         pointer-events: none;
 | ||
|       }
 | ||
|     }
 | ||
|   }
 | ||
| 
 | ||
|   // Vertical Nav
 | ||
|   #{$parent-selector} aside {
 | ||
|     nav,
 | ||
|     ol,
 | ||
|     ul,
 | ||
|     li {
 | ||
|       display: block;
 | ||
|     }
 | ||
| 
 | ||
|     li {
 | ||
|       padding: calc(var(#{$css-var-prefix}nav-element-spacing-vertical) * 0.5)
 | ||
|         var(#{$css-var-prefix}nav-element-spacing-horizontal);
 | ||
| 
 | ||
|       a {
 | ||
|         display: block;
 | ||
|       }
 | ||
| 
 | ||
|       // Minimal support for links as buttons
 | ||
|       [role="button"] {
 | ||
|         margin: inherit;
 | ||
|       }
 | ||
|     }
 | ||
|   }
 | ||
| 
 | ||
|   // Breadcrumb RTL
 | ||
|   [dir="rtl"] {
 | ||
|     #{$parent-selector} nav {
 | ||
|       &[aria-label="breadcrumb"] {
 | ||
|         & ul li {
 | ||
|           &:not(:last-child) {
 | ||
|             ::after {
 | ||
|               content: "\\";
 | ||
|             }
 | ||
|           }
 | ||
|         }
 | ||
|       }
 | ||
|     }
 | ||
|   }
 | ||
| }
 | 
