Skip to content

Commit abb29e5

Browse files
committed
Merge branch 'staging' into improvement/copilot-6
2 parents e7f0768 + e270756 commit abb29e5

File tree

38 files changed

+1311
-4
lines changed

38 files changed

+1311
-4
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { Skeleton } from '@/components/emcn'
2+
3+
export default function LoginLoading() {
4+
return (
5+
<div className='flex flex-col items-center'>
6+
<Skeleton className='h-[38px] w-[80px] rounded-[4px]' />
7+
<div className='mt-[32px] w-full space-y-[8px]'>
8+
<Skeleton className='h-[14px] w-[40px] rounded-[4px]' />
9+
<Skeleton className='h-[44px] w-full rounded-[10px]' />
10+
</div>
11+
<div className='mt-[16px] w-full space-y-[8px]'>
12+
<Skeleton className='h-[14px] w-[64px] rounded-[4px]' />
13+
<Skeleton className='h-[44px] w-full rounded-[10px]' />
14+
</div>
15+
<Skeleton className='mt-[24px] h-[44px] w-full rounded-[10px]' />
16+
<Skeleton className='mt-[24px] h-[1px] w-full rounded-[1px]' />
17+
<div className='mt-[24px] flex w-full gap-[12px]'>
18+
<Skeleton className='h-[44px] flex-1 rounded-[10px]' />
19+
<Skeleton className='h-[44px] flex-1 rounded-[10px]' />
20+
</div>
21+
<Skeleton className='mt-[24px] h-[14px] w-[200px] rounded-[4px]' />
22+
</div>
23+
)
24+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import { Skeleton } from '@/components/emcn'
2+
3+
export default function OAuthConsentLoading() {
4+
return (
5+
<div className='flex flex-col items-center'>
6+
<div className='flex items-center gap-[16px]'>
7+
<Skeleton className='h-[48px] w-[48px] rounded-[12px]' />
8+
<Skeleton className='h-[20px] w-[20px] rounded-[4px]' />
9+
<Skeleton className='h-[48px] w-[48px] rounded-[12px]' />
10+
</div>
11+
<Skeleton className='mt-[24px] h-[38px] w-[220px] rounded-[4px]' />
12+
<Skeleton className='mt-[8px] h-[14px] w-[280px] rounded-[4px]' />
13+
<Skeleton className='mt-[24px] h-[56px] w-full rounded-[8px]' />
14+
<Skeleton className='mt-[16px] h-[120px] w-full rounded-[8px]' />
15+
<div className='mt-[24px] flex w-full max-w-[410px] gap-[12px]'>
16+
<Skeleton className='h-[44px] flex-1 rounded-[10px]' />
17+
<Skeleton className='h-[44px] flex-1 rounded-[10px]' />
18+
</div>
19+
</div>
20+
)
21+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { Skeleton } from '@/components/emcn'
2+
3+
export default function ResetPasswordLoading() {
4+
return (
5+
<div className='flex flex-col items-center'>
6+
<Skeleton className='h-[38px] w-[160px] rounded-[4px]' />
7+
<Skeleton className='mt-[12px] h-[14px] w-[280px] rounded-[4px]' />
8+
<div className='mt-[32px] w-full space-y-[8px]'>
9+
<Skeleton className='h-[14px] w-[40px] rounded-[4px]' />
10+
<Skeleton className='h-[44px] w-full rounded-[10px]' />
11+
</div>
12+
<Skeleton className='mt-[24px] h-[44px] w-full rounded-[10px]' />
13+
<Skeleton className='mt-[24px] h-[14px] w-[120px] rounded-[4px]' />
14+
</div>
15+
)
16+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import { Skeleton } from '@/components/emcn'
2+
3+
export default function SignupLoading() {
4+
return (
5+
<div className='flex flex-col items-center'>
6+
<Skeleton className='h-[38px] w-[100px] rounded-[4px]' />
7+
<div className='mt-[32px] w-full space-y-[8px]'>
8+
<Skeleton className='h-[14px] w-[40px] rounded-[4px]' />
9+
<Skeleton className='h-[44px] w-full rounded-[10px]' />
10+
</div>
11+
<div className='mt-[16px] w-full space-y-[8px]'>
12+
<Skeleton className='h-[14px] w-[40px] rounded-[4px]' />
13+
<Skeleton className='h-[44px] w-full rounded-[10px]' />
14+
</div>
15+
<div className='mt-[16px] w-full space-y-[8px]'>
16+
<Skeleton className='h-[14px] w-[64px] rounded-[4px]' />
17+
<Skeleton className='h-[44px] w-full rounded-[10px]' />
18+
</div>
19+
<Skeleton className='mt-[24px] h-[44px] w-full rounded-[10px]' />
20+
<Skeleton className='mt-[24px] h-[1px] w-full rounded-[1px]' />
21+
<div className='mt-[24px] flex w-full gap-[12px]'>
22+
<Skeleton className='h-[44px] flex-1 rounded-[10px]' />
23+
<Skeleton className='h-[44px] flex-1 rounded-[10px]' />
24+
</div>
25+
<Skeleton className='mt-[24px] h-[14px] w-[220px] rounded-[4px]' />
26+
</div>
27+
)
28+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { Skeleton } from '@/components/emcn'
2+
3+
export default function SSOLoading() {
4+
return (
5+
<div className='flex flex-col items-center'>
6+
<Skeleton className='h-[38px] w-[120px] rounded-[4px]' />
7+
<Skeleton className='mt-[12px] h-[14px] w-[260px] rounded-[4px]' />
8+
<div className='mt-[32px] w-full space-y-[8px]'>
9+
<Skeleton className='h-[14px] w-[80px] rounded-[4px]' />
10+
<Skeleton className='h-[44px] w-full rounded-[10px]' />
11+
</div>
12+
<Skeleton className='mt-[24px] h-[44px] w-full rounded-[10px]' />
13+
<Skeleton className='mt-[24px] h-[14px] w-[120px] rounded-[4px]' />
14+
</div>
15+
)
16+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { Skeleton } from '@/components/emcn'
2+
3+
export default function VerifyLoading() {
4+
return (
5+
<div className='flex flex-col items-center'>
6+
<Skeleton className='h-[38px] w-[180px] rounded-[4px]' />
7+
<Skeleton className='mt-[12px] h-[14px] w-[300px] rounded-[4px]' />
8+
<Skeleton className='mt-[4px] h-[14px] w-[240px] rounded-[4px]' />
9+
<Skeleton className='mt-[32px] h-[44px] w-full rounded-[10px]' />
10+
</div>
11+
)
12+
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import { Skeleton } from '@/components/emcn'
2+
3+
export default function BlogPostLoading() {
4+
return (
5+
<article className='w-full'>
6+
{/* Header area */}
7+
<div className='mx-auto max-w-[1450px] px-6 pt-8 sm:px-8 sm:pt-12 md:px-12 md:pt-16'>
8+
{/* Back link */}
9+
<div className='mb-6'>
10+
<Skeleton className='h-[16px] w-[60px] rounded-[4px] bg-[#2A2A2A]' />
11+
</div>
12+
{/* Image + title row */}
13+
<div className='flex flex-col gap-8 md:flex-row md:gap-12'>
14+
{/* Image */}
15+
<div className='w-full flex-shrink-0 md:w-[450px]'>
16+
<Skeleton className='aspect-[450/360] w-full rounded-lg bg-[#2A2A2A]' />
17+
</div>
18+
{/* Title + author */}
19+
<div className='flex flex-1 flex-col justify-between'>
20+
<div>
21+
<Skeleton className='h-[48px] w-full rounded-[4px] bg-[#2A2A2A]' />
22+
<Skeleton className='mt-[8px] h-[48px] w-[80%] rounded-[4px] bg-[#2A2A2A]' />
23+
</div>
24+
<div className='mt-4 flex items-center justify-between'>
25+
<div className='flex items-center gap-2'>
26+
<Skeleton className='h-[24px] w-[24px] rounded-full bg-[#2A2A2A]' />
27+
<Skeleton className='h-[16px] w-[100px] rounded-[4px] bg-[#2A2A2A]' />
28+
</div>
29+
<Skeleton className='h-[32px] w-[32px] rounded-[6px] bg-[#2A2A2A]' />
30+
</div>
31+
</div>
32+
</div>
33+
{/* Divider */}
34+
<Skeleton className='mt-8 h-[1px] w-full bg-[#2A2A2A] sm:mt-12' />
35+
{/* Date + description */}
36+
<div className='flex flex-col gap-6 py-8 sm:flex-row sm:items-start sm:justify-between sm:gap-8 sm:py-10'>
37+
<Skeleton className='h-[16px] w-[120px] flex-shrink-0 rounded-[4px] bg-[#2A2A2A]' />
38+
<div className='flex-1 space-y-[8px]'>
39+
<Skeleton className='h-[20px] w-full rounded-[4px] bg-[#2A2A2A]' />
40+
<Skeleton className='h-[20px] w-[70%] rounded-[4px] bg-[#2A2A2A]' />
41+
</div>
42+
</div>
43+
</div>
44+
{/* Article body */}
45+
<div className='mx-auto max-w-[900px] px-6 pb-20 sm:px-8 md:px-12'>
46+
<div className='space-y-[16px]'>
47+
<Skeleton className='h-[16px] w-full rounded-[4px] bg-[#2A2A2A]' />
48+
<Skeleton className='h-[16px] w-[95%] rounded-[4px] bg-[#2A2A2A]' />
49+
<Skeleton className='h-[16px] w-[88%] rounded-[4px] bg-[#2A2A2A]' />
50+
<Skeleton className='h-[16px] w-full rounded-[4px] bg-[#2A2A2A]' />
51+
<Skeleton className='mt-[24px] h-[24px] w-[200px] rounded-[4px] bg-[#2A2A2A]' />
52+
<Skeleton className='h-[16px] w-full rounded-[4px] bg-[#2A2A2A]' />
53+
<Skeleton className='h-[16px] w-[92%] rounded-[4px] bg-[#2A2A2A]' />
54+
<Skeleton className='h-[16px] w-[85%] rounded-[4px] bg-[#2A2A2A]' />
55+
</div>
56+
</div>
57+
</article>
58+
)
59+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import { Skeleton } from '@/components/emcn'
2+
3+
const SKELETON_POST_COUNT = 4
4+
5+
export default function AuthorLoading() {
6+
return (
7+
<main className='mx-auto max-w-[900px] px-6 py-10 sm:px-8 md:px-12'>
8+
<div className='mb-6 flex items-center gap-3'>
9+
<Skeleton className='h-[40px] w-[40px] rounded-full bg-[#2A2A2A]' />
10+
<Skeleton className='h-[32px] w-[160px] rounded-[4px] bg-[#2A2A2A]' />
11+
</div>
12+
<div className='grid grid-cols-1 gap-8 sm:grid-cols-2'>
13+
{Array.from({ length: SKELETON_POST_COUNT }).map((_, i) => (
14+
<div key={i} className='overflow-hidden rounded-lg border border-[#2A2A2A]'>
15+
<Skeleton className='h-[160px] w-full rounded-none bg-[#2A2A2A]' />
16+
<div className='p-3'>
17+
<Skeleton className='mb-1 h-[12px] w-[80px] rounded-[4px] bg-[#2A2A2A]' />
18+
<Skeleton className='h-[14px] w-[200px] rounded-[4px] bg-[#2A2A2A]' />
19+
</div>
20+
</div>
21+
))}
22+
</div>
23+
</main>
24+
)
25+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import { Skeleton } from '@/components/emcn'
2+
3+
const SKELETON_CARD_COUNT = 6
4+
5+
export default function BlogLoading() {
6+
return (
7+
<main className='mx-auto max-w-[1200px] px-6 py-12 sm:px-8 md:px-12'>
8+
<Skeleton className='h-[48px] w-[100px] rounded-[4px] bg-[#2A2A2A]' />
9+
<Skeleton className='mt-3 h-[18px] w-[420px] rounded-[4px] bg-[#2A2A2A]' />
10+
<div className='mt-10 grid grid-cols-1 gap-4 md:grid-cols-2 md:gap-6 lg:grid-cols-3'>
11+
{Array.from({ length: SKELETON_CARD_COUNT }).map((_, i) => (
12+
<div key={i} className='flex flex-col overflow-hidden rounded-xl border border-[#2A2A2A]'>
13+
<Skeleton className='aspect-video w-full rounded-none bg-[#2A2A2A]' />
14+
<div className='flex flex-1 flex-col p-4'>
15+
<Skeleton className='mb-2 h-[12px] w-[80px] rounded-[4px] bg-[#2A2A2A]' />
16+
<Skeleton className='mb-1 h-[20px] w-[85%] rounded-[4px] bg-[#2A2A2A]' />
17+
<Skeleton className='mb-3 h-[14px] w-full rounded-[4px] bg-[#2A2A2A]' />
18+
<Skeleton className='h-[14px] w-[70%] rounded-[4px] bg-[#2A2A2A]' />
19+
<div className='mt-3 flex items-center gap-2'>
20+
<Skeleton className='h-[16px] w-[16px] rounded-full bg-[#2A2A2A]' />
21+
<Skeleton className='h-[12px] w-[80px] rounded-[4px] bg-[#2A2A2A]' />
22+
</div>
23+
</div>
24+
</div>
25+
))}
26+
</div>
27+
</main>
28+
)
29+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { Skeleton } from '@/components/emcn'
2+
3+
const SKELETON_TAG_COUNT = 12
4+
5+
export default function TagsLoading() {
6+
return (
7+
<main className='mx-auto max-w-[900px] px-6 py-10 sm:px-8 md:px-12'>
8+
<Skeleton className='mb-6 h-[32px] w-[200px] rounded-[4px] bg-[#2A2A2A]' />
9+
<div className='flex flex-wrap gap-3'>
10+
{Array.from({ length: SKELETON_TAG_COUNT }).map((_, i) => (
11+
<Skeleton
12+
key={i}
13+
className='h-[30px] rounded-full bg-[#2A2A2A]'
14+
style={{ width: `${60 + (i % 4) * 24}px` }}
15+
/>
16+
))}
17+
</div>
18+
</main>
19+
)
20+
}

0 commit comments

Comments
 (0)