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 &copy; 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 &copy;
-            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>

Reply via email to