58 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
<script setup lang="ts">
 | 
						|
import type { Component } from 'vue';
 | 
						|
 | 
						|
const props = defineProps<{ icon: Component; title: string }>();
 | 
						|
const { icon, title } = toRefs(props);
 | 
						|
</script>
 | 
						|
 | 
						|
<template>
 | 
						|
  <c-card class="colored-card">
 | 
						|
    <n-icon class="icon" size="40" :component="icon" />
 | 
						|
    <n-h3 class="title">
 | 
						|
      <n-ellipsis>{{ title }}</n-ellipsis>
 | 
						|
    </n-h3>
 | 
						|
 | 
						|
    <div class="description">
 | 
						|
      <n-ellipsis :line-clamp="2" :tooltip="false">
 | 
						|
        <slot />
 | 
						|
      </n-ellipsis>
 | 
						|
    </div>
 | 
						|
  </c-card>
 | 
						|
</template>
 | 
						|
 | 
						|
<style lang="less" scoped>
 | 
						|
.colored-card {
 | 
						|
  background: rgb(37, 99, 108);
 | 
						|
  background: linear-gradient(48deg, rgba(37, 99, 108, 1) 0%, rgba(59, 149, 111, 1) 60%, rgba(20, 160, 88, 1) 100%);
 | 
						|
  color: #fff;
 | 
						|
  border: none;
 | 
						|
 | 
						|
  .icon {
 | 
						|
    opacity: 0.7;
 | 
						|
  }
 | 
						|
 | 
						|
  .title {
 | 
						|
    color: #fff;
 | 
						|
 | 
						|
    margin: 5px 0;
 | 
						|
  }
 | 
						|
 | 
						|
  .description {
 | 
						|
    opacity: 0.8;
 | 
						|
 | 
						|
    margin: 5px 0;
 | 
						|
 | 
						|
    ::v-deep(a) {
 | 
						|
      color: inherit;
 | 
						|
      text-decoration: underline;
 | 
						|
      font-weight: bold;
 | 
						|
      transition: color ease 0.2s;
 | 
						|
 | 
						|
      &:hover {
 | 
						|
        color: rgb(20, 20, 20);
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
</style>
 |