79 lines
1.8 KiB
Vue
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>
|