diff --git a/.github/workflows/hugo.yaml b/.github/workflows/hugo.yaml new file mode 100644 index 000000000..852bbfe00 --- /dev/null +++ b/.github/workflows/hugo.yaml @@ -0,0 +1,32 @@ +name: Hugo + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +jobs: + + build: + name: Build + runs-on: ubuntu-latest + steps: + - name: Checkout repository and submodules + uses: actions/checkout@v2 + + + - name: Setup Hugo + uses: peaceiris/actions-hugo@v2 + with: + hugo-version: '0.121.2' + extended: true + + - name: Build + run: | + cd website && npm install && hugo --gc --minify + - name: Deploy to GitHub Pages + uses: peaceiris/actions-gh-pages@v3 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: ./website/public \ No newline at end of file diff --git a/.gitignore b/.gitignore index ec9267cf7..71ae02003 100644 --- a/.gitignore +++ b/.gitignore @@ -31,6 +31,12 @@ __pycache__/ default.tfstate default.tfstate.backup .terraform* +__pycache__/ + +public/ +node_modules/ +resources/ terraform.tfstate* terraform.tfvars tfplan + diff --git a/website/.gitignore b/website/.gitignore new file mode 100644 index 000000000..cc87aecd0 --- /dev/null +++ b/website/.gitignore @@ -0,0 +1,12 @@ +public/ + +# Modules generated by node.js for CSS editing +node_modules/ + +# Resources directory generated by Hugo local build +resources/ + +# Notebooks +.ipynb_checkpoints +# +.hugo_build.lock diff --git a/website/archetypes/default.md b/website/archetypes/default.md new file mode 100644 index 000000000..26f317f30 --- /dev/null +++ b/website/archetypes/default.md @@ -0,0 +1,5 @@ +--- +title: "{{ replace .Name "-" " " | title }}" +date: {{ .Date }} +draft: true +--- diff --git a/website/assets/icons/logo.svg b/website/assets/icons/logo.svg new file mode 100644 index 000000000..791e15a0a --- /dev/null +++ b/website/assets/icons/logo.svg @@ -0,0 +1 @@ +Icon_24px_K8Engine_Color \ No newline at end of file diff --git a/website/assets/scss/_styles_project.scss b/website/assets/scss/_styles_project.scss new file mode 100644 index 000000000..fccde58c0 --- /dev/null +++ b/website/assets/scss/_styles_project.scss @@ -0,0 +1,174 @@ +// -------------------------------------------------- +// remove whitespace after footer +// -------------------------------------------------- +footer { + min-height: auto; +} + +// -------------------------------------------------- +// prevent overflow of long names in sidebar +// -------------------------------------------------- +.td-sidebar-nav__section > ul { + overflow-wrap: break-word; +} + +.td-overlay--dark::after { + background-color: rgba(33, 61, 122, 0.6); +} + +#main_navbar { + justify-content: end; + padding-right: 16px; +} + +.row > * { + flex-shrink: 1; +} + +.row > .container { + max-width: 1200px; +} + +// -------------------------------------------------- +// custom navbar with larger logo, dropdown on mobile +// -------------------------------------------------- +.td-navbar { + min-height: auto; + + .navbar-brand { + margin: 0; + padding: 0; + + .text-uppercase { + display: none; + } + + .navbar-logo { + svg { + display: inline-block; + position: absolute; + top: 0; + z-index: 33; + padding: 10px; + height: 95px; + background: white; + border: 2px solid #4279f4; + border-top: none; + + @include media-breakpoint-down(md) { + width: 80px; + height: auto; + padding: 6px; + } + } + } + } + + .navbar-nav { + @include media-breakpoint-down(md) { + font-size: .875rem; + .dropdown { + min-width: inherit; + } + } + } +} + +.td-sidebar { + padding-bottom: 0.5rem; + + .td-sidebar__inner { + padding-top: 30px; + + @include media-breakpoint-down(md) { + padding-top: 10px; + } + } +} + +.td-sidebar-toc { + @supports (position: sticky) { + position: sticky; + top: 60px; + height: calc(100vh - 120px); + overflow-y: auto; + } +} + + +// -------------------------------------------------- +// 404 page +// -------------------------------------------------- +.error-page { + margin-top: 120px; + + ul { + margin-bottom: 50px; + list-style-type: none; + display: flex; + align-items: center; + justify-content: center; + flex-wrap: wrap; + padding-left: 0; + } + + li { + margin-left: 10px; + margin-right: 10px; + } + + h1 { + text-align: center; + margin-bottom: 20px; + } + + @media (min-width: 768px) and (max-width: 991px) { + margin-top: 100px; + } + + @media (max-width: 767px) { + margin-top: 50px; + } +} + +figcaption { + font-size: 0.8rem; + text-align: center; + font-style: italic; + color: #6c757d; +} + +// -------------------------------------------------- +// for tabbed code blocks +// -------------------------------------------------- +.nav-tabs { + border-bottom: none !important; +} + +.td-content > ul li, +.td-content > ol li.nav-item { + margin-bottom: 0px; +} + +.td-content .tab-content .highlight { + margin: 0; +} + +.tab-pane { + border-radius: 0.25rem; + padding: 0 16px 16px; + + border: 1px solid #dee2e6; + + &:first-of-type.active { + border-top-left-radius: 0; + } +} + +nav.foldable-nav .ul-1 .with-child>label:hover:before { + transform: none; +} + +nav.foldable-nav .ul-1 .with-child>input:checked~label:hover:before { + transform: rotate(90deg) !important; +} \ No newline at end of file diff --git a/website/assets/scss/_variables_project.scss b/website/assets/scss/_variables_project.scss new file mode 100644 index 000000000..f9614eb5c --- /dev/null +++ b/website/assets/scss/_variables_project.scss @@ -0,0 +1,151 @@ +/* +Add styles or override the theme's variables here. +*/ + +html.smooth-scroll { + scroll-behavior: smooth; +} + +// Theme colors +$primary: #4279f4; +$secondary: #fff; +$dark: #213d7a; +$info: #adb5bd; +$light: #dee2e6; + +// Nav bar colors +$white: #fff; +$navbar-dark-color: rgba($white, 1); +$navbar-dark-hover-color: rgba($white, 0.75); +$navbar-dark-active-color: $navbar-dark-color; + +// Fonts +$google_font_family: "Open+Sans:300,300i,400,400i,600,600i,700,700i&display=swap" !default; + +// Front page styling +.card-img-top { + object-fit: scale-down; +} + +.text-white { + font-weight: 400; +} + +.bg-primary-dark { + background-color: $dark; + + a { + border-bottom: 1px dotted paleturquoise; + + color: paleturquoise !important; + font-weight: 600; + padding: 0 2px 1px 2px; + text-decoration: none; + + &:hover { + border-bottom: 1px dotted #fff; + + color: #fff !important; + } + } +} + +.border-primary-dark { + border-color: $info !important; +} + +.section-head { + font-size: 1.25em; + color: $primary; + font-weight: bold; + padding: 0 0 1em 0; +} + +.contain { + margin: 0 auto; + max-width: 1200px; } + +.image { + display: block; } + .image img { + display: block; + width: 100%; + height: auto; } + .image.left, .image.right { + max-width: 45%; } + .image.left::after, .image.right::after { + clear: both; + content: ""; + display: block; } + .image.left { + float: left; + margin: 0 1.5em 1.5em 0; } + .image.right { + float: right; + margin: 0 0 1.5em 1.5em; } + +#overview, #community { + padding: 6em 1.5em 3em 1.5em; + text-align: center; + margin: 0; } + #overview p, #community p { + font-size: 1.125em;} + +#overview { + border-bottom: 2px solid #b6d0ff; +} + +#community { + border-top: 2px solid #b6d0ff; +} + +#pageContent .lead { + margin: 0 1.5em 3em 1.5em;} + #pageContent .lead > .image { + padding: 0 1.5em; + max-width: 60%; + margin-bottom: 1.5em; } + #pageContent .lead > .text p { + font-size: 1em; } + +@media screen and (min-width: 480px) { + #overview, #community { + font-size: 1.125em; } + #pageContent .lead > .image { + max-width: 35%; + margin-bottom: 3em; } + #pageContent .lead > .text p { + font-size: 1em; } } + +@media screen and (min-width: 769px) { + #pageContent .lead { + margin-top: 1em; + display: -ms-flexbox; + display: flex; + -ms-flex-direction: row; + flex-direction: row; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -ms-flex-pack: justify; + justify-content: space-between; + -ms-flex-align: stretch; + align-items: stretch; } + #pageContent .lead > * { + -ms-flex: 0 1 auto; + flex: 0 1 auto; } + #pageContent .lead > .image { + display: block; + margin: 0 auto; + max-width: 100%; } + #pageContent .lead > .image > img { + max-width: 80%; + margin: 0 auto; } + #pageContent .lead > .text { + -ms-flex-preferred-size: 70%; + flex-basis: 70%; } + #pageContent .lead:nth-child(2n+0) > .image { + -ms-flex-order: 2; + order: 2; } + #pageContent .lead:nth-child(2n+0) > .text { + -ms-flex-order: 1; + order: 1; } } diff --git a/website/config.toml b/website/config.toml new file mode 100644 index 000000000..3c8769785 --- /dev/null +++ b/website/config.toml @@ -0,0 +1,155 @@ +baseURL = "/ai-on-gke/" +title = "AI on GKE" + +enableRobotsTXT = true + +theme = "docsy" +themesDir = "node_modules" + +############################################################################### +# Docsy +############################################################################### +enableGitInfo = true + +# language settings +contentDir = "content/en" +defaultContentLanguage = "en" +# tell Hugo not to include the /en/ element in the URL path for English docs +defaultContentLanguageInSubdir = false +# useful when translating +enableMissingTranslationPlaceholders = true +# disable taxonomies +disableKinds = ["taxonomy", "taxonomyTerm"] +# deprecated directories +ignoreFiles = [] +############################################################################### +# Hugo - Top-level navigation (horizontal) +############################################################################### +[menu] + + [[menu.main]] + name = "GitHub" + weight = 99 + pre = "" + url = "https://github.com/GoogleCloudPlatform/ai-on-gke" + +############################################################################### +# Docsy - Goldmark markdown parser +############################################################################### +[markup] + [markup.goldmark] + [markup.goldmark.renderer] + unsafe = true + [markup.highlight] + # See a complete list of available styles at https://xyproto.github.io/splash/docs/all.html + style = "tango" + guessSyntax = "true" + +############################################################################### +# Docsy - Image processing configuration +############################################################################### +[imaging] + resampleFilter = "CatmullRom" + quality = 75 + anchor = "smart" + +############################################################################### +# Docsy - Services configuration +############################################################################### +[services] + [services.googleAnalytics] + id = "UA-135379910-1" + +############################################################################### +# Docsy - Language configuration +############################################################################### +[languages] + [languages.en] + languageName ="English" + # weight used for sorting in the language menu + weight = 1 + +############################################################################### +# Docsy - Site Parameters +############################################################################### +[params] + github_repo = "https://github.com/GoogleCloudPlatform/ai-on-gke" + github_project_repo = "https://github.com/GoogleCloudPlatform/ai-on-gke" + github_subdir = "website" + RSSLink = "/index.xml" + author = "Google Cloud" # add your company name + github = "GoogleCloudPlatform" # add your github profile name + twitter = "googlecloud" # add your twitter profile + + copyright = "Google Cloud" + + # Google Custom Search Engine ID. + # gcs_engine_id = "007239566369470735695:624rglujm-w" + prism_syntax_highlighting = true + # Text label for the version menu in the top bar of the website. + version_menu = "Version" + + # The major.minor version tag for the version of the docs represented in this + # branch of the repository. Used in the "version-banner" partial to display a + # version number for this doc set. + version = "v0.1.0" + + # Flag used in the "version-banner" partial to decide whether to display a + # banner on every page indicating that this is an archived version of the docs. + archived_version = false + + # A link to latest version of the docs. Used in the "version-banner" partial to + # point people to the main doc site. + url_latest_version = "https://cloud.google.com/ai-platform/training/docs" + + # A variable used in various docs to determine URLs for config files etc. + # To find occurrences, search the repo for 'params "githubbranch"'. + githubbranch = "main" + + # These entries appear in the drop-down menu at the top of the website. + # [[params.versions]] + # version = "main" + # githubbranch = "main" + + # User interface configuration + [params.ui] + # Enable the logo + navbar_logo = true + # Enable to show the side bar menu in its compact state. + sidebar_menu_compact = true + # Enable the search box in the side bar. + sidebar_search_disable = false + # Set to true to disable breadcrumb navigation. + breadcrumb_disable = false + # Show expand/collapse icon for sidebar sections + sidebar_menu_foldable = true + # Disable about button in footer + footer_about_disable = true + + # Adds a H2 section titled "Feedback" to the bottom of each doc. The responses are sent to Google Analytics as events. + # This feature depends on [services.googleAnalytics] and will be disabled if "services.googleAnalytics.id" is not set. + # If you want this feature, but occasionally need to remove the "Feedback" section from a single page, + # add "hide_feedback: true" to the page's front matter. + [params.ui.feedback] + enable = true + # The responses that the user sees after clicking "yes" (the page was helpful) or "no" (the page was not helpful). + yes = 'Glad to hear it! Please tell us how we can improve.' + no = 'Sorry to hear that. Please tell us how we can improve.' + +[params.links] +# End user relevant links. These will show up on left side of footer and in the community page if you have one. + [[params.links.user]] + name ="Twitter" + url = "https://twitter.com/googlecloud" + icon = "fab fa-twitter" + desc = "Follow us on Twitter to get the latest news!" + [[params.links.user]] + name = "Stack Overflow" + url = "https://stackoverflow.com/questions/tagged/google-kubernetes-engine" + icon = "fab fa-stack-overflow" + desc = "Practical questions and curated answers" + [[params.links.user]] + name = "Slack" + url = "https://googlecloud-community.slack.com/" + icon = "fab fa-slack" + desc = "Chat with other project developers" diff --git a/website/content/en/_index.html b/website/content/en/_index.html new file mode 100644 index 000000000..56cd1d04a --- /dev/null +++ b/website/content/en/_index.html @@ -0,0 +1,11 @@ ++++ +title = "AI on GKE" +linkTitle = "AI on GKE" +description = "AI on GKE" ++++ + +{{< blocks/cover title="AI on GKE" image_anchor="top" height="full" color="orange" >}} + +{{< /blocks/cover >}} + +
diff --git a/website/content/en/docs/_index.md b/website/content/en/docs/_index.md new file mode 100755 index 000000000..f72f73291 --- /dev/null +++ b/website/content/en/docs/_index.md @@ -0,0 +1,8 @@ +--- +title: "Documentation" +linkTitle: "Documentation" +weight: 20 +menu: + main: + weight: 20 +--- diff --git a/website/content/en/featureds-background.png b/website/content/en/featureds-background.png new file mode 100644 index 000000000..671391d41 Binary files /dev/null and b/website/content/en/featureds-background.png differ diff --git a/website/content/en/search.md b/website/content/en/search.md new file mode 100644 index 000000000..e3690fd5a --- /dev/null +++ b/website/content/en/search.md @@ -0,0 +1,6 @@ +--- +title: Search Results +layout: search + +--- + diff --git a/website/layouts/404.html b/website/layouts/404.html new file mode 100644 index 000000000..4429eab84 --- /dev/null +++ b/website/layouts/404.html @@ -0,0 +1,19 @@ +{{ define "main"}} +
+

404 Page not found

+ +
+{{ end }} \ No newline at end of file diff --git a/website/layouts/partials/feedback.html b/website/layouts/partials/feedback.html new file mode 100644 index 000000000..78e65fecb --- /dev/null +++ b/website/layouts/partials/feedback.html @@ -0,0 +1,61 @@ + +
+
+

Feedback

+

Was this page helpful?

+ + + + +
+
+ diff --git a/website/layouts/partials/footer.html b/website/layouts/partials/footer.html new file mode 100644 index 000000000..56ec47207 --- /dev/null +++ b/website/layouts/partials/footer.html @@ -0,0 +1,39 @@ +{{ $links := .Site.Params.links }} + +{{ define "footer-links-block" }} + +{{ end }} diff --git a/website/layouts/partials/head.html b/website/layouts/partials/head.html new file mode 100644 index 000000000..7e474dd0d --- /dev/null +++ b/website/layouts/partials/head.html @@ -0,0 +1,56 @@ + + +{{ hugo.Generator }} +{{ range .AlternativeOutputFormats -}} + +{{ end -}} + +{{ $outputFormat := partial "outputformat.html" . -}} +{{ if and hugo.IsProduction (ne $outputFormat "print") -}} + +{{ else -}} + +{{ end -}} + +{{ partial "seo_schema" . }} + +{{ partialCached "favicons.html" . }} + + {{- if .IsHome -}} + {{ .Site.Title -}} + {{ else -}} + {{ with .Title }}{{ . }} | {{ end -}} + {{ .Site.Title -}} + {{ end -}} + +{{ $desc := .Page.Description | default (.Page.Content | safeHTML | truncate 150) -}} + +{{ template "_internal/opengraph.html" . -}} +{{ template "_internal/schema.html" . -}} +{{ template "_internal/twitter_cards.html" . -}} +{{ partialCached "head-css.html" . "asdf" -}} + +{{ if .Site.Params.offlineSearch -}} + +{{ end -}} + +{{ if .Site.Params.prism_syntax_highlighting -}} + +{{ end -}} + +{{ partial "hooks/head-end.html" . -}} + +{{/* To comply with GDPR, cookie consent scripts places in head-end must execute before Google Analytics is enabled */ -}} +{{ if hugo.IsProduction -}} + {{ if hasPrefix .Site.GoogleAnalytics "G-" -}} + {{ template "_internal/google_analytics.html" . -}} + {{ else -}} + {{ template "_internal/google_analytics_async.html" . -}} + {{ end -}} +{{ end -}} diff --git a/website/layouts/partials/navbar-version-selector.html b/website/layouts/partials/navbar-version-selector.html new file mode 100644 index 000000000..04aebe324 --- /dev/null +++ b/website/layouts/partials/navbar-version-selector.html @@ -0,0 +1,8 @@ + + diff --git a/website/layouts/partials/navbar.html b/website/layouts/partials/navbar.html new file mode 100644 index 000000000..d65dc0b54 --- /dev/null +++ b/website/layouts/partials/navbar.html @@ -0,0 +1,37 @@ +{{ $cover := and (.HasShortcode "blocks/cover") (not .Site.Params.ui.navbar_translucent_over_cover_disable) }} + diff --git a/website/layouts/partials/seo_schema.html b/website/layouts/partials/seo_schema.html new file mode 100644 index 000000000..c75ca7ad5 --- /dev/null +++ b/website/layouts/partials/seo_schema.html @@ -0,0 +1,26 @@ + \ No newline at end of file diff --git a/website/layouts/shortcodes/blocks/content-item.html b/website/layouts/shortcodes/blocks/content-item.html new file mode 100644 index 000000000..c5dbd4da9 --- /dev/null +++ b/website/layouts/shortcodes/blocks/content-item.html @@ -0,0 +1,9 @@ +{{ $url_text := .Get "url_text" }} +
+ {{ with .Get "title" }}

{{ . }}

{{ end }} + +

{{ .Get "date" }}

+ +

{{ .Inner }}

+ {{ with .Get "url" }}

{{ with $url_text }}{{ $url_text }}{{ else }}{{ "Read" }}{{ end }}

{{ end }} +
diff --git a/website/layouts/shortcodes/blocks/content-section.html b/website/layouts/shortcodes/blocks/content-section.html new file mode 100644 index 000000000..df2d996f5 --- /dev/null +++ b/website/layouts/shortcodes/blocks/content-section.html @@ -0,0 +1,12 @@ +{{ $col_id := .Get "color" | default .Ordinal }} +{{ $height := .Get "height" | default "auto" }} + + +
+
+

{{ .Get "title" | markdownify }}

+
+ {{ .Inner }} +
+
+
\ No newline at end of file diff --git a/website/layouts/shortcodes/blocks/link-down.html b/website/layouts/shortcodes/blocks/link-down.html new file mode 100644 index 000000000..365d8d11a --- /dev/null +++ b/website/layouts/shortcodes/blocks/link-down.html @@ -0,0 +1,7 @@ +{{ with .Parent }} +{{ $id := $.Get "id" | default "overview" }} +{{ $color := $.Get "color" | default "blue" }} + +{{ else }} +{{ errorf "The link-down shortcode is supposed to be nested inside a shortcode"}} +{{ end }} \ No newline at end of file diff --git a/website/layouts/shortcodes/blocks/sample-section.html b/website/layouts/shortcodes/blocks/sample-section.html new file mode 100644 index 000000000..4eb2bf9da --- /dev/null +++ b/website/layouts/shortcodes/blocks/sample-section.html @@ -0,0 +1,10 @@ +{{ $api := .Get "api" }} +{{ $last_updated := "" }} +{{ $version := .Get "kfctl" }} +
+ {{ with .Get "title" }}

{{ . }}

{{ end }} + {{ with getJSON $api }} {{ $last_updated = (index (index (index (index . 0) "commit") "committer") "date") | dateFormat "2006/01/02" }} +

{{ "Last update " }} {{ $last_updated }} {{ with $version }}{{ "AI on GKE " }}{{ . }}{{ end }}

{{ end }} +

{{ .Inner }}

+ {{ with .Get "url" }}

{{ "Go to sample" }}

{{ end }} +
diff --git a/website/layouts/shortcodes/blocks/tab.html b/website/layouts/shortcodes/blocks/tab.html new file mode 100644 index 000000000..4db7465af --- /dev/null +++ b/website/layouts/shortcodes/blocks/tab.html @@ -0,0 +1,19 @@ +{{ if .Parent }} + {{ $name := trim (.Get "name") " " }} + {{ $include := trim (.Get "include") " "}} + {{ $codelang := .Get "codelang" }} + {{ if not (.Parent.Scratch.Get "tabs") }} + {{ .Parent.Scratch.Set "tabs" slice }} + {{ end }} + {{ with .Inner }} + {{ if $codelang }} + {{ $.Parent.Scratch.Add "tabs" (dict "name" $name "content" (highlight . $codelang "") ) }} + {{ else }} + {{ $.Parent.Scratch.Add "tabs" (dict "name" $name "content" . ) }} + {{ end }} + {{ else }} + {{ $.Parent.Scratch.Add "tabs" (dict "name" $name "include" $include "codelang" $codelang) }} + {{ end }} +{{ else }} + {{- errorf "[%s] %q: tab shortcode missing its parent" site.Language.Lang .Page.Path -}} +{{ end}} diff --git a/website/layouts/shortcodes/blocks/tabs.html b/website/layouts/shortcodes/blocks/tabs.html new file mode 100644 index 000000000..aeb9582b2 --- /dev/null +++ b/website/layouts/shortcodes/blocks/tabs.html @@ -0,0 +1,50 @@ +{{- .Page.Scratch.Add "tabset-counter" 1 -}} +{{- $tab_set_id := .Get "name" | default (printf "tabset-%s-%d" (.Page.RelPermalink) (.Page.Scratch.Get "tabset-counter") ) | anchorize -}} +{{- $tabs := .Scratch.Get "tabs" -}} +{{- if .Inner -}}{{- /* We don't use the inner content, but Hugo will complain if we don't reference it. */ -}}{{- end -}} + +
+{{- range $i, $e := $tabs -}} +{{- $id := printf "%s-%d" $tab_set_id $i -}} +{{- if (eq $i 0) -}} +
+{{ else }} +
+{{ end }} +

+ {{- with .content -}} + {{- . -}} + {{- else -}} + {{- if eq $.Page.BundleType "leaf" -}} + {{- /* find the file somewhere inside the bundle. Note the use of double asterisk */ -}} + {{- with $.Page.Resources.GetMatch (printf "**%s*" .include) -}} + {{- if ne .ResourceType "page" -}} + {{- /* Assume it is a file that needs code highlighting. */ -}} + {{- $codelang := $e.codelang | default ( path.Ext .Name | strings.TrimPrefix ".") -}} + {{- highlight .Content $codelang "" -}} + {{- else -}} + {{- .Content -}} + {{- end -}} + {{- end -}} + {{- else -}} + {{- $path := path.Join $.Page.File.Dir .include -}} + {{- $page := site.GetPage "page" $path -}} + {{- with $page -}} + {{- .Content -}} + {{- else -}} + {{- errorf "[%s] tabs include not found for path %q" site.Language.Lang $path -}} + {{- end -}} + {{- end -}} + {{- end -}} +

+{{- end -}} +
diff --git a/website/layouts/shortcodes/include.html b/website/layouts/shortcodes/include.html new file mode 100644 index 000000000..b15253c89 --- /dev/null +++ b/website/layouts/shortcodes/include.html @@ -0,0 +1,43 @@ + +{{/* Handle the "file" and "lang" named parameter or two unnamed parameter as the filepath and coding language*/}} +{{/* The first parameter should be a relative path to the "static" directory. Ex: "examples/jobs/sample-job.yaml" */}} +{{ if .IsNamedParams }} + {{ $.Scratch.Set "fparameter" ( .Get "file" ) }} + {{ $.Scratch.Set "lang" ( .Get "lang") }} +{{ else }} + {{ $.Scratch.Set "fparameter" ( .Get 0 ) }} + {{ $.Scratch.Set "lang" ( .Get 1 ) }} +{{ end }} + +{{/* If coding language are specified, then the static file is a code file; If not, then the static are non-code file. */}} +{{ if eq ($.Scratch.Get "lang") "" }} +{{ $.Scratch.Set "iscode" "false"}} +{{ else }} +{{ $.Scratch.Set "iscode" "true" }} +{{ end }} + +{{/* `fparameter is a relative path of the static file from the `static` diretory. For example, `/example/python/hello.py` */}} +{{ $.Scratch.Set "filepath" "/" }} +{{ $.Scratch.Add "filepath" "static/" }} +{{ $.Scratch.Add "filepath" ($.Scratch.Get "fparameter") }} + +{{/* If the file exists, read it and highlight it if it's code. +Throw a compile error or print an error on the page if the file is not found */}} + +{{ if fileExists ($.Scratch.Get "filepath") }} + {{ $filename := (path.Split ($.Scratch.Get "filepath")).File }} + {{ $link := printf "/%s" ($.Scratch.Get "fparameter") | safeURL }} +
+ + {{ if eq ($.Scratch.Get "iscode") "true" }} + {{- highlight ($.Scratch.Get "filepath" | readFile | htmlUnescape | + safeHTML ) ($.Scratch.Get "lang") "" -}} + {{ else }} + {{- $.Scratch.Get "filepath" | os.ReadFile | .Page.RenderString | safeHTML -}} + {{ end }} +
+{{ else if eq (.Get "draft") "true" }} + +

The file {{ $.Scratch.Get "filepath" }} was not found.

+ +{{ else }}{{- errorf "Shortcode %q: file %q not found at %s" .Name ($.Scratch.Get "filepath") .Position -}}{{ end }} \ No newline at end of file diff --git a/website/layouts/shortcodes/needs-update.html b/website/layouts/shortcodes/needs-update.html new file mode 100644 index 000000000..6dcb7d2d1 --- /dev/null +++ b/website/layouts/shortcodes/needs-update.html @@ -0,0 +1,4 @@ + diff --git a/website/layouts/shortcodes/params.html b/website/layouts/shortcodes/params.html new file mode 100644 index 000000000..499251b98 --- /dev/null +++ b/website/layouts/shortcodes/params.html @@ -0,0 +1 @@ +{{- .Page.Param (.Get 0) -}} \ No newline at end of file diff --git a/website/layouts/sitemap.xml b/website/layouts/sitemap.xml new file mode 100644 index 000000000..20ea79af4 --- /dev/null +++ b/website/layouts/sitemap.xml @@ -0,0 +1,21 @@ + + {{ range .Data.Pages }} + + https://github.com/GoogleCloudPlatform/ai-on-gke{{ .Permalink }}{{ if not .Lastmod.IsZero }} + {{ safeHTML ( .Lastmod.Format "2006-01-02T15:04:05-07:00" ) }}{{ end }}{{ with .Sitemap.ChangeFreq }} + {{ . }}{{ end }}{{ if ge .Sitemap.Priority 0.0 }} + {{ .Sitemap.Priority }}{{ end }}{{ if .IsTranslated }}{{ range .Translations }} + {{ end }} + {{ end }} + + {{ end }} + \ No newline at end of file diff --git a/website/package-lock.json b/website/package-lock.json new file mode 100644 index 000000000..3b4b018d5 --- /dev/null +++ b/website/package-lock.json @@ -0,0 +1,1020 @@ +{ + "name": "website", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "devDependencies": { + "autoprefixer": "^10.4.13", + "docsy": "github:google/docsy", + "postcss": "^8.4.21", + "postcss-cli": "^10.1.0" + } + }, + "node_modules/@fortawesome/fontawesome-free": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.2.1.tgz", + "integrity": "sha512-viouXhegu/TjkvYQoiRZK3aax69dGXxgEjpvZW81wIJdxm5Fnvp3VVIP4VHKqX4SvFw6qpmkILkD4RJWAdrt7A==", + "dev": true, + "hasInstallScript": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.6", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", + "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==", + "dev": true, + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.13", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", + "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + ], + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-lite": "^1.0.30001426", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bootstrap": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.3.tgz", + "integrity": "sha512-cEKPM+fwb3cT8NzQZYEu4HilJ3anCrWqh3CHAok1p9jXqMPsPTBhU25fBckEJHJ/p+tTxTFTsFQGM+gaHpi3QQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], + "peerDependencies": { + "@popperjs/core": "^2.11.6" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001449", + "electron-to-chromium": "^1.4.284", + "node-releases": "^2.0.8", + "update-browserslist-db": "^1.0.10" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001449", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001449.tgz", + "integrity": "sha512-CPB+UL9XMT/Av+pJxCKGhdx+yg1hzplvFJQlJ2n68PyQGMz9L/E2zCyLdOL8uasbouTUgnPl+y0tccI/se+BEw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/dependency-graph": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/docsy": { + "version": "0.6.0", + "resolved": "git+ssh://git@github.com/google/docsy.git#dc94be3e13e2090ff6cd1c50edd650ab7ebd968b", + "dev": true, + "dependencies": { + "@fortawesome/fontawesome-free": "6.2.1", + "bootstrap": "5.2.3" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/infusion" + } + }, + "node_modules/fs-extra": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", + "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-stdin": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", + "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globby": { + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz", + "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==", + "dev": true, + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/lilconfig": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", + "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.9.tgz", + "integrity": "sha512-2xfmOrRkGogbTK9R6Leda0DGiXeY3p2NJpy4+gNCffdUvV6mdEJnaDEic1i3Ec2djAo8jWYoJMR5PB0MSMpxUA==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss": { + "version": "8.4.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", + "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-cli": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-10.1.0.tgz", + "integrity": "sha512-Zu7PLORkE9YwNdvOeOVKPmWghprOtjFQU3srMUGbdz3pHJiFh7yZ4geiZFMkjMfB0mtTFR3h8RemR62rPkbOPA==", + "dev": true, + "dependencies": { + "chokidar": "^3.3.0", + "dependency-graph": "^0.11.0", + "fs-extra": "^11.0.0", + "get-stdin": "^9.0.0", + "globby": "^13.0.0", + "picocolors": "^1.0.0", + "postcss-load-config": "^4.0.0", + "postcss-reporter": "^7.0.0", + "pretty-hrtime": "^1.0.3", + "read-cache": "^1.0.0", + "slash": "^5.0.0", + "yargs": "^17.0.0" + }, + "bin": { + "postcss": "index.js" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz", + "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==", + "dev": true, + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^2.1.1" + }, + "engines": { + "node": ">= 14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-reporter": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-7.0.5.tgz", + "integrity": "sha512-glWg7VZBilooZGOFPhN9msJ3FQs19Hie7l5a/eE6WglzYqVeH3ong3ShFcp9kDWJT1g2Y/wd59cocf9XxBtkWA==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "thenby": "^1.3.4" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/slash": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.0.0.tgz", + "integrity": "sha512-n6KkmvKS0623igEVj3FF0OZs1gYYJ0o0Hj939yc1fyxl2xt+xYpLnzJB6xBSqOfV9ZFLEWodBBN/heZJahuIJQ==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/thenby": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/thenby/-/thenby-1.3.4.tgz", + "integrity": "sha512-89Gi5raiWA3QZ4b2ePcEwswC3me9JIg+ToSgtE0JWeCynLnLxNr/f9G+xfo9K+Oj4AFdom8YNJjibIARTJmapQ==", + "dev": true + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yaml": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz", + "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yargs": { + "version": "17.6.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", + "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + } + } +} diff --git a/website/package.json b/website/package.json new file mode 100644 index 000000000..5000fb607 --- /dev/null +++ b/website/package.json @@ -0,0 +1,8 @@ +{ + "devDependencies": { + "autoprefixer": "^10.4.13", + "docsy": "github:google/docsy", + "postcss": "^8.4.21", + "postcss-cli": "^10.1.0" + } +} diff --git a/website/static/favicons/android-144x144.png b/website/static/favicons/android-144x144.png new file mode 100644 index 000000000..c08925589 Binary files /dev/null and b/website/static/favicons/android-144x144.png differ diff --git a/website/static/favicons/android-192x192 copy.png b/website/static/favicons/android-192x192 copy.png new file mode 100644 index 000000000..ccacec3a4 Binary files /dev/null and b/website/static/favicons/android-192x192 copy.png differ diff --git a/website/static/favicons/android-192x192.png b/website/static/favicons/android-192x192.png new file mode 100644 index 000000000..ccacec3a4 Binary files /dev/null and b/website/static/favicons/android-192x192.png differ diff --git a/website/static/favicons/android-48x48.png b/website/static/favicons/android-48x48.png new file mode 100644 index 000000000..f754031df Binary files /dev/null and b/website/static/favicons/android-48x48.png differ diff --git a/website/static/favicons/android-72x72.png b/website/static/favicons/android-72x72.png new file mode 100644 index 000000000..c1e6c6601 Binary files /dev/null and b/website/static/favicons/android-72x72.png differ diff --git a/website/static/favicons/android-96x96.png b/website/static/favicons/android-96x96.png new file mode 100644 index 000000000..ccd728d49 Binary files /dev/null and b/website/static/favicons/android-96x96.png differ diff --git a/website/static/favicons/android-chrome-192x192.png b/website/static/favicons/android-chrome-192x192.png new file mode 100644 index 000000000..ccacec3a4 Binary files /dev/null and b/website/static/favicons/android-chrome-192x192.png differ diff --git a/website/static/favicons/apple-touch-icon-180x180.png b/website/static/favicons/apple-touch-icon-180x180.png new file mode 100644 index 000000000..795cb8857 Binary files /dev/null and b/website/static/favicons/apple-touch-icon-180x180.png differ diff --git a/website/static/favicons/favicon-16x16.png b/website/static/favicons/favicon-16x16.png new file mode 100644 index 000000000..fe8a03f7a Binary files /dev/null and b/website/static/favicons/favicon-16x16.png differ diff --git a/website/static/favicons/favicon-32x32.png b/website/static/favicons/favicon-32x32.png new file mode 100644 index 000000000..b0c3c2e65 Binary files /dev/null and b/website/static/favicons/favicon-32x32.png differ diff --git a/website/static/favicons/favicon-96x96.png b/website/static/favicons/favicon-96x96.png new file mode 100644 index 000000000..ccd728d49 Binary files /dev/null and b/website/static/favicons/favicon-96x96.png differ diff --git a/website/static/favicons/favicon.ico b/website/static/favicons/favicon.ico new file mode 100644 index 000000000..dc42506ae Binary files /dev/null and b/website/static/favicons/favicon.ico differ diff --git a/website/static/favicons/site.webmanifest b/website/static/favicons/site.webmanifest new file mode 100644 index 000000000..45dc8a206 --- /dev/null +++ b/website/static/favicons/site.webmanifest @@ -0,0 +1 @@ +{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} \ No newline at end of file diff --git a/website/static/images/logo.svg b/website/static/images/logo.svg new file mode 100644 index 000000000..791e15a0a --- /dev/null +++ b/website/static/images/logo.svg @@ -0,0 +1 @@ +Icon_24px_K8Engine_Color \ No newline at end of file