From 365adde4bee75a07d449c28c5915db96ecf14e05 Mon Sep 17 00:00:00 2001 From: Nav0za Date: Wed, 22 Apr 2026 17:05:15 +0700 Subject: [PATCH] separate css file --- app/assets/css/main.css | 183 +++++++++++++++++++++++++++++++-- app/components/AppCalendar.vue | 76 -------------- app/pages/index.vue | 4 - app/pages/rooms.vue | 20 ---- app/pages/sections/[id].vue | 15 --- app/pages/summary.vue | 115 --------------------- app/pages/teacher/[id].vue | 37 ------- app/pages/terms.vue | 18 ---- server/data/data.db | Bin 323584 -> 323584 bytes 9 files changed, 177 insertions(+), 291 deletions(-) diff --git a/app/assets/css/main.css b/app/assets/css/main.css index 2e111ae..dc7a0c0 100644 --- a/app/assets/css/main.css +++ b/app/assets/css/main.css @@ -23,8 +23,7 @@ body { color: #0f172a; } -/* FullCalendar button theme (Premium Light) */ -/* FullCalendar button theme (Primary) */ +/* ===== FullCalendar Styles ===== */ .fc .fc-button, .fc .fc-button-primary { background-color: var(--color-primary-500, #3b82f6) !important; @@ -48,7 +47,6 @@ body { color: #ffffff !important; } -/* FullCalendar date/holiday text (Premium Light) */ .fc .fc-daygrid-day-number, .fc .fc-daygrid-day-top .fc-daygrid-day-number, .fc .fc-daygrid-day-number > span, @@ -62,13 +60,11 @@ body { opacity: 1 !important; } -/* Ensure holidays/events display as dark text */ .fc .fc-daygrid-event-harness .fc-event-title, .fc .fc-daygrid-event-harness .fc-event-time { color: #0f172a !important; } -/* FullCalendar toolbar (title + nav buttons) */ .fc .fc-toolbar, .fc .fc-toolbar-chunk { background: #ffffff !important; @@ -79,7 +75,182 @@ body { color: #0f172a !important; } -/* Ensure today button & nav icons show correctly */ .fc .fc-button.fc-button-primary .fc-icon { color: #ffffff !important; } + +/* FullCalendar - extracted from AppCalendar.vue */ +.fc-daygrid-event { + cursor: pointer; +} + +.fc-event { + border-radius: 4px; +} + +.event-holiday .fc-event-title, +.event-holiday .fc-event-main-frame { + font-size: 1.1rem !important; + font-weight: 700 !important; + padding: 2px 4px !important; +} + +.fc .fc-col-header, +.fc .fc-col-header tr, +.fc .fc-col-header th { + background-color: #ffffff !important; +} + +.fc .fc-col-header-cell { + background-color: #f8fafc !important; + border-color: #e2e8f0 !important; +} + +.fc .fc-col-header-cell-cushion { + color: #0f172a !important; + font-weight: 600; +} + +.fc .fc-scrollgrid { + border-color: #e2e8f0 !important; +} + +.fc-theme-standard th { + background-color: #f8fafc !important; +} + +.fc .fc-list-day th, +.fc .fc-list-day td, +.fc .fc-list-day-cushion, +.fc .fc-cell-shaded { + background-color: #ffffff !important; +} + +.fc-list-day-text, +.fc-list-day-side-text, +.fc-list-day-cushion * { + color: #1e293b !important; + font-weight: 800 !important; + text-decoration: none !important; +} + +.fc-list-event:hover td { + background-color: #f1f5f9 !important; +} + +/* ===== Custom Scrollbar (ใช้ร่วมกันทุกหน้า) ===== */ +.custom-scrollbar::-webkit-scrollbar { + width: 6px; + height: 6px; +} + +.custom-scrollbar::-webkit-scrollbar-track { + background: #f1f5f9; + border-radius: 10px; +} + +.custom-scrollbar::-webkit-scrollbar-thumb { + background: #cbd5e1; + border-radius: 10px; +} + +.custom-scrollbar::-webkit-scrollbar-thumb:hover { + background: #94a3b8; +} + +/* ===== Animations (teacher/[id].vue) ===== */ +@keyframes zoom-in { + from { + opacity: 0; + transform: scale(0.95) translateY(10px); + } + to { + opacity: 1; + transform: scale(1) translateY(0); + } +} + +.animate-in { + animation: zoom-in 0.2s ease-out forwards; +} + +/* ===== Print Styles (summary.vue) ===== */ +@media print { + body, + .min-h-screen { + background-color: white !important; + color: black !important; + } + + .min-h-screen { + background: white !important; + padding-bottom: 0 !important; + } + + .no-print, + header, + nav, + .bg-slate-800.sticky { + display: none !important; + } + + .print-only { + display: block !important; + } + + .bg-slate-800 { + background-color: #f8fafc !important; + border: 1px solid #e2e8f0 !important; + color: black !important; + box-shadow: none !important; + } + + .text-white { color: black !important; } + .text-slate-400 { color: #475569 !important; } + .text-green-500, .text-green-400 { color: #166534 !important; } + .text-amber-500, .text-amber-400 { color: #92400e !important; } + .text-red-500, .text-red-400 { color: #991b1b !important; } + + .bg-slate-900 { + background-color: #f1f5f9 !important; + } + + .bg-gradient-to-r { + print-color-adjust: exact; + -webkit-print-color-adjust: exact; + } + + table { + width: 100% !important; + border-collapse: collapse !important; + } + + th { + background-color: #f1f5f9 !important; + color: black !important; + border-bottom: 2px solid black !important; + } + + td { + border-bottom: 1px solid #e2e8f0 !important; + } + + .container { + max-width: 100% !important; + width: 100% !important; + padding: 0 !important; + } + + .grid { display: grid !important; } + + .lg\:grid-cols-2 { + grid-template-columns: 1fr 1fr !important; + } + + .mb-8 { margin-bottom: 2rem !important; } + + @page { + margin: 1cm; + size: A4; + } +} diff --git a/app/components/AppCalendar.vue b/app/components/AppCalendar.vue index 70f5658..6655456 100644 --- a/app/components/AppCalendar.vue +++ b/app/components/AppCalendar.vue @@ -2053,80 +2053,4 @@ const getEventTypeClass = (type, isIconContainer = false) => { } - diff --git a/app/pages/index.vue b/app/pages/index.vue index 43ffe19..78df4cc 100644 --- a/app/pages/index.vue +++ b/app/pages/index.vue @@ -10,7 +10,3 @@ // Teacher data is still needed for the calendar filtering/display const { data: teachers } = await useFetch('/api/teachers') - - diff --git a/app/pages/rooms.vue b/app/pages/rooms.vue index 7e7f00c..0ec599b 100644 --- a/app/pages/rooms.vue +++ b/app/pages/rooms.vue @@ -533,23 +533,3 @@ const deleteRoom = async () => { } - diff --git a/app/pages/sections/[id].vue b/app/pages/sections/[id].vue index 5ce8030..29245b8 100644 --- a/app/pages/sections/[id].vue +++ b/app/pages/sections/[id].vue @@ -1048,18 +1048,3 @@ onMounted(() => { }) - diff --git a/app/pages/summary.vue b/app/pages/summary.vue index 3e87a2c..29f6214 100644 --- a/app/pages/summary.vue +++ b/app/pages/summary.vue @@ -379,118 +379,3 @@ const exportToPDF = () => { } - diff --git a/app/pages/teacher/[id].vue b/app/pages/teacher/[id].vue index 14e09d8..369b8ed 100644 --- a/app/pages/teacher/[id].vue +++ b/app/pages/teacher/[id].vue @@ -1381,40 +1381,3 @@ watch(scheduleError, (err) => { }) - diff --git a/app/pages/terms.vue b/app/pages/terms.vue index cf530ef..94526c2 100644 --- a/app/pages/terms.vue +++ b/app/pages/terms.vue @@ -494,21 +494,3 @@ const formatDate = (dateString) => { } - diff --git a/server/data/data.db b/server/data/data.db index 96d98e946c113f5088f2592257759271d7e21a70..c4e383b52aaab152a22ef986b5bc31e541148007 100644 GIT binary patch delta 867 zcmZp8Al&dkc!D(J;fXTNjE6TSeA5$C5$0spW=u}ZNzF@1EQ(JpOU)}O*4mt-KO=#M ziI0VWkA**gTZ~(5v%my4ZvJKlEkTARU1MWaX=%pB#L4!vl_tNRq&a<)6|*Owrjdb> znXZ9}u8~=Yp~2+qvyCU8pDZ|e?F^3TyR4WUL%1I7Sp8sU=Yt(Jl8;0bks+vHwD1r!GuSWKQXIT0j0S%12eHqZuB zB5jz=GOwM9;rQgM{vR=#K8f6xDm|0Vy+%>o7RPgNfgUfqx#q&32vzj0XHn2`bYUtY?()LU`8<>^egepi`KI z#DtUca|?1(OHxzd4lu$KftCr%VDmzd%me!hY$&s+1TTr^aREKR1Pmr%Xg=D`vw`s% zzZRc E0K<~kasU7T delta 717 zcma)2&1(}u6rVS{RkNM!tSm%BwssQ`TVw6)2irCjDfBOpcoVfjgO}Qaie77x6c0jm z4qLH_Ie96X>K>BxAO#gqf>6m#7<%#+1o7a>StV_PAo7NRdB6Ajc(W|bWnr#mVEd6Z z58JO6ew1tf~O=PSc8s;~`!{K-X zOo|Zxj8@W~cQTWKd-MF`;~d|7GR4o#CisRwrjNVK4JMdB;RY8RkAHaT@s0H~&(CTx zJgSM-rf5G9trw!TTCg2|f1F)(XD;zlX#Vk8xt=}x4vJL)>bjx zolhlDxRpRf$xdx;{_7X@^?!g>iUO0jE zFxdbGR#sG%efT8Nq(m%ALmD>87If%o+33qVGMLvIB<%b}2nGqk0ii=X bP4Wr8QX(A)9*Nh&Rz*NX;EGV53)T1q|3<#&