Add light/dark mode support with CSS variables
This commit is contained in:
parent
970b185151
commit
fb02688166
25 changed files with 1293 additions and 1177 deletions
|
|
@ -25,6 +25,8 @@ export default defineEventHandler(async (event) => {
|
|||
const search = query.search || "";
|
||||
const circle = query.circle || "";
|
||||
const tags = query.tags ? query.tags.split(",") : [];
|
||||
const peerSupport = query.peerSupport || "";
|
||||
const topics = query.topics ? query.topics.split(",") : [];
|
||||
|
||||
// Build query
|
||||
const dbQuery = {
|
||||
|
|
@ -37,6 +39,11 @@ export default defineEventHandler(async (event) => {
|
|||
dbQuery.circle = circle;
|
||||
}
|
||||
|
||||
// Filter by peer support availability
|
||||
if (peerSupport === "true") {
|
||||
dbQuery["peerSupport.enabled"] = true;
|
||||
}
|
||||
|
||||
// Search by name or bio
|
||||
if (search) {
|
||||
dbQuery.$or = [
|
||||
|
|
@ -71,10 +78,15 @@ export default defineEventHandler(async (event) => {
|
|||
}
|
||||
}
|
||||
|
||||
// Filter by peer support topics
|
||||
if (topics.length > 0) {
|
||||
dbQuery["peerSupport.topics"] = { $in: topics };
|
||||
}
|
||||
|
||||
try {
|
||||
const members = await Member.find(dbQuery)
|
||||
.select(
|
||||
"name pronouns timeZone avatar studio bio location socialLinks offering lookingFor privacy circle createdAt",
|
||||
"name pronouns timeZone avatar studio bio location socialLinks offering lookingFor privacy circle peerSupport slackUserId createdAt",
|
||||
)
|
||||
.sort({ createdAt: -1 })
|
||||
.lean();
|
||||
|
|
@ -109,6 +121,12 @@ export default defineEventHandler(async (event) => {
|
|||
if (isVisible("offering")) filtered.offering = member.offering;
|
||||
if (isVisible("lookingFor")) filtered.lookingFor = member.lookingFor;
|
||||
|
||||
// Always show peer support if enabled (it's opt-in, so public by nature)
|
||||
if (member.peerSupport?.enabled) {
|
||||
filtered.peerSupport = member.peerSupport;
|
||||
filtered.slackUserId = member.slackUserId;
|
||||
}
|
||||
|
||||
return filtered;
|
||||
});
|
||||
|
||||
|
|
@ -121,11 +139,19 @@ export default defineEventHandler(async (event) => {
|
|||
.filter((tag, index, self) => self.indexOf(tag) === index)
|
||||
.sort();
|
||||
|
||||
// Get unique peer support topics
|
||||
const allTopics = members
|
||||
.filter((m) => m.peerSupport?.enabled)
|
||||
.flatMap((m) => m.peerSupport?.topics || [])
|
||||
.filter((topic, index, self) => self.indexOf(topic) === index)
|
||||
.sort();
|
||||
|
||||
return {
|
||||
members: filteredMembers,
|
||||
totalCount: filteredMembers.length,
|
||||
filters: {
|
||||
availableTags: allTags,
|
||||
availableSkills: allTags,
|
||||
availableTopics: allTopics,
|
||||
},
|
||||
};
|
||||
} catch (error) {
|
||||
|
|
|
|||
|
|
@ -64,12 +64,16 @@ export default defineEventHandler(async (event) => {
|
|||
|
||||
// Handle offering and lookingFor separately (nested objects)
|
||||
if (body.offering !== undefined) {
|
||||
updateData["offering.text"] = body.offering.text || "";
|
||||
updateData["offering.tags"] = body.offering.tags || [];
|
||||
updateData.offering = {
|
||||
text: body.offering.text || "",
|
||||
tags: body.offering.tags || [],
|
||||
};
|
||||
}
|
||||
if (body.lookingFor !== undefined) {
|
||||
updateData["lookingFor.text"] = body.lookingFor.text || "";
|
||||
updateData["lookingFor.tags"] = body.lookingFor.tags || [];
|
||||
updateData.lookingFor = {
|
||||
text: body.lookingFor.text || "",
|
||||
tags: body.lookingFor.tags || [],
|
||||
};
|
||||
}
|
||||
|
||||
// Handle privacy settings
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue