Skip to content

Commit f25db70

Browse files
authored
feat(statuspage): added statuspage, updated list of tools in footer, renamed routes (#2139)
* feat(statuspage): added statuspage, updated list of tools in footer, renamed routes * ack PR comments
1 parent 08d57b4 commit f25db70

File tree

18 files changed

+521
-225
lines changed

18 files changed

+521
-225
lines changed

apps/sim/app/(landing)/actions/github.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import { createLogger } from '@/lib/logs/console/logger'
22

3-
const DEFAULT_STARS = '15.4k'
3+
const DEFAULT_STARS = '18.6k'
44

55
const logger = createLogger('GitHubStars')
66

77
export async function getFormattedGitHubStars(): Promise<string> {
88
try {
9-
const response = await fetch('/api/github-stars', {
9+
const response = await fetch('/api/stars', {
1010
headers: {
1111
'Cache-Control': 'max-age=3600', // Cache for 1 hour
1212
},
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import Image from 'next/image'
2+
import Link from 'next/link'
3+
import { HIPAABadgeIcon } from '@/components/icons'
4+
5+
export default function ComplianceBadges() {
6+
return (
7+
<div className='mt-[6px] flex items-center gap-[12px]'>
8+
{/* SOC2 badge */}
9+
<Link href='https://trust.delve.co/sim-studio' target='_blank' rel='noopener noreferrer'>
10+
<Image
11+
src='/footer/soc2.png'
12+
alt='SOC2 Compliant'
13+
width={54}
14+
height={54}
15+
className='object-contain'
16+
loading='lazy'
17+
quality={75}
18+
/>
19+
</Link>
20+
{/* HIPAA badge */}
21+
<Link href='https://trust.delve.co/sim-studio' target='_blank' rel='noopener noreferrer'>
22+
<HIPAABadgeIcon className='h-[54px] w-[54px]' />
23+
</Link>
24+
</div>
25+
)
26+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import ComplianceBadges from './compliance-badges'
2+
import Logo from './logo'
3+
import SocialLinks from './social-links'
4+
import StatusIndicator from './status-indicator'
5+
6+
export { ComplianceBadges, Logo, SocialLinks, StatusIndicator }
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import Image from 'next/image'
2+
import Link from 'next/link'
3+
4+
export default function Logo() {
5+
return (
6+
<Link href='/' aria-label='Sim home'>
7+
<Image
8+
src='/logo/b&w/text/b&w.svg'
9+
alt='Sim - Workflows for LLMs'
10+
width={49.78314}
11+
height={24.276}
12+
priority
13+
quality={90}
14+
/>
15+
</Link>
16+
)
17+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import { DiscordIcon, GithubIcon, LinkedInIcon, xIcon as XIcon } from '@/components/icons'
2+
3+
export default function SocialLinks() {
4+
return (
5+
<div className='flex items-center gap-[12px]'>
6+
<a
7+
href='https://discord.gg/Hr4UWYEcTT'
8+
target='_blank'
9+
rel='noopener noreferrer'
10+
className='flex items-center text-[16px] text-muted-foreground transition-colors hover:text-foreground'
11+
aria-label='Discord'
12+
>
13+
<DiscordIcon className='h-[20px] w-[20px]' aria-hidden='true' />
14+
</a>
15+
<a
16+
href='https://x.com/simdotai'
17+
target='_blank'
18+
rel='noopener noreferrer'
19+
className='flex items-center text-[16px] text-muted-foreground transition-colors hover:text-foreground'
20+
aria-label='X (Twitter)'
21+
>
22+
<XIcon className='h-[18px] w-[18px]' aria-hidden='true' />
23+
</a>
24+
<a
25+
href='https://www.linkedin.com/company/simstudioai/'
26+
target='_blank'
27+
rel='noopener noreferrer'
28+
className='flex items-center text-[16px] text-muted-foreground transition-colors hover:text-foreground'
29+
aria-label='LinkedIn'
30+
>
31+
<LinkedInIcon className='h-[18px] w-[18px]' aria-hidden='true' />
32+
</a>
33+
<a
34+
href='https://github.com/simstudioai/sim'
35+
target='_blank'
36+
rel='noopener noreferrer'
37+
className='flex items-center text-[16px] text-muted-foreground transition-colors hover:text-foreground'
38+
aria-label='GitHub'
39+
>
40+
<GithubIcon className='h-[20px] w-[20px]' aria-hidden='true' />
41+
</a>
42+
</div>
43+
)
44+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
'use client'
2+
3+
import Link from 'next/link'
4+
import { StatusDotIcon } from '@/components/icons'
5+
import type { StatusType } from '@/app/api/status/types'
6+
import { useStatus } from '@/hooks/queries/status'
7+
8+
const STATUS_COLORS: Record<StatusType, string> = {
9+
operational: 'text-[#10B981] hover:text-[#059669]',
10+
degraded: 'text-[#F59E0B] hover:text-[#D97706]',
11+
outage: 'text-[#EF4444] hover:text-[#DC2626]',
12+
maintenance: 'text-[#3B82F6] hover:text-[#2563EB]',
13+
loading: 'text-muted-foreground hover:text-foreground',
14+
error: 'text-muted-foreground hover:text-foreground',
15+
}
16+
17+
export default function StatusIndicator() {
18+
const { data, isLoading, isError } = useStatus()
19+
20+
const status = isLoading ? 'loading' : isError ? 'error' : data?.status || 'error'
21+
const message = isLoading
22+
? 'Checking Status...'
23+
: isError
24+
? 'Status Unknown'
25+
: data?.message || 'Status Unknown'
26+
const statusUrl = data?.url || 'https://status.sim.ai'
27+
28+
return (
29+
<Link
30+
href={statusUrl}
31+
target='_blank'
32+
rel='noopener noreferrer'
33+
className={`flex items-center gap-[6px] whitespace-nowrap text-[12px] transition-colors ${STATUS_COLORS[status]}`}
34+
aria-label={`System status: ${message}`}
35+
>
36+
<StatusDotIcon status={status} className='h-[6px] w-[6px]' aria-hidden='true' />
37+
<span>{message}</span>
38+
</Link>
39+
)
40+
}
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
export const FOOTER_BLOCKS = [
2+
'Agent',
3+
'API',
4+
'Condition',
5+
'Evaluator',
6+
'Function',
7+
'Human In The Loop',
8+
'Loop',
9+
'Parallel',
10+
'Response',
11+
'Router',
12+
'Starter',
13+
'Webhook',
14+
'Workflow',
15+
]
16+
17+
export const FOOTER_TOOLS = [
18+
'Airtable',
19+
'Apify',
20+
'Apollo',
21+
'ArXiv',
22+
'Browser Use',
23+
'Calendly',
24+
'Clay',
25+
'Confluence',
26+
'Discord',
27+
'ElevenLabs',
28+
'Exa',
29+
'Firecrawl',
30+
'GitHub',
31+
'Gmail',
32+
'Google Drive',
33+
'Guardrails',
34+
'HubSpot',
35+
'HuggingFace',
36+
'Hunter',
37+
'Incidentio',
38+
'Intercom',
39+
'Jina',
40+
'Jira',
41+
'Knowledge',
42+
'Linear',
43+
'LinkUp',
44+
'LinkedIn',
45+
'Mailchimp',
46+
'Mailgun',
47+
'MCP',
48+
'Mem0',
49+
'Microsoft Excel',
50+
'Microsoft Planner',
51+
'Microsoft Teams',
52+
'Mistral Parse',
53+
'MongoDB',
54+
'MySQL',
55+
'Neo4j',
56+
'Notion',
57+
'OneDrive',
58+
'OpenAI',
59+
'Outlook',
60+
'Parallel AI',
61+
'Perplexity',
62+
'Pinecone',
63+
'Pipedrive',
64+
'PostHog',
65+
'PostgreSQL',
66+
'Pylon',
67+
'Qdrant',
68+
'Reddit',
69+
'Resend',
70+
'S3',
71+
'Salesforce',
72+
'SendGrid',
73+
'Serper',
74+
'SharePoint',
75+
'Slack',
76+
'Smtp',
77+
'Stagehand',
78+
'Stripe',
79+
'Supabase',
80+
'Tavily',
81+
'Telegram',
82+
'Translate',
83+
'Trello',
84+
'Twilio',
85+
'Typeform',
86+
'Vision',
87+
'Wait',
88+
'Wealthbox',
89+
'Webflow',
90+
'WhatsApp',
91+
'Wikipedia',
92+
'X',
93+
'YouTube',
94+
'Zendesk',
95+
'Zep',
96+
]

0 commit comments

Comments
 (0)