diff --git a/resources/css/app.css b/resources/css/app.css index f12718b..8cca4fb 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -26,9 +26,24 @@ @custom-variant dark (&:where(.dark, .dark *)); @layer base { + html, body { font-stretch: 96%; @apply transition-colors duration-300; + scrollbar-width: none; /* Firefox */ + -ms-overflow-style: none; /* IE and Edge */ + } + + /* Hide scrollbar for Chrome, Safari and Opera */ + *::-webkit-scrollbar { + display: none; + width: 0 !important; + height: 0 !important; + } + + * { + scrollbar-width: none; /* Firefox */ + -ms-overflow-style: none; /* IE and Edge */ } } diff --git a/resources/js/components/AppLogo.vue b/resources/js/components/AppLogo.vue index 6151d87..df8b16d 100644 --- a/resources/js/components/AppLogo.vue +++ b/resources/js/components/AppLogo.vue @@ -11,8 +11,8 @@ const logoHref = computed(() => { const pref = localStorage.getItem('preferred_course'); if (pref === 'ssc') { -return '/ssc'; -} + return '/ssc'; + } } catch { // ignore } diff --git a/resources/js/components/CourseSwitcher.vue b/resources/js/components/CourseSwitcher.vue index c174aaf..4c872fb 100644 --- a/resources/js/components/CourseSwitcher.vue +++ b/resources/js/components/CourseSwitcher.vue @@ -27,11 +27,11 @@ const setCoursePreference = (course: 'hsc' | 'ssc') => { class="mb-6 rounded-xl border border-slate-200 bg-white p-3.5 shadow-xs transition-all sm:p-5 dark:border-gray-700 dark:bg-gray-900" >
-
+
{ Active Repository

আপনি {{ isSsc ? 'SSC' : 'HSC' }} এর কন্টেন্টগুলো দেখছেন @@ -60,7 +60,10 @@ const setCoursePreference = (course: 'hsc' | 'ssc') => { >

@@ -89,7 +92,11 @@ const setCoursePreference = (course: 'hsc' | 'ssc') => {
import { usePage } from '@inertiajs/vue3'; -import { - Share2, - Check, - Loader2, - Link as LinkIcon, -} from 'lucide-vue-next'; +import { Share2, Check, Loader2, Link as LinkIcon } from 'lucide-vue-next'; import { computed, ref, onMounted, onBeforeUnmount } from 'vue'; import AuthModal from './AuthModal.vue'; diff --git a/resources/js/components/Footer.vue b/resources/js/components/Footer.vue index 51778bd..0587cd4 100644 --- a/resources/js/components/Footer.vue +++ b/resources/js/components/Footer.vue @@ -238,14 +238,18 @@ const isFullFooter = computed(() => { v-if="!isFullFooter" class="mt-auto border-t border-slate-200/70 bg-white/80 pt-8 pb-6 backdrop-blur-md md:hidden dark:border-gray-800/70 dark:bg-gray-950/80" > -
+
-
+
{
-

+

© 2026 HSCStack

diff --git a/resources/js/components/NavBar.vue b/resources/js/components/NavBar.vue index 935d62b..6b4d278 100644 --- a/resources/js/components/NavBar.vue +++ b/resources/js/components/NavBar.vue @@ -18,7 +18,14 @@ import { HeartHandshake, Search, } from 'lucide-vue-next'; -import { computed, ref, onMounted, onBeforeUnmount, watch, nextTick } from 'vue'; +import { + computed, + ref, + onMounted, + onBeforeUnmount, + watch, + nextTick, +} from 'vue'; import { globalSearchQuery } from '@/lib/searchStore'; import { useDarkMode } from '@/lib/useDarkMode'; import AppLogo from './AppLogo.vue'; @@ -63,7 +70,8 @@ const searchInputRef = ref(null); const triggerSearch = () => { if (!user.value) { - authModalMessage.value = 'অনুগ্রহ করে বিষয় ও কনটেন্ট সার্চ করতে প্রথমে লগইন করুন।'; + authModalMessage.value = + 'অনুগ্রহ করে বিষয় ও কনটেন্ট সার্চ করতে প্রথমে লগইন করুন।'; showAuthModal.value = true; return; @@ -90,8 +98,8 @@ const homeHref = computed(() => { const pref = localStorage.getItem('preferred_course'); if (pref === 'ssc') { -return '/ssc'; -} + return '/ssc'; + } } catch { // ignore } @@ -194,7 +202,7 @@ onBeforeUnmount(() => {
{ class="w-full appearance-none rounded-xl border border-slate-200 bg-slate-50 py-2.5 pr-20 pl-10 text-sm font-semibold text-slate-800 placeholder:text-slate-400 focus:border-indigo-500 focus:bg-white focus:outline-none dark:border-gray-700 dark:bg-gray-900 dark:text-gray-100 dark:placeholder:text-gray-500 dark:focus:border-indigo-400 dark:focus:bg-gray-900" /> -
+
-
+
@@ -521,10 +541,14 @@ onBeforeUnmount(() => { {{ user.name.charAt(0).toUpperCase() }}
-

+

{{ user.name }}

-

+

{{ user.email }}

@@ -544,7 +568,9 @@ onBeforeUnmount(() => {
-

+

Explore

@@ -580,12 +606,18 @@ onBeforeUnmount(() => {
-

+

Account

@@ -600,17 +632,23 @@ onBeforeUnmount(() => { class="flex items-center gap-3 rounded-xl px-3 py-2 text-xs font-semibold text-slate-600 hover:bg-slate-100/70 hover:text-slate-900 dark:text-gray-400 dark:hover:bg-gray-900/60 dark:hover:text-gray-200" > - {{ isAdmin ? 'Home' : 'Staff Panel' }} + {{ + isAdmin ? 'Home' : 'Staff Panel' + }}
-

+

Platform

@@ -619,7 +657,9 @@ onBeforeUnmount(() => { @click="closeMobileMenu" class="flex items-center gap-3 rounded-xl px-3 py-2 text-xs font-semibold text-slate-600 hover:bg-slate-100/70 hover:text-slate-900 dark:text-gray-400 dark:hover:bg-gray-900/60 dark:hover:text-gray-200" > - + AI Assistant @@ -646,7 +686,9 @@ onBeforeUnmount(() => { @click="closeMobileMenu" class="flex items-center gap-3 rounded-xl px-3 py-2 text-xs font-semibold text-slate-600 hover:bg-slate-100/70 hover:text-slate-900 dark:text-gray-400 dark:hover:bg-gray-900/60 dark:hover:text-gray-200" > - + Support HSCStack
@@ -654,13 +696,19 @@ onBeforeUnmount(() => {
-
+
-

+

Appearance

-
+
-
diff --git a/resources/js/pages/Blog/Show.vue b/resources/js/pages/Blog/Show.vue index d7431b6..74f4376 100644 --- a/resources/js/pages/Blog/Show.vue +++ b/resources/js/pages/Blog/Show.vue @@ -4,7 +4,6 @@ import { Calendar, User, Eye, - ArrowLeft, ArrowRight, PenLine, Heart, @@ -110,11 +109,17 @@ const commentForm = useForm({ content: '', }); -const hasUserCommented = computed(() => - currentUser.value - ? props.comments.some((c: any) => c.user_id === currentUser.value.id) - : false, -); +const hasUserCommented = computed(() => { + if (!currentUser.value?.id) { + return false; + } + const currentId = Number(currentUser.value.id); + + return props.comments.some((c: any) => { + const commentUserId = Number(c.user_id ?? c.user?.id); + return commentUserId === currentId; + }); +}); const handleCommentInputClick = () => { if (!currentUser.value) { @@ -214,10 +219,6 @@ const formatTimeAgo = (dateStr: string) => { year: 'numeric', }).format(date); }; - -const goBack = () => { - window.history.back(); -};