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
4 changes: 4 additions & 0 deletions .changeset/happy-nights-talk.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
---

Add committee leadership management tools for Addie and display industry gatherings in the dashboard committees section.
14 changes: 14 additions & 0 deletions server/public/committees.html
Original file line number Diff line number Diff line change
Expand Up @@ -424,6 +424,7 @@ <h1 id="headerTitle">Committees</h1>
<a href="/committees?type=working_group" class="type-tab" id="tab-working_group">Working Groups</a>
<a href="/committees?type=council" class="type-tab" id="tab-council">Industry Councils</a>
<a href="/committees?type=chapter" class="type-tab" id="tab-chapter">Regional Chapters</a>
<a href="/committees?type=industry_gathering" class="type-tab" id="tab-industry_gathering">Industry Gatherings</a>
</div>

<!-- User's Groups (shown when logged in and member of groups) -->
Expand Down Expand Up @@ -541,6 +542,19 @@ <h2>Want to Get Involved?</h2>
joinCta: 'Become an AAO member to join regional chapters and connect with practitioners in your area.',
viewButton: 'View Chapter',
apiType: 'chapter'
},
industry_gathering: {
title: 'Industry Gatherings',
pageTitle: 'Industry Gatherings | AgenticAdvertising.org',
subtitle: 'Coordinate with AAO members at major industry events',
sectionTitle: 'All Industry Gatherings',
sectionDesc: 'Industry gatherings help members connect at conferences and trade shows like CES, Cannes Lions, and more.',
emptyTitle: 'No Upcoming Gatherings',
emptyMessage: 'No industry gatherings are scheduled. Check back soon!',
myGroupsTitle: 'Your Gatherings',
joinCta: 'Become an AAO member to coordinate meetups at industry events.',
viewButton: 'View Gathering',
apiType: 'industry_gathering'
}
};

Expand Down
2 changes: 1 addition & 1 deletion server/public/dashboard-nav.js
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@
items: [
{ href: isDashboardPage ? '#profile' : '/dashboard#profile', label: 'Member Profile', icon: '🏢', anchor: 'profile' },
{ href: isDashboardPage ? '#team' : '/dashboard#team', label: 'Team', icon: '👥', anchor: 'team' },
{ href: isDashboardPage ? '#working-groups' : '/dashboard#working-groups', label: 'Working Groups', icon: '🏛️', anchor: 'working-groups' },
{ href: isDashboardPage ? '#committees' : '/dashboard#committees', label: 'Committees', icon: '🏛️', anchor: 'committees' },
{ href: isDashboardPage ? '#leadership' : '/dashboard#leadership', label: 'Leadership', icon: '👔', anchor: 'leadership', hidden: true, id: 'leadershipNavItem' },
{ href: isDashboardPage ? '#membership' : '/dashboard#membership', label: 'Membership', icon: '⭐', anchor: 'membership' },
]
Expand Down
16 changes: 15 additions & 1 deletion server/public/dashboard.html
Original file line number Diff line number Diff line change
Expand Up @@ -1856,7 +1856,8 @@ <h3 style="margin: 0 0 8px 0; font-size: 18px; color: var(--color-text-heading);
const byType = {
working_group: allCommittees.filter(c => c.committee_type === 'working_group'),
council: allCommittees.filter(c => c.committee_type === 'council'),
chapter: allCommittees.filter(c => c.committee_type === 'chapter')
chapter: allCommittees.filter(c => c.committee_type === 'chapter'),
industry_gathering: allCommittees.filter(c => c.committee_type === 'industry_gathering')
};

// Helper to get icon and colors
Expand All @@ -1876,6 +1877,9 @@ <h3 style="margin: 0 0 8px 0; font-size: 18px; color: var(--color-text-heading);
} else if (committee.committee_type === 'chapter') {
icon = '📍';
bgColor = 'var(--color-info-100)';
} else if (committee.committee_type === 'industry_gathering') {
icon = '✈️';
bgColor = 'var(--color-primary-50)';
}

return { icon, bgColor, isJoined, isLaunching };
Expand Down Expand Up @@ -1951,6 +1955,16 @@ <h3 style="margin: 0 0 8px 0; font-size: 18px; color: var(--color-text-heading);
`;
}

// Industry Gatherings
if (byType.industry_gathering.length > 0) {
html += `
<div style="margin-bottom: 16px;">
<div style="font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; color: var(--color-text-muted); margin-bottom: 8px; padding-bottom: 4px; border-bottom: 1px solid var(--color-border);">Industry Gatherings</div>
${byType.industry_gathering.map(renderCommitteeItem).join('')}
</div>
`;
}

// Browse all link
html += `<a href="/committees" class="btn btn-ghost btn-sm" style="width: 100%;">Browse All Committees</a>`;

Expand Down
15 changes: 15 additions & 0 deletions server/public/dev-login.html
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,21 @@ <h2 class="dev-login__section-title">Available Users</h2>
<div class="user-card__description">Regular member with organization access, no admin privileges</div>
</button>

<button class="user-card" onclick="loginAs('leader')">
<div class="user-card__header">
<div class="user-card__avatar user-card__avatar--member">🎯</div>
<div class="user-card__info">
<div class="user-card__name">Committee Leader</div>
<div class="user-card__email">leader@test.local</div>
</div>
</div>
<div class="user-card__badges">
<span class="user-card__badge user-card__badge--member">Member</span>
<span class="user-card__badge" style="background: var(--color-primary-100); color: var(--color-primary-700);">Leader</span>
</div>
<div class="user-card__description">Committee leader who manages working groups (not a site admin)</div>
</button>

<button class="user-card" onclick="loginAs('nonmember')">
<div class="user-card__header">
<div class="user-card__avatar user-card__avatar--nonmember">👻</div>
Expand Down
31 changes: 10 additions & 21 deletions server/public/nav.js
Original file line number Diff line number Diff line change
Expand Up @@ -185,23 +185,11 @@
</div>
</div>`;

// Build Events dropdown
// Events link (no dropdown - just links to events calendar)
const eventsUrl = isLocal ? '/events' : `${aaoBaseUrl}/events`;
const industryGatheringsUrl = isLocal ? '/industry-gatherings' : `${aaoBaseUrl}/industry-gatherings`;
const isEventsActive = currentPath.startsWith('/events') || currentPath === '/industry-gatherings';
const eventsDropdown = membershipEnabled
? `<div class="navbar__dropdown-wrapper">
<button class="navbar__link navbar__dropdown-trigger ${isEventsActive ? 'active' : ''}">
Events
<svg width="10" height="10" viewBox="0 0 10 10" fill="currentColor" style="margin-left: 4px;">
<path d="M2 3.5L5 6.5L8 3.5" stroke="currentColor" stroke-width="1.5" fill="none"/>
</svg>
</button>
<div class="navbar__dropdown navbar__dropdown--nav">
<a href="${eventsUrl}" class="navbar__dropdown-item ${currentPath === '/events' ? 'active' : ''}">All Events</a>
<a href="${industryGatheringsUrl}" class="navbar__dropdown-item ${currentPath === '/industry-gatherings' ? 'active' : ''}">Industry Gatherings</a>
</div>
</div>`
const isEventsActive = currentPath.startsWith('/events');
const eventsLink = membershipEnabled
? `<a href="${eventsUrl}" class="navbar__link ${isEventsActive ? 'active' : ''}">Events</a>`
: '';

// Build "The Latest" dropdown
Expand Down Expand Up @@ -229,7 +217,8 @@
const workingGroupsUrl = `${committeesBaseUrl}?type=working_group`;
const councilsUrl = `${committeesBaseUrl}?type=council`;
const chaptersUrl = `${committeesBaseUrl}?type=chapter`;
const isCommitteesActive = currentPath.startsWith('/committees') || currentPath.startsWith('/working-groups');
const gatheringsUrl = `${committeesBaseUrl}?type=industry_gathering`;
const isCommitteesActive = currentPath.startsWith('/committees') || currentPath.startsWith('/working-groups') || currentPath.startsWith('/industry-gatherings');
const committeesDropdown = membershipEnabled
? `<div class="navbar__dropdown-wrapper">
<button class="navbar__link navbar__dropdown-trigger ${isCommitteesActive ? 'active' : ''}">
Expand All @@ -243,6 +232,7 @@
<a href="${workingGroupsUrl}" class="navbar__dropdown-item">Working Groups</a>
<a href="${councilsUrl}" class="navbar__dropdown-item">Industry Councils</a>
<a href="${chaptersUrl}" class="navbar__dropdown-item">Regional Chapters</a>
<a href="${gatheringsUrl}" class="navbar__dropdown-item ${currentPath === '/industry-gatherings' ? 'active' : ''}">Industry Gatherings</a>
</div>
</div>`
: '';
Expand All @@ -264,7 +254,7 @@
</a>
<div class="navbar__links-desktop">
${projectsDropdown}
${eventsDropdown}
${eventsLink}
${latestDropdown}
${committeesDropdown}
${aboutDropdown}
Expand Down Expand Up @@ -295,9 +285,7 @@
<a href="${agentsUrl}" class="navbar__link navbar__link--indent ${currentPath === '/registry' ? 'active' : ''}">Agents</a>
<a href="${publishersUrl}" class="navbar__link navbar__link--indent ${currentPath === '/publishers' ? 'active' : ''}">Publishers</a>
<a href="${propertiesUrl}" class="navbar__link navbar__link--indent ${currentPath === '/properties' ? 'active' : ''}">Properties</a>
${membershipEnabled ? `<span class="navbar__link navbar__link--header">Events</span>` : ''}
${membershipEnabled ? `<a href="${eventsUrl}" class="navbar__link navbar__link--indent ${currentPath === '/events' ? 'active' : ''}">All Events</a>` : ''}
${membershipEnabled ? `<a href="${industryGatheringsUrl}" class="navbar__link navbar__link--indent ${currentPath === '/industry-gatherings' ? 'active' : ''}">Industry Gatherings</a>` : ''}
${membershipEnabled ? `<a href="${eventsUrl}" class="navbar__link ${currentPath === '/events' ? 'active' : ''}">Events</a>` : ''}
${membershipEnabled ? `<span class="navbar__link navbar__link--header">The Latest</span>` : ''}
${membershipEnabled ? `<a href="${latestBaseUrl}/research" class="navbar__link navbar__link--indent ${currentPath === '/latest/research' ? 'active' : ''}">Research & Ideas</a>` : ''}
${membershipEnabled ? `<a href="${latestBaseUrl}/industry-news" class="navbar__link navbar__link--indent ${currentPath === '/latest/industry-news' ? 'active' : ''}">Industry News</a>` : ''}
Expand All @@ -308,6 +296,7 @@
${membershipEnabled ? `<a href="${workingGroupsUrl}" class="navbar__link navbar__link--indent">Working Groups</a>` : ''}
${membershipEnabled ? `<a href="${councilsUrl}" class="navbar__link navbar__link--indent">Industry Councils</a>` : ''}
${membershipEnabled ? `<a href="${chaptersUrl}" class="navbar__link navbar__link--indent">Regional Chapters</a>` : ''}
${membershipEnabled ? `<a href="${gatheringsUrl}" class="navbar__link navbar__link--indent ${currentPath === '/industry-gatherings' ? 'active' : ''}">Industry Gatherings</a>` : ''}
<a href="${aboutUrl}" class="navbar__link ${currentPath === '/about' ? 'active' : ''}">About</a>
<a href="${membershipUrl}" class="navbar__link navbar__link--indent ${currentPath === '/membership' ? 'active' : ''}">Membership</a>
<a href="${governanceUrl}" class="navbar__link navbar__link--indent ${currentPath === '/governance' ? 'active' : ''}">Governance</a>
Expand Down
Loading