Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
f0bab82
Fix file URL handling in HTML extension remover
vltrajvlien Jul 1, 2026
85c370c
Refine trust center hero layout
vltrajvlien Jul 1, 2026
015096f
Refine trust center visuals and spacing
vltrajvlien Jul 2, 2026
bf2f1ac
Refresh trust center layout and testimonials
vltrajvlien Jul 2, 2026
6ae62a7
Refine trust center FAQ accordion and visuals
vltrajvlien Jul 2, 2026
98a3f0a
Add trust center header link
vltrajvlien Jul 3, 2026
a4646c6
fix trust center copy
vltrajvlien Jul 3, 2026
cc20176
Merge branch 'codex/nimbus' into feature/trust-center-product-page
vltrajvlien Jul 3, 2026
a986044
fix trust center quote halo
vltrajvlien Jul 3, 2026
8770f76
Merge branch 'codex/juniper' into feature/trust-center-product-page
vltrajvlien Jul 3, 2026
dd99143
animate protected assets visual
vltrajvlien Jul 3, 2026
a59bbe6
Add animated documents trust visual
vltrajvlien Jul 3, 2026
b8077fe
Animate trust center category visuals
vltrajvlien Jul 3, 2026
1226082
Merge branch 'codex/nimbus' into feature/trust-center-product-page
vltrajvlien Jul 3, 2026
14c5ac9
Merge branch 'codex/quartz' into feature/trust-center-product-page
vltrajvlien Jul 3, 2026
49d58ed
fix: reorder header nav links
vltrajvlien Jul 6, 2026
5581d50
Update trust material illustrations
vltrajvlien Jul 6, 2026
ea93f1b
Merge branch 'codex/ember' into feature/trust-center-product-page
vltrajvlien Jul 6, 2026
436afe3
fix(trust-center): improve page quality essentials
vltrajvlien Jul 6, 2026
f3bc812
Align trust material halos
vltrajvlien Jul 6, 2026
4bf367a
feat: animate trust material visuals
vltrajvlien Jul 6, 2026
8e9e332
Merge branch 'codex/sable' into feature/trust-center-product-page
vltrajvlien Jul 6, 2026
e4b204e
fix(trust-center): add security asset dimensions
vltrajvlien Jul 6, 2026
81c0495
Merge branch 'codex/atlas' into feature/trust-center-product-page
vltrajvlien Jul 6, 2026
5e3edf4
Merge branch 'feature/trust-center-product-page' into codex/ember
vltrajvlien Jul 6, 2026
4b33e84
Align trust material illustrations
vltrajvlien Jul 6, 2026
9e1b758
Adjust security commitment grid
vltrajvlien Jul 6, 2026
a3d7ec5
Restore security grid offset
vltrajvlien Jul 6, 2026
08aae82
Merge branch 'codex/atlas' into feature/trust-center-product-page
vltrajvlien Jul 6, 2026
a7d7b7c
Merge branch 'codex/ember' into feature/trust-center-product-page
vltrajvlien Jul 6, 2026
5a0d0c9
Add trust material hover motion
vltrajvlien Jul 6, 2026
25dd02a
Fix subprocessor card animation
vltrajvlien Jul 6, 2026
ed3203d
Restore subprocessor stack motion
vltrajvlien Jul 6, 2026
2931308
Layer subprocessor halo above cards
vltrajvlien Jul 6, 2026
efb3ad9
Remove Stripe reveal pause
vltrajvlien Jul 6, 2026
0d7336e
Simplify subprocessor card motion
vltrajvlien Jul 6, 2026
02b1dd2
Align subprocessor card motion timing
vltrajvlien Jul 6, 2026
e89d7df
Increase trust center hero blur
vltrajvlien Jul 6, 2026
7164508
Stagger security card hover motion
vltrajvlien Jul 6, 2026
a78d594
Merge branch 'codex/atlas' into feature/trust-center-product-page
vltrajvlien Jul 6, 2026
f45845a
Merge branch 'codex/ember' into feature/trust-center-product-page
vltrajvlien Jul 6, 2026
54e44b4
Animate trust center page
vltrajvlien Jul 7, 2026
43f2ec7
Refine trust center hero title animation
vltrajvlien Jul 7, 2026
6af4fff
Stagger trust center hero animation
vltrajvlien Jul 7, 2026
4743162
Tune trust center hero orb animation
vltrajvlien Jul 7, 2026
3c56834
Tune trust center hero orb easing
vltrajvlien Jul 7, 2026
755885b
Remove trust center orb delay
vltrajvlien Jul 7, 2026
d323b0b
Align trust center orb entrance
vltrajvlien Jul 7, 2026
9abe392
Update trust center lottie assets
vltrajvlien Jul 7, 2026
c4ba012
Stagger trust center browser entrance
vltrajvlien Jul 7, 2026
7e23e46
Merge branch 'codex/nova' into feature/trust-center-product-page
vltrajvlien Jul 7, 2026
ffc18cf
Merge branch 'codex/kite' into feature/trust-center-product-page
vltrajvlien Jul 7, 2026
ea6095d
Merge remote-tracking branch 'origin/v2' into feature/trust-center-pr…
vltrajvlien Jul 7, 2026
dac90df
feat(trust-center): update compliance portal copy
vltrajvlien Jul 8, 2026
a5e423e
Merge branch 'v2' of https://github.com/getprobo/probo.com into featu…
vltrajvlien Jul 8, 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
1 change: 1 addition & 0 deletions public/lottie/trust-center/authentication.json

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions public/lottie/trust-center/nda.json

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions public/lottie/trust-center/slack.json

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions public/lottie/trust-center/updates.json

Large diffs are not rendered by default.

125 changes: 125 additions & 0 deletions public/trust-center/audit-row-1.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
167 changes: 167 additions & 0 deletions public/trust-center/audit-row-2.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
140 changes: 140 additions & 0 deletions public/trust-center/audit-row-3.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
268 changes: 268 additions & 0 deletions public/trust-center/browser.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
78 changes: 78 additions & 0 deletions public/trust-center/data-requests.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
233 changes: 233 additions & 0 deletions public/trust-center/documents.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
40 changes: 40 additions & 0 deletions public/trust-center/ellipse.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
101 changes: 101 additions & 0 deletions public/trust-center/pdf.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
43 changes: 43 additions & 0 deletions public/trust-center/quote-ellipse.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
30 changes: 30 additions & 0 deletions public/trust-center/security-encryption.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
30 changes: 30 additions & 0 deletions public/trust-center/security-monitoring.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
30 changes: 30 additions & 0 deletions public/trust-center/security-privacy.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
30 changes: 30 additions & 0 deletions public/trust-center/security-vulnerability.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
52 changes: 52 additions & 0 deletions public/trust-center/subprocessor-docusign.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
51 changes: 51 additions & 0 deletions public/trust-center/subprocessor-hubspot.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
50 changes: 50 additions & 0 deletions public/trust-center/subprocessor-linear.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
51 changes: 51 additions & 0 deletions public/trust-center/subprocessor-stripe.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/testimonial/fabien-devos-vybe.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions src/components/Header.astro
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ type Props = {
<Image src={Logo} alt="Logo probo" width={73} height={20} class="block" />
</a>
<nav class="hidden sm:flex" transition:name="header-nav">
<NavLink href="/trust-center">Compliance Portal</NavLink>
<NavLink href="/about">About</NavLink>
<NavLink href="/blog">Blog</NavLink>
<NavLink href="/stories">Stories</NavLink>
Expand Down
38 changes: 24 additions & 14 deletions src/components/LogosScroll.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,26 @@

const props: { children: Snippet; class?: string } = $props();
let slider: HTMLDivElement | null = null;
const options = {
type: "loop",
gap: 16,
arrows: false,
autoWidth: true,
pagination: false,
mediaQuery: "min",
autoScroll: {
pauseOnFocus: false,
speed: 0.7,
pauseOnHover: false,
},
} as const;
const createOptions = () => {
const prefersReducedMotion = window.matchMedia(
"(prefers-reduced-motion: reduce)",
).matches;

return {
type: "loop",
gap: 16,
arrows: false,
autoWidth: true,
pagination: false,
mediaQuery: "min",
autoScroll: {
autoStart: !prefersReducedMotion,
pauseOnFocus: true,
speed: prefersReducedMotion ? 0 : 0.7,
pauseOnHover: true,
},
} as const;
};

onMount(() => {
if (!slider) {
Expand All @@ -30,7 +37,10 @@
Array.from(slot.children).forEach((child) => {
child.classList.add("splide__slide");
});
const s = new Splide(slider, options).mount({ AutoScroll, Intersection });
const s = new Splide(slider, createOptions()).mount({
AutoScroll,
Intersection,
});
return () => {
s.destroy();
};
Expand Down
90 changes: 90 additions & 0 deletions src/components/LottiePlayer.svelte
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
<script lang="ts">
import { onDestroy } from "svelte";
import type { AnimationItem } from "lottie-web";
import { useIntersectionObserver } from "../lib/runes/useIntersectionObserver.svelte.ts";

type Props = {
src: string;
label: string;
class?: string;
loop?: boolean;
};

const { src, label, class: className, loop = true }: Props = $props();

let animation = $state<AnimationItem | null>(null);
let loadingPromise: Promise<void> | null = null;
let reducedMotion = $state(false);
const intersection = useIntersectionObserver({ threshold: 0.2 });

const loadAnimation = async () => {
const { default: lottie } = await import("lottie-web");

if (!intersection.ref || animation) {
return;
}

animation = lottie.loadAnimation({
container: intersection.ref,
renderer: "svg",
loop,
autoplay: intersection.observed && !reducedMotion,
path: src,
rendererSettings: {
preserveAspectRatio: "xMidYMid meet",
},
});
};

$effect(() => {
if (typeof window === "undefined") {
return;
}

const mediaQuery = window.matchMedia("(prefers-reduced-motion: reduce)");
const syncMotionPreference = () => {
reducedMotion = mediaQuery.matches;
if (reducedMotion) {
animation?.pause();
} else if (intersection.observed) {
animation?.play();
}
};

syncMotionPreference();
mediaQuery.addEventListener("change", syncMotionPreference);

return () => {
mediaQuery.removeEventListener("change", syncMotionPreference);
};
});

$effect(() => {
if (!intersection.ref) {
return;
}

if (reducedMotion || !intersection.observed) {
animation?.pause();
return;
}

if (animation) {
animation.play();
return;
}

loadingPromise ??= loadAnimation();
});

onDestroy(() => {
animation?.destroy();
});
</script>

<div
bind:this={intersection.ref}
class={className}
role="img"
aria-label={label}
></div>
5 changes: 5 additions & 0 deletions src/content/menu.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
export const menuItems = [
{
label: "Compliance Portal",
description: "Share compliance materials with prospects",
href: "/trust-center",
},
{
label: "About",
description: "The people and vision powering Probo",
Expand Down
12 changes: 10 additions & 2 deletions src/layouts/Layout.astro
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ const canonical = getCanonicalUrl(Astro.url);
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<title>{seoTitle}</title>
<link rel="preconnect" href="https://fonts.googleapis.com" />
Expand Down Expand Up @@ -177,8 +177,16 @@ const canonical = getCanonicalUrl(Astro.url);
<slot name="head" />
</head>
<body class="text-primary bg-level-0 font-sans text-base">
<a
href="#main-content"
class="focus:bg-level-0 focus:text-primary sr-only focus:not-sr-only focus:fixed focus:top-3 focus:left-3 focus:z-[100] focus:rounded-md focus:px-3 focus:py-2 focus:text-sm focus:font-medium focus:shadow-lg"
>
Skip to main content
</a>
<Header />
<slot />
<div id="main-content" tabindex="-1">
<slot />
</div>
<Footer noFrameworks={Astro.props.noFrameworks} />
<probo-cookie-banner
banner-id={import.meta.env.PUBLIC_COOKIE_BANNER_ID}
Expand Down
Loading
Loading