Unverified Commit 7568f985 authored by Abhishek Arya's avatar Abhishek Arya Committed by GitHub
Browse files

Merge pull request #251 from devmoran/main

slsa.dev overhaul
parents f8915ec5 3de05711
......@@ -2,7 +2,7 @@
<img align="right" src="https://github.com/slsa-framework/slsa/blob/main/docs/images/slsa-dancing-goose-logo.svg">
SLSA (pronounced ["salsa"](https://www.google.com/search?q=how+to+pronounce+salsa)) is security framework from source to service, giving anyone working with software a common language for increasing levels of software security and supply chain integrity.
SLSA (pronounced ["salsa"](https://www.google.com/search?q=how+to+pronounce+salsa)) is a security framework from source to service, giving anyone working with software a common language for increasing levels of software security and supply chain integrity. It’s how you get from safe enough to being as resilient as possible, at any link in the chain.
**The best way to read about SLSA is to visit [slsa.dev].**
......@@ -10,19 +10,15 @@ SLSA (pronounced ["salsa"](https://www.google.com/search?q=how+to+pronounce+sals
## What's in this repo?
The primary content of this repo is the [docs/](docs/) directory, which contains the core SLSA
specification and sources to the [slsa.dev] website.
The primary content of this repo is the [docs/](docs/) directory, which contains the core SLSA specification and sources to the [slsa.dev] website.
You can read SLSA's documentation here:
- [Levels](docs/levels.md) (Defining the framework)
- [Requirements](docs/requirements.md) (How to attain compliance)
- [Use cases](docs/use-cases/index.md)
- Our [roadmap](docs/roadmap.md)
You can read [SLSA's documentation here](docs/_spec/). The key documents are `levels` - which defines the framework - and `requirements`, which explains how to attain compliance.
## Project status
SLSA is currently in alpha. The framework is constantly being improved. We encourage the community to try adopting SLSA levels incrementally and to share your experiences back to us.
The initial v0.1 specification is out and is now ready to be tried out and tested. We encourage the community to try adopting SLSA levels incrementally and to share your experiences back to us. We’ve released a set of tools and services to generate SLSA 1-2 provenance, which we’re looking to develop further soon.
Google has been using an internal version of SLSA since 2013 and requires it for all of their production workloads.
## Steering committee
......
File added
---
permalink: /404.html
title: '404'
layout: 404
---
## We can't find the page you're looking for
Looks like something went wrong. Go back or use the menu. That one up the top there look ^^^^
source "https://rubygems.org"
gem 'jekyll', '4.2.1'
gem 'jekyll-seo-tag'
gem 'hash-joiner'
gem 'json'
gem 'jekyll-commonmark-ghpages'
gem 'jekyll-sitemap'
gem 'jekyll-coffeescript'
gem 'jekyll-default-layout'
gem 'jekyll-gist'
gem 'jekyll-github-metadata'
gem 'jekyll-optional-front-matter'
gem 'jekyll-paginate'
gem 'jekyll-readme-index'
gem 'jekyll-titles-from-headings'
gem 'jekyll-relative-links'
gem 'jekyll-toc'
gem 'minima'
\ No newline at end of file
GEM
remote: https://rubygems.org/
specs:
addressable (2.8.0)
public_suffix (>= 2.0.2, < 5.0)
coffee-script (2.4.1)
coffee-script-source
execjs
coffee-script-source (1.12.2)
colorator (1.1.0)
commonmarker (0.17.13)
ruby-enum (~> 0.5)
concurrent-ruby (1.1.9)
em-websocket (0.5.3)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0)
eventmachine (1.2.7)
execjs (2.8.1)
faraday (1.8.0)
faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0)
faraday-excon (~> 1.1)
faraday-httpclient (~> 1.0.1)
faraday-net_http (~> 1.0)
faraday-net_http_persistent (~> 1.1)
faraday-patron (~> 1.0)
faraday-rack (~> 1.0)
multipart-post (>= 1.2, < 3)
ruby2_keywords (>= 0.0.4)
faraday-em_http (1.0.0)
faraday-em_synchrony (1.0.0)
faraday-excon (1.1.0)
faraday-httpclient (1.0.1)
faraday-net_http (1.0.1)
faraday-net_http_persistent (1.2.0)
faraday-patron (1.0.0)
faraday-rack (1.0.0)
ffi (1.15.4)
forwardable-extended (2.6.0)
hash-joiner (0.0.7)
safe_yaml
http_parser.rb (0.8.0)
i18n (1.8.11)
concurrent-ruby (~> 1.0)
jekyll (4.2.1)
addressable (~> 2.4)
colorator (~> 1.0)
em-websocket (~> 0.5)
i18n (~> 1.0)
jekyll-sass-converter (~> 2.0)
jekyll-watch (~> 2.0)
kramdown (~> 2.3)
kramdown-parser-gfm (~> 1.0)
liquid (~> 4.0)
mercenary (~> 0.4.0)
pathutil (~> 0.9)
rouge (~> 3.0)
safe_yaml (~> 1.0)
terminal-table (~> 2.0)
jekyll-coffeescript (2.0.0)
coffee-script (~> 2.2)
coffee-script-source (~> 1.12)
jekyll-commonmark (1.3.1)
commonmarker (~> 0.14)
jekyll (>= 3.7, < 5.0)
jekyll-commonmark-ghpages (0.1.6)
commonmarker (~> 0.17.6)
jekyll-commonmark (~> 1.2)
rouge (>= 2.0, < 4.0)
jekyll-default-layout (0.1.5)
jekyll (>= 3.0, < 5.0)
jekyll-feed (0.15.1)
jekyll (>= 3.7, < 5.0)
jekyll-gist (1.5.0)
octokit (~> 4.2)
jekyll-github-metadata (2.13.0)
jekyll (>= 3.4, < 5.0)
octokit (~> 4.0, != 4.4.0)
jekyll-optional-front-matter (0.3.2)
jekyll (>= 3.0, < 5.0)
jekyll-paginate (1.1.0)
jekyll-readme-index (0.3.0)
jekyll (>= 3.0, < 5.0)
jekyll-relative-links (0.6.1)
jekyll (>= 3.3, < 5.0)
jekyll-sass-converter (2.1.0)
sassc (> 2.0.1, < 3.0)
jekyll-seo-tag (2.7.1)
jekyll (>= 3.8, < 5.0)
jekyll-sitemap (1.4.0)
jekyll (>= 3.7, < 5.0)
jekyll-titles-from-headings (0.5.3)
jekyll (>= 3.3, < 5.0)
jekyll-toc (0.17.1)
jekyll (>= 3.9)
nokogiri (~> 1.11)
jekyll-watch (2.2.1)
listen (~> 3.0)
json (2.6.1)
kramdown (2.3.1)
rexml
kramdown-parser-gfm (1.1.0)
kramdown (~> 2.0)
liquid (4.0.3)
listen (3.7.0)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
mercenary (0.4.0)
minima (2.5.1)
jekyll (>= 3.5, < 5.0)
jekyll-feed (~> 0.9)
jekyll-seo-tag (~> 2.1)
multipart-post (2.1.1)
nokogiri (1.12.5-x86_64-darwin)
racc (~> 1.4)
octokit (4.21.0)
faraday (>= 0.9)
sawyer (~> 0.8.0, >= 0.5.3)
pathutil (0.16.2)
forwardable-extended (~> 2.6)
public_suffix (4.0.6)
racc (1.6.0)
rb-fsevent (0.11.0)
rb-inotify (0.10.1)
ffi (~> 1.0)
rexml (3.2.5)
rouge (3.26.1)
ruby-enum (0.9.0)
i18n
ruby2_keywords (0.0.5)
safe_yaml (1.0.5)
sassc (2.4.0)
ffi (~> 1.9)
sawyer (0.8.2)
addressable (>= 2.3.5)
faraday (> 0.8, < 2.0)
terminal-table (2.0.0)
unicode-display_width (~> 1.1, >= 1.1.1)
unicode-display_width (1.8.0)
PLATFORMS
x86_64-darwin-18
x86_64-darwin-19
DEPENDENCIES
hash-joiner
jekyll (= 4.2.1)
jekyll-coffeescript
jekyll-commonmark-ghpages
jekyll-default-layout
jekyll-gist
jekyll-github-metadata
jekyll-optional-front-matter
jekyll-paginate
jekyll-readme-index
jekyll-relative-links
jekyll-seo-tag
jekyll-sitemap
jekyll-titles-from-headings
jekyll-toc
json
minima
BUNDLED WITH
2.2.31
# slsa.dev sources
This directory contains sources for https://slsa.dev, served via GitHub pages
This directory contains sources for [https://slsa.dev](https://slsa.dev), served via GitHub pages
and rendered with Jekyll.
## Testing locally
## Developing and testing locally
Use [github/pages-gem](https://github.com/github/pages-gem) to spawn a local web
server. We recommend the "Docker" method as follows:
1. [Install Jekyll](https://jekyllrb.com/docs/installation/#guides). This link provides an installation guide for your chosen platform.
2. Clone this repo and change directory to `/docs`.
3. `bundle install` (to install Jekyll's dependencies).
4. Run the project locally with `jekyll serve` (if you'd like live reload use `jekyll serve --livereload`).
5. Browse to [http://localhost:4000](http://localhost:4000) to view the site locally.
1. Install Docker.
## Deployment
2. Clone and build the Docker image.
```bash
git clone https://github.com/github/pages-gem
cd pages-gem
make image
```
3. Run the server from the pages-gem directory, where `PATH_TO_SLSA_REPO` is
the path to this repo.
```bash
SITE=PATH_TO_SLSA_REPO/docs make server
```
4. Browse to http://localhost:4000.
Pushing to `main` will trigger a deployment of Github Pages.
......@@ -4,12 +4,16 @@ copyright_html: Copyright 2021 The Linux Foundation<br>under the terms of the <a
repository: slsa-framework/slsa
header_pages:
- index.md
- levels.md
- requirements.md
- use-cases/index.md
- provenance/v0.2.md
- roadmap.md
- getinvolved.md
- specifications.md
- provenance/v0.2.md # WARNING: This is brittle and will not update as per {{ site.current_provenance_version }}
- use-cases.md
- get-started.md
- community.md
collections:
spec:
layout: specifications
sort_by: order
output: true
exclude:
- README.md
google_analytics: G-VNK063J3QF
......@@ -35,3 +39,18 @@ plugins:
- jekyll-readme-index
- jekyll-titles-from-headings
- jekyll-relative-links
spec_versions: ['v0.1']
current_spec_version: "v0.1"
provenance_versions: ['v0.1', "v0.2"]
current_provenance_version: "v0.2"
relative_links:
collections: true
defaults:
- scope:
path: "assets/images"
values:
image: true
- scope:
path: "_spec"
values:
folder: true
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible"
content="IE=edge">
<meta name="viewport"
content="width=device-width, initial-scale=1">
<title>SLSA • {% if page.title %}{{page.title}}{% endif %}</title>
{%- seo title=false-%}
<meta name="twitter:title"
content="A common language for different levels of software security. SLSA (salsa) is Supply-chain Levels for Software Artifacts.">
<link rel="preconnect"
href="https://fonts.googleapis.com">
<link rel="preconnect"
href="https://fonts.gstatic.com"
crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700;800"
rel="stylesheet">
{%- feed_meta -%}
{%- if jekyll.environment == 'production' and site.google_analytics -%}
{%- include google-analytics.html -%}
{%- endif -%}
</head>
\ No newline at end of file
<footer class="site-footer h-card">
<data class="u-url" href="{{ "/" | relative_url }}"></data>
<div class="wrapper">
<div>
<p>SLSA ("<a href="https://www.google.com/search?q=how+to+pronounce+salsa">salsa</a>") is <strong>Supply-chain Levels
for Software Artifacts</strong>.</p>
<footer class="site-footer h-card text-white">
<div class="wrapper py-4 flex flex-wrap items-start justify-between w-full">
<div class="w-full md:w-1/3 mb-8 md:mb-0">
<p><strong>SLSA is a cross-industry collaboration.</strong><br>
© 2021 The Linux Foundation, under the terms of the Apache License 2.0</p>
</div>
<div>
{{- site.copyright_html -}}
</div>
<div>
{%- include social.html -%}
</div>
<div>
<a href="{{site.github.repository_url}}/blob/{{site.github.source.branch}}{{site.github.source.path}}/{{page.path}}">View source on GitHub</a>
<div class="w-full md:w-1/3 mb-8 md:mb-0">
<p><strong>Privacy statement</strong><br>
We use Google Analytics in <a href="https://support.google.com/analytics/answer/9976101?hl=en">Denied Consent mode</a> to help us improve our website by collecting and reporting information on how it's used.
We do not store advertising or tracking cookies. The information we collect does not identify anyone and does not track an individual's use of the site.</p>
</div>
<nav class="w-full md:w-1/4 mb-8 md:mb-0">
<ul class="flex md:justify-end">
<li>
<a href="{{site.github.repository_url}}/blob/{{site.github.source.branch}}{{site.github.source.path}}/{{page.path}} " target="_blank" class="flex h5 font-normal">View source on GitHub <span class="ml-4"><svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.2344 0.150879C5.28641 0.150879 0.468811 4.96848 0.468811 10.9165C0.468811 15.6803 3.55046 19.7039 7.82978 21.1303C8.36806 21.2245 8.56991 20.9016 8.56991 20.619C8.56991 20.3633 8.55646 19.5155 8.55646 18.6139C5.8516 19.1118 5.15184 17.9545 4.93653 17.3489C4.81541 17.0394 4.29059 16.084 3.83306 15.8283C3.45626 15.6264 2.91798 15.1285 3.8196 15.1151C4.66739 15.1016 5.27295 15.8956 5.47481 16.2185C6.44371 17.8468 7.99126 17.3893 8.61028 17.1067C8.70448 16.4069 8.98708 15.9359 9.29659 15.6668C6.90125 15.3977 4.39825 14.4691 4.39825 10.3513C4.39825 9.18051 4.81541 8.21161 5.50172 7.45802C5.39407 7.18888 5.01727 6.08541 5.60938 4.60514C5.60938 4.60514 6.51099 4.32254 8.56991 5.70861C9.43116 5.46639 10.3462 5.34527 11.2613 5.34527C12.1764 5.34527 13.0914 5.46639 13.9527 5.70861C16.0116 4.30909 16.9132 4.60514 16.9132 4.60514C17.5053 6.08541 17.1285 7.18888 17.0209 7.45802C17.7072 8.21161 18.1244 9.16706 18.1244 10.3513C18.1244 14.4826 15.6079 15.3977 13.2126 15.6668C13.6028 16.0032 13.9392 16.6492 13.9392 17.6584C13.9392 19.0983 13.9258 20.2556 13.9258 20.619C13.9258 20.9016 14.1276 21.238 14.6659 21.1303C16.8031 20.4088 18.6602 19.0353 19.9758 17.2031C21.2915 15.3708 21.9994 13.1721 22 10.9165C22 4.96848 17.1824 0.150879 11.2344 0.150879Z" fill="white"/>
</svg>
</span></a>
</li>
</ul>
</nav>
</div>
<div class="wrapper py-4 flex items-start justify-between w-full mb-16 md:mb-0">
<a rel="author" href="{{ "/" | relative_url }}"><img src="{{ site.baseurl }}/images/logo.svg" alt="{{site.title}} logo" /></a>
</div>
</footer>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
{%- seo title=false -%}
<link href="https://cdnjs.cloudflare.com/ajax/libs/tailwindcss/2.2.19/tailwind.min.css" rel="stylesheet" />
<link rel="stylesheet" href="{{ "/assets/main.css" | relative_url }}">
<link rel="apple-touch-icon" sizes="180x180" href="{{ "images/icons/apple-touch-icon.png" | relative_url }}">
<link rel="icon" type="image/png" sizes="32x32" href="{{ "images/icons/favicon-32x32.png" | relative_url }}">
<link rel="icon" type="image/png" sizes="16x16" href="{{ "images/icons/favicon-16x16.png" | relative_url }}">
<link rel="icon" type="image/png" sizes="16x16" href="{{ "images/icons/favicon-16x16.png" | relative_url }}">
<link rel="icon" type="image/x-icon" href="{{ "images/icons/favicon.ico" | relative_url }}">
<link rel="mask-icon" href="{{ "images/icons/safari-pinned-tab.svg" | relative_url }}" color="#5bbad5">
<meta name="msapplication-TileColor" content="#da532c" />
<meta name="msapplication-square150x150logo" content="images/icons/mstile-150x150.png" />
<meta name="theme-color" content="#ffffff" />
<title>SLSA • {% if page.title %}{{page.title}}{% endif %}</title>
<meta name="twitter:title" content="A common language for different levels of software security. SLSA (salsa) is Supply-chain Levels for Software Artifacts." />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700;800&display=swap" rel="stylesheet" />
<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400&display=swap" rel="stylesheet" />
{% if jekyll.environment == 'production' %}
<link rel="stylesheet" href="{{"/fonts/fonts-prod.css" | relative_url }}">
{% else %}
<link rel="stylesheet" href="/fonts/fonts.css" />
{% endif %}
<script src="https://unpkg.com/swiper@6.8.4/swiper-bundle.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/swiper@6.8.4/swiper-bundle.min.css"/>
<script defer src="https://unpkg.com/alpinejs@3.x.x/dist/cdn.min.js"></script>
{%- feed_meta -%}
{%- if jekyll.environment == 'production' and site.google_analytics -%}
{%- include google-analytics.html -%}
{%- endif -%}
</head>
<header
x-data="{ open: false, navOpen: false, sticky: false, lastPos: window.scrollY }"
x-ref="navbar"
x-on:scroll.window="
sticky = window.scrollY >= $refs.navbar.offsetHeight && lastPos >= window.scrollY;
lastPos = window.scrollY;
"
x-bind:class="{
'sticky': sticky,
'fixed': !sticky && lastPos > 0,
'static': lastPos === 0 && !sticky
}"
class="site-header {% if page.url != '/spec/{{ site.current_spec_version }}/' and page.url != {{ site.baseurl }} and page.url != '/' or page.url == '/spec/{{ site.current_spec_version }}/' %} is-specification-markdown{% endif %}">
<div class="wrapper">
<div class="py-4 md:py-0 flex items-center justify-between">
{%- assign default_paths = site.pages | map: "path" -%}
{%- assign page_paths = site.header_pages | default: default_paths -%}
{%- assign titles_size = site.pages | map: 'title' | join: '' | size -%}
<a rel="author" href="{{ "/" | relative_url }}" class="relative logo">
{% if page.url == '/' %}
<img src="{{ site.baseurl }}/images/logo.svg" alt="{{site.title}} logo" />
{% else %}
<img x-cloak x-show="!sticky" src="{{ site.baseurl }}/images/logo-green.svg" alt="{{site.title}} logo" />
<img x-cloak x-show="sticky" src="{{ site.baseurl }}/images/logo.svg" alt="{{site.title}} logo" />
{% endif%}
</a>
{%- if titles_size > 0 -%}
{% include mobile-nav.html paths=page_paths %}
<nav class="site-nav">
<ul class="list flex justify-center">
{%- for path in page_paths -%}
{%- assign my_page = site.pages | where: "path", path | first -%}
{%- if my_page.title -%}
<li class="relative">
{%- if my_page.url == '/spec' -%}
{%- assign my_page_url = '' -%}
{%- else -%}
{%- assign my_page_url = my_page.url | relative_url -%}
{%- endif -%}
{% if my_page.title == 'Specifications' %}
<a {% if my_page.title == page.title %}class="active page-link text-white flex items-center cursor"{% else %}class="page-link text-white flex items-center cursor"{% endif %}>
<button x-on:click="open = ! open" class="flex items-center">{{ my_page.title | escape }} <div class=" ml-2"><svg width="9" height="9" viewBox="0 0 6 6" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M3.05881 5.064L0.972811 0.906H5.13081L3.05881 5.064Z" fill="white"/>
</svg></div></button>
</a>
{% else %}
<a {% if my_page.title == page.title %}class="active page-link text-white flex items-center"{% else %}class="page-link text-white flex items-center"{% endif %}
href="{{my_page_url}}">
{{ my_page.title | escape }}
</a>
{% endif %}
{% if my_page.title == 'Specifications' %}
<div @click.outside="open = false" x-cloak x-show="open" x-transition class="absolute m-0 p-4 -ml-2 mt-4 bg-white rounded-lg shadow-md dropdown">
{% include specifications-nav.html %}
</div>
{% endif %}
{%- endif -%}
</li>
{%- endfor -%}
</ul>
</nav>
{%- endif -%}
<div class="ml-4 flex justify-end">
<button x-on:click="navOpen = ! navOpen" :class="{ 'active': navOpen === true }" class="mobile-menu-button inline-block md:hidden">
<span></span>
<span></span>
<span></span>
</button>
<a class="hidden md:inline-block" href="{{site.github.repository_url}}" target="_blank"><svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.2344 0.150879C5.28641 0.150879 0.468811 4.96848 0.468811 10.9165C0.468811 15.6803 3.55046 19.7039 7.82978 21.1303C8.36806 21.2245 8.56991 20.9016 8.56991 20.619C8.56991 20.3633 8.55646 19.5155 8.55646 18.6139C5.8516 19.1118 5.15184 17.9545 4.93653 17.3489C4.81541 17.0394 4.29059 16.084 3.83306 15.8283C3.45626 15.6264 2.91798 15.1285 3.8196 15.1151C4.66739 15.1016 5.27295 15.8956 5.47481 16.2185C6.44371 17.8468 7.99126 17.3893 8.61028 17.1067C8.70448 16.4069 8.98708 15.9359 9.29659 15.6668C6.90125 15.3977 4.39825 14.4691 4.39825 10.3513C4.39825 9.18051 4.81541 8.21161 5.50172 7.45802C5.39407 7.18888 5.01727 6.08541 5.60938 4.60514C5.60938 4.60514 6.51099 4.32254 8.56991 5.70861C9.43116 5.46639 10.3462 5.34527 11.2613 5.34527C12.1764 5.34527 13.0914 5.46639 13.9527 5.70861C16.0116 4.30909 16.9132 4.60514 16.9132 4.60514C17.5053 6.08541 17.1285 7.18888 17.0209 7.45802C17.7072 8.21161 18.1244 9.16706 18.1244 10.3513C18.1244 14.4826 15.6079 15.3977 13.2126 15.6668C13.6028 16.0032 13.9392 16.6492 13.9392 17.6584C13.9392 19.0983 13.9258 20.2556 13.9258 20.619C13.9258 20.9016 14.1276 21.238 14.6659 21.1303C16.8031 20.4088 18.6602 19.0353 19.9758 17.2031C21.2915 15.3708 21.9994 13.1721 22 10.9165C22 4.96848 17.1824 0.150879 11.2344 0.150879Z" fill="white"/>
</svg>
</a>
</div>
</div>
</div>
</header>
<article class="p-8 {% if level[forloop.index].layout == slim %}bg-white{% else %}p-16{% endif %} flex items-start justify-between">
<div class="w-1/4">
<img class="w-full" src="{{ site.baseurl }}{{level[forloop.index].badge}}" alt"{{level[forloop.index].title}} Badge" />
</div>
<div class="w-3/4 pl-8">
<p class="h3 font-semibold mb-4">{{level[forloop.index].title}}</p>
<p>{{level[forloop.index].text}}</p>
</div>
</article>
\ No newline at end of file
{% if include.paths %}
<nav :class="{ 'active': navOpen === true }" class="site-nav-mobile">
<ul class="list flex flex-col md:flex-row flex-wrap justify-center pt-16 pb-8 px-5">
{%- for path in include.paths -%}
{%- assign my_page = site.pages | where: "path", path | first -%}
{%- if my_page.title -%}
<li class="relative w-2/4">
{%- if my_page.url == '/spec' -%}
{%- assign my_page_url = '' -%}
{%- else -%}
{%- assign my_page_url = my_page.url | relative_url -%}
{%- endif -%}
{% if my_page.title == 'Specifications' %}
<a {% if my_page.title == page.title %}class="active page-link text-white flex items-center cursor"{% else %}class="page-link text-white flex items-center cursor"{% endif %}>
<button x-on:click="open = ! open" class="flex items-center">{{ my_page.title | escape }} <div class="ml-2"><svg width="9" height="9" viewBox="0 0 6 6" fill="#ffffff" xmlns="http://www.w3.org/2000/svg">
<path d="M3.05881 5.064L0.972811 0.906H5.13081L3.05881 5.064Z" fill="#ffffff"/>
</svg></div></button>
</a>
{% else %}
<a {% if my_page.title == page.title %}class="active page-link text-white flex items-center"{% else %}class="page-link text-white flex items-center"{% endif %}
href="{{my_page_url}}">
{{ my_page.title | escape }}
</a>
{% endif %}
{% if my_page.title == 'Specifications' %}
<div @click.outside="open = false" x-show="open" x-transition class="relative md:absolute m-0 md:py-4 md:bg-white rounded-lg md:shadow-md dropdown">
{% include specifications-nav.html %}
</div>
{% endif %}
{%- endif -%}
</li>
{%- endfor -%}
</ul>
</nav>
{% endif %}
\ No newline at end of file
{% assign versions = site.provenance_versions %}
<div class="w-full">
<select id="redirectSelect" class="rounded-lg p-4 border border-green-900 bg-transparent select-dropdown mt-8 md:mb-4 md:mt-0">
{% for item in versions %}
<option value="{{ site.baseurl }}/provenance/{{item}}" {% if page.url contains item %}selected{% endif %} class="inline-block">Version {{item | replace: "v", ""}}</option>
{% endfor %}
</select>
</div>
<script>
var selectEl = document.getElementById('redirectSelect');
selectEl.onchange = function(){
var goto = this.value;
window.location = goto;
};
</script>
\ No newline at end of file
<ul class="custom-list">
{%- for collection in site.collections -%}
{% if collection.label == 'spec' %}
{% for item in site[collection.label] %}
<li>
{% if item.path contains site.current_spec_version %}
{%- assign v = page.url | replace: '/','' | replace: 'spec','' | replace: 'index','' -%}
{% if item.title != 'Introduction' %}
<a class="border-b border-black-900 inline-block w-full mb-6" href="{{ site.baseurl }}/{{item.path | replace: site.current_spec_version,v | replace: "_", "" | replace: ".md", "" }}">
<p class="h3 font-semibold mb-2 flex items-center text-green-dark">
<span class="mr-4">
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0.896251 18C-0.298751 12.0505 -0.298752 5.94951 0.896249 -7.47629e-07C7.1285 2.02552 12.9429 5.081 18 9C12.9429 12.919 7.1285 15.9745 0.896251 18Z" fill="#40DB88"/>
</svg>
</span>
{{ item.title }}
</p>
<p class="mb-4 font-normal text-black pl-9">{{ item.description }}</p>
</a>
{% endif %}
{% endif %}
</li>
{% endfor %}
{% endif %}
{%- endfor -%}
<li>
<a class="border-b border-black-900 inline-block w-full mb-6" href="{{ site.baseurl }}/spec/faq">
<p class="h3 font-semibold mb-2 flex items-center text-green-dark">
<span class="mr-4">
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0.896251 18C-0.298751 12.0505 -0.298752 5.94951 0.896249 -7.47629e-07C7.1285 2.02552 12.9429 5.081 18 9C12.9429 12.919 7.1285 15.9745 0.896251 18Z" fill="#40DB88"/>
</svg>
</span>
FAQs
</p>
<p class="mb-4 font-normal text-black pl-9">Questions and more information</p>
</a>
</li>
</ul>
\ No newline at end of file
<ul>
{% for collection in site.collections %}
{% if collection.label == 'spec' %}
{% for item in site[collection.label] %}
{% if item.path contains site.current_spec_version %}
<li>
<a class="text-white md:text-black" href="{{ site.baseurl }}/{{item.path | replace: "_", "" | replace: ".md", "" }}">
{{ item.title }}
</a>
</li>
{% endif %}
{% endfor %}
{% endif%}
{% endfor %}
<li>
<a class="text-white md:text-black" href="{{ site.baseurl }}/{{ "_spec" | replace: "_", "" }}/faq">
FAQ
</a>
</li>
</ul>