Files
metajs-customizer/index.html
T
xixu-me cf2b3f05df Fix spacing in GitHub link text
Removed extra space before closing the GitHub repository link in index.html for improved formatting.
2025-07-14 13:43:32 +08:00

297 lines
9.7 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<!-- Basic Meta Tags -->
<title>META.js Customizer - Create Custom META.js</title>
<meta
name="description"
content="Create your custom META.js with service rulesets from xixu-me/RFM. Easy-to-use web interface for generating META.js."
/>
<meta
name="keywords"
content="META.js, customizer, web development, service rulesets, RFM, xixu-me, favicons, JavaScript"
/>
<meta name="author" content="xixu-me" />
<!-- Open Graph / Facebook -->
<meta property="og:type" content="website" />
<meta property="og:url" content="https://metajs.xi-xu.me" />
<meta
property="og:title"
content="META.js Customizer - Create Custom META.js"
/>
<meta
property="og:description"
content="Create your custom META.js with service rulesets from xixu-me/RFM. Easy-to-use web interface for generating META.js."
/>
<meta property="og:site_name" content="META.js Customizer" />
<!-- Twitter -->
<meta name="twitter:url" content="https://metajs.xi-xu.me" />
<meta
name="twitter:title"
content="META.js Customizer - Create Custom META.js"
/>
<meta
name="twitter:description"
content="Create your custom META.js with service rulesets from xixu-me/RFM. Easy-to-use web interface for generating META.js."
/>
<meta name="twitter:creator" content="@xixu_me" />
<meta name="twitter:site" content="@xixu_me" />
<!-- Canonical URL -->
<link rel="canonical" href="https://metajs.xi-xu.me" />
<!-- Preconnect for Performance -->
<link rel="preconnect" href="https://cdnjs.cloudflare.com" />
<link rel="preconnect" href="https://api.github.com" />
<link rel="preconnect" href="https://raw.githubusercontent.com" />
<!-- Stylesheets -->
<link rel="stylesheet" href="src/styles/main.css" />
<link
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
rel="stylesheet"
/>
</head>
<body>
<!-- Theme Toggle -->
<div class="theme-toggle">
<button id="theme-toggle" aria-label="Toggle theme" title="Theme: Auto">
<i class="fas fa-circle-half-stroke"></i>
</button>
</div>
<!-- Main Container -->
<div class="container">
<!-- Header Section -->
<header class="header">
<h1>
<i class="fas fa-cogs" aria-hidden="true"></i>
META.js Customizer
</h1>
<p class="subtitle">
Create your custom META.js of
<a
href="https://github.com/xixu-me/META"
target="_blank"
rel="noopener"
>
<i class="fab fa-github" aria-hidden="true"></i> xixu-me/META
</a>
using service rulesets from
<a
href="https://github.com/xixu-me/RFM"
target="_blank"
rel="noopener"
>
<i class="fab fa-github" aria-hidden="true"></i> xixu-me/RFM
</a>
</p>
</header>
<!-- Services Configuration Section -->
<main>
<section
id="services-container"
class="card"
aria-labelledby="services-heading"
>
<div class="card-header">
<h2 id="services-heading">
<i class="fas fa-list" aria-hidden="true"></i>
Services Configuration
</h2>
</div>
<div class="card-content">
<!-- Routing Priority Information -->
<div
class="routing-priority-reminder"
role="note"
aria-label="Important routing information"
>
<i
class="fas fa-exclamation-triangle warning-icon"
aria-hidden="true"
></i>
<div class="content">
<strong>Routing Priority:</strong>
<span>
Routing rules are matched in order from top to bottom, with
the rule at the top of the list taking precedence over the
rules below it.
</span>
</div>
</div>
<!-- Services Controls -->
<div class="services-controls">
<div class="search-container">
<div class="search-input-wrapper">
<i class="fas fa-search search-icon" aria-hidden="true"></i>
<input
type="text"
id="search-input"
placeholder="Search and add services..."
aria-label="Search for services"
autocomplete="off"
spellcheck="false"
/>
</div>
<div class="services-count" role="status" aria-live="polite">
<i class="fas fa-check-circle" aria-hidden="true"></i>
<span id="selected-count">0 of 0 selected</span>
</div>
</div>
<!-- Search Results Dropdown -->
<div
id="search-results"
class="search-results"
role="listbox"
aria-label="Available services"
aria-hidden="true"
></div>
</div>
<!-- Selected Services List -->
<div
id="selected-services"
role="list"
aria-label="Selected services"
aria-describedby="services-description"
>
<div class="no-services">
<i class="fas fa-inbox" aria-hidden="true"></i>
<h3>No services selected</h3>
<p id="services-description">
Search for services above to get started
</p>
</div>
</div>
</div>
</section>
<!-- Generated Output Section -->
<section
id="output-container"
class="card"
aria-labelledby="output-heading"
>
<div class="card-header">
<h2 id="output-heading">
<i class="fas fa-code" aria-hidden="true"></i>
Generated META.js
</h2>
</div>
<div class="card-content">
<div class="output-actions">
<button
id="copyButton"
class="btn btn-primary"
disabled
aria-describedby="copy-description"
>
<i class="fas fa-copy" aria-hidden="true"></i>
Copy to Clipboard
</button>
<button
id="downloadButton"
class="btn btn-secondary"
disabled
aria-describedby="download-description"
>
<i class="fas fa-download" aria-hidden="true"></i>
Download META.js
</button>
</div>
<div class="sr-only">
<p id="copy-description">
Copy the generated META.js to your clipboard
</p>
<p id="download-description">
Download the generated META.js as a file
</p>
</div>
</div>
</section>
</main>
<!-- Information Section -->
<aside class="info-banner card" aria-labelledby="info-heading">
<div class="card-header">
<h2 id="info-heading">
<i class="fas fa-info-circle" aria-hidden="true"></i>
Icon Configuration Guide
</h2>
</div>
<div class="card-content">
<div class="info-content">
<p>
Service icons are sourced from
<a
href="https://github.com/xixu-me/favicons"
target="_blank"
rel="noopener"
>
<i class="fab fa-github" aria-hidden="true"></i>
xixu-me/favicons</a
>. Auto-generated configurations may require manual adjustments
based on availability.
</p>
<h3>
<i class="fas fa-cog" aria-hidden="true"></i>
Configuration Rules
</h3>
<ul>
<li>
<strong>Icon unavailable:</strong> Uses specific
<code>domain</code>
<span class="example"
>(e.g., "xiaohongshu.com" for rednote)</span
>
</li>
<li>
<strong>Name matches SLD:</strong> Uses only <code>tld</code>
<span class="example"
>(e.g., "github" → <code>tld: "com"</code>)</span
>
</li>
<li>
<strong>Name mismatch:</strong> Adds <code>sld</code>
<span class="example"
>(e.g., "xai" → <code>sld: "x", tld: "ai"</code>)</span
>
</li>
</ul>
</div>
</div>
</aside>
<!-- Footer -->
<footer class="footer">
<p>
<i class="fas fa-code-branch" aria-hidden="true"></i>
This web app is open source at
<a
href="https://github.com/xixu-me/META.js-Customizer"
target="_blank"
rel="noopener"
>
<i class="fab fa-github" aria-hidden="true"></i>
xixu-me/META.js-Customizer
</a>
</p>
</footer>
</div>
<!-- Scripts -->
<script src="src/templates/meta-template.js"></script>
<script type="module" src="src/scripts/app.js"></script>
</body>
</html>