From b861750d5e0a84568ffaa149ac50d59f07d05fc8 Mon Sep 17 00:00:00 2001 From: ReconVirus Date: Tue, 12 Sep 2023 00:36:27 -0700 Subject: [PATCH] package bump, --- Package.json | 9 +-- README.md | 2 +- package-lock.json | 153 ++---------------------------------- src/Main.tsx | 19 +++-- src/Settings.ts | 196 +++++++++++++++++++++++++++++++++++++--------- src/Style.scss | 55 ------------- 6 files changed, 180 insertions(+), 254 deletions(-) delete mode 100644 src/Style.scss diff --git a/Package.json b/Package.json index c92968e..7cd28d7 100644 --- a/Package.json +++ b/Package.json @@ -4,12 +4,12 @@ "description": "Visual flair that displays an icon or icon font next to a monster name based on its type.", "main": "main.js", "scripts": { - "dev": "node esbuild.config.mjs && sass --no-source-map src/Style.sass:dist/Style.css", - "build": "tsc -noEmit -skipLibCheck && node esbuild.config.mjs production && sass --no-source-map src/Style.scss:dist/Style.css" + "dev": "node esbuild.config.mjs", + "build": "tsc -noEmit -skipLibCheck && node esbuild.config.mjs production" }, - "keywords": [], + "keywords": ["Bestiary", "icons", "Monster"], "author": "", - "license": "MIT", + "license": "WTFPL", "devDependencies": { "@codemirror/language": "https://github.com/lishid/cm-language", "@types/node": "^16.11.6", @@ -21,7 +21,6 @@ "dotenv": "^16.3.1", "esbuild": "0.17.3", "obsidian": "latest", - "sass": "^1.66.1", "tslib": "2.4.0", "typescript": "latest" }, diff --git a/README.md b/README.md index 9464278..9a2def5 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ in your text, where Type is one of the supporting keys you want to display ## Roadmap -- [ ] Add Changelog +- [x] Add Changelog - [ ] Add more monster types - [ ] Finish settings - [ ] Make it more standardized with Dice Roller and Pf2-Actions diff --git a/package-lock.json b/package-lock.json index 88b5c14..1712f40 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,7 +23,6 @@ "dotenv": "^16.3.1", "esbuild": "0.17.3", "obsidian": "latest", - "sass": "^1.66.1", "tslib": "2.4.0", "typescript": "latest" } @@ -438,9 +437,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.0.tgz", - "integrity": "sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.1.tgz", + "integrity": "sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==", "dev": true, "peer": true, "engines": { @@ -894,19 +893,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -930,15 +916,6 @@ "dev": true, "peer": true }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -1001,45 +978,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -1543,20 +1481,6 @@ "dev": true, "peer": true }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", @@ -1659,12 +1583,6 @@ "node": ">= 4" } }, - "node_modules/immutable": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", - "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==", - "dev": true - }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -1710,18 +1628,6 @@ "dev": true, "peer": true }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -1935,19 +1841,10 @@ "dev": true, "peer": true }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/obsidian": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/obsidian/-/obsidian-1.4.4.tgz", - "integrity": "sha512-q2V5GNT/M40uYOENdVw5kovPSoaO6vppiiyBCkIqWgKp4oN654jA/GQ0OaNBA7p5NdfS245QCeRgCFQ42wOZiw==", + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/obsidian/-/obsidian-1.4.11.tgz", + "integrity": "sha512-BCVYTvaXxElJMl6MMbDdY/CGK+aq18SdtDY/7vH8v6BxCBQ6KF4kKxL0vG9UZ0o5qh139KpUoJHNm+6O5dllKA==", "dev": true, "dependencies": { "@types/codemirror": "5.60.8", @@ -2154,18 +2051,6 @@ "react": "*" } }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, "node_modules/regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", @@ -2237,23 +2122,6 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/sass": { - "version": "1.66.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.66.1.tgz", - "integrity": "sha512-50c+zTsZOJVgFfTgwwEzkjA3/QACgdNsKueWPyAR0mRINIvLAStVQBbPg14iuqEQ74NPDbXzJARJ/O4SI1zftA==", - "dev": true, - "dependencies": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/scheduler": { "version": "0.23.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", @@ -2309,15 +2177,6 @@ "node": ">=8" } }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", diff --git a/src/Main.tsx b/src/Main.tsx index 676dedb..3700e80 100644 --- a/src/Main.tsx +++ b/src/Main.tsx @@ -4,9 +4,10 @@ import { MonstrologyLivePlugin } from './live-preview'; import MonstrologySettingsTab, { MonstorlogySettings, DEFAULT_SETTINGS } from './Settings'; import * as React from 'react'; import * as ReactDOM from 'react-dom'; -import {GiBatwingEmblem, GiCursedStar, GiDoubleFaceMask, GiFlatPawPrint, GiHood, GiMaggot, GiMuscleUp, GiTombstone} from 'react-icons/gi' -import {FaDragon} from 'react-icons/fa6' -import {SiElement} from 'react-icons/si' +import {GiAngelOutfit, GiArchitectMask, GiBatwingEmblem, GiCursedStar, GiFlatPawPrint, GiHood, GiMaggot, GiMuscleUp, GiTombstone} from 'react-icons/gi' +import {FaDragon} from 'react-icons/fa6'; +import {PiPlantFill} from 'react-icons/pi'; +import {SiElement} from 'react-icons/si'; export const MON_CLASS = 'MonsterType' export const TRIGGER_WORD = 'mon' @@ -15,14 +16,16 @@ const globalStyle = {verticalAlign: 'sub', fontSize: '1.5em'}; export const MONSTER_ICONS: { [key: string]: JSX.Element } = { - Beast: , - Cursed: , - Draconid: , + Beast: , + Celestial: , + Cursed: , + Draconid: , Elementa: , - Hybrid: , + Hybrid: , Insectoid: , Necrophage: , Ogroid: , + Plant: , Specter: , Vampire: , } @@ -35,6 +38,7 @@ export default class Monstrology extends Plugin { const trigger = TRIGGER_WORD return [ { regex: new RegExp(`^\\s*${trigger}\\s*:\\s*beast\\s*$`, 'ig'), monsterType: 'Beast' }, + { regex: new RegExp(`^\\s*${trigger}\\s*:\\s*celestial\\s*$`, 'ig'), monsterType: 'Celestial' }, { regex: new RegExp(`^\\s*${trigger}\\s*:\\s*cursed\\s*$`, 'ig'), monsterType: 'Cursed' }, { regex: new RegExp(`^\\s*${trigger}\\s*:\\s*draconid\\s*$`, 'ig'), monsterType: 'Draconid' }, { regex: new RegExp(`^\\s*${trigger}\\s*:\\s*elementa\\s*$`, 'ig'), monsterType: 'Elementa' }, @@ -42,6 +46,7 @@ export default class Monstrology extends Plugin { { regex: new RegExp(`^\\s*${trigger}\\s*:\\s*insectoid\\s*$`, 'ig'), monsterType: 'Insectoid' }, { regex: new RegExp(`^\\s*${trigger}\\s*:\\s*necrophage\\s*$`, 'ig'), monsterType: 'Necrophage' }, { regex: new RegExp(`^\\s*${trigger}\\s*:\\s*ogroid\\s*$`, 'ig'), monsterType: 'Ogroid' }, + { regex: new RegExp(`^\\s*${trigger}\\s*:\\s*plant\\s*$`, 'ig'), monsterType: 'Plant' }, { regex: new RegExp(`^\\s*${trigger}\\s*:\\s*specter\\s*$`, 'ig'), monsterType: 'Specter' }, { regex: new RegExp(`^\\s*${trigger}\\s*:\\s*vampire\\s*$`, 'ig'), monsterType: 'Vampire' }, ] diff --git a/src/Settings.ts b/src/Settings.ts index 37abe45..8ad9228 100644 --- a/src/Settings.ts +++ b/src/Settings.ts @@ -2,29 +2,33 @@ import { App, PluginSettingTab, Setting } from "obsidian"; import Monstrology, { MON_CLASS } from "./Main"; export interface MonstorlogySettings { - BeastString: string; - CursedString: string; - DraconidString: string; - ElementaString: string; - HybridString: string; - InsectoidString: string; - NecrophageString: string; - OgroidString: string; - SpecterString: string; - VampireString: string; + Beast: string; + Celestial: string; + Cursed: string; + Draconid: string; + Elementa: string; + Hybrid: string; + Insectoid: string; + Necrophage: string; + Ogroid: string; + Plant: string; + Specter: string; + Vampire: string; } export const DEFAULT_SETTINGS: MonstorlogySettings = { - BeastString: 'Beast', - CursedString: 'Cursed', - DraconidString: 'Draconid', - ElementaString: 'Elementa', - HybridString: 'Hybrid', - InsectoidString: 'Insectoid', - NecrophageString: 'Necrophage', - OgroidString: 'Ogroid', - SpecterString: 'Specter', - VampireString: 'Vampire' + Beast: 'Beast', + Celestial: 'Celestial', + Cursed: 'Cursed', + Draconid: 'Draconid', + Elementa: 'Elementa', + Hybrid: 'Hybrid', + Insectoid: 'Insectoid', + Necrophage: 'Necrophage', + Ogroid: 'Ogroid', + Plant: 'Plant', + Specter: 'Specter', + Vampire: 'Vampire' } export default class MonstrologySettingsTab extends PluginSettingTab { @@ -48,56 +52,170 @@ export default class MonstrologySettingsTab extends PluginSettingTab { .setName( createFragment(e => { e.createSpan({text: 'Beast', cls: MON_CLASS}) - e.createSpan({text: 'Beast'}) }) ) .addText(text => text - .setPlaceholder(DEFAULT_SETTINGS.BeastString) - .setValue(this.plugin.settings.BeastString) + .setPlaceholder(DEFAULT_SETTINGS.Beast) + .setValue(this.plugin.settings.Beast) .onChange(async (value) => { - this.plugin.settings.BeastString = value || DEFAULT_SETTINGS.BeastString; + this.plugin.settings.Beast = value || DEFAULT_SETTINGS.Beast; await this.plugin.saveSettings(); }) ) + new Setting(root) + .setName( + createFragment(e => { + e.createSpan({text: 'Celestial', cls: MON_CLASS}) + }) + ) .addText(text => text - .setPlaceholder(DEFAULT_SETTINGS.CursedString) - .setValue(this.plugin.settings.CursedString) + .setPlaceholder(DEFAULT_SETTINGS.Celestial) + .setValue(this.plugin.settings.Celestial) .onChange(async (value) => { - this.plugin.settings.CursedString = value || DEFAULT_SETTINGS.CursedString; + this.plugin.settings.Celestial = value || DEFAULT_SETTINGS.Celestial; await this.plugin.saveSettings(); }) ) + new Setting(root) + .setName( + createFragment(e => { + e.createSpan({text: 'Cursed', cls: MON_CLASS}) + }) + ) .addText(text => text - .setPlaceholder(DEFAULT_SETTINGS.DraconidString) - .setValue(this.plugin.settings.DraconidString) + .setPlaceholder(DEFAULT_SETTINGS.Cursed) + .setValue(this.plugin.settings.Cursed) .onChange(async (value) => { - this.plugin.settings.DraconidString = value || DEFAULT_SETTINGS.DraconidString; + this.plugin.settings.Cursed = value || DEFAULT_SETTINGS.Cursed; await this.plugin.saveSettings(); }) ) + new Setting(root) + .setName( + createFragment(e => { + e.createSpan({text: 'Draconid', cls: MON_CLASS}) + }) + ) .addText(text => text - .setPlaceholder(DEFAULT_SETTINGS.ElementaString) - .setValue(this.plugin.settings.ElementaString) + .setPlaceholder(DEFAULT_SETTINGS.Draconid) + .setValue(this.plugin.settings.Draconid) .onChange(async (value) => { - this.plugin.settings.ElementaString = value || DEFAULT_SETTINGS.ElementaString; + this.plugin.settings.Draconid = value || DEFAULT_SETTINGS.Draconid; await this.plugin.saveSettings(); }) ) + new Setting(root) + .setName( + createFragment(e => { + e.createSpan({text: 'Elementa', cls: MON_CLASS}) + }) + ) .addText(text => text - .setPlaceholder(DEFAULT_SETTINGS.HybridString) - .setValue(this.plugin.settings.HybridString) + .setPlaceholder(DEFAULT_SETTINGS.Elementa) + .setValue(this.plugin.settings.Elementa) .onChange(async (value) => { - this.plugin.settings.HybridString = value || DEFAULT_SETTINGS.HybridString; + this.plugin.settings.Elementa = value || DEFAULT_SETTINGS.Elementa; await this.plugin.saveSettings(); }) ) + new Setting(root) + .setName( + createFragment(e => { + e.createSpan({text: 'Hybrid', cls: MON_CLASS}) + }) + ) .addText(text => text - .setPlaceholder(DEFAULT_SETTINGS.InsectoidString) - .setValue(this.plugin.settings.InsectoidString) + .setPlaceholder(DEFAULT_SETTINGS.Hybrid) + .setValue(this.plugin.settings.Hybrid) .onChange(async (value) => { - this.plugin.settings.InsectoidString = value || DEFAULT_SETTINGS.InsectoidString; + this.plugin.settings.Hybrid = value || DEFAULT_SETTINGS.Hybrid; await this.plugin.saveSettings(); }) ) + new Setting(root) + .setName( + createFragment(e => { + e.createSpan({text: 'Insectoid', cls: MON_CLASS}) + }) + ) + .addText(text => text + .setPlaceholder(DEFAULT_SETTINGS.Insectoid) + .setValue(this.plugin.settings.Insectoid) + .onChange(async (value) => { + this.plugin.settings.Insectoid = value || DEFAULT_SETTINGS.Insectoid; + await this.plugin.saveSettings(); + }) + ) + new Setting(root) + .setName( + createFragment(e => { + e.createSpan({text: 'Necrophage', cls: MON_CLASS}) + }) + ) + .addText(text => text + .setPlaceholder(DEFAULT_SETTINGS.Necrophage) + .setValue(this.plugin.settings.Necrophage) + .onChange(async (value) => { + this.plugin.settings.Necrophage = value || DEFAULT_SETTINGS.Necrophage; + await this.plugin.saveSettings(); + }) + ) + new Setting(root) + .setName( + createFragment(e => { + e.createSpan({text: 'Ogroid', cls: MON_CLASS}) + }) + ) + .addText(text => text + .setPlaceholder(DEFAULT_SETTINGS.Ogroid) + .setValue(this.plugin.settings.Ogroid) + .onChange(async (value) => { + this.plugin.settings.Ogroid = value || DEFAULT_SETTINGS.Ogroid; + await this.plugin.saveSettings(); + }) + ) + new Setting(root) + .setName( + createFragment(e => { + e.createSpan({text: 'Plant', cls: MON_CLASS}) + }) + ) + .addText(text => text + .setPlaceholder(DEFAULT_SETTINGS.Plant) + .setValue(this.plugin.settings.Plant) + .onChange(async (value) => { + this.plugin.settings.Plant = value || DEFAULT_SETTINGS.Plant; + await this.plugin.saveSettings(); + }) + ) + new Setting(root) + .setName( + createFragment(e => { + e.createSpan({text: 'Specter', cls: MON_CLASS}) + }) + ) + .addText(text => text + .setPlaceholder(DEFAULT_SETTINGS.Specter) + .setValue(this.plugin.settings.Specter) + .onChange(async (value) => { + this.plugin.settings.Specter = value || DEFAULT_SETTINGS.Specter; + await this.plugin.saveSettings(); + }) + ) + new Setting(root) + .setName( + createFragment(e => { + e.createSpan({text: 'Vampire', cls: MON_CLASS}) + }) + ) + .addText(text => text + .setPlaceholder(DEFAULT_SETTINGS.Vampire) + .setValue(this.plugin.settings.Vampire) + .onChange(async (value) => { + this.plugin.settings.Vampire = value || DEFAULT_SETTINGS.Vampire; + await this.plugin.saveSettings(); + }) + ) + } } \ No newline at end of file diff --git a/src/Style.scss b/src/Style.scss deleted file mode 100644 index 8efe4b0..0000000 --- a/src/Style.scss +++ /dev/null @@ -1,55 +0,0 @@ -.MonsterType { - vertical-align: middle; - font-size: 1.5em; - - &.beast { - color:darkmagenta; - vertical-align: middle; - font-size: 1.5em; - } - &.cursed { - color:ghostwhite; - vertical-align: middle; - font-size: 1.5em; - } - &.draconid { - color: gold; - vertical-align: middle; - font-size: 1.5em; - } - &.elementa { - color:lightblue; - vertical-align: middle; - font-size: 1.5em; - } - &.hybrid { - color:yellow; - vertical-align: middle; - font-size: 1.5em; - } - &.insectoid { - color:yellowgreen; - vertical-align: middle; - font-size: 1.5em; - } - &.necrophage { - color: grey; - vertical-align: middle; - font-size: 1.5em; - } - &.ogroid { - color: orange; - vertical-align: middle; - font-size: 1.5em; - } - &.specter { - color: ghostwhite; - vertical-align: middle; - font-size: 1.5em; - } - &.vampire { - color: crimson; - vertical-align: middle; - font-size: 1.5em; - } -} \ No newline at end of file