Skip to content

Commit c006781

Browse files
committed
feat: add professional icons, more AI models, and integrations page
- Replace emoji icons with Simple Icons (brands) + Lucide (generic) - Add Icon.astro component for unified icon rendering - Add integrations page with 50+ integrations organized by category - Add AI models: OpenRouter, Mistral, DeepSeek, GLM, Perplexity, Hugging Face - Add per-line copy buttons to Quick Start code block - Move testimonials section after hero for better social proof - Add ClawdHub link to integrations footer - Fix dark icons (X, GitHub, Notion, Sonos, macOS) to white for visibility
1 parent d8de94b commit c006781

File tree

6 files changed

+1000
-66
lines changed

6 files changed

+1000
-66
lines changed

README.md

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,19 @@
22

33
Landing page for [Clawdbot](https://github.com/clawdbot/clawdbot) — your personal AI assistant.
44

5-
**Live**: [clawdbot.com](https://clawdbot.com)
5+
**Live**: [clawd.bot](https://clawd.bot)
6+
7+
## Pages
8+
9+
- `/` — Main landing page with Quick Start, features, and testimonials
10+
- `/integrations` — Visual grid of all supported chat providers, AI models, platforms, and tools
11+
- `/shoutouts` — Community testimonials and mentions
12+
13+
## Tech Stack
14+
15+
- [Astro](https://astro.build/) — Static site generator
16+
- GitHub Pages — Hosting
17+
- Custom CSS — No framework, just vibes
618

719
## Development
820

@@ -21,3 +33,23 @@ bun run preview
2133
## Deploy
2234

2335
Automatically deployed to GitHub Pages on push to `main`.
36+
37+
## Install Scripts
38+
39+
The landing page hosts installer scripts:
40+
41+
- **macOS/Linux**: `curl -fsSL https://clawd.bot/install.sh | bash`
42+
- **Windows**: `iwr -useb https://clawd.bot/install.ps1 | iex`
43+
44+
These scripts:
45+
1. Install Homebrew (macOS) or detect package managers (Windows)
46+
2. Install Node.js 22+ if needed
47+
3. Install clawdbot globally via npm
48+
4. Run `clawdbot doctor --non-interactive` for migrations (upgrades only)
49+
5. Prompt to run `clawdbot onboard` (new installs)
50+
51+
## Related
52+
53+
- [Clawdbot](https://github.com/clawdbot/clawdbot) — Main repository
54+
- [Docs](https://docs.clawd.bot) — Documentation
55+
- [Discord](https://discord.gg/clawd) — Community

bun.lock

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
"dependencies": {
1111
"@vercel/analytics": "^1.6.1",
1212
"@vercel/speed-insights": "^1.3.1",
13-
"astro": "^5.1.1"
13+
"astro": "^5.1.1",
14+
"lucide-astro": "^0.556.0",
15+
"simple-icons": "^16.5.0"
1416
}
1517
}

src/components/Icon.astro

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
---
2+
// Icon component that renders either a Simple Icons SVG path or a Lucide icon name
3+
interface Props {
4+
icon: string;
5+
color?: string;
6+
size?: number;
7+
class?: string;
8+
}
9+
10+
import {
11+
Globe, Mic, Clock, Webhook, CloudSun, Image, Camera, Search, Mail,
12+
StickyNote, CheckSquare, ListTodo, PenTool, Bed, ShoppingCart, Printer,
13+
Heart, UtensilsCrossed, MonitorSmartphone, Eye, Monitor, Bot, Users, Hash,
14+
Home, MessageCircle, Brain, Terminal, Puzzle, Zap
15+
} from 'lucide-astro';
16+
17+
const { icon, color = 'currentColor', size = 24, class: className = '' } = Astro.props;
18+
19+
// Map lucide icon names to components
20+
const lucideIcons: Record<string, any> = {
21+
'lucide:globe': Globe,
22+
'lucide:mic': Mic,
23+
'lucide:clock': Clock,
24+
'lucide:webhook': Webhook,
25+
'lucide:cloud-sun': CloudSun,
26+
'lucide:image': Image,
27+
'lucide:camera': Camera,
28+
'lucide:search': Search,
29+
'lucide:mail': Mail,
30+
'lucide:sticky-note': StickyNote,
31+
'lucide:check-square': CheckSquare,
32+
'lucide:list-todo': ListTodo,
33+
'lucide:pen-tool': PenTool,
34+
'lucide:bed': Bed,
35+
'lucide:shopping-cart': ShoppingCart,
36+
'lucide:printer': Printer,
37+
'lucide:heart': Heart,
38+
'lucide:utensils-crossed': UtensilsCrossed,
39+
'lucide:monitor-smartphone': MonitorSmartphone,
40+
'lucide:eye': Eye,
41+
'lucide:monitor': Monitor,
42+
'lucide:bot': Bot,
43+
'lucide:users': Users,
44+
'lucide:hash': Hash,
45+
'lucide:home': Home,
46+
'lucide:message-circle': MessageCircle,
47+
'lucide:brain': Brain,
48+
'lucide:terminal': Terminal,
49+
'lucide:puzzle': Puzzle,
50+
'lucide:zap': Zap,
51+
};
52+
53+
const isLucide = icon.startsWith('lucide:');
54+
const LucideComponent = isLucide ? lucideIcons[icon] : null;
55+
---
56+
57+
{isLucide && LucideComponent ? (
58+
<LucideComponent size={size} color={color} class={className} />
59+
) : (
60+
<svg
61+
viewBox="0 0 24 24"
62+
width={size}
63+
height={size}
64+
fill={color}
65+
class={className}
66+
xmlns="http://www.w3.org/2000/svg"
67+
>
68+
<path d={icon} />
69+
</svg>
70+
)}

0 commit comments

Comments
 (0)