diff --git a/Dockerfile b/Dockerfile index eb644fd20..a7db64196 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM klakegg/hugo:0.107.0-ext-ubuntu as website +FROM hugomods/hugo:exts-0.147.0 as website RUN apt-get -y update && apt-get -y install git build-essential python3-venv python3-pip COPY . /src RUN git config --global --add safe.directory /src diff --git a/assets/css/asciinema-player.css b/assets/css/asciinema-player.css deleted file mode 100644 index 8d77df46e..000000000 --- a/assets/css/asciinema-player.css +++ /dev/null @@ -1,2563 +0,0 @@ -.asciinema-player-wrapper { - position: relative; - text-align: center; - outline: none; -} -.asciinema-player-wrapper .title-bar { - display: none; - top: -78px; - transition: top 0.15s linear; - position: absolute; - left: 0; - right: 0; - box-sizing: content-box; - font-size: 20px; - line-height: 1em; - padding: 15px; - font-family: sans-serif; - color: white; - background-color: rgba(0, 0, 0, 0.8); -} -.asciinema-player-wrapper .title-bar img { - vertical-align: middle; - height: 48px; - margin-right: 16px; -} -.asciinema-player-wrapper .title-bar a { - color: white; - text-decoration: underline; -} -.asciinema-player-wrapper .title-bar a:hover { - text-decoration: none; -} -.asciinema-player-wrapper:fullscreen { - background-color: #000; - width: 100%; - height: 100%; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-justify-content: center; - justify-content: center; - -webkit-align-items: center; - align-items: center; -} -.asciinema-player-wrapper:fullscreen .asciinema-player { - position: static; -} -.asciinema-player-wrapper:fullscreen .title-bar { - display: initial; -} -.asciinema-player-wrapper:fullscreen.hud .title-bar { - top: 0; -} -.asciinema-player-wrapper:-webkit-full-screen { - background-color: #000; - width: 100%; - height: 100%; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-justify-content: center; - justify-content: center; - -webkit-align-items: center; - align-items: center; -} -.asciinema-player-wrapper:-webkit-full-screen .asciinema-player { - position: static; -} -.asciinema-player-wrapper:-webkit-full-screen .title-bar { - display: initial; -} -.asciinema-player-wrapper:-webkit-full-screen.hud .title-bar { - top: 0; -} -.asciinema-player-wrapper:-moz-full-screen { - background-color: #000; - width: 100%; - height: 100%; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-justify-content: center; - justify-content: center; - -webkit-align-items: center; - align-items: center; -} -.asciinema-player-wrapper:-moz-full-screen .asciinema-player { - position: static; -} -.asciinema-player-wrapper:-moz-full-screen .title-bar { - display: initial; -} -.asciinema-player-wrapper:-moz-full-screen.hud .title-bar { - top: 0; -} -.asciinema-player-wrapper:-ms-fullscreen { - background-color: #000; - width: 100%; - height: 100%; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-justify-content: center; - justify-content: center; - -webkit-align-items: center; - align-items: center; -} -.asciinema-player-wrapper:-ms-fullscreen .asciinema-player { - position: static; -} -.asciinema-player-wrapper:-ms-fullscreen .title-bar { - display: initial; -} -.asciinema-player-wrapper:-ms-fullscreen.hud .title-bar { - top: 0; -} -.asciinema-player-wrapper .asciinema-player { - text-align: left; - display: inline-block; - padding: 0px; - position: relative; - box-sizing: content-box; - -moz-box-sizing: content-box; - -webkit-box-sizing: content-box; - overflow: hidden; - max-width: 100%; -} -.asciinema-terminal { - box-sizing: content-box; - -moz-box-sizing: content-box; - -webkit-box-sizing: content-box; - overflow: hidden; - padding: 0; - margin: 0px; - display: block; - white-space: pre; - border: 0; - word-wrap: normal; - word-break: normal; - border-radius: 0; - border-style: solid; - cursor: text; - border-width: 0.5em; - font-family: Consolas, Menlo, 'Bitstream Vera Sans Mono', monospace, 'Powerline Symbols'; - line-height: 1.3333333333em; -} -.asciinema-terminal .line { - letter-spacing: normal; - overflow: hidden; - height: 1.3333333333em; -} -.asciinema-terminal .line span { - padding: 0; - display: inline-block; - height: 1.3333333333em; -} -.asciinema-terminal .line { - display: block; - width: 200%; -} -.asciinema-terminal .bright { - font-weight: bold; -} -.asciinema-terminal .underline { - text-decoration: underline; -} -.asciinema-terminal .italic { - font-style: italic; -} -.asciinema-terminal.font-small { - font-size: 12px; -} -.asciinema-terminal.font-medium { - font-size: 18px; -} -.asciinema-terminal.font-big { - font-size: 24px; -} -.asciinema-player .control-bar { - width: 100%; - height: 32px; - background: rgba(0, 0, 0, 0.8); - /* no gradient fallback */ - background: -moz-linear-gradient(top, rgba(0, 0, 0, 0.5) 0%, #000000 25%, #000000 100%); - /* FF3.6-15 */ - background: -webkit-linear-gradient(top, rgba(0, 0, 0, 0.5) 0%, #000000 25%, #000000 100%); - /* Chrome10-25,Safari5.1-6 */ - background: linear-gradient(to bottom, rgba(0, 0, 0, 0.5) 0%, #000000 25%, #000000 100%); - /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */ - color: #bbbbbb; - box-sizing: content-box; - line-height: 1; - position: absolute; - bottom: -35px; - left: 0; - transition: bottom 0.15s linear; -} -.asciinema-player .control-bar * { - box-sizing: inherit; - font-size: 0; -} -.asciinema-player .control-bar svg.icon path { - fill: #bbbbbb; -} -.asciinema-player .control-bar .playback-button { - display: block; - float: left; - cursor: pointer; - height: 12px; - width: 12px; - padding: 10px; -} -.asciinema-player .control-bar .playback-button svg { - height: 12px; - width: 12px; -} -.asciinema-player .control-bar .timer { - display: block; - float: left; - width: 50px; - height: 100%; - text-align: center; - font-family: Helvetica, Arial, sans-serif; - font-size: 11px; - font-weight: bold; - line-height: 32px; - cursor: default; -} -.asciinema-player .control-bar .timer span { - display: inline-block; - font-size: inherit; -} -.asciinema-player .control-bar .timer .time-remaining { - display: none; -} -.asciinema-player .control-bar .timer:hover .time-elapsed { - display: none; -} -.asciinema-player .control-bar .timer:hover .time-remaining { - display: inline; -} -.asciinema-player .control-bar .progressbar { - display: block; - overflow: hidden; - height: 100%; - padding: 0 10px; -} -.asciinema-player .control-bar .progressbar .bar { - display: block; - cursor: pointer; - height: 100%; - padding-top: 15px; - font-size: 0; -} -.asciinema-player .control-bar .progressbar .bar .gutter { - display: block; - height: 3px; - background-color: #333; -} -.asciinema-player .control-bar .progressbar .bar .gutter span { - display: inline-block; - height: 100%; - background-color: #bbbbbb; - border-radius: 3px; -} -.asciinema-player .control-bar.live .progressbar .bar { - cursor: default; -} -.asciinema-player .control-bar .fullscreen-button { - display: block; - float: right; - width: 14px; - height: 14px; - padding: 9px; - cursor: pointer; -} -.asciinema-player .control-bar .fullscreen-button svg { - width: 14px; - height: 14px; -} -.asciinema-player .control-bar .fullscreen-button svg:first-child { - display: inline; -} -.asciinema-player .control-bar .fullscreen-button svg:last-child { - display: none; -} -.asciinema-player-wrapper.hud .control-bar { - bottom: 0px; -} -.asciinema-player-wrapper:fullscreen .fullscreen-button svg:first-child { - display: none; -} -.asciinema-player-wrapper:fullscreen .fullscreen-button svg:last-child { - display: inline; -} -.asciinema-player-wrapper:-webkit-full-screen .fullscreen-button svg:first-child { - display: none; -} -.asciinema-player-wrapper:-webkit-full-screen .fullscreen-button svg:last-child { - display: inline; -} -.asciinema-player-wrapper:-moz-full-screen .fullscreen-button svg:first-child { - display: none; -} -.asciinema-player-wrapper:-moz-full-screen .fullscreen-button svg:last-child { - display: inline; -} -.asciinema-player-wrapper:-ms-fullscreen .fullscreen-button svg:first-child { - display: none; -} -.asciinema-player-wrapper:-ms-fullscreen .fullscreen-button svg:last-child { - display: inline; -} -.asciinema-player .loading { - z-index: 10; - background-repeat: no-repeat; - background-position: center; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 32px; - background-color: rgba(0, 0, 0, 0.5); -} -.asciinema-player .start-prompt { - z-index: 10; - background-repeat: no-repeat; - background-position: center; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 32px; - z-index: 20; - cursor: pointer; -} -.asciinema-player .start-prompt .play-button { - font-size: 0px; -} -.asciinema-player .start-prompt .play-button { - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; - text-align: center; - color: white; - display: table; - width: 100%; - height: 100%; -} -.asciinema-player .start-prompt .play-button div { - vertical-align: middle; - display: table-cell; -} -.asciinema-player .start-prompt .play-button div span { - width: 96px; - height: 96px; - display: inline-block; -} -@-webkit-keyframes expand { - 0% { - -webkit-transform: scale(0); - } - 50% { - -webkit-transform: scale(1); - } - 100% { - z-index: 1; - } -} -@-moz-keyframes expand { - 0% { - -moz-transform: scale(0); - } - 50% { - -moz-transform: scale(1); - } - 100% { - z-index: 1; - } -} -@-o-keyframes expand { - 0% { - -o-transform: scale(0); - } - 50% { - -o-transform: scale(1); - } - 100% { - z-index: 1; - } -} -@keyframes expand { - 0% { - transform: scale(0); - } - 50% { - transform: scale(1); - } - 100% { - z-index: 1; - } -} -.loader { - position: absolute; - left: 50%; - top: 50%; - margin: -20px 0 0 -20px; - background-color: white; - border-radius: 50%; - box-shadow: 0 0 0 6.66667px #141414; - width: 40px; - height: 40px; -} -.loader:before, -.loader:after { - content: ""; - position: absolute; - left: 50%; - top: 50%; - display: block; - margin: -21px 0 0 -21px; - border-radius: 50%; - z-index: 2; - width: 42px; - height: 42px; -} -.loader:before { - background-color: #141414; - -webkit-animation: expand 1.6s linear infinite both; - -moz-animation: expand 1.6s linear infinite both; - animation: expand 1.6s linear infinite both; -} -.loader:after { - background-color: white; - -webkit-animation: expand 1.6s linear 0.8s infinite both; - -moz-animation: expand 1.6s linear 0.8s infinite both; - animation: expand 1.6s linear 0.8s infinite both; -} -.asciinema-terminal .fg-16 { - color: #000000; -} -.asciinema-terminal .bg-16 { - background-color: #000000; -} -.asciinema-terminal .fg-17 { - color: #00005f; -} -.asciinema-terminal .bg-17 { - background-color: #00005f; -} -.asciinema-terminal .fg-18 { - color: #000087; -} -.asciinema-terminal .bg-18 { - background-color: #000087; -} -.asciinema-terminal .fg-19 { - color: #0000af; -} -.asciinema-terminal .bg-19 { - background-color: #0000af; -} -.asciinema-terminal .fg-20 { - color: #0000d7; -} -.asciinema-terminal .bg-20 { - background-color: #0000d7; -} -.asciinema-terminal .fg-21 { - color: #0000ff; -} -.asciinema-terminal .bg-21 { - background-color: #0000ff; -} -.asciinema-terminal .fg-22 { - color: #005f00; -} -.asciinema-terminal .bg-22 { - background-color: #005f00; -} -.asciinema-terminal .fg-23 { - color: #005f5f; -} -.asciinema-terminal .bg-23 { - background-color: #005f5f; -} -.asciinema-terminal .fg-24 { - color: #005f87; -} -.asciinema-terminal .bg-24 { - background-color: #005f87; -} -.asciinema-terminal .fg-25 { - color: #005faf; -} -.asciinema-terminal .bg-25 { - background-color: #005faf; -} -.asciinema-terminal .fg-26 { - color: #005fd7; -} -.asciinema-terminal .bg-26 { - background-color: #005fd7; -} -.asciinema-terminal .fg-27 { - color: #005fff; -} -.asciinema-terminal .bg-27 { - background-color: #005fff; -} -.asciinema-terminal .fg-28 { - color: #008700; -} -.asciinema-terminal .bg-28 { - background-color: #008700; -} -.asciinema-terminal .fg-29 { - color: #00875f; -} -.asciinema-terminal .bg-29 { - background-color: #00875f; -} -.asciinema-terminal .fg-30 { - color: #008787; -} -.asciinema-terminal .bg-30 { - background-color: #008787; -} -.asciinema-terminal .fg-31 { - color: #0087af; -} -.asciinema-terminal .bg-31 { - background-color: #0087af; -} -.asciinema-terminal .fg-32 { - color: #0087d7; -} -.asciinema-terminal .bg-32 { - background-color: #0087d7; -} -.asciinema-terminal .fg-33 { - color: #0087ff; -} -.asciinema-terminal .bg-33 { - background-color: #0087ff; -} -.asciinema-terminal .fg-34 { - color: #00af00; -} -.asciinema-terminal .bg-34 { - background-color: #00af00; -} -.asciinema-terminal .fg-35 { - color: #00af5f; -} -.asciinema-terminal .bg-35 { - background-color: #00af5f; -} -.asciinema-terminal .fg-36 { - color: #00af87; -} -.asciinema-terminal .bg-36 { - background-color: #00af87; -} -.asciinema-terminal .fg-37 { - color: #00afaf; -} -.asciinema-terminal .bg-37 { - background-color: #00afaf; -} -.asciinema-terminal .fg-38 { - color: #00afd7; -} -.asciinema-terminal .bg-38 { - background-color: #00afd7; -} -.asciinema-terminal .fg-39 { - color: #00afff; -} -.asciinema-terminal .bg-39 { - background-color: #00afff; -} -.asciinema-terminal .fg-40 { - color: #00d700; -} -.asciinema-terminal .bg-40 { - background-color: #00d700; -} -.asciinema-terminal .fg-41 { - color: #00d75f; -} -.asciinema-terminal .bg-41 { - background-color: #00d75f; -} -.asciinema-terminal .fg-42 { - color: #00d787; -} -.asciinema-terminal .bg-42 { - background-color: #00d787; -} -.asciinema-terminal .fg-43 { - color: #00d7af; -} -.asciinema-terminal .bg-43 { - background-color: #00d7af; -} -.asciinema-terminal .fg-44 { - color: #00d7d7; -} -.asciinema-terminal .bg-44 { - background-color: #00d7d7; -} -.asciinema-terminal .fg-45 { - color: #00d7ff; -} -.asciinema-terminal .bg-45 { - background-color: #00d7ff; -} -.asciinema-terminal .fg-46 { - color: #00ff00; -} -.asciinema-terminal .bg-46 { - background-color: #00ff00; -} -.asciinema-terminal .fg-47 { - color: #00ff5f; -} -.asciinema-terminal .bg-47 { - background-color: #00ff5f; -} -.asciinema-terminal .fg-48 { - color: #00ff87; -} -.asciinema-terminal .bg-48 { - background-color: #00ff87; -} -.asciinema-terminal .fg-49 { - color: #00ffaf; -} -.asciinema-terminal .bg-49 { - background-color: #00ffaf; -} -.asciinema-terminal .fg-50 { - color: #00ffd7; -} -.asciinema-terminal .bg-50 { - background-color: #00ffd7; -} -.asciinema-terminal .fg-51 { - color: #00ffff; -} -.asciinema-terminal .bg-51 { - background-color: #00ffff; -} -.asciinema-terminal .fg-52 { - color: #5f0000; -} -.asciinema-terminal .bg-52 { - background-color: #5f0000; -} -.asciinema-terminal .fg-53 { - color: #5f005f; -} -.asciinema-terminal .bg-53 { - background-color: #5f005f; -} -.asciinema-terminal .fg-54 { - color: #5f0087; -} -.asciinema-terminal .bg-54 { - background-color: #5f0087; -} -.asciinema-terminal .fg-55 { - color: #5f00af; -} -.asciinema-terminal .bg-55 { - background-color: #5f00af; -} -.asciinema-terminal .fg-56 { - color: #5f00d7; -} -.asciinema-terminal .bg-56 { - background-color: #5f00d7; -} -.asciinema-terminal .fg-57 { - color: #5f00ff; -} -.asciinema-terminal .bg-57 { - background-color: #5f00ff; -} -.asciinema-terminal .fg-58 { - color: #5f5f00; -} -.asciinema-terminal .bg-58 { - background-color: #5f5f00; -} -.asciinema-terminal .fg-59 { - color: #5f5f5f; -} -.asciinema-terminal .bg-59 { - background-color: #5f5f5f; -} -.asciinema-terminal .fg-60 { - color: #5f5f87; -} -.asciinema-terminal .bg-60 { - background-color: #5f5f87; -} -.asciinema-terminal .fg-61 { - color: #5f5faf; -} -.asciinema-terminal .bg-61 { - background-color: #5f5faf; -} -.asciinema-terminal .fg-62 { - color: #5f5fd7; -} -.asciinema-terminal .bg-62 { - background-color: #5f5fd7; -} -.asciinema-terminal .fg-63 { - color: #5f5fff; -} -.asciinema-terminal .bg-63 { - background-color: #5f5fff; -} -.asciinema-terminal .fg-64 { - color: #5f8700; -} -.asciinema-terminal .bg-64 { - background-color: #5f8700; -} -.asciinema-terminal .fg-65 { - color: #5f875f; -} -.asciinema-terminal .bg-65 { - background-color: #5f875f; -} -.asciinema-terminal .fg-66 { - color: #5f8787; -} -.asciinema-terminal .bg-66 { - background-color: #5f8787; -} -.asciinema-terminal .fg-67 { - color: #5f87af; -} -.asciinema-terminal .bg-67 { - background-color: #5f87af; -} -.asciinema-terminal .fg-68 { - color: #5f87d7; -} -.asciinema-terminal .bg-68 { - background-color: #5f87d7; -} -.asciinema-terminal .fg-69 { - color: #5f87ff; -} -.asciinema-terminal .bg-69 { - background-color: #5f87ff; -} -.asciinema-terminal .fg-70 { - color: #5faf00; -} -.asciinema-terminal .bg-70 { - background-color: #5faf00; -} -.asciinema-terminal .fg-71 { - color: #5faf5f; -} -.asciinema-terminal .bg-71 { - background-color: #5faf5f; -} -.asciinema-terminal .fg-72 { - color: #5faf87; -} -.asciinema-terminal .bg-72 { - background-color: #5faf87; -} -.asciinema-terminal .fg-73 { - color: #5fafaf; -} -.asciinema-terminal .bg-73 { - background-color: #5fafaf; -} -.asciinema-terminal .fg-74 { - color: #5fafd7; -} -.asciinema-terminal .bg-74 { - background-color: #5fafd7; -} -.asciinema-terminal .fg-75 { - color: #5fafff; -} -.asciinema-terminal .bg-75 { - background-color: #5fafff; -} -.asciinema-terminal .fg-76 { - color: #5fd700; -} -.asciinema-terminal .bg-76 { - background-color: #5fd700; -} -.asciinema-terminal .fg-77 { - color: #5fd75f; -} -.asciinema-terminal .bg-77 { - background-color: #5fd75f; -} -.asciinema-terminal .fg-78 { - color: #5fd787; -} -.asciinema-terminal .bg-78 { - background-color: #5fd787; -} -.asciinema-terminal .fg-79 { - color: #5fd7af; -} -.asciinema-terminal .bg-79 { - background-color: #5fd7af; -} -.asciinema-terminal .fg-80 { - color: #5fd7d7; -} -.asciinema-terminal .bg-80 { - background-color: #5fd7d7; -} -.asciinema-terminal .fg-81 { - color: #5fd7ff; -} -.asciinema-terminal .bg-81 { - background-color: #5fd7ff; -} -.asciinema-terminal .fg-82 { - color: #5fff00; -} -.asciinema-terminal .bg-82 { - background-color: #5fff00; -} -.asciinema-terminal .fg-83 { - color: #5fff5f; -} -.asciinema-terminal .bg-83 { - background-color: #5fff5f; -} -.asciinema-terminal .fg-84 { - color: #5fff87; -} -.asciinema-terminal .bg-84 { - background-color: #5fff87; -} -.asciinema-terminal .fg-85 { - color: #5fffaf; -} -.asciinema-terminal .bg-85 { - background-color: #5fffaf; -} -.asciinema-terminal .fg-86 { - color: #5fffd7; -} -.asciinema-terminal .bg-86 { - background-color: #5fffd7; -} -.asciinema-terminal .fg-87 { - color: #5fffff; -} -.asciinema-terminal .bg-87 { - background-color: #5fffff; -} -.asciinema-terminal .fg-88 { - color: #870000; -} -.asciinema-terminal .bg-88 { - background-color: #870000; -} -.asciinema-terminal .fg-89 { - color: #87005f; -} -.asciinema-terminal .bg-89 { - background-color: #87005f; -} -.asciinema-terminal .fg-90 { - color: #870087; -} -.asciinema-terminal .bg-90 { - background-color: #870087; -} -.asciinema-terminal .fg-91 { - color: #8700af; -} -.asciinema-terminal .bg-91 { - background-color: #8700af; -} -.asciinema-terminal .fg-92 { - color: #8700d7; -} -.asciinema-terminal .bg-92 { - background-color: #8700d7; -} -.asciinema-terminal .fg-93 { - color: #8700ff; -} -.asciinema-terminal .bg-93 { - background-color: #8700ff; -} -.asciinema-terminal .fg-94 { - color: #875f00; -} -.asciinema-terminal .bg-94 { - background-color: #875f00; -} -.asciinema-terminal .fg-95 { - color: #875f5f; -} -.asciinema-terminal .bg-95 { - background-color: #875f5f; -} -.asciinema-terminal .fg-96 { - color: #875f87; -} -.asciinema-terminal .bg-96 { - background-color: #875f87; -} -.asciinema-terminal .fg-97 { - color: #875faf; -} -.asciinema-terminal .bg-97 { - background-color: #875faf; -} -.asciinema-terminal .fg-98 { - color: #875fd7; -} -.asciinema-terminal .bg-98 { - background-color: #875fd7; -} -.asciinema-terminal .fg-99 { - color: #875fff; -} -.asciinema-terminal .bg-99 { - background-color: #875fff; -} -.asciinema-terminal .fg-100 { - color: #878700; -} -.asciinema-terminal .bg-100 { - background-color: #878700; -} -.asciinema-terminal .fg-101 { - color: #87875f; -} -.asciinema-terminal .bg-101 { - background-color: #87875f; -} -.asciinema-terminal .fg-102 { - color: #878787; -} -.asciinema-terminal .bg-102 { - background-color: #878787; -} -.asciinema-terminal .fg-103 { - color: #8787af; -} -.asciinema-terminal .bg-103 { - background-color: #8787af; -} -.asciinema-terminal .fg-104 { - color: #8787d7; -} -.asciinema-terminal .bg-104 { - background-color: #8787d7; -} -.asciinema-terminal .fg-105 { - color: #8787ff; -} -.asciinema-terminal .bg-105 { - background-color: #8787ff; -} -.asciinema-terminal .fg-106 { - color: #87af00; -} -.asciinema-terminal .bg-106 { - background-color: #87af00; -} -.asciinema-terminal .fg-107 { - color: #87af5f; -} -.asciinema-terminal .bg-107 { - background-color: #87af5f; -} -.asciinema-terminal .fg-108 { - color: #87af87; -} -.asciinema-terminal .bg-108 { - background-color: #87af87; -} -.asciinema-terminal .fg-109 { - color: #87afaf; -} -.asciinema-terminal .bg-109 { - background-color: #87afaf; -} -.asciinema-terminal .fg-110 { - color: #87afd7; -} -.asciinema-terminal .bg-110 { - background-color: #87afd7; -} -.asciinema-terminal .fg-111 { - color: #87afff; -} -.asciinema-terminal .bg-111 { - background-color: #87afff; -} -.asciinema-terminal .fg-112 { - color: #87d700; -} -.asciinema-terminal .bg-112 { - background-color: #87d700; -} -.asciinema-terminal .fg-113 { - color: #87d75f; -} -.asciinema-terminal .bg-113 { - background-color: #87d75f; -} -.asciinema-terminal .fg-114 { - color: #87d787; -} -.asciinema-terminal .bg-114 { - background-color: #87d787; -} -.asciinema-terminal .fg-115 { - color: #87d7af; -} -.asciinema-terminal .bg-115 { - background-color: #87d7af; -} -.asciinema-terminal .fg-116 { - color: #87d7d7; -} -.asciinema-terminal .bg-116 { - background-color: #87d7d7; -} -.asciinema-terminal .fg-117 { - color: #87d7ff; -} -.asciinema-terminal .bg-117 { - background-color: #87d7ff; -} -.asciinema-terminal .fg-118 { - color: #87ff00; -} -.asciinema-terminal .bg-118 { - background-color: #87ff00; -} -.asciinema-terminal .fg-119 { - color: #87ff5f; -} -.asciinema-terminal .bg-119 { - background-color: #87ff5f; -} -.asciinema-terminal .fg-120 { - color: #87ff87; -} -.asciinema-terminal .bg-120 { - background-color: #87ff87; -} -.asciinema-terminal .fg-121 { - color: #87ffaf; -} -.asciinema-terminal .bg-121 { - background-color: #87ffaf; -} -.asciinema-terminal .fg-122 { - color: #87ffd7; -} -.asciinema-terminal .bg-122 { - background-color: #87ffd7; -} -.asciinema-terminal .fg-123 { - color: #87ffff; -} -.asciinema-terminal .bg-123 { - background-color: #87ffff; -} -.asciinema-terminal .fg-124 { - color: #af0000; -} -.asciinema-terminal .bg-124 { - background-color: #af0000; -} -.asciinema-terminal .fg-125 { - color: #af005f; -} -.asciinema-terminal .bg-125 { - background-color: #af005f; -} -.asciinema-terminal .fg-126 { - color: #af0087; -} -.asciinema-terminal .bg-126 { - background-color: #af0087; -} -.asciinema-terminal .fg-127 { - color: #af00af; -} -.asciinema-terminal .bg-127 { - background-color: #af00af; -} -.asciinema-terminal .fg-128 { - color: #af00d7; -} -.asciinema-terminal .bg-128 { - background-color: #af00d7; -} -.asciinema-terminal .fg-129 { - color: #af00ff; -} -.asciinema-terminal .bg-129 { - background-color: #af00ff; -} -.asciinema-terminal .fg-130 { - color: #af5f00; -} -.asciinema-terminal .bg-130 { - background-color: #af5f00; -} -.asciinema-terminal .fg-131 { - color: #af5f5f; -} -.asciinema-terminal .bg-131 { - background-color: #af5f5f; -} -.asciinema-terminal .fg-132 { - color: #af5f87; -} -.asciinema-terminal .bg-132 { - background-color: #af5f87; -} -.asciinema-terminal .fg-133 { - color: #af5faf; -} -.asciinema-terminal .bg-133 { - background-color: #af5faf; -} -.asciinema-terminal .fg-134 { - color: #af5fd7; -} -.asciinema-terminal .bg-134 { - background-color: #af5fd7; -} -.asciinema-terminal .fg-135 { - color: #af5fff; -} -.asciinema-terminal .bg-135 { - background-color: #af5fff; -} -.asciinema-terminal .fg-136 { - color: #af8700; -} -.asciinema-terminal .bg-136 { - background-color: #af8700; -} -.asciinema-terminal .fg-137 { - color: #af875f; -} -.asciinema-terminal .bg-137 { - background-color: #af875f; -} -.asciinema-terminal .fg-138 { - color: #af8787; -} -.asciinema-terminal .bg-138 { - background-color: #af8787; -} -.asciinema-terminal .fg-139 { - color: #af87af; -} -.asciinema-terminal .bg-139 { - background-color: #af87af; -} -.asciinema-terminal .fg-140 { - color: #af87d7; -} -.asciinema-terminal .bg-140 { - background-color: #af87d7; -} -.asciinema-terminal .fg-141 { - color: #af87ff; -} -.asciinema-terminal .bg-141 { - background-color: #af87ff; -} -.asciinema-terminal .fg-142 { - color: #afaf00; -} -.asciinema-terminal .bg-142 { - background-color: #afaf00; -} -.asciinema-terminal .fg-143 { - color: #afaf5f; -} -.asciinema-terminal .bg-143 { - background-color: #afaf5f; -} -.asciinema-terminal .fg-144 { - color: #afaf87; -} -.asciinema-terminal .bg-144 { - background-color: #afaf87; -} -.asciinema-terminal .fg-145 { - color: #afafaf; -} -.asciinema-terminal .bg-145 { - background-color: #afafaf; -} -.asciinema-terminal .fg-146 { - color: #afafd7; -} -.asciinema-terminal .bg-146 { - background-color: #afafd7; -} -.asciinema-terminal .fg-147 { - color: #afafff; -} -.asciinema-terminal .bg-147 { - background-color: #afafff; -} -.asciinema-terminal .fg-148 { - color: #afd700; -} -.asciinema-terminal .bg-148 { - background-color: #afd700; -} -.asciinema-terminal .fg-149 { - color: #afd75f; -} -.asciinema-terminal .bg-149 { - background-color: #afd75f; -} -.asciinema-terminal .fg-150 { - color: #afd787; -} -.asciinema-terminal .bg-150 { - background-color: #afd787; -} -.asciinema-terminal .fg-151 { - color: #afd7af; -} -.asciinema-terminal .bg-151 { - background-color: #afd7af; -} -.asciinema-terminal .fg-152 { - color: #afd7d7; -} -.asciinema-terminal .bg-152 { - background-color: #afd7d7; -} -.asciinema-terminal .fg-153 { - color: #afd7ff; -} -.asciinema-terminal .bg-153 { - background-color: #afd7ff; -} -.asciinema-terminal .fg-154 { - color: #afff00; -} -.asciinema-terminal .bg-154 { - background-color: #afff00; -} -.asciinema-terminal .fg-155 { - color: #afff5f; -} -.asciinema-terminal .bg-155 { - background-color: #afff5f; -} -.asciinema-terminal .fg-156 { - color: #afff87; -} -.asciinema-terminal .bg-156 { - background-color: #afff87; -} -.asciinema-terminal .fg-157 { - color: #afffaf; -} -.asciinema-terminal .bg-157 { - background-color: #afffaf; -} -.asciinema-terminal .fg-158 { - color: #afffd7; -} -.asciinema-terminal .bg-158 { - background-color: #afffd7; -} -.asciinema-terminal .fg-159 { - color: #afffff; -} -.asciinema-terminal .bg-159 { - background-color: #afffff; -} -.asciinema-terminal .fg-160 { - color: #d70000; -} -.asciinema-terminal .bg-160 { - background-color: #d70000; -} -.asciinema-terminal .fg-161 { - color: #d7005f; -} -.asciinema-terminal .bg-161 { - background-color: #d7005f; -} -.asciinema-terminal .fg-162 { - color: #d70087; -} -.asciinema-terminal .bg-162 { - background-color: #d70087; -} -.asciinema-terminal .fg-163 { - color: #d700af; -} -.asciinema-terminal .bg-163 { - background-color: #d700af; -} -.asciinema-terminal .fg-164 { - color: #d700d7; -} -.asciinema-terminal .bg-164 { - background-color: #d700d7; -} -.asciinema-terminal .fg-165 { - color: #d700ff; -} -.asciinema-terminal .bg-165 { - background-color: #d700ff; -} -.asciinema-terminal .fg-166 { - color: #d75f00; -} -.asciinema-terminal .bg-166 { - background-color: #d75f00; -} -.asciinema-terminal .fg-167 { - color: #d75f5f; -} -.asciinema-terminal .bg-167 { - background-color: #d75f5f; -} -.asciinema-terminal .fg-168 { - color: #d75f87; -} -.asciinema-terminal .bg-168 { - background-color: #d75f87; -} -.asciinema-terminal .fg-169 { - color: #d75faf; -} -.asciinema-terminal .bg-169 { - background-color: #d75faf; -} -.asciinema-terminal .fg-170 { - color: #d75fd7; -} -.asciinema-terminal .bg-170 { - background-color: #d75fd7; -} -.asciinema-terminal .fg-171 { - color: #d75fff; -} -.asciinema-terminal .bg-171 { - background-color: #d75fff; -} -.asciinema-terminal .fg-172 { - color: #d78700; -} -.asciinema-terminal .bg-172 { - background-color: #d78700; -} -.asciinema-terminal .fg-173 { - color: #d7875f; -} -.asciinema-terminal .bg-173 { - background-color: #d7875f; -} -.asciinema-terminal .fg-174 { - color: #d78787; -} -.asciinema-terminal .bg-174 { - background-color: #d78787; -} -.asciinema-terminal .fg-175 { - color: #d787af; -} -.asciinema-terminal .bg-175 { - background-color: #d787af; -} -.asciinema-terminal .fg-176 { - color: #d787d7; -} -.asciinema-terminal .bg-176 { - background-color: #d787d7; -} -.asciinema-terminal .fg-177 { - color: #d787ff; -} -.asciinema-terminal .bg-177 { - background-color: #d787ff; -} -.asciinema-terminal .fg-178 { - color: #d7af00; -} -.asciinema-terminal .bg-178 { - background-color: #d7af00; -} -.asciinema-terminal .fg-179 { - color: #d7af5f; -} -.asciinema-terminal .bg-179 { - background-color: #d7af5f; -} -.asciinema-terminal .fg-180 { - color: #d7af87; -} -.asciinema-terminal .bg-180 { - background-color: #d7af87; -} -.asciinema-terminal .fg-181 { - color: #d7afaf; -} -.asciinema-terminal .bg-181 { - background-color: #d7afaf; -} -.asciinema-terminal .fg-182 { - color: #d7afd7; -} -.asciinema-terminal .bg-182 { - background-color: #d7afd7; -} -.asciinema-terminal .fg-183 { - color: #d7afff; -} -.asciinema-terminal .bg-183 { - background-color: #d7afff; -} -.asciinema-terminal .fg-184 { - color: #d7d700; -} -.asciinema-terminal .bg-184 { - background-color: #d7d700; -} -.asciinema-terminal .fg-185 { - color: #d7d75f; -} -.asciinema-terminal .bg-185 { - background-color: #d7d75f; -} -.asciinema-terminal .fg-186 { - color: #d7d787; -} -.asciinema-terminal .bg-186 { - background-color: #d7d787; -} -.asciinema-terminal .fg-187 { - color: #d7d7af; -} -.asciinema-terminal .bg-187 { - background-color: #d7d7af; -} -.asciinema-terminal .fg-188 { - color: #d7d7d7; -} -.asciinema-terminal .bg-188 { - background-color: #d7d7d7; -} -.asciinema-terminal .fg-189 { - color: #d7d7ff; -} -.asciinema-terminal .bg-189 { - background-color: #d7d7ff; -} -.asciinema-terminal .fg-190 { - color: #d7ff00; -} -.asciinema-terminal .bg-190 { - background-color: #d7ff00; -} -.asciinema-terminal .fg-191 { - color: #d7ff5f; -} -.asciinema-terminal .bg-191 { - background-color: #d7ff5f; -} -.asciinema-terminal .fg-192 { - color: #d7ff87; -} -.asciinema-terminal .bg-192 { - background-color: #d7ff87; -} -.asciinema-terminal .fg-193 { - color: #d7ffaf; -} -.asciinema-terminal .bg-193 { - background-color: #d7ffaf; -} -.asciinema-terminal .fg-194 { - color: #d7ffd7; -} -.asciinema-terminal .bg-194 { - background-color: #d7ffd7; -} -.asciinema-terminal .fg-195 { - color: #d7ffff; -} -.asciinema-terminal .bg-195 { - background-color: #d7ffff; -} -.asciinema-terminal .fg-196 { - color: #ff0000; -} -.asciinema-terminal .bg-196 { - background-color: #ff0000; -} -.asciinema-terminal .fg-197 { - color: #ff005f; -} -.asciinema-terminal .bg-197 { - background-color: #ff005f; -} -.asciinema-terminal .fg-198 { - color: #ff0087; -} -.asciinema-terminal .bg-198 { - background-color: #ff0087; -} -.asciinema-terminal .fg-199 { - color: #ff00af; -} -.asciinema-terminal .bg-199 { - background-color: #ff00af; -} -.asciinema-terminal .fg-200 { - color: #ff00d7; -} -.asciinema-terminal .bg-200 { - background-color: #ff00d7; -} -.asciinema-terminal .fg-201 { - color: #ff00ff; -} -.asciinema-terminal .bg-201 { - background-color: #ff00ff; -} -.asciinema-terminal .fg-202 { - color: #ff5f00; -} -.asciinema-terminal .bg-202 { - background-color: #ff5f00; -} -.asciinema-terminal .fg-203 { - color: #ff5f5f; -} -.asciinema-terminal .bg-203 { - background-color: #ff5f5f; -} -.asciinema-terminal .fg-204 { - color: #ff5f87; -} -.asciinema-terminal .bg-204 { - background-color: #ff5f87; -} -.asciinema-terminal .fg-205 { - color: #ff5faf; -} -.asciinema-terminal .bg-205 { - background-color: #ff5faf; -} -.asciinema-terminal .fg-206 { - color: #ff5fd7; -} -.asciinema-terminal .bg-206 { - background-color: #ff5fd7; -} -.asciinema-terminal .fg-207 { - color: #ff5fff; -} -.asciinema-terminal .bg-207 { - background-color: #ff5fff; -} -.asciinema-terminal .fg-208 { - color: #ff8700; -} -.asciinema-terminal .bg-208 { - background-color: #ff8700; -} -.asciinema-terminal .fg-209 { - color: #ff875f; -} -.asciinema-terminal .bg-209 { - background-color: #ff875f; -} -.asciinema-terminal .fg-210 { - color: #ff8787; -} -.asciinema-terminal .bg-210 { - background-color: #ff8787; -} -.asciinema-terminal .fg-211 { - color: #ff87af; -} -.asciinema-terminal .bg-211 { - background-color: #ff87af; -} -.asciinema-terminal .fg-212 { - color: #ff87d7; -} -.asciinema-terminal .bg-212 { - background-color: #ff87d7; -} -.asciinema-terminal .fg-213 { - color: #ff87ff; -} -.asciinema-terminal .bg-213 { - background-color: #ff87ff; -} -.asciinema-terminal .fg-214 { - color: #ffaf00; -} -.asciinema-terminal .bg-214 { - background-color: #ffaf00; -} -.asciinema-terminal .fg-215 { - color: #ffaf5f; -} -.asciinema-terminal .bg-215 { - background-color: #ffaf5f; -} -.asciinema-terminal .fg-216 { - color: #ffaf87; -} -.asciinema-terminal .bg-216 { - background-color: #ffaf87; -} -.asciinema-terminal .fg-217 { - color: #ffafaf; -} -.asciinema-terminal .bg-217 { - background-color: #ffafaf; -} -.asciinema-terminal .fg-218 { - color: #ffafd7; -} -.asciinema-terminal .bg-218 { - background-color: #ffafd7; -} -.asciinema-terminal .fg-219 { - color: #ffafff; -} -.asciinema-terminal .bg-219 { - background-color: #ffafff; -} -.asciinema-terminal .fg-220 { - color: #ffd700; -} -.asciinema-terminal .bg-220 { - background-color: #ffd700; -} -.asciinema-terminal .fg-221 { - color: #ffd75f; -} -.asciinema-terminal .bg-221 { - background-color: #ffd75f; -} -.asciinema-terminal .fg-222 { - color: #ffd787; -} -.asciinema-terminal .bg-222 { - background-color: #ffd787; -} -.asciinema-terminal .fg-223 { - color: #ffd7af; -} -.asciinema-terminal .bg-223 { - background-color: #ffd7af; -} -.asciinema-terminal .fg-224 { - color: #ffd7d7; -} -.asciinema-terminal .bg-224 { - background-color: #ffd7d7; -} -.asciinema-terminal .fg-225 { - color: #ffd7ff; -} -.asciinema-terminal .bg-225 { - background-color: #ffd7ff; -} -.asciinema-terminal .fg-226 { - color: #ffff00; -} -.asciinema-terminal .bg-226 { - background-color: #ffff00; -} -.asciinema-terminal .fg-227 { - color: #ffff5f; -} -.asciinema-terminal .bg-227 { - background-color: #ffff5f; -} -.asciinema-terminal .fg-228 { - color: #ffff87; -} -.asciinema-terminal .bg-228 { - background-color: #ffff87; -} -.asciinema-terminal .fg-229 { - color: #ffffaf; -} -.asciinema-terminal .bg-229 { - background-color: #ffffaf; -} -.asciinema-terminal .fg-230 { - color: #ffffd7; -} -.asciinema-terminal .bg-230 { - background-color: #ffffd7; -} -.asciinema-terminal .fg-231 { - color: #ffffff; -} -.asciinema-terminal .bg-231 { - background-color: #ffffff; -} -.asciinema-terminal .fg-232 { - color: #080808; -} -.asciinema-terminal .bg-232 { - background-color: #080808; -} -.asciinema-terminal .fg-233 { - color: #121212; -} -.asciinema-terminal .bg-233 { - background-color: #121212; -} -.asciinema-terminal .fg-234 { - color: #1c1c1c; -} -.asciinema-terminal .bg-234 { - background-color: #1c1c1c; -} -.asciinema-terminal .fg-235 { - color: #262626; -} -.asciinema-terminal .bg-235 { - background-color: #262626; -} -.asciinema-terminal .fg-236 { - color: #303030; -} -.asciinema-terminal .bg-236 { - background-color: #303030; -} -.asciinema-terminal .fg-237 { - color: #3a3a3a; -} -.asciinema-terminal .bg-237 { - background-color: #3a3a3a; -} -.asciinema-terminal .fg-238 { - color: #444444; -} -.asciinema-terminal .bg-238 { - background-color: #444444; -} -.asciinema-terminal .fg-239 { - color: #4e4e4e; -} -.asciinema-terminal .bg-239 { - background-color: #4e4e4e; -} -.asciinema-terminal .fg-240 { - color: #585858; -} -.asciinema-terminal .bg-240 { - background-color: #585858; -} -.asciinema-terminal .fg-241 { - color: #626262; -} -.asciinema-terminal .bg-241 { - background-color: #626262; -} -.asciinema-terminal .fg-242 { - color: #6c6c6c; -} -.asciinema-terminal .bg-242 { - background-color: #6c6c6c; -} -.asciinema-terminal .fg-243 { - color: #767676; -} -.asciinema-terminal .bg-243 { - background-color: #767676; -} -.asciinema-terminal .fg-244 { - color: #808080; -} -.asciinema-terminal .bg-244 { - background-color: #808080; -} -.asciinema-terminal .fg-245 { - color: #8a8a8a; -} -.asciinema-terminal .bg-245 { - background-color: #8a8a8a; -} -.asciinema-terminal .fg-246 { - color: #949494; -} -.asciinema-terminal .bg-246 { - background-color: #949494; -} -.asciinema-terminal .fg-247 { - color: #9e9e9e; -} -.asciinema-terminal .bg-247 { - background-color: #9e9e9e; -} -.asciinema-terminal .fg-248 { - color: #a8a8a8; -} -.asciinema-terminal .bg-248 { - background-color: #a8a8a8; -} -.asciinema-terminal .fg-249 { - color: #b2b2b2; -} -.asciinema-terminal .bg-249 { - background-color: #b2b2b2; -} -.asciinema-terminal .fg-250 { - color: #bcbcbc; -} -.asciinema-terminal .bg-250 { - background-color: #bcbcbc; -} -.asciinema-terminal .fg-251 { - color: #c6c6c6; -} -.asciinema-terminal .bg-251 { - background-color: #c6c6c6; -} -.asciinema-terminal .fg-252 { - color: #d0d0d0; -} -.asciinema-terminal .bg-252 { - background-color: #d0d0d0; -} -.asciinema-terminal .fg-253 { - color: #dadada; -} -.asciinema-terminal .bg-253 { - background-color: #dadada; -} -.asciinema-terminal .fg-254 { - color: #e4e4e4; -} -.asciinema-terminal .bg-254 { - background-color: #e4e4e4; -} -.asciinema-terminal .fg-255 { - color: #eeeeee; -} -.asciinema-terminal .bg-255 { - background-color: #eeeeee; -} -.asciinema-theme-asciinema .asciinema-terminal { - color: #cccccc; - background-color: #121314; - border-color: #121314; -} -.asciinema-theme-asciinema .fg-bg { - color: #121314; -} -.asciinema-theme-asciinema .bg-fg { - background-color: #cccccc; -} -.asciinema-theme-asciinema .fg-0 { - color: #000000; -} -.asciinema-theme-asciinema .bg-0 { - background-color: #000000; -} -.asciinema-theme-asciinema .fg-1 { - color: #dd3c69; -} -.asciinema-theme-asciinema .bg-1 { - background-color: #dd3c69; -} -.asciinema-theme-asciinema .fg-2 { - color: #4ebf22; -} -.asciinema-theme-asciinema .bg-2 { - background-color: #4ebf22; -} -.asciinema-theme-asciinema .fg-3 { - color: #ddaf3c; -} -.asciinema-theme-asciinema .bg-3 { - background-color: #ddaf3c; -} -.asciinema-theme-asciinema .fg-4 { - color: #26b0d7; -} -.asciinema-theme-asciinema .bg-4 { - background-color: #26b0d7; -} -.asciinema-theme-asciinema .fg-5 { - color: #b954e1; -} -.asciinema-theme-asciinema .bg-5 { - background-color: #b954e1; -} -.asciinema-theme-asciinema .fg-6 { - color: #54e1b9; -} -.asciinema-theme-asciinema .bg-6 { - background-color: #54e1b9; -} -.asciinema-theme-asciinema .fg-7 { - color: #d9d9d9; -} -.asciinema-theme-asciinema .bg-7 { - background-color: #d9d9d9; -} -.asciinema-theme-asciinema .fg-8 { - color: #4d4d4d; -} -.asciinema-theme-asciinema .bg-8 { - background-color: #4d4d4d; -} -.asciinema-theme-asciinema .fg-9 { - color: #dd3c69; -} -.asciinema-theme-asciinema .bg-9 { - background-color: #dd3c69; -} -.asciinema-theme-asciinema .fg-10 { - color: #4ebf22; -} -.asciinema-theme-asciinema .bg-10 { - background-color: #4ebf22; -} -.asciinema-theme-asciinema .fg-11 { - color: #ddaf3c; -} -.asciinema-theme-asciinema .bg-11 { - background-color: #ddaf3c; -} -.asciinema-theme-asciinema .fg-12 { - color: #26b0d7; -} -.asciinema-theme-asciinema .bg-12 { - background-color: #26b0d7; -} -.asciinema-theme-asciinema .fg-13 { - color: #b954e1; -} -.asciinema-theme-asciinema .bg-13 { - background-color: #b954e1; -} -.asciinema-theme-asciinema .fg-14 { - color: #54e1b9; -} -.asciinema-theme-asciinema .bg-14 { - background-color: #54e1b9; -} -.asciinema-theme-asciinema .fg-15 { - color: #ffffff; -} -.asciinema-theme-asciinema .bg-15 { - background-color: #ffffff; -} -.asciinema-theme-asciinema .fg-8, -.asciinema-theme-asciinema .fg-9, -.asciinema-theme-asciinema .fg-10, -.asciinema-theme-asciinema .fg-11, -.asciinema-theme-asciinema .fg-12, -.asciinema-theme-asciinema .fg-13, -.asciinema-theme-asciinema .fg-14, -.asciinema-theme-asciinema .fg-15 { - font-weight: bold; -} -.asciinema-theme-tango .asciinema-terminal { - color: #cccccc; - background-color: #121314; - border-color: #121314; -} -.asciinema-theme-tango .fg-bg { - color: #121314; -} -.asciinema-theme-tango .bg-fg { - background-color: #cccccc; -} -.asciinema-theme-tango .fg-0 { - color: #000000; -} -.asciinema-theme-tango .bg-0 { - background-color: #000000; -} -.asciinema-theme-tango .fg-1 { - color: #cc0000; -} -.asciinema-theme-tango .bg-1 { - background-color: #cc0000; -} -.asciinema-theme-tango .fg-2 { - color: #4e9a06; -} -.asciinema-theme-tango .bg-2 { - background-color: #4e9a06; -} -.asciinema-theme-tango .fg-3 { - color: #c4a000; -} -.asciinema-theme-tango .bg-3 { - background-color: #c4a000; -} -.asciinema-theme-tango .fg-4 { - color: #3465a4; -} -.asciinema-theme-tango .bg-4 { - background-color: #3465a4; -} -.asciinema-theme-tango .fg-5 { - color: #75507b; -} -.asciinema-theme-tango .bg-5 { - background-color: #75507b; -} -.asciinema-theme-tango .fg-6 { - color: #06989a; -} -.asciinema-theme-tango .bg-6 { - background-color: #06989a; -} -.asciinema-theme-tango .fg-7 { - color: #d3d7cf; -} -.asciinema-theme-tango .bg-7 { - background-color: #d3d7cf; -} -.asciinema-theme-tango .fg-8 { - color: #555753; -} -.asciinema-theme-tango .bg-8 { - background-color: #555753; -} -.asciinema-theme-tango .fg-9 { - color: #ef2929; -} -.asciinema-theme-tango .bg-9 { - background-color: #ef2929; -} -.asciinema-theme-tango .fg-10 { - color: #8ae234; -} -.asciinema-theme-tango .bg-10 { - background-color: #8ae234; -} -.asciinema-theme-tango .fg-11 { - color: #fce94f; -} -.asciinema-theme-tango .bg-11 { - background-color: #fce94f; -} -.asciinema-theme-tango .fg-12 { - color: #729fcf; -} -.asciinema-theme-tango .bg-12 { - background-color: #729fcf; -} -.asciinema-theme-tango .fg-13 { - color: #ad7fa8; -} -.asciinema-theme-tango .bg-13 { - background-color: #ad7fa8; -} -.asciinema-theme-tango .fg-14 { - color: #34e2e2; -} -.asciinema-theme-tango .bg-14 { - background-color: #34e2e2; -} -.asciinema-theme-tango .fg-15 { - color: #eeeeec; -} -.asciinema-theme-tango .bg-15 { - background-color: #eeeeec; -} -.asciinema-theme-tango .fg-8, -.asciinema-theme-tango .fg-9, -.asciinema-theme-tango .fg-10, -.asciinema-theme-tango .fg-11, -.asciinema-theme-tango .fg-12, -.asciinema-theme-tango .fg-13, -.asciinema-theme-tango .fg-14, -.asciinema-theme-tango .fg-15 { - font-weight: bold; -} -.asciinema-theme-solarized-dark .asciinema-terminal { - color: #839496; - background-color: #002b36; - border-color: #002b36; -} -.asciinema-theme-solarized-dark .fg-bg { - color: #002b36; -} -.asciinema-theme-solarized-dark .bg-fg { - background-color: #839496; -} -.asciinema-theme-solarized-dark .fg-0 { - color: #073642; -} -.asciinema-theme-solarized-dark .bg-0 { - background-color: #073642; -} -.asciinema-theme-solarized-dark .fg-1 { - color: #dc322f; -} -.asciinema-theme-solarized-dark .bg-1 { - background-color: #dc322f; -} -.asciinema-theme-solarized-dark .fg-2 { - color: #859900; -} -.asciinema-theme-solarized-dark .bg-2 { - background-color: #859900; -} -.asciinema-theme-solarized-dark .fg-3 { - color: #b58900; -} -.asciinema-theme-solarized-dark .bg-3 { - background-color: #b58900; -} -.asciinema-theme-solarized-dark .fg-4 { - color: #268bd2; -} -.asciinema-theme-solarized-dark .bg-4 { - background-color: #268bd2; -} -.asciinema-theme-solarized-dark .fg-5 { - color: #d33682; -} -.asciinema-theme-solarized-dark .bg-5 { - background-color: #d33682; -} -.asciinema-theme-solarized-dark .fg-6 { - color: #2aa198; -} -.asciinema-theme-solarized-dark .bg-6 { - background-color: #2aa198; -} -.asciinema-theme-solarized-dark .fg-7 { - color: #eee8d5; -} -.asciinema-theme-solarized-dark .bg-7 { - background-color: #eee8d5; -} -.asciinema-theme-solarized-dark .fg-8 { - color: #002b36; -} -.asciinema-theme-solarized-dark .bg-8 { - background-color: #002b36; -} -.asciinema-theme-solarized-dark .fg-9 { - color: #cb4b16; -} -.asciinema-theme-solarized-dark .bg-9 { - background-color: #cb4b16; -} -.asciinema-theme-solarized-dark .fg-10 { - color: #586e75; -} -.asciinema-theme-solarized-dark .bg-10 { - background-color: #586e75; -} -.asciinema-theme-solarized-dark .fg-11 { - color: #657b83; -} -.asciinema-theme-solarized-dark .bg-11 { - background-color: #657b83; -} -.asciinema-theme-solarized-dark .fg-12 { - color: #839496; -} -.asciinema-theme-solarized-dark .bg-12 { - background-color: #839496; -} -.asciinema-theme-solarized-dark .fg-13 { - color: #6c71c4; -} -.asciinema-theme-solarized-dark .bg-13 { - background-color: #6c71c4; -} -.asciinema-theme-solarized-dark .fg-14 { - color: #93a1a1; -} -.asciinema-theme-solarized-dark .bg-14 { - background-color: #93a1a1; -} -.asciinema-theme-solarized-dark .fg-15 { - color: #fdf6e3; -} -.asciinema-theme-solarized-dark .bg-15 { - background-color: #fdf6e3; -} -.asciinema-theme-solarized-light .asciinema-terminal { - color: #657b83; - background-color: #fdf6e3; - border-color: #fdf6e3; -} -.asciinema-theme-solarized-light .fg-bg { - color: #fdf6e3; -} -.asciinema-theme-solarized-light .bg-fg { - background-color: #657b83; -} -.asciinema-theme-solarized-light .fg-0 { - color: #073642; -} -.asciinema-theme-solarized-light .bg-0 { - background-color: #073642; -} -.asciinema-theme-solarized-light .fg-1 { - color: #dc322f; -} -.asciinema-theme-solarized-light .bg-1 { - background-color: #dc322f; -} -.asciinema-theme-solarized-light .fg-2 { - color: #859900; -} -.asciinema-theme-solarized-light .bg-2 { - background-color: #859900; -} -.asciinema-theme-solarized-light .fg-3 { - color: #b58900; -} -.asciinema-theme-solarized-light .bg-3 { - background-color: #b58900; -} -.asciinema-theme-solarized-light .fg-4 { - color: #268bd2; -} -.asciinema-theme-solarized-light .bg-4 { - background-color: #268bd2; -} -.asciinema-theme-solarized-light .fg-5 { - color: #d33682; -} -.asciinema-theme-solarized-light .bg-5 { - background-color: #d33682; -} -.asciinema-theme-solarized-light .fg-6 { - color: #2aa198; -} -.asciinema-theme-solarized-light .bg-6 { - background-color: #2aa198; -} -.asciinema-theme-solarized-light .fg-7 { - color: #eee8d5; -} -.asciinema-theme-solarized-light .bg-7 { - background-color: #eee8d5; -} -.asciinema-theme-solarized-light .fg-8 { - color: #002b36; -} -.asciinema-theme-solarized-light .bg-8 { - background-color: #002b36; -} -.asciinema-theme-solarized-light .fg-9 { - color: #cb4b16; -} -.asciinema-theme-solarized-light .bg-9 { - background-color: #cb4b16; -} -.asciinema-theme-solarized-light .fg-10 { - color: #586e75; -} -.asciinema-theme-solarized-light .bg-10 { - background-color: #586e75; -} -.asciinema-theme-solarized-light .fg-11 { - color: #657c83; -} -.asciinema-theme-solarized-light .bg-11 { - background-color: #657c83; -} -.asciinema-theme-solarized-light .fg-12 { - color: #839496; -} -.asciinema-theme-solarized-light .bg-12 { - background-color: #839496; -} -.asciinema-theme-solarized-light .fg-13 { - color: #6c71c4; -} -.asciinema-theme-solarized-light .bg-13 { - background-color: #6c71c4; -} -.asciinema-theme-solarized-light .fg-14 { - color: #93a1a1; -} -.asciinema-theme-solarized-light .bg-14 { - background-color: #93a1a1; -} -.asciinema-theme-solarized-light .fg-15 { - color: #fdf6e3; -} -.asciinema-theme-solarized-light .bg-15 { - background-color: #fdf6e3; -} -.asciinema-theme-seti .asciinema-terminal { - color: #cacecd; - background-color: #111213; - border-color: #111213; -} -.asciinema-theme-seti .fg-bg { - color: #111213; -} -.asciinema-theme-seti .bg-fg { - background-color: #cacecd; -} -.asciinema-theme-seti .fg-0 { - color: #323232; -} -.asciinema-theme-seti .bg-0 { - background-color: #323232; -} -.asciinema-theme-seti .fg-1 { - color: #c22832; -} -.asciinema-theme-seti .bg-1 { - background-color: #c22832; -} -.asciinema-theme-seti .fg-2 { - color: #8ec43d; -} -.asciinema-theme-seti .bg-2 { - background-color: #8ec43d; -} -.asciinema-theme-seti .fg-3 { - color: #e0c64f; -} -.asciinema-theme-seti .bg-3 { - background-color: #e0c64f; -} -.asciinema-theme-seti .fg-4 { - color: #43a5d5; -} -.asciinema-theme-seti .bg-4 { - background-color: #43a5d5; -} -.asciinema-theme-seti .fg-5 { - color: #8b57b5; -} -.asciinema-theme-seti .bg-5 { - background-color: #8b57b5; -} -.asciinema-theme-seti .fg-6 { - color: #8ec43d; -} -.asciinema-theme-seti .bg-6 { - background-color: #8ec43d; -} -.asciinema-theme-seti .fg-7 { - color: #eeeeee; -} -.asciinema-theme-seti .bg-7 { - background-color: #eeeeee; -} -.asciinema-theme-seti .fg-8 { - color: #323232; -} -.asciinema-theme-seti .bg-8 { - background-color: #323232; -} -.asciinema-theme-seti .fg-9 { - color: #c22832; -} -.asciinema-theme-seti .bg-9 { - background-color: #c22832; -} -.asciinema-theme-seti .fg-10 { - color: #8ec43d; -} -.asciinema-theme-seti .bg-10 { - background-color: #8ec43d; -} -.asciinema-theme-seti .fg-11 { - color: #e0c64f; -} -.asciinema-theme-seti .bg-11 { - background-color: #e0c64f; -} -.asciinema-theme-seti .fg-12 { - color: #43a5d5; -} -.asciinema-theme-seti .bg-12 { - background-color: #43a5d5; -} -.asciinema-theme-seti .fg-13 { - color: #8b57b5; -} -.asciinema-theme-seti .bg-13 { - background-color: #8b57b5; -} -.asciinema-theme-seti .fg-14 { - color: #8ec43d; -} -.asciinema-theme-seti .bg-14 { - background-color: #8ec43d; -} -.asciinema-theme-seti .fg-15 { - color: #ffffff; -} -.asciinema-theme-seti .bg-15 { - background-color: #ffffff; -} -.asciinema-theme-seti .fg-8, -.asciinema-theme-seti .fg-9, -.asciinema-theme-seti .fg-10, -.asciinema-theme-seti .fg-11, -.asciinema-theme-seti .fg-12, -.asciinema-theme-seti .fg-13, -.asciinema-theme-seti .fg-14, -.asciinema-theme-seti .fg-15 { - font-weight: bold; -} -/* Based on Monokai from base16 collection - https://github.com/chriskempson/base16 */ -.asciinema-theme-monokai .asciinema-terminal { - color: #f8f8f2; - background-color: #272822; - border-color: #272822; -} -.asciinema-theme-monokai .fg-bg { - color: #272822; -} -.asciinema-theme-monokai .bg-fg { - background-color: #f8f8f2; -} -.asciinema-theme-monokai .fg-0 { - color: #272822; -} -.asciinema-theme-monokai .bg-0 { - background-color: #272822; -} -.asciinema-theme-monokai .fg-1 { - color: #f92672; -} -.asciinema-theme-monokai .bg-1 { - background-color: #f92672; -} -.asciinema-theme-monokai .fg-2 { - color: #a6e22e; -} -.asciinema-theme-monokai .bg-2 { - background-color: #a6e22e; -} -.asciinema-theme-monokai .fg-3 { - color: #f4bf75; -} -.asciinema-theme-monokai .bg-3 { - background-color: #f4bf75; -} -.asciinema-theme-monokai .fg-4 { - color: #66d9ef; -} -.asciinema-theme-monokai .bg-4 { - background-color: #66d9ef; -} -.asciinema-theme-monokai .fg-5 { - color: #ae81ff; -} -.asciinema-theme-monokai .bg-5 { - background-color: #ae81ff; -} -.asciinema-theme-monokai .fg-6 { - color: #a1efe4; -} -.asciinema-theme-monokai .bg-6 { - background-color: #a1efe4; -} -.asciinema-theme-monokai .fg-7 { - color: #f8f8f2; -} -.asciinema-theme-monokai .bg-7 { - background-color: #f8f8f2; -} -.asciinema-theme-monokai .fg-8 { - color: #75715e; -} -.asciinema-theme-monokai .bg-8 { - background-color: #75715e; -} -.asciinema-theme-monokai .fg-9 { - color: #f92672; -} -.asciinema-theme-monokai .bg-9 { - background-color: #f92672; -} -.asciinema-theme-monokai .fg-10 { - color: #a6e22e; -} -.asciinema-theme-monokai .bg-10 { - background-color: #a6e22e; -} -.asciinema-theme-monokai .fg-11 { - color: #f4bf75; -} -.asciinema-theme-monokai .bg-11 { - background-color: #f4bf75; -} -.asciinema-theme-monokai .fg-12 { - color: #66d9ef; -} -.asciinema-theme-monokai .bg-12 { - background-color: #66d9ef; -} -.asciinema-theme-monokai .fg-13 { - color: #ae81ff; -} -.asciinema-theme-monokai .bg-13 { - background-color: #ae81ff; -} -.asciinema-theme-monokai .fg-14 { - color: #a1efe4; -} -.asciinema-theme-monokai .bg-14 { - background-color: #a1efe4; -} -.asciinema-theme-monokai .fg-15 { - color: #f9f8f5; -} -.asciinema-theme-monokai .bg-15 { - background-color: #f9f8f5; -} -.asciinema-theme-monokai .fg-8, -.asciinema-theme-monokai .fg-9, -.asciinema-theme-monokai .fg-10, -.asciinema-theme-monokai .fg-11, -.asciinema-theme-monokai .fg-12, -.asciinema-theme-monokai .fg-13, -.asciinema-theme-monokai .fg-14, -.asciinema-theme-monokai .fg-15 { - font-weight: bold; -} diff --git a/assets/css/chroma.css b/assets/css/chroma.css new file mode 100644 index 000000000..0e7ab1435 --- /dev/null +++ b/assets/css/chroma.css @@ -0,0 +1,150 @@ +/* Generated using: hugo gen chromastyles --style=manni */ + +/* Background */ .bg { background-color:#f0f3f3; } +/* PreWrapper */ .chroma { background-color:#f0f3f3;-webkit-text-size-adjust:none; } +/* Error */ .chroma .err { color:#a00;background-color:#faa } +/* LineLink */ .chroma .lnlinks { outline:none;text-decoration:none;color:inherit } +/* LineTableTD */ .chroma .lntd { vertical-align:top;padding:0;margin:0;border:0; } +/* LineTable */ .chroma .lntable { border-spacing:0;padding:0;margin:0;border:0; } +/* LineHighlight */ .chroma .hl { background-color:#d8dada } +/* LineNumbersTable */ .chroma .lnt { white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f } +/* LineNumbers */ .chroma .ln { white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f } +/* Line */ .chroma .line { display:flex; } +/* Keyword */ .chroma .k { color:#069;font-weight:bold } +/* KeywordConstant */ .chroma .kc { color:#069;font-weight:bold } +/* KeywordDeclaration */ .chroma .kd { color:#069;font-weight:bold } +/* KeywordNamespace */ .chroma .kn { color:#069;font-weight:bold } +/* KeywordPseudo */ .chroma .kp { color:#069 } +/* KeywordReserved */ .chroma .kr { color:#069;font-weight:bold } +/* KeywordType */ .chroma .kt { color:#078;font-weight:bold } +/* NameAttribute */ .chroma .na { color:#309 } +/* NameClass */ .chroma .nc { color:#0a8;font-weight:bold } +/* NameConstant */ .chroma .no { color:#360 } +/* NameDecorator */ .chroma .nd { color:#99f } +/* NameEntity */ .chroma .ni { color:#999;font-weight:bold } +/* NameException */ .chroma .ne { color:#c00;font-weight:bold } +/* NameLabel */ .chroma .nl { color:#99f } +/* NameNamespace */ .chroma .nn { color:#0cf;font-weight:bold } +/* NameTag */ .chroma .nt { color:#309;font-weight:bold } +/* NameBuiltin */ .chroma .nb { color:#366 } +/* NameBuiltinPseudo */ .chroma .bp { color:#366 } +/* NameVariable */ .chroma .nv { color:#033 } +/* NameVariableClass */ .chroma .vc { color:#033 } +/* NameVariableGlobal */ .chroma .vg { color:#033 } +/* NameVariableInstance */ .chroma .vi { color:#033 } +/* NameVariableMagic */ .chroma .vm { color:#033 } +/* NameFunction */ .chroma .nf { color:#c0f } +/* NameFunctionMagic */ .chroma .fm { color:#c0f } +/* LiteralString */ .chroma .s { color:#c30 } +/* LiteralStringAffix */ .chroma .sa { color:#c30 } +/* LiteralStringBacktick */ .chroma .sb { color:#c30 } +/* LiteralStringChar */ .chroma .sc { color:#c30 } +/* LiteralStringDelimiter */ .chroma .dl { color:#c30 } +/* LiteralStringDoc */ .chroma .sd { color:#c30;font-style:italic } +/* LiteralStringDouble */ .chroma .s2 { color:#c30 } +/* LiteralStringEscape */ .chroma .se { color:#c30;font-weight:bold } +/* LiteralStringHeredoc */ .chroma .sh { color:#c30 } +/* LiteralStringInterpol */ .chroma .si { color:#a00 } +/* LiteralStringOther */ .chroma .sx { color:#c30 } +/* LiteralStringRegex */ .chroma .sr { color:#3aa } +/* LiteralStringSingle */ .chroma .s1 { color:#c30 } +/* LiteralStringSymbol */ .chroma .ss { color:#fc3 } +/* LiteralNumber */ .chroma .m { color:#f60 } +/* LiteralNumberBin */ .chroma .mb { color:#f60 } +/* LiteralNumberFloat */ .chroma .mf { color:#f60 } +/* LiteralNumberHex */ .chroma .mh { color:#f60 } +/* LiteralNumberInteger */ .chroma .mi { color:#f60 } +/* LiteralNumberIntegerLong */ .chroma .il { color:#f60 } +/* LiteralNumberOct */ .chroma .mo { color:#f60 } +/* Operator */ .chroma .o { color:#555 } +/* OperatorWord */ .chroma .ow { color:#000;font-weight:bold } +/* Comment */ .chroma .c { color:#09f;font-style:italic } +/* CommentHashbang */ .chroma .ch { color:#09f;font-style:italic } +/* CommentMultiline */ .chroma .cm { color:#09f;font-style:italic } +/* CommentSingle */ .chroma .c1 { color:#09f;font-style:italic } +/* CommentSpecial */ .chroma .cs { color:#09f;font-weight:bold;font-style:italic } +/* CommentPreproc */ .chroma .cp { color:#099 } +/* CommentPreprocFile */ .chroma .cpf { color:#099 } +/* GenericDeleted */ .chroma .gd { background-color:#fcc } +/* GenericEmph */ .chroma .ge { font-style:italic } +/* GenericError */ .chroma .gr { color:#f00 } +/* GenericHeading */ .chroma .gh { color:#030;font-weight:bold } +/* GenericInserted */ .chroma .gi { background-color:#cfc } +/* GenericOutput */ .chroma .go { color:#aaa } +/* GenericPrompt */ .chroma .gp { color:#009;font-weight:bold } +/* GenericStrong */ .chroma .gs { font-weight:bold } +/* GenericSubheading */ .chroma .gu { color:#030;font-weight:bold } +/* GenericTraceback */ .chroma .gt { color:#9c6 } +/* GenericUnderline */ .chroma .gl { text-decoration:underline } +/* TextWhitespace */ .chroma .w { color:#bbb } + +/* ---------- Dark mode: Dracula ---------- */ +/* Generated using: hugo gen chromastyles --style=dracula */ + +:root.dark .bg { color:#f8f8f2;background-color:#282a36; } +:root.dark .chroma { color:#f8f8f2;background-color:#282a36;-webkit-text-size-adjust:none; } +:root.dark .chroma .lnlinks { outline:none;text-decoration:none;color:inherit } +:root.dark .chroma .lntd { vertical-align:top;padding:0;margin:0;border:0; } +:root.dark .chroma .lntable { border-spacing:0;padding:0;margin:0;border:0; } +:root.dark .chroma .hl { background-color:#3d3f4a } +:root.dark .chroma .lnt { white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f } +:root.dark .chroma .ln { white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f } +:root.dark .chroma .line { display:flex; } +:root.dark .chroma .k { color:#ff79c6 } +:root.dark .chroma .kc { color:#ff79c6 } +:root.dark .chroma .kd { color:#8be9fd;font-style:italic } +:root.dark .chroma .kn { color:#ff79c6 } +:root.dark .chroma .kp { color:#ff79c6 } +:root.dark .chroma .kr { color:#ff79c6 } +:root.dark .chroma .kt { color:#8be9fd } +:root.dark .chroma .na { color:#50fa7b } +:root.dark .chroma .nc { color:#50fa7b } +:root.dark .chroma .nl { color:#8be9fd;font-style:italic } +:root.dark .chroma .nt { color:#ff79c6 } +:root.dark .chroma .nb { color:#8be9fd;font-style:italic } +:root.dark .chroma .bp { font-style:italic } +:root.dark .chroma .nv { color:#8be9fd;font-style:italic } +:root.dark .chroma .vc { color:#8be9fd;font-style:italic } +:root.dark .chroma .vg { color:#8be9fd;font-style:italic } +:root.dark .chroma .vi { color:#8be9fd;font-style:italic } +:root.dark .chroma .vm { color:#8be9fd;font-style:italic } +:root.dark .chroma .nf { color:#50fa7b } +:root.dark .chroma .fm { color:#50fa7b } +:root.dark .chroma .s { color:#f1fa8c } +:root.dark .chroma .sa { color:#f1fa8c } +:root.dark .chroma .sb { color:#f1fa8c } +:root.dark .chroma .sc { color:#f1fa8c } +:root.dark .chroma .dl { color:#f1fa8c } +:root.dark .chroma .sd { color:#f1fa8c } +:root.dark .chroma .s2 { color:#f1fa8c } +:root.dark .chroma .se { color:#f1fa8c } +:root.dark .chroma .sh { color:#f1fa8c } +:root.dark .chroma .si { color:#f1fa8c } +:root.dark .chroma .sx { color:#f1fa8c } +:root.dark .chroma .sr { color:#f1fa8c } +:root.dark .chroma .s1 { color:#f1fa8c } +:root.dark .chroma .ss { color:#f1fa8c } +:root.dark .chroma .m { color:#bd93f9 } +:root.dark .chroma .mb { color:#bd93f9 } +:root.dark .chroma .mf { color:#bd93f9 } +:root.dark .chroma .mh { color:#bd93f9 } +:root.dark .chroma .mi { color:#bd93f9 } +:root.dark .chroma .il { color:#bd93f9 } +:root.dark .chroma .mo { color:#bd93f9 } +:root.dark .chroma .o { color:#ff79c6 } +:root.dark .chroma .ow { color:#ff79c6 } +:root.dark .chroma .c { color:#6272a4 } +:root.dark .chroma .ch { color:#6272a4 } +:root.dark .chroma .cm { color:#6272a4 } +:root.dark .chroma .c1 { color:#6272a4 } +:root.dark .chroma .cs { color:#6272a4 } +:root.dark .chroma .cp { color:#ff79c6 } +:root.dark .chroma .cpf { color:#ff79c6 } +:root.dark .chroma .gd { color:#f55 } +:root.dark .chroma .ge { text-decoration:underline } +:root.dark .chroma .gh { font-weight:bold } +:root.dark .chroma .gi { color:#50fa7b;font-weight:bold } +:root.dark .chroma .go { color:#44475a } +:root.dark .chroma .gu { font-weight:bold } +:root.dark .chroma .gl { text-decoration:underline } + diff --git a/assets/css/custom.css b/assets/css/custom.css new file mode 100644 index 000000000..d2ad0c7f1 --- /dev/null +++ b/assets/css/custom.css @@ -0,0 +1,421 @@ +/* + * Tekton brand theming for Hextra + * Brand guide: https://github.com/cdfoundation/artwork/blob/main/tekton/tekton_brand_guide.pdf + * + * Primary: #00109F (navy, hue ~234deg) + * Secondary: #B980D0 (purple) + */ + +:root { + --primary-hue: 234deg; + --primary-saturation: 100%; + --primary-lightness: 31%; +} + +/* ---------- Global dark-mode link & code readability ---------- */ +:root.dark a { + color: #93b4ff; +} +:root.dark a:hover { + color: #bdd0ff; +} +:root.dark code:not(pre code) { + background: #1e293b; + color: #e2e8f0; +} +:root.dark pre:not(.chroma) { + background: #0f172a !important; +} +:root.dark pre:not(.chroma) code { + color: #e2e8f0; +} + +/* ---------- Hero buttons ---------- */ +.hextra-hero-btn-primary, +.hextra-hero-btn-alt { + display: inline-block; + font-weight: 500; + cursor: pointer; + padding: 0.75rem 1.75rem; + border-radius: 9999px; + text-align: center; + text-decoration: none !important; + font-size: 1rem; + transition: all 0.2s ease-in; +} +.hextra-hero-btn-primary { + background: #00109F; + color: #fff !important; + border: 2px solid #00109F; +} +.hextra-hero-btn-primary:hover { + background: #1a2fbf; + border-color: #1a2fbf; +} +:root.dark .hextra-hero-btn-primary { + background: #6366f1; + border-color: #6366f1; + color: #fff !important; +} +:root.dark .hextra-hero-btn-primary:hover { + background: #818cf8; + border-color: #818cf8; +} +.hextra-hero-btn-alt { + background: transparent; + color: #00109F !important; + border: 2px solid #cbd5e1; +} +.hextra-hero-btn-alt:hover { + border-color: #00109F; + background: #f0f4ff; +} +:root.dark .hextra-hero-btn-alt { + color: #e2e8f0 !important; + border-color: #475569; +} +:root.dark .hextra-hero-btn-alt:hover { + border-color: #818cf8; + background: rgba(99,102,241,0.1); + color: #a5b4fc !important; +} + +/* Center all hero content on home page */ +main#content > .hx\:flex { + align-items: center !important; +} + +/* Navbar horizontal logo */ +nav a img { + height: 2.25rem !important; + width: auto !important; + object-fit: contain; +} + +.content { + font-family: BlinkMacSystemFont, -apple-system, "Segoe UI", "Roboto", + "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", + "Helvetica Neue", "Helvetica", "Arial", sans-serif; +} + +/* Announcement banner (KubeCon, releases, etc.) */ +.hextra-banner { + background: linear-gradient(90deg, #b1479a 0%, #6a2c88 100%); + color: #fff; +} +.hextra-banner a { + color: inherit; + text-decoration: underline; +} + +/* Workflow diagram on landing page */ +.workflow-wrapper { + position: relative; + display: flex; + justify-content: center; + margin: 1.5rem auto 3rem; +} +.workflow-img { + width: 1000px; + max-width: none; + height: auto; + border-radius: 1rem; +} +.workflow-fade { + position: absolute; + bottom: 0; + left: 0; + right: 0; + height: 60px; + background: linear-gradient(to bottom, transparent, var(--bg-color, #fff)); + border-radius: 0 0 1rem 1rem; + pointer-events: none; +} +:root.dark .workflow-fade { + background: linear-gradient(to bottom, transparent, #111); +} + +/* Force 3 columns for card grids */ +.hextra-cards { + grid-template-columns: repeat(3, 1fr) !important; +} +@media (max-width: 900px) { + .hextra-cards { + grid-template-columns: repeat(2, 1fr) !important; + } +} +@media (max-width: 540px) { + .hextra-cards { + grid-template-columns: 1fr !important; + } +} + +/* ---------- Why Tekton? cards ---------- */ +.why-tekton-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 1.5rem; + max-width: 960px; + margin: 0 auto 3rem; +} +.why-tekton-card { + position: relative; + background: #fff; + border: 1px solid #e5e7eb; + border-radius: 1rem; + padding: 2rem 1.5rem 1.75rem; + text-decoration: none !important; + color: inherit !important; + transition: box-shadow 0.2s, border-color 0.2s; + overflow: hidden; +} +.why-tekton-card:hover { + box-shadow: 0 4px 24px rgba(0,0,0,0.07); + border-color: #c7d2fe; +} +.why-tekton-accent { + position: absolute; + top: 0; + left: 1.5rem; + width: 2rem; + height: 4px; + border-radius: 0 0 4px 4px; +} +.why-tekton-title { + display: flex; + align-items: center; + gap: 0.65rem; + margin-bottom: 0.75rem; +} +.why-tekton-icon { + display: inline-flex; + align-items: center; + justify-content: center; + width: 2.75rem; + height: 2.75rem; + border-radius: 50%; + flex-shrink: 0; +} +.why-tekton-card h3 { + font-size: 1.1rem; + font-weight: 700; + margin: 0; + color: #1e293b; +} +.why-tekton-card p { + font-size: 0.92rem; + line-height: 1.6; + color: #6b7280; + margin: 0; +} +:root.dark .why-tekton-card { + background: #1e293b; + border-color: #334155; +} +:root.dark .why-tekton-card:hover { + border-color: #6366f1; + box-shadow: 0 4px 24px rgba(0,0,0,0.25); +} +:root.dark .why-tekton-card h3 { + color: #f1f5f9; +} +:root.dark .why-tekton-card p { + color: #94a3b8; +} +:root.dark .why-tekton-icon { + background: rgba(255,255,255,0.08) !important; +} +@media (max-width: 768px) { + .why-tekton-grid { + grid-template-columns: 1fr; + } +} + +/* ---------- Trusted By / Adopters strip ---------- */ +.adopters-grid { + display: flex; + flex-wrap: wrap; + justify-content: center; + gap: 0.75rem 1rem; + max-width: 800px; + margin: 0 auto; +} +.adopter { + padding: 0.5rem 1.25rem; + border: 1px solid #e5e7eb; + border-radius: 2rem; + font-size: 0.9rem; + font-weight: 600; + color: #374151; + background: #f9fafb; + white-space: nowrap; + transition: border-color 0.2s, background 0.2s; +} +.adopter:hover { + border-color: #a5b4fc; + background: #eef2ff; +} +:root.dark .adopter { + background: #1e293b; + border-color: #334155; + color: #cbd5e1; +} +:root.dark .adopter:hover { + border-color: #818cf8; + background: #1e1b4b; +} +.adopter-logo { + display: inline-flex; + align-items: center; + justify-content: center; + padding: 0.5rem 1.25rem; +} +.adopter-logo img { + height: 26px; + width: auto; + object-fit: contain; +} +.adopter-wide img { + height: 20px; + max-width: 120px; +} +:root.dark .adopter-logo img { + filter: brightness(0) invert(1) opacity(0.85); +} +:root.dark .adopter-logo:hover img { + filter: brightness(0) invert(1) opacity(1); +} + +/* ---------- CNCF horizontal banner at bottom ---------- */ +.cncf-banner { + margin-top: 4rem; + padding: 0; +} +.cncf-banner-inner { + display: flex; + align-items: center; + justify-content: center; + gap: 1.25rem; + padding: 1.25rem 2rem; + border-radius: 0.75rem; + background: rgba(248,250,252,0.7); + backdrop-filter: blur(12px); + -webkit-backdrop-filter: blur(12px); + border: 1px solid rgba(226,232,240,0.6); + color: #475569; + text-decoration: none !important; + font-size: 0.95rem; + transition: border-color 0.2s, background 0.2s; +} +.cncf-banner-inner:hover { + border-color: #a5b4fc; + background: #f1f5f9; +} +.cncf-logo { + height: 36px; + width: auto; + flex-shrink: 0; +} +.cncf-banner-inner strong { + color: #1e293b; +} +:root.dark .cncf-banner-inner { + background: rgba(30,41,59,0.6); + border-color: rgba(51,65,85,0.5); + color: #94a3b8; +} +:root.dark .cncf-banner-inner:hover { + border-color: #6366f1; + background: #1e1b4b; +} +:root.dark .cncf-banner-inner strong { + color: #e2e8f0; +} +:root.dark .cncf-logo { + filter: brightness(0) invert(1) opacity(0.85); +} +@media (max-width: 540px) { + .cncf-banner-inner { + flex-direction: column; + text-align: center; + gap: 0.75rem; + padding: 1rem; + } +} + +/* ---------- Hextra built-in card overrides for dark mode ---------- */ +:root.dark .hextra-card { + background: #1e293b !important; + border-color: #334155 !important; +} +:root.dark .hextra-card:hover { + border-color: #6366f1 !important; +} +:root.dark .hextra-card svg { + color: #93b4ff; +} + +/* ---------- Pageinfo & Alert shortcodes ---------- */ +.hextra-pageinfo { + padding: 1rem 1.5rem; + border-left: 4px solid var(--primary-color, #00109F); + background: #f0f4ff; + border-radius: 0 0.25rem 0.25rem 0; + margin: 1rem 0; + color: #1e293b; +} +:root.dark .hextra-pageinfo { + background: #1e293b; + border-left-color: #6366f1; + color: #e2e8f0; +} +:root.dark .hextra-pageinfo a { + color: #93b4ff; +} + +.hextra-alert { + padding: 1rem 1.5rem; + border-left: 4px solid #00109F; + background: #f0f4ff; + border-radius: 0 0.25rem 0.25rem 0; + margin: 1rem 0; + color: #1e293b; +} +.hextra-alert--warning { + border-left-color: #e6a700; + background: #fff8e1; +} +.hextra-alert--danger { + border-left-color: #d32f2f; + background: #ffeef0; +} +.hextra-alert--success { + border-left-color: #2e7d32; + background: #e8f5e9; +} +:root.dark .hextra-alert { + background: #1e293b; + border-left-color: #6366f1; + color: #e2e8f0; +} +:root.dark .hextra-alert--warning { + background: #2a2000; + border-left-color: #facc15; +} +:root.dark .hextra-alert--danger { + background: #2a0a0e; + border-left-color: #f87171; +} +:root.dark .hextra-alert--success { + background: #0a2a10; + border-left-color: #4ade80; +} +:root.dark .hextra-alert a { + color: #93b4ff; +} + +/* Vertical scrolling for large code samples */ +pre { + max-height: 25em; + overflow-y: auto; +} diff --git a/assets/images/logo-dark.svg b/assets/images/logo-dark.svg new file mode 100644 index 000000000..be40d3a6e --- /dev/null +++ b/assets/images/logo-dark.svg @@ -0,0 +1,14 @@ + + + + + + tekton-horizontal-white + + + + + + + + \ No newline at end of file diff --git a/assets/images/logo.svg b/assets/images/logo.svg new file mode 100644 index 000000000..adb43964e --- /dev/null +++ b/assets/images/logo.svg @@ -0,0 +1,14 @@ + + + + + + tekton-horizontal-white + + + + + + + + \ No newline at end of file diff --git a/assets/images/tekton-horizontal-color.png b/assets/images/tekton-horizontal-color.png new file mode 100644 index 000000000..e84613219 Binary files /dev/null and b/assets/images/tekton-horizontal-color.png differ diff --git a/assets/images/tekton-icon-color.png b/assets/images/tekton-icon-color.png new file mode 100644 index 000000000..569547c24 Binary files /dev/null and b/assets/images/tekton-icon-color.png differ diff --git a/assets/js/anchor.js b/assets/js/anchor.js deleted file mode 100644 index 9d8a0e678..000000000 --- a/assets/js/anchor.js +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2018 Google LLC - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - https://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -(function ($) { - 'use strict'; - - // Headers' anchor link that shows on hover - $(function () { - // append anchor links to headings in markdown. - var article = document.getElementsByTagName('main')[0]; - if (!article) { - return; - } - var headings = article.querySelectorAll('h1, h2, h3, h4, h5, h6'); - headings.forEach(function (heading) { - if (heading.id) { - var a = document.createElement('a'); - // set visibility: hidden, not display: none to avoid layout change - a.style.visibility = 'hidden'; - // [a11y] hide this from screen readers, etc.. - a.setAttribute('aria-hidden', 'true'); - // material insert_link icon in svg format - a.innerHTML = ' '; - a.href = '#' + heading.id; - heading.insertAdjacentElement('beforeend', a); - heading.addEventListener('mouseenter', function () { - a.style.visibility = 'initial'; - }); - heading.addEventListener('mouseleave', function () { - a.style.visibility = 'hidden'; - }); - } - }); - }); - -}(jQuery)); diff --git a/assets/js/click-to-copy.js b/assets/js/click-to-copy.js deleted file mode 100644 index 5fdb041a8..000000000 --- a/assets/js/click-to-copy.js +++ /dev/null @@ -1,86 +0,0 @@ -let codeListings = document.querySelectorAll('.highlight > pre'); - -for (let index = 0; index < codeListings.length; index++) -{ - const codeSample = codeListings[index].querySelector('code'); - const copyButton = document.createElement("button"); - copyButton.setAttribute('type', 'button'); - copyButton.onclick = function() { copyCode(codeSample); }; - copyButton.classList.add('fas', 'fa-copy'); - - const buttonTooltip = document.createElement('div'); - buttonTooltip.classList.add('c2c-tooltip'); - buttonTooltip.setAttribute('role', 'tooltip'); - buttonTooltip.innerHTML += 'Copy to clipboard'; - - const buttonDiv = document.createElement('div'); - buttonDiv.classList.add('click-to-copy'); - - // Use Popper to create and handle the tooltip behavior. - - const popperInstance = Popper.createPopper(copyButton, buttonTooltip, - { - modifiers: - [ - { - name: 'offset', - options: - { - offset: [0, -48], - }, - }, - ], - }); - - copyButton.addEventListener('click', () => - { - buttonTooltip.innerHTML = 'Copied!'; - }); - - copyButton.addEventListener('mouseenter', () => - { - buttonTooltip.setAttribute('show-tooltip', ''); - - // Enable eventListeners when the code block is on the viewport - - popperInstance.setOptions((options) => ({ - ...options, - modifiers: - [ - ...options.modifiers, - { name: 'eventListeners', enabled: true }, - ], - })); - popperInstance.update(); - }); - - copyButton.addEventListener('mouseleave', () => - { - buttonTooltip.removeAttribute('show-tooltip'); - - // Reset the message in case the button was clicked - buttonTooltip.innerHTML = 'Copy to clipboard'; - - // Disble eventListeners when the code block is NOT on the viewport - - popperInstance.setOptions((options) => ({ - ...options, - modifiers: - [ - ...options.modifiers, - { name: 'eventListeners', enabled: false }, - ], - })); - }); - - buttonDiv.append(copyButton); - buttonDiv.append(buttonTooltip); - codeListings[index].insertBefore(buttonDiv, codeSample); - -} - -function copyCode(codeSample) -{ - navigator.clipboard.writeText(codeSample.textContent.trim()); -} - diff --git a/assets/scss/_styles_project.scss b/assets/scss/_styles_project.scss deleted file mode 100644 index 114518df0..000000000 --- a/assets/scss/_styles_project.scss +++ /dev/null @@ -1,181 +0,0 @@ -/* - Styling for privacy notice watermark in privacy-notice.html -*/ -#privacy-notice { - background-color: rgba(84, 73, 75, 0.9); - position: fixed; - bottom: 0%; - right: 0%; - width: 500px; - min-height: 10rem; - box-shadow: -8px -8px 8px 0 rgba(0, 0, 0, 0.3), 2px -6px 20px 0 rgba(0, 0, 0, 0.2); - z-index: 1; -} - -/* Styling for version-switcher dropdown */ - -.dropdown-menu { - border: 2px solid $primary; - max-height: 50vh; - overflow-y: auto; -} - -/* - Styling for mobile: -*/ -@media only screen and (max-width: $mobile-width) { - #banner-hero-logo { - display: none - } - - #privacy-notice { - width: 100vw; - } - - .td-box .row { - padding-left: 1rem; - padding-right: 1rem; - } -} - -/* Top nav bar background */ - -.td-navbar-cover { - &.navbar-bg-onscroll { - background: $dark !important - } -} - -/* Remove default styles from community page lists */ - -.linkbox { - ul { - list-style-type: none - } -} - -/* Styles for RSS link */ -.td-rss-button { - background-color: $primary !important; - - &:hover { - color: #fff !important; - background-color: darken($primary, 10%) !important; - } -} - -/* Vertical scrolling for large code samples */ - -pre { - max-height: 25em; - overflow-y: auto; -} - -/* Click-to-copy button styles */ - -.highlight { - - position: relative; - - .click-to-copy { - display: block; - text-align: right; - height: 1ex; - } - - pre { - - button { - position: absolute; - color: $light; - border-radius: 3px; - border-width: 0; - background-color: inherit; - box-shadow: 1px 1px $light; - right: 18px !important; - top: 6px; - } - - button:hover { - color: $dark; - background-color: $light; - } - - button:active { - color: $dark; - background-color: $light; - transform: translateY(2px); - } - - .c2c-tooltip { - background: $dark; - color: white; - padding: 2px 4px; - border-radius: 3px; - display: block; - visibility: hidden; - opacity: 0; - transition: visibility 0s, opacity 0.7s linear; - } - - .c2c-tooltip[show-tooltip] { - visibility: visible; - opacity: 1; - } - } -} - -/* Hide releases disclaimer by default, dinamically show it with js */ - -#release-switcher { - visibility: hidden -} - -#nightly-release-li { - visibility: hidden -} - -#lts-release-li { - visibility: hidden -} - -/* Consistent borders around code blocks */ - -pre { - border: 1px solid $light; -} - - -/* Styling for the banner */ -.banner { - color: #fff; - background: linear-gradient(90deg, #b1479a 0%, #6a2c88 100%); - - .banner-main { - max-width: calc(min(1200px - 8em, 80vw)); - margin-left: auto; - margin-right: auto; - margin-bottom: 0; - padding-bottom: calc(max(0.1em, 0.1rem)); - padding-top: calc(max(5em, 5rem)); - } - - @media only screen and (max-width: $mobile-width) { - .banner-main { - padding-top: calc(max(1em, 1rem)); - } - } - - h4 { - font-size: 1.35rem; - margin-top: 0; - margin-bottom: .5rem; - font-weight: 500; - line-height: 1.2; - } - - a { - color: inherit; - text-decoration: underline; - } -} \ No newline at end of file diff --git a/assets/scss/_variables_project.scss b/assets/scss/_variables_project.scss deleted file mode 100644 index 2ee414610..000000000 --- a/assets/scss/_variables_project.scss +++ /dev/null @@ -1,18 +0,0 @@ -/* - -Add styles or override variables from the theme here. - -*/ - -/* Primary and secondary colors based on the logo design guide - * https://github.com/cdfoundation/artwork/blob/main/tekton/tekton_brand_guide.pdf - */ - -$primary: #00109F; -$secondary: #B980D0; -$td-fonts-serif: BlinkMacSystemFont, -apple-system, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", "Helvetica", "Arial", sans-serif; -$td-enable-google-fonts: false; -$light: #929292 !default; -$dark: #333 !default; -$mobile-width: 767px; - diff --git a/config.yaml b/config.yaml index b65ef971b..62b603433 100644 --- a/config.yaml +++ b/config.yaml @@ -2,8 +2,7 @@ baseURL: / title: Tekton enableRobotsTXT: true theme: - - github.com/google/docsy - - github.com/google/docsy/dependencies + - github.com/imfing/hextra enableGitInfo: true contentDir: content/en defaultContentLanguage: en @@ -11,11 +10,6 @@ defaultContentLanguageInSubdir: false enableMissingTranslationPlaceholders: true disableKinds: - taxonomy - - taxonomyTerm -pygmentsCodeFences: true -pygmentsUseClasses: false -pygmentsUseClassic: false -pygmentsStyle: manni enableEmoji: true ignoreFiles: - vendor/.* @@ -28,6 +22,8 @@ markup: goldmark: renderer: unsafe: true + highlight: + noClasses: false imaging: resampleFilter: CatmullRom quality: 75 @@ -38,28 +34,45 @@ services: languages: en: title: Tekton - description: Cloud Native CI/CD languageName: English weight: 1 + params: + description: Cloud Native CI/CD + params: - version_menu: Releases + description: Cloud Native CI/CD github_repo: https://github.com/tektoncd/website - gcs_engine_id: 013756393218025596041:6eajntqsa6c - ui: - sidebar_menu_compact: false - sidebar_menu_foldable: true - breadcrumb_disable: true - sidebar_search_disable: false - navbar_logo: true - footer_about_disable: false - feedback: - enable: true - yes: - Thanks! Tell us - how we can further improve. - no: Sorry about that. Tell us how we can - further improve. + + navbar: + displayTitle: false + displayLogo: true + logo: + path: images/tekton-horizontal-color.png + dark: images/tekton-horizontal-color.png + link: / + width: 140 + height: 36 + + search: + enable: true + type: flexsearch + flexsearch: + index: content + + editURL: + enable: true + base: https://github.com/tektoncd/website/edit/main/content + + footer: + displayPoweredBy: false + + theme: + default: system + displayToggle: false + + page: + width: wide + links: developer: - name: Slack @@ -70,45 +83,32 @@ params: url: https://github.com/tektoncd icon: fab fa-github desc: GitHub organization for the Tekton project -sectionPagesMenu: "docs" + menu: - docs: - - name: "Getting Started" - url: "/docs/getting-started/" + main: + - identifier: Documentation + name: Documentation + pageRef: /docs weight: 1 - - name: "Installation" - url: "/docs/installation/" + - identifier: Blog + name: Blog + pageRef: /blog weight: 2 - - name: "Concepts" - url: "/docs/concepts/" + - identifier: Community + name: Community + pageRef: /community weight: 3 - - name: "How-to Guides" - url: "/docs/how-to-guides/" + - identifier: GitHub + name: GitHub + url: https://github.com/tektoncd weight: 4 - - name: "Tasks and Pipelines" - url: "/docs/pipelines/" + params: + icon: github + - identifier: search weight: 5 - - name: "Triggers and EventListeners" - url: "/docs/triggers/" + params: + type: search + - identifier: theme-toggle weight: 6 - - name: "Command-Line Interface" - url: "/docs/cli/" - weight: 7 - - name: "Supply Chain Security" - url: "/docs/chains/" - weight: 8 - - name: "Operator" - url: "/docs/operator/" - weight: 9 - - name: "Dashboard" - url: "/docs/dashboard/" - weight: 10 - - name: "Results" - url: "/docs/results/" - weight: 11 - - name: "Pruner" - url: "/docs/pruner/" - weight: 12 - - name: "Contribute" - url: "/docs/contribute/" - weight: 100 + params: + type: theme-toggle diff --git a/content/en/_index.html b/content/en/_index.html deleted file mode 100644 index 592927928..000000000 --- a/content/en/_index.html +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: "Tekton" -linkTitle: "Tekton.dev Homepage" - ---- - -{{< blocks/cover title="Cloud Native CI/CD" subtitle="" image_anchor="smart" color="orange" height="med">}} -
- }}"> - Documentation - - - GitHub - -
-{{< /blocks/cover >}} - -{{% blocks/showcase color="link" %}} - -{{< blocks/section color="danger" >}} -{{% blocks/feature icon="fas fa-globe-asia" title="Standardization" %}} -Tekton standardizes CI/CD tooling and processes across vendors, languages, -and deployment environments. It works well with Jenkins, Jenkins X, Skaffold, -Knative, and many other popular CI/CD tools. -{{% /blocks/feature %}} - - -{{% blocks/feature icon="fas fa-medal" title="Built-in best practices" %}} -Tekton lets you create CI/CD systems quickly, -giving you scalable, serverless, cloud native execution out of the box. -{{% /blocks/feature %}} - - -{{% blocks/feature icon="fas fa-feather" title="Maximum flexibility" %}} -Tekton abstracts the underlying implementation so that you can choose the build, -test, and deploy workflow based on your team's requirements. -{{% /blocks/feature %}} - - -{{< /blocks/section >}} - - - -{{< blocks/partners-alternate color="dark" >}} - -{{< blocks/section color="white" >}} -{{% blocks/feature icon="fas fa-code" title="Install Tekton" %}} -[Get Tekton here](/docs/installation/) -{{% /blocks/feature %}} - - -{{% blocks/feature icon="fab fa-github" title="Contributions welcome" %}} -[Join the Tekton Community](/community/) -{{% /blocks/feature %}} - - -{{% blocks/feature icon="fas fa-chalkboard" title="Try Tekton" %}} -[Get started with Tekton](/docs/getting-started/) -{{% /blocks/feature %}} - - -{{< /blocks/section >}} - -{{% blocks/manifesto color="dark" %}} diff --git a/content/en/_index.md b/content/en/_index.md new file mode 100644 index 000000000..66d81eb22 --- /dev/null +++ b/content/en/_index.md @@ -0,0 +1,108 @@ +--- +title: Tekton +layout: hextra-home +--- + +{{< hextra/hero-badge link="https://www.cncf.io/blog/2026/03/24/tekton-becomes-a-cncf-incubating-project/" >}} + CNCF Incubating Project + {{< icon name="arrow-circle-right" attributes="height=14" >}} +{{< /hextra/hero-badge >}} + +
+{{< hextra/hero-headline >}} + Cloud Native CI/CD +{{< /hextra/hero-headline >}} +
+ +
+{{< hextra/hero-subtitle >}} + Tekton is a powerful and flexible open-source framework 
for creating CI/CD systems on Kubernetes. +{{< /hextra/hero-subtitle >}} +
+ +
+{{< hextra/hero-button text="Get Started" link="/docs/getting-started/" >}} +{{< hextra/hero-button text="Documentation" link="/docs/" style="alt" >}} +
+ +
+ Tekton CI/CD workflow: Clone → Unit Tests → Build → Deploy +
+
+ +
+

Why Tekton?

+

Built for Kubernetes from day one

+
+ +
+ +
+
+
+ +
+

Cloud Native

+
+

Runs on Kubernetes, uses containers as building blocks, and treats clusters as first-class resources.

+
+ +
+
+
+ +
+

Decoupled

+
+

One Pipeline can deploy to any Kubernetes cluster. Tasks run in isolation and resources swap easily between runs.

+
+ +
+
+
+ +
+

Typed Resources

+
+

Typed resources enable easy swapping of implementations — e.g. Kaniko vs Buildkit for image builds.

+
+
+ +
+

Trusted By

+

Industry leaders building with Tekton in production

+
+ +
+ + + + + + + + + + + +
+ +
+

Get Started

+
+ +{{< cards >}} + {{< card link="/docs/installation/" title="Install Tekton" icon="download" subtitle="Get Tekton running on your Kubernetes cluster in minutes." >}} + {{< card link="/docs/getting-started/pipelines/" title="Build a Pipeline" icon="archive" subtitle="Chain Tasks together into a complete CI/CD workflow." >}} + {{< card link="/docs/getting-started/pipelines-as-code/" title="Pipelines as Code" icon="document-text" subtitle="Git-native CI/CD — define pipelines alongside your source code." >}} + {{< card link="/docs/chains/" title="Supply Chain Security" icon="shield-check" subtitle="Sign and attest artifacts automatically with Tekton Chains." >}} + {{< card link="/docs/getting-started/tasks/" title="Create Your First Task" icon="play" subtitle="Hands-on tutorial: build and run a Task step by step." >}} + {{< card link="/community/" title="Join the Community" icon="user-group" subtitle="Connect with contributors, join Slack, and help shape Tekton." >}} +{{< /cards >}} + +
+ + + Tekton is an incubating project at the Cloud Native Computing Foundation + +
diff --git a/content/en/blog/_index.md b/content/en/blog/_index.md index 697efb5cc..e02c9e2d7 100644 --- a/content/en/blog/_index.md +++ b/content/en/blog/_index.md @@ -1,7 +1,4 @@ --- title: Blog -menu: - main: - weight: 40 --- diff --git a/content/en/community/_index.md b/content/en/community/_index.md index 0a3735910..afb96ee9e 100644 --- a/content/en/community/_index.md +++ b/content/en/community/_index.md @@ -1,9 +1,4 @@ --- title: Community -menu: - main: - weight: 30 +type: community --- - -Find more information on the [Tekton Community -repository](https://github.com/tektoncd/community). diff --git a/content/en/docs/Catalog/_index.md b/content/en/docs/Catalog/_index.md index b6e93b65e..5529d2018 100644 --- a/content/en/docs/Catalog/_index.md +++ b/content/en/docs/Catalog/_index.md @@ -1,7 +1,7 @@ --- title: "Catalog" linkTitle: "Catalog" -weight: 7 +weight: 13 description: > Reusable Task and Pipeline Resources --- diff --git a/content/en/docs/Concepts/_index.md b/content/en/docs/Concepts/_index.md index c6c0115f8..c9cbbba26 100644 --- a/content/en/docs/Concepts/_index.md +++ b/content/en/docs/Concepts/_index.md @@ -1,4 +1,3 @@ - This section presents an overview of what the Tekton project is and how some of its building blocks work. diff --git a/content/en/docs/Concepts/concept-model.md b/content/en/docs/Concepts/concept-model.md index a3b2306e3..9cb90ae30 100644 --- a/content/en/docs/Concepts/concept-model.md +++ b/content/en/docs/Concepts/concept-model.md @@ -1,4 +1,3 @@ - ## Steps, Tasks, and Pipelines diff --git a/content/en/docs/Concepts/overview.md b/content/en/docs/Concepts/overview.md index ac63b5b12..33a5fad52 100644 --- a/content/en/docs/Concepts/overview.md +++ b/content/en/docs/Concepts/overview.md @@ -1,4 +1,3 @@ - diff --git a/content/en/docs/Concepts/supply-chain-security.md b/content/en/docs/Concepts/supply-chain-security.md index a15a7e1f8..b500a7962 100644 --- a/content/en/docs/Concepts/supply-chain-security.md +++ b/content/en/docs/Concepts/supply-chain-security.md @@ -1,4 +1,3 @@ - Given the increasing complexity of the CI/CD space, with projects that often have dozens or even hundreds of dependencies, the supply chain has become a diff --git a/content/en/docs/Contribute/_index.md b/content/en/docs/Contribute/_index.md index 74f654073..15f24b467 100644 --- a/content/en/docs/Contribute/_index.md +++ b/content/en/docs/Contribute/_index.md @@ -1,12 +1,10 @@ - There are many ways to contribute to Tekton! Whether you want to write code, improve documentation, or help in other ways, we're happy to have you. diff --git a/content/en/docs/Contribute/blog-guidelines.md b/content/en/docs/Contribute/blog-guidelines.md index 4daa7a826..f749ced1a 100644 --- a/content/en/docs/Contribute/blog-guidelines.md +++ b/content/en/docs/Contribute/blog-guidelines.md @@ -1,4 +1,3 @@ - If you have an interesting, fun, or practical idea that you want to share with the world, you can write a blog post about it! diff --git a/content/en/docs/Contribute/code-contributions.md b/content/en/docs/Contribute/code-contributions.md index 54f8f1405..ab75fd869 100644 --- a/content/en/docs/Contribute/code-contributions.md +++ b/content/en/docs/Contribute/code-contributions.md @@ -1,4 +1,3 @@ - If you would like to contribute code to Tekton, we'd love your help! Tekton is an open source project and we welcome contributions from everyone. diff --git a/content/en/docs/Contribute/doc-con-content.md b/content/en/docs/Contribute/doc-con-content.md index c4e5fbfd1..9d232f44b 100644 --- a/content/en/docs/Contribute/doc-con-content.md +++ b/content/en/docs/Contribute/doc-con-content.md @@ -1,190 +1,188 @@ - - -Follow these guidelines when planning and writing Tekton documentation. - -## Types of content - -Each page in the Tekton documentation set must fall into one of the following categories: - -+ **Tutorials** - These are introductory guides, focused on new users: - - Task-oriented - - Make sure it works: For Tekton, this means pick a runtime and stick with it - throughout the entire tutorial, so you can have reproducible steps that a - newcomer can copy-paste. - - Do not explain anything in detail, focus on doing. This is a common - pitfall, trying to explain things too early. - - Do not provide more than one way of doing things. Pick the easiest path and - go with it. This is another common pitfall, trying to show everything you - can do in an introductory guide. - - Show results immediately. - -+ **How-to guides** - These are docs that explain how to complete a particular task: - - Goal oriented. - - Assumes some knowledge from the user, no need to start from scratch. - - Focus on the goal at hand. - - It’s fine to show several ways to achieve the goal, but there’s no need to - be comprehensive. (That’s what reference docs are for). - - Provide a descriptive title. - -+ **Reference Guides** - These provide the technical details for everything - Tekton does. The most common example is the API reference docs: - - Be accurate - - Mirror the codebase when possible, so your reader knows what to expect. - -+ **Explanations** - Conceptual information: - - Descriptive content, explain how things work - - Do not include steps here - -You can find an in-depth discussion about this documentation framework in the -[Grand Unified Theory of Documentation](https://diataxis.fr/). - -## Structure - -We want our documentation to be easily digestible, so make sure your writing is clear and concise. -Follow these simple guidelines: - -* Break up long thoughts into multiple sentences. -* Break up longer documents into logical sections. -* Use paragraphs to separate thoughts and ideas. -* Ensure paragraphs flow into one another - that is, they are logically connected. -* Use headings and subheadings to indicate topics and sub-topics. Don't use - more than 3 subheading levels. - -## Style and tone - -**Always use active voice.** It's much easier to parse and more user-friendly -(relatable) than passive. Passive voice sounds stuffy and officious. It takes -much more brain work to understand and causes the reader to zone out. - - - - - - - - - - -
Do - Don't -
The installer copies the files to the destination directory. - The files being installed are copied to the destination directory by the installer. -
- ---- - -**Never use "should" or "might."** These words introduce uncertainty. We're -either sure how our software works or we're not. - - - - - - - - - - -
Do - Don't -
Click Build to start your build. - When you click Build, your build should start. -
- ---- - -**Don't use future tense** unless no other way exists to convey the information. -Future tense creates an unwanted deferral of the result, while the result of -each step should be immediate. For example: - - - - - - - - - - -
Do - Don't -
Click Build to start your build. - When you click Build, your build will start. -
- ---- - -**Avoid repetition.** Repetition is a "mental stumbling block" that gets in the -way of the reader's comprehension of the thought or topic. For example: - - - - - - - - - - -
Do - Don't -
Smurfcaptor supports single- and multi-Smurf capture events, including batch processing. - Smurfcaptor supports single- and multi-Smurf capture events. Smurfcaptor also supports batch processing. -
- ---- - -**Never use "we."** The reader will wonder whether they're part of the "we" or -not. For example: - - - - - - - - - - -
Do - Don't -
Version 3.0 adds support for Smurf counting. - In version 3.0 we added Smurf counting support. -
- ---- - -**Never use "might" or "may."** "May" is often confused with "might" but they -are not the same. "Might" introduces uncertainty just like "should," while "may" -implies the permission has been granted and not that an option or action is -available to the user. For example: - - - - - - - - - - - - - - -
Do - Don't -
The build starts when you click Build. - The build might start when you click Build. -
You can choose either high or low Smurf sensitivity. - You may choose high or low Smurf sensitivity. -
- +--- +title: "Content guidelines" +linkTitle: "Content guidelines" +weight: 1 +description: > + Content guidelines for Tekton documentation +--- + +Follow these guidelines when planning and writing Tekton documentation. + +## Types of content + +Each page in the Tekton documentation set must fall into one of the following categories: + ++ **Tutorials** - These are introductory guides, focused on new users: + - Task-oriented + - Make sure it works: For Tekton, this means pick a runtime and stick with it + throughout the entire tutorial, so you can have reproducible steps that a + newcomer can copy-paste. + - Do not explain anything in detail, focus on doing. This is a common + pitfall, trying to explain things too early. + - Do not provide more than one way of doing things. Pick the easiest path and + go with it. This is another common pitfall, trying to show everything you + can do in an introductory guide. + - Show results immediately. + ++ **How-to guides** - These are docs that explain how to complete a particular task: + - Goal oriented. + - Assumes some knowledge from the user, no need to start from scratch. + - Focus on the goal at hand. + - It’s fine to show several ways to achieve the goal, but there’s no need to + be comprehensive. (That’s what reference docs are for). + - Provide a descriptive title. + ++ **Reference Guides** - These provide the technical details for everything + Tekton does. The most common example is the API reference docs: + - Be accurate + - Mirror the codebase when possible, so your reader knows what to expect. + ++ **Explanations** - Conceptual information: + - Descriptive content, explain how things work + - Do not include steps here + +You can find an in-depth discussion about this documentation framework in the +[Grand Unified Theory of Documentation](https://diataxis.fr/). + +## Structure + +We want our documentation to be easily digestible, so make sure your writing is clear and concise. +Follow these simple guidelines: + +* Break up long thoughts into multiple sentences. +* Break up longer documents into logical sections. +* Use paragraphs to separate thoughts and ideas. +* Ensure paragraphs flow into one another - that is, they are logically connected. +* Use headings and subheadings to indicate topics and sub-topics. Don't use + more than 3 subheading levels. + +## Style and tone + +**Always use active voice.** It's much easier to parse and more user-friendly +(relatable) than passive. Passive voice sounds stuffy and officious. It takes +much more brain work to understand and causes the reader to zone out. + + + + + + + + + + +
Do + Don't +
The installer copies the files to the destination directory. + The files being installed are copied to the destination directory by the installer. +
+ +--- + +**Never use "should" or "might."** These words introduce uncertainty. We're +either sure how our software works or we're not. + + + + + + + + + + +
Do + Don't +
Click Build to start your build. + When you click Build, your build should start. +
+ +--- + +**Don't use future tense** unless no other way exists to convey the information. +Future tense creates an unwanted deferral of the result, while the result of +each step should be immediate. For example: + + + + + + + + + + +
Do + Don't +
Click Build to start your build. + When you click Build, your build will start. +
+ +--- + +**Avoid repetition.** Repetition is a "mental stumbling block" that gets in the +way of the reader's comprehension of the thought or topic. For example: + + + + + + + + + + +
Do + Don't +
Smurfcaptor supports single- and multi-Smurf capture events, including batch processing. + Smurfcaptor supports single- and multi-Smurf capture events. Smurfcaptor also supports batch processing. +
+ +--- + +**Never use "we."** The reader will wonder whether they're part of the "we" or +not. For example: + + + + + + + + + + +
Do + Don't +
Version 3.0 adds support for Smurf counting. + In version 3.0 we added Smurf counting support. +
+ +--- + +**Never use "might" or "may."** "May" is often confused with "might" but they +are not the same. "Might" introduces uncertainty just like "should," while "may" +implies the permission has been granted and not that an option or action is +available to the user. For example: + + + + + + + + + + + + + + +
Do + Don't +
The build starts when you click Build. + The build might start when you click Build. +
You can choose either high or low Smurf sensitivity. + You may choose high or low Smurf sensitivity. +
+ diff --git a/content/en/docs/Contribute/doc-con-formatting.md b/content/en/docs/Contribute/doc-con-formatting.md index c7aacb0d9..22be8b2e8 100644 --- a/content/en/docs/Contribute/doc-con-formatting.md +++ b/content/en/docs/Contribute/doc-con-formatting.md @@ -1,86 +1,84 @@ - - -Tekton documentation uses Markdown to format the content. See the -[CommonMark tutorial](https://commonmark.org/help/) to learn the basics. - -## Markdown formatting conventions: - -- **Lists** - - Capitalize the first word for each item. - - Don't put a period at the end of each item in lists containing only nouns - or single-word items. - - Use sentence punctuation in any other case. - -- **Code Format** - - Use code formatting when referencing API objects, commands, files and - directories. - - Use angle brackets for placeholders such as variables. For example: - - ``` - kubectl apply -f - ``` - -- **Markdown files** - - Hard-wrap the file lines so they are not longer than 80 characters. - - Use [reference-style links][ref-links] if the URL is too long. There's no - specific URL length, use your best judgment to keep markdown files - readable. - -## Embed code samples - -You can import code from external files. To do this, use the [`readfile` -shortcode][readfile-shortcode] with the `code` and `lang` options. For example, -the following code embeds the file `samples/task.yaml`: - -```html -{{}} -``` - -This is rendered as: - -{{< readfile file="samples/task.yaml" code="true" lang="yaml" >}} - -You can also embed code samples in tabs using the `tabpane` shortcode. For -example, the following code embeds `samples/pipeline1.yaml` and -`samples/pipeline2.yaml` in different tabs: - -```html -{{}} -{{}} -{{}} -{{}} - -{{}} -{{}} -{{}} -{{}} -``` - -Rendered as: - -{{< tabs >}} -{{< tab "v1beta1" >}} -{{< readfile file="samples/pipeline1.yaml" code="true" lang="yaml" >}} -{{< /tab >}} - -{{< tab "v1" >}} -{{< readfile file="samples/pipeline2.yaml" code="true" lang="yaml" >}} -{{< /tab >}} -{{< /tabs >}} - -{{% alert title="Warning" color="warning" %}} -The `path` parameter don't support relative paths to parent directories. For -example, `path="../sample.yaml"` does not work. -{{% /alert %}} - -[ref-links]: https://www.markdownguide.org/basic-syntax/#reference-style-links -[readfile-shortcode]: https://www.docsy.dev/docs/adding-content/shortcodes/#include-code-files - +--- +title: "Formatting conventions" +linkTitle: "Formatting conventions" +weight: 2 +description: > + Formatting conventions for Tekton documentation +--- + +Tekton documentation uses Markdown to format the content. See the +[CommonMark tutorial](https://commonmark.org/help/) to learn the basics. + +## Markdown formatting conventions: + +- **Lists** + - Capitalize the first word for each item. + - Don't put a period at the end of each item in lists containing only nouns + or single-word items. + - Use sentence punctuation in any other case. + +- **Code Format** + - Use code formatting when referencing API objects, commands, files and + directories. + - Use angle brackets for placeholders such as variables. For example: + + ``` + kubectl apply -f + ``` + +- **Markdown files** + - Hard-wrap the file lines so they are not longer than 80 characters. + - Use [reference-style links][ref-links] if the URL is too long. There's no + specific URL length, use your best judgment to keep markdown files + readable. + +## Embed code samples + +You can import code from external files. To do this, use the [`readfile` +shortcode][readfile-shortcode] with the `code` and `lang` options. For example, +the following code embeds the file `samples/task.yaml`: + +```html +{{}} +``` + +This is rendered as: + +{{< readfile file="samples/task.yaml" code="true" lang="yaml" >}} + +You can also embed code samples in tabs using the `tabpane` shortcode. For +example, the following code embeds `samples/pipeline1.yaml` and +`samples/pipeline2.yaml` in different tabs: + +```html +{{}} +{{}} +{{}} +{{}} + +{{}} +{{}} +{{}} +{{}} +``` + +Rendered as: + +{{< tabs >}} +{{< tab "v1beta1" >}} +{{< readfile file="samples/pipeline1.yaml" code="true" lang="yaml" >}} +{{< /tab >}} + +{{< tab "v1" >}} +{{< readfile file="samples/pipeline2.yaml" code="true" lang="yaml" >}} +{{< /tab >}} +{{< /tabs >}} + +{{% alert title="Warning" color="warning" %}} +The `path` parameter don't support relative paths to parent directories. For +example, `path="../sample.yaml"` does not work. +{{% /alert %}} + +[ref-links]: https://www.markdownguide.org/basic-syntax/#reference-style-links +[readfile-shortcode]: https://www.docsy.dev/docs/adding-content/shortcodes/#include-code-files + diff --git a/content/en/docs/Contribute/doc-con-writing.md b/content/en/docs/Contribute/doc-con-writing.md index 39ad14a58..0a5d14a76 100644 --- a/content/en/docs/Contribute/doc-con-writing.md +++ b/content/en/docs/Contribute/doc-con-writing.md @@ -1,103 +1,101 @@ - - -“I hate writing!” is a line heard all too often. Documenting a feature can be an intimidating task. - -The most common questions that come up when writing a document are: - -- “Where do I start?” -- “What do I say?” -- “How do I know when I’m done?” -- “Who can I ask for help?” -- “Where can I find writing resources?” - -These and many other questions can form mental barriers that discourage from contributing to -documentation. When we remove or lower these barriers, writing can become an enjoyable, -satisfying activity. - -## I hate writing! - -That’s fine. Professional writers do, too. We’re just better at hiding it! The first thing to -remember is that writing is an iterative process. Professional writers never produce the perfect -document on their first try. - -Instead, we start with an SFD (Shoddy First Draft), and then edit, edit, edit. The goal is not to -write a perfect document, but to write one that is good enough to convey the information in an -approachable way. This removes the pressure of writing a polished piece and instead lets us focus -on conveying the correct information in the right order and proportion. - -Write an SFD and brainstorm it with others - it really works! - -## Where do I start? - -Begin by asking yourself, “Who is my audience?” Engineers? Less technical readers, such as -management? Aliens? Once you know your audience, you’ll know how much detail to include, the -tone to use, and who your reviewers will be. - -Next, put yourself in your audience’s shoes and ask, “What do I, as this type of reader, need -to know to use this thing I’m writing about?” Things that are obvious to you may not be obvious -to an outsider. What tasks will the reader need to accomplish? What will they need to know to -accomplish each task? - -Write down headings representing each of those major points or areas. For example, “Installation,” -“Configuration,” “Operation modes,” or “Command-line options.” These major things become the outline -of your document. - -## What do I say? - -Look at your outline. What does the reader need to know about each of those topics or areas of -interest? For example, if you're writing a procedure, you may also want to include prerequisites - that -is, steps the reader must complete before starting the procedure. What are the possible scenarios when -starting the procedure? What are the possible outcomes? Do the steps differ depending on the starting -scenario and the desired outcome? - -Write down some ideas or sub-topics for each key area. These become the mini table of contents for -each section. Once you have those, your document outline is complete! - -Flesh out one section at a time, keeping the level of detail appropriate to your audience. For example, -if you’re writing a command-line reference, chances are the reader will be an advanced user who needs -to understand the intricacies of each option, including allowed values, the default value, the behavior -resulting from each value, and any exceptions and caveats. - -On the other hand, if you’re documenting a specific feature, start by describing what it does, so that -the reader has context, and describe how to use the feature afterwards. Put the “what” before the “how” -and start simple, then introduce more detail as you go. - -## Active or passive voice? - -**Always use active voice.** Active voice is much easier to parse and more relatable for the reader than -passive voice. Passive voice sounds stuffy and officious; it reads like a boring legal document or that -college textbook that made you fall asleep. It takes much more brain work to understand and causes the -reader to zone out. - -Consider the following: - -"The files being installed are copied to the destination directory by the installer. The destination -directory is created by the installer before the files are copied." - -And now read the same information in active voice: - -"The installer creates the destination directory, then copies the files to it." - -Night and day, don't you think? - -## How do I know when I’m done? - -This is the hardest part. When do you stop writing? - -Go over each section and ask yourself again, “would I know how to use this thing based solely on what’s -written?” If so, send your document out for review. Tekton engineers and contributors will confirm the -document’s technical accuracy, while a technical writer will polish the style, tone, and structure of -the document. - -## How can I learn more? - -Take a look at the [Google Developer Style Guide](https://developers.google.com/style/). It covers -style, tone, grammar, and punctuation. +--- +title: "Tips and tricks for good writing" +linkTitle: "Tips and tricks for good writing" +weight: 5 +description: + Tips and tricks to write high quality documentation +--- + +“I hate writing!” is a line heard all too often. Documenting a feature can be an intimidating task. + +The most common questions that come up when writing a document are: + +- “Where do I start?” +- “What do I say?” +- “How do I know when I’m done?” +- “Who can I ask for help?” +- “Where can I find writing resources?” + +These and many other questions can form mental barriers that discourage from contributing to +documentation. When we remove or lower these barriers, writing can become an enjoyable, +satisfying activity. + +## I hate writing! + +That’s fine. Professional writers do, too. We’re just better at hiding it! The first thing to +remember is that writing is an iterative process. Professional writers never produce the perfect +document on their first try. + +Instead, we start with an SFD (Shoddy First Draft), and then edit, edit, edit. The goal is not to +write a perfect document, but to write one that is good enough to convey the information in an +approachable way. This removes the pressure of writing a polished piece and instead lets us focus +on conveying the correct information in the right order and proportion. + +Write an SFD and brainstorm it with others - it really works! + +## Where do I start? + +Begin by asking yourself, “Who is my audience?” Engineers? Less technical readers, such as +management? Aliens? Once you know your audience, you’ll know how much detail to include, the +tone to use, and who your reviewers will be. + +Next, put yourself in your audience’s shoes and ask, “What do I, as this type of reader, need +to know to use this thing I’m writing about?” Things that are obvious to you may not be obvious +to an outsider. What tasks will the reader need to accomplish? What will they need to know to +accomplish each task? + +Write down headings representing each of those major points or areas. For example, “Installation,” +“Configuration,” “Operation modes,” or “Command-line options.” These major things become the outline +of your document. + +## What do I say? + +Look at your outline. What does the reader need to know about each of those topics or areas of +interest? For example, if you're writing a procedure, you may also want to include prerequisites - that +is, steps the reader must complete before starting the procedure. What are the possible scenarios when +starting the procedure? What are the possible outcomes? Do the steps differ depending on the starting +scenario and the desired outcome? + +Write down some ideas or sub-topics for each key area. These become the mini table of contents for +each section. Once you have those, your document outline is complete! + +Flesh out one section at a time, keeping the level of detail appropriate to your audience. For example, +if you’re writing a command-line reference, chances are the reader will be an advanced user who needs +to understand the intricacies of each option, including allowed values, the default value, the behavior +resulting from each value, and any exceptions and caveats. + +On the other hand, if you’re documenting a specific feature, start by describing what it does, so that +the reader has context, and describe how to use the feature afterwards. Put the “what” before the “how” +and start simple, then introduce more detail as you go. + +## Active or passive voice? + +**Always use active voice.** Active voice is much easier to parse and more relatable for the reader than +passive voice. Passive voice sounds stuffy and officious; it reads like a boring legal document or that +college textbook that made you fall asleep. It takes much more brain work to understand and causes the +reader to zone out. + +Consider the following: + +"The files being installed are copied to the destination directory by the installer. The destination +directory is created by the installer before the files are copied." + +And now read the same information in active voice: + +"The installer creates the destination directory, then copies the files to it." + +Night and day, don't you think? + +## How do I know when I’m done? + +This is the hardest part. When do you stop writing? + +Go over each section and ask yourself again, “would I know how to use this thing based solely on what’s +written?” If so, send your document out for review. Tekton engineers and contributors will confirm the +document’s technical accuracy, while a technical writer will polish the style, tone, and structure of +the document. + +## How can I learn more? + +Take a look at the [Google Developer Style Guide](https://developers.google.com/style/). It covers +style, tone, grammar, and punctuation. diff --git a/content/en/docs/Contribute/run-locally.md b/content/en/docs/Contribute/run-locally.md index f5f4c5cd7..7c4398203 100644 --- a/content/en/docs/Contribute/run-locally.md +++ b/content/en/docs/Contribute/run-locally.md @@ -1,4 +1,3 @@ - ## Running in a Docker container diff --git a/content/en/docs/Contribute/vendor-docs.md b/content/en/docs/Contribute/vendor-docs.md index 06dfe2c00..30a9bd254 100644 --- a/content/en/docs/Contribute/vendor-docs.md +++ b/content/en/docs/Contribute/vendor-docs.md @@ -1,4 +1,3 @@ - {{% pageinfo %}} **Important**: Documentation contributions to this website must be licensed diff --git a/content/en/docs/Getting-started/_index.md b/content/en/docs/Getting-started/_index.md index 38cea725a..6c5256e00 100644 --- a/content/en/docs/Getting-started/_index.md +++ b/content/en/docs/Getting-started/_index.md @@ -1,4 +1,3 @@ - -Welcome to Tekton. Tekton is an open-source cloud native CICD (Continuous -Integration and Continuous Delivery/Deployment) solution. Check the [Concepts -section](/docs/concepts/) to learn more about how Tekton works. +Tekton is an open-source, cloud-native CI/CD framework that runs on Kubernetes. +It lets you define pipelines as code, run tasks in isolated containers, and +integrate with any Git provider or artifact registry. -Let's get started! You can go ahead and [create your first task with -Tekton](/docs/getting-started/tasks/). +Check the [Concepts](/docs/concepts/) section to understand how Tasks, Pipelines, +and Runs fit together. -If you are looking for a Git-native CI/CD experience with Tekton, check out -[Getting Started with Pipelines-as-Code](https://pipelinesascode.com/docs/getting-started/). -It lets you define your pipelines in a `.tekton/` directory alongside your -source code and integrates with GitHub, GitLab, Bitbucket, and more. \ No newline at end of file +## Choose Your Path + +{{< cards >}} + {{< card link="/docs/getting-started/pipelines/" title="Build a Pipeline" icon="archive" subtitle="Chain multiple Tasks into a Pipeline that clones, tests, builds, and deploys." >}} + {{< card link="/docs/getting-started/pipelines-as-code/" title="Pipelines as Code" icon="document-text" subtitle="Git-native CI/CD — define pipelines in a .tekton/ directory alongside your source." >}} + {{< card link="/docs/getting-started/tasks/" title="Create Your First Task" icon="play" subtitle="Define a Task with steps, run it, and see the results — the fundamental building block." >}} + {{< card link="/docs/getting-started/triggers/" title="Set Up Triggers" icon="lightning-bolt" subtitle="Automatically start Pipelines from Git push, PR events, or webhooks." >}} + {{< card link="/docs/getting-started/supply-chain-security/" title="Supply Chain Security" icon="shield-check" subtitle="Sign and attest your build artifacts with Tekton Chains." >}} +{{< /cards >}} + +## What You'll Need + +- A **Kubernetes cluster** (v1.27+) — [kind](https://kind.sigs.k8s.io/), + [minikube](https://minikube.sigs.k8s.io/), or any managed cluster +- **kubectl** configured to talk to your cluster +- **Tekton Pipelines** installed — see the [Installation guide](/docs/installation/) + +## Step-by-Step + +1. **Install Tekton** on your cluster by following the + [installation instructions](/docs/installation/). + +2. **Create your first Task** — a Task defines one or more steps that run in + containers. Start with the [Tasks tutorial](/docs/getting-started/tasks/). + +3. **Build a Pipeline** — combine Tasks into an end-to-end workflow. See the + [Pipelines tutorial](/docs/getting-started/pipelines/). + +4. **Automate with Triggers** — fire Pipelines from Git events. See + [Triggers](/docs/getting-started/triggers/). + +5. **Secure your supply chain** — add signing and attestation with + [Tekton Chains](/docs/getting-started/supply-chain-security/). + +## Git-Native CI/CD + +For a fully Git-native experience, try +[Pipelines as Code](https://pipelinesascode.com/docs/getting-started/). +Define your pipelines in a `.tekton/` directory and get automatic PR checks +with GitHub, GitLab, Bitbucket, or Forgejo. diff --git a/content/en/docs/Getting-started/pipelines-as-code.md b/content/en/docs/Getting-started/pipelines-as-code.md index 5f72fedf6..1d8560848 100644 --- a/content/en/docs/Getting-started/pipelines-as-code.md +++ b/content/en/docs/Getting-started/pipelines-as-code.md @@ -1,11 +1,50 @@ - + +[Pipelines as Code](https://pipelinesascode.com/) lets you define your CI/CD +pipelines using Tekton PipelineRuns and Tasks in files stored directly alongside +your source code — versioned, reviewed, and collaborated on just like your +application code. + +## Why Pipelines as Code? + +- **Git-native**: Pipeline definitions live in a `.tekton/` directory in your repo +- **Automatic PR checks**: Pipeline runs trigger on pull requests and pushes, + with status reported directly on the PR +- **Multi-provider**: Works with GitHub, GitLab, Bitbucket, and Forgejo +- **GitOps commands**: Control pipelines from PR comments — `/retest`, `/test`, + `/cancel` +- **Automatic resolution**: Tasks are resolved from your repo, Artifact Hub, or + remote URLs + +## Get Started + +The fastest way to try Pipelines as Code: + +1. **Install** on a [kind](https://kind.sigs.k8s.io/) cluster or + [OpenShift Local](https://developers.redhat.com/products/openshift-local/overview): + + ```bash + tkn pac bootstrap + ``` + +2. **Create a repository** with a `.tekton/` directory containing your + PipelineRun YAML. + +3. **Open a Pull Request** and watch the pipeline run with status checks. + +For the full walkthrough, see the +[Pipelines as Code Getting Started guide](https://pipelinesascode.com/docs/getting-started/). + +## Learn More + +{{< cards >}} + {{< card link="https://pipelinesascode.com/docs/guide/" title="Authoring Guide" icon="book-open" subtitle="Learn how to author and structure your pipeline definitions." >}} + {{< card link="https://pipelinesascode.com/docs/guide/gitops_commands/" title="GitOps Commands" icon="terminal" subtitle="Control pipeline runs directly from PR comments." >}} + {{< card link="https://pipelinesascode.com/docs/guide/resolver/" title="Task Resolution" icon="search" subtitle="Automatic resolution from local files, Artifact Hub, and remote URLs." >}} +{{< /cards >}} diff --git a/content/en/docs/Getting-started/pipelines.md b/content/en/docs/Getting-started/pipelines.md index c9d3925ec..19d011706 100644 --- a/content/en/docs/Getting-started/pipelines.md +++ b/content/en/docs/Getting-started/pipelines.md @@ -1,12 +1,10 @@ - This tutorial shows you how to: diff --git a/content/en/docs/Getting-started/supply-chain-security.md b/content/en/docs/Getting-started/supply-chain-security.md index 701c4378c..1d7432cee 100644 --- a/content/en/docs/Getting-started/supply-chain-security.md +++ b/content/en/docs/Getting-started/supply-chain-security.md @@ -1,12 +1,10 @@ - This guide shows you how to: diff --git a/content/en/docs/Getting-started/tasks.md b/content/en/docs/Getting-started/tasks.md index 5eb465744..ee2368a95 100644 --- a/content/en/docs/Getting-started/tasks.md +++ b/content/en/docs/Getting-started/tasks.md @@ -1,12 +1,10 @@ - This tutorial shows you how to diff --git a/content/en/docs/Getting-started/triggers.md b/content/en/docs/Getting-started/triggers.md index 005d1ac56..3cd4e2f28 100644 --- a/content/en/docs/Getting-started/triggers.md +++ b/content/en/docs/Getting-started/triggers.md @@ -1,12 +1,10 @@ - This tutorial shows you how to diff --git a/content/en/docs/How-to-guides/_index.md b/content/en/docs/How-to-guides/_index.md index 60762ba5d..03195b307 100644 --- a/content/en/docs/How-to-guides/_index.md +++ b/content/en/docs/How-to-guides/_index.md @@ -1,4 +1,3 @@ - This section includes common practical applications of Tekton. diff --git a/content/en/docs/How-to-guides/clone-repository.md b/content/en/docs/How-to-guides/clone-repository.md index c710377ed..6cecaa24c 100644 --- a/content/en/docs/How-to-guides/clone-repository.md +++ b/content/en/docs/How-to-guides/clone-repository.md @@ -1,4 +1,3 @@ - This guide shows you how to: diff --git a/content/en/docs/How-to-guides/kaniko-build-push.md b/content/en/docs/How-to-guides/kaniko-build-push.md index f38a278cb..76545bd08 100644 --- a/content/en/docs/How-to-guides/kaniko-build-push.md +++ b/content/en/docs/How-to-guides/kaniko-build-push.md @@ -1,4 +1,3 @@ - {{% pageinfo %}} {{% readfile "/vendor/disclaimer.md" %}} diff --git a/content/en/docs/Installation/_index.md b/content/en/docs/Installation/_index.md index a81c25f99..6c7c154f0 100644 --- a/content/en/docs/Installation/_index.md +++ b/content/en/docs/Installation/_index.md @@ -1,4 +1,3 @@ - This section contains guides to install the latest version of the Tekton components. For other versions, select the component and version from the diff --git a/content/en/docs/Installation/additional-configs.md b/content/en/docs/Installation/additional-configs.md index fa26d0750..b8d77892c 100644 --- a/content/en/docs/Installation/additional-configs.md +++ b/content/en/docs/Installation/additional-configs.md @@ -1,17 +1,15 @@ - {{% readfile "/docs/Pipelines/additional-configs.md" %}} --- -{{< card >}} +{{< docsy-card >}} Source for this document [available on GitHub](https://github.com/tektoncd/pipeline/blob/main/docs/additional-configs.md). -{{< /card >}} +{{< /docsy-card >}} diff --git a/content/en/docs/Installation/local-installation.md b/content/en/docs/Installation/local-installation.md index aaae7c8ac..d0817e8c4 100644 --- a/content/en/docs/Installation/local-installation.md +++ b/content/en/docs/Installation/local-installation.md @@ -1,4 +1,3 @@ - There are several tools to run a local Kubernetes cluster on your computer. The Tekton documentation often includes instructions for either **minikube** or diff --git a/content/en/docs/Installation/operator.md b/content/en/docs/Installation/operator.md new file mode 100644 index 000000000..4d0dd5601 --- /dev/null +++ b/content/en/docs/Installation/operator.md @@ -0,0 +1,79 @@ +--- +title: "Install Tekton Operator" +linkTitle: "Tekton Operator" +weight: 4 +description: > + Install and manage Tekton components using the Tekton Operator +--- + +The [Tekton Operator](https://github.com/tektoncd/operator) provides a +Kubernetes-native way to install, upgrade, and manage Tekton components on your +cluster. It uses a `TektonConfig` custom resource to manage the lifecycle of +Tekton Pipelines, Triggers, Dashboard, and Chains. + +## Install the Operator + +Install the latest release of Tekton Operator: + +```bash +kubectl apply -f https://storage.googleapis.com/tekton-releases/operator/latest/release.yaml +``` + +Monitor the installation: + +```bash +kubectl get deploy -n tekton-operator --watch +``` + +## Create a TektonConfig + +Once the Operator is running, create a `TektonConfig` to install all Tekton +components: + +```yaml +apiVersion: operator.tekton.dev/v1alpha1 +kind: TektonConfig +metadata: + name: config +spec: + profile: all + targetNamespace: tekton-pipelines +``` + +Apply it: + +```bash +kubectl apply -f tektonconfig.yaml +``` + +The `profile` field controls which components are installed: + +| Profile | Components | +|---------|-----------| +| `all` | Pipelines, Triggers, Dashboard, Chains | +| `basic` | Pipelines, Triggers | +| `lite` | Pipelines only | + +## Verify the installation + +```bash +kubectl get tektonconfig config +kubectl get pods -n tekton-pipelines +``` + +## Upgrade + +To upgrade Tekton components, update the Operator: + +```bash +kubectl apply -f https://storage.googleapis.com/tekton-releases/operator/latest/release.yaml +``` + +The Operator automatically upgrades the managed components. + +## Learn more + +- [Tekton Operator repository](https://github.com/tektoncd/operator) +- [TektonConfig API reference](https://github.com/tektoncd/operator/blob/main/docs/TektonConfig.md) +- [OpenShift Pipelines](https://docs.openshift.com/pipelines/latest/about/about-pipelines.html) + uses the Tekton Operator under the hood diff --git a/content/en/docs/Installation/pipelines.md b/content/en/docs/Installation/pipelines.md index 82deaf3e8..57ababfd8 100644 --- a/content/en/docs/Installation/pipelines.md +++ b/content/en/docs/Installation/pipelines.md @@ -1,4 +1,3 @@ - {{< readfile "/docs/Pipelines/install.md" >}} --- -{{< card >}} +{{< docsy-card >}} Source for this document [available on GitHub](https://github.com/tektoncd/pipeline/blob/main/docs/install.md). -{{< /card >}} +{{< /docsy-card >}} diff --git a/content/en/docs/Installation/triggers.md b/content/en/docs/Installation/triggers.md index 610c36ef5..8a0cf60f2 100644 --- a/content/en/docs/Installation/triggers.md +++ b/content/en/docs/Installation/triggers.md @@ -1,17 +1,15 @@ - {{% readfile "/docs/Triggers/install.md" %}} --- -{{< card >}} +{{< docsy-card >}} Source for this document [available on GitHub](https://github.com/tektoncd/triggers/blob/main/docs/install.md). -{{< /card >}} +{{< /docsy-card >}} diff --git a/content/en/docs/_index.md b/content/en/docs/_index.md index 1cb0348bf..cdefcb650 100644 --- a/content/en/docs/_index.md +++ b/content/en/docs/_index.md @@ -2,9 +2,6 @@ title: "Welcome to Tekton" linkTitle: "Documentation" weight: 1 -menu: - main: - weight: 1 --- Tekton is a cloud-native solution for building CI/CD systems. It consists of diff --git a/content/en/search.md b/content/en/search.md deleted file mode 100644 index 2e3f6b79d..000000000 --- a/content/en/search.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Search -layout: search - ---- - diff --git a/docs/plans/2026-03-30-hextra-theme-migration-design.md b/docs/plans/2026-03-30-hextra-theme-migration-design.md new file mode 100644 index 000000000..6c354c16e --- /dev/null +++ b/docs/plans/2026-03-30-hextra-theme-migration-design.md @@ -0,0 +1,238 @@ +# Phase 1: Hextra Theme Migration — Design Document + +**Date:** 2026-03-30 +**Status:** Draft +**Estimated effort:** 3–4 working days, 1 developer, 1 PR (6 commits) + +## Problem + +tekton.dev runs the stock Docsy/Hugo theme (v0.6.0, circa 2018–2019) with +minimal customisation. The result: + +- **Sidebar permanently expanded** — 50+ links visible at once across 12+ + sections, no collapse-to-active-section behaviour +- **No "On this page" TOC** — long reference pages (Pipeline API, TaskRuns) + have zero in-page wayfinding +- **Missing table stakes** — no Ctrl+K search, no dark mode, no breadcrumbs +- **Landing page is a card dump** — addressed separately in Phase 2 + +## Decision + +**Approach A — Full Hextra migration.** Replace Docsy with the Hextra Hugo +theme. This gives collapsible sidebar, sticky right-hand TOC, FlexSearch with +Ctrl+K, dark mode, and breadcrumbs out of the box — zero custom code for any +of them. + +Rejected alternatives: +- *Approach B (Hextra + Docsy shim layer):* slower, creates tech debt from + two co-existing themes +- *Approach C (Docsy upgrade + customise):* least disruptive but maintains + custom implementations of everything Hextra gives for free + +## Current State Inventory + +| Area | Files | Notes | +|------|-------|-------| +| Theme | `go.mod` (Docsy v0.6.0) | Hugo module | +| Hugo version | 0.107.0 | Dockerfile, netlify.toml | +| Custom layouts | 30 HTML templates in `layouts/` | Sidebar, navbar, search, community | +| Custom SCSS | 2 files, ~200 lines | Brand colors, click-to-copy, banner | +| Custom JS | 5 files | version-switcher, release-switcher, click-to-copy, asciinema, anchor | +| Sync pipeline | `sync/sync.py` + 8 YAML configs | Pulls docs from 7+ Tekton repos | +| Build | Netlify, `make` targets | `make serve`, `make production-build` | +| Config | `sidebar_menu_compact: false`, `breadcrumb_disable: true` | Pain points are literally config flags | + +## Design + +### 1. Foundation Swap + +**`go.mod`** — drop Docsy, add Hextra: + +``` +require ( + github.com/imfing/hextra v0.9.x +) +``` + +**`config.yaml`** — change theme key: + +```yaml +theme: + - github.com/imfing/hextra +``` + +Delete the entire `params.ui` block (sidebar_menu_compact, +sidebar_menu_foldable, breadcrumb_disable, sidebar_search_disable, +feedback). Hextra does not use these keys; its equivalents are on by default. + +**`netlify.toml`** — bump Hugo: + +```toml +HUGO_VERSION = "0.131.0" +``` + +**`Dockerfile`** — new base image: + +```dockerfile +FROM hugomods/hugo:exts-0.131.0 +``` + +### 2. Sidebar & Navigation + +**Delete** the 3 custom sidebar partials (170 lines): + +- `layouts/partials/sidebar-tree-docs.html` +- `layouts/partials/sidebar-tree-vault.html` +- `layouts/partials/sidebar.html` + +**Delete** the 12-entry `menu.docs` block from `config.yaml`. + +Hextra auto-generates the sidebar from the file tree under +`content/en/docs/`, reading `weight` and `title` from each `_index.md`. +The existing content structure maps directly — no front matter changes +needed. + +Hextra behaviour: +- Collapses all sections; expands only the one containing the current page +- Sticky right-hand "On this page" TOC from `##`/`###` headings (default on) +- Breadcrumbs at top of every doc page (default on) + +### 3. Shortcode Migration + +| Shortcode | Usages | Files | Migration | +|-----------|--------|-------|-----------| +| `readfile` | 9 | 6 | Keep existing wrapper or write 10-line Hugo `readFile` shim | +| `blocks/cover`, `blocks/section`, `blocks/feature` | 13 | 1 (`_index.html`) | Thin stub shortcodes — render basic HTML. Phase 2 replaces entirely | +| `imgproc` | 4 | 2 blog posts | 5-line shim wrapping Hugo `resources.Get` + `.Fit` | +| `tab` / `tabpane` | 10 | 3 | Compatibility shim or update 3 files to Hextra `tabs` syntax | + +Total: 4 shortcode files to write, 0–3 content files to touch. + +### 4. Custom Features + +**Version selector** — the navbar dropdown driven by `version-switcher.js` +(145 lines) and `release-switcher.js` (62 lines) with a hardcoded JSON +blob generated by `sync.py`. + +Port: +- Move into `layouts/partials/navbar-extra.html` (Hextra supports this) +- Restyle dropdown CSS classes from Bootstrap (`dropdown-item`, `d-none`) + to Hextra's Tailwind utility classes +- JS logic and JSON blob unchanged — they are theme-independent DOM + manipulation +- Vault pages (`/vault/pipelines-v1.6.x/`) continue working as content dirs + +**Sync script** — generates `_index.md` with standard Hugo front matter +(`title`, `weight`, `linkTitle`). No Docsy-specific keys. No changes +required. + +**Community page** — `layouts/community/list.html` calls +`community-links.html` partial. Port to work with Hextra's base template. +Keep the partial. + +### 5. Styling & Brand + +**Delete** `_variables_project.scss` and `_styles_project.scss` (181 lines). + +**Create** `assets/css/custom.css` (~30 lines): + +```css +:root { + --primary-hue: 234; /* Tekton navy #00109F */ + --primary-saturation: 100%; +} +``` + +Hextra derives dark mode palette from primary hue automatically. + +Additional config: +- Logo: `params.navbar.logo` → `assets/icons/logo.svg` (existing file) +- Fonts: `params.font: false` → use system font stack (matches current site) +- Banner: Hextra's built-in banner component with Tekton gradient + +### 6. Build Pipeline + +| File | Change | +|------|--------| +| `go.mod` | Swap Docsy → Hextra module | +| `go.sum` | Regenerated by `hugo mod tidy` | +| `Dockerfile` | Base image `hugomods/hugo:exts-0.131.0` | +| `netlify.toml` | `HUGO_VERSION = "0.131.0"` | +| `package.json` | Drop `autoprefixer`, `postcss`, `postcss-cli` devDependencies | +| `Makefile` | No changes | + +## Migration Sequence + +Each step is a commit-able checkpoint: + +| Step | Day | Description | Validation | +|------|-----|-------------|------------| +| 1 | 1 | Foundation swap (go.mod, config, Hugo version) | Expect build failure | +| 2 | 1 | Delete dead layouts (sidebar, baseof overrides, search) | `hugo server` builds, docs pages render | +| 3 | 2 | Shortcode shims (readfile, imgproc, tabs, blocks stubs) | Full site builds, all 14 shortcode pages render | +| 4 | 2–3 | Version selector port (navbar-extra partial, restyle) | Vault navigation works | +| 5 | 3 | Brand styling (custom.css, logo, fonts, banner) | Visual match to Tekton brand | +| 6 | 3 | Community page port | Community layout renders | + +## Testing Strategy + +**Automated:** +- Netlify deploy previews on the PR — existing `checklinks` plugin catches + broken internal links and missing assets + +**Manual checklist:** +- [ ] Sidebar: only active section expanded, children collapse on navigate +- [ ] TOC: visible on right for long pages, follows scroll +- [ ] Search: Ctrl+K opens overlay, results include all synced docs +- [ ] Dark mode: toggle works, code blocks readable in both modes +- [ ] Version selector: dropdown renders, vault links resolve +- [ ] Blog: posts render with dates, images, code blocks +- [ ] Mobile: sidebar → hamburger, TOC → top accordion +- [ ] Community page: links render, contribute link works + +**Regression baseline:** screenshot top-10 trafficked pages before +migration. Visual diff after. + +## Phase 2 (follow-up) + +Guided onboarding landing page — replace `_index.html` card dump with an +end-to-end walkthrough (install → first pipeline → first trigger) using +Hextra's native card/callout/steps components. Separate design document. + +## Files Deleted + +``` +layouts/partials/sidebar-tree-docs.html +layouts/partials/sidebar-tree-vault.html +layouts/partials/sidebar.html +layouts/partials/sidebar-tree-docs.html +layouts/docs/baseof.html +layouts/_default/baseof.html +layouts/_default/search.html +assets/scss/_variables_project.scss +assets/scss/_styles_project.scss +``` + +## Files Created + +``` +assets/css/custom.css +layouts/partials/navbar-extra.html +layouts/shortcodes/imgproc.html (shim) +layouts/shortcodes/blocks/cover.html (stub) +layouts/shortcodes/blocks/section.html (stub) +layouts/shortcodes/blocks/feature.html (stub) +``` + +## Files Modified + +``` +go.mod +go.sum +config.yaml +netlify.toml +Dockerfile +docker-compose.yaml +package.json +layouts/community/list.html +``` diff --git a/go.mod b/go.mod index bae6e41cf..9f8e4d677 100644 --- a/go.mod +++ b/go.mod @@ -1,8 +1,5 @@ module github.com/tektoncd/website -go 1.18 +go 1.26 -require ( - github.com/google/docsy v0.6.0 // indirect - github.com/google/docsy/dependencies v0.6.0 // indirect -) +require github.com/imfing/hextra v0.12.1 // indirect diff --git a/go.sum b/go.sum index 8bfa477e6..a889b9180 100644 --- a/go.sum +++ b/go.sum @@ -1,19 +1,2 @@ -github.com/FortAwesome/Font-Awesome v0.0.0-20210804190922-7d3d774145ac/go.mod h1:IUgezN/MFpCDIlFezw3L8j83oeiIuYoj28Miwr/KUYo= -github.com/FortAwesome/Font-Awesome v0.0.0-20220831210243-d3a7818c253f/go.mod h1:IUgezN/MFpCDIlFezw3L8j83oeiIuYoj28Miwr/KUYo= -github.com/google/docsy v0.3.0 h1:wR0e0xJ6qIj/RPq2AP1Ufm44BCak9Sl72H2BWNAc/JA= -github.com/google/docsy v0.3.0/go.mod h1:opkofZo7WlNw+/pjrHSC2nAHJHQ6Xnms9vtL/htBvds= -github.com/google/docsy v0.4.0 h1:Eyt2aiDC1fnw/Qq/9xnIqUU5n5Yyk4c8gX3nBDdTv/4= -github.com/google/docsy v0.4.0/go.mod h1:vJjGkHNaw9bO42gpFTWwAUzHZWZEVlK46Kx7ikY5c7Y= -github.com/google/docsy v0.5.1 h1:D/ZdFKiE29xM/gwPwQzmkyXhcbQGkReRS6aGrF7lnYk= -github.com/google/docsy v0.5.1/go.mod h1:maoUAQU5H/d+FrZIB4xg1EVWAx7RyFMGSDJyWghm31E= -github.com/google/docsy v0.5.2-0.20221111165106-246a2e1e80ce h1:Zb4tKQCf5Pwsw+/Hjg9JpYcoFGadF340Y6Nv1QC8mes= -github.com/google/docsy v0.5.2-0.20221111165106-246a2e1e80ce/go.mod h1:maoUAQU5H/d+FrZIB4xg1EVWAx7RyFMGSDJyWghm31E= -github.com/google/docsy v0.6.0 h1:43bVF18t2JihAamelQjjGzx1vO2ljCilVrBgetCA8oI= -github.com/google/docsy v0.6.0/go.mod h1:VKKLqD8PQ7AglJc98yBorATfW7GrNVsn0kGXVYF6G+M= -github.com/google/docsy/dependencies v0.3.0/go.mod h1:2zZxHF+2qvkyXhLZtsbnqMotxMukJXLaf8fAZER48oo= -github.com/google/docsy/dependencies v0.4.0/go.mod h1:2zZxHF+2qvkyXhLZtsbnqMotxMukJXLaf8fAZER48oo= -github.com/google/docsy/dependencies v0.5.1/go.mod h1:EDGc2znMbGUw0RW5kWwy2oGgLt0iVXBmoq4UOqstuNE= -github.com/google/docsy/dependencies v0.6.0 h1:BFXDCINbp8ZuUGl/mrHjMfhCg+b1YX+hVLAA5fGW7Pc= -github.com/google/docsy/dependencies v0.6.0/go.mod h1:EDGc2znMbGUw0RW5kWwy2oGgLt0iVXBmoq4UOqstuNE= -github.com/twbs/bootstrap v4.6.1+incompatible/go.mod h1:fZTSrkpSf0/HkL0IIJzvVspTt1r9zuf7XlZau8kpcY0= -github.com/twbs/bootstrap v4.6.2+incompatible/go.mod h1:fZTSrkpSf0/HkL0IIJzvVspTt1r9zuf7XlZau8kpcY0= +github.com/imfing/hextra v0.12.1 h1:3t1n0bmJbDzSTVfht93UDcfF1BXMRjeFojA071ri2l8= +github.com/imfing/hextra v0.12.1/go.mod h1:vi+yhpq8YPp/aghvJlNKVnJKcPJ/VyAEcfC1BSV9ARo= diff --git a/i18n/en.toml b/i18n/en.toml index d2f1e8617..ce9d603f7 100644 --- a/i18n/en.toml +++ b/i18n/en.toml @@ -1,4 +1,15 @@ +# Navigation menu items +[Documentation] +other = "Documentation" +[Blog] +other = "Blog" + +[Community] +other = "Community" + +[GitHub] +other = "GitHub" # UI strings. Buttons and similar. diff --git a/layouts/404.html b/layouts/404.html deleted file mode 100644 index 354df6b1a..000000000 --- a/layouts/404.html +++ /dev/null @@ -1,8 +0,0 @@ -{{ define "main"}} -
-
-

Not found

-

Oops! This page doesn't exist. Try going back to our home page.

-
-
-{{ end }} diff --git a/layouts/_default/_markup/render-codeblock-mermaid.html b/layouts/_default/_markup/render-codeblock-mermaid.html deleted file mode 100644 index 5d34ed5fe..000000000 --- a/layouts/_default/_markup/render-codeblock-mermaid.html +++ /dev/null @@ -1,5 +0,0 @@ -
- {{- .Inner }} -
- -{{ .Page.Store.Set "hasMermaid" true -}} diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html deleted file mode 100644 index dc2e2f6ec..000000000 --- a/layouts/_default/baseof.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - {{ partial "head.html" . }} - {{ if eq .Kind "home" }} - {{ $cssAsciinema := "css/asciinema-player.css" }} - {{ $cssAsciinema := resources.Get $cssAsciinema | toCSS (dict "enableSourceMap" false) | postCSS | minify | fingerprint }} - - {{ end }} - - -
- {{ partial "navbar.html" . }} -
-
-
- {{ block "main" . }}{{ end }} -
- {{ partial "footer.html" . }} -
- {{ partial "privacy-notice.html" }} - {{ partialCached "scripts.html" . }} - - diff --git a/layouts/_default/search.html b/layouts/_default/search.html deleted file mode 100644 index cd9db57ca..000000000 --- a/layouts/_default/search.html +++ /dev/null @@ -1,24 +0,0 @@ -{{ define "main" }} -
-
-
- -
-{{ with .Site.Params.gcs_engine_id }} - - -{{ end }} -
-
- -{{ end }} \ No newline at end of file diff --git a/layouts/_partials/custom/footer.html b/layouts/_partials/custom/footer.html new file mode 100644 index 000000000..491da9770 --- /dev/null +++ b/layouts/_partials/custom/footer.html @@ -0,0 +1,4 @@ + +
+ Tekton is a Cloud Native Computing Foundation incubating project. +
diff --git a/layouts/_partials/custom/head-end.html b/layouts/_partials/custom/head-end.html new file mode 100644 index 000000000..867626034 --- /dev/null +++ b/layouts/_partials/custom/head-end.html @@ -0,0 +1,137 @@ +{{ $chromaCSS := resources.Get "css/chroma.css" }} +{{ if $chromaCSS }} +{{ $chromaCSS = $chromaCSS | fingerprint }} + +{{ end }} + +{{ $jsVerSwitcher := resources.Get "js/version-switcher.js" }} +{{ if $jsVerSwitcher }} +{{ $jsVerSwitcher = $jsVerSwitcher | fingerprint }} + +{{ end }} + +{{ $jsRelSwitcher := resources.Get "js/release-switcher.js" }} +{{ if $jsRelSwitcher }} +{{ $jsRelSwitcher = $jsRelSwitcher | fingerprint }} + +{{ end }} + + + + diff --git a/layouts/_partials/navbar-link.html b/layouts/_partials/navbar-link.html new file mode 100644 index 000000000..f637cd152 --- /dev/null +++ b/layouts/_partials/navbar-link.html @@ -0,0 +1,88 @@ +{{- $currentPage := .currentPage -}} +{{- $link := .link -}} +{{- $item := .item -}} +{{- $icon := .icon -}} +{{- $external := .external -}} + +{{- $active := or ($currentPage.HasMenuCurrent "main" $item) ($currentPage.IsMenuCurrent "main" $item) -}} +{{- /* Additional check for section landing pages in multilingual sites (normalize trailing slashes) */ -}} +{{- if and (not $active) $link -}} + {{- $currentPath := strings.TrimSuffix "/" $currentPage.RelPermalink -}} + {{- $linkPath := strings.TrimSuffix "/" $link -}} + {{- if eq $currentPath $linkPath -}} + {{- $active = true -}} + {{- end -}} +{{- end -}} +{{- $activeClass := cond $active "hx:font-medium" "hx:text-gray-600 hx:hover:text-gray-800 hx:dark:text-gray-400 hx:dark:hover:text-gray-200" -}} + +{{- if $item.HasChildren -}} +{{- /* Dropdown menu for items with children */ -}} +
+ + +
+{{- else -}} +{{- /* Regular menu item without children */ -}} + + {{- if $icon -}} + + {{- partial "utils/icon" (dict "name" $icon "attributes" `height="1em" class="hx:inline-block"`) -}} + + {{- end -}} + + {{- or (T $item.Identifier) $item.Name | safeHTML -}} + + +{{- end -}} diff --git a/layouts/_shortcodes/hextra/hero-button.html b/layouts/_shortcodes/hextra/hero-button.html new file mode 100644 index 000000000..35e7e7d8e --- /dev/null +++ b/layouts/_shortcodes/hextra/hero-button.html @@ -0,0 +1,24 @@ +{{- $link := .Get "link" -}} +{{- $text := .Get "text" -}} +{{- $style := .Get "style" | default "primary" -}} + +{{- $external := hasPrefix $link "http" -}} +{{- $href := cond (hasPrefix $link "/") ($link | relURL) $link -}} + +{{ if eq $style "alt" }} + + {{- $text -}} + +{{ else }} + + {{- $text -}} + +{{ end }} diff --git a/layouts/community/list.html b/layouts/community/list.html index d959a97a6..ecdadabce 100644 --- a/layouts/community/list.html +++ b/layouts/community/list.html @@ -1,20 +1,14 @@ {{ define "main" }} - -
-
- -

Welcome to the Tekton Community!

-

Our mission is to be the industry-standard, cloud-native CI/CD - platform components and ecosystem.

-
-
-
- -{{ partial "community-links.html" . }} - -
- {{ .Content }} +
+
+

Tekton Community

+

+ Join us in building the industry-standard, cloud-native CI/CD platform. +

+
+ + {{ partial "community-links.html" . }}
{{ end }} diff --git a/layouts/docs/baseof.html b/layouts/docs/baseof.html deleted file mode 100644 index e922412d9..000000000 --- a/layouts/docs/baseof.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - {{ partial "head.html" . }} - - -
- {{ partial "navbar.html" . }} -
-
-
-
- - -
- {{ partial "version-banner.html" . }} - {{ if strings.Contains .Page.RelPermalink "/docs/" -}} - {{ partial "release-selector.html" }} - {{ end -}} - {{ if not .Site.Params.ui.breadcrumb_disable }}{{ partial "breadcrumb.html" . }}{{ end }} - {{ block "main" . }}{{ end }} -
-
-
- {{ partial "footer.html" . }} -
- {{ partial "scripts.html" . }} - - diff --git a/layouts/partials/community-links.html b/layouts/partials/community-links.html index e1e74f2d4..449291dff 100644 --- a/layouts/partials/community-links.html +++ b/layouts/partials/community-links.html @@ -1,118 +1,216 @@ - + +
+ + diff --git a/layouts/partials/favicons.html b/layouts/partials/favicons.html deleted file mode 100644 index 43abe87e5..000000000 --- a/layouts/partials/favicons.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/layouts/partials/footer.html b/layouts/partials/footer.html deleted file mode 100644 index 503520cf2..000000000 --- a/layouts/partials/footer.html +++ /dev/null @@ -1,38 +0,0 @@ -{{ $links := .Site.Params.links }} -
-
-
-
- {{ with $links }} - {{ with index . "user"}} - {{ template "footer-links-block" . }} - {{ end }} - {{ end }} -
-
- {{ with $links }} - {{ with index . "developer"}} - {{ template "footer-links-block" . }} - {{ end }} - {{ end }} -
-
- © {{ now.Year}} {{ T "footer_all_rights_reserved" | markdownify}} - {{ if not .Site.Params.ui.footer_about_disable }} - {{ with .Site.GetPage "about" }}

{{ .Title }}

{{ end }} - {{ end }} -
-
-
-
-{{ define "footer-links-block" }} - -{{ end }} diff --git a/layouts/partials/head.html b/layouts/partials/head.html deleted file mode 100644 index 39231beac..000000000 --- a/layouts/partials/head.html +++ /dev/null @@ -1,24 +0,0 @@ - - -{{ hugo.Generator }} -{{ if eq (getenv "HUGO_ENV") "production" }} - -{{ else }} - -{{ end }} -{{ range .AlternativeOutputFormats -}} - -{{ end -}} -{{ partialCached "favicons.html" . }} -{{ if .IsHome }}{{ .Title }}{{ else }}{{ with .Title }}{{ . }} | {{ end }}Tekton{{ end }} -{{- template "_internal/opengraph.html" . -}} -{{- template "_internal/schema.html" . -}} -{{- template "_internal/twitter_cards.html" . -}} -{{ if eq (getenv "HUGO_ENV") "production" }} -{{ template "_internal/google_analytics.html" . }} -{{ end }} -{{ partialCached "head-css.html" . "asdf" }} - -{{ partial "hooks/head-end.html" . }} diff --git a/layouts/partials/navbar-version-selector-docs.html b/layouts/partials/navbar-version-selector-docs.html deleted file mode 100644 index 5df78b96e..000000000 --- a/layouts/partials/navbar-version-selector-docs.html +++ /dev/null @@ -1,19 +0,0 @@ -{{ $jsVerSwitcher := resources.Get "js/version-switcher.js" }} -{{ $jsVerSwitcher := $jsVerSwitcher | fingerprint }} - - - \ No newline at end of file diff --git a/layouts/partials/navbar-version-selector-vault.html b/layouts/partials/navbar-version-selector-vault.html deleted file mode 100644 index 506125dc0..000000000 --- a/layouts/partials/navbar-version-selector-vault.html +++ /dev/null @@ -1,21 +0,0 @@ -{{ $jsVerSwitcher := resources.Get "js/version-switcher.js" }} -{{ $jsVerSwitcher := $jsVerSwitcher | minify | fingerprint }} - - - \ No newline at end of file diff --git a/layouts/partials/navbar.html b/layouts/partials/navbar.html deleted file mode 100644 index ea0db843e..000000000 --- a/layouts/partials/navbar.html +++ /dev/null @@ -1,42 +0,0 @@ -{{ $cover := .HasShortcode "blocks/cover" }} - diff --git a/layouts/partials/page-meta-links.html b/layouts/partials/page-meta-links.html deleted file mode 100644 index 8cfffc1e6..000000000 --- a/layouts/partials/page-meta-links.html +++ /dev/null @@ -1,26 +0,0 @@ -{{ if .Path }} -{{ $gh_repo := ($.Param "github_repo") }} -{{ $gh_subdir := ($.Param "github_subdir") }} -{{ $gh_project_repo := ($.Param "github_project_repo") }} -{{ if $gh_repo }} -
-{{ $editURL := printf "%s/edit/main/content/%s" $gh_repo .Path }} -{{ if $gh_project_repo }} -{{ $filename := .File.LogicalName }} -{{ if and $gh_project_repo (eq $filename "_index.md") }} -{{ $filename = "README.md" }} -{{ end }} -{{ $editURL = printf "%s/edit/main/docs/%s" $gh_project_repo $filename }} -{{ else if and ($gh_subdir) (.Site.Language.Lang) }} -{{ $editURL = printf "%s/edit/main/%s/content/%s/%s" $gh_repo $gh_subdir ($.Site.Language.Lang) $.Path }} -{{ else if .Site.Language.Lang }} -{{ $editURL = printf "%s/edit/main/content/%s/%s" $gh_repo ($.Site.Language.Lang) .Path }} -{{ else if $gh_subdir }} -{{ $editURL = printf "%s/edit/main/%s/content/%s" $gh_repo $gh_subdir $.Path }} -{{ end }} -{{ $issuesURL := printf "%s/issues/new?title=%s" $gh_repo (htmlEscape ($.Title | default $.LinkTitle ))}} - {{ T "post_edit_this" }} - {{ T "post_create_issue" }} -
-{{ end }} -{{ end }} \ No newline at end of file diff --git a/layouts/partials/privacy-notice.html b/layouts/partials/privacy-notice.html deleted file mode 100644 index 487cbf4b8..000000000 --- a/layouts/partials/privacy-notice.html +++ /dev/null @@ -1,21 +0,0 @@ -
-
-
-

This website uses cookies

-

- We use analytics and cookies to understand site traffic and offer - you a better browsing experience. Learn more about our privacy policy. -

- -
-
-
- \ No newline at end of file diff --git a/layouts/partials/release-selector.html b/layouts/partials/release-selector.html deleted file mode 100644 index ef3eae0c0..000000000 --- a/layouts/partials/release-selector.html +++ /dev/null @@ -1,20 +0,0 @@ -{{ $jsRelSwitcher := resources.Get "js/release-switcher.js" }} -{{ $jsRelSwitcher := $jsRelSwitcher | fingerprint }} - - - diff --git a/layouts/partials/scripts.html b/layouts/partials/scripts.html deleted file mode 100644 index 1feebaf49..000000000 --- a/layouts/partials/scripts.html +++ /dev/null @@ -1,30 +0,0 @@ - - -{{ $jsBase := resources.Get "js/base.js" }} -{{ $jsSearch := resources.Get "js/search.js" | resources.ExecuteAsTemplate "js/search.js" .Site.Home }} -{{ $jsAnchor := resources.Get "js/anchor.js" }} -{{ $js := (slice $jsBase $jsSearch $jsAnchor) | resources.Concat "js/main.js" }} -{{ if .Site.IsServer }} - -{{ else }} -{{ $js := $js | minify | fingerprint }} - -{{ end }} - -{{ $c2cJS := resources.Get "js/click-to-copy.js" | minify | fingerprint }} - - -{{ if .Page.Store.Get "hasMermaid" }} - -{{ end }} - -{{ partial "hooks/body-end.html" . }} diff --git a/layouts/partials/sidebar-tree-docs.html b/layouts/partials/sidebar-tree-docs.html deleted file mode 100644 index a9a6147cd..000000000 --- a/layouts/partials/sidebar-tree-docs.html +++ /dev/null @@ -1,68 +0,0 @@ -{{/* Render documentation nav from definition in config file */}} - -
- {{ if not .Site.Params.ui.sidebar_search_disable -}} - - {{ else -}} -
- -
-
- {{ end -}} - - -
diff --git a/layouts/partials/sidebar-tree-vault.html b/layouts/partials/sidebar-tree-vault.html deleted file mode 100644 index f1affbf56..000000000 --- a/layouts/partials/sidebar-tree-vault.html +++ /dev/null @@ -1,76 +0,0 @@ -{{/* We cache this partial for bigger sites and set the active class client side. */}} -{{ $sidebarCacheLimit := cond (isset .Site.Params.ui "sidebar_cache_limit") .Site.Params.ui.sidebar_cache_limit 2000 -}} -{{ $shouldDelayActive := ge (len .Site.Pages) $sidebarCacheLimit -}} -
- {{ if not .Site.Params.ui.sidebar_search_disable -}} - - {{ else -}} -
- -
-
- {{ end -}} - -
-{{ define "section-tree-nav-section-vault" -}} -{{ $s := .section -}} -{{ $p := .page -}} -{{ $shouldDelayActive := .shouldDelayActive -}} -{{ $sidebarMenuTruncate := .sidebarMenuTruncate -}} -{{ $treeRoot := cond (eq .ulNr 0) true false -}} -{{ $ulNr := .ulNr -}} -{{ $ulShow := .ulShow -}} -{{ $active := and (not $shouldDelayActive) (eq $s $p) -}} -{{ $activePath := and (not $shouldDelayActive) (or (eq $p $s) ($p.IsDescendant $s)) -}} -{{ $show := cond (or (lt $ulNr $ulShow) $activePath (and (not $shouldDelayActive) (eq $s.Parent $p.Parent)) (and (not $shouldDelayActive) (eq $s.Parent $p)) (not $p.Site.Params.ui.sidebar_menu_compact) (and (not $shouldDelayActive) ($p.IsDescendant $s.Parent))) true false -}} -{{ $mid := printf "m-%s" ($s.RelPermalink | anchorize) -}} -{{ $pages_tmp := where (union $s.Pages $s.Sections).ByWeight ".Params.toc_hide" "!=" true -}} -{{ $pages := $pages_tmp | first $sidebarMenuTruncate -}} -{{ $withChild := gt (len $pages) 0 -}} -{{ $manualLink := cond (isset $s.Params "manuallink") $s.Params.manualLink ( cond (isset $s.Params "manuallinkrelref") (relref $s $s.Params.manualLinkRelref) $s.RelPermalink) -}} -{{ $manualLinkTitle := cond (isset $s.Params "manuallinktitle") $s.Params.manualLinkTitle $s.Title -}} -
  • - {{ if (and $p.Site.Params.ui.sidebar_menu_foldable (ge $ulNr 1)) -}} - - - {{ else -}} - {{ with $s.Params.Icon}}{{ end }}{{ $s.LinkTitle }} - {{- end }} - {{- if $withChild }} - {{- $ulNr := add $ulNr 1 }} -
      - {{ range $pages -}} - {{ if (not (and (eq $s $p.Site.Home) (eq .Params.toc_root true))) -}} - {{ template "section-tree-nav-section-vault" (dict "page" $p "section" . "shouldDelayActive" $shouldDelayActive "sidebarMenuTruncate" $sidebarMenuTruncate "ulNr" $ulNr "ulShow" $ulShow) }} - {{- end }} - {{- end }} -
    - {{- end }} -
  • -{{- end }} diff --git a/layouts/partials/sidebar.html b/layouts/partials/sidebar.html deleted file mode 100644 index 2084f04ee..000000000 --- a/layouts/partials/sidebar.html +++ /dev/null @@ -1,31 +0,0 @@ -{{/* The "active" toggle here may delay rendering, so we only cache this side bar menu for bigger sites. -*/}}{{ $sidebarCacheLimit := cond (isset .Site.Params.ui "sidebar_cache_limit") .Site.Params.ui.sidebar_cache_limit 2000 -}} -{{ $shouldCache := ge (len .Site.Pages) $sidebarCacheLimit -}} -{{ $sidebarCacheTypeRoot := cond (isset .Site.Params.ui "sidebar_cache_type_root") .Site.Params.ui.sidebar_cache_type_root false -}} -{{ $isDocs := (strings.Contains .RelPermalink "docs/") }} -{{ $isVault := (strings.Contains .RelPermalink "vault/") }} -{{ if $shouldCache -}} - {{ $mid := printf "m-%s" (.RelPermalink | anchorize) }} - - {{ partialCached "sidebar-tree.html" . .FirstSection.RelPermalink }} -{{ else -}} - {{ if $isDocs -}} - {{ partial "sidebar-tree-docs.html" . }} - {{- else if $isVault -}} - {{ partial "sidebar-tree-vault.html" . }} - {{- else -}} - {{ partial "sidebar-tree.html" . }} - {{- end }} -{{- end }} diff --git a/layouts/partials/tutorial-modal.html b/layouts/partials/tutorial-modal.html deleted file mode 100644 index 9f14d494d..000000000 --- a/layouts/partials/tutorial-modal.html +++ /dev/null @@ -1,34 +0,0 @@ - diff --git a/layouts/shortcodes/alert.html b/layouts/shortcodes/alert.html new file mode 100644 index 000000000..e3c6fbbe4 --- /dev/null +++ b/layouts/shortcodes/alert.html @@ -0,0 +1,7 @@ +{{ $_hugo_config := `{ "version": 1 }` }} +{{ $title := .Get "title" | default "Note" }} +{{ $color := .Get "color" | default "primary" }} +
    + {{ $title }} +
    {{ .Inner | markdownify }}
    +
    diff --git a/layouts/shortcodes/blocks/cover.html b/layouts/shortcodes/blocks/cover.html deleted file mode 100644 index 1f7d838b7..000000000 --- a/layouts/shortcodes/blocks/cover.html +++ /dev/null @@ -1,45 +0,0 @@ -{{ $_hugo_config := `{ "version": 1 }` }} -{{ $blockID := printf "td-cover-block-%d" .Ordinal }} -{{ $promo_image := (.Page.Resources.ByType "image").GetMatch "**background*" }} -{{ $logo_image := (.Page.Resources.ByType "image").GetMatch "**logo*" }} -{{ $col_id := .Get "color" | default "dark" }} -{{ $image_anchor := .Get "image_anchor" | default "smart" }} -{{ $logo_anchor := .Get "logo_anchor" | default "smart" }} -{{/* Height can be one of: auto, min, med, max, full. */}} -{{ $height := .Get "height" | default "max" }} -{{ with $promo_image }} -{{ $promo_image_big := (.Fill (printf "1920x1080 %s" $image_anchor)) }} -{{ $promo_image_small := (.Fill (printf "960x540 %s" $image_anchor)) }} - - - -{{ end }} -
    -
    - -
    -
    -
    - {{ with .Get "title" }}

    {{ $title := . }}{{ with $logo_image }}{{ $logo_image_resized := (.Fit (printf "70x70 %s" $logo_anchor)) }}{{ end }}{{ $title | html }}

    {{ end }} - {{ with .Get "subtitle" }}

    {{ . | html }}

    {{ end }} -
    - {{ .Inner | markdownify}} -
    -
    -
    -
    -
    -
    diff --git a/layouts/shortcodes/blocks/manifesto.html b/layouts/shortcodes/blocks/manifesto.html deleted file mode 100644 index 6501beccd..000000000 --- a/layouts/shortcodes/blocks/manifesto.html +++ /dev/null @@ -1,24 +0,0 @@ -{{ $_hugo_config := `{ "version": 1 }` }} -{{ $col_id := .Get "color" | default .Ordinal }} -{{ $height := .Get "height" | default "auto" }} -{{/* Height can be one of: auto, min, med, max, full. */}} - -
    -
    -
    -
    - Cloud Native Computing Foundation -
    -
    -
    -
    -
    -
    -

    Tekton is an incubating Cloud Native Computing - Foundation (CNCF) project and follows - the OpenSSF best practices.

    -
    -
    -
    -
    diff --git a/layouts/shortcodes/blocks/partners-alternate.html b/layouts/shortcodes/blocks/partners-alternate.html deleted file mode 100644 index 592849eb1..000000000 --- a/layouts/shortcodes/blocks/partners-alternate.html +++ /dev/null @@ -1,21 +0,0 @@ -{{ $_hugo_config := `{ "version": 1 }` }} -{{ $col_id := .Get "color" | default .Ordinal }} -{{ $height := .Get "height" | default "auto" }} -
    -
    -
    -
    - tekton friends -
    -
    -
    -
    -
    -
    -

    Tekton is a collaborative project where members of the ecosystem contribute together to make CI/CD easier for everyone. - See the individuals and organizations - that are involved in the Tekton project. -

    -
    -
    -
    diff --git a/layouts/shortcodes/blocks/partners.html b/layouts/shortcodes/blocks/partners.html deleted file mode 100644 index 5bf2cb388..000000000 --- a/layouts/shortcodes/blocks/partners.html +++ /dev/null @@ -1,46 +0,0 @@ -{{ $_hugo_config := `{ "version": 1 }` }} -{{ $col_id := .Get "color" | default .Ordinal }} -{{ $height := .Get "height" | default "auto" }} -{{ $type := .Get "type" | default "" }} - -
    -
    -
    -
    -

    created by

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -

    in partnership with

    -
    -
    -
    -
    - -
    -
    - -
    -
    - -
    -
    -
    -
    - -
    -
    - -
    -
    - -
    -
    -
    -
    diff --git a/layouts/shortcodes/blocks/showcase.html b/layouts/shortcodes/blocks/showcase.html deleted file mode 100644 index 94603adcb..000000000 --- a/layouts/shortcodes/blocks/showcase.html +++ /dev/null @@ -1,29 +0,0 @@ -{{ $_hugo_config := `{ "version": 1 }` }} -{{ $col_id := .Get "color" | default .Ordinal }} -{{ $height := .Get "height" | default "auto" }} -{{/* Height can be one of: auto, min, med, max, full. */}} - -
    -
    -
    -
    -
    -
    -

    Tekton is a powerful and flexible

    -

    open-source framework for creating CI/CD systems,

    -

    allowing developers to

    -

    build, test, and deploy

    -

    across cloud providers and on-premise systems.

    - Get started with Tekton. -
    -
    -
    - {{ $jsAsciinema := resources.Get "js/asciinema-player.js" }} - {{ $jsAsciinema := $jsAsciinema | minify | fingerprint }} - - -
    -
    -
    -
    -
    diff --git a/layouts/shortcodes/docsy-card.html b/layouts/shortcodes/docsy-card.html new file mode 100644 index 000000000..3b40e1067 --- /dev/null +++ b/layouts/shortcodes/docsy-card.html @@ -0,0 +1,4 @@ +{{ $_hugo_config := `{ "version": 1 }` }} +
    + {{ .Inner | markdownify }} +
    diff --git a/layouts/shortcodes/imgproc.html b/layouts/shortcodes/imgproc.html new file mode 100644 index 000000000..19b0b91da --- /dev/null +++ b/layouts/shortcodes/imgproc.html @@ -0,0 +1,11 @@ +{{- $name := .Get 0 -}} +{{- $command := .Get 1 | default "Fit" -}} +{{- $options := .Get 2 | default "700x500" -}} +{{- $img := .Page.Resources.GetMatch (printf "**%s*" $name) -}} +{{- if $img -}} + {{- $processed := $img.Fit $options -}} +
    + {{ $name }} + {{- with .Inner }}
    {{ . | markdownify }}
    {{ end -}} +
    +{{- end -}} diff --git a/layouts/shortcodes/pageinfo.html b/layouts/shortcodes/pageinfo.html new file mode 100644 index 000000000..d77ae182a --- /dev/null +++ b/layouts/shortcodes/pageinfo.html @@ -0,0 +1,4 @@ +{{ $_hugo_config := `{ "version": 1 }` }} +
    + {{ .Inner | markdownify }} +
    diff --git a/layouts/shortcodes/readfile.html b/layouts/shortcodes/readfile.html new file mode 100644 index 000000000..140f17f5a --- /dev/null +++ b/layouts/shortcodes/readfile.html @@ -0,0 +1,12 @@ +{{- $file := .Get "file" | default (.Get 0) -}} +{{- $code := .Get "code" | default false -}} +{{- $lang := .Get "lang" | default "" -}} +{{- $content := readFile $file -}} +{{- /* Strip YAML front matter (--- … ---) and HTML-comment-wrapped variant () */ -}} +{{- $content = replaceRE `(?s)\A\s*\n` "" $content -}} +{{- $content = replaceRE `(?s)\A---\n.*?---\n` "" $content -}} +{{- if $code -}} +{{ highlight $content $lang "" }} +{{- else -}} +{{ $content | markdownify }} +{{- end -}} diff --git a/layouts/shortcodes/tutorial.html b/layouts/shortcodes/tutorial.html index 4fa466559..ce058ad57 100644 --- a/layouts/shortcodes/tutorial.html +++ b/layouts/shortcodes/tutorial.html @@ -1,9 +1,6 @@ {{ $_hugo_config := `{ "version": 1 }` }} -