Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
b6eaea4
Fix CSS variable typos in about styles
MMesch May 13, 2026
432e9da
Remove global a rule leaking from about CSS module
MMesch May 13, 2026
36966e2
Deduplicate link-to-button, link-box, social-media-links in custom.css
MMesch May 13, 2026
0fd45ae
Add font-display:swap to font imports, remove unused Dosis
MMesch May 13, 2026
3e54549
Move hardcoded colors to CSS tokens
MMesch May 13, 2026
21cfafb
Use min-height on content cards to prevent clipping
MMesch May 13, 2026
4731d6c
Revert "Use min-height on content cards to prevent clipping"
MMesch May 13, 2026
c20e4ba
Remove unused reversed layout components
MMesch May 13, 2026
64b3e43
Design pass A+B: color tokens, font unification, card layout fixes
MMesch May 13, 2026
4fdd1d9
Layout unification: content band, consistent page-start spacing
MMesch May 13, 2026
c574a59
Fix page-start top spacing: page-content shorthand padding was clobbe…
MMesch May 13, 2026
fabf886
Title alignment, project card compactness, fundable sidebar fix
MMesch May 13, 2026
dee7a1b
Fundable: tag filters + card grid, remove sidebar
MMesch May 13, 2026
6f3ed89
Projects: unify card background across text and image columns
MMesch May 13, 2026
a429657
Navbar: center nav items, move Fundable/Contact to left group
MMesch May 13, 2026
83461c3
Layout system: Section, SplitSection, CardGrid, Banner — migrate all …
MMesch May 13, 2026
6f07be4
Navbar: burger right-align on mobile, scope brand absolute positionin…
MMesch May 14, 2026
91dd6ec
About: values on light bg, team cards on white bg
MMesch May 14, 2026
5cba40a
Blog: CardGrid cols=3 so cards fill full width
MMesch May 14, 2026
b1ca8e3
Logos: replace carousel with dense flex-wrap grid showing all partners
MMesch May 14, 2026
4c4b919
Mobile: fix card centering and spacing — Topics CardGrid, padding, ze…
MMesch May 14, 2026
345b129
Refactor: unified Card layout component, remove content-card, simplif…
MMesch May 14, 2026
ffb0df6
Layout system: migrate remaining components, remove legacy global CSS
MMesch May 14, 2026
17baa24
custom.css: remove unused utility and legacy classes
MMesch May 14, 2026
bb18594
Headings: harmonize h1/h2/h3 hierarchy across all pages
MMesch May 14, 2026
5b6056c
Colors: 3-role semantic bg system (neutral/brand/emphasis)
MMesch May 14, 2026
31f9c49
Navbar: transparent at top, opaque on scroll with transition
MMesch May 14, 2026
4cca65c
Navbar: fix transparency by overriding --ifm-navbar-background-color …
MMesch May 14, 2026
a4da61d
Navbar: fix transparent effect with !important and negative margin
MMesch May 14, 2026
a6f492a
Section separation, card transparency, page overview sections, transp…
MMesch May 14, 2026
e884379
Expand page taglines to two sentences, differentiate per page
MMesch May 14, 2026
e08e69d
Hero: more top padding, yellow glow CTA button; services h1 copy
MMesch May 14, 2026
bec974b
Fundable: sync active filter with ?category= query param
MMesch May 14, 2026
5bb72b1
CTA buttons, nav, copy, and project alternation fixes
MMesch May 14, 2026
d75f7ff
Navbar: shorten Contact us → Contact, About us → About
MMesch May 14, 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
22 changes: 15 additions & 7 deletions docusaurus.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ const config: Config = {
organizationName: "/HaudinFlorence/", // Usually your GitHub org/user name.
projectName: "quantstack.github.io", // Usually your repo name.

clientModules: [require.resolve("./src/clientModules/navbarScroll.ts")],

onBrokenLinks: "warn",
onBrokenMarkdownLinks: "warn",
staticDirectories: ["static"],
Expand Down Expand Up @@ -107,6 +109,12 @@ const config: Config = {
},

items: [
{
to: "/",
className: "custom_navbar_item",
label: "Home",
position: "left",
},
{
to: "/projects/",
className: "custom_navbar_item",
Expand All @@ -122,7 +130,7 @@ const config: Config = {
{
to: "/about/",
className: "custom_navbar_item",
label: "About us",
label: "About",
position: "left",
},
{
Expand All @@ -139,15 +147,15 @@ const config: Config = {
},
{
to: "/fundable/",
label: "Fundable projects",
position: "right",
className: "fundable_projects"
className: "custom_navbar_item",
label: "Sponsor",
position: "left",
},
{
to: "/contact/",
label: "Contact us",
position: "right",
className: "contact",
className: "custom_navbar_item",
label: "Contact",
position: "left",
},
{
to: "https://github.com/QuantStack",
Expand Down
27 changes: 27 additions & 0 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

24 changes: 24 additions & 0 deletions flake.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";

outputs = { self, nixpkgs }:
let
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
in {
devShells.${system}.default = pkgs.mkShell {
buildInputs = with pkgs; [
nodejs_20
python3
pkg-config
cairo
pango
libpng
libjpeg
giflib
librsvg
pixman
];
};
};
}
20 changes: 20 additions & 0 deletions src/clientModules/navbarScroll.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
const THRESHOLD = 20;

function update(): void {
const scrolled = window.scrollY > THRESHOLD;
const isHome = window.location.pathname === "/";
document.documentElement.toggleAttribute("data-navbar-scrolled", scrolled);
document.documentElement.toggleAttribute(
"data-navbar-home-top",
isHome && !scrolled
);
}

export function onRouteDidUpdate(): void {
update();
}

if (typeof window !== "undefined") {
window.addEventListener("scroll", update, { passive: true });
update();
}
24 changes: 8 additions & 16 deletions src/components/about/FourValues.tsx
Original file line number Diff line number Diff line change
@@ -1,26 +1,18 @@
import styles from "./styles.module.css";
import CardGrid from "../layout/CardGrid";
import { ValueCard } from "@site/src/components/about/ValueCard";
import { valuesDetails } from "./Values/valuesDetails";

export default function FourValues() {
return (
<div>
<div className="row">
<div className="col">
<h1 className={"padding-none" + " " + "full-flex-centered"}>
Our values{" "}
</h1>
</div>
</div>
<ul className="row padding-none flex-full-centered row-with-margins">
<>
<h2>Our values</h2>
<CardGrid cols={4}>
{valuesDetails.map((value, index) => (
<li className="cards-list" key={index}>
<div className="col">
<ValueCard value={value} />
</div>
<li key={index}>
<ValueCard value={value} />
</li>
))}
</ul>
</div>
</CardGrid>
</>
);
}
33 changes: 11 additions & 22 deletions src/components/about/SmallPortraitCard.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import styles from "./styles.module.css";
import { useHistory } from "@docusaurus/router";
import Avatar from "./Avatar";
import Card from "../layout/Card";

export function SmallPortraitCard({ person }) {
const history = useHistory();
Expand All @@ -9,34 +10,22 @@ export function SmallPortraitCard({ person }) {
const completeName = person.completeName.replace(/\s+/g, '');
const completeNameWithoutAccents = completeName
.normalize("NFD")
.replace(/[\u0300-\u036f]/g, '');
.replace(/[̀-ͯ]/g, '');
history.push({
pathname: `/about/${completeNameWithoutAccents}`,
state: { fromAbout: true, scrollY: window.scrollY, },
state: { fromAbout: true, scrollY: window.scrollY },
});
}

return (
<div onClick={openDialog}>
<div className={"card" + " " + styles.small_portrait_card}>
<div className="card__header">
<Avatar person={person} />
<div
className={
"flex-full-centered" + " " + styles.small_card_complete_name
}
>
{person.completeName}
</div>
</div>
<div className="card__body">
<div
className={"flex-full-centered" + " " + styles.small_card_position}
>
{person.position}
</div>
</div>
<Card hover onClick={openDialog} className={styles.small_portrait_card}>
<Avatar person={person} />
<div className={"flex-full-centered " + styles.small_card_complete_name}>
{person.completeName}
</div>
</div>
<div className={"flex-full-centered " + styles.small_card_position}>
{person.position}
</div>
</Card>
);
}
21 changes: 9 additions & 12 deletions src/components/about/SubTeam.tsx
Original file line number Diff line number Diff line change
@@ -1,21 +1,18 @@
import styles from "./styles.module.css";
import { SmallPortraitCard } from "./SmallPortraitCard";
import CardGrid from "../layout/CardGrid";

export default function SubTeam({ subTeamName, subTeam }) {
return (
<div className={styles.subteam_container}>
<h2 className={"text--center"}> {subTeamName}</h2>
<div className={"container"}>
<ul className="row padding-none flex-full-centered row-with-margin-top">
{subTeam.map((person, index) => (
<li className="cards-list" key={person.pageName}>
<div className="col">
<SmallPortraitCard person={person} />
</div>
</li>
))}
</ul>
</div>
<h3 className="text--center">{subTeamName}</h3>
<CardGrid cols={3}>
{subTeam.map((person) => (
<li key={person.pageName}>
<SmallPortraitCard person={person} />
</li>
))}
</CardGrid>
</div>
);
}
19 changes: 7 additions & 12 deletions src/components/about/ValueCard.tsx
Original file line number Diff line number Diff line change
@@ -1,22 +1,17 @@
import styles from "./styles.module.css";
import Card from "../layout/Card";

export function ValueCard({ value }) {
return (
<div className={"card" + " " + styles.value_card}>
<div
className={"card__header flex-full-centered"}
style={{ marginBottom: "var(--ifm-spacing-lg)" }}
>
<Card className={styles.value_card}>
<div className={styles.value_icon}>
<value.pictureComponent alt={value.alt} />
</div>

<div className={"card__body"}>
<div className={styles.value_header}>{value.name}</div>
<div className={styles.value_text}>
<value.DescriptionMD />
</div>
<div className={styles.value_header}>{value.name}</div>
<div className={styles.value_text}>
<value.DescriptionMD />
</div>
</div>
</Card>
);
}
export default ValueCard;
72 changes: 32 additions & 40 deletions src/components/about/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ import styles from "./styles.module.css";
import { teams } from "./Team/team";
import FourValues from "./FourValues";
import SubTeam from "./SubTeam";
import Section from "../layout/Section";
import Banner from "../layout/Banner";
import LinkToContact from "../home/LinkToContact";

export function getTeamByPageName(name: string) {
Expand All @@ -14,50 +16,40 @@ export function getTeamByPageName(name: string) {
return null;
}


export function About() {
return (
<div>
<div className="main-container-with-margins">
<div className="container upper-container-with-margin-top">
<div className={"row"}>
<div className={"col flex-full-centered"}>
<FourValues />
</div>
</div>


<div className="row">
<div className="col col--10 col--offset-1">
<h1 className="text--center">Meet the QuantStack team</h1>
<div className={styles.team_description}>
A team of outliers, leaders in software projects adopted at the
global scale, benefiting millions of people worldwide.
</div>
</div>
</div>

<div className="row">
<div className="col">
<SubTeam
subTeamName={"The leadership team"}
subTeam={teams.leadershipTeam}
/>
<SubTeam subTeamName={"The core team"} subTeam={teams.coreTeam} />
<SubTeam
subTeamName={"QuantStack collaborators"}
subTeam={teams.QSCollaboratorsTeam}
/>
</div>
</div>
<>
<Section pageTop bg="yellow">
<h1>About QuantStack</h1>
<p>A small team of outliers — core maintainers of projects adopted globally by researchers, engineers, and educators. We believe open-source is the most powerful way to make high-quality tools available to everyone.</p>
</Section>
<Section>
<FourValues />
</Section>
<Section>
<h2>Meet the QuantStack team</h2>
<div className={styles.team_description}>
A team of outliers, leaders in software projects adopted at the
global scale, benefiting millions of people worldwide.
</div>
</div>
<div className="blue-banner-container">
<div className="blue-banner-header">Join the team</div>
<SubTeam
subTeamName={"The leadership team"}
subTeam={teams.leadershipTeam}
/>
<SubTeam subTeamName={"The core team"} subTeam={teams.coreTeam} />
<SubTeam
subTeamName={"QuantStack collaborators"}
subTeam={teams.QSCollaboratorsTeam}
/>
</Section>
<Banner
bg="dark"
title="Join the team"
cta={<LinkToContact label={"JOIN THE TEAM!"} />}
>
QuantStack is seeking talents in the open-source scientific computing
community. Join a team committed to open-science and free software.
<LinkToContact label={"JOIN THE TEAM!"} />
</div>
</div>
</Banner>
</>
);
}
Loading
Loading