mirror of
https://github.com/nexu-io/open-design.git
synced 2026-10-27 09:51:12 +01:00
- Updated the `sortByVisualAppeal` function to prioritize featured ranks, ensuring that curated plugins are displayed prominently. - Added tests to verify the new sorting logic, ensuring that plugins with numeric featured ranks are sorted correctly ahead of others. - Introduced new example templates for a magazine article layout, a Twitter share card, and a Xiaohongshu card, expanding the available options for users. - Enhanced the overall plugin preview experience by integrating these new templates, providing users with more visually appealing and functional examples. This update significantly improves the plugin sorting mechanism and enriches the template offerings, enhancing user engagement and experience.
100 lines
4.8 KiB
HTML
100 lines
4.8 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="UTF-8" />
|
||
<title>Glitch Title · SIGNAL_LOST</title>
|
||
<script src="https://cdn.tailwindcss.com"></script>
|
||
<link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@500;700;800&family=JetBrains+Mono:wght@400;700&display=swap" rel="stylesheet" />
|
||
<style>
|
||
body { font-family:'Space Grotesk',sans-serif; background:#0d0e10; color:#f5f5f7; margin:0; min-height:100vh; overflow:hidden; position:relative; }
|
||
.mono { font-family:'JetBrains Mono',monospace; }
|
||
/* scanlines */
|
||
body::before {
|
||
content:''; position:absolute; inset:0; pointer-events:none; z-index:3;
|
||
background-image: repeating-linear-gradient(0deg, rgba(0,0,0,0.18) 0px, rgba(0,0,0,0.18) 1px, transparent 1px, transparent 3px);
|
||
mix-blend-mode: multiply; opacity:0.6;
|
||
}
|
||
/* grid */
|
||
body::after {
|
||
content:''; position:absolute; inset:0; pointer-events:none; z-index:2;
|
||
background-image: linear-gradient(rgba(0,255,180,0.04) 1px, transparent 1px), linear-gradient(90deg,rgba(0,255,180,0.04) 1px, transparent 1px);
|
||
background-size: 56px 56px;
|
||
}
|
||
/* grain */
|
||
.grain { position:absolute; inset:0; opacity:0.1; mix-blend-mode:overlay; z-index:4; pointer-events:none;
|
||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23n)'/%3E%3C/svg%3E"); }
|
||
@keyframes glitch {
|
||
0%, 92%, 100% { transform: translate(0,0); filter: none }
|
||
93% { transform: translate(-6px, 1px); filter: url(#rgb) }
|
||
94% { transform: translate(8px, -2px); filter: url(#rgb) }
|
||
95% { transform: translate(-4px, 2px); }
|
||
96% { transform: translate(4px, -1px); filter: url(#rgb) }
|
||
97% { transform: translate(0,0) }
|
||
}
|
||
.glitch-host { position:relative; animation: glitch 4s infinite; }
|
||
.layer { position:absolute; inset:0; mix-blend-mode:screen; }
|
||
.layer-c { color:#00f0ff; transform: translate(-3px, 1px); }
|
||
.layer-m { color:#ff2bd6; transform: translate(3px, -1px); }
|
||
.vignette { position:absolute; inset:0; background: radial-gradient(circle at center, transparent 50%, rgba(0,0,0,0.7) 100%); z-index:5; pointer-events:none; }
|
||
.ascii { font-family:'JetBrains Mono',monospace; letter-spacing:2px; line-height:1; }
|
||
@media (prefers-reduced-motion: reduce) { .glitch-host { animation: none } }
|
||
</style>
|
||
</head>
|
||
<body class="flex flex-col items-center justify-center relative">
|
||
|
||
<svg width="0" height="0" style="position:absolute">
|
||
<defs>
|
||
<filter id="rgb">
|
||
<feColorMatrix type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0"/>
|
||
<feOffset in="SourceGraphic" dx="3" dy="0" result="r"/>
|
||
<feOffset in="SourceGraphic" dx="-3" dy="0" result="b"/>
|
||
<feMerge><feMergeNode in="r"/><feMergeNode in="b"/><feMergeNode in="SourceGraphic"/></feMerge>
|
||
</filter>
|
||
</defs>
|
||
</svg>
|
||
|
||
<header class="absolute top-10 left-12 right-12 flex items-baseline justify-between mono text-[11px] opacity-70 z-10 tracking-[0.16em]">
|
||
<span>>> SIGNAL_LOST · CH-04 · 14:32:08</span>
|
||
<span>FRAME · GLITCH-TITLE</span>
|
||
<span>REC ●</span>
|
||
</header>
|
||
|
||
<!-- ASCII chunks corners -->
|
||
<pre class="ascii absolute top-24 left-12 text-[12px] opacity-30 z-10">█▓▒░ █▓▒░
|
||
▒▓█▓ ░▒▓
|
||
░▒▓█ ▓▒░░
|
||
▓▒░░ ▒▓█▓</pre>
|
||
<pre class="ascii absolute bottom-24 right-12 text-[12px] opacity-30 z-10 text-right">█▓▒░ ▓▒░█
|
||
▒░░▓ ░▒▓█
|
||
▓▒░░ █▓▒░
|
||
░▒▓█ ▒░░▓</pre>
|
||
|
||
<main class="relative z-10 text-center px-12">
|
||
<div class="mono text-[14px] opacity-60 tracking-[0.22em] mb-6 uppercase">— Transmission Halted —</div>
|
||
<div class="glitch-host relative inline-block">
|
||
<h1 class="font-black tracking-[-0.02em] leading-[0.9]" style="font-size:clamp(80px,12vw,200px)">
|
||
SIGNAL<br/>_LOST
|
||
</h1>
|
||
<h1 class="layer layer-c font-black tracking-[-0.02em] leading-[0.9]" style="font-size:clamp(80px,12vw,200px)">
|
||
SIGNAL<br/>_LOST
|
||
</h1>
|
||
<h1 class="layer layer-m font-black tracking-[-0.02em] leading-[0.9]" style="font-size:clamp(80px,12vw,200px)">
|
||
SIGNAL<br/>_LOST
|
||
</h1>
|
||
</div>
|
||
<p class="mt-10 mono text-[16px] opacity-70 tracking-[0.16em]">
|
||
04 · DATA_CORRUPTION · <span style="color:#ffb547">w̶̶a̷i̶t̶i̶n̶g̶ ̷f̷o̶r̶ ̶r̷e̶c̶o̶v̷e̶r̶y̶</span>
|
||
</p>
|
||
</main>
|
||
|
||
<div class="grain"></div>
|
||
<div class="vignette"></div>
|
||
|
||
<footer class="absolute bottom-10 left-12 right-12 flex items-baseline justify-between mono text-[11px] opacity-50 z-10 tracking-[0.16em]">
|
||
<span>HTML-ANYTHING / VFX</span>
|
||
<span style="color:#ff2bd6">CHROMATIC · CYAN × MAGENTA</span>
|
||
<span class="mono">⏵ 00:14:32:08</span>
|
||
</footer>
|
||
</body>
|
||
</html>
|