List.vue 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575
  1. <template>
  2. <div class="row">
  3. <div class="col-md-12">
  4. <div class="landing-title">
  5. <h2 class="title">
  6. {{ title }}
  7. </h2>
  8. </div>
  9. </div>
  10. <div
  11. v-for="(theme, i) in themes"
  12. :key="i"
  13. class="col-xs-12 col-sm-6 col-md-4 col-lg-4"
  14. >
  15. <div class="card card-small">
  16. <div class="thumbnail">
  17. <img
  18. :src="theme.img"
  19. alt="No Image"
  20. >
  21. <a
  22. :href="theme.url"
  23. target="_blank"
  24. class="thumb-cover"
  25. />
  26. <b class="actions">
  27. <a
  28. :href="theme.url"
  29. target="_blank"
  30. class="btn btn-neutral btn-round btn-fill"
  31. data-toggle="tooltip"
  32. data-placement="top"
  33. title="More Details"
  34. >
  35. <i
  36. class="fa fa-align-left"
  37. />
  38. </a>
  39. <a
  40. :href="theme.demo"
  41. class="btn btn-neutral btn-fill btn-round"
  42. target="_blank"
  43. data-toggle="tooltip"
  44. data-placement="top"
  45. title="Live Preview"
  46. >
  47. <i class="fa fa-laptop" />
  48. </a>
  49. </b>
  50. </div>
  51. <div class="card-info">
  52. <a
  53. :href="theme.url"
  54. target="_blank"
  55. >
  56. <h3>
  57. {{ theme.name }}
  58. <div
  59. v-if="theme.price"
  60. class="time pull-right premium-product"
  61. >
  62. {{ theme.price }}
  63. </div>
  64. <div
  65. v-else
  66. class="time pull-right free"
  67. >
  68. FREE
  69. </div>
  70. </h3>
  71. <p>{{ theme.desc }}</p>
  72. </a>
  73. </div>
  74. </div>
  75. </div>
  76. </div>
  77. </template>
  78. <script>
  79. const $ = window.$
  80. export default {
  81. props: {
  82. title: {
  83. type: String,
  84. required: true
  85. },
  86. themes: {
  87. type: Array,
  88. required: true
  89. }
  90. },
  91. mounted () {
  92. $('[data-toggle="tooltip"]').tooltip()
  93. $(this.$el).find('a').click(() => {
  94. setTimeout(() => {
  95. $('[data-toggle="tooltip"]').tooltip('hide')
  96. }, 200)
  97. })
  98. }
  99. }
  100. </script>
  101. <style scoped>
  102. a {
  103. text-decoration: none;
  104. }
  105. .title {
  106. font-size: 28px;
  107. font-weight: 300;
  108. margin: 7px 0;
  109. font-weight: normal;
  110. color: #777;
  111. margin-bottom: 20px;
  112. }
  113. .free {
  114. color: #777;
  115. font-size: 15px;
  116. }
  117. .card {
  118. border-radius: 8px;
  119. position: relative;
  120. margin-bottom: 60px;
  121. border: 0;
  122. }
  123. .card .thumbnail {
  124. border: 0 none;
  125. padding: 0;
  126. margin: 0;
  127. min-height: 250px;
  128. position: relative;
  129. background: transparent
  130. }
  131. .card-small .thumbnail {
  132. min-height: 200px;
  133. }
  134. .card .thumbnail img {
  135. width: 100%;
  136. height: 100%;
  137. }
  138. .card .thumbnail>img {
  139. border-radius: 8px 8px;
  140. box-shadow: 0 25px 20px -21px rgba(0, 0, 0, 0.57)
  141. }
  142. .card .details {
  143. top: 0;
  144. display: block;
  145. height: 60px;
  146. padding: 10px 15px 0;
  147. position: absolute;
  148. width: 100%;
  149. border-radius: 8px 8px 0 0
  150. }
  151. .card .header,
  152. .card .main,
  153. .card .footer {
  154. display: block
  155. }
  156. .card .time {
  157. color: #777777;
  158. font-size: 15px;
  159. margin-top: 2px;
  160. text-transform: uppercase
  161. }
  162. .card .time.premium-product {
  163. color: #444444;
  164. font-size: 19px;
  165. margin: 1px
  166. }
  167. .card .numbers {
  168. color: #FFFFFF;
  169. float: right;
  170. margin-top: 6px;
  171. text-shadow: 0 2px 3px rgba(0, 0, 0, 0.34)
  172. }
  173. .card .numbers .downloads,
  174. .card .numbers .comments-icon {
  175. margin-left: 6px;
  176. font-size: 15px;
  177. font-weight: 500
  178. }
  179. .card .numbers .fa {
  180. font-size: 18px
  181. }
  182. .card .description {
  183. color: #FFFFFF;
  184. margin-top: 40px;
  185. height: 125px;
  186. font-size: 18px;
  187. opacity: 0.7
  188. }
  189. .card a:hover .description {
  190. opacity: 1
  191. }
  192. .card .actions .btn {
  193. margin-left: 5px;
  194. margin-right: 5px;
  195. top: 50%;
  196. position: relative;
  197. transform: translateY(-50%);
  198. -webkit-transform: translateY(-50%);
  199. -moz-transform: translateY(-50%)
  200. }
  201. .card .actions .btn-round:not(.btn-radius) {
  202. font-size: 18px;
  203. padding: 14px 14px;
  204. line-height: 1;
  205. display: inline-block;
  206. width: 48px;
  207. height: 48px
  208. }
  209. .btn-neutral.btn-fill {
  210. color: #666666 !important;
  211. background-color: white;
  212. opacity: 1;
  213. filter: alpha(opacity=100);
  214. }
  215. .btn-round {
  216. border-width: 1px;
  217. border-radius: 30px !important;
  218. opacity: 0.79;
  219. padding: 9px 18px;
  220. }
  221. .card .thumb-cover {
  222. padding: 15px 20px;
  223. height: 100%;
  224. top: 0;
  225. position: absolute;
  226. opacity: 0;
  227. display: block;
  228. width: 100%;
  229. background-color: rgba(0, 0, 0, 0.75);
  230. z-index: 3;
  231. content: "";
  232. left: 0;
  233. border-radius: 8px
  234. }
  235. .card .actions {
  236. position: absolute;
  237. z-index: 3;
  238. top: 50%;
  239. left: 0;
  240. text-align: center;
  241. width: 100%;
  242. height: 0;
  243. opacity: 0;
  244. transition: all .5s ease;
  245. -webkit-transition: all .5s ease;
  246. -moz-transition: all .5s ease
  247. }
  248. .card:hover .thumb-cover,
  249. .card:hover .actions {
  250. opacity: 1
  251. }
  252. .card-small .actions {
  253. height: 55px;
  254. font-size: 14px
  255. }
  256. .card:hover .actions {
  257. opacity: 1
  258. }
  259. .card .title {
  260. margin-top: 45px;
  261. min-height: 115px
  262. }
  263. .card a .title h3 {
  264. color: #FFFFFF;
  265. font-size: 24px;
  266. font-weight: 400;
  267. text-shadow: 0 1px 2px rgba(0, 0, 0, 0.57)
  268. }
  269. .card .user {
  270. font-weight: 400;
  271. color: #FFFFFF;
  272. text-shadow: 0 1px 2px rgba(0, 0, 0, 0.23);
  273. line-height: 20px;
  274. display: block
  275. }
  276. .card .user .name {
  277. line-height: 35px;
  278. margin-left: 10px;
  279. font-size: 16px;
  280. float: left
  281. }
  282. .card .user .user-photo {
  283. width: 35px;
  284. height: 35px;
  285. border: 2px solid #FFFFFF;
  286. border-radius: 50%;
  287. overflow: hidden;
  288. float: left
  289. }
  290. .card .user-photo img {
  291. width: 33px
  292. }
  293. .card-info {
  294. padding: 15px;
  295. border-radius: 0 0 12px 12px
  296. }
  297. .card-info [class^='circle-'] {
  298. float: left;
  299. margin-right: 5px
  300. }
  301. .card-info a:not(.btn) {
  302. color: #434343
  303. }
  304. .card-info a:not(.btn):hover {
  305. color: #232323
  306. }
  307. .card-info .actions a {
  308. color: #777777
  309. }
  310. .card-info .actions a:hover {
  311. color: #555555
  312. }
  313. .card-info .actions .blue-text {
  314. color: #00bbff
  315. }
  316. .card-info .actions .blue-text:hover {
  317. color: #3883c4
  318. }
  319. .card-info h3 {
  320. margin-top: 10px;
  321. margin-bottom: 5px;
  322. font-size: 18px
  323. }
  324. .card-small .card-info h3 {
  325. font-size: 18px
  326. }
  327. .card-info p {
  328. font-size: 14px;
  329. margin: 0;
  330. color: #666666;
  331. min-height: 50px
  332. }
  333. .card-info .label {
  334. background: transparent;
  335. border: 1px solid;
  336. border-radius: 14px;
  337. padding: 5px 10px;
  338. font-size: 10px;
  339. text-transform: uppercase;
  340. position: relative;
  341. top: -4px
  342. }
  343. .card-info .label.label-danger {
  344. background: transparent
  345. }
  346. .card-info .label .fa {
  347. font-size: 12px
  348. }
  349. @media (max-width: 800px) {
  350. .card.card-bundle .thumbnail {
  351. min-height: 150px
  352. }
  353. .card.card-bundle .details .framework-logo {
  354. padding-top: 20px
  355. }
  356. .card.card-bundle .details .framework-logo img {
  357. width: 40px;
  358. height: 40px
  359. }
  360. .card.card-bundle .details .framework-logo img.default,
  361. .card.card-bundle .details .framework-logo img.material {
  362. width: 30px;
  363. height: 30px
  364. }
  365. .card.card-bundle .details .framework-logo p {
  366. padding-top: 5px;
  367. font-size: 20px
  368. }
  369. }
  370. @media (max-width: 1100px) {
  371. .card.card-bundle .details .bundle-details {
  372. padding: 10px
  373. }
  374. .card.card-bundle .details .bundle-details i {
  375. font-size: 20px
  376. }
  377. .card.card-bundle .details .bundle-details span {
  378. font-size: 20px
  379. }
  380. }
  381. @media (min-width: 801px) and (max-width: 1100px) {
  382. .card.card-bundle .details .framework-logo {
  383. padding-top: 25px
  384. }
  385. .card.card-bundle .details .framework-logo img {
  386. width: 50px;
  387. height: 50px
  388. }
  389. .card.card-bundle .details .framework-logo img.default,
  390. .card.card-bundle .details .framework-logo img.material {
  391. width: 40px;
  392. height: 40px
  393. }
  394. }
  395. .card.card-bundle .details {
  396. text-align: center;
  397. height: auto;
  398. color: #FFF;
  399. height: 100%
  400. }
  401. .card.card-bundle .details .bundle-details {
  402. position: absolute;
  403. width: 100%;
  404. top: auto;
  405. left: 0;
  406. right: 0;
  407. bottom: 0;
  408. padding: 24px;
  409. margin-right: auto;
  410. margin-left: auto
  411. }
  412. .card.card-bundle .details .bundle-details i {
  413. font-size: 30px
  414. }
  415. .card.card-bundle .details .bundle-details span {
  416. display: block;
  417. font-size: 35px;
  418. font-weight: 300
  419. }
  420. .card.card-bundle .details .bundle-details p {
  421. font-size: 12px;
  422. font-weight: 500
  423. }
  424. .card.card-bundle .details .framework-logo {
  425. position: absolute;
  426. width: 100%;
  427. padding-bottom: 5px;
  428. padding-top: 40px;
  429. left: 0;
  430. right: 0;
  431. top: 0;
  432. margin-right: auto;
  433. margin-left: auto
  434. }
  435. .card.card-bundle .details .framework-logo img {
  436. width: 70px;
  437. height: 70px;
  438. border-radius: 50%
  439. }
  440. .card.card-bundle .details .framework-logo img.default,
  441. .card.card-bundle .details .framework-logo img.material {
  442. width: 50px;
  443. height: 50px;
  444. margin-left: 10px;
  445. margin-top: 10px;
  446. margin-bottom: 10px
  447. }
  448. .card.card-bundle .details .framework-logo p {
  449. padding-top: 20px;
  450. font-size: 30px;
  451. font-weight: 400
  452. }
  453. .card.card-bundle .mask {
  454. display: block;
  455. position: absolute;
  456. width: 100%;
  457. height: 100%;
  458. left: 0;
  459. top: 0;
  460. opacity: .8;
  461. border-radius: 8px
  462. }
  463. .card .authors-container {
  464. width: 38px
  465. }
  466. .card .authors-container[data-collaborators="2"] {
  467. width: 60px
  468. }
  469. .card .authors-container[data-collaborators="3"] {
  470. width: 80px
  471. }
  472. .card .authors-container[data-collaborators="4"] {
  473. width: 100px
  474. }
  475. .card .authors-container .author:nth-child(2) {
  476. margin-left: -14px
  477. }
  478. .card .authors-container .author:nth-child(3) {
  479. margin-left: -14px
  480. }
  481. .card .authors-container .author:nth-child(4) {
  482. margin-left: -14px
  483. }
  484. .card .authors-container {
  485. display: inline-block
  486. }
  487. .card .authors-container>.author>.account-photo {
  488. width: 36px;
  489. height: 36px
  490. }
  491. .card .author>.account-photo.account-product-owner {
  492. border-color: #ff9500
  493. }
  494. </style>