Skip to content

Commit a46b824

Browse files
committed
style: 스타일 정리 및 스타일 변경으로 인한 버전 업데이트
1 parent a61dbfa commit a46b824

9 files changed

Lines changed: 79 additions & 40 deletions

File tree

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,12 @@ eCampus 페이지에서 과목별 학습 항목(과제/퀴즈/강의/토론/자
2121

2222
## 버전별 업데이트
2323

24+
### v1.2.5 (업데이트: 2026-04-13)
25+
26+
- 대시보드 카드에서 `확인필요` 같은 상태 라벨과 자료 다운로드/숨기기 버튼이 겹치지 않도록 액션 영역 레이아웃을 다시 정리했습니다.
27+
- 카드 액션 버튼 배경이 카드 hover 톤과 자연스럽게 이어지도록 타입별 액션 스타일을 맞췄습니다.
28+
- 랜딩페이지와 README의 최신 업데이트 내역을 `v1.2.5` 기준으로 갱신했습니다.
29+
2430
### v1.2.4 (업데이트: 2026-04-13)
2531

2632
- 설치 전에 대시보드와 VOD 화면을 바로 확인할 수 있도록 랜딩/프리뷰 페이지를 새로 구성하고, 버전별 업데이트 영역도 리스트형 타임라인으로 정리했습니다.

manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"manifest_version": 3,
33
"name": "eHelper",
4-
"version": "1.2.4",
4+
"version": "1.2.5",
55
"description": "eCampus 과목별 과제/퀴즈/강의/토론/자료를 한눈에 보는 확장 프로그램",
66
"permissions": ["storage", "downloads"],
77
"host_permissions": [

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "ecampus-dashboard-smu",
3-
"version": "1.2.4",
3+
"version": "1.2.5",
44
"private": true,
55
"type": "module",
66
"scripts": {

src/content/ui/components/DashboardContent.tsx

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,6 @@ function LoadingOverlay({ message }: { message: string }) {
4949
role="status"
5050
aria-live="polite"
5151
>
52-
<div
53-
className="absolute left-1/2 top-0 h-28 w-[min(360px,calc(100%-32px))] -translate-x-1/2 -translate-y-6 rounded-[28px] bg-white shadow-[0_20px_48px_rgba(255,255,255,0.92)] blur-[8px]"
54-
aria-hidden="true"
55-
/>
5652
<div className="relative shrink-0 flex min-w-[220px] max-w-[320px] flex-col items-center gap-3 rounded-2xl border border-zinc-300 bg-white px-5 py-4 text-center shadow-[0_18px_40px_rgba(15,23,42,0.18)]">
5753
<LoadingSpinner />
5854
<div className="space-y-1 text-[12px] font-semibold text-zinc-900">

src/content/ui/components/DashboardItemCard.tsx

Lines changed: 41 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import type { DashboardItem, DashboardRuntime } from '../types';
22
import { MdOutlineFileDownload, MdOutlineVisibilityOff } from 'react-icons/md';
33
import {
4+
itemCardActionToneClass,
45
itemCardToneClass,
56
stateBadgeClass,
67
typeBadgeClass,
@@ -40,7 +41,7 @@ export function DashboardItemCard({
4041
role={canOpenItem ? 'button' : undefined}
4142
tabIndex={canOpenItem ? 0 : undefined}
4243
className={[
43-
'w-full relative rounded-xl border px-3 py-3 text-left shadow-[0_4px_10px_rgba(15,23,42,0.05)] transition focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sky-100',
44+
'group w-full relative rounded-xl border px-3 py-3 text-left shadow-[0_4px_10px_rgba(15,23,42,0.05)] transition focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sky-100',
4445
canOpenItem ? 'cursor-pointer' : 'cursor-default',
4546
itemCardToneClass(item.type),
4647
].join(' ')}
@@ -80,7 +81,6 @@ export function DashboardItemCard({
8081
)}
8182
</div>
8283
</div>
83-
8484
<div className="mb-[2px] flex items-center gap-1.5">
8585
<span
8686
className={[
@@ -97,39 +97,46 @@ export function DashboardItemCard({
9797
{item.title}
9898
</span>
9999
</div>
100+
<div className="flex justify-between w-full">
101+
<div className="flex flex-col gap-0.5">
102+
{detailMetaLines.map((line, index) => (
103+
<p
104+
key={`detail-${item.id}-${index}`}
105+
className="mb-0 mt-0.5 text-[12px] leading-5 break-words whitespace-normal text-zinc-500"
106+
>
107+
{line}
108+
</p>
109+
))}
100110

101-
<div className="flex flex-col gap-0.5">
102-
{detailMetaLines.map((line, index) => (
103-
<p
104-
key={`detail-${item.id}-${index}`}
105-
className="mb-0 mt-0.5 text-[12px] leading-5 break-words whitespace-normal text-zinc-500"
106-
>
107-
{line}
108-
</p>
109-
))}
110-
111-
{extraMetaLines.map((line, index) => (
112-
<p
113-
key={`extra-${item.id}-${index}`}
114-
className="mb-0 mt-0.5 text-[12px] leading-5 break-words whitespace-normal text-zinc-500"
115-
>
116-
{line}
117-
</p>
118-
))}
111+
{extraMetaLines.map((line, index) => (
112+
<p
113+
key={`extra-${item.id}-${index}`}
114+
className="mb-0 mt-0.5 text-[12px] leading-5 break-words whitespace-normal text-zinc-500"
115+
>
116+
{line}
117+
</p>
118+
))}
119119

120-
{periodMetaLines.map((line, index) => (
121-
<p
122-
key={`period-${item.id}-${index}`}
123-
className="mb-0 mt-0.5 text-[12px] leading-5 break-words whitespace-normal text-zinc-500"
124-
>
125-
{line}
126-
</p>
127-
))}
128-
<div className="flex w-fit absolute right-2 bottom-3">
120+
{periodMetaLines.map((line, index) => (
121+
<p
122+
key={`period-${item.id}-${index}`}
123+
className="mb-0 mt-0.5 text-[12px] leading-5 break-words whitespace-normal text-zinc-500"
124+
>
125+
{line}
126+
</p>
127+
))}
128+
</div>
129+
<div
130+
className="flex w-fit h-full self-end gap-[2px] mt-auto"
131+
style={{ alignSelf: 'end', backgroundColor: 'inherit' }}
132+
>
129133
{item.type === 'RESOURCE' && item.url && (
130134
<button
131135
type="button"
132-
className="inline-flex h-7 w-7 items-center justify-center rounded-md border border-none bg-white p-0 text-[14px] text-zinc-700 transition hover:border-zinc-300 hover:bg-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sky-100"
136+
className={[
137+
'inline-flex h-7 w-7 items-center justify-center rounded-md border border-none p-0 text-[14px] text-zinc-700 transition focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sky-100 hover:cursor-pointer',
138+
itemCardActionToneClass(item.type),
139+
].join(' ')}
133140
title="자료 다운로드"
134141
aria-label="자료 다운로드"
135142
onClick={(event) => {
@@ -147,7 +154,10 @@ export function DashboardItemCard({
147154
)}
148155
<button
149156
type="button"
150-
className="inline-flex h-7 w-7 items-center justify-center rounded-md border border-none bg-white p-0 text-[14px] text-zinc-700 transition hover:border-zinc-300 hover:bg-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sky-100"
157+
className={[
158+
'inline-flex h-7 w-7 items-center justify-center rounded-md border border-none p-0 text-[14px] text-zinc-700 transition focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sky-100 hover:cursor-pointer',
159+
itemCardActionToneClass(item.type),
160+
].join(' ')}
151161
title="이 항목 숨기기"
152162
aria-label="이 항목 숨기기"
153163
onClick={(event) => {

src/content/ui/utils/itemAppearance.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,16 @@ export function itemCardToneClass(type: ItemType) {
6464
return 'border-solid border-zinc-200 bg-white hover:border-zinc-300 hover:bg-zinc-50';
6565
}
6666

67+
export function itemCardActionToneClass(type: ItemType) {
68+
if (type === 'ASSIGNMENT') return 'bg-white group-hover:bg-rose-50/35';
69+
if (type === 'QUIZ') return 'bg-white group-hover:bg-indigo-50/35';
70+
if (type === 'LECTURE') return 'bg-white group-hover:bg-sky-50/35';
71+
if (type === 'FORUM') return 'bg-white group-hover:bg-amber-50/35';
72+
if (type === 'RESOURCE') return 'bg-white group-hover:bg-emerald-50/35';
73+
if (type === 'NOTICE') return 'bg-white group-hover:bg-violet-50/35';
74+
return 'bg-white group-hover:bg-zinc-50';
75+
}
76+
6777
export function ddayBadgeClass(dueAt?: number) {
6878
if (typeof dueAt !== 'number') {
6979
return 'bg-zinc-100 text-zinc-600 ring-1 ring-zinc-200';

src/preview/components/landing/LandingVersionsSection.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ function getReleaseTone(label: string) {
66
switch (label) {
77
case 'Latest':
88
return 'border-sky-300/20 bg-sky-400/12 text-sky-100';
9+
case 'UI':
10+
return 'border-violet-300/20 bg-violet-400/12 text-violet-100';
911
case 'Infra':
1012
return 'border-amber-300/20 bg-amber-400/12 text-amber-100';
1113
case 'Launch':

src/preview/landingContent.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,10 +91,25 @@ export const previewFixHighlights: LandingFixHighlight[] = [
9191
];
9292

9393
export const previewReleaseNotes: LandingReleaseNote[] = [
94+
{
95+
version: '1.2.5',
96+
date: '2026-04-13',
97+
label: 'UI',
98+
title: '대시보드 카드 액션 정렬 보정',
99+
summary:
100+
'상태 라벨과 카드 액션 버튼이 겹치던 레이아웃을 정리하고, 버튼 배경 톤도 카드 hover 흐름에 맞춰 다시 맞췄습니다.',
101+
changes: [
102+
'확인필요 라벨과 다운로드/숨기기 버튼이 겹치지 않도록 카드 액션 영역 구조 조정',
103+
'카드 액션 버튼이 타입별 카드 hover 톤을 함께 따라가도록 스타일 정리',
104+
'랜딩페이지와 README의 최신 업데이트 내역을 1.2.5 기준으로 동기화',
105+
],
106+
benefit:
107+
'자료 카드처럼 우측 메타 요소가 많은 경우에도 화면이 덜 깨지고, 카드 상호작용이 더 일관되게 보입니다.',
108+
},
94109
{
95110
version: '1.2.4',
96111
date: '2026-04-13',
97-
label: 'Latest',
112+
label: 'Core',
98113
title: '랜딩, 크롤링, VOD 흐름 정리',
99114
summary:
100115
'설치 전 체험용 랜딩/프리뷰를 새로 구성하고, 과목별 증분 갱신과 자료 예외 처리, CMS VOD 대응까지 전체 흐름을 함께 다듬었습니다.',

0 commit comments

Comments
 (0)