Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 1 addition & 1 deletion .claude/rules/features/homepage-sections.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,4 @@ paths:
- Event page layouts (Marquee, Flyer, Story, Invite) are rows of traits in `constants/eventLayouts.ts`; CSS keys off the traits (`data-rail`, `data-poster`, `data-width`, `data-centered`), never layout names. A new layout is a new row, a designer sketch in `LayoutPicker/LayoutPreview.tsx`, and a backend `HomepageLayout` case. `DEFAULT_EVENT_LAYOUT` applies to every event without a saved layout.
- Sections render in columns from ~350px (phones, Flyer on tablet) to ~690px, so their responsive rules use container queries (`hp.narrow`, `hp.compact`) on the section, never viewport media queries. Dialogs portal to `main` and keep viewport rules.
- Status labels ("This event has ended", "Happening now") come from the server's `lifecycle_status`, never the client clock, so SSR and hydration agree. An ended event renders no Tickets block and no ticket rail; Marquee drops to the medium width.
- The intro shows venue name and city when the Location section is on (the section carries the full address and directions), and the full address with directions when it is off.
- The intro always offers Get directions. It shows venue name and city when the Location section is on (the section carries the full address), and the full address when it is off.
1 change: 1 addition & 0 deletions e2e/tests/events/event-page-navigation.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ const travelInfo = Array.from({ length: 18 }, (_, index) => `<p>Travel note ${in
const createEventWithSections = async (api: ApiClient, organizerId: number) => {
const event = await createLiveEventWithProduct(api, { organizerId, price: 15 });
await api.updateEventSettings(event.eventId, {
homepage_theme_settings: { accent: '#7c3aed', background: '#f5f3ff', mode: 'light', background_type: 'COLOR', layout: 'MARQUEE' },
homepage_sections: [
{ id: 'tickets', type: 'TICKETS', enabled: true },
{ id: 'travel', type: 'TEXT', enabled: true, heading: 'Getting there', body: travelInfo },
Expand Down
4 changes: 2 additions & 2 deletions e2e/tests/management/homepage-designer.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,8 @@ test.describe('homepage designer', () => {
const designer = new DesignerPage(authedPage);
await designer.gotoHomepageDesigner(event.eventId);

await expect(designer.layoutOption('marquee')).toHaveAttribute('aria-checked', 'true');
await expect(authedPage.getByText('Suits conferences and long lineups', { exact: false })).toBeVisible();
await expect(designer.layoutOption('story')).toHaveAttribute('aria-checked', 'true');
await expect(authedPage.getByText('A focused reading column.', { exact: false })).toBeVisible();

await designer.layoutOption('invite').click();
await expect(designer.layoutOption('invite')).toHaveAttribute('aria-checked', 'true');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ export const EventIntro = ({
detail={locationDetailsBelow
? (location.venueName ? location.city : null)
: (location.venueName ? location.full : null)}
extra={!locationDetailsBelow && location.mapsUrl && (
extra={location.mapsUrl && (
<a href={location.mapsUrl} target="_blank" rel="nofollow ugc noopener noreferrer" className={classes.factLink}>
{t`Get directions`}
<IconArrowUpRight size={14}/>
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/constants/eventLayouts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ export interface EventLayoutDefinition {
centeredIntro: boolean;
}

export const DEFAULT_EVENT_LAYOUT: EventLayout = 'MARQUEE';
export const DEFAULT_EVENT_LAYOUT: EventLayout = 'STORY';

export const EVENT_LAYOUTS: EventLayoutDefinition[] = [
{value: 'MARQUEE', width: 'wide', ticketRail: true, poster: false, sectionNav: true, centeredIntro: false},
Expand Down
Loading