Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 10 additions & 13 deletions apps/sim/app/(landing)/components/footer/footer.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import Link from 'next/link'
import { ALL_COMPETITORS } from '@/app/(landing)/comparisons/utils'
import { SimWordmark } from '@/app/(landing)/components/navbar/components/sim-wordmark'
import { MODEL_PROVIDERS_WITH_CATALOGS } from '@/app/(landing)/models/utils'

Expand Down Expand Up @@ -41,7 +42,7 @@ const PRODUCT_LINKS: FooterItem[] = [
const RESOURCES_LINKS: FooterItem[] = [
{ label: 'Blog', href: '/blog' },
{ label: 'Docs', href: 'https://docs.sim.ai', external: true },
{ label: 'Compare', href: '/comparisons' },
{ label: 'Library', href: '/library' },
{ label: 'Careers', href: '/careers' },
{ label: 'Changelog', href: '/changelog' },
{ label: 'Contact', href: '/contact' },
Expand All @@ -56,17 +57,13 @@ const MODEL_LINKS: FooterItem[] = [
})),
]

const BLOCK_LINKS: FooterItem[] = [
{ label: 'Agent', href: 'https://docs.sim.ai/workflows/blocks/agent', external: true },
{ label: 'Router', href: 'https://docs.sim.ai/workflows/blocks/router', external: true },
{ label: 'Function', href: 'https://docs.sim.ai/workflows/blocks/function', external: true },
{ label: 'Condition', href: 'https://docs.sim.ai/workflows/blocks/condition', external: true },
{ label: 'API Block', href: 'https://docs.sim.ai/workflows/blocks/api', external: true },
{ label: 'Workflow', href: 'https://docs.sim.ai/workflows/blocks/workflow', external: true },
{ label: 'Parallel', href: 'https://docs.sim.ai/workflows/blocks/parallel', external: true },
{ label: 'Guardrails', href: 'https://docs.sim.ai/workflows/blocks/guardrails', external: true },
{ label: 'Evaluator', href: 'https://docs.sim.ai/workflows/blocks/evaluator', external: true },
{ label: 'Loop', href: 'https://docs.sim.ai/workflows/blocks/loop', external: true },
/** Top comparison pages, sourced from the competitor catalog so labels/hrefs never drift. */
const COMPARE_LINKS: FooterItem[] = [
{ label: 'All Comparisons', href: '/comparisons' },
...ALL_COMPETITORS.slice(0, 9).map((competitor) => ({
label: competitor.name,
href: `/comparisons/${competitor.id}`,
})),
]

const INTEGRATION_LINKS: FooterItem[] = [
Expand Down Expand Up @@ -153,7 +150,7 @@ export function Footer() {

<FooterColumn title='Product' items={PRODUCT_LINKS} />
<FooterColumn title='Resources' items={RESOURCES_LINKS} />
<FooterColumn title='Blocks' items={BLOCK_LINKS} />
<FooterColumn title='Compare' items={COMPARE_LINKS} />
<FooterColumn title='Integrations' items={INTEGRATION_LINKS} />
<FooterColumn title='Models' items={MODEL_LINKS} />
<FooterColumn title='Socials' items={SOCIAL_LINKS} />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,7 @@ interface MobileNavProps {
* a grouped section automatically - the sheet mirrors the desktop nav's
* information architecture with no extra edit.
*/
const STANDALONE_LINKS = [
{ label: 'Enterprise', href: '/enterprise' },
{ label: 'Pricing', href: '/pricing' },
] as const
const STANDALONE_LINKS = [{ label: 'Pricing', href: '/pricing' }] as const

/** Shared row chrome for every tappable text link in the sheet. */
const SHEET_ROW =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,8 @@ export const PLATFORM_MENU: NavMenu = {
}

/**
* The Resources menu - learning and reference surfaces. Six items in a
* three-column grid. Docs is the one off-site link.
* The Resources menu - learning and reference surfaces plus the Enterprise
* page. Six items in a three-column grid. Docs is the one off-site link.
*/
export const RESOURCES_MENU: NavMenu = {
label: 'Resources',
Expand All @@ -59,9 +59,9 @@ export const RESOURCES_MENU: NavMenu = {
href: '/blog',
},
{
title: 'Library',
description: 'Comparisons, how-tos, and roundups',
href: '/library',
title: 'Enterprise',
description: 'Govern AI agents at enterprise scale',
href: '/enterprise',
},
{
title: 'Changelog',
Expand All @@ -82,15 +82,16 @@ export const RESOURCES_MENU: NavMenu = {
}

/**
* The Solutions menu - agent use cases by team. Six items in a three-column grid.
* The Solutions menu - agent use cases by team, Sales first. Six items in a
* three-column grid.
*/
export const SOLUTIONS_MENU: NavMenu = {
label: 'Solutions',
items: [
{
title: 'Enterprise',
description: 'Govern AI agents at enterprise scale',
href: '/enterprise',
title: 'Sales',
description: 'Automate outreach and CRM upkeep',
href: '/solutions/sales',
},
{
title: 'Engineering',
Expand Down
4 changes: 1 addition & 3 deletions apps/sim/app/(landing)/components/navbar/navbar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ import { DEMO_HREF, SIGNUP_HREF } from '@/app/(landing)/constants'
* chip-height slot, chip-text color) → the {@link NAV_MENUS} mega-menus
* (pure-CSS hover/focus dropdowns) → Pricing → GitHub stars. Right side: Log in
* (default chip), Contact sales (outline chip), Sign up (filled chip).
* Enterprise lives inside the Resources mega-menu, not as a standalone chip.
*/

interface NavbarProps {
Expand Down Expand Up @@ -75,9 +76,6 @@ export function Navbar({ stars, logoOnly = false }: NavbarProps) {
{NAV_MENUS.map((menu) => (
<NavMenuChip key={menu.label} menu={menu} />
))}
<ChipLink href='/enterprise' itemProp='url'>
Enterprise
</ChipLink>
<ChipLink href='/pricing' itemProp='url'>
Pricing
</ChipLink>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export { ScheduledTasksCalendarLoop } from './scheduled-tasks-calendar-loop'
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/**
* The ScheduledTasksCalendarLoop's motion: a newly scheduled task pill stamps
* in once when the parent clock mounts it on its calendar day. A one-shot
* mount animation - the loop's restart unmounts and remounts the pills, so a
* new cycle replays them naturally. Under prefers-reduced-motion the parent
* renders the finished frame and this never plays.
*/

.pillIn {
animation: scheduled-tasks-pill-in 0.35s cubic-bezier(0.22, 1, 0.36, 1) backwards;
}

@keyframes scheduled-tasks-pill-in {
from {
opacity: 0;
transform: translateY(-4px);
}
to {
opacity: 1;
transform: translateY(0);
}
}

@media (prefers-reduced-motion: reduce) {
.pillIn {
animation: none;
}
}
Loading
Loading