mirror of
https://github.com/naturalcrit/homebrewery.git
synced 2026-03-22 08:58:11 +00:00
curate suggestion and add in some color
This commit is contained in:
@@ -117,7 +117,7 @@
|
|||||||
|
|
||||||
&.tags .tagInput-dropdown {
|
&.tags .tagInput-dropdown {
|
||||||
z-index : 201;
|
z-index : 201;
|
||||||
max-width : 150px;
|
max-width : 200px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
341
client/homebrew/editor/tagInput/curatedTagSuggestionList.js
Normal file
341
client/homebrew/editor/tagInput/curatedTagSuggestionList.js
Normal file
@@ -0,0 +1,341 @@
|
|||||||
|
export default [
|
||||||
|
// ############################## Systems
|
||||||
|
// D&D
|
||||||
|
"system:D&D Original",
|
||||||
|
"system:D&D Basic",
|
||||||
|
"system:AD&D 1e",
|
||||||
|
"system:AD&D 2e",
|
||||||
|
"system:D&D 3e",
|
||||||
|
"system:D&D 3.5e",
|
||||||
|
"system:D&D 4e",
|
||||||
|
"system:D&D 5e",
|
||||||
|
"system:D&D 5e 2024",
|
||||||
|
"system:BD&D (B/X)",
|
||||||
|
"system:D&D Essentials",
|
||||||
|
|
||||||
|
// Other Famous RPGs
|
||||||
|
"system:Pathfinder 1e",
|
||||||
|
"system:Pathfinder 2e",
|
||||||
|
"system:Vampire: The Masquerade",
|
||||||
|
"system:Werewolf: The Apocalypse",
|
||||||
|
"system:Mage: The Ascension",
|
||||||
|
"system:Call of Cthulhu",
|
||||||
|
"system:Shadowrun",
|
||||||
|
"system:Star Wars RPG (D6/D20/Edge of the Empire)",
|
||||||
|
"system:Warhammer Fantasy Roleplay",
|
||||||
|
"system:Cyberpunk 2020",
|
||||||
|
"system:Blades in the Dark",
|
||||||
|
"system:Daggerheart",
|
||||||
|
"system:Draw Steel",
|
||||||
|
"system:Mutants and Masterminds",
|
||||||
|
|
||||||
|
// ###################################### RPG Keywords
|
||||||
|
|
||||||
|
// Meta
|
||||||
|
"meta:Template",
|
||||||
|
"meta:Theme",
|
||||||
|
"meta:free",
|
||||||
|
"meta:Character Sheet",
|
||||||
|
"meta:Documentation",
|
||||||
|
"meta:NPC",
|
||||||
|
"meta:Guide",
|
||||||
|
"Resource",
|
||||||
|
"notes",
|
||||||
|
"syntax",
|
||||||
|
"example",
|
||||||
|
"stat block",
|
||||||
|
"Character Sheet",
|
||||||
|
|
||||||
|
// Classes / Subclasses / Archetypes
|
||||||
|
"Class",
|
||||||
|
"Subclass",
|
||||||
|
"Archetype",
|
||||||
|
"Martial",
|
||||||
|
"Half-Caster",
|
||||||
|
"Full Caster",
|
||||||
|
"Artificer",
|
||||||
|
"Barbarian",
|
||||||
|
"Bard",
|
||||||
|
"Cleric",
|
||||||
|
"Druid",
|
||||||
|
"Fighter",
|
||||||
|
"Monk",
|
||||||
|
"Paladin",
|
||||||
|
"Rogue",
|
||||||
|
"Sorcerer",
|
||||||
|
"Warlock",
|
||||||
|
"Wizard",
|
||||||
|
|
||||||
|
// Races / Species / Lineages
|
||||||
|
"Race",
|
||||||
|
"Ancestry",
|
||||||
|
"Lineage",
|
||||||
|
"Aasimar",
|
||||||
|
"Beastfolk",
|
||||||
|
"Dragonborn",
|
||||||
|
"Dwarf",
|
||||||
|
"Elf",
|
||||||
|
"Goblin",
|
||||||
|
"Half-Elf",
|
||||||
|
"Half-Orc",
|
||||||
|
"Human",
|
||||||
|
"Kobold",
|
||||||
|
"Lizardfolk",
|
||||||
|
"Lycan",
|
||||||
|
"Orc",
|
||||||
|
"Tiefling",
|
||||||
|
"Vampire",
|
||||||
|
"Yuan-Ti",
|
||||||
|
|
||||||
|
// Magic / Spells / Items
|
||||||
|
"Magic",
|
||||||
|
"Magic Item",
|
||||||
|
"Magic Items",
|
||||||
|
"Wondrous Item",
|
||||||
|
"Magic Weapon",
|
||||||
|
"Artifact",
|
||||||
|
"Spell",
|
||||||
|
"Spells",
|
||||||
|
"cantrip",
|
||||||
|
"cantrips",
|
||||||
|
"Eldritch",
|
||||||
|
"Eldritch Invocation",
|
||||||
|
"invocation",
|
||||||
|
"Invocations",
|
||||||
|
"pact boon",
|
||||||
|
"Pact Boon",
|
||||||
|
"Spellcaster",
|
||||||
|
"spellcaster",
|
||||||
|
"Spellblade",
|
||||||
|
"Magical Tattoos",
|
||||||
|
"Enchantment",
|
||||||
|
"Enchanted",
|
||||||
|
"Attunement",
|
||||||
|
"Requires Attunement",
|
||||||
|
"Rune",
|
||||||
|
"Runes",
|
||||||
|
"Wand",
|
||||||
|
"Rod",
|
||||||
|
"Scroll",
|
||||||
|
"Potion",
|
||||||
|
"Potions",
|
||||||
|
"Item",
|
||||||
|
"Items",
|
||||||
|
"Bag of Holding",
|
||||||
|
|
||||||
|
// Book type
|
||||||
|
"type:Campaign",
|
||||||
|
"type:Campaign Setting",
|
||||||
|
"type:Adventure",
|
||||||
|
"type:One-Shot",
|
||||||
|
"type:Setting",
|
||||||
|
"type:World",
|
||||||
|
"type:Lore",
|
||||||
|
"type:History",
|
||||||
|
"type:Dungeon Master",
|
||||||
|
"type:Encounter Pack",
|
||||||
|
"type:Encounter",
|
||||||
|
"type:Session Notes",
|
||||||
|
"type:reference",
|
||||||
|
"type:Handbook",
|
||||||
|
"type:Manual",
|
||||||
|
"type:Manuals",
|
||||||
|
"type:Compendium",
|
||||||
|
"type:Bestiary",
|
||||||
|
|
||||||
|
// Monsters / Creatures / Enemies
|
||||||
|
"Monster",
|
||||||
|
"Creatures",
|
||||||
|
"Creature",
|
||||||
|
"Beast",
|
||||||
|
"Beasts",
|
||||||
|
"Humanoid",
|
||||||
|
"Undead",
|
||||||
|
"Fiend",
|
||||||
|
"Aberration",
|
||||||
|
"Ooze",
|
||||||
|
"Giant",
|
||||||
|
"Dragon",
|
||||||
|
"Monstrosity",
|
||||||
|
"Demon",
|
||||||
|
"Devil",
|
||||||
|
"Elemental",
|
||||||
|
"Construct",
|
||||||
|
"Constructs",
|
||||||
|
"Boss",
|
||||||
|
"BBEG",
|
||||||
|
|
||||||
|
// ############################# Document meta tags
|
||||||
|
|
||||||
|
"meta:v3",
|
||||||
|
"meta:Legacy",
|
||||||
|
];
|
||||||
|
|
||||||
|
const ReadList = [
|
||||||
|
// Systems / Editions
|
||||||
|
"5e",
|
||||||
|
"5th Edition",
|
||||||
|
"5.5e",
|
||||||
|
"5e'24",
|
||||||
|
"5.24",
|
||||||
|
"5e 2024",
|
||||||
|
"D&D 5e",
|
||||||
|
"DnD 5e",
|
||||||
|
"DnD5e",
|
||||||
|
"D&D 5e24",
|
||||||
|
"DnD5e24",
|
||||||
|
"D&D 2024",
|
||||||
|
"system:pf2e",
|
||||||
|
"system:dnd5.5",
|
||||||
|
"system:dnd5e",
|
||||||
|
"system:dnd",
|
||||||
|
"system:5e",
|
||||||
|
"system:d&d5e",
|
||||||
|
"system:D&D 5e24",
|
||||||
|
"system:book clone",
|
||||||
|
"system:curse of strahd",
|
||||||
|
"system:descent into avernus",
|
||||||
|
"system:GM Binder",
|
||||||
|
"system:Ord",
|
||||||
|
"system:sf2e",
|
||||||
|
"system:Mutants and Masterminds",
|
||||||
|
"system:2e",
|
||||||
|
"system:class",
|
||||||
|
"PF2e",
|
||||||
|
"pf2e",
|
||||||
|
"3.5e",
|
||||||
|
"3.5",
|
||||||
|
"system:pf2e",
|
||||||
|
"DnD",
|
||||||
|
"DND",
|
||||||
|
"dnd",
|
||||||
|
"dnd-2014",
|
||||||
|
"dnd-2024",
|
||||||
|
"dnd5e",
|
||||||
|
"DnD 5e",
|
||||||
|
"DnD5e24",
|
||||||
|
"DnDBeyond",
|
||||||
|
"DnDBehindTheScreen",
|
||||||
|
"Dd5",
|
||||||
|
"DD5",
|
||||||
|
"dd5",
|
||||||
|
"dd5e",
|
||||||
|
"system:D&D",
|
||||||
|
"system:D&D 5e24",
|
||||||
|
"system:d&d5e",
|
||||||
|
"system:5e",
|
||||||
|
"system:daggerheart",
|
||||||
|
"system:dnd5e",
|
||||||
|
"system:dnd5.5",
|
||||||
|
"system:dnd",
|
||||||
|
"system:GM Binder",
|
||||||
|
"system:Ord",
|
||||||
|
"system:sf2e",
|
||||||
|
"system:curse of strahd",
|
||||||
|
"system:descent into avernus",
|
||||||
|
"system:class",
|
||||||
|
"system:Mutants and Masterminds",
|
||||||
|
"system:2e",
|
||||||
|
|
||||||
|
// Media / Pop Culture
|
||||||
|
"One Piece",
|
||||||
|
"One Piece DND",
|
||||||
|
"Luffy",
|
||||||
|
"Dragon Ball",
|
||||||
|
"Dragon Ball Z",
|
||||||
|
"Dragon Ball Z TTRPG",
|
||||||
|
"Dragon Ball Z RPG",
|
||||||
|
"Dragon Ball Z DND",
|
||||||
|
"Dragon Ball Z 5e",
|
||||||
|
"Naruto",
|
||||||
|
"Naruto 5e",
|
||||||
|
"Jujutsu Kaisen",
|
||||||
|
"Fairy Tail",
|
||||||
|
"Final Fantasy",
|
||||||
|
"Final Fantasy XIV",
|
||||||
|
"Final Fantasy 7 Remake",
|
||||||
|
"FF7",
|
||||||
|
"FFXI",
|
||||||
|
"Kingdom Hearts",
|
||||||
|
"Elder Scrolls",
|
||||||
|
"Elder Scrolls Offline",
|
||||||
|
"Skyrim",
|
||||||
|
"WoW",
|
||||||
|
"World of Warcraft",
|
||||||
|
"Marvel Comics",
|
||||||
|
"DC Comics",
|
||||||
|
"Pokémon",
|
||||||
|
"Pokemon",
|
||||||
|
"League of Legends",
|
||||||
|
"Runeterra",
|
||||||
|
"Yu-Gi-Oh",
|
||||||
|
"Minecraft",
|
||||||
|
"Minecraft Mods",
|
||||||
|
"Don't Starve",
|
||||||
|
"Witcher",
|
||||||
|
"Witcher 3",
|
||||||
|
"Cyberpunk",
|
||||||
|
"Cyberpunk 2077",
|
||||||
|
"Fallout",
|
||||||
|
"Divinity Original Sin 2",
|
||||||
|
"Fullmetal Alchemist",
|
||||||
|
"Fullmetal Alchemist Brotherhood",
|
||||||
|
"Lobotomy Corporation",
|
||||||
|
"Bloodborne",
|
||||||
|
"Dragonlance",
|
||||||
|
"Shackled City Adventure Path",
|
||||||
|
"Baldurs Gate 3",
|
||||||
|
"Library of Ruina",
|
||||||
|
"Radiant Citadel",
|
||||||
|
"Ravenloft",
|
||||||
|
"Forgotten Realms",
|
||||||
|
"Exandria",
|
||||||
|
"Critical Role",
|
||||||
|
"Star Wars",
|
||||||
|
"SW5e",
|
||||||
|
"SW5E",
|
||||||
|
"Star Wars 5e",
|
||||||
|
|
||||||
|
// Tools / Resources / Templates / Notes
|
||||||
|
"Template",
|
||||||
|
"Templates",
|
||||||
|
"Style Template",
|
||||||
|
"meta:Template",
|
||||||
|
"meta:Theme",
|
||||||
|
"meta:5e24 Style",
|
||||||
|
"meta:khaoz age",
|
||||||
|
"meta:gratis",
|
||||||
|
"meta:free",
|
||||||
|
"meta:Sheet",
|
||||||
|
"meta:documentation",
|
||||||
|
"meta:npc",
|
||||||
|
"meta:User Guide",
|
||||||
|
"fa-solid fa-sheet-plastic:Ficha",
|
||||||
|
"tag:Class",
|
||||||
|
"tag:Rules",
|
||||||
|
"tag:Spells",
|
||||||
|
"tag:Adventure",
|
||||||
|
"tag:Spell List",
|
||||||
|
"tag:TAoF&F",
|
||||||
|
"tag:Berean",
|
||||||
|
"resource",
|
||||||
|
"Resources",
|
||||||
|
"support",
|
||||||
|
"user help",
|
||||||
|
"notes",
|
||||||
|
"note",
|
||||||
|
"quick ref",
|
||||||
|
"reminder cards",
|
||||||
|
"syntax",
|
||||||
|
"css",
|
||||||
|
"custom css",
|
||||||
|
"example",
|
||||||
|
"examples",
|
||||||
|
"snippet",
|
||||||
|
"snippets",
|
||||||
|
"tables",
|
||||||
|
"chart",
|
||||||
|
"stat block",
|
||||||
|
"stat blocks",
|
||||||
|
"statblock",
|
||||||
|
];
|
||||||
@@ -2,7 +2,7 @@ import "./tagInput.less";
|
|||||||
import React, { useState, useEffect, useMemo } from "react";
|
import React, { useState, useEffect, useMemo } from "react";
|
||||||
import Combobox from "../../../components/combobox.jsx";
|
import Combobox from "../../../components/combobox.jsx";
|
||||||
|
|
||||||
import tagSuggestionList from "./tagSuggestionList.js";
|
import tagSuggestionList from "./curatedTagSuggestionList.js";
|
||||||
|
|
||||||
const TagInput = ({ label, unique = true, values = [], placeholder = "", onChange }) => {
|
const TagInput = ({ label, unique = true, values = [], placeholder = "", onChange }) => {
|
||||||
const [tagList, setTagList] = useState(
|
const [tagList, setTagList] = useState(
|
||||||
@@ -81,16 +81,44 @@ const TagInput = ({ label, unique = true, values = [], placeholder = "", onChang
|
|||||||
setTagList((prev) => prev.map((t, i) => ({ ...t, editing: i === index })));
|
setTagList((prev) => prev.map((t, i) => ({ ...t, editing: i === index })));
|
||||||
};
|
};
|
||||||
|
|
||||||
const suggestionOptions = tagSuggestionList.map((tag) => (
|
const suggestionOptions = tagSuggestionList.map((tag) => {
|
||||||
<div
|
|
||||||
className="item"
|
const tagType = tag.split(':');
|
||||||
key={`tag-${tag}`} // unique key
|
|
||||||
value={tag}
|
let classes = 'item';
|
||||||
data={tag}
|
switch (tagType[0]) {
|
||||||
title={tag}>
|
case 'type':
|
||||||
{tag}
|
classes = 'item type'
|
||||||
</div>
|
break;
|
||||||
));
|
|
||||||
|
case 'group':
|
||||||
|
classes = 'item group'
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'meta':
|
||||||
|
classes = 'item meta'
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'system':
|
||||||
|
classes = 'item system'
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
classes = 'item'
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
className={classes}
|
||||||
|
key={`tag-${tag}`} // unique key
|
||||||
|
value={tag}
|
||||||
|
data={tag}
|
||||||
|
title={tag}>
|
||||||
|
{tag}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="field tags">
|
<div className="field tags">
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
.tagInput-dropdown {
|
||||||
|
.dropdown-options {
|
||||||
|
.item {
|
||||||
|
&.type {
|
||||||
|
background-color: #00800035;
|
||||||
|
}
|
||||||
|
&.group {
|
||||||
|
background-color: #50505035;
|
||||||
|
}
|
||||||
|
&.meta {
|
||||||
|
background-color: #00008035;
|
||||||
|
}
|
||||||
|
&.system {
|
||||||
|
background-color: #80000035;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -750,27 +750,6 @@ export default [
|
|||||||
"Arvore I",
|
"Arvore I",
|
||||||
"Fim da Jornada",
|
"Fim da Jornada",
|
||||||
"greek god",
|
"greek god",
|
||||||
"-1 OR 5*5=25 --",
|
|
||||||
"-1 OR 5*5=26 --",
|
|
||||||
"-1 OR 5*5=25",
|
|
||||||
"-1 OR 5*5=26",
|
|
||||||
"-1' OR 5*5=25 --",
|
|
||||||
"-1' OR 5*5=26 --",
|
|
||||||
"-1\" OR 5*5=25 --",
|
|
||||||
"-1\" OR 5*5=26 --",
|
|
||||||
"1*if(now()=sysdate(),sleep(15),0)",
|
|
||||||
"10'XOR(1*if(now()=sysdate(),sleep(15),0))XOR'Z",
|
|
||||||
"10\"XOR(1*if(now()=sysdate(),sleep(15),0))XOR\"Z",
|
|
||||||
"(select(0)from(select(sleep(15)))v)/*'+(select(0)from(select(sleep(15)))v)+'\"+(select(0)from(select(sleep(15)))v)+\"*/",
|
|
||||||
"1-1; waitfor delay '0:0:15' --",
|
|
||||||
"1-1); waitfor delay '0:0:15' --",
|
|
||||||
"1-1 waitfor delay '0:0:15' --",
|
|
||||||
"1*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),15)",
|
|
||||||
"1'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'",
|
|
||||||
"'\"",
|
|
||||||
"<22><><EFBFBD><EFBFBD>%2527%2522\\'\\\"",
|
|
||||||
"(select 198766*667891)",
|
|
||||||
"(select 198766*667891 from DUAL)",
|
|
||||||
"dwarf",
|
"dwarf",
|
||||||
"Firearms",
|
"Firearms",
|
||||||
"3.5e",
|
"3.5e",
|
||||||
@@ -1347,7 +1326,6 @@ export default [
|
|||||||
"system:sf2e",
|
"system:sf2e",
|
||||||
"drakkenheim",
|
"drakkenheim",
|
||||||
"downtime",
|
"downtime",
|
||||||
"v1.1",
|
|
||||||
"amulet",
|
"amulet",
|
||||||
"Feiticeiros e Maldicoes",
|
"Feiticeiros e Maldicoes",
|
||||||
"Tecnica amaldicoada",
|
"Tecnica amaldicoada",
|
||||||
|
|||||||
Reference in New Issue
Block a user