Files
org_web/assets/scripts/avatar-registry.js
Zaine 5df4871ecc
All checks were successful
Build Org Website / build (push) Successful in 51s
avatars plus other changes
2026-05-11 15:44:30 +01:00

151 lines
4.2 KiB
JavaScript

(function () {
"use strict";
const fallback = "z";
const sharedSizes = {
marker: 18,
tiny: 22,
small: 32,
medium: 44,
large: 64,
focus: 88
};
const characters = {
"young z": {
id: "young z",
displayLabel: "young z",
avatar: "/assets/avatars/young-z.jpeg",
glow: "#d8a95a",
accent: "#f4bf5f",
fallback,
expressions: {
calm: "/assets/avatars/young-z.jpeg",
happy: "/assets/avatars/young-z.jpeg",
surprised: "/assets/avatars/young-z.jpeg"
},
sizes: sharedSizes,
observatory: {
territory: "nostalgic-playful",
presenceKeywords: ["childhood", "play", "crayon", "sun", "blanket", "game", "desk", "drawing", "nostalgia"],
atmosphere: "warm childhood light",
focusScale: 1.08
}
},
z: {
id: "z",
displayLabel: "z",
avatar: "/assets/avatars/z.jpeg",
glow: "#d6c38a",
accent: "#d8c891",
fallback,
expressions: {
calm: "/assets/avatars/z.jpeg",
receptive: "/assets/avatars/z.jpeg"
},
sizes: sharedSizes,
observatory: {
territory: "archive-return",
presenceKeywords: ["website", "archive", "observer", "traveler", "making", "return", "home"],
atmosphere: "steady archive lantern",
focusScale: 1
}
},
aphy: {
id: "aphy",
displayLabel: "aphy",
avatar: "/assets/avatars/aphy.jpeg",
glow: "#7fb089",
accent: "#83d4df",
fallback,
expressions: {
calm: "/assets/avatars/aphy.jpeg",
curious: "/assets/avatars/aphy.jpeg",
thinking: "/assets/avatars/aphy.jpeg"
},
sizes: sharedSizes,
observatory: {
territory: "system-symbolic",
presenceKeywords: ["system", "terminal", "logic", "error", "debug", "console", "css", "search", "backup", "symbol"],
atmosphere: "soft diagnostic glow",
focusScale: 1.04
}
},
lima: {
id: "lima",
displayLabel: "lima",
avatar: "/assets/avatars/lima.jpg",
glow: "#d06b78",
accent: "#e7a176",
fallback,
expressions: {
calm: "/assets/avatars/lima.jpg",
happy: "/assets/avatars/lima.jpg",
protective: "/assets/avatars/lima.jpg"
},
sizes: sharedSizes,
observatory: {
territory: "warm-protective",
presenceKeywords: ["warm", "home", "safe", "protect", "kitchen", "ring", "love", "rest", "care", "light"],
atmosphere: "protective kitchen warmth",
focusScale: 1.12
}
},
"sensei chi": {
id: "sensei chi",
displayLabel: "sensei chi",
avatar: "/assets/avatars/sensei-chi.jpeg",
glow: "#75a9bd",
accent: "#9ec4be",
fallback,
expressions: {
calm: "/assets/avatars/sensei-chi.jpeg",
reflective: "/assets/avatars/sensei-chi.jpeg"
},
sizes: sharedSizes,
observatory: {
territory: "reflective-patient",
presenceKeywords: ["quiet", "reflect", "patience", "tea", "garden", "lesson", "wisdom", "still"],
atmosphere: "slow reflective tea light",
focusScale: 1.06
}
},
"future z": {
id: "future z",
displayLabel: "future z",
avatar: "/assets/avatars/future-z.jpeg",
glow: "#a58ac9",
accent: "#b7a6cf",
fallback,
expressions: {
calm: "/assets/avatars/future-z.jpeg",
nostalgic: "/assets/avatars/future-z.jpeg",
warning: "/assets/avatars/future-z.jpeg"
},
sizes: sharedSizes,
observatory: {
territory: "temporal",
presenceKeywords: ["future", "time", "age 40", "later", "return", "warning", "ordinary", "clock"],
atmosphere: "distant temporal shimmer",
focusScale: 1.1
}
}
};
function get(character) {
return characters[character] || characters[fallback];
}
function source(character, expression) {
const config = get(character);
return (config.expressions && expression && config.expressions[expression]) || config.avatar || characters[fallback].avatar;
}
window.MemoryAvatarRegistry = {
fallback,
characters,
get,
source
};
}());