List.vue 9.2 KB

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