Skip to content

Commit d5746c8

Browse files
fix(landing): keep feature-tile graphics uncropped at small breakpoints
Feature tiles shrank their min-height on small screens while the tallest vignettes (audit ledger, staging panel) still needed ~300px of visual slot, cropping their tops against the slot's overflow-hidden. Tiles now hold one 440px min-height everywhere. The 3-up grid also collapses to two columns below lg instead of md, and the fixed-width canvases (access graph, standards seal, ops router) scale down on the narrow two-column band and the 3-up row just past lg so outer labels and chips are never cut off. Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent 200d2d0 commit d5746c8

6 files changed

Lines changed: 26 additions & 10 deletions

File tree

apps/sim/app/(landing)/components/solutions-page/components/solutions-card-row/solutions-card-row.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ export function SolutionsCardRow({
9999
className={cn(
100100
'grid',
101101
gridCols,
102-
'max-sm:grid-cols-1 max-md:grid-cols-2',
102+
'max-sm:grid-cols-1 max-lg:grid-cols-2',
103103
SOLUTIONS_SPACING.cardGridGap
104104
)}
105105
>

apps/sim/app/(landing)/components/solutions-page/constants.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,14 @@ export const SOLUTIONS_VISUAL = {
8888
heroAspect: 'aspect-[16/9]',
8989
/** Fixed height of a card's visual panel - uniform across every card. */
9090
cardHeight: 'h-[240px]',
91-
/** Minimum height for framed feature tiles with copy and future UI in one surface. */
92-
featureTileMinHeight: 'min-h-[440px] max-lg:min-h-[400px] max-sm:min-h-[380px]',
91+
/**
92+
* Minimum height for framed feature tiles with copy and future UI in one
93+
* surface. One value at every breakpoint: the tallest tile vignettes (audit
94+
* ledger, staging panel) need ~300px of visual slot below the copy block, so
95+
* shrinking the tile on small screens crops their tops against the slot's
96+
* `overflow-hidden`.
97+
*/
98+
featureTileMinHeight: 'min-h-[440px]',
9399
} as const
94100

95101
/**

apps/sim/app/(landing)/enterprise/components/feature-graphics/access-control-graphic.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,11 @@ function edgePath(edge: Edge): string {
9696
* shrink at narrow tile widths its absolutely-positioned columns (fixed
9797
* `left-*` coordinates) would drift right of the box's true midline;
9898
* instead it keeps its geometry and overflows both edges equally, so the
99-
* Support → Review axis always sits on the tile's center.
99+
* Support → Review axis always sits on the tile's center. On the narrow
100+
* grid bands where the tile drops below the canvas width (small two-column
101+
* screens and the 3-up row just past `lg`) the whole canvas scales down via
102+
* transform — preserving that centering — so the outer team labels are
103+
* never cropped.
100104
*/
101105
export function AccessControlGraphic() {
102106
return (
@@ -105,7 +109,7 @@ export function AccessControlGraphic() {
105109
aria-hidden='true'
106110
className='absolute inset-0 flex items-center justify-center pr-8 max-lg:pr-6'
107111
>
108-
<div className='relative h-[250px] w-[320px] shrink-0'>
112+
<div className='relative h-[250px] w-[320px] shrink-0 max-sm:scale-100 max-md:scale-[0.8] lg:max-[1180px]:scale-[0.8]'>
109113
<svg
110114
className='absolute inset-0'
111115
fill='none'

apps/sim/app/(landing)/enterprise/components/feature-graphics/audit-trail-graphic.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ export function AuditTrailGraphic() {
103103
aria-hidden='true'
104104
className='absolute inset-0 flex items-center justify-center pr-8 max-lg:pr-6'
105105
>
106-
<div className='w-[312px]'>
106+
<div className='w-full max-w-[312px]'>
107107
<div className='mb-4 flex items-center justify-between'>
108108
<span className='font-medium text-[var(--text-primary)] text-base'>Audit log</span>
109109
<ChipTag variant='mono' className='bg-[var(--surface-6)]'>

apps/sim/app/(landing)/enterprise/components/feature-graphics/operations-teams-graphic.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -199,14 +199,17 @@ function PortTag({ port }: { port: Port }) {
199199
* center. The fixed-size canvas is centered with a transform (`left-1/2`
200200
* + `-translate-x-1/2`, the standards tile's approach) so at narrow tile
201201
* widths it keeps its wiring geometry and overflows both edges equally
202-
* instead of drifting.
202+
* instead of drifting. On the narrow grid bands where the tile drops
203+
* below the canvas width (small two-column screens and the 3-up row just
204+
* past `lg`) the canvas scales down via transform so the outer tool pills
205+
* are never cropped.
203206
*/
204207
export function OperationsTeamsGraphic() {
205208
return (
206209
<FeatureGraphicShell>
207210
<div aria-hidden='true' className='absolute inset-0 pr-8 pb-8 max-lg:pr-6 max-lg:pb-6'>
208211
<div className='relative h-full'>
209-
<div className='-translate-x-1/2 -translate-y-1/2 absolute top-1/2 left-1/2 h-[248px] w-[280px]'>
212+
<div className='-translate-x-1/2 -translate-y-1/2 absolute top-1/2 left-1/2 h-[248px] w-[280px] max-sm:scale-100 max-md:scale-[0.85] lg:max-[1180px]:scale-[0.85]'>
210213
<svg
211214
className='absolute inset-0'
212215
fill='none'

apps/sim/app/(landing)/enterprise/components/feature-graphics/standards-graphic.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,14 +55,17 @@ import styles from '@/app/(landing)/enterprise/components/feature-graphics/stand
5555
* bled slot's center. The canvas itself is centered with a transform
5656
* (`left-1/2` + `-translate-x-1/2`) rather than flex `justify-center`
5757
* because an overflowing fixed-size flex item start-aligns instead of
58-
* centering once the tile gets narrower than the canvas.
58+
* centering once the tile gets narrower than the canvas. On the narrow
59+
* grid bands where the tile drops below the canvas width (small
60+
* two-column screens and the 3-up row just past `lg`) the canvas scales
61+
* down via transform so the SOC 2 / Open source chips are never cropped.
5962
*/
6063
export function StandardsGraphic() {
6164
return (
6265
<FeatureGraphicShell>
6366
<div aria-hidden='true' className='absolute inset-0 pr-8 max-lg:pr-6'>
6467
<div className='relative h-full'>
65-
<div className='-translate-x-1/2 -translate-y-1/2 absolute top-1/2 left-1/2 h-[250px] w-[320px]'>
68+
<div className='-translate-x-1/2 -translate-y-1/2 absolute top-1/2 left-1/2 h-[250px] w-[320px] max-sm:scale-100 max-md:scale-[0.8] lg:max-[1180px]:scale-[0.8]'>
6669
<div className='absolute top-0 left-[48px] size-[224px] rounded-full border border-[color:color-mix(in_srgb,var(--text-muted-inverse)_22%,transparent)] [mask-image:linear-gradient(to_bottom,black_30%,transparent_92%)]' />
6770
<div className='absolute top-[36px] left-[84px] size-[152px] rounded-full border border-[color:color-mix(in_srgb,var(--text-muted-inverse)_35%,transparent)]' />
6871

0 commit comments

Comments
 (0)