From: Arnaud Guéras Date: Tue, 19 Nov 2024 09:44:56 +0000 (+0100) Subject: fix X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=dc8e7c79eda51c2d38a7f64c9ec455c4fe0e0233;p=www-xenproject-org.git fix Signed-off-by: Arnaud Guéras --- diff --git a/content/_index.md b/content/_index.md index 6f29c8a..5dbcfd5 100644 --- a/content/_index.md +++ b/content/_index.md @@ -8,8 +8,9 @@ keywords: "Xen Project, open source virtualization, enterprise-grade hypervisor, {{}} The Xen Project hypervisor is an open-source type-1 or baremetal hypervisor, which makes it possible to run many instances of an operating system or indeed different operating systems in parallel on a single machine (or host). The Xen Project hypervisor is the only type-1 hypervisor that is available as open source. It is used as the basis for a number of different commercial and open source applications, such as: server virtualization, Infrastructure as a Service (IaaS), desktop virtualization, security applications, embedded and hardware appliances. The Xen Project hypervisor is powering the largest clouds in production today. {{}} @@ -146,6 +147,7 @@ The Xen Project hypervisor is an open-source type-1 or baremetal hypervisor, whi title="History" media="/img/flatline/timeline.svg" alt="Illustration of a timeline with milestones for the years 2012, 2018, 2020, and 2024, representing project progress and development." + animate="true" >}} The Xen Project hypervisor is developed by a worldwide community of individuals, researchers and employees of companies and that follow the Xen Project Governance process. The project is supported by the Xen Project Advisory Board made up of project member companies that fund the Xen Project. You can find a contribution breakdowns under Contribution Acknowledgments. {{}} diff --git a/content/projects/xcp-ng.md b/content/projects/xcp-ng.md index 24b8675..1eb63b0 100644 --- a/content/projects/xcp-ng.md +++ b/content/projects/xcp-ng.md @@ -13,26 +13,26 @@ aside: type: resource items: - name: Downloads - url: "https://xcp-ng.org/#easy-to-install" + link: "https://xcp-ng.org/#easy-to-install" - name: Docs - url: "https://github.com/xcp-ng/xcp/wiki" + link: "https://github.com/xcp-ng/xcp/wiki" - name: Forums - url: "https://xcp-ng.org/forum/" + link: "https://xcp-ng.org/forum/" - name: "IRC: #xcp-ng" - url: "/help/irc/" + link: "/help/irc/" - name: Report a Bug - url: "https://github.com/xcp-ng/xcp/issues" + link: "https://github.com/xcp-ng/xcp/issues" - name: Developers type: resource items: - name: Developer Forum - url: "https://xcp-ng.org/forum/category/7/development" + link: "https://xcp-ng.org/forum/category/7/development" - name: "IRC: #xcp-ng-dev" - url: "/help/irc/" + link: "/help/irc/" - name: Browse Git - url: "https://github.com/xcp-ng" + link: "https://github.com/xcp-ng" - name: Dev Docs - url: "https://github.com/xcp-ng/xcp/wiki#development" + link: "https://github.com/xcp-ng/xcp/wiki#development" - name: Team type: members-list items: diff --git a/content/resources/mailing-lists.md b/content/resources/mailing-lists.md index 59090e7..20ca458 100644 --- a/content/resources/mailing-lists.md +++ b/content/resources/mailing-lists.md @@ -50,7 +50,7 @@ Xen Project mailing lists have a web as well as an email interface. ## General {{}} -{{}} +{{}} - title: XEN-ANNOUNCE@ tags: - Mailing list @@ -112,7 +112,7 @@ Xen Project mailing lists have a web as well as an email interface. ### Xen Project Hypervisor {{}} -{{}} +{{}} - title: XEN-DEVEL@ tags: - Mailing list @@ -138,7 +138,7 @@ Xen Project mailing lists have a web as well as an email interface. {{}} ### Mirage OS {{}} - {{}} + {{}} - title: MIRAGEOS-DEVEL@ tags: - Mailing list @@ -153,7 +153,7 @@ Xen Project mailing lists have a web as well as an email interface. {{}} ### Unikraft {{}} - {{}} + {{}} - title: MINIOS-DEVEL@ (INCLUDES UNIKRAFT DEVELOPMENT) tags: - Mailing list @@ -169,7 +169,7 @@ Xen Project mailing lists have a web as well as an email interface. {{}} ### XAPI {{}} - {{}} + {{}} - title: XEN-API@ tags: - Mailing list @@ -187,7 +187,7 @@ Xen Project mailing lists have a web as well as an email interface. {{}} ### XCP-ng {{}} -{{}} +{{}} - title: XCP-NG FORUMS tags: - Forum @@ -218,7 +218,7 @@ Xen Project mailing lists have a web as well as an email interface. {{}} ### Windows PV Drivers {{}} -{{}} +{{}} - title: WIN-PV-DEVEL@ tags: - Mailing list @@ -234,7 +234,7 @@ Xen Project mailing lists have a web as well as an email interface. ## Advisory board {{}} -{{}} +{{}} - title: PREDISCLOSURE-APPLICATIONS@ tags: - Mailing list diff --git a/content/resources/matrix.md b/content/resources/matrix.md index a763116..a060e8a 100644 --- a/content/resources/matrix.md +++ b/content/resources/matrix.md @@ -16,7 +16,7 @@ menus: ## Xen Project Matrix {{}} -{{}} +{{}} - title: XenProject tags: - Matrix @@ -43,7 +43,7 @@ menus: ## Projects {{}} -{{}} +{{}} - title: XCP-ng tags: - Discord diff --git a/hugo_stats.json b/hugo_stats.json index fc9f22d..033b435 100644 --- a/hugo_stats.json +++ b/hugo_stats.json @@ -221,6 +221,7 @@ "socials-footer", "tag", "title-external-link", + "title-with-gradient-underline", "txt-c", "vertical-lists", "video-container", diff --git a/stories/AllComponents.stories.js b/stories/AllComponents.stories.js index 7ed60e8..292dc27 100644 --- a/stories/AllComponents.stories.js +++ b/stories/AllComponents.stories.js @@ -1,6 +1,8 @@ import { html } from "lit"; import { unsafeHTML } from "lit/directives/unsafe-html.js"; +const DEFAULT_COLUMNS = 3; + const storiesList = [ { group: "Molecules", @@ -23,13 +25,23 @@ async function loadStories() { } const AllComponentsTemplate = (args, { loaded: { stories } }) => { - let columns = 1; // Default number of columns + let columns = DEFAULT_COLUMNS; + let zoom = 1; const updateColumns = (event) => { columns = event.target.value; document.querySelector(".component-grid").style.gridTemplateColumns = `repeat(${columns}, 1fr)`; }; + const updateZoom = (event) => { + zoom = event.target.value; + document.querySelectorAll(".component-content").forEach((el) => { + el.style.transform = `scale(${zoom})`; + el.style.width = `${100 / zoom}%`; + el.style.height = `${100 / zoom}%`; + }); + }; + const scaleContent = (element) => { const parent = element.parentElement; const scale = Math.min(parent.clientWidth / element.scrollWidth, parent.clientHeight / element.scrollHeight); @@ -98,16 +110,34 @@ const AllComponentsTemplate = (args, { loaded: { stories } }) => { display: flex; align-items: center; justify-content: center; - overflow: hidden; flex-direction: column; gap: 12px; padding: 20px; + transform-origin: top left; + width: 100%; + height: 100%; + } + .controls { + display: flex; + gap: 20px; + margin-bottom: 20px; + } + .control-group { + display: flex; + align-items: center; + gap: 8px; }

All Components

-
- - +
+
+ + +
+
+ + +
${stories.map((group) => { return html` diff --git a/stories/molecules/Card.stories.js b/stories/molecules/Card.stories.js index 2d988b7..4e245e8 100644 --- a/stories/molecules/Card.stories.js +++ b/stories/molecules/Card.stories.js @@ -17,11 +17,6 @@ export default { } }, 1000); -
Card
diff --git a/themes/xen-project/assets/css/components/box-resources.scss b/themes/xen-project/assets/css/components/box-resources.scss index 0705680..fd9a56e 100644 --- a/themes/xen-project/assets/css/components/box-resources.scss +++ b/themes/xen-project/assets/css/components/box-resources.scss @@ -18,12 +18,12 @@ margin: var(--sp-xs) 0; } - a { - text-decoration: none; + // a { + // text-decoration: none; - &:hover { - text-decoration: underline; - } - } + // &:hover { + // text-decoration: underline; + // } + // } } } diff --git a/themes/xen-project/assets/css/footer.scss b/themes/xen-project/assets/css/footer.scss index c34d00d..1273e98 100644 --- a/themes/xen-project/assets/css/footer.scss +++ b/themes/xen-project/assets/css/footer.scss @@ -124,14 +124,15 @@ --icon-left: 0; vertical-align: middle; line-height: 1; - } - a:hover { - --icon-left: 0.6em; - text-decoration: underline; + text-decoration: none !important; &::before { right: 1.6em; } } + a:hover { + --icon-left: 0.6em; + text-decoration: none; + } a:active { --icon-left: 0.9em; diff --git a/themes/xen-project/assets/css/header/header-desktop.scss b/themes/xen-project/assets/css/header/header-desktop.scss index b0077c6..14e253f 100644 --- a/themes/xen-project/assets/css/header/header-desktop.scss +++ b/themes/xen-project/assets/css/header/header-desktop.scss @@ -129,8 +129,8 @@ a { color: var(--header-color-link); - font-weight: 500; - text-decoration: none; + // font-weight: 500; + // text-decoration: none; &:hover { color: var(--header-color-link-hover); diff --git a/themes/xen-project/assets/css/header/header-mobile.scss b/themes/xen-project/assets/css/header/header-mobile.scss index 75234d9..1251ddd 100644 --- a/themes/xen-project/assets/css/header/header-mobile.scss +++ b/themes/xen-project/assets/css/header/header-mobile.scss @@ -216,3 +216,16 @@ display: block; } } + +.header .menu a { + @extend .btn; + @extend .btn-tertiary; + --icon-width: 0.8em; + --icon-margin: 0em; + --padding: 0em; + + font-size: 1em; + &::before { + right: calc(var(--icon-left) + var(--icon-width) + var(--icon-margin) + 0.2em + var(--padding)); + } +} diff --git a/themes/xen-project/assets/css/molecules/buttons.scss b/themes/xen-project/assets/css/molecules/buttons.scss index e40f3f8..cb4fb2d 100644 --- a/themes/xen-project/assets/css/molecules/buttons.scss +++ b/themes/xen-project/assets/css/molecules/buttons.scss @@ -38,7 +38,8 @@ padding: 0.75rem 1.5rem; } - &::after { + &-primary::after, + &-secondary::after { --space: 0.375rem; content: ""; position: absolute; @@ -51,7 +52,8 @@ } // button icon - .fas { + .fas, + &-tertiary::after { transform: translateX(var(--icon-left)); transition: transform 0.3s ease-in-out; display: inline-block; @@ -72,10 +74,6 @@ --icon-left: 0.3em; } - // &:has(.fas):hover { - // --left-padding: 0.7em; - // } - &:active, &.active { --color-primary: var(--color-active); @@ -104,8 +102,9 @@ } &-tertiary { + --padding: 2px; position: relative; - padding: 2px; + padding: var(--padding); background-color: transparent; border: none; @@ -119,8 +118,8 @@ transform: scaleX(0); height: 2px; bottom: 0; - left: 0; - right: 0; + left: var(--padding); + right: var(--padding); background-color: currentColor; transition: transform 0.25s ease-out; transform-origin: bottom left; @@ -135,7 +134,7 @@ } &:has(.fas)::before { - right: calc(var(--icon-left) + var(--icon-width) + var(--icon-margin) + 0.2em); + right: calc(var(--icon-left) + var(--icon-width) + var(--icon-margin) + 0.2em + var(--padding)); } &:hover::before { diff --git a/themes/xen-project/assets/css/molecules/card.scss b/themes/xen-project/assets/css/molecules/card.scss index 7aeffb2..2af6864 100644 --- a/themes/xen-project/assets/css/molecules/card.scss +++ b/themes/xen-project/assets/css/molecules/card.scss @@ -110,6 +110,7 @@ --card-tag-text-color: var(--color-action-text); --card-title-color: var(--color-action-text); --card-title-weight: 500; + box-shadow: none; } &--bg-white { diff --git a/themes/xen-project/assets/css/molecules/hero-block.scss b/themes/xen-project/assets/css/molecules/hero-block.scss index b43a07a..9062d0c 100644 --- a/themes/xen-project/assets/css/molecules/hero-block.scss +++ b/themes/xen-project/assets/css/molecules/hero-block.scss @@ -16,3 +16,22 @@ font-size: var(--title-font-size); } } + +.title-with-gradient-underline { + strong { + display: block; + white-space: nowrap; + position: relative; + + &::after { + display: block; + content: ""; + position: absolute; + bottom: -0.04em; + left: 0; + right: 0; + height: 0.07em; + background: linear-gradient(90deg, #07c 0%, rgba(255, 255, 255, 0) 100%); + } + } +} diff --git a/themes/xen-project/assets/css/typography.scss b/themes/xen-project/assets/css/typography.scss index 21e0594..d48c217 100644 --- a/themes/xen-project/assets/css/typography.scss +++ b/themes/xen-project/assets/css/typography.scss @@ -79,13 +79,13 @@ h1 { font-size: var(--font-size-h1); margin-top: var(--sp-md); margin-bottom: var(--sp-md); - font-weight: 700; + font-weight: 500; line-height: 119%; letter-spacing: -0.027em; } h2 { - font-weight: bold; + font-weight: 500; font-size: var(--font-size-h2); margin-top: 0.66em; margin-bottom: 0.66em; diff --git a/themes/xen-project/assets/js/carousel.js b/themes/xen-project/assets/js/carousel.js index c500a05..eac90c6 100644 --- a/themes/xen-project/assets/js/carousel.js +++ b/themes/xen-project/assets/js/carousel.js @@ -7,11 +7,19 @@ const { debounce } = window.XenSiteUtils; const carousel = async (element) => { + const infiniteLoop = false; + const itemsBefore = 2; + const itemsAfter = 2; + const carouselElement = element.querySelector(".carousel"); let prev = element.querySelector(".prev"); let next = element.querySelector(".next"); let items = await waitForElements(carouselElement, itemSelector); + // add attributes to first and last items + items[0].dataset.first = true; + items[items.length - 1].dataset.last = true; + const carouselClone = carouselElement.cloneNode(true); carouselClone.classList.add("carousel-clone"); carouselClone.style.setProperty("position", "absolute"); @@ -23,6 +31,7 @@ carouselClone.style.setProperty("pointer-events", "none"); carouselClone.style.setProperty("visibility", "hidden"); carouselClone.style.setProperty("height", "100"); + const getItemInformations = () => { carouselElement.before(carouselClone); carouselClone.style.setProperty("width", carouselElement.offsetWidth + "px"); @@ -64,6 +73,11 @@ cloneItemsReverse(items, itemsAfter); const moveNext = function () { + if ( + !infiniteLoop && + element.querySelectorAll(itemSelector)[element.querySelectorAll(itemSelector).length - 1].dataset.last + ) + return; let items = element.querySelectorAll(itemSelector); carouselElement.appendChild(items[0]); }; @@ -71,6 +85,8 @@ const movePrev = function () { let items = element.querySelectorAll(itemSelector); + const item = items[itemsBefore]; + if (!infiniteLoop && item.dataset.first) return; carouselElement.prepend(items[items.length - 1]); }; prev.addEventListener("click", movePrev); @@ -85,7 +101,6 @@ carouselElement.addEventListener("touchend", (e) => { moveX = e.changedTouches[0].clientX - startX; if (Math.abs(moveX) > 50) { - // Seuil de 50px pour considérer comme un swipe if (moveX > 0) { movePrev(); } else { @@ -133,9 +148,6 @@ } `); - const itemsBefore = 3; - const itemsAfter = 2; - const carouselWidth = carouselElement.offsetWidth; const maxItems = Math.floor(carouselWidth / occupiedSpace) + 1 + itemsBefore + itemsAfter; diff --git a/themes/xen-project/layouts/partials/card.html b/themes/xen-project/layouts/partials/card.html index e986941..3794932 100644 --- a/themes/xen-project/layouts/partials/card.html +++ b/themes/xen-project/layouts/partials/card.html @@ -19,11 +19,11 @@
{{ .description | markdownify | safeHTML }}
{{ if .link }}
- + {{ .linkText | default $defaultLinkText }} {{ if .secondaryLink }} - + {{ .secondaryLinkText | default $defaultLinkText }} diff --git a/themes/xen-project/layouts/partials/layout/link-item.html b/themes/xen-project/layouts/partials/layout/link-item.html index 64880b7..1cf4bb2 100644 --- a/themes/xen-project/layouts/partials/layout/link-item.html +++ b/themes/xen-project/layouts/partials/layout/link-item.html @@ -1,6 +1,10 @@
  • {{ if .link }} - + {{ .name | markdownify }} {{ if .icon }} diff --git a/themes/xen-project/layouts/partials/media-block.html b/themes/xen-project/layouts/partials/media-block.html index 0dbf942..2d32772 100644 --- a/themes/xen-project/layouts/partials/media-block.html +++ b/themes/xen-project/layouts/partials/media-block.html @@ -28,7 +28,7 @@
    {{ .Label }}
    {{ end }} {{ if .Title }} - {{ $title | safeHTML }} + {{ $title | safeHTML }} {{ end }}
    {{ .Content | safeHTML }} diff --git a/themes/xen-project/layouts/shortcodes/media-block.html b/themes/xen-project/layouts/shortcodes/media-block.html index b1c911a..5afb151 100644 --- a/themes/xen-project/layouts/shortcodes/media-block.html +++ b/themes/xen-project/layouts/shortcodes/media-block.html @@ -7,6 +7,7 @@ {{ $mobileMediaPosition := .Get "mobileMediaPosition" | default "left" }} {{ $title := .Get "title" | default "" }} {{ $titleLevel := .Get "titleLevel" | default "2" }} +{{ $titleClass := .Get "titleClass" | default "" }} {{ $class := .Get "class" | default "" }} {{ $animate := .Get "animate" | default "false" }} @@ -21,6 +22,7 @@ "Site" .Site "Title" $title "TitleLevel" $titleLevel + "TitleClass" $titleClass "Class" $class "Animate" $animate ) diff --git a/themes/xen-project/layouts/shortcodes/row-from-list.html b/themes/xen-project/layouts/shortcodes/row-from-list.html index bec88a8..d51fb01 100644 --- a/themes/xen-project/layouts/shortcodes/row-from-list.html +++ b/themes/xen-project/layouts/shortcodes/row-from-list.html @@ -3,6 +3,7 @@ {{ $class := .Get "class" }} {{ $yamlData := .Inner | unmarshal }} {{ $componentClass := .Get "component-class" }} +{{ $titleLevel := .Get "titleLevel" }}
    {{ range $yamlData }} - {{ partial $component (merge . (dict "class" $componentClass)) }} + {{ partial $component (merge . (dict "class" $componentClass "titleLevel" $titleLevel)) }} {{ end }}