Skip to content

Commit 52e18d4

Browse files
authored
Merge pull request #35 from dnd-side-project/develop
test : Release-drafter 테스트
2 parents 6260543 + 3a96692 commit 52e18d4

23 files changed

+137
-13
lines changed

.github/release-drafter.yml

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
name-template: "v$RESOLVED_VERSION 🌈" ## 릴리즈 제목
2+
tag-template: "v$RESOLVED_VERSION" ## 태그
3+
categories:
4+
- title: "🚀 Features"
5+
labels:
6+
- "Bookmark 🔖"
7+
- "✨ Feat"
8+
- "PoseFeed 🧩"
9+
- "PosePick 🃏"
10+
- "PoseTalk 💬"
11+
- "💄 Style"
12+
- title: "🐛 Bug Fixes"
13+
labels:
14+
- "🛠 Fix"
15+
- title: "🧰 Maintenance"
16+
labels:
17+
- "♻️ Refactor"
18+
change-template: "- $TITLE @$AUTHOR (#$NUMBER)"
19+
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
20+
version-resolver:
21+
major:
22+
labels:
23+
- "major"
24+
minor:
25+
labels:
26+
- "minor"
27+
patch:
28+
labels:
29+
- "patch"
30+
default: patch
31+
template: | # 릴리즈 내용
32+
## Changes (v$RESOLVED_VERSION)
33+
34+
$CHANGES
35+
36+
## Previos Tag
37+
$PREVIOUS_TAG
38+
39+
## Contributors
40+
$CONTRIBUTORS

.github/workflows/release-drafter.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
name: Release Drafter
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
8+
permissions:
9+
contents: read
10+
11+
jobs:
12+
update_release_draft:
13+
permissions:
14+
contents: write
15+
pull-requests: write
16+
runs-on: ubuntu-latest
17+
steps:
18+
- uses: release-drafter/release-drafter@v5
19+
env:
20+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

public/images/main_star.png

365 KB
Loading
File renamed without changes.

public/pwa-icons/icon-128x128.png

-1.48 KB
Loading

public/pwa-icons/icon-144x144.png

-984 Bytes
Loading

public/pwa-icons/icon-152x152.png

-1012 Bytes
Loading

public/pwa-icons/icon-192x192.png

-1.57 KB
Loading

public/pwa-icons/icon-384x384.png

-3.11 KB
Loading

public/pwa-icons/icon-48x48.png

-145 Bytes
Loading

public/pwa-icons/icon-512x512.png

-6.55 KB
Loading

public/pwa-icons/icon-72x72.png

-267 Bytes
Loading

public/pwa-icons/icon-96x96.png

-701 Bytes
Loading

src/app/(Main)/components/MainHeader.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
11
import Image from 'next/image';
2+
import Link from 'next/link';
23

34
import Tab from './Tab';
45
import { Header } from '@/components/Header';
56

67
export default function MainHeader() {
78
return (
89
<Header
9-
leftNode={<h4>PosePicker</h4>}
10+
leftNode={
11+
<Link href="/pick">
12+
<h4>PosePicker</h4>
13+
</Link>
14+
}
1015
rightNode={<Image src="/icons/menu.svg" width={24} height={24} alt="24" />}
1116
headerDownNode={<Tab />}
1217
className="px-20"

src/app/(Main)/feed/components/Photo.tsx

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1+
'use client';
12
import Image from 'next/image';
23
import Link from 'next/link';
34

5+
import { Popup } from '@/components/Modal';
6+
import { useOverlay } from '@/components/Overlay/useOverlay';
47
import { ICON } from '@/constants/icon';
58

69
interface Photo {
@@ -10,14 +13,39 @@ interface Photo {
1013
}
1114

1215
export default function Photo({ imageKey, source, id }: Photo) {
16+
const { open } = useOverlay();
1317
return (
1418
<Link href={`detail/${id}`}>
1519
<div className={`relative z-0 mb-16 inline-block h-fit w-full rounded-8`}>
1620
{imageKey && (
1721
<>
18-
<img src={imageKey} alt={source} className="rounded-8" />
22+
<Image
23+
src={imageKey}
24+
alt={source || ''}
25+
width={200}
26+
height={100}
27+
className="rounded-8"
28+
/>
1929
<div className="absolute bottom-6 right-6 h-36 w-36 rounded-24 bg-white bg-opacity-30 p-6">
20-
<Image src={ICON.bookmark.empty} width={24} height={24} alt="🔖" />
30+
<Image
31+
src={ICON.bookmark.empty}
32+
width={24}
33+
height={24}
34+
alt="🔖"
35+
onClick={(e) => {
36+
e.preventDefault();
37+
open(({ exit }) => (
38+
<Popup
39+
onClick={exit}
40+
className="cursor-pointer rounded-8"
41+
onCloseOutside={exit}
42+
>
43+
<p>해당 기능은 아직 준비중이에요!</p>
44+
<p> 업데이트를 기대해 주세요.</p>
45+
</Popup>
46+
));
47+
}}
48+
/>
2149
</div>
2250
</>
2351
)}

src/app/favicon.ico

0 Bytes
Binary file not shown.

src/app/layout.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import type { Metadata } from 'next';
1313

1414
const DEFAULT_OG_TITLE = 'PosePicker';
1515
const DEFAULT_OG_DESC = '포토부스에서 고민하는 당신을 위한 포즈 추천';
16-
const DEFAULT_OG_IMAGE = '/images/main.png';
16+
const DEFAULT_OG_IMAGE = '/images/main_star.png';
1717

1818
export const metadata: Metadata = {
1919
metadataBase: new URL(BASE_SITE_URL),

src/components/Modal/Modal.tsx

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,23 @@
11
import ModalWrapper from './PortalWrapper';
22
import { StrictPropsWithChildren } from '@/types';
33

4-
interface PopupProps {
4+
interface PopupProps extends React.HTMLAttributes<HTMLTableSectionElement> {
55
className?: string;
6+
onCloseOutside?: () => void;
67
}
78

8-
export default function Popup({ className, children }: StrictPropsWithChildren<PopupProps>) {
9+
export default function Popup({
10+
className,
11+
children,
12+
onCloseOutside,
13+
...props
14+
}: StrictPropsWithChildren<PopupProps>) {
915
return (
10-
<ModalWrapper>
11-
<section className={`flex flex-col items-center bg-white px-16 py-12 ${className}`}>
16+
<ModalWrapper onClick={onCloseOutside}>
17+
<section
18+
className={`flex flex-col items-center bg-white px-16 py-12 ${className}`}
19+
{...props}
20+
>
1221
{children}
1322
</section>
1423
</ModalWrapper>

src/components/Modal/PortalWrapper.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { useOnClickOutside } from '@/hooks/useOnClickOutside';
77

88
import type { StrictPropsWithChildren } from '@/types';
99

10-
interface PortalWrapperProps {
10+
interface PortalWrapperProps extends React.HTMLAttributes<HTMLDivElement> {
1111
onClose?: () => void;
1212
isBackGroundBlur?: boolean;
1313
className?: string;
@@ -18,6 +18,7 @@ export default function PortalWrapper({
1818
children,
1919
isBackGroundBlur = true,
2020
className,
21+
...props
2122
}: StrictPropsWithChildren<PortalWrapperProps>) {
2223
const portalRef = useRef<HTMLDivElement>(null);
2324

@@ -35,6 +36,7 @@ export default function PortalWrapper({
3536
},
3637
className
3738
)}
39+
{...props}
3840
>
3941
{children}
4042
</div>

src/components/Overlay/useOverlay.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,10 @@ let elementId = 1;
88

99
interface Options {
1010
exitOnUnmount?: boolean;
11+
delay?: number;
1112
}
1213

13-
export function useOverlay({ exitOnUnmount = true }: Options = {}) {
14+
export function useOverlay({ exitOnUnmount = true, delay }: Options = {}) {
1415
const context = useContext(OverlayContext);
1516

1617
if (context == null) {
@@ -44,6 +45,11 @@ export function useOverlay({ exitOnUnmount = true }: Options = {}) {
4445
}}
4546
/>
4647
);
48+
if (!delay) return;
49+
const timer = setTimeout(() => {
50+
unmount(id);
51+
}, delay);
52+
return () => clearTimeout(timer);
4753
},
4854
close: () => {
4955
overlayRef.current?.close();
@@ -52,6 +58,6 @@ export function useOverlay({ exitOnUnmount = true }: Options = {}) {
5258
unmount(id);
5359
},
5460
}),
55-
[id, mount, unmount]
61+
[delay, id, mount, unmount]
5662
);
5763
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
interface WaitingToastProps {
2+
onClose: () => void;
3+
}
4+
export default function WaitingToast({ onClose }: WaitingToastProps) {
5+
return (
6+
<div
7+
onClick={onClose}
8+
className="inset-x-0 mx-auto max-w-390 cursor-pointer rounded-4 bg-zinc-900 bg-opacity-80 px-36 py-12 text-white"
9+
>
10+
해당 기능은 준비 중입니다. 조금만 기다려 주세요!
11+
</div>
12+
);
13+
}

src/components/WaitingToast/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export { default as WaitingToast } from './WaitingToast';

src/hooks/useKakaoShare.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ export default function useKakaoShare() {
2323
kakao.Link.sendDefault({
2424
objectType: 'feed',
2525
content: {
26-
title: '포즈를 뽑아봐 !',
27-
description: '당신에게 어울리는 포즈를 추천해드립니다.',
26+
title: 'PosePicker',
27+
description: '포토부스에서 고민하는 당신을 위한 포즈 추천',
2828
imageUrl:
2929
'https://github.com/gloddy-dev/gloddy-client/assets/62178788/a145c7ca-b487-4b2a-9913-cc1589e44f91',
3030
link: {

0 commit comments

Comments
 (0)