diff --git a/apps/webapp/app/components/environments/EnvironmentLabel.tsx b/apps/webapp/app/components/environments/EnvironmentLabel.tsx index 33860b9c25..08bbe443dd 100644 --- a/apps/webapp/app/components/environments/EnvironmentLabel.tsx +++ b/apps/webapp/app/components/environments/EnvironmentLabel.tsx @@ -51,10 +51,14 @@ export function EnvironmentCombo({ environment, className, iconClassName, + tooltipSideOffset, + tooltipSide, }: { environment: Environment; className?: string; iconClassName?: string; + tooltipSideOffset?: number; + tooltipSide?: "top" | "right" | "bottom" | "left"; }) { return ( @@ -62,7 +66,11 @@ export function EnvironmentCombo({ environment={environment} className={cn("size-4.5 shrink-0", iconClassName)} /> - + ); } @@ -70,9 +78,13 @@ export function EnvironmentCombo({ export function EnvironmentLabel({ environment, className, + tooltipSideOffset = 34, + tooltipSide = "right", }: { environment: Environment; className?: string; + tooltipSideOffset?: number; + tooltipSide?: "top" | "right" | "bottom" | "left"; }) { const spanRef = useRef(null); const [isTruncated, setIsTruncated] = useState(false); @@ -115,9 +127,10 @@ export function EnvironmentLabel({ {text} } - side="right" + side={tooltipSide} variant="dark" - sideOffset={34} + sideOffset={tooltipSideOffset} + disableHoverableContent /> ); } diff --git a/apps/webapp/app/components/primitives/Buttons.tsx b/apps/webapp/app/components/primitives/Buttons.tsx index c2845f1040..5c52a5d95d 100644 --- a/apps/webapp/app/components/primitives/Buttons.tsx +++ b/apps/webapp/app/components/primitives/Buttons.tsx @@ -389,7 +389,7 @@ export const LinkButton = ({ to={to} ref={innerRef} replace={replace} - className={cn("group/button block focus-custom", props.fullWidth ? "w-full" : "")} + className={cn("group/button block focus-custom", props.fullWidth ? "w-full" : "w-fit")} onClick={onClick} onMouseDown={onMouseDown} onMouseEnter={onMouseEnter} diff --git a/apps/webapp/app/components/primitives/Table.tsx b/apps/webapp/app/components/primitives/Table.tsx index a51c78cc82..85dba4d73b 100644 --- a/apps/webapp/app/components/primitives/Table.tsx +++ b/apps/webapp/app/components/primitives/Table.tsx @@ -15,6 +15,14 @@ const variants = { menuButtonDivider: "group-hover/table-row:border-charcoal-600/70", rowSelected: "bg-charcoal-750 group-hover/table-row:bg-charcoal-750", }, + "bright/no-hover": { + header: "bg-transparent", + cell: "group-hover/table-row:bg-transparent", + stickyCell: "bg-background-bright", + menuButton: "bg-background-bright", + menuButtonDivider: "", + rowSelected: "bg-charcoal-750", + }, dimmed: { header: "bg-background-dimmed", cell: "group-hover/table-row:bg-charcoal-800 group-has-[[tabindex='0']:focus]/table-row:bg-background-bright", diff --git a/apps/webapp/app/components/primitives/Tooltip.tsx b/apps/webapp/app/components/primitives/Tooltip.tsx index 5c681927b5..7f855044f7 100644 --- a/apps/webapp/app/components/primitives/Tooltip.tsx +++ b/apps/webapp/app/components/primitives/Tooltip.tsx @@ -85,6 +85,7 @@ function SimpleTooltip({ - +
Extra concurrency purchased @@ -379,8 +381,15 @@ function Upgradable({ )} - - + 0 ? undefined : "after:bg-transparent" + } + > + 0 || allocationModified) && "pr-0")} + >
{allocationModified ? ( unallocated < 0 ? ( @@ -419,6 +428,16 @@ function Upgradable({
) + ) : unallocated > 0 ? ( +
+
+ + + You have {unallocated} extra concurrency available to allocate below. + +
+ +
) : ( <> )} @@ -434,7 +453,7 @@ function Upgradable({
Concurrency allocation
-
+
Environment @@ -452,7 +471,12 @@ function Upgradable({ {environments.map((environment, index) => ( - + {environment.planConcurrencyLimit} @@ -523,7 +547,7 @@ function NotUpgradable({ environments }: { environments: EnvironmentWithConcurre ) : null}
-
+
Environment @@ -682,7 +706,7 @@ function PurchaseConcurrencyModal({
- ({extraConcurrency / concurrencyPricing.stepSize} bundles) + ({simplur`${extraConcurrency / concurrencyPricing.stepSize} bundle[|s]`}) /mth
@@ -703,8 +727,11 @@ function PurchaseConcurrencyModal({
- ({(amountValue - extraConcurrency) / concurrencyPricing.stepSize} bundles @{" "} - {formatCurrency(concurrencyPricing.centsPerStep / 100, true)}/mth) + ( + {simplur`${ + (amountValue - extraConcurrency) / concurrencyPricing.stepSize + } bundle[|s]`}{" "} + @ {formatCurrency(concurrencyPricing.centsPerStep / 100, true)}/mth) /mth
@@ -723,7 +750,7 @@ function PurchaseConcurrencyModal({
- ({amountValue / concurrencyPricing.stepSize} bundles) + ({simplur`${amountValue / concurrencyPricing.stepSize} bundle[|s]`}) /mth
diff --git a/docs/limits.mdx b/docs/limits.mdx index c1149c8343..1f46df445a 100644 --- a/docs/limits.mdx +++ b/docs/limits.mdx @@ -13,7 +13,7 @@ import RateLimitHitUseBatchTrigger from "/snippets/rate-limit-hit-use-batchtrigg | Hobby | 25 concurrent runs | | Pro | 100+ concurrent runs | -Additional bundles above the Pro tier are available for $50/month per 50 concurrent runs. Contact us via [email](https://trigger.dev/contact) or [Discord](https://trigger.dev/discord) to request more. +Extra concurrency above the Pro tier limit is available via the dashboard. Click the "Concurrency" page from the left sidebar when on the Pro plan to purchase more. ## Rate limits