Lightweight, dependency-free library for gender-specific terms in multiple languages
A minimalist library that provides a comprehensive way to handle gender representation in various languages. Zero dependencies, tree-shakeable, and type-safe.
npm install @matsukky/gender
# or
yarn add @matsukky/gender
# or
bun add @matsukky/gender
- 🪶 Lightweight
- 📦 Zero dependencies
- 🌍 Support for multiple languages
- 🎨 Color schemes for each gender
- 🔄 Custom properties support
- 🔠 Automatic capitalization
- 📝 Rich set of gender-specific terms
- 💪 Fully typed (TypeScript)
import gender from '@matsukky/gender';
const female = gender('F');
console.log(female.genderName); // "woman"
console.log(female.childTerm); // "girl"
console.log(female.emoji); // "🚺"
const male = gender('MALE'); // Alias support
console.log(male.genderName); // "man"
console.log(male.colors.primary); // "#1e90ff"
const neutral = gender('X');
console.log(neutral.genderName); // "person"
import gender, { locale } from '@matsukky/gender';
// Load French locale
await locale('fr');
const female = gender('F');
console.log(female.genderName); // "femme"
console.log(female.childTerm); // "fille"
import gender from '@matsukky/gender';
// Definition of context-specific terms
const result = gender('F', {
custom: {
occupation: {
F: "actress",
M: "actor",
X: "performer"
},
workplace: {
F: "actresses' room",
M: "actors' room",
X: "performers' room"
},
award: {
F: "best actress",
M: "best actor",
X: "best performance"
}
}
});
// Basic usage
console.log(result.occupation); // "actress"
console.log(result.workplace); // "actresses' room"
// Combination with standard properties
console.log(`${result.title} ${result.genderName}`); // "Mrs woman"
console.log(`${result.occupation} ${result.objectPronoun}`); // "actress her"
// Usage with capitalization
const capitalizedResult = gender('F', {
capitalize: true,
custom: {
occupation: {
F: "actress",
M: "actor",
X: "performer"
}
}
});
console.log(capitalizedResult.occupation); // "Actress"
The gender
function allows extending standard properties with custom terms while maintaining gender consistency. Each custom property must define a value for all three genders (F, M, X) to ensure inclusive usage.
import gender from '@matsukky/gender';
const result = gender('F', { capitalize: true });
console.log(result.genderName); // "Woman"
console.log(result.childTerm); // "Girl"
gender(type: AvalaibleGender, options?: {
capitalize?: boolean;
custom?: Record<string, Record<'F' | 'M' | 'X', string>>;
language?: AvalaibleLanguage;
}): GenderData
locale(language: AvalaibleLanguage, define?: boolean): Promise<GenderCollection>
Property | Description | Example (Female) |
---|---|---|
emoji | Gender emoji | 🚺 |
colors | Color palette object | { rose, petal, bloom, blush, berry } |
genderName | Gender name | "woman" |
childTerm | Term for child | "girl" |
adultTerm | Term for adult | "woman" |
combined | Mostly used in social media as pronouns | "she/her" |
subjectPronoun | Subject pronoun | "she" |
objectPronoun | Object pronoun | "her" |
indirectPronoun | Indirect pronoun | "her" |
possessiveAdjective | Possessive adjective | "her" |
reflexivePronoun | Reflexive pronoun | "herself" |
demonstrative | Demonstrative pronoun | "she" |
indeterminateArticle | Indeterminate article | "a" |
genderAdjective | Gender adjective | "female" |
pluralSubjectPronoun | Plural subject pronoun | "they" |
pluralPossessiveAdj | Plural possessive adjective | "their" |
title | Full honorific title | "Mrs." |
shortTitle | Short honorific title | "Ms." |
Role | Values |
---|---|
F | F, ♀, WOMAN, GIRL, FEMALE, SHE, HER |
M | M, H, ♂, MAN, MEN, BOY, MALE, HE, HIM |
X | X, N, ⚧, NEUTRAL, HUMAN, THEY, THEM |