Skip to content

Commit

Permalink
feat: add special button
Browse files Browse the repository at this point in the history
  • Loading branch information
remvze committed Feb 8, 2024
1 parent 81e6666 commit a514a36
Show file tree
Hide file tree
Showing 7 changed files with 110 additions and 153 deletions.
72 changes: 0 additions & 72 deletions src/components/categories/donate/donate.module.css
Original file line number Diff line number Diff line change
Expand Up @@ -40,78 +40,6 @@
}

.button {
position: relative;
z-index: 1;
display: flex;
align-items: center;
justify-content: center;
width: max-content;
height: 40px;
padding: 0 20px;
margin: 16px auto 0;
overflow: hidden;
font-size: var(--font-xsm);
font-weight: 500;
color: var(--color-neutral-subtle);
text-decoration: none;
cursor: pointer;
background-color: var(--color-neutral-200);
border: none;
border-radius: 50px;
transition: 0.2s;

&::after {
position: absolute;
top: 1px;
left: 1px;
z-index: -1;
width: calc(100% - 2px);
height: calc(100% - 2px);
content: '';
background-color: var(--color-neutral-50);
border-radius: 100px;
transition: inherit;
}

&::before {
position: absolute;
top: 50%;
left: 50%;
z-index: -2;
width: 150%;
aspect-ratio: 1 / 1;
content: '';
background-image: conic-gradient(
transparent,
transparent,
var(--color-neutral-400),
transparent,
transparent,
transparent,
transparent,
var(--color-neutral-400),
transparent,
transparent
);
transform: translate(-50%, -50%);
animation-name: shine;
animation-duration: 6s;
animation-timing-function: linear;
animation-iteration-count: infinite;
}

&:hover::after {
background-color: var(--color-neutral-100);
}
}
}

@keyframes shine {
0% {
transform: translate(-50%, -50%) rotate(90deg);
}

100% {
transform: translate(-50%, -50%) rotate(450deg);
}
}
8 changes: 4 additions & 4 deletions src/components/categories/donate/donate.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import { FaCoffee } from 'react-icons/fa/index';

import { SpecialButton } from '@/components/special-button';

import styles from './donate.module.css';

export function Donate() {
Expand All @@ -14,14 +16,12 @@ export function Donate() {

<h2 className={styles.title}>Support Me</h2>
<p className={styles.desc}>Help me keep Moodist ad-free.</p>
<a
<SpecialButton
className={styles.button}
href="https://buymeacoffee.com/remvze"
rel="noreferrer"
target="_blank"
>
Donate Today
</a>
</SpecialButton>
</div>
);
}
72 changes: 0 additions & 72 deletions src/components/source/source.module.css
Original file line number Diff line number Diff line change
Expand Up @@ -63,78 +63,6 @@
}

.button {
position: relative;
z-index: 1;
display: flex;
align-items: center;
justify-content: center;
width: max-content;
height: 40px;
padding: 0 20px;
margin: 16px auto 0;
overflow: hidden;
font-size: var(--font-xsm);
font-weight: 500;
color: var(--color-neutral-subtle);
text-decoration: none;
cursor: pointer;
background-color: var(--color-neutral-200);
border: none;
border-radius: 50px;
transition: 0.2s;

&::after {
position: absolute;
top: 1px;
left: 1px;
z-index: -1;
width: calc(100% - 2px);
height: calc(100% - 2px);
content: '';
background-color: var(--color-neutral-50);
border-radius: 100px;
transition: inherit;
}

&::before {
position: absolute;
top: 50%;
left: 50%;
z-index: -2;
width: 150%;
aspect-ratio: 1 / 1;
content: '';
background-image: conic-gradient(
transparent,
transparent,
var(--color-neutral-400),
transparent,
transparent,
transparent,
transparent,
var(--color-neutral-400),
transparent,
transparent
);
transform: translate(-50%, -50%);
animation-name: shine;
animation-duration: 6s;
animation-timing-function: linear;
animation-iteration-count: infinite;
}

&:hover::after {
background-color: var(--color-neutral-100);
}
}
}

@keyframes shine {
0% {
transform: translate(-50%, -50%) rotate(90deg);
}

100% {
transform: translate(-50%, -50%) rotate(450deg);
}
}
10 changes: 5 additions & 5 deletions src/components/source/source.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import { FaGithub } from 'react-icons/fa/index';

import { Container } from '@/components/container';
import { SpecialButton } from '@/components/special-button';

import styles from './source.module.css';
import { Container } from '../container';

export function Source() {
return (
Expand All @@ -17,14 +19,12 @@ export function Source() {

<h2 className={styles.title}>Open Source</h2>
<p className={styles.desc}>Moodist is free and open-source!</p>
<a
<SpecialButton
className={styles.button}
href="https://github.com/remvze/moodist"
rel="noreferrer"
target="_blank"
>
Source Code
</a>
</SpecialButton>
</div>
</Container>
</div>
Expand Down
1 change: 1 addition & 0 deletions src/components/special-button/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export { SpecialButton } from './special-button';
74 changes: 74 additions & 0 deletions src/components/special-button/special-button.module.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
.button {
position: relative;
z-index: 1;
display: flex;
align-items: center;
justify-content: center;
width: max-content;
height: 40px;
padding: 0 20px;
overflow: hidden;
font-size: var(--font-xsm);
font-weight: 500;
color: var(--color-neutral-subtle);
text-decoration: none;
cursor: pointer;
background-color: var(--color-neutral-200);
border: none;
border-radius: 50px;
transition: 0.2s;

&::after {
position: absolute;
top: 1px;
left: 1px;
z-index: -1;
width: calc(100% - 2px);
height: calc(100% - 2px);
content: '';
background-color: var(--color-neutral-50);
border-radius: 100px;
transition: inherit;
}

&::before {
position: absolute;
top: 50%;
left: 50%;
z-index: -2;
width: 150%;
aspect-ratio: 1 / 1;
content: '';
background-image: conic-gradient(
transparent,
transparent,
var(--color-neutral-400),
transparent,
transparent,
transparent,
transparent,
var(--color-neutral-400),
transparent,
transparent
);
transform: translate(-50%, -50%);
animation-name: shine;
animation-duration: 6s;
animation-timing-function: linear;
animation-iteration-count: infinite;
}

&:hover::after {
background-color: var(--color-neutral-100);
}
}

@keyframes shine {
0% {
transform: translate(-50%, -50%) rotate(90deg);
}

100% {
transform: translate(-50%, -50%) rotate(450deg);
}
}
26 changes: 26 additions & 0 deletions src/components/special-button/special-button.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import { cn } from '@/helpers/styles';

import styles from './special-button.module.css';

interface SpecialButtonProps {
children: React.ReactNode;
className?: string;
href: string;
}

export function SpecialButton({
children,
className,
href,
}: SpecialButtonProps) {
return (
<a
className={cn(styles.button, className)}
href={href}
rel="noreferrer"
target="_blank"
>
{children}
</a>
);
}

0 comments on commit a514a36

Please sign in to comment.