/** * Natal chart placement data. * @file * @copyright Naomi Carrigan * @license Naomi's Public License * @author Naomi Carrigan */ /* eslint-disable stylistic/max-len -- Meaning strings are intentionally long */ type PlacementGroup = "personal" | "social" | "generational" | "points"; interface Placement { description: string; group: PlacementGroup; house: number | null; meaning: string | null; name: string; sign: string | null; } const groupLabels: Record = { generational: "Generational Planets", personal: "Personal Planets", points: "Points & Angles", social: "Social Planets", }; const placements: Array = [ { description: "Core identity, ego, and life force.", group: "personal", house: 12, meaning: "My emotional depth and nurturing nature run deeper than most people see - the 12th house keeps my core self private and inward. I feel most like myself in solitude or intimate settings, and my Cancer warmth tends to emerge quietly rather than being put on display.", name: "Sun", sign: "Cancer", }, { description: "Emotions, instincts, and subconscious.", group: "personal", house: 3, meaning: "I process emotions through communication - talking, writing, and connecting with others helps me find my emotional footing. I crave fairness and balance in my relationships and find peace through honest conversation. Words are how I feel safe.", name: "Moon", sign: "Libra", }, { description: "Communication, thinking, and learning style.", group: "personal", house: 1, meaning: "My communication style is bold, expressive, and unmistakably me - it's front and centre in how I present myself to the world. I speak with confidence and passion, and storytelling comes naturally. My voice is one of the first things people notice about me.", name: "Mercury", sign: "Leo", }, { description: "Love, beauty, values, and attraction.", group: "personal", house: 1, meaning: "I show love through care, attention to detail, and acts of service - and I need to feel genuinely useful to feel loved in return. I'm discerning about who I open up to, but when I do, I give everything. Being told I'm doing well matters more to me than grand gestures.", name: "Venus", sign: "Virgo", }, { description: "Drive, ambition, and how you take action.", group: "personal", house: 1, meaning: "I pursue goals with precision and methodical energy - I don't just charge ahead, I plan and refine. My drive is a core part of how I show up in the world, and I hold myself to exacting standards. I take action when I believe it's right, not just when it's easy.", name: "Mars", sign: "Virgo", }, { description: "Growth, expansion, luck, and philosophy.", group: "social", house: 1, meaning: "My growth and good fortune come through authentic self-expression and generous leadership. I expand by being unapologetically myself and bringing others along with me. My warmth and presence create opportunities - people are naturally drawn into my orbit.", name: "Jupiter", sign: "Leo", }, { description: "Discipline, responsibility, and long-term lessons.", group: "social", house: 6, meaning: "My life lessons are woven through my work and health - Saturn here asks me to build discipline and new structures around both. I'm learning to balance innovation with sustainability, and to take my health as seriously as I take my responsibilities to others.", name: "Saturn", sign: "Aquarius", }, { description: "Rebellion, innovation, and sudden change.", group: "generational", house: 5, meaning: "My generation is rewriting what achievement and success look like - and in my 5th house, that energy shows up in how I create and express myself. My approach to play, creativity, and romance tends to break from convention in ways that feel natural to me even when they surprise others.", name: "Uranus", sign: "Capricorn", }, { description: "Dreams, intuition, and spiritual connection.", group: "generational", house: 5, meaning: "I bring a spiritual and idealistic lens to my creative work and self-expression - there's meaning woven into the things I build and the communities I tend. Neptune here blends my Wiccan spirituality with my creativity, giving my work an almost devotional quality.", name: "Neptune", sign: "Capricorn", }, { description: "Transformation, power, and deep change.", group: "generational", house: 4, meaning: "My foundations have been deeply transformed - this placement often marks a painful reshaping of family and home. I've had to rebuild my sense of belonging on my own terms, and through that process I've developed a bedrock strength that very few people truly understand.", name: "Pluto", sign: "Scorpio", }, { description: "Outward personality and first impressions.", group: "points", house: null, meaning: "My first impression is warm, magnetic, and quietly commanding - people notice me. Leo Rising means I project confidence and generosity even when I don't feel it, which creates an interesting tension with my more private Cancer Sun. I appear bold to the world whilst holding my deepest self close.", name: "Rising (Ascendant)", sign: "Leo", }, { description: "Karmic direction and soul's purpose.", group: "points", house: 6, meaning: "My soul's growth path this lifetime runs through disciplined, meaningful work and taking responsibility for my own wellbeing. I'm growing toward building something lasting - structures, communities, systems that endure. My health and daily routines are part of that journey too.", name: "North Node", sign: "Capricorn", }, { description: "Public image and career path.", group: "points", house: null, meaning: "My professional legacy is built on permanence, quality, and lasting value - I'm here to create things that endure. Taurus MC brings a reputation for reliability and for work that genuinely matters to people's lives. 'Permanence in a Transient World' isn't just a tagline; it's written in my chart.", name: "Midheaven (MC)", sign: "Taurus", }, ]; const groups: Array = [ "personal", "social", "generational", "points", ]; /** * Filters placements by group. * @param group - The group to filter by. * @returns The placements in the given group. */ const placementsByGroup = (group: PlacementGroup): Array => { return placements.filter((placement) => { return placement.group === group; }); }; export type { PlacementGroup, Placement }; export { groupLabels, groups, placements, placementsByGroup };