Skip to content
Merged

staging #1932

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
132 commits
Select commit Hold shift + click to select a range
b95ea91
fix(copilot): consolidate usage limit validation (#1763)
Sg312 Oct 29, 2025
da30c25
improvement(chat): increase max files to 15 and resolve workflow vari…
icecrasher321 Oct 29, 2025
48f520b
feat(files): added file manager table, enforce permissions for viewin…
waleedlatif1 Oct 30, 2025
47913f8
fix(kb): fix mistral parse and kb uploads, include userId in internal…
waleedlatif1 Oct 30, 2025
fdefb14
improvement(ms-teams): resolve mentions accurately (#1762)
icecrasher321 Oct 30, 2025
8b0079b
feat(i18n): update translations (#1768)
waleedlatif1 Oct 30, 2025
61725c2
feat(envvars): use cache for envvar dropdown key names, prevent autof…
waleedlatif1 Oct 30, 2025
c99bb0a
feat(cost): added hidden cost breakdown component to settings > subsc…
waleedlatif1 Oct 30, 2025
fe9ebbf
improvement(api-keys): move to workspace level (#1765)
icecrasher321 Oct 30, 2025
3b901b3
fix(webhook-notif): modal positioning (#1771)
icecrasher321 Oct 30, 2025
a072e6d
improvement(custom-tools): make them workspace scoped + ux to manage …
icecrasher321 Oct 31, 2025
eac358b
feat(live-cursor): live cursor during collaboration (#1775)
icecrasher321 Oct 31, 2025
0b16fa4
fix(triggers): incoming edges should be filtered from execution and U…
icecrasher321 Oct 31, 2025
4a3c6d1
fix(client-directive): fix build error (#1778)
icecrasher321 Oct 31, 2025
6cd82f0
fix(presence): remove presence for a solo user (#1779)
waleedlatif1 Oct 31, 2025
70ff539
improvement(mcp): ditch custom mcp client in favor of mcp sdk (#1780)
waleedlatif1 Oct 31, 2025
e64129c
feat(triggers): modify triggers to use existing subblock system, webh…
waleedlatif1 Oct 31, 2025
f6a5c5c
improvement(cleanup): remove useWorkflowDiff hook (#1781)
icecrasher321 Oct 31, 2025
44271cd
fix(triggers-persistence): triggers persistence, deletion, updating c…
icecrasher321 Nov 1, 2025
86b3570
fix(trigger-dup): on duplicate trigger should not point at old webhoo…
icecrasher321 Nov 1, 2025
5479461
feat(docs): added page nav buttons, static search, TOC footer (#1787)
waleedlatif1 Nov 1, 2025
e4d2156
feat(i18n): update translations (#1788)
waleedlatif1 Nov 1, 2025
f998086
improvement(variables): add error context for duplicate variable name…
waleedlatif1 Nov 2, 2025
7d67ae3
fix(evaluator): fix evaluator to handle temperature gracefully like r…
waleedlatif1 Nov 2, 2025
3bf00cb
improvement(executor): redesign executor + add start block (#1790)
Sg312 Nov 2, 2025
fb445b1
fix(legacy-start): fix legacy start block execution in new executor
Sg312 Nov 3, 2025
2eea3ca
feat(import-export): improvements to export workspace, maintain file …
icecrasher321 Nov 3, 2025
3af7d13
feat(mcp): surface better errors for MCP connection failures (#1796)
waleedlatif1 Nov 3, 2025
d1fcade
fix(conn-status): remove unused connection status inside user avatar …
icecrasher321 Nov 3, 2025
0363f8a
fix(external-triggers): not passing payload through + incorrect serve…
icecrasher321 Nov 4, 2025
1ce834f
feat(i18n): update translations (#1794)
waleedlatif1 Nov 4, 2025
56f6458
fix(i18n): fix translation pipeline (#1804)
waleedlatif1 Nov 4, 2025
e9ff94f
chore(deps): upgrade turbopack (#1803)
waleedlatif1 Nov 4, 2025
a29f9fd
feat(schedules): move schedule configuration out of modals into subbl…
waleedlatif1 Nov 4, 2025
e62a635
feat(i18n): update translations (#1806)
waleedlatif1 Nov 4, 2025
670e63c
fix(schedules): restore enabling/disabling of schedules, fix prematur…
waleedlatif1 Nov 4, 2025
f65d62e
improvement(async): improve error capturing for asynchronous workflow…
waleedlatif1 Nov 5, 2025
b0fa3e8
improvement(reply-gmail): added reply to gmail (#1809)
aadamgough Nov 5, 2025
fa323e2
feat(twilio-voice): added twilio voice webhook + tool (#1776)
aadamgough Nov 5, 2025
68056b7
feat(i18n): update translations (#1811)
waleedlatif1 Nov 5, 2025
0260dbc
feat(tools): added perplexity search endpoint, updated models list fo…
waleedlatif1 Nov 5, 2025
11fd154
feat(i18n): update translations (#1813)
waleedlatif1 Nov 5, 2025
2056e8a
feat(tools): added additional youtube search params, get channel play…
waleedlatif1 Nov 5, 2025
21774de
feat(i18n): update translations (#1815)
waleedlatif1 Nov 5, 2025
cf023e4
feat(tools): added download file tool for onedrive, google drive, and…
waleedlatif1 Nov 5, 2025
2b78b5e
feat(i18n): update translations (#1817)
waleedlatif1 Nov 5, 2025
5c611c6
improvement(block-outputs): fix chat fields being hidden even if in i…
icecrasher321 Nov 6, 2025
60d53ba
feat(tools): added typeform form submission trigger, added 4 new tool…
waleedlatif1 Nov 6, 2025
541bdd3
feat(i18n): update translations (#1820)
waleedlatif1 Nov 6, 2025
8c9ed34
feat(tools): added 48 new github tools, 12 triggers (#1821)
waleedlatif1 Nov 6, 2025
f9ce65e
feat(i18n): update translations (#1831)
waleedlatif1 Nov 6, 2025
742d59f
feat(hitl): add human in the loop block (#1832)
Sg312 Nov 6, 2025
c3436e9
feat(tools): added 50+ stripe tools and trigger and docs (#1816)
waleedlatif1 Nov 7, 2025
a31dc73
fix(copilot): fix image auth (#1841)
Sg312 Nov 7, 2025
eb459d0
feat(i18n): update translations (#1843)
waleedlatif1 Nov 7, 2025
c9a8c7e
feat(tools): added 200+ new tools across confluence, discord, exa, fi…
waleedlatif1 Nov 7, 2025
9fd2156
fix(streaming-api): fix streaming api (#1846)
Sg312 Nov 7, 2025
b6c2c74
fix(variables): fix variable resolution error and start block outputs…
Sg312 Nov 7, 2025
c427826
feat(i18n): update translations (#1844)
waleedlatif1 Nov 7, 2025
bb7016a
improvement(routes): type all untyped routes (#1848)
waleedlatif1 Nov 7, 2025
d3e81e9
fix(deploy-modal): remove deleted blocks from example curl (#1849)
waleedlatif1 Nov 7, 2025
6cdee53
feat(scopes): add scopes warning hook (#1842)
Sg312 Nov 8, 2025
a73e2aa
improvement(templates): make it top-level route and change management…
icecrasher321 Nov 8, 2025
f62568e
fix(variables, webhook): fix variable tag dropdown for escaped < and …
Sg312 Nov 8, 2025
c8ea08e
fix(file-upload): workspace/chat context not being passed in some for…
icecrasher321 Nov 8, 2025
d17c627
fix(deployed-chat): fix duplication and file uploads (#1853)
Sg312 Nov 8, 2025
e91a8af
fix(files): fix json uploads, disable storage metering when billing i…
waleedlatif1 Nov 8, 2025
7a8d47a
fix(schedules): locking schedules to prevent double runs (#1854)
icecrasher321 Nov 8, 2025
3f435ce
fix(hitl): rename uiurl to url (#1855)
Sg312 Nov 8, 2025
c397f5a
fix(triggers): update filtering logic for edges (#1856)
icecrasher321 Nov 8, 2025
945405c
feat(blogs): added blogs scaffolding (#1857)
waleedlatif1 Nov 8, 2025
eed2072
feat/platform-v3 (#1698)
emir-karabeg Nov 8, 2025
b3490e9
fix(build): remove mdx from transpilation (#1860)
waleedlatif1 Nov 8, 2025
e186ea6
improvement(ux): optimistic updates for envvars, custom tools, folder…
waleedlatif1 Nov 8, 2025
7c6e6d1
improvement(code): add wand config and system prompt for python code …
waleedlatif1 Nov 9, 2025
142d3aa
feat(helm): add copilot (#1833)
Sg312 Nov 9, 2025
75ce888
improvement(execution): trigger manual execution using mock payloads …
icecrasher321 Nov 9, 2025
d0720b8
feat(i18n): update translations (#1865)
waleedlatif1 Nov 9, 2025
28b4160
improvement(subblocks): fixed trigger save, schedule save, time inp, …
waleedlatif1 Nov 10, 2025
1e8b476
feat: toolbar, terminal, tool-input, emcn updates, chat, deploy (#1864)
emir-karabeg Nov 10, 2025
997c463
fix build
icecrasher321 Nov 10, 2025
b03f970
feat(permissions): extend hook to detect missing scopes to return tho…
waleedlatif1 Nov 10, 2025
81a12e7
improvement(performance): added revalidation caches on ollama and ope…
waleedlatif1 Nov 10, 2025
0d4d953
fixed payload error (#1873)
aadamgough Nov 10, 2025
0ed0a26
feat(workflow-block): added redeploy action to workflow header for wo…
waleedlatif1 Nov 10, 2025
2f9224c
feat(crms): added hubspot, asana, trello, salesforce, pipedrive tools…
aadamgough Nov 11, 2025
118c477
fix(copilot): fix triggers unsave on edit (#1874)
Sg312 Nov 11, 2025
170eb36
feat(subflows): editor, block; fix(copilot): stop, mr (#1877)
emir-karabeg Nov 11, 2025
698717d
feat(i18n): update translations (#1876)
waleedlatif1 Nov 11, 2025
4b37f92
improvement(ci): migrate to blacksmith runners (#1879)
waleedlatif1 Nov 11, 2025
cd48cd4
fix(start): fix start drag from toolbar (#1882)
Sg312 Nov 11, 2025
991b0e3
fix(triggers): fix triggers in subflows (#1883)
Sg312 Nov 11, 2025
8273185
improvement(display-names): move display name mapping to central stor…
icecrasher321 Nov 11, 2025
37fd21e
fix(agent): tool credential dropdown (#1884)
Sg312 Nov 11, 2025
ec70f6f
improvement(trigger-subflow): reuse helper code (#1885)
icecrasher321 Nov 11, 2025
68aaede
fix(dropdown): add dependsOn to dropdown component to dynamically fet…
waleedlatif1 Nov 11, 2025
bc25ea2
fix(deployed-chat): fix deployed chat page crash (#1891)
Sg312 Nov 11, 2025
fc162ab
fix(deployed-chat): fix page crash on chat stream completion (#1892)
Sg312 Nov 11, 2025
41f3d50
fix(deployed-chat): prevent multiple simultaneous messages (#1893)
Sg312 Nov 11, 2025
c86f2a0
fix(copilot): fix execute workflow from diff store (#1894)
Sg312 Nov 11, 2025
b6139d6
improvement(docs): simplify docs and add examples/pictures of v5 (#1887)
waleedlatif1 Nov 11, 2025
1130bef
fix(local): add missing deps, fix access patterns, update dockerfiles…
waleedlatif1 Nov 11, 2025
16bd54c
feat(i18n): update translations (#1896)
waleedlatif1 Nov 11, 2025
a6a9962
feat(registry): support multi-workflow delete (#1897)
waleedlatif1 Nov 11, 2025
7c398e6
feat(i18n): update translations (#1899)
waleedlatif1 Nov 11, 2025
1cce486
feat(notes): add notes (#1898)
Sg312 Nov 11, 2025
831ce91
fix(trace-spans): fixed small styling bugs (#1900)
aadamgough Nov 11, 2025
f00d551
fix(google-drive-picker): hydration issues with drive picker + depend…
icecrasher321 Nov 11, 2025
77d897d
feat(duplicate): added folder duplication, add duplicate to sidebar c…
waleedlatif1 Nov 11, 2025
77ba4d1
fix(copilot): fix sent message width (#1904)
Sg312 Nov 11, 2025
9b702c4
improvement(popover): added keyboard nav to tag dropdown popover to i…
waleedlatif1 Nov 11, 2025
b093550
fix(credentials): remove special scopes from additional scopes requir…
aadamgough Nov 11, 2025
7b48d6e
feat(workflow): workflow overhaul (#1906)
emir-karabeg Nov 12, 2025
679c341
fix(selectors-hydration): confluence, jira, teams (#1907)
icecrasher321 Nov 12, 2025
7695556
Fix start block numbering (#1909)
Sg312 Nov 12, 2025
96f134b
fix(variables): fixed floating variables, added autcomplete off to pr…
waleedlatif1 Nov 12, 2025
1d58fdf
fix(invites): remove uuid validation from inv api (#1910)
aadamgough Nov 12, 2025
d11ee04
fix(workspace-popover): added duplicate, import, export workspace; ad…
waleedlatif1 Nov 12, 2025
81411c7
feat(registry): renaming workspace and folders shortcut (#1912)
waleedlatif1 Nov 12, 2025
cbc98ab
fix(variables): display name rendering (#1915)
icecrasher321 Nov 12, 2025
5cea73f
fix(copilot): show subblocks in diff mode (#1916)
icecrasher321 Nov 12, 2025
41066b8
fix(executor): surface pre-execution errors (#1917)
Sg312 Nov 12, 2025
9a6a6fd
improvement(docs): updated with new ss, docs script updated to copy i…
waleedlatif1 Nov 12, 2025
56835b9
fix(executor): duplicate error, cmd+enter (#1920)
Sg312 Nov 12, 2025
e3e9518
v0.4.26
Sg312 Nov 12, 2025
1bd18ee
feat(tag-dropdown): added start block to tag dropdown by default (#1922)
waleedlatif1 Nov 12, 2025
fa42ea4
fix(conflict): resolve merge conflict
waleedlatif1 Nov 12, 2025
413c460
fix(billing): should allow restoring subscription (#1728) (#1925)
waleedlatif1 Nov 12, 2025
64c5f2c
feat(i18n): update translations (#1926)
waleedlatif1 Nov 12, 2025
a0c4bce
feat(studio): added 'studio' blog (#1927)
waleedlatif1 Nov 12, 2025
42e2769
feat: place all styles in global vars (#1923)
emir-karabeg Nov 12, 2025
f4434e3
feat: templates, usage indicator, wand, approval, logs, help, setting…
emir-karabeg Nov 12, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
19 changes: 19 additions & 0 deletions .cursorrules
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Role

You are a professional software engineer. All code you write MUST follow best practices, ensuring accuracy, quality, readability, and cleanliness. You MUST make FOCUSED EDITS that are EFFICIENT and ELEGANT.

## Logs

ENSURE that you use the logger.info and logger.warn and logger.error instead of the console.log whenever you want to display logs.

## Comments

You must use TSDOC for comments. Do not use ==== for comments to separate sections.

## Globals styles

You should not update the global styles unless it is absolutely necessary. Keep all styling local to components and files.

## Bun

Use bun and bunx not npm and npx
6 changes: 2 additions & 4 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -321,8 +321,7 @@ In addition, you will need to update the registries:
{
id: 'operation',
title: 'Operation',
type: 'dropdown',
layout: 'full',
type: 'dropdown'
required: true,
options: [
{ label: 'Generate Embeddings', id: 'generate' },
Expand All @@ -333,8 +332,7 @@ In addition, you will need to update the registries:
{
id: 'apiKey',
title: 'API Key',
type: 'short-input',
layout: 'full',
type: 'short-input'
placeholder: 'Your Pinecone API key',
password: true,
required: true,
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ jobs:
build-ghcr-arm64:
name: Build ARM64 (GHCR Only)
needs: test-build
runs-on: linux-arm64-8-core
runs-on: blacksmith-8vcpu-ubuntu-2404-arm
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
permissions:
contents: read
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/images.yml
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ jobs:

build-ghcr-arm64:
name: Build ARM64 (GHCR Only)
runs-on: linux-arm64-8-core
runs-on: blacksmith-8vcpu-ubuntu-2404-arm
if: github.ref == 'refs/heads/main'
strategy:
fail-fast: false
Expand Down
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ sim-standalone.tar.gz
next-env.d.ts

# cursorrules
.cursorrules
# .cursorrules

# docs
/apps/docs/.source
Expand Down
9 changes: 8 additions & 1 deletion apps/docs/app/[lang]/[[...slug]]/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import { DocsBody, DocsDescription, DocsPage, DocsTitle } from 'fumadocs-ui/page
import { ChevronLeft, ChevronRight } from 'lucide-react'
import Link from 'next/link'
import { notFound } from 'next/navigation'
import { PageNavigationArrows } from '@/components/docs-layout/page-navigation-arrows'
import { TOCFooter } from '@/components/docs-layout/toc-footer'
import { StructuredData } from '@/components/structured-data'
import { CodeBlock } from '@/components/ui/code-block'
import { CopyPageButton } from '@/components/ui/copy-page-button'
Expand Down Expand Up @@ -174,10 +176,14 @@ export default async function Page(props: { params: Promise<{ slug?: string[]; l
<DocsPage
toc={page.data.toc}
full={page.data.full}
breadcrumb={{
enabled: false,
}}
tableOfContent={{
style: 'clerk',
enabled: true,
header: <div className='mb-2 font-medium text-sm'>On this page</div>,
footer: <TOCFooter />,
single: false,
}}
article={{
Expand All @@ -193,14 +199,15 @@ export default async function Page(props: { params: Promise<{ slug?: string[]; l
}}
>
<div className='relative'>
<div className='absolute top-1 right-0'>
<div className='absolute top-1 right-0 flex items-center gap-2'>
<CopyPageButton
content={`# ${page.data.title}

${page.data.description || ''}

${page.data.content || ''}`}
/>
<PageNavigationArrows previous={neighbours?.previous} next={neighbours?.next} />
</div>
<DocsTitle>{page.data.title}</DocsTitle>
<DocsDescription>{page.data.description}</DocsDescription>
Expand Down
14 changes: 13 additions & 1 deletion apps/docs/app/api/search/route.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,16 @@
import { createFromSource } from 'fumadocs-core/search/server'
import { source } from '@/lib/source'

export const { GET } = createFromSource(source)
export const revalidate = 3600 // Revalidate every hour

export const { GET } = createFromSource(source, {
localeMap: {
en: { language: 'english' },
es: { language: 'spanish' },
fr: { language: 'french' },
de: { language: 'german' },
// ja and zh are not supported by the stemmer library, so we'll skip language config for them
ja: {},
zh: {},
},
})
10 changes: 5 additions & 5 deletions apps/docs/app/global.css
Original file line number Diff line number Diff line change
Expand Up @@ -243,8 +243,8 @@ aside#nd-sidebar {
:root:not(.dark) #nd-sidebar a.text-purple-600,
:root:not(.dark) #nd-sidebar a[class*="bg-purple"],
:root:not(.dark) #nd-sidebar a[class*="text-purple"] {
background-color: rgba(0, 0, 0, 0.1) !important;
color: rgba(0, 0, 0, 1) !important;
background-color: rgba(0, 0, 0, 0.07) !important;
color: rgba(0, 0, 0, 0.9) !important;
}

/* Dark mode hover state */
Expand All @@ -256,7 +256,7 @@ aside#nd-sidebar {
/* Light mode hover state */
:root:not(.dark) #nd-sidebar a:hover:not([data-active="true"]),
:root:not(.dark) #nd-sidebar button:hover:not([data-active="true"]) {
background-color: rgba(0, 0, 0, 0.06) !important;
background-color: rgba(0, 0, 0, 0.03) !important;
}

/* Dark mode - ensure active/selected items don't change on hover */
Expand All @@ -273,8 +273,8 @@ aside#nd-sidebar {
:root:not(.dark) #nd-sidebar a[class*="bg-purple"]:hover,
:root:not(.dark) #nd-sidebar a[data-active="true"]:hover,
:root:not(.dark) #nd-sidebar button[data-active="true"]:hover {
background-color: rgba(0, 0, 0, 0.1) !important;
color: rgba(0, 0, 0, 1) !important;
background-color: rgba(0, 0, 0, 0.07) !important;
color: rgba(0, 0, 0, 0.9) !important;
}

/* Hide search, platform, and collapse button from sidebar completely */
Expand Down
42 changes: 42 additions & 0 deletions apps/docs/components/docs-layout/page-navigation-arrows.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
'use client'

import { ChevronLeft, ChevronRight } from 'lucide-react'
import Link from 'next/link'

interface PageNavigationArrowsProps {
previous?: {
url: string
}
next?: {
url: string
}
}

export function PageNavigationArrows({ previous, next }: PageNavigationArrowsProps) {
if (!previous && !next) return null

return (
<div className='flex items-center gap-2'>
{previous && (
<Link
href={previous.url}
className='inline-flex items-center justify-center gap-1.5 rounded-lg border border-border/40 bg-background px-2.5 py-1.5 text-muted-foreground/60 text-sm transition-all hover:border-border hover:bg-accent/50 hover:text-muted-foreground'
aria-label='Previous page'
title='Previous page'
>
<ChevronLeft className='h-4 w-4' />
</Link>
)}
{next && (
<Link
href={next.url}
className='inline-flex items-center justify-center gap-1.5 rounded-lg border border-border/40 bg-background px-2.5 py-1.5 text-muted-foreground/60 text-sm transition-all hover:border-border hover:bg-accent/50 hover:text-muted-foreground'
aria-label='Next page'
title='Next page'
>
<ChevronRight className='h-4 w-4' />
</Link>
)}
</div>
)
}
6 changes: 5 additions & 1 deletion apps/docs/components/docs-layout/sidebar-components.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
'use client'

import { type ReactNode, useState } from 'react'
import { type ReactNode, useEffect, useState } from 'react'
import type { PageTree } from 'fumadocs-core/server'
import { ChevronRight } from 'lucide-react'
import Link from 'next/link'
Expand Down Expand Up @@ -46,6 +46,10 @@ export function SidebarFolder({
const hasActiveChild = checkHasActiveChild(item, pathname)
const [open, setOpen] = useState(hasActiveChild)

useEffect(() => {
setOpen(hasActiveChild)
}, [hasActiveChild])

return (
<li className='mb-[0.0625rem] list-none'>
{item.index ? (
Expand Down
41 changes: 41 additions & 0 deletions apps/docs/components/docs-layout/toc-footer.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
'use client'

import { useState } from 'react'
import { ArrowRight, ChevronRight } from 'lucide-react'
import Link from 'next/link'

export function TOCFooter() {
const [isHovered, setIsHovered] = useState(false)

return (
<div className='sticky bottom-0 mt-6'>
<div className='flex flex-col gap-2 rounded-lg border border-border bg-secondary p-6 text-sm'>
<div className='text-balance font-semibold text-base leading-tight'>
Start building today
</div>
<div className='text-muted-foreground'>Trusted by over 60,000 builders.</div>
<div className='text-muted-foreground'>
Build Agentic workflows visually on a drag-and-drop canvas or with natural language.
</div>
<Link
href='https://sim.ai/signup'
target='_blank'
rel='noopener noreferrer'
onMouseEnter={() => setIsHovered(true)}
onMouseLeave={() => setIsHovered(false)}
className='group mt-2 inline-flex h-8 w-fit items-center justify-center gap-1 whitespace-nowrap rounded-[10px] border border-[#6F3DFA] bg-gradient-to-b from-[#8357FF] to-[#6F3DFA] px-3 pr-[10px] pl-[12px] font-medium text-sm text-white shadow-[inset_0_2px_4px_0_#9B77FF] outline-none transition-all hover:shadow-lg focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50'
aria-label='Get started with Sim - Sign up for free'
>
<span>Get started</span>
<span className='inline-flex transition-transform duration-200 group-hover:translate-x-0.5'>
{isHovered ? (
<ArrowRight className='h-4 w-4' aria-hidden='true' />
) : (
<ChevronRight className='h-4 w-4' aria-hidden='true' />
)}
</span>
</Link>
</div>
</div>
)
}
Loading
Loading