diff --git a/apps/sim/app/(home)/components/collaboration/collaboration.tsx b/apps/sim/app/(home)/components/collaboration/collaboration.tsx index 302bcc05904..02bee46ab15 100644 --- a/apps/sim/app/(home)/components/collaboration/collaboration.tsx +++ b/apps/sim/app/(home)/components/collaboration/collaboration.tsx @@ -288,7 +288,6 @@ export default function Collaboration() { width={876} height={480} className='h-full w-auto object-left md:min-w-[100vw]' - priority />
diff --git a/apps/sim/app/(home)/components/enterprise/components/access-control-panel.tsx b/apps/sim/app/(home)/components/enterprise/components/access-control-panel.tsx index 652b2b98ed3..e8c79862acd 100644 --- a/apps/sim/app/(home)/components/enterprise/components/access-control-panel.tsx +++ b/apps/sim/app/(home)/components/enterprise/components/access-control-panel.tsx @@ -81,6 +81,56 @@ function ProviderPreviewIcon({ providerId }: { providerId?: string }) { ) } +interface FeatureToggleItemProps { + feature: PermissionFeature + enabled: boolean + color: string + isInView: boolean + delay: number + textClassName: string + transition: Record + onToggle: () => void +} + +function FeatureToggleItem({ + feature, + enabled, + color, + isInView, + delay, + textClassName, + transition, + onToggle, +}: FeatureToggleItemProps) { + return ( + { + if (e.key === 'Enter' || e.key === ' ') { + e.preventDefault() + onToggle() + } + }} + whileTap={{ scale: 0.98 }} + > + + + + {feature.name} + + + ) +} + export function AccessControlPanel() { const ref = useRef(null) const isInView = useInView(ref, { once: true, margin: '-40px' }) @@ -97,39 +147,25 @@ export function AccessControlPanel() { return (
0 ? 'mt-4' : ''}> - + {category.label}
- {category.features.map((feature, featIdx) => { - const enabled = accessState[feature.key] - - return ( - - setAccessState((prev) => ({ ...prev, [feature.key]: !prev[feature.key] })) - } - whileTap={{ scale: 0.98 }} - > - - - - {feature.name} - - - ) - })} + {category.features.map((feature, featIdx) => ( + + setAccessState((prev) => ({ ...prev, [feature.key]: !prev[feature.key] })) + } + /> + ))}
) @@ -140,12 +176,11 @@ export function AccessControlPanel() {
{PERMISSION_CATEGORIES.map((category, catIdx) => (
0 ? 'mt-4' : ''}> - + {category.label}
{category.features.map((feature, featIdx) => { - const enabled = accessState[feature.key] const currentIndex = PERMISSION_CATEGORIES.slice(0, catIdx).reduce( (sum, c) => sum + c.features.length, @@ -153,30 +188,19 @@ export function AccessControlPanel() { ) + featIdx return ( - + feature={feature} + enabled={accessState[feature.key]} + color={category.color} + isInView={isInView} + delay={0.1 + currentIndex * 0.04} + textClassName='truncate font-[430] font-season text-[11px] leading-none tracking-[0.02em] transition-opacity duration-200' + transition={{ duration: 0.3, ease: [0.25, 0.46, 0.45, 0.94] }} + onToggle={() => setAccessState((prev) => ({ ...prev, [feature.key]: !prev[feature.key] })) } - whileTap={{ scale: 0.98 }} - > - - - - {feature.name} - - + /> ) })}
diff --git a/apps/sim/app/(home)/components/enterprise/components/audit-log-preview.tsx b/apps/sim/app/(home)/components/enterprise/components/audit-log-preview.tsx index 53c938af1f5..89ad672e678 100644 --- a/apps/sim/app/(home)/components/enterprise/components/audit-log-preview.tsx +++ b/apps/sim/app/(home)/components/enterprise/components/audit-log-preview.tsx @@ -146,14 +146,14 @@ function AuditRow({ entry, index }: AuditRowProps) {
{/* Time */} - + {timeAgo} {entry.actor} - · + · {entry.description} diff --git a/apps/sim/app/(home)/components/enterprise/enterprise.tsx b/apps/sim/app/(home)/components/enterprise/enterprise.tsx index 52da8845d49..da8a88461c6 100644 --- a/apps/sim/app/(home)/components/enterprise/enterprise.tsx +++ b/apps/sim/app/(home)/components/enterprise/enterprise.tsx @@ -85,7 +85,7 @@ function TrustStrip() { SOC 2 & HIPAA - + Type II · PHI protected →
@@ -105,7 +105,7 @@ function TrustStrip() { Open Source - + View on GitHub →
@@ -120,7 +120,7 @@ function TrustStrip() { SSO & SCIM - + Okta, Azure AD, Google @@ -165,7 +165,7 @@ export default function Enterprise() {

Audit Trail

-

+

Every action is captured with full actor attribution.

@@ -179,7 +179,7 @@ export default function Enterprise() {

Access Control

-

+

Restrict providers, surfaces, and tools per group.

@@ -211,7 +211,7 @@ export default function Enterprise() { (tag, i) => ( {tag} @@ -221,7 +221,7 @@ export default function Enterprise() {
-

+

Ready for growth?

diff --git a/apps/sim/app/(home)/components/features/features.tsx b/apps/sim/app/(home)/components/features/features.tsx index d402803ac91..1b5d9b8c9a8 100644 --- a/apps/sim/app/(home)/components/features/features.tsx +++ b/apps/sim/app/(home)/components/features/features.tsx @@ -190,7 +190,6 @@ export default function Features() { width={1440} height={366} className='h-auto w-full' - priority />
diff --git a/apps/sim/app/(home)/components/footer/footer-cta.tsx b/apps/sim/app/(home)/components/footer/footer-cta.tsx index b67ae3b3f84..984252f270a 100644 --- a/apps/sim/app/(home)/components/footer/footer-cta.tsx +++ b/apps/sim/app/(home)/components/footer/footer-cta.tsx @@ -67,6 +67,7 @@ export function FooterCTA() { type='button' onClick={handleSubmit} disabled={isEmpty} + aria-label='Submit message' className='flex h-[28px] w-[28px] items-center justify-center rounded-full border-0 p-0 transition-colors' style={{ background: isEmpty ? '#C0C0C0' : '#1C1C1C', diff --git a/apps/sim/app/layout.tsx b/apps/sim/app/layout.tsx index a58f0c25cbf..05fd18a7c0b 100644 --- a/apps/sim/app/layout.tsx +++ b/apps/sim/app/layout.tsx @@ -218,6 +218,7 @@ export default function RootLayout({ children }: { children: React.ReactNode }) {/* OneDollarStats Analytics */} +