Files
sbnews/uniapp/src/components/ai-assistant-entry/ai-assistant-entry.vue
T

79 lines
1.8 KiB
Vue

<template>
<view class="ai-entry" :class="[`ai-entry--${size}`, `ai-entry--align-${align}`]" @tap="goAssistant">
<text class="ai-entry__line ai-entry__line--top">AI</text>
<text class="ai-entry__line ai-entry__line--bottom">助手</text>
</view>
</template>
<script setup lang="ts">
withDefaults(defineProps<{
align?: 'left' | 'right'
size?: 'compact' | 'regular' | 'large'
}>(), {
align: 'left',
size: 'regular'
})
const goAssistant = () => {
uni.navigateTo({ url: '/pages/ai_assistant/ai_assistant' })
}
</script>
<style lang="scss" scoped>
.ai-entry {
--entry-width: 64rpx;
--entry-height: 64rpx;
--entry-radius: 16rpx;
--entry-top-font: 20rpx;
--entry-bottom-font: 14rpx;
--entry-gap: 2rpx;
width: var(--entry-width);
height: var(--entry-height);
border-radius: var(--entry-radius);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: var(--entry-gap);
flex-shrink: 0;
background: linear-gradient(135deg, #185dff 0%, #4f7dff 100%);
box-shadow: 0 8rpx 20rpx rgba(24, 93, 255, 0.16);
&--align-right {
margin-left: auto;
}
&--compact {
--entry-width: 60rpx;
--entry-height: 60rpx;
--entry-radius: 18rpx;
--entry-top-font: 18rpx;
--entry-bottom-font: 14rpx;
}
&--large {
--entry-width: 68rpx;
--entry-height: 68rpx;
--entry-radius: 12rpx;
--entry-top-font: 20rpx;
--entry-bottom-font: 14rpx;
}
&__line {
color: #fff;
font-weight: 700;
line-height: 1;
letter-spacing: 1rpx;
&--top {
font-size: var(--entry-top-font);
}
&--bottom {
font-size: var(--entry-bottom-font);
}
}
}
</style>