mirror of
https://github.com/AmruthPillai/Reactive-Resume.git
synced 2025-11-13 00:03:27 +10:00
add digitalocean attribution
This commit is contained in:
@ -60,7 +60,7 @@ export const LocaleCombobox = ({ value, onValueChange }: Props) => {
|
||||
>
|
||||
<Check
|
||||
className={cn(
|
||||
"mr-2 h-4 w-4 opacity-0",
|
||||
"mr-2 size-4 opacity-0",
|
||||
value === original.locale && "opacity-100",
|
||||
)}
|
||||
/>
|
||||
@ -101,7 +101,7 @@ export const LocaleComboboxPopover = ({ value, onValueChange }: Props) => {
|
||||
</span>
|
||||
<CaretDown
|
||||
className={cn(
|
||||
"ml-2 h-4 w-4 shrink-0 rotate-0 opacity-50 transition-transform",
|
||||
"ml-2 size-4 shrink-0 rotate-0 opacity-50 transition-transform",
|
||||
open && "rotate-180",
|
||||
)}
|
||||
/>
|
||||
|
||||
@ -14,7 +14,7 @@ export const SocialAuth = () => {
|
||||
{providers.includes("github") && (
|
||||
<Button asChild size="lg" className="w-full !bg-[#222] !text-white hover:!bg-[#222]/80">
|
||||
<a href="/api/auth/github">
|
||||
<GithubLogo className="mr-3 h-4 w-4" />
|
||||
<GithubLogo className="mr-3 size-4" />
|
||||
{t`GitHub`}
|
||||
</a>
|
||||
</Button>
|
||||
@ -27,7 +27,7 @@ export const SocialAuth = () => {
|
||||
className="w-full !bg-[#4285F4] !text-white hover:!bg-[#4285F4]/80"
|
||||
>
|
||||
<a href="/api/auth/google">
|
||||
<GoogleLogo className="mr-3 h-4 w-4" />
|
||||
<GoogleLogo className="mr-3 size-4" />
|
||||
{t`Google`}
|
||||
</a>
|
||||
</Button>
|
||||
|
||||
@ -23,10 +23,10 @@ export const AuthLayout = () => {
|
||||
const hideDivider = !providers.includes("email") || providers.length === 1;
|
||||
|
||||
return (
|
||||
<div className="flex h-screen w-screen">
|
||||
<div className="size-screen flex">
|
||||
<div className="relative flex w-full flex-col justify-center gap-y-8 px-12 sm:mx-auto sm:basis-[420px] sm:px-0 lg:basis-[480px] lg:px-12">
|
||||
<div className="flex items-center justify-between">
|
||||
<Link to="/" className="h-24 w-24">
|
||||
<Link to="/" className="size-24">
|
||||
<Logo className="-ml-3" size={96} />
|
||||
</Link>
|
||||
|
||||
|
||||
@ -82,7 +82,7 @@ export const ProfilesDialog = () => {
|
||||
<FormLabel htmlFor="iconSlug">{t`Icon`}</FormLabel>
|
||||
<FormControl>
|
||||
<div className="flex items-center gap-x-2">
|
||||
<Avatar className="h-8 w-8 bg-white">
|
||||
<Avatar className="size-8 bg-white">
|
||||
{field.value && (
|
||||
<AvatarImage
|
||||
className="p-1.5"
|
||||
|
||||
@ -43,7 +43,7 @@ export const LeftSidebar = () => {
|
||||
return (
|
||||
<div className="flex bg-secondary-accent/30">
|
||||
<div className="hidden basis-12 flex-col items-center justify-between bg-secondary-accent/30 py-4 sm:flex">
|
||||
<Button asChild size="icon" variant="ghost" className="h-8 w-8 rounded-full">
|
||||
<Button asChild size="icon" variant="ghost" className="size-8 rounded-full">
|
||||
<Link to="/dashboard">
|
||||
<Icon size={14} />
|
||||
</Link>
|
||||
|
||||
@ -93,7 +93,7 @@ export const PictureOptions = () => {
|
||||
>
|
||||
<Tooltip content={t`Square`}>
|
||||
<ToggleGroupItem value="square">
|
||||
<div className="h-3 w-3 border border-foreground" />
|
||||
<div className="size-3 border border-foreground" />
|
||||
</ToggleGroupItem>
|
||||
</Tooltip>
|
||||
|
||||
@ -136,19 +136,19 @@ export const PictureOptions = () => {
|
||||
>
|
||||
<Tooltip content={t`Square`}>
|
||||
<ToggleGroupItem value="square">
|
||||
<div className="h-3 w-3 border border-foreground" />
|
||||
<div className="size-3 border border-foreground" />
|
||||
</ToggleGroupItem>
|
||||
</Tooltip>
|
||||
|
||||
<Tooltip content={t`Rounded`}>
|
||||
<ToggleGroupItem value="rounded">
|
||||
<div className="h-3 w-3 rounded-sm border border-foreground" />
|
||||
<div className="size-3 rounded-sm border border-foreground" />
|
||||
</ToggleGroupItem>
|
||||
</Tooltip>
|
||||
|
||||
<Tooltip content={t`Circle`}>
|
||||
<ToggleGroupItem value="circle">
|
||||
<div className="h-3 w-3 rounded-full border border-foreground" />
|
||||
<div className="size-3 rounded-full border border-foreground" />
|
||||
</ToggleGroupItem>
|
||||
</Tooltip>
|
||||
</ToggleGroup>
|
||||
|
||||
@ -50,7 +50,7 @@ export const PictureSection = () => {
|
||||
return (
|
||||
<div className="flex items-center gap-x-4">
|
||||
<div className="group relative cursor-pointer" onClick={onAvatarClick}>
|
||||
<Avatar className="h-14 w-14 bg-secondary">
|
||||
<Avatar className="size-14 bg-secondary">
|
||||
<AvatarImage src={picture.url} />
|
||||
</Avatar>
|
||||
|
||||
|
||||
@ -71,7 +71,7 @@ export const SectionIcon = ({ id, name, icon, ...props }: SectionIconProps) => {
|
||||
|
||||
return (
|
||||
<Tooltip side="right" content={name ?? section.name}>
|
||||
<Button size="icon" variant="ghost" className="h-8 w-8 rounded-full" {...props}>
|
||||
<Button size="icon" variant="ghost" className="size-8 rounded-full" {...props}>
|
||||
{icon ?? getSectionIcon(id, { size: 14 })}
|
||||
</Button>
|
||||
</Tooltip>
|
||||
|
||||
@ -242,7 +242,7 @@ export const LayoutSection = () => {
|
||||
<Button
|
||||
size="icon"
|
||||
variant="ghost"
|
||||
className="h-8 w-8"
|
||||
className="size-8"
|
||||
onClick={() => onRemovePage(pageIndex)}
|
||||
>
|
||||
<TrashSimple size={12} className="text-error" />
|
||||
|
||||
@ -30,11 +30,11 @@ export const ThemeSection = () => {
|
||||
setValue("metadata.theme.primary", color);
|
||||
}}
|
||||
className={cn(
|
||||
"flex h-6 w-6 cursor-pointer items-center justify-center rounded-full ring-primary ring-offset-1 ring-offset-background transition-shadow hover:ring-1",
|
||||
"flex size-6 cursor-pointer items-center justify-center rounded-full ring-primary ring-offset-1 ring-offset-background transition-shadow hover:ring-1",
|
||||
theme.primary === color && "ring-1",
|
||||
)}
|
||||
>
|
||||
<div className="h-5 w-5 rounded-full" style={{ backgroundColor: color }} />
|
||||
<div className="size-5 rounded-full" style={{ backgroundColor: color }} />
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
@ -45,7 +45,7 @@ export const ThemeSection = () => {
|
||||
<Popover>
|
||||
<PopoverTrigger asChild>
|
||||
<div
|
||||
className="absolute inset-y-0 left-3 my-2.5 h-4 w-4 cursor-pointer rounded-full ring-primary ring-offset-2 ring-offset-background transition-shadow hover:ring-1"
|
||||
className="absolute inset-y-0 left-3 my-2.5 size-4 cursor-pointer rounded-full ring-primary ring-offset-2 ring-offset-background transition-shadow hover:ring-1"
|
||||
style={{ backgroundColor: theme.primary }}
|
||||
/>
|
||||
</PopoverTrigger>
|
||||
@ -75,7 +75,7 @@ export const ThemeSection = () => {
|
||||
<Popover>
|
||||
<PopoverTrigger asChild>
|
||||
<div
|
||||
className="absolute inset-y-0 left-3 my-2.5 h-4 w-4 cursor-pointer rounded-full ring-primary ring-offset-2 ring-offset-background transition-shadow hover:ring-1"
|
||||
className="absolute inset-y-0 left-3 my-2.5 size-4 cursor-pointer rounded-full ring-primary ring-offset-2 ring-offset-background transition-shadow hover:ring-1"
|
||||
style={{ backgroundColor: theme.background }}
|
||||
/>
|
||||
</PopoverTrigger>
|
||||
@ -105,7 +105,7 @@ export const ThemeSection = () => {
|
||||
<Popover>
|
||||
<PopoverTrigger asChild>
|
||||
<div
|
||||
className="absolute inset-y-0 left-3 my-2.5 h-4 w-4 cursor-pointer rounded-full ring-primary ring-offset-2 ring-offset-background transition-shadow hover:ring-1"
|
||||
className="absolute inset-y-0 left-3 my-2.5 size-4 cursor-pointer rounded-full ring-primary ring-offset-2 ring-offset-background transition-shadow hover:ring-1"
|
||||
style={{ backgroundColor: theme.text }}
|
||||
/>
|
||||
</PopoverTrigger>
|
||||
|
||||
@ -66,7 +66,7 @@ type SectionIconProps = ButtonProps & {
|
||||
|
||||
export const SectionIcon = ({ id, name, icon, ...props }: SectionIconProps) => (
|
||||
<Tooltip side="left" content={name}>
|
||||
<Button size="icon" variant="ghost" className="h-8 w-8 rounded-full" {...props}>
|
||||
<Button size="icon" variant="ghost" className="size-8 rounded-full" {...props}>
|
||||
{icon ?? getSectionIcon(id, { size: 14 })}
|
||||
</Button>
|
||||
</Tooltip>
|
||||
|
||||
@ -21,7 +21,7 @@ const ActiveIndicator = ({ className }: Props) => (
|
||||
initial={{ opacity: 0, x: -20 }}
|
||||
animate={{ opacity: 1, x: 0 }}
|
||||
className={cn(
|
||||
"h-1.5 w-1.5 animate-pulse rounded-full bg-info shadow-[0_0_12px] shadow-info",
|
||||
"size-1.5 animate-pulse rounded-full bg-info shadow-[0_0_12px] shadow-info",
|
||||
className,
|
||||
)}
|
||||
/>
|
||||
@ -98,7 +98,7 @@ export const Sidebar = ({ setOpen }: SidebarProps) => {
|
||||
return (
|
||||
<div className="flex h-full flex-col gap-y-4">
|
||||
<div className="ml-12 flex justify-center lg:ml-0">
|
||||
<Button asChild size="icon" variant="ghost" className="h-10 w-10 p-0">
|
||||
<Button asChild size="icon" variant="ghost" className="size-10 p-0">
|
||||
<Link to="/">
|
||||
<Icon size={24} className="mx-auto hidden lg:block" />
|
||||
</Link>
|
||||
|
||||
@ -87,7 +87,7 @@ export const ResumeCard = ({ resume }: Props) => {
|
||||
animate={{ opacity: 1 }}
|
||||
loading="lazy"
|
||||
alt={resume.title}
|
||||
className="h-full w-full object-cover"
|
||||
className="size-full object-cover"
|
||||
src={`${url}?cache=${new Date().getTime()}`}
|
||||
/>
|
||||
)}
|
||||
|
||||
@ -19,12 +19,12 @@ export const BaseListItem = ({ title, description, start, end, className, onClic
|
||||
>
|
||||
<div className="flex w-full items-center justify-between">
|
||||
<div className="flex items-center space-x-4">
|
||||
<div className="flex h-5 w-5 items-center justify-center">{start}</div>
|
||||
<div className="flex size-5 items-center justify-center">{start}</div>
|
||||
<h4 className="w-[220px] truncate font-medium lg:w-[320px]">{title}</h4>
|
||||
<p className="hidden text-xs opacity-75 sm:block">{description}</p>
|
||||
</div>
|
||||
|
||||
{end && <div className="flex h-5 w-5 items-center justify-center">{end}</div>}
|
||||
{end && <div className="flex size-5 items-center justify-center">{end}</div>}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
@ -36,11 +36,11 @@ export const ResumesPage = () => {
|
||||
</motion.h1>
|
||||
|
||||
<TabsList>
|
||||
<TabsTrigger value="grid" className="h-8 w-8 p-0 sm:h-8 sm:w-auto sm:px-4">
|
||||
<TabsTrigger value="grid" className="size-8 p-0 sm:h-8 sm:w-auto sm:px-4">
|
||||
<SquaresFour />
|
||||
<span className="ml-2 hidden sm:block">{t`Grid`}</span>
|
||||
</TabsTrigger>
|
||||
<TabsTrigger value="list" className="h-8 w-8 p-0 sm:h-8 sm:w-auto sm:px-4">
|
||||
<TabsTrigger value="list" className="size-8 p-0 sm:h-8 sm:w-auto sm:px-4">
|
||||
<List />
|
||||
<span className="ml-2 hidden sm:block">{t`List`}</span>
|
||||
</TabsTrigger>
|
||||
|
||||
@ -23,7 +23,24 @@ export const Footer = () => (
|
||||
<Copyright className="mt-6" />
|
||||
</div>
|
||||
|
||||
<div className="relative col-start-4">
|
||||
<div className="relative col-start-4 flex flex-col items-end justify-end">
|
||||
<div className="mb-14">
|
||||
<a href="https://www.digitalocean.com/?utm_medium=opensource&utm_source=Reactive-Resume">
|
||||
<img
|
||||
src="https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/PoweredByDO/DO_Powered_by_Badge_black.svg"
|
||||
alt="Powered by DigitalOcean"
|
||||
className="block dark:hidden"
|
||||
width="150px"
|
||||
/>
|
||||
<img
|
||||
src="https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/PoweredByDO/DO_Powered_by_Badge_white.svg"
|
||||
alt="Powered by DigitalOcean"
|
||||
className="hidden dark:block"
|
||||
width="150px"
|
||||
/>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div className="absolute bottom-0 right-0 lg:space-x-2">
|
||||
<LocaleSwitch />
|
||||
<ThemeSwitch />
|
||||
|
||||
@ -2,7 +2,7 @@ export const Decoration = {
|
||||
Grid: () => (
|
||||
<svg
|
||||
aria-hidden="true"
|
||||
className="absolute inset-0 -z-10 h-full w-full stroke-foreground/10 opacity-60 [mask-image:radial-gradient(100%_100%_at_top_right,white,transparent)] dark:opacity-40"
|
||||
className="absolute inset-0 -z-10 size-full stroke-foreground/10 opacity-60 [mask-image:radial-gradient(100%_100%_at_top_right,white,transparent)] dark:opacity-40"
|
||||
>
|
||||
<defs>
|
||||
<pattern
|
||||
|
||||
Reference in New Issue
Block a user