Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified bun.lockb
100644 → 100755
Binary file not shown.
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
"@stripe/stripe-js": "^2.4.0",
"@supabase/ssr": "^0.5.2",
"@supabase/supabase-js": "^2.47.12",
"@tailwindcss/postcss": "^4.1.11",
"@vercel/analytics": "^1.4.1",
"class-variance-authority": "^0.7.1",
"classnames": "^2.5.1",
Expand All @@ -43,14 +44,13 @@
"resend": "^4.1.1",
"stripe": "^14.25.0",
"tailwind-merge": "^2.6.0",
"tailwindcss": "^3.4.17",
"tailwindcss": "^4.1.11",
"tailwindcss-animate": "^1.0.7",
"zod": "^3.24.1"
},
"devDependencies": {
"@types/react": "19.0.4",
"@types/react-dom": "19.0.2",
"autoprefixer": "^10.4.20",
"env-cmd": "^10.1.0",
"eslint": "^8.57.1",
"eslint-config-next": "^15.1.4",
Expand All @@ -60,7 +60,7 @@
"eslint-plugin-tailwindcss": "^3.17.5",
"postcss": "^8.4.49",
"prettier": "^2.8.8",
"prettier-plugin-tailwindcss": "^0.3.0",
"prettier-plugin-tailwindcss": "^0.6.14",
"supabase": "^1.226.4",
"typescript": "^5.7.3"
},
Expand Down
3 changes: 1 addition & 2 deletions postcss.config.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
module.exports = {
plugins: {
tailwindcss: {},
autoprefixer: {},
'@tailwindcss/postcss': {},
},
}
4 changes: 2 additions & 2 deletions src/app/navigation.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ export async function Navigation() {
<AccountMenu signOut={signOut} />
) : (
<>
<Button variant='sexy' className='hidden flex-shrink-0 lg:flex' asChild>
<Button variant='sexy' className='hidden shrink-0 lg:flex' asChild>
<Link href='/signup'>Get started for free</Link>
</Button>
<Sheet>
Expand All @@ -29,7 +29,7 @@ export async function Navigation() {
<SheetHeader>
<Logo />
<SheetDescription className='py-8'>
<Button variant='sexy' className='flex-shrink-0' asChild>
<Button variant='sexy' className='shrink-0' asChild>
<Link href='/signup'>Get started for free</Link>
</Button>
</SheetDescription>
Expand Down
20 changes: 10 additions & 10 deletions src/app/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ function HeroSection() {
<section className='relative overflow-hidden lg:overflow-visible'>
<Container className='relative rounded-lg bg-black py-20 lg:py-[140px]'>
<div className='relative z-10 flex flex-col gap-5 lg:max-w-xl lg:pl-8'>
<div className='w-fit rounded-full bg-gradient-to-r from-[#616571] via-[#7782A9] to-[#826674] px-4 py-1 '>
<div className='w-fit rounded-full bg-linear-to-r from-[#616571] via-[#7782A9] to-[#826674] px-4 py-1 '>
<span className='font-alt text-sm font-semibold text-black mix-blend-soft-light'>
Generate banners with DALL·E
</span>
Expand Down Expand Up @@ -49,23 +49,23 @@ function ExamplesSection() {
<section className='flex flex-col gap-4 overflow-hidden rounded-lg bg-black py-8'>
<div className='flex justify-center gap-4'>
<Image
className='flex-shrink-0'
className='shrink-0'
src='/example1.png'
width={600}
height={200}
alt='Example of a generated banner'
quality={100}
/>
<Image
className='flex-shrink-0'
className='shrink-0'
src='/example2.png'
width={600}
height={200}
alt='Example of a generated banner'
quality={100}
/>
<Image
className='flex-shrink-0'
className='shrink-0'
src='/example3.png'
width={600}
height={200}
Expand All @@ -75,23 +75,23 @@ function ExamplesSection() {
</div>
<div className='flex gap-4'>
<Image
className='flex-shrink-0'
className='shrink-0'
src='/example4.png'
width={600}
height={200}
alt='Example of a generated banner'
quality={100}
/>
<Image
className='flex-shrink-0'
className='shrink-0'
src='/example5.png'
width={600}
height={200}
alt='Example of a generated banner'
quality={100}
/>
<Image
className='flex-shrink-0'
className='shrink-0'
src='/example6.png'
width={600}
height={200}
Expand All @@ -101,23 +101,23 @@ function ExamplesSection() {
</div>
<div className='flex justify-center gap-4'>
<Image
className='flex-shrink-0'
className='shrink-0'
src='/example7.png'
width={600}
height={200}
alt='Example of a generated banner'
quality={100}
/>
<Image
className='flex-shrink-0'
className='shrink-0'
src='/example8.png'
width={600}
height={200}
alt='Example of a generated banner'
quality={100}
/>
<Image
className='flex-shrink-0'
className='shrink-0'
src='/example9.png'
width={600}
height={200}
Expand Down
2 changes: 1 addition & 1 deletion src/components/sexy-boarder.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ export function SexyBoarder({
right: `-${offset}px`,
top: `-${offset}px`,
}}
className={`absolute m-auto aspect-square animate-spin-slow rounded-full bg-gradient-to-r from-[#5ED4FF] via-[#D13C5F] to-[#F98324]`}
className={`absolute m-auto aspect-square animate-spin-slow rounded-full bg-linear-to-r from-[#5ED4FF] via-[#D13C5F] to-[#F98324]`}
/>
</div>
);
Expand Down
12 changes: 6 additions & 6 deletions src/components/ui/dropdown-menu.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ const DropdownMenuSubTrigger = React.forwardRef<
<DropdownMenuPrimitive.SubTrigger
ref={ref}
className={cn(
'flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent',
'flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-hidden focus:bg-accent data-[state=open]:bg-accent',
inset && 'pl-8',
className
)}
Expand All @@ -48,7 +48,7 @@ const DropdownMenuSubContent = React.forwardRef<
<DropdownMenuPrimitive.SubContent
ref={ref}
className={cn(
'z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',
'z-50 min-w-32 overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',
className
)}
{...props}
Expand All @@ -65,7 +65,7 @@ const DropdownMenuContent = React.forwardRef<
ref={ref}
sideOffset={sideOffset}
className={cn(
'z-50 min-w-[8rem] overflow-hidden rounded-md bg-popover p-1 text-popover-foreground shadow-md',
'z-50 min-w-32 overflow-hidden rounded-md bg-popover p-1 text-popover-foreground shadow-md',
'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',
className
)}
Expand All @@ -84,7 +84,7 @@ const DropdownMenuItem = React.forwardRef<
<DropdownMenuPrimitive.Item
ref={ref}
className={cn(
'relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm font-medium outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',
'relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm font-medium outline-hidden transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50',
inset && 'ps-8',
className
)}
Expand All @@ -100,7 +100,7 @@ const DropdownMenuCheckboxItem = React.forwardRef<
<DropdownMenuPrimitive.CheckboxItem
ref={ref}
className={cn(
'relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',
'relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-hidden transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50',
className
)}
checked={checked}
Expand All @@ -123,7 +123,7 @@ const DropdownMenuRadioItem = React.forwardRef<
<DropdownMenuPrimitive.RadioItem
ref={ref}
className={cn(
'relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',
'relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-hidden transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50',
className
)}
{...props}
Expand Down
4 changes: 2 additions & 2 deletions src/components/ui/tabs.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ const TabsTrigger = React.forwardRef<
<TabsPrimitive.Trigger
ref={ref}
className={cn(
'inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-black data-[state=active]:text-foreground data-[state=active]:shadow',
'inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-black data-[state=active]:text-foreground data-[state=active]:shadow-sm',
className
)}
{...props}
Expand All @@ -44,7 +44,7 @@ const TabsContent = React.forwardRef<
<TabsPrimitive.Content
ref={ref}
className={cn(
'mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',
'mt-2 ring-offset-background focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',
className
)}
{...props}
Expand Down
8 changes: 4 additions & 4 deletions src/components/ui/toast.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ const ToastViewport = React.forwardRef<
<ToastPrimitives.Viewport
ref={ref}
className={cn(
'fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]',
'fixed top-0 z-100 flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]',
className
)}
{...props}
Expand All @@ -23,7 +23,7 @@ const ToastViewport = React.forwardRef<
ToastViewport.displayName = ToastPrimitives.Viewport.displayName;

const toastVariants = cva(
'group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full',
'group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-(--radix-toast-swipe-end-x) data-[swipe=move]:translate-x-(--radix-toast-swipe-move-x) data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full',
{
variants: {
variant: {
Expand Down Expand Up @@ -52,7 +52,7 @@ const ToastAction = React.forwardRef<
<ToastPrimitives.Action
ref={ref}
className={cn(
'inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-secondary focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive',
'inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-secondary focus:outline-hidden focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 hover:group-[.destructive]:border-destructive/30 hover:group-[.destructive]:bg-destructive hover:group-[.destructive]:text-destructive-foreground focus:group-[.destructive]:ring-destructive',
className
)}
{...props}
Expand All @@ -67,7 +67,7 @@ const ToastClose = React.forwardRef<
<ToastPrimitives.Close
ref={ref}
className={cn(
'absolute right-1 top-1 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600',
'absolute right-1 top-1 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-hidden focus:ring-1 group-hover:opacity-100 group-[.destructive]:text-red-300 hover:group-[.destructive]:text-red-50 focus:group-[.destructive]:ring-red-400 focus:group-[.destructive]:ring-offset-red-600',
className
)}
toast-close=''
Expand Down
2 changes: 1 addition & 1 deletion src/features/pricing/components/price-card.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ export function PricingCard({
function CheckItem({ text }: { text: string }) {
return (
<div className='flex items-center gap-2'>
<IoCheckmark className='my-auto flex-shrink-0 text-slate-500' />
<IoCheckmark className='my-auto shrink-0 text-slate-500' />
<p className='text-sm font-medium text-white first-letter:capitalize'>{text}</p>
</div>
);
Expand Down
2 changes: 1 addition & 1 deletion src/features/pricing/components/pricing-section.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ export async function PricingSection({ isPricingPage }: { isPricingPage?: boolea
return (
<section className='relative rounded-lg bg-black py-8'>
<div className='relative z-10 m-auto flex max-w-[1200px] flex-col items-center gap-8 px-4 pt-8 lg:pt-[140px]'>
<HeadingLevel className='max-w-4xl bg-gradient-to-br from-white to-neutral-200 bg-clip-text text-center text-4xl font-bold text-transparent lg:text-6xl'>
<HeadingLevel className='max-w-4xl bg-linear-to-br from-white to-neutral-200 bg-clip-text text-center text-4xl font-bold text-transparent lg:text-6xl'>
Predictable pricing for every use case.
</HeadingLevel>
<p className='text-center text-xl'>
Expand Down
Loading