diff --git a/app/pages/about.vue b/app/pages/about.vue index a9222b2..fa48bf9 100644 --- a/app/pages/about.vue +++ b/app/pages/about.vue @@ -1,148 +1,219 @@ + + diff --git a/app/pages/about/circles.vue b/app/pages/about/circles.vue index 710fec1..c597e5c 100644 --- a/app/pages/about/circles.vue +++ b/app/pages/about/circles.vue @@ -1,212 +1,4 @@ - - diff --git a/app/pages/events/[id].vue b/app/pages/events/[id].vue index b298c5a..b490639 100644 --- a/app/pages/events/[id].vue +++ b/app/pages/events/[id].vue @@ -1,931 +1,511 @@ + + diff --git a/app/pages/events/index.vue b/app/pages/events/index.vue index e0962d4..5bbf9de 100644 --- a/app/pages/events/index.vue +++ b/app/pages/events/index.vue @@ -1,974 +1,259 @@ diff --git a/app/pages/index.vue b/app/pages/index.vue index 125a162..0899f1b 100644 --- a/app/pages/index.vue +++ b/app/pages/index.vue @@ -1,186 +1,270 @@ + + diff --git a/app/pages/join.vue b/app/pages/join.vue index 447d339..e90c1ae 100644 --- a/app/pages/join.vue +++ b/app/pages/join.vue @@ -1,404 +1,305 @@ @@ -651,3 +552,478 @@ onUnmounted(() => { cleanupHelcimPay(); }); + + diff --git a/app/pages/members.vue b/app/pages/members.vue index 5c23fff..9c7e30f 100644 --- a/app/pages/members.vue +++ b/app/pages/members.vue @@ -1,426 +1,242 @@ @@ -434,7 +250,7 @@ const members = ref([]); const totalCount = ref(0); const availableSkills = ref([]); const availableTopics = ref([]); -const loading = ref(true); // Start with loading true +const loading = ref(true); const searchQuery = ref(""); const selectedCircle = ref("all"); const peerSupportFilter = ref("all"); @@ -457,26 +273,31 @@ const circleLabels = { practitioner: "Practitioner", }; -// Map circle names to badge classes -const circleBadgeClass = (circle) => { - const classes = { - community: 'circle-badge-community', - founder: 'circle-badge-founder', - practitioner: 'circle-badge-practitioner', - }; - return classes[circle] || 'circle-badge-community'; -}; - // Peer support filter options const peerSupportOptions = [ { label: "All Members", value: "all" }, { label: "Offering Peer Support", value: "true" }, ]; -// Helper to check if member has social links -const hasSocialLinks = (links) => { - if (!links) return false; - return !!(links.mastodon || links.linkedin || links.website || links.other); +// Computed: has active filters +const hasActiveFilters = computed(() => { + return ( + (selectedCircle.value && selectedCircle.value !== 'all') || + (peerSupportFilter.value && peerSupportFilter.value !== 'all') || + selectedSkills.value.length > 0 || + selectedTopics.value.length > 0 + ); +}); + +// Get initials from name +const getInitials = (name) => { + if (!name) return '?'; + return name + .split(' ') + .map((w) => w[0]) + .join('') + .toUpperCase() + .slice(0, 2); }; // Load members @@ -512,6 +333,12 @@ const loadMembers = async () => { } }; +// Toggle peer support checkbox +const togglePeerSupport = (e) => { + peerSupportFilter.value = e.target.checked ? 'true' : 'all'; + loadMembers(); +}; + // Debounced search let searchTimeout; const debouncedSearch = () => { @@ -567,14 +394,12 @@ const clearAllFilters = () => { const openSlackDM = async (member) => { const username = member.peerSupport?.slackUsername || member.name; - // Copy username to clipboard try { await navigator.clipboard.writeText(username); } catch (err) { console.log("Could not copy to clipboard:", err); } - // Show alert and open Slack alert( `Opening Slack...\n\nSearch for: ${username}\n\n(Username copied to clipboard)`, ); @@ -583,7 +408,6 @@ const openSlackDM = async (member) => { // Load on mount and handle query params onMounted(() => { - // Check for peerSupport query parameter const route = useRoute(); if (route.query.peerSupport === "true") { peerSupportFilter.value = "true"; @@ -603,3 +427,416 @@ useHead({ ], }); + + diff --git a/app/pages/series/[id].vue b/app/pages/series/[id].vue index 4a5d8ca..5f12af8 100644 --- a/app/pages/series/[id].vue +++ b/app/pages/series/[id].vue @@ -1,503 +1,164 @@