diff --git a/apps/sim/app/(landing)/blog/[slug]/page.tsx b/apps/sim/app/(landing)/blog/[slug]/page.tsx index 859b093f311..d5ed263e2b5 100644 --- a/apps/sim/app/(landing)/blog/[slug]/page.tsx +++ b/apps/sim/app/(landing)/blog/[slug]/page.tsx @@ -60,6 +60,7 @@ export default async function Page({ params }: { params: Promise<{ slug: string sizes='(max-width: 768px) 100vw, 450px' priority itemProp='image' + unoptimized /> @@ -143,6 +144,7 @@ export default async function Page({ params }: { params: Promise<{ slug: string className='h-[160px] w-full object-cover' sizes='(max-width: 640px) 100vw, (max-width: 1024px) 50vw, 33vw' loading='lazy' + unoptimized />
diff --git a/apps/sim/app/(landing)/blog/authors/[id]/page.tsx b/apps/sim/app/(landing)/blog/authors/[id]/page.tsx index 6d5bdd0becc..9cb330c396e 100644 --- a/apps/sim/app/(landing)/blog/authors/[id]/page.tsx +++ b/apps/sim/app/(landing)/blog/authors/[id]/page.tsx @@ -64,6 +64,7 @@ export default async function AuthorPage({ params }: { params: Promise<{ id: str width={600} height={315} className='h-[160px] w-full object-cover transition-transform group-hover:scale-[1.02]' + unoptimized />
diff --git a/apps/sim/app/(landing)/blog/post-grid.tsx b/apps/sim/app/(landing)/blog/post-grid.tsx index 3077b7eef07..e9889dd9b3c 100644 --- a/apps/sim/app/(landing)/blog/post-grid.tsx +++ b/apps/sim/app/(landing)/blog/post-grid.tsx @@ -32,6 +32,7 @@ export function PostGrid({ posts }: { posts: Post[] }) { src={p.ogImage} alt={p.title} sizes='(max-width: 768px) 100vw, (max-width: 1024px) 50vw, 33vw' + unoptimized priority={index < 6} loading={index < 6 ? undefined : 'lazy'} fill diff --git a/apps/sim/app/workspace/[workspaceId]/settings/components/subscription/components/credit-balance/credit-balance.tsx b/apps/sim/app/workspace/[workspaceId]/settings/components/subscription/components/credit-balance/credit-balance.tsx index aeb05dd4c20..f122b31405e 100644 --- a/apps/sim/app/workspace/[workspaceId]/settings/components/subscription/components/credit-balance/credit-balance.tsx +++ b/apps/sim/app/workspace/[workspaceId]/settings/components/subscription/components/credit-balance/credit-balance.tsx @@ -1,6 +1,6 @@ 'use client' -import { useState } from 'react' +import { useEffect, useRef, useState } from 'react' import { Button, Input, @@ -39,10 +39,55 @@ export function CreditBalance({ const [validationError, setValidationError] = useState(null) const [requestId, setRequestId] = useState(null) const purchaseCredits = usePurchaseCredits() + const closeTimeoutRef = useRef | null>(null) const dollarAmount = Number.parseInt(amount, 10) || 0 const creditPreview = dollarsToCredits(dollarAmount) + const clearCloseTimeout = () => { + if (closeTimeoutRef.current) { + clearTimeout(closeTimeoutRef.current) + closeTimeoutRef.current = null + } + } + + const resetModalState = () => { + setAmount('') + setValidationError(null) + purchaseCredits.reset() + } + + const openModal = () => { + clearCloseTimeout() + resetModalState() + setRequestId(crypto.randomUUID()) + setIsOpen(true) + } + + const closeModal = () => { + clearCloseTimeout() + setIsOpen(false) + setRequestId(null) + resetModalState() + } + + useEffect(() => { + return () => { + clearCloseTimeout() + } + }, []) + + const handleOpenChange = (open: boolean) => { + if (open) { + openModal() + return + } + + if (!purchaseCredits.isPending) { + closeModal() + } + } + const handleAmountChange = (value: string) => { const numericValue = value.replace(/[^0-9]/g, '') setAmount(numericValue) @@ -68,27 +113,16 @@ export function CreditBalance({ { amount: numAmount, requestId }, { onSuccess: () => { - setTimeout(() => { - setIsOpen(false) - onPurchaseComplete?.() + onPurchaseComplete?.() + clearCloseTimeout() + closeTimeoutRef.current = setTimeout(() => { + closeModal() }, 1500) }, } ) } - const handleOpenChange = (open: boolean) => { - setIsOpen(open) - if (open) { - setRequestId(crypto.randomUUID()) - } else { - setAmount('') - setValidationError(null) - purchaseCredits.reset() - setRequestId(null) - } - } - const displayError = validationError || purchaseCredits.error?.message return ( @@ -103,9 +137,7 @@ export function CreditBalance({ {canPurchase && ( - + Add Credits diff --git a/apps/sim/app/workspace/[workspaceId]/settings/components/subscription/subscription.tsx b/apps/sim/app/workspace/[workspaceId]/settings/components/subscription/subscription.tsx index ac36b354880..9ca42566132 100644 --- a/apps/sim/app/workspace/[workspaceId]/settings/components/subscription/subscription.tsx +++ b/apps/sim/app/workspace/[workspaceId]/settings/components/subscription/subscription.tsx @@ -192,9 +192,9 @@ function CreditPlanCard({ return (
-
+
{name} -
+
${isAnnual ? discountedMonthly : dollars} @@ -207,7 +207,7 @@ function CreditPlanCard({
-
+
{credits.toLocaleString()} @@ -242,13 +242,13 @@ function CreditPlanCard({
)} -
+
{isCurrentPlan ? ( - ) : ( - )} @@ -933,9 +933,9 @@ export function Subscription() { {/* Billing details section */} {(subscription.isPaid || (!isLoading && isTeamAdmin)) && ( -
+
{subscription.isPaid && permissions.canViewUsageInfo && ( -
+
+
{new Date(subscriptionData.data.periodEnd).toLocaleDateString()} @@ -961,7 +961,7 @@ export function Subscription() { )} {subscription.isPaid && permissions.canViewUsageInfo && ( -
+
)} @@ -969,11 +969,10 @@ export function Subscription() { {subscription.isPaid && !permissions.showTeamMemberView && !permissions.isEnterpriseMember && ( -
+