206 lines
9.8 KiB
HTML
206 lines
9.8 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover" />
|
|
<title>Manager Center</title>
|
|
<link rel="stylesheet" href="./style.css?v=20260511-0109" />
|
|
</head>
|
|
<body>
|
|
<div class="manager-center" aria-label="Manager Center" data-i18n-aria="page_label" data-loading="true">
|
|
<nav class="title-bar">
|
|
<button class="back-button" type="button" aria-label="Back" data-i18n-aria="back">
|
|
<svg viewBox="0 0 32 32" aria-hidden="true">
|
|
<path d="M20 8 12 16l8 8" />
|
|
</svg>
|
|
</button>
|
|
<h1 data-i18n="title">Manager Center</h1>
|
|
<div class="language-switcher">
|
|
<button class="language-button" type="button" aria-label="Change language" data-i18n-aria="language_button_aria" aria-expanded="false">EN</button>
|
|
<div class="language-menu" hidden>
|
|
<button type="button" data-lang="en">EN</button>
|
|
<button type="button" data-lang="ar">AR</button>
|
|
<button type="button" data-lang="tr">TR</button>
|
|
<button type="button" data-lang="id">ID</button>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
|
|
<main class="content">
|
|
<section class="card profile-card">
|
|
<div class="avatar-shell">
|
|
<img id="managerAvatar" alt="" hidden />
|
|
<span id="managerAvatarFallback">M</span>
|
|
</div>
|
|
<div class="profile-copy">
|
|
<div class="eyebrow" data-i18n="current_manager">Current Manager</div>
|
|
<div class="name" id="managerName">-</div>
|
|
<div class="meta" id="managerUid">UID: -</div>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="card search-card">
|
|
<div class="section-head">
|
|
<h2 data-i18n="user">User</h2>
|
|
</div>
|
|
<form class="search-form" id="searchForm" autocomplete="off">
|
|
<input id="accountInput" type="text" inputmode="text" placeholder="Enter user ID or account" data-i18n-placeholder="user_search_placeholder" />
|
|
<button id="searchButton" type="submit" data-i18n="search">Search</button>
|
|
</form>
|
|
<div class="form-status" id="searchStatus" role="status" hidden></div>
|
|
</section>
|
|
|
|
<section class="card target-card" id="targetCard" hidden>
|
|
<div class="avatar-shell">
|
|
<img id="targetAvatar" alt="" hidden />
|
|
<span id="targetAvatarFallback">U</span>
|
|
</div>
|
|
<div class="profile-copy">
|
|
<div class="eyebrow" data-i18n="target_user">Target User</div>
|
|
<div class="name" id="targetName">-</div>
|
|
<div class="meta" id="targetUid">UID: -</div>
|
|
<div class="pill-row">
|
|
<span class="status-pill" id="targetAccountStatus">-</span>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="card action-card" id="actionCard" hidden>
|
|
<button class="action-item" id="giftEntryButton" type="button">
|
|
<span class="action-item-icon" aria-hidden="true">
|
|
<svg viewBox="0 0 24 24">
|
|
<path d="M20 12v8H4v-8" />
|
|
<path d="M2 7h20v5H2z" />
|
|
<path d="M12 22V7" />
|
|
<path d="M12 7H7.5a2.5 2.5 0 1 1 2.2-3.7L12 7Z" />
|
|
<path d="M12 7h4.5a2.5 2.5 0 1 0-2.2-3.7L12 7Z" />
|
|
</svg>
|
|
</span>
|
|
<span class="action-item-copy">
|
|
<span class="action-item-title" data-i18n="gift_props">Gift Props</span>
|
|
</span>
|
|
<svg class="action-item-arrow" viewBox="0 0 24 24" aria-hidden="true">
|
|
<path d="m9 6 6 6-6 6" />
|
|
</svg>
|
|
</button>
|
|
<button class="action-item is-danger" id="banEntryButton" type="button" disabled>
|
|
<span class="action-item-icon" aria-hidden="true">
|
|
<svg viewBox="0 0 24 24">
|
|
<circle cx="12" cy="12" r="9" />
|
|
<path d="m8 8 8 8" />
|
|
</svg>
|
|
</span>
|
|
<span class="action-item-copy">
|
|
<span class="action-item-title" data-i18n="ban_user">Ban User</span>
|
|
</span>
|
|
<svg class="action-item-arrow" viewBox="0 0 24 24" aria-hidden="true">
|
|
<path d="m9 6 6 6-6 6" />
|
|
</svg>
|
|
</button>
|
|
<button class="action-item" id="unbanEntryButton" type="button" disabled>
|
|
<span class="action-item-icon" aria-hidden="true">
|
|
<svg viewBox="0 0 24 24">
|
|
<path d="M12 3 20 7v5c0 5-3.4 8-8 9-4.6-1-8-4-8-9V7l8-4Z" />
|
|
<path d="m8.5 12.5 2.2 2.2 4.8-5" />
|
|
</svg>
|
|
</span>
|
|
<span class="action-item-copy">
|
|
<span class="action-item-title" data-i18n="unban_user">Unban User</span>
|
|
</span>
|
|
<svg class="action-item-arrow" viewBox="0 0 24 24" aria-hidden="true">
|
|
<path d="m9 6 6 6-6 6" />
|
|
</svg>
|
|
</button>
|
|
</section>
|
|
</main>
|
|
|
|
<div class="modal-mask" id="giftModal" role="dialog" aria-modal="true" aria-labelledby="giftModalTitle" hidden>
|
|
<section class="modal-sheet">
|
|
<div class="modal-head">
|
|
<h2 id="giftModalTitle" data-i18n="gift_props">Gift Props</h2>
|
|
<button class="modal-close" type="button" data-modal-close aria-label="Close" data-i18n-aria="close">
|
|
<svg viewBox="0 0 24 24" aria-hidden="true">
|
|
<path d="M6 6 18 18M18 6 6 18" />
|
|
</svg>
|
|
</button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<label class="field-label" id="propsTypeLabelText" data-i18n="gift_type">Gift Type</label>
|
|
<div class="custom-select" id="propsTypeSelect" data-value="RIDE">
|
|
<button
|
|
class="custom-select-button"
|
|
id="propsTypeButton"
|
|
type="button"
|
|
aria-expanded="false"
|
|
aria-haspopup="listbox"
|
|
aria-labelledby="propsTypeLabelText propsTypeSelectedLabel"
|
|
>
|
|
<span id="propsTypeSelectedLabel">Ride</span>
|
|
<svg viewBox="0 0 24 24" aria-hidden="true">
|
|
<path d="m7 9 5 5 5-5" />
|
|
</svg>
|
|
</button>
|
|
<div class="custom-select-menu" id="propsTypeMenu" role="listbox" aria-labelledby="propsTypeLabelText" hidden>
|
|
<button type="button" role="option" data-value="RIDE" data-i18n="prop_type_ride">Ride</button>
|
|
<button type="button" role="option" data-value="NOBLE_VIP" data-i18n="prop_type_noble_vip">Noble VIP</button>
|
|
<button type="button" role="option" data-value="AVATAR_FRAME" data-i18n="prop_type_avatar_frame">Avatar Frame</button>
|
|
<button type="button" role="option" data-value="BADGE" data-i18n="prop_type_badge">Badge</button>
|
|
<button type="button" role="option" data-value="CHAT_BUBBLE" data-i18n="prop_type_chat_bubble">Chat Bubble</button>
|
|
<button type="button" role="option" data-value="DATA_CARD" data-i18n="prop_type_data_card">Profile Card</button>
|
|
</div>
|
|
</div>
|
|
<div class="props-status" id="propsStatus" role="status" hidden></div>
|
|
<div class="props-list" id="propsList"></div>
|
|
<button class="primary-action" id="sendPropsButton" type="button" disabled data-i18n="send">Send</button>
|
|
</div>
|
|
</section>
|
|
</div>
|
|
|
|
<div class="modal-mask" id="banModal" role="dialog" aria-modal="true" aria-labelledby="banModalTitle" hidden>
|
|
<section class="modal-sheet">
|
|
<div class="modal-head">
|
|
<h2 id="banModalTitle" data-i18n="ban_user">Ban User</h2>
|
|
<button class="modal-close" type="button" data-modal-close aria-label="Close" data-i18n-aria="close">
|
|
<svg viewBox="0 0 24 24" aria-hidden="true">
|
|
<path d="M6 6 18 18M18 6 6 18" />
|
|
</svg>
|
|
</button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<span class="danger-chip" id="banEligibility">-</span>
|
|
<textarea id="banReason" maxlength="200" rows="3" placeholder="Ban reason" data-i18n-placeholder="ban_reason"></textarea>
|
|
<button class="danger-action" id="banButton" type="button" disabled data-i18n="ban">Ban</button>
|
|
<div class="form-status" id="banStatus" role="status" hidden></div>
|
|
</div>
|
|
</section>
|
|
</div>
|
|
|
|
<div class="modal-mask" id="unbanModal" role="dialog" aria-modal="true" aria-labelledby="unbanModalTitle" hidden>
|
|
<section class="modal-sheet">
|
|
<div class="modal-head">
|
|
<h2 id="unbanModalTitle" data-i18n="unban_user">Unban User</h2>
|
|
<button class="modal-close" type="button" data-modal-close aria-label="Close" data-i18n-aria="close">
|
|
<svg viewBox="0 0 24 24" aria-hidden="true">
|
|
<path d="M6 6 18 18M18 6 6 18" />
|
|
</svg>
|
|
</button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<span class="danger-chip" id="unbanEligibility">-</span>
|
|
<textarea id="unbanReason" maxlength="200" rows="3" placeholder="Unban reason" data-i18n-placeholder="unban_reason"></textarea>
|
|
<button class="primary-action" id="unbanButton" type="button" disabled data-i18n="unban">Unban</button>
|
|
<div class="form-status" id="unbanStatus" role="status" hidden></div>
|
|
</div>
|
|
</section>
|
|
</div>
|
|
|
|
<div class="loading-mask" id="loadingMask" role="status" aria-live="polite">
|
|
<div class="loader" aria-hidden="true"></div>
|
|
<span data-i18n="loading">Loading...</span>
|
|
</div>
|
|
<div class="toast" id="toast" role="status" hidden></div>
|
|
</div>
|
|
<script src="./script.js?v=20260511-0112" defer></script>
|
|
</body>
|
|
</html>
|