Skip to content
Merged

Lots #344

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
4818e34
Make the problem → code → Issues trail obvious on project pages
gregv Jul 23, 2026
a6f68ac
Facelift the Events & Teams section into refined event cards
gregv Jul 23, 2026
d8ad6b8
Facelift Reference Documents into refined row-cards
gregv Jul 23, 2026
abc3608
Merge pull request #336 from opportunity-hack/feature/project-code-ta…
gregv Jul 23, 2026
db51553
Add paused project status + redesign the status ladder
gregv Jul 30, 2026
a2f0a8f
Document the shared project-status catalog in CLAUDE.md
gregv Jul 30, 2026
5e8f342
Merge pull request #337 from opportunity-hack/feature/project-status-…
gregv Jul 30, 2026
b5d7419
Add public portfolio (/u/<slug>, /profile/<userid>) and cut over to t…
gregv Aug 9, 2026
4611ac8
Merge pull request #339 from opportunity-hack/feature/public-portfolio
gregv Aug 9, 2026
4771543
[Profile fixes] Better UX to not have giant heart banner
gregv Aug 9, 2026
64c5fb0
Merge pull request #340 from opportunity-hack/feature/public-portfolio
gregv Aug 9, 2026
95b5105
Extract shared refined application-form styles into ApplicationForm/r…
gregv Aug 9, 2026
880c4e2
Apply refined civic-editorial UX to judge, sponsor, and volunteer app…
gregv Aug 9, 2026
186246d
Document refined application-form pattern + shared refinedStyles modu…
gregv Aug 9, 2026
ffb2382
Judge intro video (upload or link) + fix application-page top spacing
gregv Aug 9, 2026
67c07af
Judge masthead stats: answer the judge's questions, not the form's
gregv Aug 9, 2026
8430380
Fix hacker-application top spacing (same fix as the other application…
gregv Aug 9, 2026
6cb53fe
Add optional T-shirt size to the volunteer application
gregv Aug 9, 2026
0738f2d
Step navigation lands on the step fields on every application form
gregv Aug 9, 2026
9c59803
Merge pull request #341 from opportunity-hack/feature/refined-applica…
gregv Aug 10, 2026
83f1a38
Judge application: block remote judges at physical venues
gregv Aug 12, 2026
15c2bb4
Judging window is per-event admin config, no longer hardcoded 3:00-5:…
gregv Aug 12, 2026
16497ed
Merge pull request #342 from opportunity-hack/feature/refined-applica…
gregv Aug 12, 2026
d848bc5
Central typography system: next/font tokens, 16px root, guardrails
gregv Aug 16, 2026
0cddcdf
Merge pull request #343 from opportunity-hack/feature/typography-system
gregv Aug 16, 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
70 changes: 66 additions & 4 deletions CLAUDE.md

Large diffs are not rendered by default.

9 changes: 9 additions & 0 deletions docs/refined-design-system.md
Original file line number Diff line number Diff line change
Expand Up @@ -331,3 +331,12 @@ The event page (`src/pages/hack/[event_id].js`) now:
disclosure pattern (see `about/judges`), MUI `Slider` with
`sx={{ color: '#1B3A6B' }}`, search `<input>` + quiet toggle-tag filters
(see `ProjectList` / `NonProfitList`).

## Typography update (Aug 2026)

Fonts now load globally via next/font (`src/styles/fonts.js` — the single
source of truth; import `FONT_BODY` / `FONT_DISPLAY`, never hardcode family
names). `<RefinedFonts/>` is a deprecated null stub. The root font-size was
fixed from 12px → 100%; refined.js display clamps/eyebrow/lead/btn/tag sizes
were frozen to px at their previously-rendered look. See CLAUDE.md
"Typography system" for the full contract.
44 changes: 44 additions & 0 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
// Minimal flat config — currently exists to enforce ONE contract:
// font families come from src/styles/fonts.js (see CLAUDE.md "Typography
// system"). next/font renames loaded families to hashed names, so a hardcoded
// 'Hanken Grotesk' / 'Fraunces' literal silently renders a fallback font.
// Run with: npm run lint

export default [
{
// Global ignores (own object = applies to everything).
ignores: [
"src/styles/fonts.js", // the single place family names may appear
"src/pages/12-years-of-social-good/**", // bespoke report, loads its own fonts
"src/tests/**",
"**/__tests__/**",
],
},
{
files: ["src/**/*.{js,jsx,mjs}"],
languageOptions: {
ecmaVersion: "latest",
sourceType: "module",
parserOptions: {
ecmaFeatures: { jsx: true },
},
},
linterOptions: {
// Old inline eslint-disable comments reference plugin rules (react-hooks,
// @next/next) this minimal config doesn't load — don't error on them.
noInlineConfig: true,
reportUnusedDisableDirectives: "off",
},
rules: {
"no-restricted-syntax": [
"error",
{
selector:
"Literal[value=/Fraunces|Hanken Grotesk|Montserrat|Space Grotesk/]",
message:
"Font families are tokens: import FONT_BODY / FONT_DISPLAY from src/styles/fonts.js instead of hardcoding family names (hardcoded names don't match the next/font self-hosted fonts).",
},
],
},
},
];
3 changes: 3 additions & 0 deletions next-sitemap.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ module.exports = {
exclude: [
"/admin",
"/profile",
"/profile/[userid]",
"/u/[slug]",
"/cert/[cert_id]",
"/nonprofit/[nonprofit_id]",
"/hackathon/[hackathon_id]",
"/project/[project_id]",
Expand Down
Loading