Profile.vue 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291
  1. <template>
  2. <!--begin::Navbar-->
  3. <div class="card mb-5 mb-xxl-8">
  4. <div class="card-body pt-9 pb-0">
  5. <!--begin::Details-->
  6. <div class="d-flex flex-wrap flex-sm-nowrap mb-3">
  7. <!--begin: Pic-->
  8. <div class="me-7 mb-4">
  9. <div class="symbol symbol-100px symbol-lg-160px symbol-fixed position-relative">
  10. <img :src="getAssetPath('media/avatars/300-1.jpg')" alt="image" />
  11. <div
  12. class="position-absolute translate-middle bottom-0 start-100 mb-6 bg-success rounded-circle border border-4 border-white h-20px w-20px"
  13. ></div>
  14. </div>
  15. </div>
  16. <!--end::Pic-->
  17. <!--begin::Info-->
  18. <div class="flex-grow-1">
  19. <!--begin::Title-->
  20. <div class="d-flex justify-content-between align-items-start flex-wrap mb-2">
  21. <!--begin::User-->
  22. <div class="d-flex flex-column">
  23. <!--begin::Name-->
  24. <div class="d-flex align-items-center mb-2">
  25. <a href="#" class="text-gray-800 text-hover-primary fs-2 fw-bold me-1">Max Smith</a>
  26. <a href="#">
  27. <span class="svg-icon svg-icon-1 svg-icon-primary">
  28. <inline-svg :src="getAssetPath('media/icons/duotune/general/gen026.svg')" />
  29. </span>
  30. </a>
  31. </div>
  32. <!--end::Name-->
  33. <!--begin::Info-->
  34. <div class="d-flex flex-wrap fw-semobold fs-6 mb-4 pe-2">
  35. <a href="#" class="d-flex align-items-center text-gray-400 text-hover-primary me-5 mb-2">
  36. <span class="svg-icon svg-icon-4 me-1">
  37. <inline-svg :src="getAssetPath('/media/icons/duotune/communication/com006.svg')" />
  38. </span>
  39. Developer
  40. </a>
  41. <a href="#" class="d-flex align-items-center text-gray-400 text-hover-primary me-5 mb-2">
  42. <span class="svg-icon svg-icon-4 me-1">
  43. <inline-svg :src="getAssetPath('media/icons/duotune/general/gen018.svg')" />
  44. </span>
  45. SF, Bay Area
  46. </a>
  47. <a href="#" class="d-flex align-items-center text-gray-400 text-hover-primary mb-2">
  48. <span class="svg-icon svg-icon-4 me-1">
  49. <inline-svg :src="getAssetPath('/media/icons/duotune/communication/com011.svg')" />
  50. </span>
  51. max@kt.com
  52. </a>
  53. </div>
  54. <!--end::Info-->
  55. </div>
  56. <!--end::User-->
  57. <!--begin::Actions-->
  58. <div class="d-flex my-4">
  59. <a href="#" class="btn btn-sm btn-light me-2" id="kt_user_follow_button">
  60. <span class="svg-icon svg-icon-3 d-none">
  61. <inline-svg :src="getAssetPath('media/icons/duotune/arrows/arr012.svg')" />
  62. </span>
  63. Follow
  64. </a>
  65. <a
  66. href="#"
  67. class="btn btn-sm btn-primary me-3"
  68. data-bs-toggle="modal"
  69. data-bs-target="#kt_modal_offer_a_deal"
  70. >
  71. Hire Me
  72. </a>
  73. <!--begin::Menu-->
  74. <div class="me-0">
  75. <button
  76. class="btn btn-sm btn-icon btn-bg-light btn-active-color-primary"
  77. data-kt-menu-trigger="click"
  78. data-kt-menu-placement="bottom-end"
  79. data-kt-menu-flip="top-end"
  80. >
  81. <i class="bi bi-three-dots fs-3"></i>
  82. </button>
  83. <Dropdown3></Dropdown3>
  84. </div>
  85. <!--end::Menu-->
  86. </div>
  87. <!--end::Actions-->
  88. </div>
  89. <!--end::Title-->
  90. <!--begin::Stats-->
  91. <div class="d-flex flex-wrap flex-stack">
  92. <!--begin::Wrapper-->
  93. <div class="d-flex flex-column flex-grow-1 pe-8">
  94. <!--begin::Stats-->
  95. <div class="d-flex flex-wrap">
  96. <!--begin::Stat-->
  97. <div class="border border-gray-300 border-dashed rounded min-w-125px py-3 px-4 me-6 mb-3">
  98. <!--begin::Number-->
  99. <div class="d-flex align-items-center">
  100. <span class="svg-icon svg-icon-3 svg-icon-success me-2">
  101. <inline-svg :src="getAssetPath('media/icons/duotune/arrows/arr066.svg')" />
  102. </span>
  103. <div
  104. class="fs-2 fw-bold"
  105. data-kt-countup="true"
  106. data-kt-countup-value="4500"
  107. data-kt-countup-prefix="$"
  108. >
  109. 4,500$
  110. </div>
  111. </div>
  112. <!--end::Number-->
  113. <!--begin::Label-->
  114. <div class="fw-semobold fs-6 text-gray-400">Earnings</div>
  115. <!--end::Label-->
  116. </div>
  117. <!--end::Stat-->
  118. <!--begin::Stat-->
  119. <div class="border border-gray-300 border-dashed rounded min-w-125px py-3 px-4 me-6 mb-3">
  120. <!--begin::Number-->
  121. <div class="d-flex align-items-center">
  122. <span class="svg-icon svg-icon-3 svg-icon-danger me-2">
  123. <inline-svg :src="getAssetPath('media/icons/duotune/arrows/arr065.svg')" />
  124. </span>
  125. <div class="fs-2 fw-bold" data-kt-countup="true" data-kt-countup-value="75">75</div>
  126. </div>
  127. <!--end::Number-->
  128. <!--begin::Label-->
  129. <div class="fw-semobold fs-6 text-gray-400">Projects</div>
  130. <!--end::Label-->
  131. </div>
  132. <!--end::Stat-->
  133. <!--begin::Stat-->
  134. <div class="border border-gray-300 border-dashed rounded min-w-125px py-3 px-4 me-6 mb-3">
  135. <!--begin::Number-->
  136. <div class="d-flex align-items-center">
  137. <span class="svg-icon svg-icon-3 svg-icon-success me-2">
  138. <inline-svg :src="getAssetPath('media/icons/duotune/arrows/arr066.svg')" />
  139. </span>
  140. <div
  141. class="fs-2 fw-bold"
  142. data-kt-countup="true"
  143. data-kt-countup-value="60"
  144. data-kt-countup-prefix="%"
  145. >
  146. 60%
  147. </div>
  148. </div>
  149. <!--end::Number-->
  150. <!--begin::Label-->
  151. <div class="fw-semobold fs-6 text-gray-400">Success Rate</div>
  152. <!--end::Label-->
  153. </div>
  154. <!--end::Stat-->
  155. </div>
  156. <!--end::Stats-->
  157. </div>
  158. <!--end::Wrapper-->
  159. <!--begin::Progress-->
  160. <div class="d-flex align-items-center w-200px w-sm-300px flex-column mt-3">
  161. <div class="d-flex justify-content-between w-100 mt-auto mb-2">
  162. <span class="fw-semobold fs-6 text-gray-400">Profile Compleation</span>
  163. <span class="fw-bold fs-6">50%</span>
  164. </div>
  165. <div class="h-5px mx-3 w-100 bg-light mb-3">
  166. <div
  167. class="bg-success rounded h-5px"
  168. role="progressbar"
  169. style="width: 50%"
  170. aria-valuenow="50"
  171. aria-valuemin="0"
  172. aria-valuemax="100"
  173. ></div>
  174. </div>
  175. </div>
  176. <!--end::Progress-->
  177. </div>
  178. <!--end::Stats-->
  179. </div>
  180. <!--end::Info-->
  181. </div>
  182. <!--end::Details-->
  183. <!--begin::Navs-->
  184. <div class="d-flex overflow-auto h-55px">
  185. <ul class="nav nav-stretch nav-line-tabs nav-line-tabs-2x border-transparent fs-5 fw-bold flex-nowrap">
  186. <!--begin::Nav item-->
  187. <li class="nav-item">
  188. <router-link
  189. to="/crafted/pages/profile/overview"
  190. class="nav-link text-active-primary me-6"
  191. active-class="active"
  192. >
  193. Overview
  194. </router-link>
  195. </li>
  196. <!--end::Nav item-->
  197. <!--begin::Nav item-->
  198. <li class="nav-item">
  199. <router-link
  200. class="nav-link text-active-primary me-6"
  201. to="/crafted/pages/profile/projects"
  202. active-class="active"
  203. >
  204. Projects
  205. </router-link>
  206. </li>
  207. <!--end::Nav item-->
  208. <!--begin::Nav item-->
  209. <li class="nav-item">
  210. <router-link
  211. class="nav-link text-active-primary me-6"
  212. to="/crafted/pages/profile/campaigns"
  213. active-class="active"
  214. >
  215. Campaigns
  216. </router-link>
  217. </li>
  218. <!--end::Nav item-->
  219. <!--begin::Nav item-->
  220. <li class="nav-item">
  221. <router-link
  222. class="nav-link text-active-primary me-6"
  223. to="/crafted/pages/profile/documents"
  224. active-class="active"
  225. >
  226. Documents
  227. </router-link>
  228. </li>
  229. <!--end::Nav item-->
  230. <!--begin::Nav item-->
  231. <li class="nav-item">
  232. <router-link
  233. class="nav-link text-active-primary me-6"
  234. to="/crafted/pages/profile/connections"
  235. active-class="active"
  236. >
  237. Connections
  238. </router-link>
  239. </li>
  240. <!--end::Nav item-->
  241. <!--begin::Nav item-->
  242. <li class="nav-item">
  243. <router-link
  244. class="nav-link text-active-primary me-6"
  245. to="/crafted/pages/profile/activity"
  246. active-class="active"
  247. >
  248. Activity
  249. </router-link>
  250. </li>
  251. <!--end::Nav item-->
  252. </ul>
  253. </div>
  254. <!--begin::Navs-->
  255. </div>
  256. </div>
  257. <!--end::Navbar-->
  258. <router-view></router-view>
  259. </template>
  260. <script lang="ts">
  261. import { getAssetPath } from "@/core/helpers/assets"
  262. import { defineComponent } from "vue"
  263. import Dropdown3 from "@/components/dropdown/Dropdown3.vue"
  264. export default defineComponent({
  265. name: "profile-page-layout",
  266. components: {
  267. Dropdown3,
  268. },
  269. setup() {
  270. return {
  271. getAssetPath,
  272. }
  273. },
  274. })
  275. </script>