Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
3f9030b
Setting up architecture for the new download pages
Stefterv Sep 15, 2025
4f07cab
Add 'What's New' section to macOS download page
Stefterv Sep 15, 2025
74b13c1
Disable parallel sourcing in Gatsby config
Stefterv Sep 16, 2025
2f75926
Re-architecture
Stefterv Sep 16, 2025
a04fb58
Download instructions
Stefterv Sep 16, 2025
3166dec
Add Windows MSI and Zip download instructions
Stefterv Sep 16, 2025
f1071ff
Refactor download page and platform selection UI
Stefterv Sep 16, 2025
8625d74
Update download images for Linux and Windows
Stefterv Sep 16, 2025
24954fa
Further implemented download pages
Stefterv Sep 16, 2025
3892501
Show Previous releases by Major and LTS version
Stefterv Sep 17, 2025
a03d9af
Release indicator
Stefterv Sep 17, 2025
2cc24df
Add analytics tracking to download buttons
Stefterv Sep 17, 2025
63a3426
Add Donorbox donation widget to Donate component
Stefterv Sep 17, 2025
ec30ac7
Improved download layout and switcher UI pass
Stefterv Sep 17, 2025
ac2cae2
Refactor download pages and add architecture FAQ
Stefterv Sep 17, 2025
192cf3a
Further work on the instructions
Stefterv Sep 17, 2025
3d432bf
Further improvement of the instructions
Stefterv Sep 17, 2025
cf33247
Implemented Donate component and add styling for donation options
Stefterv Sep 17, 2025
1d12ab0
Add launch configuration for development server in VSCode
Stefterv Sep 18, 2025
3703f5d
Improve download page UI and release handling
Stefterv Sep 18, 2025
548a573
Update Switcher styles for improved download UI consistency
Stefterv Sep 18, 2025
b5ccc5c
Add all releases page and update download navigation
Stefterv Sep 18, 2025
60f963e
Redesign download pages layout and styles
Stefterv Sep 18, 2025
50cd45b
Add release notes and update release metadata for 4.4.8–4.5.0
Stefterv Jan 14, 2026
48c40c5
Refactor download flow by creating a dedicated DownloadCTA component …
Stefterv Mar 4, 2026
8753a75
Update release notes and JSON files for Processing versions 4.5.1, 4.…
Stefterv Mar 4, 2026
d6ab01c
Refactor download flow and styles: create DownloadCTA component, upda…
Stefterv Mar 9, 2026
a61a663
Refactor download components and styles: enhance Button and DownloadC…
Stefterv Mar 9, 2026
df32bb5
Refactor download and donation components: enhance styles for Button …
Stefterv Mar 9, 2026
f6f27fd
Enhance Navbar component: add donate button with icon and styles, upd…
Stefterv Mar 9, 2026
2564679
Refactor Linux download instructions: remove LinuxSnap component, add…
Stefterv Mar 9, 2026
e838133
Fix version handling in Switcher component: ensure fallback to latest…
Stefterv Mar 9, 2026
31e79ea
Refactor donation and download components: update styles, enhance lay…
Stefterv Mar 9, 2026
3786e0b
Refactor download components: update styles for Donate and Architectu…
Stefterv Mar 11, 2026
4e8fae4
Fix spacing for h3 elements in WhatsNew component: add margin-top for…
Stefterv Mar 11, 2026
7ec6cd0
Enhance platform selection logic: add support for URL parameter overr…
Stefterv Mar 20, 2026
4693e14
Refactor donation and sketch components: integrate Donate component i…
Stefterv Mar 20, 2026
4800339
Add styles for releases page and create install script placeholder
Stefterv Mar 20, 2026
7ee6fcf
Enhance ReleasesPage: add link styling for version tags and improve t…
Stefterv Mar 20, 2026
dd0ad1d
Fix release link generation: update tag URL structure for version com…
Stefterv Mar 20, 2026
031ad78
Refactor download components: streamline asset handling, enhance vers…
Stefterv Mar 24, 2026
b972e1e
Update download instructions to include version information for Linux…
Stefterv Mar 24, 2026
e074669
Refactor download components and enhance user guidance: update styles…
Stefterv Mar 24, 2026
24a7597
Refactor download button variants: implement dynamic class assignment…
Stefterv Mar 24, 2026
ecfa5bb
Refactor donate button styles: change selector to li.donate and enhan…
Stefterv Mar 24, 2026
08681aa
Enhance examples section: update heading and add instructional text f…
Stefterv Mar 24, 2026
9f390dc
Refactor CSS formatting: standardize spacing and improve readability …
Stefterv Mar 24, 2026
7481f6c
Refactor download CTA background: update image source to processing-b…
Stefterv Mar 24, 2026
0af8ac8
Refactor Navbar component: change list items to anchor tags for impro…
Stefterv Mar 24, 2026
eafea5e
Revert "Refactor Navbar component: change list items to anchor tags f…
Stefterv Mar 25, 2026
f752af6
Update Navbar.module.css
Stefterv Mar 25, 2026
a62ef5d
Add inline-flex display to donate subitem for improved layout
Stefterv Mar 26, 2026
6ff81a2
Refactor Navbar into context-based components
Stefterv Mar 27, 2026
1ff9c20
New Navbar
Stefterv Mar 27, 2026
b1895ad
Order fixes
Stefterv Mar 27, 2026
b3d5366
Merge branch 'main' into download-flow-refactor
Stefterv Jun 24, 2026
7491816
Update package-lock.json
Stefterv Jun 24, 2026
2af051d
Added platform picker
Stefterv Jun 24, 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
Prev Previous commit
Next Next commit
New Navbar
  • Loading branch information
Stefterv committed Mar 27, 2026
commit 1ff9c2059dafeddf5e75ed35fcfc53d68d667b85
4 changes: 4 additions & 0 deletions i18n/react-intl/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,10 @@
"donateCryptoInfo": "To donate using crypto, DAF, or stocks, visit our <strong><a href='https://www.every.org/processing-foundation?method=crypto,stocks,daf&success_url=https%3A%2F%2Fprocessing.org%2Fdonate&exit_url=https%3A%2F%2Fprocessing.org%2Fdonate&partner_metadata=eyJzb3VyY2UiOiAicHJvY2Vzc2luZy5vcmcifQ==#donate'>Every.org donation page</a></strong> instead.",
"donateButton": "Donate",
"donateHelp": "Help us continue with your generosity!",
"windows": "Windows",
"macos": "macOS",
"linux": "Linux",
"raspberry-pi": "Raspberry Pi",
"moreExamples": "More Examples",
"referenceTitle": "Reference",
"Topic Examples": "Topic Examples",
Expand Down
9 changes: 0 additions & 9 deletions src/components/Header.module.css
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,4 @@

.root h1 {
margin: 0;
}

.root a {
color: inherit;
text-decoration: none;

&:focus {
color: var(--processing-blue-dark);
}
}
129 changes: 3 additions & 126 deletions src/components/Navbar.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
import React, { useMemo, useState, useEffect, createContext, useContext } from 'react';
import React, { useState } from 'react';
import classnames from 'classnames';
import { useLocation } from '@reach/router';
import { LocalizedLink as Link, useLocalization } from 'gatsby-theme-i18n';
import { useIntl } from 'react-intl';
import { LocalizedLink as Link } from 'gatsby-theme-i18n';

import SearchBar from './SearchBar';
import { NavbarItems } from './NavbarItems';

import * as css from './Navbar.module.css';
import * as grid from '../styles/grid.module.css';
Expand All @@ -13,128 +12,6 @@ import LogoProcessing from '../images/logo-processing.svg';
import CloseIcon from '../images/close-icon.svg';
import MenuIcon from '../images/menu-icon.svg';

//the name values are used to get the value from the intl files
//it is not the name that is displayed
export const items = [
{
name: 'download',
href: '/download'
},
{
name: 'documentation',
children: [
{ name: 'reference', href: '/reference' },
{ name: 'environment', href: '/environment' },
{ name: 'libraries', href: '/reference/libraries' },
{ name: 'tools', href: '/reference/tools' },
{ name: 'wiki', href: 'https://wiki.processing.org' }
]
},
{
name: 'learn',
children: [
{ name: 'tutorials', href: '/tutorials' },
{ name: 'examples', href: '/examples' },
{ name: 'books', href: '/books' }
]
},
{
name: 'forum',
href: 'https://discourse.processing.org'
},
{
name: 'about',
children: [
{ name: 'overview', href: '/overview' },
{ name: 'people', href: '/people' },
{ name: 'privacy', href: '/privacy' }
]
},
{
name: 'donate',
href: '/donate',
class: css.donate,
icon() {
return (
<svg width="19" height="19" viewBox="0 0 19 19" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1.56836 7.45131C1.56838 6.57849 1.83315 5.72621 2.32771 5.00703C2.82227 4.28786 3.52335 3.73561 4.33835 3.42324C5.15335 3.11087 6.04394 3.05307 6.89249 3.25746C7.74103 3.46186 8.50761 3.91885 9.09099 4.56807C9.13208 4.612 9.18175 4.64703 9.23694 4.67097C9.29212 4.69492 9.35163 4.70727 9.41178 4.70727C9.47194 4.70727 9.53145 4.69492 9.58663 4.67097C9.64182 4.64703 9.69149 4.612 9.73258 4.56807C10.3141 3.91463 11.0809 3.4538 11.9308 3.24692C12.7807 3.04004 13.6735 3.09691 14.4903 3.40997C15.3071 3.72303 16.0092 4.27743 16.5031 4.99938C16.997 5.72133 17.2594 6.57658 17.2552 7.45131C17.2552 9.24745 16.0787 10.5887 14.9022 11.7652L10.5946 15.9324C10.4484 16.1003 10.2682 16.2351 10.066 16.328C9.86369 16.4208 9.64398 16.4696 9.42142 16.471C9.19886 16.4724 8.97855 16.4264 8.77512 16.3361C8.57169 16.2458 8.38981 16.1133 8.24155 15.9473L3.92139 11.7652C2.74487 10.5887 1.56836 9.2553 1.56836 7.45131Z" stroke="white" stroke-width="1.85" stroke-linecap="round" stroke-linejoin="round" />
</svg>
)
}
}
];

const NavbarItemContext = createContext();

function NavbarItems() {

return items.map((item, key) => (
<NavbarItemContext.Provider value={item} key={key}>
<NavbarItem item={item} />
</NavbarItemContext.Provider>
))
}

function NavbarItem() {
const { children, icon, name, ...item } = useContext(NavbarItemContext);

const className = classnames({
[css.item]: true,
[css.hasSubmenu]: children,
[item.class]: true
})


return (
<li className={className}>
<NavbarElement>
{icon && icon()}
</NavbarElement>
<NavbarItemChildren />
</li>
)
}

function NavbarElement({ children: content }) {
const intl = useIntl();
const { href, name, children } = useContext(NavbarItemContext);
const location = useLocation();
const isCurrent = location.pathname.startsWith(href);
const isCurrentCategory = children?.some(child => location.pathname.startsWith(child.href));

const classes = classnames({
[css.link]: true,
[css.active]: isCurrent || isCurrentCategory
})

return (
<Link to={href} className={classes}>
{content}
{intl.formatMessage({ id: name })}
</Link>
)
}

function NavbarItemChildren() {
const { children } = useContext(NavbarItemContext);

if (!children) {
return null;
}

return (
<ul className={css.submenu}>
{children.map((subitem, j) => (
<li className={css.subitem} key={j}>
<NavbarItemContext.Provider value={subitem}>
<NavbarElement />
</NavbarItemContext.Provider>
</li>
))}
</ul>
)
}

const Navbar = ({ siteTitle, scrolled }) => {
const [expanded, setExpanded] = useState(false);
return (
Expand Down
Loading