-
Notifications
You must be signed in to change notification settings - Fork 2
Fix/replace list #101
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Fix/replace list #101
Changes from 91 commits
Commits
Show all changes
92 commits
Select commit
Hold shift + click to select a range
a5bbb80
add new design guidance
meganrm 18958b9
update styles
meganrm 1aafdc4
update theme
meganrm 239193d
apply new styles
meganrm ac52005
update file
meganrm 1e88986
simplifying css
meganrm 832b524
add images from theme
meganrm 307c489
feat: add new Allen Institute logo asset
meganrm ebb6c97
feat: add logo and sub-label styles to header
meganrm fc2e5e3
feat: replace text logotype with new Allen Institute SVG logo
meganrm 9f05cbc
refactor: remove unused title prop from AppHeader
meganrm 57fb75d
feat: add hero section styles to index page
meganrm 44e458e
feat: add Allen Blue hero section to homepage
meganrm 98c16f6
fix: use section element for hero, improve breadcrumb contrast
meganrm e9a45bb
ignore new plugin
meganrm 675fa98
apply new style
meganrm 2cf9bc7
docs: add IdeaRoll ListItem redesign spec
meganrm 38db19c
docs: add IdeaRoll ListItem redesign implementation plan
meganrm 1a4cde0
feat: add accent color CSS rules to idea-roll list item
meganrm 37e69d9
feat: add deterministic accent colors to IdeaRoll list items
meganrm 27c72eb
fix: use item.id as React key on List.Item
meganrm a24e836
fix: match avatar color to item accent color
meganrm 7105050
fix: use uniform Allen Violet for card borders, titles, and avatars
meganrm c2ac107
feat: add full brand palette and semantic aliases to theme.ts
meganrm 4c3981e
fix: replace yarn with npm run in lefthook hooks
meganrm 6d5dade
refactor: replace direct color refs with semantic tokens in all CSS f…
meganrm 824c528
remove specs
meganrm 4e0ed53
ignore docs
meganrm f3a951a
revert changes to lefthook
meganrm 7572bf7
Merge branch 'main' into feature/update-brand
meganrm 49e7825
use height
meganrm 395be1c
styles not needed
meganrm 4a21547
remove unused class
meganrm 9981c72
feat: add type field to IdeaPost schema
meganrm 786910b
feat: add program and type fields to idea post query
meganrm 31bf05d
refactor: add optional className prop to TagPopover
meganrm 0de9585
refactor: change ResourceItem root element to li for dot-bullet lists
meganrm 759507b
chore: remove ResourceItem test (testing-library not yet installed)
meganrm 83bb1e0
style: replace idea-post CSS with new Allen 2025 brand design
meganrm bb13c63
feat: restructure idea post header — blue block, metadata strip, tag row
meganrm 6eaac80
refactor: update MaterialsAndMethods to use ul/li and new CSS class n…
meganrm 70666c5
style: cap content wrapper at 1200px max-width
meganrm a432ecd
style: remove orphaned 1800px media query from contentWrapperFullWidth
meganrm 76f1713
style: restyle page-nav sider to page background with border
meganrm e3db4a1
style: add framing borders to content column on wide viewports
meganrm 6442a6d
use semantic names
meganrm f6a0143
adjust styles
meganrm 023b7b7
adjust setting
meganrm 56ef57a
update claude md
meganrm 831fea2
add index page redesign spec
meganrm 11b6dcd
use semantic color names in index page redesign spec
meganrm 171944b
feat: add --content-padding-x layout tokens to colors.css
meganrm 5c84627
feat: make index page full-width and wrap hero text in constrained in…
meganrm 76882aa
feat: rewrite index-page styles for full-bleed hero and token-based p…
meganrm 482ec66
feat: replace antd List with native editorial ul/li in IdeaRoll
meganrm 247185e
fix: remove gap:0 no-op, explicit count check, delete dead IconText c…
meganrm 42eed6d
fix: use --color-primary token and document antd Tag override in eyeb…
meganrm 07f5556
small style tweaks
meganrm 126007d
rename colors
meganrm 6146ef5
use max width vars
meganrm ce8f09a
uncomment out the breakpoints
meganrm 75d758e
Merge branch 'feature/update-brand' of https://github.com/AllenCell/i…
meganrm 2dd1e51
update color names
meganrm 373d200
use border color
meganrm c4fbfa9
clean up styles
meganrm 353cb9c
Merge branch 'main' of https://github.com/AllenCell/idea-board into f…
meganrm b26e274
pull in changes from upstream
meganrm b66a99d
use new color name
meganrm 0259de3
use variable
meganrm 04f627c
update comment
meganrm dc4bab1
dont make a link if it's missing
meganrm 2dac9b7
add index page redesign spec
meganrm c842408
use semantic color names in index page redesign spec
meganrm 0189832
feat: add --content-padding-x layout tokens to colors.css
meganrm 79e72a6
feat: make index page full-width and wrap hero text in constrained in…
meganrm e55d053
feat: rewrite index-page styles for full-bleed hero and token-based p…
meganrm e81af9c
feat: replace antd List with native editorial ul/li in IdeaRoll
meganrm bdd7880
fix: remove gap:0 no-op, explicit count check, delete dead IconText c…
meganrm c3a0c49
fix: use --color-primary token and document antd Tag override in eyeb…
meganrm 48536b6
small style tweaks
meganrm 108bc1e
use new color name
meganrm ef24dfa
Merge branch 'fix/replace-list' of https://github.com/AllenCell/idea-…
meganrm b9d0aaf
fix color
meganrm 6ed5da0
Merge branch 'main' of https://github.com/AllenCell/idea-board into f…
meganrm abbeb2b
fix merge mistake
meganrm 1c4f231
Potential fix for pull request finding
meganrm 440da44
Potential fix for pull request finding
meganrm 926bf05
Potential fix for pull request finding
meganrm 0702f23
Potential fix for pull request finding
meganrm 3098ca8
Potential fix for pull request finding
meganrm d39754c
format
meganrm eac49b7
changes based on comments
meganrm File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,116 @@ | ||
| # Index Page Redesign | ||
|
|
||
| **Date:** 2026-05-20 | ||
| **Status:** Approved | ||
|
|
||
| ## Goals | ||
|
|
||
| 1. Make the index page hero background truly full-viewport-width. | ||
| 2. Align hero text and list content to the same horizontal position. | ||
| 3. Match the list content max-width to idea-post pages (1200px via `contentWrapper`). | ||
| 4. Replace the deprecated `antd/List` component with native HTML. | ||
| 5. Redesign list items in an editorial style — bold typographic, no avatars, no placeholder counts. | ||
| 6. Introduce a shared CSS token so hero text and list content are guaranteed to stay aligned. | ||
|
|
||
| ## Layout Structure | ||
|
|
||
| The index page will set `fullWidthPage: true` via `useSetLayoutConfig()`. This removes the `max-width: 1200px` cap and side borders from `contentWrapper`, allowing the hero background to bleed edge-to-edge. | ||
|
|
||
| Within the now-unconstrained page, both the hero text and the IdeaRoll use the same inner wrapper: | ||
|
|
||
| ``` | ||
| max-width: 1200px | ||
| margin: 0 auto | ||
| padding: 32px var(--content-padding-x) | ||
| ``` | ||
|
|
||
| This guarantees horizontal alignment regardless of viewport width. | ||
|
|
||
| ### Shared token | ||
|
|
||
| Add to `src/style/colors.css`: | ||
|
|
||
| ```css | ||
| /* Layout */ | ||
| --content-padding-x: 48px; | ||
| --content-padding-x-sm: 24px; | ||
| ``` | ||
|
|
||
| Used in `index-page.module.css` for both `.heroInner` and `.listWrapper`. `--content-padding-x-sm` replaces `--content-padding-x` at `@media (max-width: 768px)`. | ||
|
|
||
| ### Hero restructure | ||
|
|
||
| The `<section className={hero}>` gets a full-width background only. Text moves into a new `<div className={heroInner}>` that provides the constrained, centered inner wrapper. | ||
|
|
||
| Before: | ||
| ``` | ||
| <section className={hero}> ← background + max-width + padding | ||
| <p>breadcrumb</p> | ||
| <h1>Idea Board</h1> | ||
| <p>subtitle</p> | ||
| </section> | ||
| ``` | ||
|
|
||
| After: | ||
| ``` | ||
| <section className={hero}> ← background only, full-width | ||
| <div className={heroInner}> ← max-width: 1200px, centered, padded | ||
| <p>breadcrumb</p> | ||
| <h1>Idea Board</h1> | ||
| <p>subtitle</p> | ||
| </div> | ||
| </section> | ||
| ``` | ||
|
|
||
| ## IdeaRoll: Editorial Item Design | ||
|
|
||
| Replace `antd/List` + `List.Item` + `List.Item.Meta` with a native `<ul>/<li>`. | ||
|
|
||
| Each item contains three rows: | ||
|
|
||
| 1. **Tag eyebrow** — `TagPopover` components inline, restyled as small-caps blue text. Dot separators (`·`) rendered in JSX between tags (never interactive). | ||
| 2. **Title** — `<a href={slug}>`, large bold dark text, no underline by default. | ||
| 3. **Byline** — `by [Author · Author] — [Dataset name]` (or `— No public dataset`). Small muted text. | ||
|
|
||
| Items separated by a bottom border. No avatars. No star/message counts (removed entirely). | ||
|
|
||
| ### Tag rendering pattern | ||
|
|
||
| ```tsx | ||
| {item.tags.map((tag, i) => ( | ||
| <React.Fragment key={tag}> | ||
| {i > 0 && <span className={tagSeparator}> · </span>} | ||
| <TagPopover tag={tag} currentSlug={item.slug} className={eyebrowTag} /> | ||
| </React.Fragment> | ||
| ))} | ||
| ``` | ||
|
|
||
| `TagPopover` receives an `eyebrowTag` className that overrides antd `Tag` default styles. The separator `·` is a plain `<span>` between tags. | ||
|
|
||
| ### Typography spec | ||
|
|
||
| | Element | Size | Weight | Color | Other | | ||
| |-------------|-------|--------|-------------------------------|-------------------------------------| | ||
| | Tag eyebrow | 10px | 700 | `var(--primary-color)` | uppercase, `letter-spacing: 0.15em` | | ||
| | Separator · | 10px | 400 | `var(--border-color)` | `margin: 0 5px` | | ||
| | Title | 19px | 800 | `var(--text-primary-color)` | `letter-spacing: -0.02em`, `line-height: 1.25` | | ||
| | Byline | 11px | 400 | `var(--text-secondary-color)` | — | | ||
| | Item border | — | — | `var(--border-color)` | bottom only, `1px solid` | | ||
| | Item padding | — | — | — | `22px 0` top/bottom | | ||
|
|
||
| ## Files Changed | ||
|
|
||
| | File | Change | | ||
| |------|--------| | ||
| | `src/style/colors.css` | `--content-padding-x` and `--content-padding-x-sm` tokens already exist (no code changes required in this PR) | | ||
| | `src/templates/index-page.tsx` | Add `useSetLayoutConfig` + `fullWidthPage: true`; restructure hero with `heroInner` wrapper | | ||
| | `src/style/index-page.module.css` | Rewrite `.hero` (bg only), add `.heroInner` (constrained wrapper), update `.listWrapper` to use token | | ||
| | `src/components/IdeaRoll.tsx` | Replace `antd/List` with native `<ul>/<li>`; editorial item layout; remove `Avatar`, `StarOutlined`, `MessageOutlined` imports | | ||
| | `src/style/idea-roll.module.css` | Replace `.container` antd overrides with editorial styles; add `.listItem`, `.tagEyebrow`, `.eyebrowTag`, `.tagSeparator`, `.title`, `.byline` | | ||
|
|
||
| ## Out of Scope | ||
|
|
||
| - `TagPopover.tsx` — no changes to component logic or popover behavior | ||
| - `idea-post.tsx` / `idea-post.module.css` — untouched | ||
| - Adding new data fields (date, type, program) to the IdeaRoll query | ||
| - Any other pages | ||
This file was deleted.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,18 +1,66 @@ | ||
| .container { | ||
| margin: auto; | ||
| list-style: none; | ||
| padding: 0; | ||
| margin: 0; | ||
| background-color: var(--bg-base-color); | ||
| } | ||
|
|
||
| .listItem { | ||
| padding: 22px 0; | ||
| border-bottom: 1px solid var(--border-color); | ||
| } | ||
|
|
||
| :global(.ant-list-item) { | ||
| border-left: 3px solid var(--primary-color); | ||
| padding-left: 20px; | ||
| } | ||
| .listItem:last-child { | ||
| border-bottom: none; | ||
| } | ||
|
|
||
| :global(.ant-list-item-meta-title a) { | ||
| color: var(--primary-color) !important; | ||
| font-weight: 600; | ||
| } | ||
| .tagEyebrow { | ||
| display: flex; | ||
| align-items: center; | ||
| flex-wrap: wrap; | ||
| margin-bottom: 6px; | ||
| } | ||
|
|
||
| /* Overrides antd Tag's scoped styles, which win without !important */ | ||
| .eyebrowTag { | ||
| font-size: 10px !important; | ||
| font-weight: 700 !important; | ||
| letter-spacing: 0.15em !important; | ||
| text-transform: uppercase !important; | ||
| color: var(--primary-color) !important; | ||
| background: transparent !important; | ||
| border: none !important; | ||
| padding: 0 !important; | ||
| margin: 0 !important; | ||
| line-height: inherit !important; | ||
| cursor: pointer; | ||
| } | ||
|
|
||
| .tagSeparator { | ||
| font-size: 10px; | ||
| font-weight: 400; | ||
| color: var(--border-color); | ||
| margin: 0 5px; | ||
| user-select: none; | ||
| } | ||
|
|
||
| .title { | ||
| display: block; | ||
| font-size: 19px; | ||
| font-weight: 800; | ||
| color: var(--primary-color); | ||
| text-decoration: none; | ||
| letter-spacing: -0.02em; | ||
| line-height: 1.25; | ||
| margin-bottom: 6px; | ||
| } | ||
|
|
||
| .title:hover { | ||
| text-decoration: underline; | ||
| } | ||
|
|
||
| :global(.ant-list-item-meta-title a:hover) { | ||
| color: var(--primary-color); | ||
| } | ||
| .byline { | ||
| font-size: 11px; | ||
| font-weight: 400; | ||
| color: var(--text-secondary-color); | ||
| } |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
not a blocker, but looks like the title actually uses
color: var(--primary-color);. maybe update one or the other for consistency