+
-
diff --git a/src/app/home/components/PostContainer/ContactTargetPopover/ContactTargetFilter.css.ts b/src/app/home/components/PostContainer/ContactTargetPopover/ContactTargetFilter.css.ts
new file mode 100644
index 0000000..72f239c
--- /dev/null
+++ b/src/app/home/components/PostContainer/ContactTargetPopover/ContactTargetFilter.css.ts
@@ -0,0 +1,125 @@
+import { style } from '@vanilla-extract/css';
+
+import { colors } from '@/styles/colors';
+import { fonts } from '@/styles/fonts.css';
+
+export const genderSelectWrapper = style({
+ display: 'flex',
+ flexDirection: 'column',
+ gap: '0.8rem',
+});
+
+export const ageSelectWrapper = style({
+ display: 'flex',
+ flexDirection: 'column',
+ gap: '0.8rem',
+});
+
+export const popoverTrigger = style({
+ ...fonts.label.large.SB14,
+ display: 'flex',
+ gap: '0.4rem',
+ alignItems: 'center',
+ width: 'fit-content',
+ padding: '0.6rem 1.4rem',
+ border: 'none',
+ borderRadius: '1.2rem',
+ color: 'var(--popover-trigger-color)',
+ backgroundColor: 'var(--popover-trigger-bg)',
+ selectors: {
+ '&:hover': {
+ boxShadow: '0px 4px 16px rgba(53, 59, 61, 0.2)',
+ },
+ },
+});
+
+export const popoverContent = style({
+ display: 'flex',
+ flexDirection: 'column',
+ padding: '2rem',
+ borderRadius: '1.2rem',
+ backgroundColor: colors.field01,
+ boxShadow: '0px 4px 16px rgba(53, 59, 61, 0.2)',
+ gap: '1.6rem',
+ marginTop: '0.6rem',
+});
+
+export const labelWrapper = style({
+ display: 'flex',
+ gap: '0.4rem',
+ alignItems: 'center',
+});
+
+export const label = style({
+ ...fonts.body.normal.M16,
+ color: colors.text06,
+});
+
+export const subLabel = style({
+ ...fonts.label.large.R14,
+ color: colors.text03,
+});
+
+export const genderButtonGroup = style({
+ display: 'flex',
+ gap: '0.8rem',
+});
+
+export const genderButton = style({
+ ...fonts.label.large.M14,
+ color: colors.text06,
+ padding: '0.6rem 2.15rem',
+ borderRadius: '1.2rem',
+ outline: `1px solid ${colors.line01}`,
+ transition: 'color 0.1s, background-color 0.1s, outline 0.1s',
+ width: '10.6rem',
+ selectors: {
+ '&.active': {
+ backgroundColor: colors.primaryTinted,
+ outline: `0.1rem solid ${colors.lineTinted}`,
+ color: colors.textPrimary,
+ },
+ },
+});
+
+export const ageInputContainer = style({
+ display: 'flex',
+ gap: '1rem',
+ alignItems: 'center',
+});
+
+export const ageInput = style({
+ ...fonts.label.large.M14,
+ width: '100%',
+ padding: '0.6rem 0 0.6rem 1.6rem',
+ border: `0.1rem solid ${colors.line01}`,
+ borderRadius: '1.2rem',
+ selectors: {
+ '&:focus': {
+ outline: 'none',
+ border: `0.1rem solid ${colors.primaryMint}`,
+ },
+ },
+});
+
+export const footerButtonContainer = style({
+ display: 'flex',
+ gap: '0.8rem',
+ justifyContent: 'flex-end',
+});
+
+export const resetButton = style({
+ ...fonts.label.large.SB14,
+ padding: '0.6rem 1.4rem',
+ borderRadius: '1.2rem',
+ backgroundColor: colors.field03,
+ color: colors.text06,
+});
+
+export const saveButton = style({
+ ...fonts.label.large.SB14,
+ padding: '0.6rem 1.4rem',
+ borderRadius: '1.2rem',
+ backgroundColor: colors.primaryMint,
+ color: colors.text01,
+});
diff --git a/src/app/home/components/PostContainer/ContactTargetPopover/ContactTargetFilter.styles.ts b/src/app/home/components/PostContainer/ContactTargetPopover/ContactTargetFilter.styles.ts
deleted file mode 100644
index 7cd2d71..0000000
--- a/src/app/home/components/PostContainer/ContactTargetPopover/ContactTargetFilter.styles.ts
+++ /dev/null
@@ -1,122 +0,0 @@
-import { css, Theme } from '@emotion/react';
-
-export const genderSelectWrapper = css`
- display: flex;
- flex-direction: column;
- gap: 0.8rem;
-`;
-
-export const ageSelectWrapper = css`
- display: flex;
- flex-direction: column;
- gap: 0.8rem;
-`;
-
-export const popoverTrigger = (theme: Theme) => css`
- ${theme.fonts.label.large.SB14};
- display: flex;
- gap: 0.4rem;
- align-items: center;
- width: fit-content;
- padding: 0.6rem 1.4rem;
- border: none;
- border-radius: 1.2rem;
-
- &:hover {
- box-shadow: 0px 4px 16px rgba(53, 59, 61, 0.2);
- }
-`;
-
-export const popoverContent = (theme: Theme) => css`
- display: flex;
- flex-direction: column;
- padding: 2rem;
- border-radius: 1.2rem;
- background-color: ${theme.colors.field01};
- box-shadow: 0px 4px 16px rgba(53, 59, 61, 0.2);
- gap: 1.6rem;
- margin-top: 0.6rem;
-`;
-
-export const labelWrapper = css`
- display: flex;
- gap: 0.4rem;
- align-items: center;
-`;
-
-export const label = (theme: Theme) => css`
- ${theme.fonts.body.normal.M16};
- color: ${theme.colors.text06};
-`;
-
-export const subLabel = (theme: Theme) => css`
- ${theme.fonts.label.large.R14};
- color: ${theme.colors.text03};
-`;
-
-export const buttonGroup = (theme: Theme) => css`
- display: flex;
- gap: 0.8rem;
-
- button {
- ${theme.fonts.label.large.M14};
- color: ${theme.colors.text06};
- padding: 0.6rem 2.15rem;
- border-radius: 1.2rem;
- outline: 1px solid ${theme.colors.line01};
- transition: color 0.1s, background-color 0.1s, outline 0.1s;
- width: 10.6rem;
- }
-
- button.active {
- background-color: ${theme.colors.primaryTinted};
- outline: 0.1rem solid ${theme.colors.lineTinted};
- color: ${theme.colors.textPrimary};
- }
-`;
-
-export const ageInputContainer = (theme: Theme) => css`
- display: flex;
- gap: 1rem;
- align-items: center;
-
- input {
- ${theme.fonts.label.large.M14};
- width: 100%;
- padding: 0.6rem 0 0.6rem 1.6rem;
- border: 0.1rem solid ${theme.colors.line01};
- border-radius: 1.2rem;
-
- :focus {
- outline: none;
- border: 0.1rem solid ${theme.colors.primaryMint};
- }
- }
-`;
-
-export const ageButtonWrapper = css`
- display: flex;
- gap: 0.4rem;
-`;
-
-export const footerButtonContainer = (theme: Theme) => css`
- display: flex;
- gap: 0.8rem;
- justify-content: flex-end;
-
- button {
- ${theme.fonts.label.large.SB14};
- padding: 0.6rem 1.4rem;
- border-radius: 1.2rem;
- }
-`;
-
-export const resetButton = (theme: Theme) => css`
- background-color: ${theme.colors.field03};
- color: ${theme.colors.text06};
-`;
-
-export const saveButton = (theme: Theme) => css`
- background-color: ${theme.colors.primaryMint};
- color: ${theme.colors.text01};
-`;
diff --git a/src/app/home/components/PostContainer/ContactTargetPopover/ContactTargetFilter.tsx b/src/app/home/components/PostContainer/ContactTargetPopover/ContactTargetFilter.tsx
index b92648a..669256c 100644
--- a/src/app/home/components/PostContainer/ContactTargetPopover/ContactTargetFilter.tsx
+++ b/src/app/home/components/PostContainer/ContactTargetPopover/ContactTargetFilter.tsx
@@ -1,24 +1,27 @@
'use client';
import * as Popover from '@radix-ui/react-popover';
+import { assignInlineVars } from '@vanilla-extract/dynamic';
import { ChangeEvent, useState } from 'react';
import {
- ageInputContainer,
- ageSelectWrapper,
- buttonGroup,
- footerButtonContainer,
genderSelectWrapper,
- label,
- labelWrapper,
- popoverContent,
+ ageSelectWrapper,
popoverTrigger,
+ popoverContent,
+ labelWrapper,
+ label,
+ ageInputContainer,
+ footerButtonContainer,
resetButton,
saveButton,
-} from './ContactTargetFilter.styles';
+ ageInput,
+ genderButton,
+ genderButtonGroup,
+} from './ContactTargetFilter.css';
import Icon from '@/components/Icon';
-import theme from '@/styles/theme';
+import { colors } from '@/styles/colors';
const isEqualByKeys = (
obj1: Record
,
@@ -81,44 +84,48 @@ const ContactTargetFilter = ({ onChange }: ContactTargetFilterProps) => {
return (
setIsOpen((prev) => !prev)}>
{isSelected ? `${age}세 ${gender.label}` : '모집 대상'}
-
-
-
성별
-
- {GENDER.map((gender) => (
+
+
+
성별
+
+ {GENDER.map((g) => (
setFilteredGender(gender as Gender)}
+ key={g.value}
+ className={`${genderButton} ${g === filteredGender ? 'active' : ''}`}
+ onClick={() => setFilteredGender(g as Gender)}
>
- {gender.label}
+ {g.label}
))}
-
-
-
나이
+
+
+ 나이
-
-
-
+
+
초기화
-
+
저장
diff --git a/src/app/home/components/PostContainer/FilterContainer/FilterContainer.css.ts b/src/app/home/components/PostContainer/FilterContainer/FilterContainer.css.ts
new file mode 100644
index 0000000..f413ced
--- /dev/null
+++ b/src/app/home/components/PostContainer/FilterContainer/FilterContainer.css.ts
@@ -0,0 +1,7 @@
+import { style } from '@vanilla-extract/css';
+
+export const filterLayout = style({
+ display: 'flex',
+ gap: '0.8rem',
+ height: '3.2rem',
+});
diff --git a/src/app/home/components/PostContainer/FilterContainer/FilterContainer.styles.ts b/src/app/home/components/PostContainer/FilterContainer/FilterContainer.styles.ts
deleted file mode 100644
index 526f540..0000000
--- a/src/app/home/components/PostContainer/FilterContainer/FilterContainer.styles.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { css } from '@emotion/react';
-
-export const filterLayout = css`
- display: flex;
- gap: 0.8rem;
- height: 3.2rem;
-`;
diff --git a/src/app/home/components/PostContainer/FilterContainer/FilterContainer.tsx b/src/app/home/components/PostContainer/FilterContainer/FilterContainer.tsx
index 151616a..d507a8a 100644
--- a/src/app/home/components/PostContainer/FilterContainer/FilterContainer.tsx
+++ b/src/app/home/components/PostContainer/FilterContainer/FilterContainer.tsx
@@ -1,4 +1,4 @@
-import { filterLayout } from './FilterContainer.styles';
+import { filterLayout } from './FilterContainer.css';
import AreaFilter from '../AreaFilter/AreaFilter';
import ContactTargetFilter from '../ContactTargetPopover/ContactTargetFilter';
import ProgressMethodFilter from '../ProgressMethodFilter/ProgressMethodFilter';
@@ -9,7 +9,7 @@ interface FilterContainerProps {
const FilterContainer = ({ handleFilterChange }: FilterContainerProps) => {
return (
-
+
handleFilterChange('matchType', value)} />
diff --git a/src/app/home/components/PostContainer/PostContainer.css.ts b/src/app/home/components/PostContainer/PostContainer.css.ts
new file mode 100644
index 0000000..7e359b0
--- /dev/null
+++ b/src/app/home/components/PostContainer/PostContainer.css.ts
@@ -0,0 +1,34 @@
+import { style } from '@vanilla-extract/css';
+
+import { colors } from '@/styles/colors';
+import { fonts } from '@/styles/fonts.css';
+
+export const postContainerLayout = style({
+ margin: '2rem 0',
+ display: 'flex',
+ flexDirection: 'column',
+ gap: '1.6rem',
+});
+
+export const postContainerTitle = style({
+ ...fonts.title.medium.SB20,
+ color: colors.text06,
+});
+
+export const postCardContainer = style({
+ display: 'flex',
+ flexDirection: 'column',
+ gap: '0.6rem',
+ minHeight: '40rem',
+});
+
+export const totalPostCount = style({
+ ...fonts.label.large.R14,
+ color: colors.text03,
+});
+
+export const filterWrapper = style({
+ display: 'flex',
+ alignItems: 'center',
+ justifyContent: 'space-between',
+});
diff --git a/src/app/home/components/PostContainer/PostContainer.styles.ts b/src/app/home/components/PostContainer/PostContainer.styles.ts
deleted file mode 100644
index 535d32d..0000000
--- a/src/app/home/components/PostContainer/PostContainer.styles.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import { css, Theme } from '@emotion/react';
-
-export const postContainerLayout = css`
- margin: 2rem 0;
- display: flex;
- flex-direction: column;
- gap: 1.6rem;
-`;
-
-export const postContainerTitle = (theme: Theme) => css`
- ${theme.fonts.title.medium.SB20};
- color: ${theme.colors.text06};
-`;
-
-export const postCardContainer = css`
- display: flex;
- flex-direction: column;
- gap: 0.6rem;
- min-height: 40rem;
-`;
-
-export const totalPostCount = (theme: Theme) => css`
- ${theme.fonts.label.large.R14};
- color: ${theme.colors.text03};
-`;
-
-export const filterWrapper = css`
- display: flex;
- align-items: center;
- justify-content: space-between;
-`;
diff --git a/src/app/home/components/PostContainer/PostContainer.tsx b/src/app/home/components/PostContainer/PostContainer.tsx
index dbdb730..babfddb 100644
--- a/src/app/home/components/PostContainer/PostContainer.tsx
+++ b/src/app/home/components/PostContainer/PostContainer.tsx
@@ -11,7 +11,7 @@ import {
postContainerLayout,
postContainerTitle,
totalPostCount,
-} from './PostContainer.styles';
+} from './PostContainer.css';
import { filterParticipantInfo } from '../../home.utils';
import useUserInfo from '../../hooks/useUserInfo';
@@ -63,9 +63,9 @@ const PostContainer = () => {
}, [participantInfo]);
return (
-
-
공고를 확인해 보세요
-
+
+
공고를 확인해 보세요
+
{
isArrow={false}
/>
-
-
총 {postListData?.content.length}개
+
+
총 {postListData?.content.length}개
diff --git a/src/app/home/components/PostContainer/ProgressMethodFilter/ProgressMethodFilter.css.ts b/src/app/home/components/PostContainer/ProgressMethodFilter/ProgressMethodFilter.css.ts
new file mode 100644
index 0000000..36ade5b
--- /dev/null
+++ b/src/app/home/components/PostContainer/ProgressMethodFilter/ProgressMethodFilter.css.ts
@@ -0,0 +1,52 @@
+import { style } from '@vanilla-extract/css';
+
+import { colors } from '@/styles/colors';
+import { fonts } from '@/styles/fonts.css';
+
+export const triggerWrapper = style({
+ ...fonts.label.large.SB14,
+ // color: colors.text06,
+ color: 'var(--trigger-color)',
+ backgroundColor: 'var(--trigger-bg)',
+ display: 'flex',
+ alignItems: 'center',
+ justifyContent: 'space-between',
+ gap: '0.4rem',
+ borderRadius: '1.2rem',
+ padding: '0.5rem 1.4rem',
+ // backgroundColor: colors.field01,
+ cursor: 'pointer',
+ selectors: {
+ '&:hover': {
+ boxShadow: '0px 4px 16px rgba(53, 59, 61, 0.2)',
+ },
+ },
+});
+
+export const contentContainer = style({
+ position: 'relative',
+ top: '3.6rem',
+ width: '10rem',
+ padding: '0.8rem',
+ backgroundColor: colors.field01,
+ borderRadius: '0.8rem',
+ boxShadow: '0px 4px 16px rgba(53, 59, 61, 0.2)',
+ overflow: 'hidden',
+});
+
+export const selectItem = style({
+ ...fonts.label.large.M14,
+ color: colors.text06,
+ display: 'flex',
+ paddingLeft: '1.2rem',
+ alignItems: 'center',
+ height: '3.4rem',
+ borderRadius: '1.2rem',
+ cursor: 'pointer',
+ selectors: {
+ '&[data-highlighted]': {
+ backgroundColor: colors.field02,
+ outline: 'none',
+ },
+ },
+});
diff --git a/src/app/home/components/PostContainer/ProgressMethodFilter/ProgressMethodFilter.styles.ts b/src/app/home/components/PostContainer/ProgressMethodFilter/ProgressMethodFilter.styles.ts
deleted file mode 100644
index da7435c..0000000
--- a/src/app/home/components/PostContainer/ProgressMethodFilter/ProgressMethodFilter.styles.ts
+++ /dev/null
@@ -1,45 +0,0 @@
-import { css, Theme } from '@emotion/react';
-
-export const triggerWrapper = (theme: Theme) => css`
- ${theme.fonts.label.large.SB14};
- color: ${theme.colors.text06};
- display: flex;
- align-items: center;
- justify-content: space-between;
- gap: 0.4rem;
- border-radius: 1.2rem;
- padding: 0.5rem 1.4rem;
- background-color: ${theme.colors.field01};
- cursor: pointer;
-
- &:hover {
- box-shadow: 0px 4px 16px rgba(53, 59, 61, 0.2);
- }
-`;
-
-export const contentContainer = (theme: Theme) => css`
- position: relative;
- top: 3.6rem;
- width: 10rem;
- padding: 0.8rem;
- background-color: ${theme.colors.field01};
- border-radius: 0.8rem;
- box-shadow: 0px 4px 16px rgba(53, 59, 61, 0.2);
- overflow: hidden;
-`;
-
-export const selectItem = (theme: Theme) => css`
- ${theme.fonts.label.large.M14};
- color: ${theme.colors.text06};
- display: flex;
- padding-left: 1.2rem;
- align-items: center;
- height: 3.4rem;
- border-radius: 1.2rem;
- cursor: pointer;
-
- &[data-highlighted] {
- background-color: ${theme.colors.field02};
- outline: none;
- }
-`;
diff --git a/src/app/home/components/PostContainer/ProgressMethodFilter/ProgressMethodFilter.tsx b/src/app/home/components/PostContainer/ProgressMethodFilter/ProgressMethodFilter.tsx
index 56fe2cb..af35b06 100644
--- a/src/app/home/components/PostContainer/ProgressMethodFilter/ProgressMethodFilter.tsx
+++ b/src/app/home/components/PostContainer/ProgressMethodFilter/ProgressMethodFilter.tsx
@@ -1,12 +1,13 @@
'use client';
import * as Select from '@radix-ui/react-select';
+import { assignInlineVars } from '@vanilla-extract/dynamic';
import { useState } from 'react';
-import { contentContainer, selectItem, triggerWrapper } from './ProgressMethodFilter.styles';
+import { triggerWrapper, contentContainer, selectItem } from './ProgressMethodFilter.css';
import Icon from '@/components/Icon';
-import theme from '@/styles/theme';
+import { colors } from '@/styles/colors';
interface FilterOption {
label: '전체' | '대면' | '비대면';
@@ -15,8 +16,8 @@ interface FilterOption {
const options: FilterOption[] = [
{ label: '전체', value: 'ALL' },
- { label: '대면', value: 'ONLINE' },
- { label: '비대면', value: 'OFFLINE' },
+ { label: '대면', value: 'OFFLINE' },
+ { label: '비대면', value: 'ONLINE' },
];
interface ProgressMethodFilterProps {
@@ -45,27 +46,27 @@ const ProgressMethodFilter = ({ onChange }: ProgressMethodFilterProps) => {
onOpenChange={(open) => setIsOpen(open)}
>
{selectedValue.label}
-
+
-
+
전체
-
+
대면
-
+
비대면
diff --git a/src/app/join/JoinPage.css.ts b/src/app/join/JoinPage.css.ts
new file mode 100644
index 0000000..47a3da1
--- /dev/null
+++ b/src/app/join/JoinPage.css.ts
@@ -0,0 +1,90 @@
+import { style } from '@vanilla-extract/css';
+
+import { colors } from '@/styles/colors';
+import { fonts } from '@/styles/fonts.css';
+
+export const joinPageLayout = style({
+ display: 'flex',
+ backgroundColor: colors.field01,
+ width: '56rem',
+ margin: '0 auto',
+ minHeight: 'calc(100vh - 12.2rem)',
+});
+
+export const joinLayout = style({
+ display: 'flex',
+ flexDirection: 'column',
+ alignItems: 'center',
+ gap: '4rem',
+ paddingTop: '8.4rem',
+ flexGrow: 1,
+});
+
+export const contentContainer = style({
+ display: 'flex',
+ flexDirection: 'column',
+ gap: '1.6rem',
+ width: '100%',
+});
+
+export const titleContainer = style({
+ display: 'flex',
+ justifyContent: 'space-between',
+ alignItems: 'center',
+});
+
+export const joinContentContainer = style({
+ backgroundColor: colors.field02,
+ width: '100%',
+ display: 'flex',
+ flexDirection: 'column',
+ gap: '2.8rem',
+ borderRadius: '1.2rem',
+ padding: '3.2rem 4rem',
+});
+
+export const joinTitle = style({
+ ...fonts.title.medium.SB20,
+ color: colors.text06,
+});
+
+export const progressBarContainer = style({
+ width: '8rem',
+ height: '0.6rem',
+ backgroundColor: colors.field03,
+ borderRadius: '0.6rem',
+});
+
+export const progressBarFill = style({
+ width: 'var(--progress-width)',
+ height: '100%',
+ backgroundColor: colors.primaryMint,
+ borderRadius: '0.6rem',
+ transition: 'width 1s',
+});
+
+export const joinForm = style({
+ width: '100%',
+ height: '100%',
+ display: 'flex',
+ flexDirection: 'column',
+ alignItems: 'center',
+ gap: '4rem',
+});
+
+export const nextButton = style({
+ ...fonts.body.normal.SB16,
+ backgroundColor: colors.primaryMint,
+ color: colors.text01,
+ borderRadius: '1.2rem',
+ padding: '1.2rem 0',
+ width: '20rem',
+ alignItems: 'center',
+ marginBottom: '5.6rem',
+ selectors: {
+ '&:disabled': {
+ color: colors.text02,
+ backgroundColor: colors.field04,
+ },
+ },
+});
diff --git a/src/app/join/JoinPage.styles.ts b/src/app/join/JoinPage.styles.ts
index 61b8884..d639fba 100644
--- a/src/app/join/JoinPage.styles.ts
+++ b/src/app/join/JoinPage.styles.ts
@@ -1,27 +1,5 @@
import { css, Theme } from '@emotion/react';
-export const joinLayout = css`
- display: flex;
- flex-direction: column;
- align-items: center;
- gap: 4rem;
- padding-top: 8.4rem;
- flex-grow: 1;
-`;
-
-export const contentContainer = css`
- display: flex;
- flex-direction: column;
- gap: 1.6rem;
- width: 100%;
-`;
-
-export const titleContainer = css`
- display: flex;
- justify-content: space-between;
- align-items: center;
-`;
-
export const joinContentContainer = (theme: Theme) => css`
background-color: ${theme.colors.field02};
width: 100%;
@@ -32,32 +10,6 @@ export const joinContentContainer = (theme: Theme) => css`
padding: 3.2rem 4rem;
`;
-export const joinTitle = (theme: Theme) => css`
- ${theme.fonts.title.medium.SB20};
- color: ${theme.colors.text06};
-`;
-
-export const progressBar = (theme: Theme) => css`
- width: 8rem;
- height: 0.6rem;
- background-color: ${theme.colors.field03};
- border-radius: 3rem;
-`;
-
-export const progressBarContainer = (theme: Theme) => css`
- width: 8rem;
- height: 0.6rem;
- background-color: ${theme.colors.field03};
- border-radius: 0.6rem;
-`;
-
-export const progressBarFill = (theme: Theme) => css`
- height: 100%;
- background-color: ${theme.colors.primaryMint};
- border-radius: 0.6rem;
- transition: width 1s;
-`;
-
export const joinForm = css`
width: 100%;
height: 100%;
diff --git a/src/app/join/components/EmailToast/EmailToast.css.ts b/src/app/join/components/EmailToast/EmailToast.css.ts
new file mode 100644
index 0000000..a5fcee9
--- /dev/null
+++ b/src/app/join/components/EmailToast/EmailToast.css.ts
@@ -0,0 +1,37 @@
+import { style } from '@vanilla-extract/css';
+
+import { colors } from '@/styles/colors';
+import { fonts } from '@/styles/fonts.css';
+import theme from '@/styles/theme';
+
+export const toastLayout = style({
+ color: colors.text06,
+ height: '5.2rem',
+ backgroundColor: colors.fieldToast,
+ boxShadow: '0px 4px 16px rgba(53, 59, 61, 0.2)',
+ borderRadius: '8rem',
+ padding: '1.4rem 2.4rem',
+ position: 'fixed',
+ top: 0,
+ left: '50%',
+ transform: 'translateX(-50%)',
+ zIndex: theme.zIndex.toastContent,
+});
+
+export const toastTitle = style({
+ ...fonts.body.normal.SB16,
+ color: colors.text01,
+ display: 'flex',
+ flexFlow: 'row nowrap',
+ alignItems: 'center',
+ gap: '1rem',
+ width: 'max-content',
+});
+
+export const toastViewport = style({
+ position: 'fixed',
+ top: '6rem',
+ left: '50%',
+ transform: 'translateX(-50%)',
+ zIndex: theme.zIndex.toastViewport,
+});
diff --git a/src/app/join/components/EmailToast/EmailToast.styles.ts b/src/app/join/components/EmailToast/EmailToast.styles.ts
deleted file mode 100644
index 362ac22..0000000
--- a/src/app/join/components/EmailToast/EmailToast.styles.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-import { css, Theme } from '@emotion/react';
-
-export const toastLayout = (theme: Theme) => css`
- color: ${theme.colors.text06};
-
- height: 5.2rem;
-
- background-color: ${theme.colors.fieldToast};
- color: ${theme.colors.text06};
- box-shadow: 0px 4px 16px rgba(53, 59, 61, 0.2);
-
- border-radius: 8rem;
-
- padding: 1.4rem 2.4rem;
-
- position: fixed;
- top: 0;
- left: 50%;
- transform: translateX(-50%);
-
- z-index: ${theme.zIndex.toastContent};
-`;
-
-export const toastTitle = (theme: Theme) => css`
- ${theme.fonts.body.normal.SB16};
- color: ${theme.colors.text01};
-
- display: flex;
- flex-flow: row nowrap;
- align-items: center;
- gap: 1rem;
-
- width: max-content;
-`;
-
-export const toastViewport = (theme: Theme) => css`
- position: fixed;
- top: 6rem;
- left: 50%;
- transform: translateX(-50%);
-
- z-index: ${theme.zIndex.toastViewport};
-`;
diff --git a/src/app/join/components/EmailToast/EmailToast.tsx b/src/app/join/components/EmailToast/EmailToast.tsx
index ebfbf6d..b9bd973 100644
--- a/src/app/join/components/EmailToast/EmailToast.tsx
+++ b/src/app/join/components/EmailToast/EmailToast.tsx
@@ -1,6 +1,8 @@
+'use client';
+
import * as Toast from '@radix-ui/react-toast';
-import { toastLayout, toastTitle, toastViewport } from './EmailToast.styles';
+import { toastLayout, toastTitle, toastViewport } from './EmailToast.css';
import Icon from '@/components/Icon';
import theme from '@/styles/theme';
@@ -15,17 +17,17 @@ const EmailToast = ({ title, isToastOpen, setIsToastOpen }: EmailToastProps) =>
return (
-
+
{title}
-
+
);
};
diff --git a/src/app/join/components/JoinCheckboxContainer/JoinCheckbox/JoinCheckbox.css.ts b/src/app/join/components/JoinCheckboxContainer/JoinCheckbox/JoinCheckbox.css.ts
new file mode 100644
index 0000000..ea75858
--- /dev/null
+++ b/src/app/join/components/JoinCheckboxContainer/JoinCheckbox/JoinCheckbox.css.ts
@@ -0,0 +1,48 @@
+import { style } from '@vanilla-extract/css';
+
+import { colors } from '@/styles/colors';
+import { fonts } from '@/styles/fonts.css';
+
+export const checkboxLayout = style({
+ display: 'flex',
+ justifyContent: 'space-between',
+ alignItems: 'center',
+});
+
+export const checkboxWrapper = style({
+ display: 'flex',
+ alignItems: 'center',
+ gap: '0.8rem',
+ userSelect: 'none',
+});
+
+export const allCheckWrapper = style({
+ borderBottom: `0.1rem solid ${colors.line01}`,
+ paddingBottom: '1.6rem',
+});
+
+export const checkbox = style({
+ position: 'absolute',
+ opacity: 0,
+ pointerEvents: 'none',
+});
+
+export const requiredCheckboxText = style({
+ color: colors.textPrimary,
+});
+
+export const labelWrapper = style({
+ display: 'flex',
+ gap: '0.4rem',
+});
+
+export const tipWrapper = style({
+ ...fonts.label.small.M12,
+ display: 'flex',
+ gap: '0.4rem',
+ color: colors.text02,
+});
+
+export const tipAlert = style({
+ color: colors.textPrimary,
+});
diff --git a/src/app/join/components/JoinCheckboxContainer/JoinCheckbox/JoinCheckbox.styles.ts b/src/app/join/components/JoinCheckboxContainer/JoinCheckbox/JoinCheckbox.styles.ts
deleted file mode 100644
index a85cfcb..0000000
--- a/src/app/join/components/JoinCheckboxContainer/JoinCheckbox/JoinCheckbox.styles.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-import { css, Theme } from '@emotion/react';
-
-export const checkboxLayout = css`
- display: flex;
- justify-content: space-between;
- align-items: center;
-`;
-
-export const checkboxWrapper = css`
- display: flex;
- align-items: center;
- gap: 0.8rem;
-
- span {
- user-select: none;
- }
-`;
-
-export const allCheckWrapper = (theme: Theme) => css`
- border-bottom: 0.1rem solid ${theme.colors.line01};
- padding-bottom: 1.6rem;
-`;
-
-export const checkbox = css`
- position: absolute;
- opacity: 0;
- pointer-events: none;
-`;
-
-export const requiredCheckboxText = (theme: Theme) => css`
- color: ${theme.colors.textPrimary};
-`;
-
-export const labelWrapper = css`
- display: flex;
- gap: 0.4rem;
-`;
diff --git a/src/app/join/components/JoinCheckboxContainer/JoinCheckbox/JoinCheckbox.tsx b/src/app/join/components/JoinCheckboxContainer/JoinCheckbox/JoinCheckbox.tsx
index e0f0551..f64b077 100644
--- a/src/app/join/components/JoinCheckboxContainer/JoinCheckbox/JoinCheckbox.tsx
+++ b/src/app/join/components/JoinCheckboxContainer/JoinCheckbox/JoinCheckbox.tsx
@@ -1,12 +1,13 @@
import {
- allCheckWrapper,
- checkbox,
checkboxLayout,
checkboxWrapper,
- labelWrapper,
+ allCheckWrapper,
+ checkbox,
requiredCheckboxText,
-} from './JoinCheckbox.styles';
-import { tipAlert, tipWrapper } from '../../JoinInput/JoinInput.styles';
+ labelWrapper,
+ tipWrapper,
+ tipAlert,
+} from './JoinCheckbox.css';
import Icon from '@/components/Icon';
import theme from '@/styles/theme';
@@ -32,27 +33,26 @@ const JoinCheckbox = ({
isAlert,
}: JoinCheckboxProps) => {
return (
-
-