-
Notifications
You must be signed in to change notification settings - Fork 45
Expand file tree
/
Copy pathindex.html
More file actions
128 lines (122 loc) · 7.62 KB
/
index.html
File metadata and controls
128 lines (122 loc) · 7.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<!DOCTYPE html>
<html lang="en" data-theme="dark">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>World Vibe Web</title>
<meta name="description" content="World Vibe Web — A distributed app store aggregating vibe-coded projects from across GitHub.">
<meta property="og:title" content="World Vibe Web">
<meta property="og:description" content="The distributed app store for vibe-coded projects. Browse, discover, and install open-source apps from across GitHub.">
<meta property="og:image" content="https://wvw.dev/og.png">
<meta property="og:url" content="https://wvw.dev">
<meta property="og:type" content="website">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="World Vibe Web">
<meta name="twitter:description" content="The distributed app store for vibe-coded projects.">
<meta name="twitter:image" content="https://wvw.dev/og.png">
<meta name="theme-color" content="#000000">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="apple-mobile-web-app-title" content="WVW">
<link rel="canonical" href="https://wvw.dev">
<link rel="icon" type="image/png" href="/logo.png">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<link rel="manifest" href="/manifest.json">
<link rel="stylesheet" href="/style.css">
<script>
(function() {
var h = location.hostname;
if (h === "localhost" || h === "127.0.0.1") return;
var p = new URLSearchParams(window.location.search).get('p');
if (p) history.replaceState(null, '', p);
})();
</script>
</head>
<body>
<div class="desktop-banner" id="desktopBanner">
<span class="desktop-banner-text">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="3" width="20" height="14" rx="2"/><line x1="8" y1="21" x2="16" y2="21"/><line x1="12" y1="17" x2="12" y2="21"/></svg>
WVW is available as a desktop app
</span>
<a href="/discover/wvw-desktop" class="desktop-banner-btn" id="desktopBannerBtn">Download</a>
<button class="desktop-banner-close" id="desktopBannerClose" aria-label="Dismiss">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>
</button>
</div>
<div class="app-store">
<aside class="sidebar" id="sidebar">
<div class="sidebar-brand">
<a href="https://wvw.dev" class="wvw-badge">
<img src="/logo.png" alt="WVW" class="wvw-badge-icon">
<div class="wvw-badge-text">
<span class="wvw-badge-title">wvw.dev</span>
<span class="wvw-badge-sub">World Vibe Web</span>
</div>
</a>
</div>
<div class="sidebar-header">
<div class="search-box">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg>
<input type="text" placeholder="Search" id="searchInput">
</div>
</div>
<nav class="sidebar-nav" id="sidebarNav"></nav>
<div class="sidebar-footer">
<button class="theme-toggle" id="themeToggle" aria-label="Toggle theme">
<svg class="theme-icon sun" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="5"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/></svg>
<svg class="theme-icon moon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/></svg>
<span class="theme-label">Light Mode</span>
</button>
<div class="sidebar-community">
<button class="sidebar-community-toggle" id="communityToggle">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M23 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/></svg>
<span>Community</span>
<svg class="sidebar-community-arrow" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="6 9 12 15 18 9"/></svg>
</button>
<div class="sidebar-community-items" id="communityItems">
<a href="#" class="sidebar-community-item" id="navRequests">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z"/><line x1="4" y1="22" x2="4" y2="15"/></svg>
App Requests
</a>
<a href="https://github.com/f/wvw.dev/issues/new?template=app-request.yml" target="_blank" rel="noopener" class="sidebar-community-item">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><circle cx="12" cy="12" r="10"/><line x1="12" y1="8" x2="12" y2="16"/><line x1="8" y1="12" x2="16" y2="12"/></svg>
Request an App
</a>
<a href="https://github.com/f/wvw.dev/blob/master/DISTRIBUTE.md" target="_blank" rel="noopener" class="sidebar-community-item">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="M4 12v7a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-7"/><polyline points="16 6 12 2 8 6"/><line x1="12" y1="2" x2="12" y2="15"/></svg>
Publish Your Apps
</a>
</div>
</div>
<button class="about-btn" id="aboutBtn">
<svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z"/></svg>
<span>About</span>
</button>
</div>
</aside>
<div class="sidebar-overlay" id="sidebarOverlay"></div>
<main class="content" id="content">
<button class="mobile-menu-fab" id="mobileMenuBtn" aria-label="Menu">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><line x1="3" y1="6" x2="21" y2="6"/><line x1="3" y1="12" x2="21" y2="12"/><line x1="3" y1="18" x2="21" y2="18"/></svg>
</button>
<button class="mobile-back-fab hidden" id="mobileBackBtn" aria-label="Back">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><polyline points="15 18 9 12 15 6"/></svg>
</button>
<div class="content-scroll" id="contentScroll"></div>
</main>
</div>
<div class="modal-overlay" id="modalOverlay">
<div class="modal" id="modal"></div>
</div>
<div class="brew-toast" id="brewToast">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="#34c759" stroke-width="2"><polyline points="20 6 9 17 4 12"/></svg>
<span>Copied to clipboard!</span>
</div>
<script src="/app.js"></script>
<script>
if ("serviceWorker" in navigator) {
navigator.serviceWorker.register("/sw.js");
}
</script>
</body>
</html>