Landing: - Rewrote all landing copy (ru/en): removed the tracked-caps eyebrow chrome pattern everywhere, active-voice player-facing text - ThemeStrip: full-bleed live-recolored ClickGui window instead of a boxed swatch panel; HudPlayground: full-size real HUD screen - ShowcaseTeaser: dropped the fake "example" fallback cards, shows an honest empty state when there aren't 3 real configs yet - Fixed VoxelScene parallax leaking outside the hero into the HUD section Data accuracy: the module list/counts advertised InvisESP, BlockESP and FakeLag — all three were removed from the mod earlier this session as cheat modules. Corrected the catalogue and the 88/52 module-count claims to the real 86/50. Design QOL pass: removed the same eyebrow-label chrome from the site footer; replaced plausible-looking fake share codes (howItWorks demo slots, the chat command typing demo) with an explicit placeholder string so they read as illustration, not fabricated real data. Perf: promoted .lv-lower-bg onto its own compositor layer (will-change/translateZ) — a full-height, multi-gradient, masked, continuously-animated background layer was repainting on every scroll tick in Safari. Claude-Session: https://claude.ai/code/session_01F1M1Jic1wTSn4igUENynmZ
67 lines
2.9 KiB
TypeScript
67 lines
2.9 KiB
TypeScript
// In-game catalogue shown by the ClickGui replica: the mod's `@ModuleInfo` display names grouped
|
|
// the way `ModulesMenuCategory` groups them (MISC is shown as "Other"), sorted like the in-game
|
|
// list. Names are the mod's own labels and stay untranslated.
|
|
|
|
export type CategoryId = 'combat' | 'player' | 'visuals' | 'other'
|
|
|
|
export type GuiModule = { name: string; on?: boolean }
|
|
|
|
export type Category = { id: CategoryId; name: string; modules: GuiModule[] }
|
|
|
|
const list = (names: string[], on: string[] = []): GuiModule[] =>
|
|
[...names]
|
|
.sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase(), 'en'))
|
|
.map((name) => (on.includes(name) ? { name, on: true } : { name }))
|
|
|
|
export const CATEGORIES: Category[] = [
|
|
{
|
|
id: 'combat',
|
|
name: 'Combat',
|
|
modules: list(
|
|
['CombatLog', 'DamageTint', 'No Friend Damage', 'Predictions', 'ProjectilePuncher', 'RubberHand', 'SpearAssist', 'TargetESP', 'TPSSync'],
|
|
['No Friend Damage', 'Predictions', 'TargetESP'],
|
|
),
|
|
},
|
|
{
|
|
id: 'player',
|
|
name: 'Player',
|
|
modules: list(
|
|
['Auto Accept', 'Auto Leave', 'Auto Respawn', 'AutoTool', 'ClickPearl', 'Death Coords', 'Lock Slot', 'NoDelay',
|
|
'NoInteract', 'Tape Mouse', 'Third Person', 'Use Tracker'],
|
|
['Auto Accept'],
|
|
),
|
|
},
|
|
{
|
|
id: 'visuals',
|
|
name: 'Visuals',
|
|
modules: list(
|
|
['AlwaysVisibleHand', 'AmbientParticles', 'Animations', 'AspectRatio', 'AtmoDawnFog', 'BackSword', 'BlockHighlight',
|
|
'CameraClip', 'Chams', 'ChinaHat', 'Crosshair', 'CrystalHoles', 'DropESP', 'EndCrystal', 'ESP', 'FovControl', 'FPS Optimizer',
|
|
'Freecam', 'FullBright', 'Gps', 'Hitboxes', 'HitBubbles', 'HitEffect', 'Item Holder', 'Item Physic', 'JumpCircles',
|
|
'KillEffect', 'KineticLyrics', 'Light', 'Lightning Target ESP', 'MotionBlur', 'NameTags', 'NoRender', 'PostFX', 'Rain',
|
|
'ReimaginedVisual', 'ShaderSky', 'Shulker Preview', 'SoundESP', 'TazikHat', 'TotemFX', 'Trails', 'Trinket', 'Trollface Mask',
|
|
'ViewModel', 'Wet World', 'Wings', 'WorldParticles', 'WorldTweaks', 'Zoom'],
|
|
['Chams'],
|
|
),
|
|
},
|
|
{
|
|
id: 'other',
|
|
name: 'Other',
|
|
modules: list(
|
|
['Balancer', 'BetterMinecraft', 'ClickGUI', 'DefineTarget', 'FakePlayer', 'HitSounds', 'Item Scroller', 'MessageFilter',
|
|
'Name Protect', 'No Server Pack', 'NoSound', 'Optimize', 'PvpCooldowns', 'ShitESP', 'Streamer Mode'],
|
|
['ClickGUI'],
|
|
),
|
|
},
|
|
]
|
|
|
|
/** The pill bar's two segments — in-game labels. */
|
|
export const TABS = ['modules', 'settings'] as const
|
|
export type TabId = (typeof TABS)[number]
|
|
|
|
/** Presets the scripted demo cycles through (all sit in the first rows of the theme grid). */
|
|
export const QUICK_THEMES = ['amber', 'purple', 'blue', 'classic'] as const
|
|
|
|
/** The settings sidebar, top to bottom; `null` draws a divider. Only "themes" has a page. */
|
|
export const SIDEBAR = ['hud', 'ui', 'themes', null, 'layout', 'account', null, 'configs'] as const
|
|
export type SidebarId = Exclude<(typeof SIDEBAR)[number], null>
|