반응형 레이아웃 수정 및 시스템 컬러 폰트

This commit is contained in:
offinon 2026-02-26 17:08:23 +00:00
parent 4a5af73f54
commit ec9511ecd2
5 changed files with 94 additions and 84 deletions

View File

@ -19,7 +19,7 @@ export default async function CancellationPage() {
return ( return (
<> <>
<div className="mt-14 flex flex-col gap-4 sm:flex-row sm:items-end sm:justify-between"> <div className="flex flex-col gap-4 sm:mt-10 sm:flex-row sm:items-end sm:justify-between lg:mt-14">
<Heading>Cancellation</Heading> <Heading>Cancellation</Heading>
<div className="flex w-full flex-col gap-2 sm:max-w-2xl sm:flex-row sm:items-center sm:justify-end"> <div className="flex w-full flex-col gap-2 sm:max-w-2xl sm:flex-row sm:items-center sm:justify-end">
@ -67,7 +67,7 @@ export default async function CancellationPage() {
{cancelledOrders.length > 0 ? ( {cancelledOrders.length > 0 ? (
cancelledOrders.map((order) => ( cancelledOrders.map((order) => (
<TableRow key={order.id} href={order.cancellationUrl || order.url} title={`Order #${order.id} 취소 상세`}> <TableRow key={order.id} href={order.cancellationUrl || order.url} title={`Order #${order.id} 취소 상세`}>
<TableCell className="font-medium text-zinc-950">{order.id}</TableCell> <TableCell className="font-medium">{order.id}</TableCell>
{/* <TableCell className="text-zinc-500">{order.date}</TableCell> */} {/* <TableCell className="text-zinc-500">{order.date}</TableCell> */}
<TableCell className="font-medium text-zinc-500">{order.cancellationDate}</TableCell> <TableCell className="font-medium text-zinc-500">{order.cancellationDate}</TableCell>
{/* 처리 일자 추가 (값이 없으면 '-' 출력) */} {/* 처리 일자 추가 (값이 없으면 '-' 출력) */}
@ -77,17 +77,17 @@ export default async function CancellationPage() {
<TableCell> <TableCell>
<div className="flex items-center gap-2"> <div className="flex items-center gap-2">
<Avatar src={undefined} initials={order.customer.name[0]} className="size-6" /> <Avatar src={undefined} initials={order.customer.name[0]} className="size-6" />
<span className="text-zinc-950">{order.customer.name}</span> <span className="">{order.customer.name}</span>
</div> </div>
</TableCell> </TableCell>
<TableCell className="text-zinc-500">{order.event.productType}</TableCell> <TableCell className="text-zinc-500">{order.event.productType}</TableCell>
<TableCell> <TableCell>
<div className="flex items-center gap-2"> <div className="flex items-center gap-2">
<Avatar src={order.event.thumbUrl} className="size-6" /> <Avatar src={order.event.thumbUrl} className="size-6" />
<span className="max-w-[150px] truncate text-zinc-950">{order.event.name}</span> <span className="max-w-[150px] truncate">{order.event.name}</span>
</div> </div>
</TableCell> </TableCell>
<TableCell className="text-right font-semibold text-zinc-950">{order.amount.krw}</TableCell> <TableCell className="text-right font-semibold ">{order.amount.krw}</TableCell>
<TableCell> <TableCell>
<Badge <Badge
color={ color={

View File

@ -1,7 +1,7 @@
import { Stat } from '@/app/stat' import { Stat } from '@/app/stat'
import { Avatar } from '@/components/avatar' import { Avatar } from '@/components/avatar'
import { Divider } from '@/components/divider' import { Divider } from '@/components/divider'
import { Heading, Subheading } from '@/components/heading' import { Heading } from '@/components/heading'
import { Input, InputGroup } from '@/components/input' import { Input, InputGroup } from '@/components/input'
import { import {
Pagination, Pagination,
@ -26,8 +26,8 @@ export default async function Orders() {
return ( return (
<> <>
<div className="mt-8 flex items-end justify-between"> <div className="flex flex-col gap-4 sm:mt-10 sm:flex-row sm:items-end sm:justify-between lg:mt-14">
<Subheading>Overview</Subheading> <Heading>Overview</Heading>
<div> <div>
<Select name="period"> <Select name="period">
<option value="last_week"> 1</option> <option value="last_week"> 1</option>
@ -44,15 +44,17 @@ export default async function Orders() {
<Stat title="총 주문(건)" value="1,030" change="+1.5%" /> <Stat title="총 주문(건)" value="1,030" change="+1.5%" />
</div> </div>
<Divider className="mt-10" /> <Divider className="mt-10" />
<div className="mt-14 flex items-end justify-between gap-4"> <div className="mt-14 flex flex-col gap-4 sm:flex-row sm:items-end sm:justify-between">
<Heading>Orders</Heading> <Heading>Orders</Heading>
<div className="grid grid-cols-2 gap-2"> <div className="flex w-full flex-col gap-2 sm:max-w-2xl sm:flex-row sm:items-center sm:justify-end">
<Select name="order_type"> <div className="flex-1 sm:w-40 sm:flex-none">
<option value="all"> </option> <Select name="order_type">
<option value="assets"></option> <option value="all"> </option>
<option value="textures"></option> <option value="assets"></option>
</Select> <option value="textures"></option>
<InputGroup> </Select>
</div>
<InputGroup className="w-full sm:flex-1">
<MagnifyingGlassIcon /> <MagnifyingGlassIcon />
<Input name="search" placeholder="검색&hellip;" aria-label="Search" /> <Input name="search" placeholder="검색&hellip;" aria-label="Search" />
</InputGroup> </InputGroup>

View File

@ -1,6 +1,5 @@
import { Stat } from '@/app/stat' import { Stat } from '@/app/stat'
import { Divider } from '@/components/divider' import { Heading } from '@/components/heading'
import { Heading, Subheading } from '@/components/heading'
import { Select } from '@/components/select' import { Select } from '@/components/select'
import { getRecentOrders } from '@/data' import { getRecentOrders } from '@/data'
@ -9,63 +8,70 @@ export default async function Home() {
return ( return (
<> <>
<Heading>Overview</Heading> <div className="grid gap-16 sm:mt-12 lg:mt-14">
<div className="mt-18 flex items-end justify-between"> <div className="grid gap-4">
<Subheading>Orders Overview</Subheading> <div className="flex flex-col gap-4 sm:flex-row sm:items-end sm:justify-between">
<div> <Heading>Orders Overview</Heading>
<Select name="period"> <div>
<option value="last_week"> 1</option> <Select name="period">
<option value="last_month"> 1</option> <option value="last_week"> 1</option>
<option value="last_quarter"> 3</option> <option value="last_month"> 1</option>
<option value="last_year"> 1</option> <option value="last_quarter"> 3</option>
</Select> <option value="last_year"> 1</option>
</Select>
</div>
</div>
<div className="grid gap-8 sm:grid-cols-2 lg:grid-cols-4 xl:grid-cols-4">
<Stat title="총 판매금액(원)" value="2,600,000" change="+3.5%" />
<Stat title="애셋 판매(원)" value="1,200,000" change="-0.5%" />
<Stat title="텍스처 판매(원)" value="1,400,000" change="+4.5%" />
<Stat title="총 주문(건)" value="1,030" change="+1.5%" />
</div>
{/* <Divider className="mt-10 mb-10" /> */}
</div> </div>
</div>
<div className="mt-4 grid gap-8 sm:grid-cols-2 lg:grid-cols-4 xl:grid-cols-4">
<Stat title="총 판매금액(원)" value="2,600,000" change="+3.5%" />
<Stat title="애셋 판매(원)" value="1,200,000" change="-0.5%" />
<Stat title="텍스처 판매(원)" value="1,400,000" change="+4.5%" />
<Stat title="총 주문(건)" value="1,030" change="+1.5%" />
</div>
{/* <Divider className="mt-10 mb-10" /> */}
<div className="mt-18 flex items-end justify-between"> <div className="grid gap-4">
<Subheading>Products Overview</Subheading> <div className="flex flex-col gap-4 sm:flex-row sm:items-end sm:justify-between">
<div> <Heading>Products Overview</Heading>
<Select name="period"> <div>
<option value="last_week"> 1</option> <Select name="period">
<option value="last_month"> 1</option> <option value="last_week"> 1</option>
<option value="last_quarter"> 3</option> <option value="last_month"> 1</option>
<option value="last_year"> 1</option> <option value="last_quarter"> 3</option>
</Select> <option value="last_year"> 1</option>
</Select>
</div>
</div>
<div className="grid gap-8 sm:grid-cols-2 lg:grid-cols-4 xl:grid-cols-4">
<Stat title="애셋" value="21,200" change="-0.5%" />
<Stat title="텍스처" value="121,400" change="+4.5%" />
<Stat title="판매" value="231,030" change="+1.5%" />
<Stat title="미판매" value="352,630" change="+3.5%" />
</div>
{/* <Divider className="mt-10 mb-10" /> */}
</div> </div>
</div>
<div className="mt-4 grid gap-8 sm:grid-cols-2 lg:grid-cols-4 xl:grid-cols-4">
<Stat title="애셋" value="21,200" change="-0.5%" />
<Stat title="텍스처" value="121,400" change="+4.5%" />
<Stat title="판매" value="231,030" change="+1.5%" />
<Stat title="미판매" value="352,630" change="+3.5%" />
</div>
{/* <Divider className="mt-10 mb-10" /> */}
<div className="mt-18 flex items-end justify-between"> <div className="grid gap-4">
<Subheading>Users Overview</Subheading> <div className="flex flex-col gap-4 sm:flex-row sm:items-end sm:justify-between">
<div> <Heading>Users Overview</Heading>
<Select name="period"> <div>
<option value="last_week"> 1</option> <Select name="period">
<option value="last_month"> 1</option> <option value="last_week"> 1</option>
<option value="last_quarter"> 3</option> <option value="last_month"> 1</option>
<option value="last_year"> 1</option> <option value="last_quarter"> 3</option>
</Select> <option value="last_year"> 1</option>
</Select>
</div>
</div>
<div className="grid gap-8 sm:grid-cols-2 lg:grid-cols-4 xl:grid-cols-4">
<Stat title="일반" value="3,630" change="+3.5%" />
<Stat title="기관" value="1,200" change="-0.5%" />
<Stat title="기업" value="1,400" change="+4.5%" />
<Stat title="교육" value="1,030" change="+1.5%" />
</div>
{/* <Divider className="mt-10 mb-10" /> */}
</div> </div>
</div> </div>
<div className="mt-4 grid gap-8 sm:grid-cols-2 lg:grid-cols-4 xl:grid-cols-4">
<Stat title="일반" value="3,630" change="+3.5%" />
<Stat title="기관" value="1,200" change="-0.5%" />
<Stat title="기업" value="1,400" change="+4.5%" />
<Stat title="교육" value="1,030" change="+1.5%" />
</div>
{/* <Divider className="mt-10 mb-10" /> */}
</> </>
) )
} }

View File

@ -32,7 +32,7 @@ export default function ProductsClient({ products }: { products: any[] }) {
return ( return (
<> <>
<div className="mt-14 flex flex-col gap-4 sm:flex-row sm:items-end sm:justify-between"> <div className="flex flex-col gap-4 sm:mt-10 sm:flex-row sm:items-end sm:justify-between lg:mt-14">
<Heading>Products</Heading> <Heading>Products</Heading>
<div className="flex w-full flex-col gap-2 sm:max-w-4xl sm:flex-row sm:items-center sm:justify-end"> <div className="flex w-full flex-col gap-2 sm:max-w-4xl sm:flex-row sm:items-center sm:justify-end">

View File

@ -12,7 +12,7 @@ import {
DropdownMenu, DropdownMenu,
DropdownSection, DropdownSection,
} from '@/components/dropdown' } from '@/components/dropdown'
import { Heading, Subheading } from '@/components/heading' import { Heading } from '@/components/heading'
import { Input, InputGroup } from '@/components/input' import { Input, InputGroup } from '@/components/input'
import { Link } from '@/components/link' import { Link } from '@/components/link'
import { import {
@ -43,8 +43,8 @@ export default function UsersClient({ initialUsers }: { initialUsers: any[] }) {
return ( return (
<> <>
<div className="mt-8 flex items-end justify-between"> <div className="flex flex-col gap-4 sm:mt-10 sm:flex-row sm:items-end sm:justify-between lg:mt-14">
<Subheading>Overview</Subheading> <Heading>Overview</Heading>
<div> <div>
<Select name="period"> <Select name="period">
<option value="last_week"> 1</option> <option value="last_week"> 1</option>
@ -64,17 +64,19 @@ export default function UsersClient({ initialUsers }: { initialUsers: any[] }) {
<Divider className="mt-10" /> <Divider className="mt-10" />
<div className="mt-14 flex items-end justify-between gap-4"> <div className="mt-14 flex flex-col gap-4 sm:flex-row sm:items-end sm:justify-between">
<Heading>Users</Heading> <Heading>Users</Heading>
<div className="flex max-w-xl justify-end gap-2"> <div className="flex w-full flex-col gap-2 sm:max-w-2xl sm:flex-row sm:items-center sm:justify-end">
<Select name="user_type" className="flex-1"> <div className="flex-1 sm:w-40 sm:flex-none">
<option value="all"> </option> <Select name="user_type">
<option value="normal"></option> <option value="all"> </option>
<option value="corp"></option> <option value="normal"></option>
<option value="org"></option> <option value="corp"></option>
<option value="edu"></option> <option value="org"></option>
</Select> <option value="edu"></option>
<InputGroup className="flex-2"> </Select>
</div>
<InputGroup className="w-full sm:flex-1">
<MagnifyingGlassIcon /> <MagnifyingGlassIcon />
<Input name="search" placeholder="사용자 검색&hellip;" aria-label="Search" /> <Input name="search" placeholder="사용자 검색&hellip;" aria-label="Search" />
</InputGroup> </InputGroup>
@ -108,7 +110,7 @@ export default function UsersClient({ initialUsers }: { initialUsers: any[] }) {
initials={!user.avatar ? user.name[0] : undefined} initials={!user.avatar ? user.name[0] : undefined}
className="size-8" className="size-8"
/> />
<span className="font-medium text-zinc-950">{user.name}</span> <span className="font-medium">{user.name}</span>
</div> </div>
</TableCell> </TableCell>
<TableCell> <TableCell>