* Add ellipsis icon * Reduce size of tokens * Move UpdateToast to toasts folder * Update variables.scss * Add reps for grid objects These reps act like the existing PartyRep except for Characters and Summons, as well as a new component just for Weapons. They only render the grid of objects and nothing else. Eventually PartyRep will use WeaponRep * Added RepSegment This is a Character, Weapon or Summon rep wrapped with an input and label for use in a SegmentedControl * Modify PartySegmentedControl to use RepSegments This will not work on mobile yet, where it should gracefully degrade to a normal SegmentedControl with only text * Extract URL copied and Remixed toasts into files * Extract delete team alert into a file Also, to support this: * Added `Destructive` class to Button * Added `primaryActionClassName` prop to Alert * Added an alert for when remixing teams * Began refactoring PartyDetails into several files * PartyHeader will live at the top, above the new segmented control * PartyDetails stays below, only showing remixed teams and the description * PartyDropdown handles the new ... menu * Remove duplicated code This is description and remix code that is still in `PartyDetails` * Small fixes for weapon grid * Add placeholder image for guidebooks * Add localizations * Add Guidebook type and update other types * Update gitignore Don't commit guidebook images * Indicate if a dialog is scrollable We had broken paging in the infinite scroll component. Turning off "scrolling" at the dialog levels fixes it without adding scrollbars in environments that persistently show them * Add ExtraContainer This is the purple container that will contain additional weapons and sephira guidebooks * Move ExtraWeapons to ExtraWeaponsGrid And put it in ExtraContainer * Added GuidebooksGrid and GuidebookUnit These are the display components for Guidebooks in the WeaponGrid * Visual adjustments to summon grid * Add Empty class to weapons when unit is unfilled * Implement GuidebooksGrid in WeaponGrid * Remove extra switch * Remove old dependencies and props * Implement searching for/adding guidebooks to party * Update styles * Fix dependency * Properly determine when extra container should display * Change to 1-indexing for guidebooks * Add support for removing guidebooks * Display guidebook validation error * Move read only buttons to PartyHeader Also broke up tokens and made them easier to render * Add guidebooks to DetailsObject * Add raid placeholder string to locale * Update .gitignore * Update and reorganize localization files * Update types Added RaidGroup and updated Raid, then updated dependent types and objects * Update dependencies * Update react and react-dom to at least 18.0.0 * Install cmdk * Rename Arrow.svg to Chevron.svg Also added a new Arrow.svg with a stem * Add api call for raidGroups and update pages Pages fetch raids and store them in the app state. We needed to update this to pull raid groups instead * Update SegmentedControl component * Add className and blended properties * Segment gets flex-grow * Update Select component * data-placeholder style should match only if true * Adjust corner radius to match cards instead of inputs * Fix classNames call in SelectItem * Remove raid prop from Party * Add Popover component * Popover is a wrapper of Radix's Popover component that we will use to wrap the combobox. * Move styles that were in PopoverContent.scss to Popover.scss * Add Command component The Command component is a wrapper over CMDK's Command component. Pretty much every object in that library is wrapped here. We will use this for the guts of our combobox. * Add RaidCombobox and RaidItem components * RaidCombobox combines Popover and Command to create an experience where users can browse through raids by section, search them and sort them. * RaidItem is effectively a copy-paste of SelectItem using CommandItem, adding some raid-specific styles and elements * Updates themes and variables * Replace RaidDropdown with RaidCombobox * Add small shadow to Tooltip * Update side offset for Popover * Update CharLimitedFieldset class name * Add clear button to Combobox input * It only shows up when there is text in the input * Clicking it clears the text in the input * It uses CharLimitedFieldset's classes * ChatGPT helped me refactor RaidCombobox * Further refactoring of RaidCombobox * Deploy content update (#309) * Update the updates page with new items (#306) * Add Nier and Estarriola uncaps (#308) * Update the updates page with new items (#306) (#307) * Update .gitignore * Add Nier and Estarriola uncaps * Fix uncaps treated as new characters * Make combobox keyboard accessible * Style updates * Refactor accessibility code * Add translation for "Selected" text * Change selects to be poppers for consistency We can't make the new Raid combobox appear over the input like the macOS behavior, so we change all selects to be normal popper behavior * Set raid groups on teams page * Implement in FilterBar * Fix styles for combobox input * Remove RaidDropdown component * Update index.scss * Remove preview when on mobile sizes * Fix some mobile styles * Add farming raid option * Increase height slightly
495 lines
14 KiB
JSON
495 lines
14 KiB
JSON
{
|
|
"about": {
|
|
"segmented_control": {
|
|
"about": "About",
|
|
"updates": "Updates",
|
|
"roadmap": "Roadmap"
|
|
}
|
|
},
|
|
"accessories": {
|
|
"paladin": "shield",
|
|
"manadiver": "manatura"
|
|
},
|
|
"alert": {
|
|
"incompatible_weapon": "You've selected a weapon that can't be added to the Additional Weapon slots."
|
|
},
|
|
"ax": {
|
|
"no_skill": "No AX Skill",
|
|
"errors": {
|
|
"value_too_low": "{{name}} must be at least {{minValue}}{{suffix}}",
|
|
"value_too_high": "{{name}} cannot be greater than {{maxValue}}{{suffix}}",
|
|
"value_not_whole": "{{name}} must be a whole number",
|
|
"value_empty": "{{name}} must have a value"
|
|
}
|
|
},
|
|
"awakening": {
|
|
"no_type": "No awakening",
|
|
"errors": {
|
|
"value_too_low": "Awakening level must be at least {{minValue}}",
|
|
"value_too_high": "Awakening level cannot be greater than {{maxValue}}",
|
|
"value_not_whole": "Awakening level must be a whole number",
|
|
"value_empty": "Awakening must have a level"
|
|
}
|
|
},
|
|
"buttons": {
|
|
"cancel": "Cancel",
|
|
"copy": "Copy link",
|
|
"confirm": "Got it",
|
|
"delete": "Delete team",
|
|
"show_info": "Edit info",
|
|
"hide_info": "Hide info",
|
|
"save_info": "Save info",
|
|
"remix": "Remix",
|
|
"save": "Save",
|
|
"saved": "Saved",
|
|
"menu": "Menu",
|
|
"new": "New",
|
|
"wiki": "View more on gbf.wiki"
|
|
},
|
|
"combobox": {
|
|
"selected": "Selected"
|
|
},
|
|
"context": {
|
|
"modify": {
|
|
"character": "Modify character",
|
|
"summon": "Modify summon",
|
|
"weapon": "Modify weapon"
|
|
},
|
|
"remove": "Remove from grid"
|
|
},
|
|
"elements": {
|
|
"null": "Null",
|
|
"wind": "Wind",
|
|
"fire": "Fire",
|
|
"water": "Water",
|
|
"earth": "Earth",
|
|
"dark": "Dark",
|
|
"light": "Light",
|
|
"full": {
|
|
"all": "All elements",
|
|
"null": "Null",
|
|
"wind": "Wind",
|
|
"fire": "Fire",
|
|
"water": "Water",
|
|
"earth": "Earth",
|
|
"dark": "Dark",
|
|
"light": "Light"
|
|
}
|
|
},
|
|
"errors": {
|
|
"internal_server_error": {
|
|
"title": "Internal Server Error",
|
|
"description": "The server reported a problem that we couldn't automatically recover from. Please try your request again."
|
|
},
|
|
"not_found": {
|
|
"title": "Not found",
|
|
"description": "The page you're looking for couldn't be found",
|
|
"button": "Create a new party"
|
|
},
|
|
"validation": {
|
|
"guidebooks": "You cannot equip more than one of each Sephira Guidebook"
|
|
},
|
|
"unauthorized": "You don't have permission to perform that action"
|
|
},
|
|
"filters": {
|
|
"labels": {
|
|
"element": "Element",
|
|
"series": "Series",
|
|
"proficiency": "Proficiency",
|
|
"rarity": "Rarity"
|
|
}
|
|
},
|
|
"header": {
|
|
"anonymous": "Anonymous",
|
|
"untitled_team": "Untitled team by {{username}}",
|
|
"new_team": "New team",
|
|
"byline": "{{partyName}} by {{username}}"
|
|
},
|
|
"job_skills": {
|
|
"all": "All skills",
|
|
"buffing": "Buffing",
|
|
"debuffing": "Debuffing",
|
|
"damaging": "Damaging",
|
|
"healing": "Healing",
|
|
"emp": "Extended Mastery",
|
|
"base": "Base Skills",
|
|
"state": {
|
|
"selectable": "Select a skill",
|
|
"no_skill": "No skill"
|
|
}
|
|
},
|
|
"menu": {
|
|
"about": "About",
|
|
"changelog": "Changelog",
|
|
"guides": "Guides",
|
|
"language": "Language",
|
|
"login": "Log in",
|
|
"roadmap": "Roadmap",
|
|
"profile": "Your profile",
|
|
"new": "New party",
|
|
"saved": "Saved",
|
|
"settings": "Settings",
|
|
"signup": "Sign up",
|
|
"teams": "Teams",
|
|
"logout": "Logout"
|
|
},
|
|
"modals": {
|
|
"about": {
|
|
"title": "About"
|
|
},
|
|
"roadmap": {
|
|
"title": "Roadmap"
|
|
},
|
|
"changelog": {
|
|
"title": "Changelog"
|
|
},
|
|
"characters": {
|
|
"title": "Character",
|
|
"subtitles": {
|
|
"ring": "Over Mastery",
|
|
"earring": "Aetherial Mastery",
|
|
"permanent": "Permanent Mastery",
|
|
"awakening": "Awakening"
|
|
},
|
|
"messages": {
|
|
"remove": "Are you sure you want to remove <strong>{{character}}</strong> from your team?"
|
|
},
|
|
"buttons": {
|
|
"confirm": "Save character",
|
|
"remove": "Remove character"
|
|
}
|
|
},
|
|
"conflict": {
|
|
"character": "Only one <strong>version of a character</strong> can be included in each party. Do you want to change your party members?",
|
|
"weapon": {
|
|
"generic": "Only one weapon from the <strong>{{series}} Series</strong> can be included in each party. Do you want to change your weapons?",
|
|
"opus-draconic": "Only one <strong>Dark Opus</strong> or <strong>Draconic Weapon</strong> can be included in each party. Do you want to change your weapons?"
|
|
},
|
|
"buttons": {
|
|
"confirm": "Confirm"
|
|
}
|
|
},
|
|
"delete_team": {
|
|
"title": "Delete team",
|
|
"description": "Are you sure you want to permanently delete this team?",
|
|
"buttons": {
|
|
"confirm": "Yes, delete",
|
|
"cancel": "Nevermind"
|
|
}
|
|
},
|
|
"filters": {
|
|
"title": "Advanced filters",
|
|
"labels": {
|
|
"charge_attack": "Charge Attack",
|
|
"full_auto": "Full Auto",
|
|
"auto_guard": "Auto Guard",
|
|
"max_buttons": "Maximum number of button presses",
|
|
"max_turns": "Maximum number of turns",
|
|
"min_characters": "Minimum number of characters",
|
|
"min_summons": "Minimum number of summons",
|
|
"min_weapons": "Minimum number of weapons",
|
|
"name_quality": "Hide untitled teams",
|
|
"user_quality": "Hide anonymous users",
|
|
"original_only": "Hide remixed teams"
|
|
},
|
|
"options": {
|
|
"on": "On",
|
|
"off": "Off",
|
|
"on_and_off": "On and Off"
|
|
},
|
|
"buttons": {
|
|
"confirm": "Save filters",
|
|
"clear": "Clear filters"
|
|
}
|
|
},
|
|
"guidebooks": {
|
|
"buttons": {
|
|
"remove": "Remove guidebook"
|
|
}
|
|
},
|
|
"login": {
|
|
"title": "Log in",
|
|
"buttons": {
|
|
"confirm": "Log in"
|
|
},
|
|
"errors": {
|
|
"empty_email": "Please enter your email",
|
|
"empty_password": "Please enter your password",
|
|
"invalid_email": "That email address is not valid",
|
|
"invalid_credentials": "Your email address or password is incorrect"
|
|
},
|
|
"placeholders": {
|
|
"email": "Email address",
|
|
"password": "Password"
|
|
}
|
|
},
|
|
"remix_team": {
|
|
"title": "Remix team",
|
|
"description": {
|
|
"creator": "You're already the creator of <strong>{{name}}</strong>. Are you sure you want to make a copy by remixing it?",
|
|
"viewer": "Remixing a team makes a copy of it in your account so you can make your own changes.\n\nWould you like to remix <strong>{{name}}</strong>?"
|
|
},
|
|
"buttons": {
|
|
"confirm": "Yes, remix team",
|
|
"cancel": "Nevermind"
|
|
}
|
|
},
|
|
"settings": {
|
|
"title": "Account Settings",
|
|
"labels": {
|
|
"picture": "Picture",
|
|
"language": "Language",
|
|
"gender": "Main Character",
|
|
"private": "Private",
|
|
"theme": "Theme"
|
|
},
|
|
"descriptions": {
|
|
"picture": "Displayed next to your name",
|
|
"gender": "The character shown on your teams",
|
|
"private": "Hide your profile and prevent your grids from showing up in collections"
|
|
},
|
|
"gender": {
|
|
"gran": "Gran",
|
|
"djeeta": "Djeeta"
|
|
},
|
|
"language": {
|
|
"english": "English",
|
|
"japanese": "Japanese"
|
|
},
|
|
"theme": {
|
|
"light": "Light",
|
|
"dark": "Dark",
|
|
"system": "Follow system"
|
|
},
|
|
"buttons": {
|
|
"confirm": "Save settings"
|
|
}
|
|
},
|
|
"signup": {
|
|
"title": "Create an account",
|
|
"buttons": {
|
|
"confirm": "Sign up"
|
|
},
|
|
"agreement": "By signing up, I agree to the <br/><2>Privacy Policy</2> and <1>Usage Guidelines</1>.",
|
|
"errors": {
|
|
"field_in_use": "This {{field}} is already in use",
|
|
"empty_email": "Please enter your email",
|
|
"invalid_email": "That email address is not valid",
|
|
"username_too_short": "Username must be at least 3 characters",
|
|
"username_too_long": "Username must be less than 20 characters",
|
|
"empty_password": "Please enter your password",
|
|
"password_contains_username": "Your password should not contain your username",
|
|
"password_too_short": "Password must be at least 8 characters",
|
|
"mismatched_passwords": "Your passwords don't match"
|
|
},
|
|
"placeholders": {
|
|
"username": "Username",
|
|
"email": "Email address",
|
|
"password": "Password",
|
|
"password_confirm": "Password (again)"
|
|
}
|
|
},
|
|
"summon": {
|
|
"buttons": {
|
|
"remove": "Remove summon"
|
|
}
|
|
},
|
|
"weapon": {
|
|
"title": "Modify Weapon",
|
|
"buttons": {
|
|
"confirm": "Save weapon",
|
|
"remove": "Remove weapon"
|
|
},
|
|
"subtitles": {
|
|
"element": "Element",
|
|
"ax_skills": "AX Skills",
|
|
"awakening": "Awakening",
|
|
"weapon_keys": "Weapon Keys"
|
|
}
|
|
}
|
|
},
|
|
"page": {
|
|
"titles": {
|
|
"about": "About granblue.team",
|
|
"updates": "Updates / granblue.team",
|
|
"roadmap": "Roadmap / granblue.team",
|
|
"discover": "Discover teams / granblue.team",
|
|
"new": "Create a new team / granblue.team",
|
|
"profile": "@{{username}}'s Teams / granblue.team",
|
|
"team": "{{emoji}} {{teamName}} by {{username}} / granblue.team",
|
|
"saved": "Your saved teams / granblue.team"
|
|
},
|
|
"descriptions": {
|
|
"about": "More about granblue.team / Save and discover teams to use in Granblue Fantasy",
|
|
"updates": "Latest updates to granblue.team",
|
|
"roadmap": "Upcoming planned features for granblue.team",
|
|
"discover": "Save and discover teams to use in Granblue Fantasy and search by raid, element or recency",
|
|
"new": "Create and theorycraft teams to use in Granblue Fantasy and share with the community",
|
|
"profile": "Browse @{{username}}'s Teams and filter by raid, element or recency",
|
|
"team": "Browse this team for {{raidName}} by {{username}} and others on granblue.team"
|
|
}
|
|
},
|
|
"party": {
|
|
"segmented_control": {
|
|
"class": "Class",
|
|
"characters": "Characters",
|
|
"weapons": "Weapons",
|
|
"summons": "Summons"
|
|
},
|
|
"details": {
|
|
"labels": {
|
|
"charge_attack": "Charge Attack",
|
|
"full_auto": "Full Auto",
|
|
"auto_guard": "Auto Guard",
|
|
"turn_count": "Turn count",
|
|
"button_chain": "Buttons/Chains",
|
|
"clear_time": "Clear time"
|
|
},
|
|
"suffix": {
|
|
"buttons": "b",
|
|
"chains": "c",
|
|
"minutes": "m",
|
|
"seconds": "s"
|
|
},
|
|
"turns": {
|
|
"with_count_one": "{{count}} turn",
|
|
"with_count_other": "{{count}} turns"
|
|
}
|
|
}
|
|
},
|
|
"proficiencies": {
|
|
"sabre": "Sabre",
|
|
"dagger": "Dagger",
|
|
"spear": "Spear",
|
|
"axe": "Axe",
|
|
"staff": "Staff",
|
|
"gun": "Gun",
|
|
"melee": "Melee",
|
|
"bow": "Bow",
|
|
"harp": "Harp",
|
|
"katana": "Katana"
|
|
},
|
|
"raids": {
|
|
"placeholder": "Select a raid...",
|
|
"sections": {
|
|
"raids": "Raids",
|
|
"solo": "Solo",
|
|
"events": "Events"
|
|
}
|
|
},
|
|
"rarities": {
|
|
"r": "R",
|
|
"sr": "SR",
|
|
"ssr": "SSR"
|
|
},
|
|
"recency": {
|
|
"all_time": "All time",
|
|
"last_day": "Last day",
|
|
"last_week": "Last week",
|
|
"last_month": "Last month",
|
|
"last_3_months": "Last 3 months",
|
|
"last_6_months": "Last 6 months",
|
|
"last_year": "Last year"
|
|
},
|
|
"saved": {
|
|
"title": "Your saved Teams",
|
|
"loading": "Loading saved teams...",
|
|
"not_found": "You haven't saved any teams"
|
|
},
|
|
"search": {
|
|
"recent": "Recently added",
|
|
"result_count": "{{record_count}} results",
|
|
"errors": {
|
|
"start_typing": "Start typing the name of a {{object}}",
|
|
"min_length": "Type at least 3 characters",
|
|
"no_results": "No results found for '{{query}}'",
|
|
"end_results": "No more results"
|
|
},
|
|
"placeholders": {
|
|
"weapon": "Search for a weapon...",
|
|
"summon": "Search for a summon...",
|
|
"character": "Search for a character...",
|
|
"job_skill": "Search job skills...",
|
|
"guidebook": "Search guidebooks...",
|
|
"raid": "Search battles..."
|
|
}
|
|
},
|
|
"series": {
|
|
"seraphic": "Seraphic",
|
|
"grand": "Grand",
|
|
"opus": "Dark Opus",
|
|
"draconic": "Draconic",
|
|
"primal": "Primal",
|
|
"olden_primal": "Olden Primal",
|
|
"beast": "Beast",
|
|
"omega": "Omega",
|
|
"regalia": "Regalia",
|
|
"militis": "Militis",
|
|
"xeno": "Xeno",
|
|
"astral": "Astral",
|
|
"rose": "Rose",
|
|
"hollowsky": "Hollowsky",
|
|
"ultima": "Ultima",
|
|
"bahamut": "Bahamut",
|
|
"epic": "Epic",
|
|
"ennead": "Ennead",
|
|
"cosmic": "Cosmic",
|
|
"ancestral": "Ancestral",
|
|
"superlative": "Superlative",
|
|
"vintage": "Vintage",
|
|
"class_champion": "Class Champion",
|
|
"sephira": "Sephira",
|
|
"new_world": "New World Foundation",
|
|
"revenant": "Revenant",
|
|
"proving": "Proven",
|
|
"disaster": "Revans",
|
|
"illustrious": "Illustrious",
|
|
"world": "World"
|
|
},
|
|
"summons": {
|
|
"main": "Main Summon",
|
|
"friend": "Friend Summon",
|
|
"summons": "Summons",
|
|
"subaura": "Sub Aura Summons"
|
|
},
|
|
"teams": {
|
|
"title": "Discover Teams",
|
|
"loading": "Loading teams...",
|
|
"not_found": "No teams found"
|
|
},
|
|
"toasts": {
|
|
"copied": "This party's URL was copied to your clipboard",
|
|
"remixed": "You remixed {{title}}",
|
|
"update": {
|
|
"title": "New update",
|
|
"description": {
|
|
"content": "New items have been added from the latest Granblue Fantasy update.",
|
|
"feature": "Now you can remix other people's teams, add Character rings and earrings, set Shields and Manatura on teams, and more!"
|
|
},
|
|
"button": "Learn more"
|
|
}
|
|
},
|
|
"tokens": {
|
|
"remix": "Remixed"
|
|
},
|
|
"tooltips": {
|
|
"copy_url": "Copy the URL to this team",
|
|
"new": "Create a new team",
|
|
"remix": "Make a copy of this team",
|
|
"save": "Save this team to your account",
|
|
"source": "Go to original team"
|
|
},
|
|
"extra_weapons": "Additional Weapons",
|
|
"sephira_guidebooks": "Sephira Guidebooks",
|
|
"equipped": "Equipped",
|
|
"coming_soon": "Coming Soon",
|
|
"new_party": "New party",
|
|
"no_accessory": "No {{accessory}} equipped",
|
|
"no_title": "Untitled",
|
|
"no_raid": "No raid",
|
|
"no_user": "Anonymous",
|
|
"no_job": "No class",
|
|
"no_value": "No value",
|
|
"remixes": "Remixes",
|
|
"level": "Level"
|
|
}
|