mirror of
https://github.com/documenso/documenso.git
synced 2025-11-12 07:43:16 +10:00
**Description:** - Updated mobile header with respect to latest designs <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Added a new `showText` property to the `MenuSwitcher` component to control text visibility. - Added a `textSectionClassName` property to the `AvatarWithText` component for conditional text section styling. - Updated the `CommandDialog` and `DialogContent` components with new positioning and styling properties. - **Style Updates** - Adjusted text size responsiveness in the `Hero` component for various screen sizes. - Modified text truncation and input styling in the `Widget` component. - Changed the width of the `SheetContent` element in `MobileNavigation` and adjusted footer layout. - **Documentation** - Added instructions for certificate placement in `SIGNING.md`. - **Refactor** - Standardized type imports across various components and utilities for improved type checking. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Signed-off-by: Adithya Krishna <adithya@documenso.com> Signed-off-by: Adithya Krishna <aadithya794@gmail.com> Co-authored-by: David Nguyen <davidngu28@gmail.com>
86 lines
2.1 KiB
TypeScript
86 lines
2.1 KiB
TypeScript
'use client';
|
|
|
|
import Link from 'next/link';
|
|
|
|
import type { Variants } from 'framer-motion';
|
|
import { motion } from 'framer-motion';
|
|
|
|
import { cn } from '@documenso/ui/lib/utils';
|
|
import { Button } from '@documenso/ui/primitives/button';
|
|
import { Card, CardContent, CardTitle } from '@documenso/ui/primitives/card';
|
|
|
|
import type { TOSSFriendsSchema } from './schema';
|
|
|
|
const ContainerVariants: Variants = {
|
|
initial: {
|
|
opacity: 0,
|
|
},
|
|
animate: {
|
|
opacity: 1,
|
|
transition: {
|
|
staggerChildren: 0.075,
|
|
},
|
|
},
|
|
};
|
|
|
|
const CardVariants: Variants = {
|
|
initial: {
|
|
opacity: 0,
|
|
y: 50,
|
|
},
|
|
animate: {
|
|
opacity: 1,
|
|
y: 0,
|
|
transition: {
|
|
duration: 0.5,
|
|
},
|
|
},
|
|
};
|
|
|
|
const randomDegrees = () => {
|
|
const degrees = [45, 120, -140, -45];
|
|
|
|
return degrees[Math.floor(Math.random() * degrees.length)];
|
|
};
|
|
|
|
export type OSSFriendsContainerProps = {
|
|
className?: string;
|
|
ossFriends: TOSSFriendsSchema;
|
|
};
|
|
|
|
export const OSSFriendsContainer = ({ className, ossFriends }: OSSFriendsContainerProps) => {
|
|
return (
|
|
<motion.div
|
|
className={cn('grid grid-cols-1 gap-8 sm:grid-cols-2 lg:grid-cols-3', className)}
|
|
variants={ContainerVariants}
|
|
initial="initial"
|
|
animate="animate"
|
|
>
|
|
{ossFriends.map((friend, index) => (
|
|
<motion.div key={index} className="h-full w-full" variants={CardVariants}>
|
|
<Card
|
|
className="h-full"
|
|
degrees={randomDegrees()}
|
|
gradient={index % 2 === 0}
|
|
spotlight={index % 2 !== 0}
|
|
>
|
|
<CardContent className="flex h-full flex-col p-6">
|
|
<CardTitle>
|
|
<Link href={friend.href}>{friend.name}</Link>
|
|
</CardTitle>
|
|
|
|
<p className="text-foreground mt-4 flex-1 text-sm">{friend.description}</p>
|
|
|
|
<div className="mt-8">
|
|
<Link target="_blank" href={friend.href}>
|
|
<Button>Learn more</Button>
|
|
</Link>
|
|
</div>
|
|
</CardContent>
|
|
</Card>
|
|
</motion.div>
|
|
))}
|
|
</motion.div>
|
|
);
|
|
};
|