This is an automated email from the ASF dual-hosted git repository. blue pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/iceberg.git
The following commit(s) were added to refs/heads/main by this push: new bcbcbb263e Site: Update for ASF site guidelines (#9729) bcbcbb263e is described below commit bcbcbb263ea7e13ab22d0feb918e207c7e42dbbd Author: Brian "bits" Olsen <b...@bitsondata.dev> AuthorDate: Sun Mar 3 12:44:39 2024 -0800 Site: Update for ASF site guidelines (#9729) Co-authored-by: Muna Bedan <munabe...@gmail.com> --- site/docs/assets/images/asf-estd-1999-logo.png | Bin 0 -> 22681 bytes site/docs/assets/javascript/lottie-player.js | 77 ++++++++++ site/docs/assets/javascript/termynal.js | 197 +++++++++++++++++++++++++ site/docs/assets/stylesheets/extra.css | 86 +++++------ site/docs/assets/stylesheets/fonts.css | 76 ++++++++++ site/docs/assets/stylesheets/termynal.css | 101 +++++++++++++ site/mkdocs.yml | 3 +- site/nav.yml | 3 +- site/overrides/home.html | 10 +- site/overrides/partials/cto.html | 21 --- site/overrides/partials/footer.html | 144 +++++++++++++++--- 11 files changed, 617 insertions(+), 101 deletions(-) diff --git a/site/docs/assets/images/asf-estd-1999-logo.png b/site/docs/assets/images/asf-estd-1999-logo.png new file mode 100644 index 0000000000..3aa13cfa11 Binary files /dev/null and b/site/docs/assets/images/asf-estd-1999-logo.png differ diff --git a/site/docs/assets/javascript/lottie-player.js b/site/docs/assets/javascript/lottie-player.js new file mode 100644 index 0000000000..146eea8343 --- /dev/null +++ b/site/docs/assets/javascript/lottie-player.js @@ -0,0 +1,77 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self)["lottie-player"]={})}(this,(function(exports){"use strict";function _asyncIterator(t){var e,r,i,s=2;for("undefined"!=typeof Symbol&&(r=Symbol.asyncIterator,i=Symbol.iterator);s--;){if(r&&null!=(e=t[r]))return e.call(t);if(i&&null!=(e=t[i]))return new AsyncFromSyncIterator(e.call(t));r="@@asyncIte [...] +/*! ***************************************************************************** + Copyright (c) Microsoft Corporation. + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THIS SOFTWARE. + ***************************************************************************** */var _extendStatics=function(t,e){return _extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])},_extendStatics(t,e)};function __extends(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function r(){this.co [...] +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */}var t$3=window.ShadowRoot&&(void 0===window.ShadyCSS||window.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,e$8=Symbol(),n$5=new Map;class s$3{constructor(t,e){if(this._$cssResult$=!0,e!==e$8)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t}get styleSheet(){var t=n$5.get(this.cssText);return t$3&&void 0===t&&(n$5.set(this.cssText,t=new CSSStyleSheet),t.replaceSync(this.cssText)),t [...] +/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */,s$2,e$7=window.trustedTypes,r$2=e$7?e$7.emptyScript:"",h$2=window.reactiveElementPolyfillSupport,o$4={toAttribute(t,e){switch(e){case Boolean:t=t?r$2:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,e){var r=t;switch(e){case Boolean:r=null!==t;break;case Number:r=null===t?null:Number(t);break;case Object:case Array:try{r=JSON.parse(t)}catch(t){r=null}}return r}},n$4=(t,e)=>e!==t&&(e==e||t==t),l$3={attribute:!0,type:String,converter:o$4,refle [...] \r](?:([^\s"'>=/]+)([ \n\r]*=[ \n\r]*(?:[^ \n \r"'`<>=]|("|')|))|$)/g,_=/'/g,m=/"/g,g=/^(?:script|style|textarea)$/i,p=t=>function(e){for(var r=arguments.length,i=new Array(r>1?r-1:0),s=1;s<r;s++)i[s-1]=arguments[s];return{_$litType$:t,strings:e,values:i}},$=p(1),y=p(2),b=Symbol.for("lit-noChange"),w=Symbol.for("lit-nothing"),T=new WeakMap,x=(t,e,r)=>{var i,s,a=null!==(i=null==r?void 0:r.renderBefore)&&void 0!==i?i:e,n=a._$litPart$;if(void 0===n){var o=null!==(s=null==r?void 0:r.renderBefore)&&void 0!==s?s:null;a._$litPart$=n=new N(e [...] +/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */ +var n$1=t=>e=>"function"==typeof e?((t,e)=>(window.customElements.define(t,e),e))(t,e):((t,e)=>{var{kind:r,elements:i}=e;return{kind:r,elements:i,finisher(e){window.customElements.define(t,e)}}})(t,e) +/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */,i$1=(t,e)=>"method"===e.kind&&e.descriptor&&!("value"in e.descriptor)?_objectSpread2(_objectSpread2({},e),{},{finisher(r){r.createProperty(e.key,t)}}):{kind:"field",key:Symbol(),placement:"own",descriptor:{},originalKey:e.key,initializer(){"function"==typeof e.initializer&&(this[e.key]=e.initializer.call(this))},finisher(r){r.createProperty(e.key,t)}};function e$5(t){return(e,r)=>void 0!==r?((t,e,r)=>{e.constructor.createProperty(r,t)})(t,e,r):i$1(t,e)} +/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */function t$1(t){return e$5(_objectSpread2(_objectSpread2({},t),{},{state:!0}))} +/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */var e$4=(t,e,r)=>{Object.defineProperty(e,r,t)},t=(t,e)=>({kind:"method",placement:"prototype",key:e.key,descriptor:t}),o$1=t=>{var{finisher:e,descriptor:r}=t;return(t,i)=>{var s;if(void 0===i){var a=null!==(s=t.originalKey)&&void 0!==s?s:t.key,n=null!=r?{kind:"method",placement:"prototype",key:a,descriptor:r(t.key)}:_objectSpread2(_objectSpread2({},t),{},{key:a});return null!=e&&(n.finisher=function(t){e(t,a)}),n}var o=t.constructor;void 0!==r&&Object.defineProperty(t,i,r(i)),null= [...] +/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */function e$3(t){return o$1({finisher:(e,r)=>{Object.assign(e.prototype[r],t)}})} +/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */function i(t,e){return o$1({descriptor:r=>{var i={get(){var e,r;return null!==(r=null===(e=this.renderRoot)||void 0===e?void 0:e.querySelector(t))&&void 0!==r?r:null},enumerable:!0,configurable:!0};if(e){var s="symbol"==typeof r?Symbol():"__"+r;i.get=function(){var e,r;return void 0===this[s]&&(this[s]=null!==(r=null===(e=this.renderRoot)||void 0===e?void 0:e.querySelector(t))&&void 0!==r?r:null),this[s]}}return i}})} +/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */function e$2(t){return o$1({descriptor:e=>({get(){var e,r;return null!==(r=null===(e=this.renderRoot)||void 0===e?void 0:e.querySelectorAll(t))&&void 0!==r?r:[]},enumerable:!0,configurable:!0})})} +/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */function e$1(t){return o$1({descriptor:e=>({get(){var e=this;return _asyncToGenerator((function*(){var r;return yield e.updateComplete,null===(r=e.renderRoot)||void 0===r?void 0:r.querySelector(t)}))()},enumerable:!0,configurable:!0})})} +/** + * @license + * Copyright 2021 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */var e=null!=(null===(n=window.HTMLSlotElement)||void 0===n?void 0:n.prototype.assignedElements)?(t,e)=>t.assignedElements(e):(t,e)=>t.assignedNodes(e).filter((t=>t.nodeType===Node.ELEMENT_NODE));function l(t){var{slot:r,selector:i}=null!=t?t:{};return o$1({descriptor:s=>({get(){var s,a="slot"+(r?"[name=".concat(r,"]"):":not([name])"),n=null===(s=this.renderRoot)||void 0===s?void 0:s.querySelector(a),o=null!=n?e(n,t):[];return i?o.filter((t=>t.matches(i))):o},enumerable:!0,configurab [...] +/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */function o(t,e,r){var i,s=t;return"object"==typeof t?(s=t.slot,i=t):i={flatten:e},r?l({slot:s,flatten:e,selector:r}):o$1({descriptor:t=>({get(){var t,e,r="slot"+(s?"[name=".concat(s,"]"):":not([name])"),a=null===(t=this.renderRoot)||void 0===t?void 0:t.querySelector(r);return null!==(e=null==a?void 0:a.assignedNodes(i))&&void 0!==e?e:[]},enumerable:!0,configurable:!0})})}var commonjsGlobal="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeo [...] +//# sourceMappingURL=lottie-player.js.map diff --git a/site/docs/assets/javascript/termynal.js b/site/docs/assets/javascript/termynal.js new file mode 100644 index 0000000000..77ec6cb01c --- /dev/null +++ b/site/docs/assets/javascript/termynal.js @@ -0,0 +1,197 @@ +/** + * termynal.js + * A lightweight, modern and extensible animated terminal window, using + * async/await. + * + * @author Ines Montani <i...@ines.io> + * @version 0.0.1 + * @license MIT + */ + +'use strict'; + +/** Generate a terminal widget. */ +class Termynal { + /** + * Construct the widget's settings. + * @param {(string|Node)=} container - Query selector or container element. + * @param {Object=} options - Custom settings. + * @param {string} options.prefix - Prefix to use for data attributes. + * @param {number} options.startDelay - Delay before animation, in ms. + * @param {number} options.typeDelay - Delay between each typed character, in ms. + * @param {number} options.lineDelay - Delay between each line, in ms. + * @param {number} options.progressLength - Number of characters displayed as progress bar. + * @param {string} options.progressChar – Character to use for progress bar, defaults to █. + * @param {number} options.progressPercent - Max percent of progress. + * @param {string} options.cursor – Character to use for cursor, defaults to ▋. + * @param {Object[]} lineData - Dynamically loaded line data objects. + * @param {boolean} options.noInit - Don't initialise the animation. + */ + constructor(container = '#termynal', options = {}) { + this.container = (typeof container === 'string') ? document.querySelector(container) : container; + this.pfx = `data-${options.prefix || 'ty'}`; + this.startDelay = options.startDelay + || parseFloat(this.container.getAttribute(`${this.pfx}-startDelay`)) || 600; + this.typeDelay = options.typeDelay + || parseFloat(this.container.getAttribute(`${this.pfx}-typeDelay`)) || 90; + this.lineDelay = options.lineDelay + || parseFloat(this.container.getAttribute(`${this.pfx}-lineDelay`)) || 1500; + this.progressLength = options.progressLength + || parseFloat(this.container.getAttribute(`${this.pfx}-progressLength`)) || 40; + this.progressChar = options.progressChar + || this.container.getAttribute(`${this.pfx}-progressChar`) || '█'; + this.progressPercent = options.progressPercent + || parseFloat(this.container.getAttribute(`${this.pfx}-progressPercent`)) || 100; + this.cursor = options.cursor + || this.container.getAttribute(`${this.pfx}-cursor`) || '▋'; + this.lineData = this.lineDataToElements(options.lineData || []); + if (!options.noInit) this.init() + } + + /** + * Initialise the widget, get lines, clear container and start animation. + */ + init() { + // Appends dynamically loaded lines to existing line elements. + this.lines = [...this.container.querySelectorAll(`[${this.pfx}]`)].concat(this.lineData); + + /** + * Calculates width and height of Termynal container. + * If container is empty and lines are dynamically loaded, defaults to browser `auto` or CSS. + */ + const containerStyle = getComputedStyle(this.container); + this.container.style.width = containerStyle.width !== '0px' ? + containerStyle.width : undefined; + this.container.style.minHeight = containerStyle.height !== '0px' ? + containerStyle.height : undefined; + + this.container.setAttribute('data-termynal', ''); + this.container.innerHTML = ''; + this.start(); + } + + /** + * Start the animation and rener the lines depending on their data attributes. + */ + async start() { + await this._wait(this.startDelay); + + for (let line of this.lines) { + const type = line.getAttribute(this.pfx); + const delay = line.getAttribute(`${this.pfx}-delay`) || this.lineDelay; + + if (type == 'input') { + line.setAttribute(`${this.pfx}-cursor`, this.cursor); + await this.type(line); + await this._wait(delay); + } + + else if (type == 'progress') { + await this.progress(line); + await this._wait(delay); + } + + else { + this.container.appendChild(line); + await this._wait(delay); + } + + line.removeAttribute(`${this.pfx}-cursor`); + } + } + + /** + * Animate a typed line. + * @param {Node} line - The line element to render. + */ + async type(line) { + const chars = [...line.textContent]; + const delay = line.getAttribute(`${this.pfx}-typeDelay`) || this.typeDelay; + line.textContent = ''; + this.container.appendChild(line); + + for (let char of chars) { + await this._wait(delay); + line.textContent += char; + } + } + + /** + * Animate a progress bar. + * @param {Node} line - The line element to render. + */ + async progress(line) { + const progressLength = line.getAttribute(`${this.pfx}-progressLength`) + || this.progressLength; + const progressChar = line.getAttribute(`${this.pfx}-progressChar`) + || this.progressChar; + const chars = progressChar.repeat(progressLength); + const progressPercent = line.getAttribute(`${this.pfx}-progressPercent`) + || this.progressPercent; + line.textContent = ''; + this.container.appendChild(line); + + for (let i = 1; i < chars.length + 1; i++) { + await this._wait(this.typeDelay); + const percent = Math.round(i / chars.length * 100); + line.textContent = `${chars.slice(0, i)} ${percent}%`; + if (percent>progressPercent) { + break; + } + } + } + + /** + * Helper function for animation delays, called with `await`. + * @param {number} time - Timeout, in ms. + */ + _wait(time) { + return new Promise(resolve => setTimeout(resolve, time)); + } + + /** + * Converts line data objects into line elements. + * + * @param {Object[]} lineData - Dynamically loaded lines. + * @param {Object} line - Line data object. + * @returns {Element[]} - Array of line elements. + */ + lineDataToElements(lineData) { + return lineData.map(line => { + let div = document.createElement('div'); + div.innerHTML = `<span ${this._attributes(line)}>${line.value || ''}</span>`; + + return div.firstElementChild; + }); + } + + /** + * Helper function for generating attributes string. + * + * @param {Object} line - Line data object. + * @returns {string} - String of attributes. + */ + _attributes(line) { + let attrs = ''; + for (let prop in line) { + attrs += this.pfx; + + if (prop === 'type') { + attrs += `="${line[prop]}" ` + } else if (prop !== 'value') { + attrs += `-${prop}="${line[prop]}" ` + } + } + + return attrs; + } +} + +/** +* HTML API: If current script has container(s) specified, initialise Termynal. +*/ +if (document.currentScript.hasAttribute('data-termynal-container')) { + const containers = document.currentScript.getAttribute('data-termynal-container'); + containers.split('|') + .forEach(container => new Termynal(container)) +} diff --git a/site/docs/assets/stylesheets/extra.css b/site/docs/assets/stylesheets/extra.css index 3e147c2f1b..e8af4a6a75 100644 --- a/site/docs/assets/stylesheets/extra.css +++ b/site/docs/assets/stylesheets/extra.css @@ -380,59 +380,6 @@ p { } - - - -/*------------------------------------*\ - #CTO -\*------------------------------------*/ -.cto { - background-image:linear-gradient(rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7)), url("../images/footer-bg.webp"); - background-size: cover; - margin: 0; - border: 0; - font: inherit; - vertical-align:auto; - color: var(--color-default-white); - text-align: center; - padding: 20px 0; -} - -.cto span { - text-size-adjust: none; - box-sizing: inherit; - font-size: 14.5px; - margin-right: 30px; - font-stretch: 100%; - color: var(--color-default-white); -} - - -.cto .btn span{ - font-size: 16px; - color: var(--color-default-primary); -} - -.md-footer { - background-image:linear-gradient(rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)), url("../images/footer-bg.webp"); - background-size: cover; - margin: 0; - border: 0; - font: inherit; - vertical-align:auto; - color: var(--color-default-white); - text-align: center; - padding: 0 0; -} - -.md-copyright { - color: var(--md-footer-fg-color--lighter); - font-size: .64rem; - margin: auto; - padding: .4rem 0; - width: 100%; -} - .fa-2x { width: 2em; height: 2em; @@ -468,3 +415,36 @@ p { height: 2.5rem; width: auto; } + +#footer { + font-size: 16px; + line-height: 1.5; +} + +#footer ul{ + list-style: none; + margin: 0; + padding: 0; +} + +#footer li:hover{ + font-weight: bold; +} +#footer h4 { + font-size: 20px; + +} + +.footer-top { + background-color: rgba(33,37,41, 0.2) !important; +} + +.copyright-text { + font-size: 0.7em !important; + text-align: center !important; +} + + +.footer-icons img { + max-width: 100%; +} diff --git a/site/docs/assets/stylesheets/fonts.css b/site/docs/assets/stylesheets/fonts.css new file mode 100644 index 0000000000..2046a2971d --- /dev/null +++ b/site/docs/assets/stylesheets/fonts.css @@ -0,0 +1,76 @@ +@font-face { + font-family: 'Nunito Sans'; + font-style: italic; + font-weight: 300; + font-stretch: normal; + font-display: fallback; + src: url(https://fonts.gstatic.com/s/nunitosans/v15/pe1kMImSLYBIv1o4X1M8cce4OdVisMz5nZRqy6cmmmU3t2FQWEAEOvV9wNvrwlNstMKW3Y6K5WMwXeVy3GboJ0kTHmrR92UnK_c.ttf) format('truetype'); +} +@font-face { + font-family: 'Nunito Sans'; + font-style: italic; + font-weight: 400; + font-stretch: normal; + font-display: fallback; + src: url(https://fonts.gstatic.com/s/nunitosans/v15/pe1kMImSLYBIv1o4X1M8cce4OdVisMz5nZRqy6cmmmU3t2FQWEAEOvV9wNvrwlNstMKW3Y6K5WMwXeVy3GboJ0kTHmqP92UnK_c.ttf) format('truetype'); +} +@font-face { + font-family: 'Nunito Sans'; + font-style: italic; + font-weight: 700; + font-stretch: normal; + font-display: fallback; + src: url(https://fonts.gstatic.com/s/nunitosans/v15/pe1kMImSLYBIv1o4X1M8cce4OdVisMz5nZRqy6cmmmU3t2FQWEAEOvV9wNvrwlNstMKW3Y6K5WMwXeVy3GboJ0kTHmpo8GUnK_c.ttf) format('truetype'); +} +@font-face { + font-family: 'Nunito Sans'; + font-style: normal; + font-weight: 300; + font-stretch: normal; + font-display: fallback; + src: url(https://fonts.gstatic.com/s/nunitosans/v15/pe1mMImSLYBIv1o4X1M8ce2xCx3yop4tQpF_MeTm0lfGWVpNn64CL7U8upHZIbMV51Q42ptCp5F5bxqqtQ1yiU4GiClXs1Ug.ttf) format('truetype'); +} +@font-face { + font-family: 'Nunito Sans'; + font-style: normal; + font-weight: 400; + font-stretch: normal; + font-display: fallback; + src: url(https://fonts.gstatic.com/s/nunitosans/v15/pe1mMImSLYBIv1o4X1M8ce2xCx3yop4tQpF_MeTm0lfGWVpNn64CL7U8upHZIbMV51Q42ptCp5F5bxqqtQ1yiU4G1ilXs1Ug.ttf) format('truetype'); +} +@font-face { + font-family: 'Nunito Sans'; + font-style: normal; + font-weight: 700; + font-stretch: normal; + font-display: fallback; + src: url(https://fonts.gstatic.com/s/nunitosans/v15/pe1mMImSLYBIv1o4X1M8ce2xCx3yop4tQpF_MeTm0lfGWVpNn64CL7U8upHZIbMV51Q42ptCp5F5bxqqtQ1yiU4GMS5Xs1Ug.ttf) format('truetype'); +} +@font-face { + font-family: 'Roboto Mono'; + font-style: italic; + font-weight: 400; + font-display: fallback; + src: url(https://fonts.gstatic.com/s/robotomono/v23/L0xoDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnANW6Cpw.ttf) format('truetype'); +} +@font-face { + font-family: 'Roboto Mono'; + font-style: italic; + font-weight: 700; + font-display: fallback; + src: url(https://fonts.gstatic.com/s/robotomono/v23/L0xoDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrmAB9W6Cpw.ttf) format('truetype'); +} +@font-face { + font-family: 'Roboto Mono'; + font-style: normal; + font-weight: 400; + font-display: fallback; + src: url(https://fonts.gstatic.com/s/robotomono/v23/L0xuDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vq_ROW9.ttf) format('truetype'); +} +@font-face { + font-family: 'Roboto Mono'; + font-style: normal; + font-weight: 700; + font-display: fallback; + src: url(https://fonts.gstatic.com/s/robotomono/v23/L0xuDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_Of2_ROW9.ttf) format('truetype'); +} diff --git a/site/docs/assets/stylesheets/termynal.css b/site/docs/assets/stylesheets/termynal.css new file mode 100644 index 0000000000..cb7951313b --- /dev/null +++ b/site/docs/assets/stylesheets/termynal.css @@ -0,0 +1,101 @@ +/** + * termynal.js + * + * @author Ines Montani <i...@ines.io> + * @version 0.0.1 + * @license MIT + */ + +:root { + --color-bg: #252a33; + --color-text: #eee; + --color-text-subtle: #a2a2a2; +} + +[data-termynal] { + width: 750px; + max-width: 100%; + background: var(--color-bg); + color: var(--color-text); + font-size: 18px; + font-family: 'Fira Mono', Consolas, Menlo, Monaco, 'Courier New', Courier, monospace; + border-radius: 4px; + padding: 75px 45px 35px; + position: relative; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} + +[data-termynal]:before { + content: ''; + position: absolute; + top: 15px; + left: 15px; + display: inline-block; + width: 15px; + height: 15px; + border-radius: 50%; + /* A little hack to display the window buttons in one pseudo element. */ + background: #d9515d; + -webkit-box-shadow: 25px 0 0 #f4c025, 50px 0 0 #3ec930; + box-shadow: 25px 0 0 #f4c025, 50px 0 0 #3ec930; +} + +[data-termynal]:after { + content: 'bash'; + position: absolute; + color: var(--color-text-subtle); + top: 5px; + left: 0; + width: 100%; + text-align: center; +} + +[data-ty] { + display: block; + line-height: 2; +} + +[data-ty]:before { + /* Set up defaults and ensure empty lines are displayed. */ + content: ''; + display: inline-block; + vertical-align: middle; +} + +[data-ty="input"]:before, +[data-ty-prompt]:before { + margin-right: 0.75em; + color: var(--color-text-subtle); +} + +[data-ty="input"]:before { + content: '$'; +} + +[data-ty][data-ty-prompt]:before { + content: attr(data-ty-prompt); +} + +[data-ty-cursor]:after { + content: attr(data-ty-cursor); + font-family: monospace; + margin-left: 0.5em; + -webkit-animation: blink 1s infinite; + animation: blink 1s infinite; +} + + +/* Cursor animation */ + +@-webkit-keyframes blink { + 50% { + opacity: 0; + } +} + +@keyframes blink { + 50% { + opacity: 0; + } +} diff --git a/site/mkdocs.yml b/site/mkdocs.yml index 9f75bad96d..2b3630ad4f 100644 --- a/site/mkdocs.yml +++ b/site/mkdocs.yml @@ -17,8 +17,6 @@ INHERIT: ./nav.yml -copyright: | - Apache Iceberg, Iceberg, Apache, the Apache feather logo, and the Apache Iceberg project logo are</br>either registered trademarks or trademarks of The Apache Software Foundation. Copyright © 2023</br>The Apache Software Foundation, Licensed under the <a href="https://www.apache.org/licenses/">Apache License, Version 2.0</a>.</br></br> site_name: Apache Iceberg theme: @@ -51,6 +49,7 @@ plugins: - search - macros - monorepo + - privacy - offline: enabled: !ENV [OFFLINE, false] diff --git a/site/nav.yml b/site/nav.yml index a12fd89724..c7d9a26ae0 100644 --- a/site/nav.yml +++ b/site/nav.yml @@ -41,8 +41,9 @@ nav: - How to release: how-to-release.md - Terms: terms.md - ASF: - - Sponsorship: https://www.apache.org/foundation/sponsorship.html + - Sponsorship: https://www.apache.org/foundation/thanks.html - Events: https://www.apache.org/events/current-event.html + - Privacy: https://privacy.apache.org/policies/privacy-policy-public.html - License: https://www.apache.org/licenses/ - Security: https://www.apache.org/security/ - Sponsors: https://www.apache.org/foundation/thanks.html diff --git a/site/overrides/home.html b/site/overrides/home.html index a79c44c746..f6479d46ea 100644 --- a/site/overrides/home.html +++ b/site/overrides/home.html @@ -4,7 +4,7 @@ {{ super() }} <link - href="https://cdn.jsdelivr.net/gh/ines/termynal@9b301892db6f8d403abfce7adf65888dffed72ea/termynal.css" + href="assets/stylesheets/termynal.css" rel="stylesheet" /> @@ -215,7 +215,7 @@ </ul> </div> <div class="col-lg-5 col-lg col-sm-12"> - <script src="https://unpkg.com/@lottiefiles/lottie-player@latest/dist/lottie-player.js"></script> + <script src="assets/javascript/lottie-player.js"></script> <lottie-player src="assets/lottie/hidden-partitioning-animation.json" background="transparent" speed="0.5" @@ -307,7 +307,7 @@ </section> <script - src="https://cdn.jsdelivr.net/gh/ines/termynal@9b301892db6f8d403abfce7adf65888dffed72ea/termynal.js" + src="assets/javascript/termynal.js" data-termynal-container="#termynal|#termynal-data-compaction|#termynal-expressive-sql|#termynal-time-travel"> </script> {% endblock %} @@ -315,7 +315,3 @@ {% block content %} {{ super() }} {% endblock %} - -{% block footer%} - {% include "partials/cto.html" %} -{% endblock %} diff --git a/site/overrides/partials/cto.html b/site/overrides/partials/cto.html deleted file mode 100644 index a64e2533e5..0000000000 --- a/site/overrides/partials/cto.html +++ /dev/null @@ -1,21 +0,0 @@ -<div class="cto"> - <div class="container"> - <span> Apache Iceberg, Iceberg, Apache, the Apache feather logo, and the Apache Iceberg project logo - are</br>either registered trademarks or trademarks of The Apache Software Foundation. Copyright © - 2023</br>The Apache Software Foundation, Licensed under the <a - href="https://www.apache.org/licenses/">Apache License, Version 2.0</a>.</br></br> - </span> - <ul class="list-inline intro-social-buttons"> - {% for social in config.extra.social %} - <li> - <a class="btn btn-default btn-lg" href="{{ social.link }}" target="_blank"> - <span class="fa fa-fw"> - {% include ".icons/" ~ social.icon ~ ".svg" %} - </span> - <span class="network-name"> {{ social.title }}</span> - </a> - </li> - {% endfor %} - </ul> - </div> -</div> diff --git a/site/overrides/partials/footer.html b/site/overrides/partials/footer.html index 9567e202f4..adb4acc0b0 100644 --- a/site/overrides/partials/footer.html +++ b/site/overrides/partials/footer.html @@ -1,22 +1,132 @@ -<footer class="md-footer"> - - <div class="md-footer-meta md-typeset"> - <div class="md-footer-meta__inner md-grid"> - <div class="md-copyright"> - - <div class="md-copyright__highlight"> - Apache Iceberg, Iceberg, Apache, the Apache feather logo, and the Apache Iceberg project logo are<br>either registered trademarks or trademarks of The Apache Software Foundation. Copyright © 2023<br>The Apache Software Foundation, Licensed under the <a href="https://www.apache.org/licenses/">Apache License, Version 2.0</a>.<br><br> - +<footer id="footer" class="footer"> + <div class="container-fluid footer-top"> + <div class="d-flex justify-content-center pt-3 pb-3" > + + + <div class="col-lg-2 col-md-2 footer-links"> + <h4>Features</h4> + <ul> + <li> + <a href="/docs/latest/evolution/#schema-evolution" + >Schema Evolution</a + > + </li> + <li> + <a href="/docs/latest/partitioning/">Hidden Partitioning</a> + </li> + <li> + <a href="/docs/latest/evolution/#partition-evolution" + >Partition Evolution</a + > + </li> + <li> + <a href="/docs/latest/reliability/">Serializable Isolation</a> + </li> + <li> + <a href="/docs/latest/branching/">Branching and Tagging</a> + </li> + <li> + <a href="/docs/latest/reliability/#concurrent-write-operations" + >Optimistic Concurrency</a + > + </li> + <li> + <a href="/docs/latest/performance/#data-filtering" + >Advanced Filtering</a + > + </li> + <li><a href="/docs/latest/">Compute Engine Integrations</a></li> + <li> + <a href="/concepts/catalog/#decoupling-using-the-rest-catalog" + >REST Catalog</a + > + </li> + <li><a href="/docs/latest/api/">Multiple language APIs</a></li> + </ul> </div> - - - Made with - <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> - Material for MkDocs - </a> + + <div class="col-lg-2 col-md-2 footer-links"> + <h4>Get Started</h4> + <ul> + <li><a href="spark-quickstart">Spark Quickstart</a></li> + <li><a href="hive-quickstart">Hive Quickstart</a></li> + <li><a href="spec/">Open Table Spec</a></li> + <li><a href="docs/latest">Docs</a></li> + <li><a href="blogs/">Blogs</a></li> + <li><a href="talks/">Talks</a></li> + </ul> + <br /> + </div> + + <div class="col-lg-2 col-md-2 footer-links"> + <h4>Community</h4> + <ul> + <li><a href="community/#slack">Support</a></li> + <li><a href="community/#mailing-lists">Mailing Lists</a></li> + <li> + <a href="community/#iceberg-community-events">Iceberg Events</a> + </li> + <li><a href="community/#issues">Issues</a></li> + <li><a href="community/#contribute">Contribute</a></li> + <li><a href="community/#community-guidelines">Guidelines</a></li> + <!-- li><a href="/logos-and-assets.html">Solr Logos and Assets</a></li --> + </ul> + </div> + + <div class="col-lg-2 col-md-2 footer-links"> + <h4>ASF</h4> + <ul> + <li> + <a href="https://www.apache.org/">Apache Software Foundation</a> + </li> + <li> + <a href="https://www.apache.org/foundation/thanks.html">Thanks</a> + </li> + <li> + <a href="https://www.apache.org/foundation/sponsorship.html" + >Sponsorship</a + > + </li> + <li><a href="https://www.apache.org/security/">Security</a></li> + <li><a href="https://www.apache.org/licenses/">License</a></li> + </ul> + </div> + + <div class="col-lg-2 col-md-2 mt-3 footer-icons"> + + <a href="https://iceberg.apache.org" + ><img + src="/assets/images/asf-estd-1999-logo.png" + alt="apache software foundation logo" + /></a> + <div class="d-flex justify-content-center"> + <div class="social-links d-flex "> + {% if config.extra.social %} {% include "partials/social.html" %} {% + endif %} + </div> + </div> + + </div> + </div> + </div> - + + <div class="container-fluid "> + <div class="d-flex justify-content-center "> + <div class="col-md-8"> + <p class="copyright-text m-4"> + Apache Iceberg, Iceberg, Apache, the Apache feather logo, and the + Apache Iceberg project logo are either registered trademarks or + trademarks of The Apache Software Foundation. Copyright © 2024 The + Apache Software Foundation, Licensed under the + <span + ><a href="https://www.apache.org/licenses/" + >Apache License, Version 2.0</a + >.</span + > + </p> </div> </div> - </footer> \ No newline at end of file + </div> +</footer>