From d2398014ea902938fa4d6352597ac6c1c6dd9466 Mon Sep 17 00:00:00 2001
From: dave
Date: Sat, 9 May 2026 18:05:27 +0800
Subject: [PATCH] Add Discord invite card
---
docs/index.html | 138 ++++++++++++++++++++++++++++--------------------
1 file changed, 81 insertions(+), 57 deletions(-)
diff --git a/docs/index.html b/docs/index.html
index 458b218..07e5d67 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -245,30 +245,6 @@
padding: 14px 16px 16px;
}
- .dropzone {
- display: grid;
- min-height: 128px;
- place-items: center;
- margin-bottom: 12px;
- border: 1px dashed var(--line-strong);
- border-radius: var(--radius);
- background: var(--surface-soft);
- color: var(--muted);
- text-align: center;
- }
-
- .dropzone.is-dragover {
- border-color: var(--accent);
- background: var(--accent-soft);
- color: var(--accent);
- }
-
- .dropzone strong {
- display: block;
- margin-bottom: 4px;
- color: var(--text);
- }
-
.session-guide {
margin: 0 0 12px;
padding: 13px 14px;
@@ -306,6 +282,71 @@
font-weight: 700;
}
+ .discord-card {
+ position: relative;
+ display: grid;
+ grid-template-columns: auto minmax(0, 1fr);
+ gap: 12px 14px;
+ align-items: start;
+ margin-bottom: 12px;
+ padding: 14px 14px 52px;
+ border: 1px solid rgba(88, 101, 242, 0.28);
+ border-radius: var(--radius);
+ background: #f3f5ff;
+ color: #243064;
+ text-decoration: none;
+ }
+
+ .discord-card:hover {
+ border-color: rgba(88, 101, 242, 0.5);
+ background: #eef1ff;
+ }
+
+ .discord-icon {
+ display: grid;
+ width: 44px;
+ height: 44px;
+ place-items: center;
+ border-radius: var(--radius);
+ background: #5865f2;
+ color: #fff;
+ }
+
+ .discord-icon svg {
+ width: 27px;
+ height: 27px;
+ fill: currentColor;
+ }
+
+ .discord-copy strong {
+ display: block;
+ margin-bottom: 4px;
+ color: #1f2a62;
+ font-size: 0.98rem;
+ line-height: 1.35;
+ }
+
+ .discord-copy span {
+ display: block;
+ color: #46517f;
+ font-size: 0.88rem;
+ line-height: 1.45;
+ }
+
+ .discord-action {
+ position: absolute;
+ right: 14px;
+ bottom: 14px;
+ min-height: 32px;
+ padding: 6px 12px;
+ border-radius: 6px;
+ background: #5865f2;
+ color: #fff;
+ font-weight: 800;
+ white-space: nowrap;
+ box-shadow: 0 8px 18px rgba(88, 101, 242, 0.22);
+ }
+
.input-actions {
display: flex;
flex-wrap: wrap;
@@ -530,6 +571,10 @@
grid-template-columns: 1fr;
}
+ .discord-card {
+ grid-template-columns: auto minmax(0, 1fr);
+ }
+
.col-expiry,
.col-type,
td:nth-child(3),
@@ -606,12 +651,18 @@
这段 JSON 包含 accessToken 和 sessionToken,等同敏感登录凭证,不要发给别人。
-
-
- 拖入 JSON 文件
- 也可以点击选择文件
-
-
+
+
+
+
+
+ Discord频道每日签到领取免费plus账号
+ 本工具主要针对 Plus 账号适用,Free 账号即使转换了也没有权限调用 GPT 模型。Plus 账号可以在 Discord 频道每日签到领取激活,然后配合本工具导入 CPA or Sub2API 使用。
+
+ 加入频道
+
@@ -704,7 +755,6 @@
copyOutput: document.querySelector("#copy-output"),
cpaNotice: document.querySelector("#cpa-notice"),
downloadOutput: document.querySelector("#download-output"),
- dropzone: document.querySelector("#dropzone"),
fileInput: document.querySelector("#file-input"),
formatButtons: Array.from(document.querySelectorAll("[data-format]")),
input: document.querySelector("#session-input"),
@@ -1425,7 +1475,6 @@
elements.copyOutput.addEventListener("click", copyOutput);
elements.downloadOutput.addEventListener("click", downloadOutput);
elements.pickFiles.addEventListener("click", () => elements.fileInput.click());
- elements.dropzone.addEventListener("click", () => elements.fileInput.click());
elements.fileInput.addEventListener("change", (event) => {
readFiles(event.target.files);
event.target.value = "";
@@ -1441,31 +1490,6 @@
scheduleConvert();
});
- ["dragenter", "dragover"].forEach((eventName) => {
- elements.dropzone.addEventListener(eventName, (event) => {
- event.preventDefault();
- elements.dropzone.classList.add("is-dragover");
- });
- });
-
- ["dragleave", "drop"].forEach((eventName) => {
- elements.dropzone.addEventListener(eventName, (event) => {
- event.preventDefault();
- elements.dropzone.classList.remove("is-dragover");
- });
- });
-
- elements.dropzone.addEventListener("drop", (event) => {
- readFiles(event.dataTransfer.files);
- });
-
- elements.dropzone.addEventListener("keydown", (event) => {
- if (event.key === "Enter" || event.key === " ") {
- event.preventDefault();
- elements.fileInput.click();
- }
- });
-
updateOutput();
})();