drops-mcp 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +40 -0
- package/SETUP.md +83 -0
- package/SKILL.md +93 -0
- package/brand/badge.html +15 -0
- package/brand/brand.json +13 -0
- package/brand/download-page.html +110 -0
- package/brand/favicon.png +0 -0
- package/brand/gate.html +327 -0
- package/brand/logo-black.png +0 -0
- package/brand/logo-white.png +0 -0
- package/brand/meta.html +13 -0
- package/drop.mjs +745 -0
- package/install.mjs +70 -0
- package/mcp.mjs +145 -0
- package/package.json +37 -0
package/brand/gate.html
ADDED
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html class="staticrypt-html" lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<title>/*[|template_title|]*/0</title>
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
7
|
+
<link rel="icon" href="__DROP_FAVICON__" />
|
|
8
|
+
__DROP_META__
|
|
9
|
+
|
|
10
|
+
<!-- do not cache this page -->
|
|
11
|
+
<meta http-equiv="cache-control" content="max-age=0" />
|
|
12
|
+
<meta http-equiv="cache-control" content="no-cache" />
|
|
13
|
+
<meta http-equiv="expires" content="0" />
|
|
14
|
+
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
|
|
15
|
+
<meta http-equiv="pragma" content="no-cache" />
|
|
16
|
+
|
|
17
|
+
<style>
|
|
18
|
+
:root {
|
|
19
|
+
--drop-primary: #ff6b35;
|
|
20
|
+
--drop-primary-strong: #c2410c;
|
|
21
|
+
--drop-primary-hover: #9a3412;
|
|
22
|
+
--drop-accent: #ea580c;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
* { box-sizing: border-box; }
|
|
26
|
+
|
|
27
|
+
.staticrypt-html { height: 100%; }
|
|
28
|
+
|
|
29
|
+
.staticrypt-body {
|
|
30
|
+
height: 100%;
|
|
31
|
+
margin: 0;
|
|
32
|
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
|
33
|
+
-webkit-font-smoothing: antialiased;
|
|
34
|
+
-moz-osx-font-smoothing: grayscale;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.staticrypt-content {
|
|
38
|
+
height: 100%;
|
|
39
|
+
margin-bottom: 0;
|
|
40
|
+
background:
|
|
41
|
+
radial-gradient(1200px 600px at 50% -10%, rgba(255, 107, 53, 0.22), transparent 60%),
|
|
42
|
+
radial-gradient(900px 500px at 90% 110%, rgba(234, 88, 12, 0.16), transparent 60%),
|
|
43
|
+
#0b0b0d;
|
|
44
|
+
color: #f5f5f5;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.staticrypt-page {
|
|
48
|
+
width: 100%;
|
|
49
|
+
max-width: 400px;
|
|
50
|
+
padding: 8% 16px 0;
|
|
51
|
+
margin: auto;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.drop-logo {
|
|
55
|
+
display: block;
|
|
56
|
+
height: 40px;
|
|
57
|
+
margin: 0 auto 26px;
|
|
58
|
+
opacity: 0.95;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.staticrypt-form {
|
|
62
|
+
position: relative;
|
|
63
|
+
z-index: 1;
|
|
64
|
+
background: rgba(255, 255, 255, 0.06);
|
|
65
|
+
border: 1px solid rgba(255, 255, 255, 0.1);
|
|
66
|
+
border-radius: 18px;
|
|
67
|
+
max-width: 400px;
|
|
68
|
+
margin: 0 auto 100px;
|
|
69
|
+
padding: 34px 30px 30px;
|
|
70
|
+
text-align: center;
|
|
71
|
+
backdrop-filter: blur(18px) saturate(160%);
|
|
72
|
+
-webkit-backdrop-filter: blur(18px) saturate(160%);
|
|
73
|
+
box-shadow: 0 18px 60px -20px rgba(0, 0, 0, 0.7), inset 0 0.5px 0 rgba(255, 255, 255, 0.12);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.staticrypt-instructions { margin: 0 0 6px; }
|
|
77
|
+
|
|
78
|
+
.staticrypt-title {
|
|
79
|
+
font-size: 1.35em;
|
|
80
|
+
font-weight: 650;
|
|
81
|
+
margin: 0 0 6px;
|
|
82
|
+
letter-spacing: -0.01em;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.staticrypt-instructions p:last-child {
|
|
86
|
+
margin: 0;
|
|
87
|
+
color: rgba(245, 245, 245, 0.62);
|
|
88
|
+
font-size: 0.92em;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.staticrypt-hr {
|
|
92
|
+
margin: 20px 0;
|
|
93
|
+
border: 0;
|
|
94
|
+
border-top: 1px solid rgba(255, 255, 255, 0.08);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.staticrypt-password-container {
|
|
98
|
+
position: relative;
|
|
99
|
+
background: rgba(0, 0, 0, 0.28);
|
|
100
|
+
border: 1px solid rgba(255, 255, 255, 0.12);
|
|
101
|
+
border-radius: 11px;
|
|
102
|
+
width: 100%;
|
|
103
|
+
margin: 0 0 14px;
|
|
104
|
+
overflow: hidden;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.staticrypt-form input[type="password"],
|
|
108
|
+
.staticrypt-form input[type="text"] {
|
|
109
|
+
background: transparent;
|
|
110
|
+
border: 0;
|
|
111
|
+
color: #fff;
|
|
112
|
+
font-size: 15px;
|
|
113
|
+
outline: 0;
|
|
114
|
+
padding: 15px 46px 15px 16px;
|
|
115
|
+
width: 100%;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.staticrypt-form input::placeholder { color: rgba(245, 245, 245, 0.4); }
|
|
119
|
+
|
|
120
|
+
.staticrypt-toggle-password-visibility {
|
|
121
|
+
cursor: pointer;
|
|
122
|
+
height: 20px;
|
|
123
|
+
width: 20px;
|
|
124
|
+
opacity: 0.55;
|
|
125
|
+
padding: 13px;
|
|
126
|
+
position: absolute;
|
|
127
|
+
right: 0;
|
|
128
|
+
top: 50%;
|
|
129
|
+
transform: translateY(-50%);
|
|
130
|
+
filter: invert(1);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.staticrypt-form .staticrypt-decrypt-button {
|
|
134
|
+
text-transform: uppercase;
|
|
135
|
+
letter-spacing: 0.04em;
|
|
136
|
+
outline: 0;
|
|
137
|
+
background: linear-gradient(135deg, var(--drop-primary), var(--drop-accent));
|
|
138
|
+
width: 100%;
|
|
139
|
+
border: 0;
|
|
140
|
+
border-radius: 11px;
|
|
141
|
+
padding: 15px;
|
|
142
|
+
color: #fff;
|
|
143
|
+
font-size: 14px;
|
|
144
|
+
font-weight: 650;
|
|
145
|
+
cursor: pointer;
|
|
146
|
+
transition: filter 0.15s ease, transform 0.05s ease;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
.staticrypt-form .staticrypt-decrypt-button:hover { filter: brightness(108%); }
|
|
150
|
+
.staticrypt-form .staticrypt-decrypt-button:active { transform: translateY(1px); }
|
|
151
|
+
|
|
152
|
+
label.staticrypt-remember {
|
|
153
|
+
display: flex;
|
|
154
|
+
align-items: center;
|
|
155
|
+
margin-bottom: 1em;
|
|
156
|
+
color: rgba(245, 245, 245, 0.7);
|
|
157
|
+
font-size: 0.9em;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
.staticrypt-remember input[type="checkbox"] {
|
|
161
|
+
accent-color: var(--drop-primary);
|
|
162
|
+
transform: scale(1.4);
|
|
163
|
+
margin-right: 1em;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
.drop-footer {
|
|
167
|
+
text-align: center;
|
|
168
|
+
margin: 22px 0 0;
|
|
169
|
+
font-size: 0.78em;
|
|
170
|
+
color: rgba(245, 245, 245, 0.4);
|
|
171
|
+
}
|
|
172
|
+
.drop-footer a { color: rgba(255, 107, 53, 0.85); text-decoration: none; }
|
|
173
|
+
|
|
174
|
+
.hidden { display: none !important; }
|
|
175
|
+
|
|
176
|
+
.staticrypt-spinner-container {
|
|
177
|
+
height: 100%;
|
|
178
|
+
display: flex;
|
|
179
|
+
align-items: center;
|
|
180
|
+
justify-content: center;
|
|
181
|
+
background: #0b0b0d;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
.staticrypt-spinner {
|
|
185
|
+
display: inline-block;
|
|
186
|
+
width: 2rem;
|
|
187
|
+
height: 2rem;
|
|
188
|
+
border: 0.25em solid rgba(255, 107, 53, 0.35);
|
|
189
|
+
border-right-color: transparent;
|
|
190
|
+
border-radius: 50%;
|
|
191
|
+
animation: spinner-border 0.75s linear infinite;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
@keyframes spinner-border {
|
|
195
|
+
100% { transform: rotate(360deg); }
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
@media screen and (-webkit-min-device-pixel-ratio: 0) {
|
|
199
|
+
.staticrypt-form input[type="password"],
|
|
200
|
+
.staticrypt-form input[type="text"] { font-size: 16px; }
|
|
201
|
+
}
|
|
202
|
+
</style>
|
|
203
|
+
</head>
|
|
204
|
+
|
|
205
|
+
<body class="staticrypt-body">
|
|
206
|
+
<div id="staticrypt_loading" class="staticrypt-spinner-container">
|
|
207
|
+
<div class="staticrypt-spinner"></div>
|
|
208
|
+
</div>
|
|
209
|
+
|
|
210
|
+
<div id="staticrypt_content" class="staticrypt-content hidden">
|
|
211
|
+
<div class="staticrypt-page">
|
|
212
|
+
<img class="drop-logo" src="__DROP_LOGO__" alt="logo" />
|
|
213
|
+
<div class="staticrypt-form">
|
|
214
|
+
<div class="staticrypt-instructions">
|
|
215
|
+
<p class="staticrypt-title">/*[|template_title|]*/0</p>
|
|
216
|
+
<p>/*[|template_instructions|]*/0</p>
|
|
217
|
+
</div>
|
|
218
|
+
|
|
219
|
+
<hr class="staticrypt-hr" />
|
|
220
|
+
|
|
221
|
+
<form id="staticrypt-form" action="#" method="post">
|
|
222
|
+
<div class="staticrypt-password-container">
|
|
223
|
+
<input
|
|
224
|
+
id="staticrypt-password"
|
|
225
|
+
type="password"
|
|
226
|
+
name="password"
|
|
227
|
+
placeholder="/*[|template_placeholder|]*/0"
|
|
228
|
+
autofocus
|
|
229
|
+
/>
|
|
230
|
+
|
|
231
|
+
<img
|
|
232
|
+
class="staticrypt-toggle-password-visibility"
|
|
233
|
+
alt="/*[|template_toggle_show|]*/0"
|
|
234
|
+
title="/*[|template_toggle_show|]*/0"
|
|
235
|
+
src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NDAgNTEyIj48IS0tIUZvbnQgQXdlc29tZSBGcmVlIDYuNS4yIGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlL2ZyZWUgQ29weXJpZ2h0IDIwMjQgRm9udGljb25zLCBJbmMuLS0+PHBhdGggZD0iTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMNTI1LjYgMzg2LjdjMzkuNi00MC42IDY2LjQtODYuMSA3OS45LTExOC40YzMuMy03LjkgMy4zLTE2LjcgMC0yNC42Yy0xNC45LTM1LjctNDYuMi04Ny43LTkzLTEzMS4xQzQ2NS41IDY4LjggNDAwLjggMzIgMzIwIDMyYy02OC4yIDAtMTI1IDI2LjMtMTY5LjMgNjAuOEwzOC44IDUuMXpNMjIzLjEgMTQ5LjVDMjQ4LjYgMTI2LjIgMjgyLjcgMTEyIDMyMCAxMTJjNzkuNSAwIDE0NCA2NC41IDE0NCAxNDRjMCAyNC45LTYuMyA0OC4zLTE3LjQgNjguN0w0MDggMjk0LjVjOC40LTE5LjMgMTAuNi00MS40IDQuOC02My4zYy0xMS4xLTQxLjUtNDcuOC02OS40LTg4LjYtNzEuMWMtNS44LS4yLTkuMiA2LjEtNy40IDExLjdjMi4xIDYuNCAzLjMgMTMuMiAzLjMgMjAuM2MwIDEwLjItMi40IDE5LjgtNi42IDI4LjNsLTkwLjMtNzAuOHpNMzczIDM4OS45Yy0xNi40IDYuNS0zNC4zIDEwLjEtNTMgMTAuMWMtNzkuNSAwLTE0NC02NC41LTE0NC0xNDRjMC02LjkgLjUtMTMuNiAxLjQtMjAuMkw4My4xIDE2MS41QzYwLjMgMTkxLjIgNDQgMjIwLjggMzQuNSAyNDMuN2MtMy4zIDcuOS0zLjMgMTYuNyAwIDI0LjZjMTQuOSAzNS43IDQ2LjIgODcuNyA5MyAxMzEuMUMxNzQuNSA0NDMuMiAyMzkuMiA0ODAgMzIwIDQ4MGM0Ny44IDAgODkuOS0xMi45IDEyNi4yLTMyLjVMMzczIDM4OS45eiIvPjwvc3ZnPg=="
|
|
236
|
+
/>
|
|
237
|
+
</div>
|
|
238
|
+
|
|
239
|
+
<label id="staticrypt-remember-label" class="staticrypt-remember hidden">
|
|
240
|
+
<input id="staticrypt-remember" type="checkbox" name="remember" />
|
|
241
|
+
/*[|template_remember|]*/0
|
|
242
|
+
</label>
|
|
243
|
+
|
|
244
|
+
<input type="submit" class="staticrypt-decrypt-button" value="/*[|template_button|]*/0" />
|
|
245
|
+
</form>
|
|
246
|
+
</div>
|
|
247
|
+
<p class="drop-footer">Shared via <a href="https://__DROP_DOMAIN__">__DROP_DOMAIN__</a></p>
|
|
248
|
+
</div>
|
|
249
|
+
</div>
|
|
250
|
+
|
|
251
|
+
<script>
|
|
252
|
+
// these variables will be filled when generating the file - the template format is '/*[|variable_name|]*/0'
|
|
253
|
+
const staticryptInitiator = /*[|js_staticrypt|]*/ 0;
|
|
254
|
+
const templateError = "/*[|template_error|]*/0",
|
|
255
|
+
templateToggleAltShow = "/*[|template_toggle_show|]*/0",
|
|
256
|
+
templateToggleAltHide = "/*[|template_toggle_hide|]*/0",
|
|
257
|
+
isRememberEnabled = /*[|is_remember_enabled|]*/ 0,
|
|
258
|
+
staticryptConfig = /*[|staticrypt_config|]*/ 0;
|
|
259
|
+
|
|
260
|
+
// you can edit these values to customize some of the behavior of StatiCrypt
|
|
261
|
+
const templateConfig = {
|
|
262
|
+
rememberExpirationKey: "staticrypt_expiration",
|
|
263
|
+
rememberPassphraseKey: "staticrypt_passphrase",
|
|
264
|
+
replaceHtmlCallback: null,
|
|
265
|
+
clearLocalStorageCallback: null,
|
|
266
|
+
};
|
|
267
|
+
|
|
268
|
+
// init the staticrypt engine
|
|
269
|
+
const staticrypt = staticryptInitiator.init(staticryptConfig, templateConfig);
|
|
270
|
+
|
|
271
|
+
// try to automatically decrypt on load if there is a saved password
|
|
272
|
+
window.onload = async function () {
|
|
273
|
+
const { isSuccessful } = await staticrypt.handleDecryptOnLoad();
|
|
274
|
+
|
|
275
|
+
// if we didn't decrypt anything on load, show the password prompt. Otherwise the content has already been
|
|
276
|
+
// replaced, no need to do anything
|
|
277
|
+
if (!isSuccessful) {
|
|
278
|
+
// hide loading screen
|
|
279
|
+
document.getElementById("staticrypt_loading").classList.add("hidden");
|
|
280
|
+
document.getElementById("staticrypt_content").classList.remove("hidden");
|
|
281
|
+
document.getElementById("staticrypt-password").focus();
|
|
282
|
+
|
|
283
|
+
// show the remember me checkbox
|
|
284
|
+
if (isRememberEnabled) {
|
|
285
|
+
document.getElementById("staticrypt-remember-label").classList.remove("hidden");
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
};
|
|
289
|
+
|
|
290
|
+
// toggle password visibility
|
|
291
|
+
const toggleIcon = document.querySelector(".staticrypt-toggle-password-visibility");
|
|
292
|
+
// these two icons are coming from FontAwesome
|
|
293
|
+
const imgSrcEyeClosed =
|
|
294
|
+
"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NDAgNTEyIj48IS0tIUZvbnQgQXdlc29tZSBGcmVlIDYuNS4yIGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlL2ZyZWUgQ29weXJpZ2h0IDIwMjQgRm9udGljb25zLCBJbmMuLS0+PHBhdGggZD0iTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMNTI1LjYgMzg2LjdjMzkuNi00MC42IDY2LjQtODYuMSA3OS45LTExOC40YzMuMy03LjkgMy4zLTE2LjcgMC0yNC42Yy0xNC45LTM1LjctNDYuMi04Ny43LTkzLTEzMS4xQzQ2NS41IDY4LjggNDAwLjggMzIgMzIwIDMyYy02OC4yIDAtMTI1IDI2LjMtMTY5LjMgNjAuOEwzOC44IDUuMXpNMjIzLjEgMTQ5LjVDMjQ4LjYgMTI2LjIgMjgyLjcgMTEyIDMyMCAxMTJjNzkuNSAwIDE0NCA2NC41IDE0NCAxNDRjMCAyNC45LTYuMyA0OC4zLTE3LjQgNjguN0w0MDggMjk0LjVjOC40LTE5LjMgMTAuNi00MS40IDQuOC02My4zYy0xMS4xLTQxLjUtNDcuOC02OS40LTg4LjYtNzEuMWMtNS44LS4yLTkuMiA2LjEtNy40IDExLjdjMi4xIDYuNCAzLjMgMTMuMiAzLjMgMjAuM2MwIDEwLjItMi40IDE5LjgtNi42IDI4LjNsLTkwLjMtNzAuOHpNMzczIDM4OS45Yy0xNi40IDYuNS0zNC4zIDEwLjEtNTMgMTAuMWMtNzkuNSAwLTE0NC02NC41LTE0NC0xNDRjMC02LjkgLjUtMTMuNiAxLjQtMjAuMkw4My4xIDE2MS41QzYwLjMgMTkxLjIgNDQgMjIwLjggMzQuNSAyNDMuN2MtMy4zIDcuOS0zLjMgMTYuNyAwIDI0LjZjMTQuOSAzNS43IDQ2LjIgODcuNyA5MyAxMzEuMUMxNzQuNSA0NDMuMiAyMzkuMiA0ODAgMzIwIDQ4MGM0Ny44IDAgODkuOS0xMi45IDEyNi4yLTMyLjVMMzczIDM4OS45eiIvPjwvc3ZnPg==";
|
|
295
|
+
const imgSrcEyeOpened =
|
|
296
|
+
"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1NzYgNTEyIj48IS0tIUZvbnQgQXdlc29tZSBGcmVlIDYuNS4yIGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlL2ZyZWUgQ29weXJpZ2h0IDIwMjQgRm9udGljb25zLCBJbmMuLS0+PHBhdGggZD0iTTI4OCAzMmMtODAuOCAwLTE0NS41IDM2LjgtMTkyLjYgODAuNkM0OC42IDE1NiAxNy4zIDIwOCAyLjUgMjQzLjdjLTMuMyA3LjktMy4zIDE2LjcgMCAyNC42QzE3LjMgMzA0IDQ4LjYgMzU2IDk1LjQgMzk5LjRDMTQyLjUgNDQzLjIgMjA3LjIgNDgwIDI4OCA0ODBzMTQ1LjUtMzYuOCAxOTIuNi04MC42YzQ2LjgtNDMuNSA3OC4xLTk1LjQgOTMtMTMxLjFjMy4zLTcuOSAzLjMtMTYuNyAwLTI0LjZjLTE0LjktMzUuNy00Ni4yLTg3LjctOTMtMTMxLjFDNDMzLjUgNjguOCAzNjguOCAzMiAyODggMzJ6TTE0NCAyNTZhMTQ0IDE0NCAwIDEgMSAyODggMCAxNDQgMTQ0IDAgMSAxIC0yODggMHptMTQ0LTY0YzAgMzUuMy0yOC43IDY0LTY0IDY0Yy03LjEgMC0xMy45LTEuMi0yMC4zLTMuM2MtNS41LTEuOC0xMS45IDEuNi0xMS43IDcuNGMuMyA2LjkgMS4zIDEzLjggMy4yIDIwLjdjMTMuNyA1MS4yIDY2LjQgODEuNiAxMTcuNiA2Ny45czgxLjYtNjYuNCA2Ny45LTExNy42Yy0xMS4xLTQxLjUtNDcuOC02OS40LTg4LjYtNzEuMWMtNS44LS4yLTkuMiA2LjEtNy40IDExLjdjMi4xIDYuNCAzLjMgMTMuMiAzLjMgMjAuM3oiLz48L3N2Zz4=";
|
|
297
|
+
toggleIcon.addEventListener("click", function () {
|
|
298
|
+
const passwordInput = document.getElementById("staticrypt-password");
|
|
299
|
+
if (passwordInput.type === "password") {
|
|
300
|
+
passwordInput.type = "text";
|
|
301
|
+
toggleIcon.src = imgSrcEyeOpened;
|
|
302
|
+
toggleIcon.alt = templateToggleAltHide;
|
|
303
|
+
toggleIcon.title = templateToggleAltHide;
|
|
304
|
+
} else {
|
|
305
|
+
passwordInput.type = "password";
|
|
306
|
+
toggleIcon.src = imgSrcEyeClosed;
|
|
307
|
+
toggleIcon.alt = templateToggleAltShow;
|
|
308
|
+
toggleIcon.title = templateToggleAltShow;
|
|
309
|
+
}
|
|
310
|
+
});
|
|
311
|
+
|
|
312
|
+
// handle password form submission
|
|
313
|
+
document.getElementById("staticrypt-form").addEventListener("submit", async function (e) {
|
|
314
|
+
e.preventDefault();
|
|
315
|
+
|
|
316
|
+
const password = document.getElementById("staticrypt-password").value,
|
|
317
|
+
isRememberChecked = document.getElementById("staticrypt-remember").checked;
|
|
318
|
+
|
|
319
|
+
const { isSuccessful } = await staticrypt.handleDecryptionOfPage(password, isRememberChecked);
|
|
320
|
+
|
|
321
|
+
if (!isSuccessful) {
|
|
322
|
+
alert(templateError);
|
|
323
|
+
}
|
|
324
|
+
});
|
|
325
|
+
</script>
|
|
326
|
+
</body>
|
|
327
|
+
</html>
|
|
Binary file
|
|
Binary file
|
package/brand/meta.html
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<!-- drop: branded head meta + favicon + link-preview card (injected into <head>) -->
|
|
2
|
+
<link rel="icon" href="__DROP_FAVICON__" />
|
|
3
|
+
<meta property="og:type" content="website" />
|
|
4
|
+
<meta property="og:site_name" content="__DROP_DOMAIN__" />
|
|
5
|
+
<meta property="og:title" content="__DROP_TITLE__" />
|
|
6
|
+
<meta property="og:description" content="Shared securely via __DROP_DOMAIN__" />
|
|
7
|
+
<meta property="og:url" content="__DROP_URL__" />
|
|
8
|
+
<meta property="og:image" content="__DROP_OG_IMAGE__" />
|
|
9
|
+
<meta name="twitter:card" content="summary" />
|
|
10
|
+
<meta name="twitter:title" content="__DROP_TITLE__" />
|
|
11
|
+
<meta name="twitter:description" content="Shared securely via __DROP_DOMAIN__" />
|
|
12
|
+
<meta name="twitter:image" content="__DROP_OG_IMAGE__" />
|
|
13
|
+
<meta name="theme-color" content="#ff6b35" />
|