diff --git a/src/router/index.ts b/src/router/index.ts index 64d6aa4df586c56317e580fd2367b79edfbb3ce3..eb7adbaacf00f42c537aa3fef846cfee95b054a5 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -49,10 +49,20 @@ const routes = [ component: () => import('@/views/ShopView.vue'), }, { - path: '/profile', + path: 'profile', name: 'profile', component: UserProfileView }, + { + path: 'friends', + name: 'friends', + component: () => import('@/views/User/UserFriendsView.vue'), + }, + { + path: 'add-friend', + name: 'add-friend', + component: () => import('@/views/User/UserAddFriend.vue'), + }, { path: 'admin', name: 'admin', diff --git a/src/views/User/UserAddFriend.vue b/src/views/User/UserAddFriend.vue new file mode 100644 index 0000000000000000000000000000000000000000..cb8eb7872e11cf3ee6bfde1ca6f9a9d319f50667 --- /dev/null +++ b/src/views/User/UserAddFriend.vue @@ -0,0 +1,226 @@ +<template> + <div class="container"> + <h1>Add Friend</h1> + <div class="row"> + <form class="col-md-5" id="searchBox" role="search"> + <input class="form-control me-2 custom-border" type="search" placeholder="Search" aria-label="Search"> + <button class="btn btn-success" type="submit">Search</button> +</form> + <div class="col-md-8"> + <div class="people-nearby"> + <div class="nearby-user"> + <div class="row"> + <div class="col-md-2 col-sm-2"> + <img src="https://bootdey.com/img/Content/avatar/avatar7.png" alt="user" + class="profile-photo-lg"> + </div> + <div class="col-md-7 col-sm-7"> + <h5><a href="#" class="profile-link">Sophia Page</a></h5> + <p>Software Engineer</p> + <p class="text-muted">500m away</p> + </div> + <div class="col-md-3 col-sm-3"> + <button class="btn btn-primary pull-right">Add Friend</button> + </div> + </div> + </div> + <div class="nearby-user"> + <div class="row"> + <div class="col-md-2 col-sm-2"> + <img src="https://bootdey.com/img/Content/avatar/avatar6.png" alt="user" + class="profile-photo-lg"> + </div> + <div class="col-md-7 col-sm-7"> + <h5><a href="#" class="profile-link">Emma Johnson</a></h5> + <p>Model at Fashion</p> + <p class="text-muted">800m away</p> + </div> + <div class="col-md-3 col-sm-3"> + <button class="btn btn-primary pull-right">Add Friend</button> + </div> + </div> + </div> + <div class="nearby-user"> + <div class="row"> + <div class="col-md-2 col-sm-2"> + <img src="https://bootdey.com/img/Content/avatar/avatar5.png" alt="user" + class="profile-photo-lg"> + </div> + <div class="col-md-7 col-sm-7"> + <h5><a href="#" class="profile-link">Nora Wilson</a></h5> + <p>Writer at Newspaper</p> + <p class="text-muted">2.5km away</p> + </div> + <div class="col-md-3 col-sm-3"> + <button class="btn btn-primary pull-right">Add Friend</button> + </div> + </div> + </div> + <div class="nearby-user"> + <div class="row"> + <div class="col-md-2 col-sm-2"> + <img src="https://bootdey.com/img/Content/avatar/avatar4.png" alt="user" + class="profile-photo-lg"> + </div> + <div class="col-md-7 col-sm-7"> + <h5><a href="#" class="profile-link">Diana Amber</a></h5> + <p>Student</p> + <p class="text-muted">700m away</p> + </div> + <div class="col-md-3 col-sm-3"> + <button class="btn btn-primary pull-right">Add Friend</button> + </div> + </div> + </div> + <div class="nearby-user"> + <div class="row"> + <div class="col-md-2 col-sm-2"> + <img src="https://bootdey.com/img/Content/avatar/avatar3.png" alt="user" + class="profile-photo-lg"> + </div> + <div class="col-md-7 col-sm-7"> + <h5><a href="#" class="profile-link">Addison Thomas</a></h5> + <p>Barber at Fashion</p> + <p class="text-muted">1.5km away</p> + </div> + <div class="col-md-3 col-sm-3"> + <button class="btn btn-primary pull-right">Add Friend</button> + </div> + </div> + </div> + <div class="nearby-user"> + <div class="row"> + <div class="col-md-2 col-sm-2"> + <img src="https://bootdey.com/img/Content/avatar/avatar2.png" alt="user" + class="profile-photo-lg"> + </div> + <div class="col-md-7 col-sm-7"> + <h5><a href="#" class="profile-link">Jonathon Thompson</a></h5> + <p>Fashion Designer</p> + <p class="text-muted">2km away</p> + </div> + <div class="col-md-3 col-sm-3"> + <button class="btn btn-primary pull-right">Add Friend</button> + </div> + </div> + </div> + <div class="nearby-user"> + <div class="row"> + <div class="col-md-2 col-sm-2"> + <img src="https://bootdey.com/img/Content/avatar/avatar7.png" alt="user" + class="profile-photo-lg"> + </div> + <div class="col-md-7 col-sm-7"> + <h5><a href="#" class="profile-link">Olivia Steward</a></h5> + <p>Creative Director</p> + <p class="text-muted">2km away</p> + </div> + <div class="col-md-3 col-sm-3"> + <button class="btn btn-primary pull-right">Add Friend</button> + </div> + </div> + </div> + <div class="nearby-user"> + <div class="row"> + <div class="col-md-2 col-sm-2"> + <img src="https://bootdey.com/img/Content/avatar/avatar6.png" alt="user" + class="profile-photo-lg"> + </div> + <div class="col-md-7 col-sm-7"> + <h5><a href="#" class="profile-link">Elena Foster</a></h5> + <p>Executive Officer</p> + <p class="text-muted">4km away</p> + </div> + <div class="col-md-3 col-sm-3"> + <button class="btn btn-primary pull-right">Add Friend</button> + </div> + </div> + </div> + <div class="nearby-user"> + <div class="row"> + <div class="col-md-2 col-sm-2"> + <img src="https://bootdey.com/img/Content/avatar/avatar1.png" alt="user" + class="profile-photo-lg"> + </div> + <div class="col-md-7 col-sm-7"> + <h5><a href="#" class="profile-link">Brian Walton</a></h5> + <p>Designer at Designer</p> + <p class="text-muted">3km away</p> + </div> + <div class="col-md-3 col-sm-3"> + <button class="btn btn-primary pull-right">Add Friend</button> + </div> + </div> + </div> + <div class="nearby-user"> + <div class="row"> + <div class="col-md-2 col-sm-2"> + <img src="https://bootdey.com/img/Content/avatar/avatar7.png" alt="user" + class="profile-photo-lg"> + </div> + <div class="col-md-7 col-sm-7"> + <h5><a href="#" class="profile-link">Cris Haris</a></h5> + <p>General Manager at Manager</p> + <p class="text-muted">1km away</p> + </div> + <div class="col-md-3 col-sm-3"> + <button class="btn btn-primary pull-right">Add Friend</button> + </div> + </div> + </div> + </div> + </div> + </div> + </div> +</template> + +<style scoped> +body { + margin-top: 20px; + background: #FAFAFA; +} + +.people-nearby .google-maps { + background: #f8f8f8; + border-radius: 4px; + border: 1px solid #f1f2f2; + padding: 20px; + margin-bottom: 20px; +} + +.people-nearby .google-maps .map { + height: 300px; + width: 100%; + border: none; +} + +.people-nearby .nearby-user { + padding: 20px 0; + border-top: 1px solid #f1f2f2; + border-bottom: 1px solid #f1f2f2; + margin-bottom: 20px; +} + +img.profile-photo-lg { + height: 80px; + width: 80px; + border-radius: 50%; +} + +#searchBox { + margin-bottom: 20px; + display: flex; + text-wrap: nowrap; +} + +.row { + width: 100%; + display: flex; + justify-content: center; + align-items: center; +} + +.form-control.custom-border { + border-color: #222223; /* Change to your desired color */ +} +</style> \ No newline at end of file diff --git a/src/views/User/UserFriendsView.vue b/src/views/User/UserFriendsView.vue new file mode 100644 index 0000000000000000000000000000000000000000..82002ed2e947d45cae28cf2b93813a25ce33f258 --- /dev/null +++ b/src/views/User/UserFriendsView.vue @@ -0,0 +1,638 @@ +<template> + <div class="container"> + <h1>Your Friends</h1> +<div class="row"> + <div class="col-lg-3"> + <div class="card card-one"> + <div class="header"> + <div class="avatar"> + <img src="https://bootdey.com/img/Content/avatar/avatar2.png" alt=""> + </div> + </div> + <h3>Amillie Price</h3> + <div class="desc"> + Lorem ipsum dolor sit amet, consectetur adipisicing elit et cupiditate deleniti. + </div> + <div class="contacts"> + <a href="#"><i class="fas fa-plus"></i></a> + <a href="#"><i class="fab fa-whatsapp"></i></a> + <a href="#"><i class="fas fa-envelope"></i></a> + <div class="clear"></div> + </div> + </div> + </div> + <div class="col-lg-3"> + <div class="card card-one"> + <div class="header"> + <div class="avatar"> + <img src="https://bootdey.com/img/Content/avatar/avatar1.png" alt=""> + </div> + </div> + <h3>Victoria Fox</h3> + <div class="desc"> + Lorem ipsum dolor sit amet, consectetur adipisicing elit et cupiditate deleniti. + </div> + <div class="contacts"> + <a href="#"><i class="fas fa-plus"></i></a> + <a href="#"><i class="fab fa-whatsapp"></i></a> + <a href="#"><i class="fas fa-envelope"></i></a> + <div class="clear"></div> + </div> + </div> + </div> + <div class="col-lg-3"> + <div class="card card-one"> + <div class="header"> + <div class="avatar"> + <img src="https://bootdey.com/img/Content/avatar/avatar3.png" alt=""> + </div> + </div> + <h3>Coray Shoe</h3> + <div class="desc"> + Lorem ipsum dolor sit amet, consectetur adipisicing elit et cupiditate deleniti. + </div> + <div class="contacts"> + <a href="#"><i class="fas fa-plus"></i></a> + <a href="#"><i class="fab fa-whatsapp"></i></a> + <a href="#"><i class="fas fa-envelope"></i></a> + <div class="clear"></div> + </div> + </div> + </div> + <div class="col-lg-3"> + <div class="card card-one"> + <div class="header"> + <div class="avatar"> + <img src="https://bootdey.com/img/Content/avatar/avatar2.png" alt=""> + </div> + </div> + <h3>Christiano Mooray</h3> + <div class="desc"> + Lorem ipsum dolor sit amet, consectetur adipisicing elit et cupiditate deleniti. + </div> + <div class="contacts"> + <a href="#"><i class="fas fa-plus"></i></a> + <a href="#"><i class="fab fa-whatsapp"></i></a> + <a href="#"><i class="fas fa-envelope"></i></a> + <div class="clear"></div> + </div> + </div> + </div> +</div> + +<div class="row"> + <div class="col-lg-3"> + <div class="card card-one"> + <div class="header"> + <div class="avatar"> + <img src="https://bootdey.com/img/Content/avatar/avatar4.png" alt=""> + </div> + </div> + <h3>Lynda West</h3> + <div class="desc"> + Lorem ipsum dolor sit amet, consectetur adipisicing elit et cupiditate deleniti. + </div> + <div class="contacts"> + <a href="#"><i class="fas fa-plus"></i></a> + <a href="#"><i class="fab fa-whatsapp"></i></a> + <a href="#"><i class="fas fa-envelope"></i></a> + <div class="clear"></div> + </div> + </div> + </div> + <div class="col-lg-3"> + <div class="card card-one"> + <div class="header"> + <div class="avatar"> + <img src="https://bootdey.com/img/Content/avatar/avatar2.png" alt=""> + </div> + </div> + <h3>Jayden G</h3> + <div class="desc"> + Lorem ipsum dolor sit amet, consectetur adipisicing elit et cupiditate deleniti. + </div> + <div class="contacts"> + <a href="#"><i class="fas fa-plus"></i></a> + <a href="#"><i class="fab fa-whatsapp"></i></a> + <a href="#"><i class="fas fa-envelope"></i></a> + <div class="clear"></div> + </div> + </div> + </div> + <div class="col-lg-3"> + <div class="card card-one"> + <div class="header"> + <div class="avatar"> + <img src="https://bootdey.com/img/Content/avatar/avatar3.png" alt=""> + </div> + </div> + <h3>Julia Ann</h3> + <div class="desc"> + Lorem ipsum dolor sit amet, consectetur adipisicing elit et cupiditate deleniti. + </div> + <div class="contacts"> + <a href="#"><i class="fas fa-plus"></i></a> + <a href="#"><i class="fab fa-whatsapp"></i></a> + <a href="#"><i class="fas fa-envelope"></i></a> + <div class="clear"></div> + </div> + </div> + </div> + <div class="col-lg-3"> + <div class="card card-one"> + <div class="header"> + <div class="avatar"> + <img src="https://bootdey.com/img/Content/avatar/avatar1.png" alt=""> + </div> + </div> + <h3>Ava Ray</h3> + <div class="desc"> + Lorem ipsum dolor sit amet, consectetur adipisicing elit et cupiditate deleniti. + </div> + <div class="contacts"> + <a href="#"><i class="fas fa-plus"></i></a> + <a href="#"><i class="fab fa-whatsapp"></i></a> + <a href="#"><i class="fas fa-envelope"></i></a> + <div class="clear"></div> + </div> + </div> + </div> + <div class="col-lg-3"> + <div class="card card-one"> + <div class="header"> + <div class="avatar"> + <img src="https://bootdey.com/img/Content/avatar/avatar7.png" alt=""> + </div> + </div> + <h3>Maria Shwenstiger</h3> + <div class="desc"> + Lorem ipsum dolor sit amet, consectetur adipisicing elit et cupiditate deleniti. + </div> + <div class="contacts"> + <a href="#"><i class="fas fa-plus"></i></a> + <a href="#"><i class="fab fa-whatsapp"></i></a> + <a href="#"><i class="fas fa-envelope"></i></a> + <div class="clear"></div> + </div> + </div> + </div> + <div class="col-lg-3"> + <div class="card card-one"> + <div class="header"> + <div class="avatar"> + <img src="https://bootdey.com/img/Content/avatar/avatar3.png" alt=""> + </div> + </div> + <h3>Kate Perry</h3> + <div class="desc"> + Lorem ipsum dolor sit amet, consectetur adipisicing elit et cupiditate deleniti. + </div> + <div class="contacts"> + <a href="#"><i class="fas fa-plus"></i></a> + <a href="#"><i class="fab fa-whatsapp"></i></a> + <a href="#"><i class="fas fa-envelope"></i></a> + <div class="clear"></div> + </div> + </div> + </div> + <div class="col-lg-3"> + <div class="card card-one"> + <div class="header"> + <div class="avatar"> + <img src="https://bootdey.com/img/Content/avatar/avatar6.png" alt=""> + </div> + </div> + <h3>Robart Gibbs</h3> + <div class="desc"> + Lorem ipsum dolor sit amet, consectetur adipisicing elit et cupiditate deleniti. + </div> + <div class="contacts"> + <a href="#"><i class="fas fa-plus"></i></a> + <a href="#"><i class="fab fa-whatsapp"></i></a> + <a href="#"><i class="fas fa-envelope"></i></a> + <div class="clear"></div> + </div> + </div> + </div> + <div class="col-lg-3"> + <div class="card card-one"> + <div class="header"> + <div class="avatar"> + <img src="https://bootdey.com/img/Content/avatar/avatar5.png" alt=""> + </div> + </div> + <h3>Anna Winslet</h3> + <div class="desc"> + Lorem ipsum dolor sit amet, consectetur adipisicing elit et cupiditate deleniti. + </div> + <div class="contacts"> + <a href="#"><i class="fas fa-plus"></i></a> + <a href="#"><i class="fab fa-whatsapp"></i></a> + <a href="#"><i class="fas fa-envelope"></i></a> + <div class="clear"></div> + </div> + </div> + </div> +</div> +</div> + </template> + + <script setup lang="ts"> + import { useRouter, useRoute } from 'vue-router'; + import { ref, onMounted, computed } from "vue"; + + + import { useUserInfoStore } from '@/stores/UserStore'; + + const userStore = useUserInfoStore(); + + const createdQuizzes = ref(1); + const createdQuizzesIsEmpty = ref(null); + const coAuthorQuizzes = ref(null); + const coAuthorQuizzesIsEmpty = ref(null); + const router = useRouter(); + + let userid = ref(""); + + async function fetchUserData() { + + } + + async function fetchLibrary() { + + } + + // Define the navigateToQuiz method + const navigateToFriend = (frinedID) => { + + }; + + const removeFriend = (friendID) => { + + }; + + onMounted(fetchUserData); + </script> + + <style scoped> + body { + background-color: #f0f6ff; + color: #28384d; + +} +/*social */ +.card-one { + position: relative; + width: 300px; + background: #fff; + box-shadow: 0 10px 7px -5px rgba(0, 0, 0, 0.4); +} +.card { + margin-bottom: 35px; + box-shadow: 0 10px 20px 0 rgba(26, 44, 57, 0.14); + border: none; +} + +.follower-wrapper li { + list-style-type: none; + color: #fff; + display: inline-block; + float: left; + margin-right: 20px; +} + +.social-profile { + color: #fff; +} + +.social-profile a { + color: #fff; +} + +.social-profile { + position: relative; + margin-bottom: 150px; +} + +.social-profile .user-profile { + position: absolute; + bottom: -75px; + width: 150px; + height: 150px; + border-radius: 50%; + left: 50px; +} + +.social-nav { + position: absolute; + bottom: 0; +} + +.social-prof { + color: #333; + text-align: center; +} + +.social-prof .wrapper { + width: 70%; + margin: auto; + margin-top: -100px; +} + +.social-prof img { + width: 150px; + height: 150px; + border-radius: 50%; + margin-bottom: 20px; + border: 5px solid #fff; + /*border: 10px solid #70b5e6ee;*/ +} + +.social-prof h3 { + font-size: 36px; + font-weight: 700; + margin-bottom: 0; +} + +.social-prof p { + font-size: 18px; +} + +.social-prof .nav-tabs { + border: none; +} + +.card .nav>li { + position: relative; + display: block; +} + +.card .nav>li>a { + position: relative; + display: block; + padding: 10px 15px; + font-weight: 300; + border-radius: 4px; +} + +.card .nav>li>a:focus, +.card .nav>li>a:hover { + text-decoration: none; + background-color: #eee; +} + +.card .s-nav>li>a.active { + text-decoration: none; + background-color: #3afe; + color: #fff; +} + +.text-blue { + color: #3afe; +} + +ul.friend-list { + margin: 0; + padding: 0; +} + +ul.friend-list li { + list-style-type: none; + display: flex; + align-items: center; +} + +ul.friend-list li:hover { + background: rgba(0, 0, 0, .1); + cursor: pointer; +} + +ul.friend-list .left img { + width: 45px; + height: 45px; + border-radius: 50%; + margin-right: 20px; +} + +ul.friend-list li { + padding: 10px; +} + +ul.friend-list .right h3 { + font-size: 16px; + font-weight: 700; + margin-bottom: 0; +} + +ul.friend-list .right p { + font-size: 11px; + color: #6c757d; + margin: 0; +} + +.social-timeline-card .dropdown-toggle::after { + display: none; +} + +.info-card h4 { + font-size: 15px; +} + +.info-card h2 { + font-size: 18px; + margin-bottom: 20px; +} + +.social-about .social-info { + font-size: 16px; + margin-bottom: 20px; +} + +.social-about p { + margin-bottom: 20px; +} + +.info-card i { + color: #3afe; +} + +.card-one { + position: relative; + width: 300px; + background: #fff; + box-shadow: 0 10px 7px -5px rgba(0, 0, 0, 0.4); +} + +.card-one .header { + position: relative; + width: 100%; + height: 60px; + background-color: #3afe; +} + +.card-one .header::before, +.card-one .header::after { + content: ''; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + background: inherit; +} + +.card-one .header::before { + -webkit-transform: skewY(-8deg); + transform: skewY(-8deg); + -webkit-transform-origin: 100% 100%; + transform-origin: 100% 100%; +} + +.card-one .header::after { + -webkit-transform: skewY(8deg); + transform: skewY(8deg); + -webkit-transform-origin: 0 100%; + transform-origin: 0 100%; +} + +.card-one .header .avatar { + position: absolute; + left: 50%; + top: 30px; + margin-left: -50px; + z-index: 5; + width: 100px; + height: 100px; + border-radius: 50%; + overflow: hidden; + background: #ccc; + border: 3px solid #fff; +} + +.card-one .header .avatar img { + position: absolute; + top: 50%; + left: 50%; + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + width: 100px; + height: auto; +} + +.card-one h3 { + position: relative; + margin: 80px 0 30px; + text-align: center; +} + +.card-one h3::after { + content: ''; + position: absolute; + bottom: -15px; + left: 50%; + margin-left: -15px; + width: 30px; + height: 1px; + background: #000; +} + +.card-one .desc { + padding: 0 1rem 2rem; + text-align: center; + line-height: 1.5; + color: #777; +} + +.card-one .contacts { + width: 200px; + max-width: 100%; + margin: 0 auto 3rem; +} + +.card-one .contacts a { + display: block; + width: 33.333333%; + float: left; + text-align: center; + color: #c8c; +} + +.card-one .contacts a:hover { + color: #333; +} + +.card-one .contacts a:hover .fa::before { + color: #fff; +} + +.card-one .contacts a:hover .fa::after { + width: 100%; + height: 100%; +} + +.card-one .contacts a .fa { + position: relative; + width: 40px; + height: 40px; + line-height: 39px; + overflow: hidden; + text-align: center; + font-size: 1.3em; +} + +.card-one .contacts a .fa:before { + position: relative; + z-index: 1; +} + +.card-one .contacts a .fa::after { + content: ''; + position: absolute; + top: 50%; + left: 50%; + width: 0; + height: 0; + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + background: #c8c; + transition: width .3s, height .3s; +} + +.card-one .contacts a:last-of-type .fa { + line-height: 36px; +} + +.card-one .footer { + position: relative; + padding: 1rem; + background-color: #3afe; + text-align: center; +} + +.card-one .footer a { + padding: 0 1rem; + color: #e2e2e2; + transition: color .4s; +} + +.card-one .footer a:hover { + color: #c8c; +} + +.card-one .footer::before { + content: ''; + position: absolute; + top: -27px; + left: 50%; + margin-left: -15px; + border: 15px solid transparent; + border-bottom-color: #3afe; +} + +#gallery li { + width: 24%; + float: left; + margin: 6px; + +} + </style> \ No newline at end of file