Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
22e3c13
Update home page and add new page for confidential-computing
DelaraGi Mar 4, 2026
05fe811
fix: image url
DelaraGi Mar 4, 2026
671f0ca
ONEBoot page, Testing and Automation page on Linaro website
kenzo7664 Mar 4, 2026
4f5f8c0
Merge branch 'WEBDEV-2774' of https://github.com/Linaro/linaro-astro …
kenzo7664 Mar 4, 2026
7ed1599
ONEBoot page, Testing and Automation page on Linaro website
kenzo7664 Mar 4, 2026
4e39715
fix: menu
DelaraGi Mar 4, 2026
58330f2
fix: url of testing
DelaraGi Mar 4, 2026
256d915
ONEBoot page, Testing and Automation page on Linaro website
kenzo7664 Mar 4, 2026
a950305
Merge branch 'WEBDEV-2773' of https://github.com/Linaro/linaro-astro …
kenzo7664 Mar 4, 2026
05a0e31
fix: menu
DelaraGi Mar 4, 2026
23b2dfa
add:Under Solutions to the footer
DelaraGi Mar 4, 2026
89dd232
ONEBoot page, Testing and Automation page on Linaro website
kenzo7664 Mar 6, 2026
93283fd
ONEBoot page, Testing and Automation page on Linaro website
kenzo7664 Mar 6, 2026
7778da6
Create Post “linaro-at-embedded-world-2026”
linaro-test-account Mar 4, 2026
0141dd2
Update: contact form
DelaraGi Mar 5, 2026
2de97c9
Update home page and add new page for confidential-computing
DelaraGi Mar 4, 2026
0594372
fix: menu
DelaraGi Mar 4, 2026
a58c64b
update: homepage and onfidential-computing
DelaraGi Mar 6, 2026
34a1793
Merge branch 'main' into WEBDEV-2773
DelaraGi Mar 6, 2026
e28962c
fix:navbar
DelaraGi Mar 6, 2026
02e5d6c
Merge branch 'WEBDEV-2773' of https://github.com/Linaro/linaro-astro …
DelaraGi Mar 6, 2026
33b6838
fix: line in oneboot and testing
DelaraGi Mar 6, 2026
eba6635
fix: menu
DelaraGi Mar 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions astro.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -65,13 +65,13 @@ export default defineConfig({
"/lts": "/solutions/lts",
"/automotive-iot-and-edge-devices": "/projects/automotive-iot-edge",
"/cloud-computing-and-servers": "/projects/cloud-computing",
"/windows-on-arm": "/projects/windows-on-arm",
"/services/hands-on-training": "/services/training",
"/working-groups": "/",
"/projects": "/",
// '/core-technologies/[...slug]': "/",
"/core-technologies/virtualization": "/projects/automotive-iot-edge",
"/core-technologies/artificial-intelligence": "/solutions/ai-ml",
"/windows-on-arm": "/projects/windows-on-arm",
"/support": "/contact",
"/about/team": "/about",
"/about/tsc": "/about",
Expand All @@ -92,7 +92,6 @@ export default defineConfig({
"/solutions/ai-ml": "/",
"/projects/cloud-computing": "/",
"/solutions/codelinaro": "/",
"/solutions/iot-embedded": "/",
"/projects/windows-on-arm": "/",
"/confidential-computing": "/solutions/confidential-computing",
},
});
59 changes: 5 additions & 54 deletions package-lock.json

Large diffs are not rendered by default.

33 changes: 30 additions & 3 deletions src/components/cloudinary/CloudinaryImg.astro
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,43 @@ interface Props extends CloudinaryProps {
class?: string;
svg?: boolean;
id?: string;
width?: number;
height?: number;
}

const { src: initialSrc, ...props } = Astro.props;
const { src: initialSrc, class: className, width, height, alt, id } = Astro.props;

let src = initialSrc;
if (!src.startsWith("https://")) {
src = getCloudinarySrc({ ...props, src: initialSrc });
src = getCloudinarySrc({ ...Astro.props, src: initialSrc });
}

const url = src;
const isRemote = url.startsWith("http://") || url.startsWith("https://");
// Ensure URL is safe for HTML src (e.g. Cloudinary URLs with & in query params)
const srcAttr = isRemote ? url.replace(/&/g, "&") : url;
---

<Image src={url} loading="lazy" inferSize={true} {...props} />
{isRemote ? (
<img
src={srcAttr}
alt={alt}
width={width}
height={height}
class={className}
id={id}
loading="lazy"
decoding="async"
/>
) : (
<Image
src={url}
alt={alt}
loading="lazy"
inferSize={true}
width={width}
height={height}
class={className}
id={id}
/>
)}
112 changes: 74 additions & 38 deletions src/components/hero/Hero.astro
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,13 @@ import type { GetImageResult } from "astro";
import { getImage } from "astro:assets";
import type { CollectionEntry } from "astro:content";
import * as marked from "marked";
import HeroCarousel from "@/components/sections/HeroCarousel.astro";

type Props = CollectionEntry<"pages">["data"]["hero"];

const { title, background_image, button, description, styles, bottom_fade } =
const { title, background_image, button, description, styles, bottom_fade, carousel, tagline } =
Astro.props!;
const hasCarousel = carousel?.slides?.length;
let optimizedBackground: GetImageResult | undefined;
if (background_image) {
optimizedBackground = await getImage({
Expand All @@ -31,15 +33,16 @@ const descriptionMarkdown = description

<section
class:list={[
// style,
`relative text-white w-full max-w-screen overflow-hidden`,
styles?.main_container
? styles.main_container
: "h-[calc(100vh)] min-h-[800px] max-h-[1200px]",
"relative text-white w-full max-w-screen overflow-hidden",
hasCarousel
? "pt-12 pb-16 md:pt-16 md:pb-20"
: null,
!hasCarousel && (styles?.main_container ?? "h-[calc(100vh)] min-h-[800px] max-h-[1200px]"),
hasCarousel && styles?.main_container,
]}
>
{
bottom_fade && (
bottom_fade && !hasCarousel && (
<div
class="pointer-events-none absolute inset-x-0 bottom-0 h-[130px]
bg-gradient-to-t from-white/15 to-white/0"
Expand All @@ -48,8 +51,9 @@ const descriptionMarkdown = description
}
<div
class:list={[
"absolute w-full h-full max-w-[160rem] mx-auto pl-0 sm:pl-[20%] z-10 container",
styles?.background_container,
"absolute inset-0 max-w-[160rem] mx-auto z-10",
hasCarousel ? "pl-0" : "pl-0 sm:pl-[20%]",
!hasCarousel && styles?.background_container,
]}
>
<div
Expand All @@ -60,41 +64,69 @@ const descriptionMarkdown = description
]}
>
</div>
{background_image && (
<div
class="absolute inset-0 z-[11] pointer-events-none hero-dark-overlay"
aria-hidden="true"
/>
)}
</div>
<div
class:list={[
"relative container mx-auto flex flex-col justify-center h-full px-8 z-20",
"relative container mx-auto px-8 z-20",
hasCarousel
? "flex flex-col items-center text-center pt-6 pb-4"
: "flex flex-col justify-center h-full",
]}
>
<div class:list={["flex flex-col items-start", styles?.text_container]}>
<h1
class:list={[
"text-inherit text-4xl md:text-5xl text-left leading-tight lg:leading-tight mb-0 prose prose-p:my-0 prose-em:linaro-gradient-text prose-em:not-italic",
styles?.title,
]}
set:html={titleMarkdown}
/>
<h1
class:list={[
"text-inherit text-4xl md:text-5xl lg:text-6xl leading-tight mb-0 prose prose-p:my-0 prose-em:linaro-gradient-text prose-em:not-italic",
hasCarousel ? "text-center max-w-4xl mx-auto mb-8 md:mb-10" : "text-left",
styles?.title,
]}
set:html={titleMarkdown}
/>

{
descriptionMarkdown && (
<div
class:list={["text-xl", styles?.description]}
set:html={descriptionMarkdown}
/>
)
}
{
button && (
<a
href={button.url}
target={button.url.startsWith("https://") ? "_blank" : "self"}
class="mt-12 no-underline inline-block"
>
<div class="linaro-gradient-button">{button.text}</div>
</a>
)
}
</div>
{
hasCarousel ? (
<>
<div class="w-full max-w-5xl mx-auto">
<HeroCarousel slides={carousel.slides} />
</div>
{
tagline && (
<p
class="text-center max-w-4xl mx-auto text-lg md:text-xl text-white/90 mt-8 px-4"
set:html={tagline}
/>
)
}
</>
) : (
<div class:list={["flex flex-col items-start", styles?.text_container]}>
{
descriptionMarkdown && (
<div
class:list={["text-xl", styles?.description]}
set:html={descriptionMarkdown}
/>
)
}
{
button && (
<a
href={button.url}
target={button.url.startsWith("https://") ? "_blank" : "self"}
class="mt-12 no-underline inline-block"
>
<div class="linaro-gradient-button">{button.text}</div>
</a>
)
}
</div>
)
}
<span class="hidden" data-pagefind-meta={`summary`}>{description}</span>
<span class="hidden" data-pagefind-meta={`heading`}>{title}</span>
{
Expand All @@ -115,4 +147,8 @@ const descriptionMarkdown = description
.hero-background-image {
background-image: var(--backgroundUrl);
}

.hero-dark-overlay {
background: rgba(34, 32, 37, 0.4);
}
</style>
8 changes: 4 additions & 4 deletions src/components/nav/Dropdown.astro
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ const { title, lastItem, children } = Astro.props;
---

<menu
class:list={["astronav-dropdown group "]}
class:list={["astronav-dropdown group relative"]}
aria-expanded="false"
data-nav-group={title}
>
Expand All @@ -20,13 +20,13 @@ const { title, lastItem, children } = Astro.props;
class:list={[" astronav-dropdown dropdown-toggle hidden"]}
aria-expanded="false"
>
<div class:list={[" lg:absolute w-full z-10 mt-1 lg:left-0"]}>
<div class="flex flex-col lg:flex-row w-full flex-wrap">
<div class:list={[" lg:absolute z-10 mt-1 lg:left-0 w-max min-w-[240px] max-w-[360px]"]}>
<div class="flex flex-col w-full min-w-0 bg-background py-2 lg:rounded-xl lg:border lg:border-white/10 lg:shadow-lg">
{
children.map((item: any) => (
<a
href={item.url}
class=" lg:px-3 py-2 text-grey hover:text-linaro-yellow cursor-pointer whitespace-nowrap text-sm"
class="px-4 py-2 text-grey hover:text-linaro-yellow cursor-pointer text-sm hover:bg-white/5 break-words"
target={item.url.startsWith("https") ? "_blank" : "_self"}
>
{item.label}
Expand Down
Loading