Skip to content

Commit 8a3530c

Browse files
sovanesyanclaude
andcommitted
Update landing page: feature tiles, install options, copy buttons, new SVG
- Remove mac-style title bar from terminal SVG - Regenerate SVG with realistic schedule data and proper heatmap rendering - Replace keyboard shortcuts section with feature tiles grid - Add macOS Homebrew install option alongside Arch and source - Add copy-to-clipboard buttons on install blocks - Reorder: install before features Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 4b30d34 commit 8a3530c

2 files changed

Lines changed: 249 additions & 237 deletions

File tree

docs/index.html

Lines changed: 75 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -83,23 +83,24 @@
8383
color: var(--text);
8484
}
8585

86-
ul {
87-
list-style: none;
88-
margin-bottom: 16px;
86+
.features-grid {
87+
display: grid;
88+
grid-template-columns: 1fr 1fr;
89+
gap: 16px;
8990
}
9091

91-
ul li {
92-
padding: 6px 0;
93-
padding-left: 20px;
94-
position: relative;
92+
.feature-tile {
93+
background: var(--surface);
94+
border: 1px solid var(--border);
95+
border-radius: 6px;
96+
padding: 20px;
97+
font-size: 0.9rem;
9598
}
9699

97-
ul li::before {
98-
content: '>';
99-
position: absolute;
100-
left: 0;
101-
color: var(--accent);
102-
font-weight: 700;
100+
@media (max-width: 600px) {
101+
.features-grid {
102+
grid-template-columns: 1fr;
103+
}
103104
}
104105

105106
/* Install block */
@@ -110,6 +111,35 @@
110111
padding: 16px 20px;
111112
margin: 16px 0;
112113
font-size: 0.85rem;
114+
position: relative;
115+
}
116+
117+
.copy-btn {
118+
position: absolute;
119+
top: 12px;
120+
right: 12px;
121+
background: none;
122+
border: 1px solid var(--border);
123+
border-radius: 4px;
124+
color: var(--text-dim);
125+
font-family: inherit;
126+
font-size: 0.7rem;
127+
padding: 5px 6px;
128+
line-height: 0;
129+
display: flex;
130+
align-items: center;
131+
cursor: pointer;
132+
transition: color 0.2s, border-color 0.2s;
133+
}
134+
135+
.copy-btn:hover {
136+
color: var(--accent);
137+
border-color: var(--accent);
138+
}
139+
140+
.copy-btn.copied {
141+
color: var(--green);
142+
border-color: var(--green);
113143
}
114144

115145
.install .label {
@@ -126,29 +156,17 @@
126156
color: var(--text-dim);
127157
}
128158

129-
/* Keys */
130159
kbd {
131160
display: inline-block;
132-
background: var(--surface);
161+
background: var(--bg);
133162
border: 1px solid var(--border);
134163
border-radius: 4px;
135-
padding: 2px 8px;
164+
padding: 1px 6px;
136165
font-family: inherit;
137166
font-size: 0.8rem;
138167
color: var(--orange);
139168
}
140169

141-
.keys-grid {
142-
display: grid;
143-
grid-template-columns: auto 1fr;
144-
gap: 8px 20px;
145-
align-items: center;
146-
}
147-
148-
.keys-grid .desc {
149-
color: var(--text-dim);
150-
}
151-
152170
/* Links */
153171
a {
154172
color: var(--accent);
@@ -196,50 +214,40 @@ <h1><span class="accent">calend</span><span class="accent2">archy</span></h1>
196214
<img src="terminal.svg" alt="Calendarchy terminal interface showing calendar grid, event panels, and event details" style="width:100%;display:block;border-radius:8px;">
197215
</div>
198216

199-
<section>
200-
<h2>Features</h2>
201-
<ul>
202-
<li>Google Calendar and iCloud Calendar in one view</li>
203-
<li>Month grid with day-by-day event browsing</li>
204-
<li>One-click join for Zoom, Google Meet, and Teams links</li>
205-
<li>Accept or decline events with a keystroke</li>
206-
<li>Offline-first with local event caching</li>
207-
<li>Zero-config Google sign-in via browser</li>
208-
<li>iCloud via app-specific password (CalDAV)</li>
209-
<li>Native macOS EventKit support for iCloud</li>
210-
</ul>
211-
</section>
212-
213217
<section>
214218
<h2>Install</h2>
215-
<div class="install">
219+
<div class="install" data-copy="brew tap sovanesyan/tap && brew install calendarchy">
220+
<button class="copy-btn" onclick="copyInstall(this)"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg></button>
221+
<div class="label">macOS (Homebrew)</div>
222+
<code>brew tap sovanesyan/tap</code>
223+
<br><code>brew install calendarchy</code>
224+
</div>
225+
<div class="install" data-copy="yay -S calendarchy-bin">
226+
<button class="copy-btn" onclick="copyInstall(this)"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg></button>
216227
<div class="label">Arch Linux (AUR)</div>
217228
<code>yay -S calendarchy-bin</code>
218229
</div>
219-
<div class="install">
230+
<div class="install" data-copy="git clone https://github.com/sovanesyan/calendarchy.git && cd calendarchy && cargo build --release">
231+
<button class="copy-btn" onclick="copyInstall(this)"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg></button>
220232
<div class="label">From source</div>
221233
<code>git clone https://github.com/sovanesyan/calendarchy.git</code>
222234
<br><code>cd calendarchy && cargo build --release</code>
223235
</div>
224236
</section>
225237

226238
<section>
227-
<h2>Keyboard</h2>
228-
<div class="keys-grid">
229-
<kbd>h</kbd><span class="desc">Previous day</span>
230-
<kbd>l</kbd><span class="desc">Next day</span>
231-
<kbd>j</kbd><span class="desc">Next week</span>
232-
<kbd>k</kbd><span class="desc">Previous week</span>
233-
<kbd>t</kbd><span class="desc">Jump to today</span>
234-
<kbd>o</kbd><span class="desc">Open meeting link</span>
235-
<kbd>a</kbd><span class="desc">Accept event</span>
236-
<kbd>d</kbd><span class="desc">Decline event</span>
237-
<kbd>/</kbd><span class="desc">Search events</span>
238-
<kbd>S</kbd><span class="desc">Setup wizard</span>
239-
<kbd>q</kbd><span class="desc">Quit</span>
239+
<h2>Features</h2>
240+
<div class="features-grid">
241+
<div class="feature-tile">Two keystrokes to your next meeting — <kbd>⌘⇧J</kbd> / <kbd>Super⇧J</kbd> to open, <kbd>⇧J</kbd> to join</div>
242+
<div class="feature-tile">Instant startup — events cached locally, syncs in the background</div>
243+
<div class="feature-tile">Google Calendar + iCloud side by side in one view</div>
244+
<div class="feature-tile">Accept, decline, or RSVP without leaving the terminal</div>
245+
<div class="feature-tile">Weekly availability heatmap — see your free time at a glance</div>
246+
<div class="feature-tile">macOS and Linux — EventKit, CalDAV, or both</div>
240247
</div>
241248
</section>
242249

250+
243251
<section>
244252
<h2>Source</h2>
245253
<p>
@@ -258,5 +266,16 @@ <h2>Source</h2>
258266
</footer>
259267
</div>
260268

269+
<script>
270+
function copyInstall(btn) {
271+
const text = btn.parentElement.dataset.copy;
272+
const icon = btn.innerHTML;
273+
navigator.clipboard.writeText(text).then(() => {
274+
btn.innerHTML = '<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>';
275+
btn.classList.add('copied');
276+
setTimeout(() => { btn.innerHTML = icon; btn.classList.remove('copied'); }, 1500);
277+
});
278+
}
279+
</script>
261280
</body>
262281
</html>

0 commit comments

Comments
 (0)