---
url: /guide/aside.md
description: >-
  学习如何使用 @theojs/lumen 插件的 Aside 组件，在 VitePress
  站点的侧边栏添加自定义链接、推广信息或品牌Logo。本指南将引导你配置数据并集成组件，以丰富侧边栏内容和提升用户体验。
---

# 侧边栏链接组件 - Aside

![侧边栏 - 效果图|300x0](https://i.theojs.net/docs/docasidelogo-light.webp#light "侧边栏 - 效果图")

![侧边栏 - 效果图|300x0](https://i.theojs.net/docs/docasidelogo-dark.webp#dark "侧边栏 - 效果图")

## 创建数据 (点击打开查看)

::: details 在 `.vitepress` 目录下新建 `data/AsideData.ts````ts \[.vitepress/data/AsideData.ts]
import type { AsideItem } from '@theojs/lumen'

export const Aside_Data: AsideItem = [
  {
    image: 'https://example.com/icon.webp',
    promo: '活动标题',
    info1: '简介1',
    info2: '简介2',
    link: 'https://example.com/'
  },
  {
    image: 'https://example.com/icon.webp',
    name: '标题',
    hide1: '隐藏信息1',
    hide2: '隐藏信息2',
    link: 'https://example.com/'
  },
  {
    icon: 'twemoji:red-heart',
    name: '使用iconify图标',
    link: 'https://example.com/'
  },
  {
    icon: {
      light: 'heroicons:sun-20-solid',
      dark: 'heroicons:moon-20-solid',
      color: { light: '#f59e0b', dark: '#818cf8' }
    },
    name: 'iconify图标的 light/dark 模式',
    link: 'https://example.com/'
  },
  {
    icon: {
      svg: `<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256'><g fill='none'><rect width='256' height='256' fill='#242938' rx='60'/><path fill='url(#skillIconsNetlifyDark0)' d='m172.787 97.405l-.073-.031c-.041-.016-.083-.031-.12-.068a.57.57 0 0 1-.146-.485l4.032-24.651l18.909 18.913l-19.665 8.367a.4.4 0 0 1-.172.031h-.078a.5.5 0 0 1-.105-.088a9 9 0 0 0-2.582-1.988m27.426-1.502l20.218 20.217c4.199 4.205 6.301 6.301 7.068 8.732c.114.36.208.72.281 1.09l-48.316-20.462l-.078-.032c-.193-.078-.418-.167-.418-.365s.23-.292.423-.37l.062-.026zm26.743 36.528c-1.043 1.961-3.077 3.996-6.52 7.443l-22.794 22.789l-29.481-6.139l-.157-.031c-.261-.042-.537-.089-.537-.324a8.9 8.9 0 0 0-3.417-6.222c-.12-.12-.088-.308-.052-.48c0-.026 0-.052.011-.073l5.544-34.04l.021-.115c.032-.261.078-.563.313-.563a9.02 9.02 0 0 0 6.051-3.469c.047-.052.078-.11.141-.141c.167-.078.365 0 .537.073l50.335 21.292zM192.4 167.905l-37.483 37.483l6.416-39.433l.01-.053a.7.7 0 0 1 .032-.151c.052-.125.187-.177.318-.229l.062-.026a9.66 9.66 0 0 0 3.626-2.697c.125-.146.276-.287.469-.313a.5.5 0 0 1 .151 0l26.393 5.425zm-45.417 45.417l-4.225 4.225l-46.71-67.507l-.052-.073c-.072-.099-.15-.198-.135-.313c.005-.083.057-.156.115-.219l.052-.067c.14-.209.26-.418.391-.642l.104-.183l.016-.015c.073-.125.14-.245.266-.313c.11-.052.26-.031.38-.005l51.749 10.672a.85.85 0 0 1 .397.172c.068.068.083.141.099.224a9.16 9.16 0 0 0 5.362 6.129c.146.073.083.235.016.407q-.05.113-.079.235c-.652 3.964-6.243 38.066-7.746 47.273m-8.825 8.82c-3.114 3.083-4.95 4.715-7.026 5.373a10.44 10.44 0 0 1-6.291 0c-2.43-.772-4.532-2.869-8.731-7.073l-46.908-46.908l12.252-19.003a.8.8 0 0 1 .209-.245c.13-.094.318-.052.475 0c2.812.849 5.831.696 8.543-.433c.141-.052.282-.088.392.011q.081.075.146.167l46.939 68.116zm-73.479-53.131l-10.76-10.76l21.25-9.066a.4.4 0 0 1 .172-.036c.177 0 .282.177.376.339q.32.492.678.959l.067.084c.063.088.021.177-.041.261l-11.737 18.219zm-15.523-15.523l-13.614-13.614c-2.315-2.316-3.995-3.995-5.164-5.44l41.395 8.586l.157.026c.255.041.537.088.537.328c0 .261-.308.381-.569.48l-.12.052zM28 127.434a10.4 10.4 0 0 1 .47-2.582c.771-2.431 2.868-4.527 7.072-8.732l17.422-17.421a11464 11464 0 0 0 24.13 34.88c.14.187.297.396.135.552c-.761.84-1.523 1.758-2.06 2.755a.83.83 0 0 1-.261.323c-.068.042-.14.026-.22.01h-.01L28 127.429zm29.627-33.398L81.052 70.61c2.202.965 10.214 4.35 17.38 7.376c5.425 2.295 10.37 4.381 11.924 5.06c.157.062.298.125.365.281c.042.094.021.214 0 .313a10.46 10.46 0 0 0 2.728 9.535c.157.157 0 .38-.135.574l-.073.11l-23.785 36.84a.7.7 0 0 1-.225.261c-.125.078-.302.042-.448.005a12 12 0 0 0-2.833-.386c-.855 0-1.784.157-2.722.329h-.006c-.104.016-.198.036-.281-.026a1.1 1.1 0 0 1-.235-.266zm28.157-28.157l30.326-30.326c4.199-4.199 6.301-6.3 8.731-7.068a10.43 10.43 0 0 1 6.291 0c2.431.767 4.533 2.87 8.732 7.068l6.572 6.572l-21.569 33.404a.8.8 0 0 1-.213.25c-.131.09-.313.053-.47 0a10.94 10.94 0 0 0-10.015 1.93c-.141.146-.349.063-.527-.015c-2.816-1.226-24.724-10.484-27.858-11.815m65.232-19.174L170.93 66.62l-4.798 29.721v.078a.8.8 0 0 1-.042.199c-.052.104-.157.125-.261.156a9.5 9.5 0 0 0-2.858 1.424a1 1 0 0 0-.105.089c-.057.062-.114.12-.208.13a.6.6 0 0 1-.225-.036l-30.347-12.894l-.057-.027c-.193-.078-.422-.172-.422-.37a11.5 11.5 0 0 0-1.617-4.773c-.146-.24-.308-.49-.183-.735zm-20.51 44.89l28.448 12.049c.157.073.329.14.397.302c.027.097.027.2 0 .297a7 7 0 0 0-.157 1.372v.798c0 .199-.203.282-.391.36l-.057.021c-4.507 1.925-63.271 26.983-63.36 26.983s-.182 0-.271-.089c-.156-.156 0-.375.14-.574q.038-.051.074-.104l23.378-36.2l.042-.062c.136-.22.292-.464.542-.464l.235.036c.532.073 1.002.141 1.476.141c3.547 0 6.833-1.726 8.815-4.679a.9.9 0 0 1 .178-.208c.141-.105.349-.052.511.02m-32.58 47.909l64.054-27.316s.094 0 .182.088c.35.35.647.584.934.803l.141.089c.13.073.261.157.271.292c0 .052 0 .084-.01.131l-5.488 33.706l-.021.135c-.036.261-.073.559-.318.559a9 9 0 0 0-7.161 4.418l-.027.041c-.073.12-.14.235-.26.298c-.11.052-.251.031-.365.005l-51.081-10.537c-.052-.01-.793-2.707-.85-2.712'/><defs><radialGradient id='skillIconsNetlifyDark0' cx='0' cy='0' r='1' gradientTransform='scale(230.653 199.78)rotate(90 -.267 .36)' gradientUnits='userSpaceOnUse'><stop stop-color='#20c6b7'/><stop offset='1' stop-color='#4d9abf'/></radialGradient></defs></g></svg>`
    },
    name: 'svg 图标',
    link: 'https://example.com/'
  },
  {
    icon: {
      svg: {
        light: `<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256'><g fill='none'><rect width='256' height='256' fill='#242938' rx='60'/><path fill='url(#skillIconsNetlifyDark0)' d='m172.787 97.405l-.073-.031c-.041-.016-.083-.031-.12-.068a.57.57 0 0 1-.146-.485l4.032-24.651l18.909 18.913l-19.665 8.367a.4.4 0 0 1-.172.031h-.078a.5.5 0 0 1-.105-.088a9 9 0 0 0-2.582-1.988m27.426-1.502l20.218 20.217c4.199 4.205 6.301 6.301 7.068 8.732c.114.36.208.72.281 1.09l-48.316-20.462l-.078-.032c-.193-.078-.418-.167-.418-.365s.23-.292.423-.37l.062-.026zm26.743 36.528c-1.043 1.961-3.077 3.996-6.52 7.443l-22.794 22.789l-29.481-6.139l-.157-.031c-.261-.042-.537-.089-.537-.324a8.9 8.9 0 0 0-3.417-6.222c-.12-.12-.088-.308-.052-.48c0-.026 0-.052.011-.073l5.544-34.04l.021-.115c.032-.261.078-.563.313-.563a9.02 9.02 0 0 0 6.051-3.469c.047-.052.078-.11.141-.141c.167-.078.365 0 .537.073l50.335 21.292zM192.4 167.905l-37.483 37.483l6.416-39.433l.01-.053a.7.7 0 0 1 .032-.151c.052-.125.187-.177.318-.229l.062-.026a9.66 9.66 0 0 0 3.626-2.697c.125-.146.276-.287.469-.313a.5.5 0 0 1 .151 0l26.393 5.425zm-45.417 45.417l-4.225 4.225l-46.71-67.507l-.052-.073c-.072-.099-.15-.198-.135-.313c.005-.083.057-.156.115-.219l.052-.067c.14-.209.26-.418.391-.642l.104-.183l.016-.015c.073-.125.14-.245.266-.313c.11-.052.26-.031.38-.005l51.749 10.672a.85.85 0 0 1 .397.172c.068.068.083.141.099.224a9.16 9.16 0 0 0 5.362 6.129c.146.073.083.235.016.407q-.05.113-.079.235c-.652 3.964-6.243 38.066-7.746 47.273m-8.825 8.82c-3.114 3.083-4.95 4.715-7.026 5.373a10.44 10.44 0 0 1-6.291 0c-2.43-.772-4.532-2.869-8.731-7.073l-46.908-46.908l12.252-19.003a.8.8 0 0 1 .209-.245c.13-.094.318-.052.475 0c2.812.849 5.831.696 8.543-.433c.141-.052.282-.088.392.011q.081.075.146.167l46.939 68.116zm-73.479-53.131l-10.76-10.76l21.25-9.066a.4.4 0 0 1 .172-.036c.177 0 .282.177.376.339q.32.492.678.959l.067.084c.063.088.021.177-.041.261l-11.737 18.219zm-15.523-15.523l-13.614-13.614c-2.315-2.316-3.995-3.995-5.164-5.44l41.395 8.586l.157.026c.255.041.537.088.537.328c0 .261-.308.381-.569.48l-.12.052zM28 127.434a10.4 10.4 0 0 1 .47-2.582c.771-2.431 2.868-4.527 7.072-8.732l17.422-17.421a11464 11464 0 0 0 24.13 34.88c.14.187.297.396.135.552c-.761.84-1.523 1.758-2.06 2.755a.83.83 0 0 1-.261.323c-.068.042-.14.026-.22.01h-.01L28 127.429zm29.627-33.398L81.052 70.61c2.202.965 10.214 4.35 17.38 7.376c5.425 2.295 10.37 4.381 11.924 5.06c.157.062.298.125.365.281c.042.094.021.214 0 .313a10.46 10.46 0 0 0 2.728 9.535c.157.157 0 .38-.135.574l-.073.11l-23.785 36.84a.7.7 0 0 1-.225.261c-.125.078-.302.042-.448.005a12 12 0 0 0-2.833-.386c-.855 0-1.784.157-2.722.329h-.006c-.104.016-.198.036-.281-.026a1.1 1.1 0 0 1-.235-.266zm28.157-28.157l30.326-30.326c4.199-4.199 6.301-6.3 8.731-7.068a10.43 10.43 0 0 1 6.291 0c2.431.767 4.533 2.87 8.732 7.068l6.572 6.572l-21.569 33.404a.8.8 0 0 1-.213.25c-.131.09-.313.053-.47 0a10.94 10.94 0 0 0-10.015 1.93c-.141.146-.349.063-.527-.015c-2.816-1.226-24.724-10.484-27.858-11.815m65.232-19.174L170.93 66.62l-4.798 29.721v.078a.8.8 0 0 1-.042.199c-.052.104-.157.125-.261.156a9.5 9.5 0 0 0-2.858 1.424a1 1 0 0 0-.105.089c-.057.062-.114.12-.208.13a.6.6 0 0 1-.225-.036l-30.347-12.894l-.057-.027c-.193-.078-.422-.172-.422-.37a11.5 11.5 0 0 0-1.617-4.773c-.146-.24-.308-.49-.183-.735zm-20.51 44.89l28.448 12.049c.157.073.329.14.397.302c.027.097.027.2 0 .297a7 7 0 0 0-.157 1.372v.798c0 .199-.203.282-.391.36l-.057.021c-4.507 1.925-63.271 26.983-63.36 26.983s-.182 0-.271-.089c-.156-.156 0-.375.14-.574q.038-.051.074-.104l23.378-36.2l.042-.062c.136-.22.292-.464.542-.464l.235.036c.532.073 1.002.141 1.476.141c3.547 0 6.833-1.726 8.815-4.679a.9.9 0 0 1 .178-.208c.141-.105.349-.052.511.02m-32.58 47.909l64.054-27.316s.094 0 .182.088c.35.35.647.584.934.803l.141.089c.13.073.261.157.271.292c0 .052 0 .084-.01.131l-5.488 33.706l-.021.135c-.036.261-.073.559-.318.559a9 9 0 0 0-7.161 4.418l-.027.041c-.073.12-.14.235-.26.298c-.11.052-.251.031-.365.005l-51.081-10.537c-.052-.01-.793-2.707-.85-2.712'/><defs><radialGradient id='skillIconsNetlifyDark0' cx='0' cy='0' r='1' gradientTransform='scale(230.653 199.78)rotate(90 -.267 .36)' gradientUnits='userSpaceOnUse'><stop stop-color='#20c6b7'/><stop offset='1' stop-color='#4d9abf'/></radialGradient></defs></g></svg>`,
        dark: `<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256'><g fill='none'><rect width='256' height='256' fill='#f4f2ed' rx='60'/><path fill='url(#skillIconsNetlifyLight0)' d='m172.787 97.405l-.073-.031c-.041-.016-.083-.031-.12-.068a.57.57 0 0 1-.146-.485l4.032-24.651l18.909 18.913l-19.665 8.367a.4.4 0 0 1-.172.031h-.078a.5.5 0 0 1-.105-.088a9 9 0 0 0-2.582-1.988m27.426-1.502l20.218 20.217c4.199 4.205 6.301 6.301 7.068 8.732c.114.36.208.72.281 1.09l-48.316-20.462l-.078-.032c-.193-.078-.418-.167-.418-.365s.23-.292.423-.37l.062-.026zm26.743 36.528c-1.043 1.961-3.077 3.996-6.52 7.443l-22.794 22.789l-29.481-6.139l-.157-.031c-.261-.042-.537-.089-.537-.324a8.9 8.9 0 0 0-3.417-6.222c-.12-.12-.088-.308-.052-.48c0-.026 0-.052.011-.073l5.544-34.04l.021-.115c.032-.261.078-.563.313-.563a9.02 9.02 0 0 0 6.051-3.469c.047-.052.078-.11.141-.141c.167-.078.365 0 .537.073l50.335 21.292zM192.4 167.905l-37.483 37.483l6.416-39.433l.01-.053a.7.7 0 0 1 .032-.151c.052-.125.187-.177.318-.229l.062-.026a9.66 9.66 0 0 0 3.626-2.697c.125-.146.276-.287.469-.313a.5.5 0 0 1 .151 0l26.393 5.425zm-45.417 45.417l-4.225 4.225l-46.71-67.507l-.052-.073c-.072-.099-.15-.198-.135-.313c.005-.083.057-.156.115-.219l.052-.067c.14-.209.26-.418.391-.642l.104-.183l.016-.015c.073-.125.14-.245.266-.313c.11-.052.26-.031.38-.005l51.749 10.672a.85.85 0 0 1 .397.172c.068.068.083.141.099.224a9.16 9.16 0 0 0 5.362 6.129c.146.073.083.235.016.407q-.05.113-.079.235c-.652 3.964-6.243 38.066-7.746 47.273m-8.825 8.82c-3.114 3.083-4.95 4.715-7.026 5.373a10.44 10.44 0 0 1-6.291 0c-2.43-.772-4.532-2.869-8.731-7.073l-46.908-46.908l12.252-19.003a.8.8 0 0 1 .209-.245c.13-.094.318-.052.475 0c2.812.849 5.831.696 8.543-.433c.141-.052.282-.088.392.011q.081.075.146.167l46.939 68.116zm-73.479-53.131l-10.76-10.76l21.25-9.066a.4.4 0 0 1 .172-.036c.177 0 .282.177.376.339q.32.492.678.959l.067.084c.063.088.021.177-.041.261l-11.737 18.219zm-15.523-15.523l-13.614-13.614c-2.315-2.316-3.995-3.995-5.164-5.44l41.395 8.586l.157.026c.255.041.537.088.537.328c0 .261-.308.381-.569.48l-.12.052zM28 127.434a10.4 10.4 0 0 1 .47-2.582c.771-2.431 2.868-4.527 7.072-8.732l17.422-17.421a11464 11464 0 0 0 24.13 34.88c.14.187.297.396.135.552c-.761.84-1.523 1.758-2.06 2.755a.83.83 0 0 1-.261.323c-.068.042-.14.026-.22.01h-.01L28 127.429zm29.627-33.398L81.052 70.61c2.202.965 10.214 4.35 17.38 7.376c5.425 2.295 10.37 4.381 11.924 5.06c.157.062.298.125.365.281c.042.094.021.214 0 .313a10.46 10.46 0 0 0 2.728 9.535c.157.157 0 .38-.135.574l-.073.11l-23.785 36.84a.7.7 0 0 1-.225.261c-.125.078-.302.042-.448.005a12 12 0 0 0-2.833-.386c-.855 0-1.784.157-2.722.329h-.006c-.104.016-.198.036-.281-.026a1.1 1.1 0 0 1-.235-.266zm28.157-28.157l30.326-30.326c4.199-4.199 6.301-6.3 8.731-7.068a10.43 10.43 0 0 1 6.291 0c2.431.767 4.533 2.87 8.732 7.068l6.572 6.572l-21.569 33.404a.8.8 0 0 1-.213.25c-.131.09-.313.053-.47 0a10.94 10.94 0 0 0-10.015 1.93c-.141.146-.349.063-.527-.015c-2.816-1.226-24.724-10.484-27.858-11.815m65.232-19.174L170.93 66.62l-4.798 29.721v.078a.8.8 0 0 1-.042.199c-.052.104-.157.125-.261.156a9.5 9.5 0 0 0-2.858 1.424a1 1 0 0 0-.105.089c-.057.062-.114.12-.208.13a.6.6 0 0 1-.225-.036l-30.347-12.894l-.057-.027c-.193-.078-.422-.172-.422-.37a11.5 11.5 0 0 0-1.617-4.773c-.146-.24-.308-.49-.183-.735zm-20.51 44.89l28.448 12.049c.157.073.329.14.397.302c.027.097.027.2 0 .297a7 7 0 0 0-.157 1.372v.798c0 .199-.203.282-.391.36l-.057.021c-4.507 1.925-63.271 26.983-63.36 26.983s-.182 0-.271-.089c-.156-.156 0-.375.14-.574q.038-.051.074-.104l23.378-36.2l.042-.062c.136-.22.292-.464.542-.464l.235.036c.532.073 1.002.141 1.476.141c3.547 0 6.833-1.726 8.815-4.679a.9.9 0 0 1 .178-.208c.141-.105.349-.052.511.02m-32.58 47.909l64.054-27.316s.094 0 .182.088c.35.35.647.584.934.803l.141.089c.13.073.261.157.271.292c0 .052 0 .084-.01.131l-5.488 33.706l-.021.135c-.036.261-.073.559-.318.559a9 9 0 0 0-7.161 4.418l-.027.041c-.073.12-.14.235-.26.298c-.11.052-.251.031-.365.005l-51.081-10.537c-.052-.01-.793-2.707-.85-2.712'/><defs><radialGradient id='skillIconsNetlifyLight0' cx='0' cy='0' r='1' gradientTransform='scale(230.653 199.78)rotate(90 -.267 .36)' gradientUnits='userSpaceOnUse'><stop stop-color='#20c6b7'/><stop offset='1' stop-color='#4d9abf'/></radialGradient></defs></g></svg>`
      }
    },
    name: 'svg 图标的 light/dark 模式',
    link: 'https://example.com/'
  },
  {
    image: 'https://i.theojs.net/logo/github.svg',
    name: '图片',
    link: 'https://xx.theojs.net/'
  },
  {
    image: { light: 'https://i.theojs.net/logo/github.svg', dark: 'https://i.theojs.net/logo/github-dark.svg' },
    name: '图片的 light/dark 模式',
    link: 'https://xx.theojs.net/'
  }
]

```

::: details 或者支持 `i18n````ts \[.vitepress/data/AsideData\_i18n.ts]
import type { AsideItem } from '@theojs/lumen'

export const Aside_Data: AsideItem = {
  i18n: {
    root: [
      {
        image: 'https://example.com/icon.webp',
        promo: '活动标题',
        info1: '简介1',
        info2: '简介2',
        link: 'https://example.com/'
      }
      // ...其他项省略
    ],
    en: [
      {
        image: 'https://example.com/icon.webp',
        promo: 'Promotion Title',
        info1: 'Introduction 1',
        info2: 'Introduction 2',
        link: 'https://example.com/'
      }
      // ...其他项省略
    ]
  }
}

```

```ts \[.vitepress/data/AsideData\_item\_i18n.ts]
import type { AsideItem } from '@theojs/lumen'

export const Aside_Data: AsideItem = [
  {
    image: 'https://example.com/icon.webp',
    promo: '活动标题',
    info1: '简介',
    link: 'https://example.com/',
    i18n: {
      en: {
        promo: 'Promotion title',
        info1: 'Introduction'
      }
    }
  },
  {
    image: 'https://example.com/icon.webp',
    name: '普通链接',
    hide1: '悬停提示',
    link: 'https://example.com/',
    i18n: {
      en: {
        name: 'Link',
        hide1: 'Hover tip'
      }
    }
  }
]

```

## 引入组件

```ts [.vitepress/theme/index.ts]
import DefaultTheme from 'vitepress/theme'
// [!code ++]
import { h } from 'vue'
// [!code ++]
import { Aside } from '@theojs/lumen'
// [!code ++]
import { Aside_Data } from '../data/AsideData'

export default {
  extends: DefaultTheme,
  Layout() {
    // [!code ++]
    return h(DefaultTheme.Layout, null, {
      // [!code ++]
      'aside-ads-before': () => h(Aside, { Aside_Data })
    }) // [!code ++]
  } // [!code ++]
}
```

## 数据接口说明

### Promo

| 字段     | 类型         | 描述                                                                                                                                   | 是否必填              |
| -------- | ------------ | -------------------------------------------------------------------------------------------------------------------------------------- | --------------------- |
| `promo`  | `string`     | 活动标题，例如：`"限时折扣"`。                                                                                                         | <Badge text="必填" /> |
| `link`   | `LinkType`   | 跳转链接，支持外部或内部地址。                                                                                                         | <Badge text="可选" /> |
| `rel`    | `RelType`    | 链接的 `rel` 属性，建议设置为 `noopener noreferrer` 以增强安全性。                                                                     | <Badge text="可选" /> |
| `target` | `TargetType` | 链接的目标窗口。默认根据链接地址判断：外部链接默认在新标签页打开（`_blank`），内部链接无默认值（`即当前页打开`）。可自定义覆盖该行为。 | <Badge text="可选" /> |
| `icon`   | `IconType`   | 图标配置，支持字符串或对象，支持深浅色模式和颜色配置。详情查看 [IconType](#IconType)                                                   | <Badge text="可选" /> |
| `image`  | `ImageType`  | 图片配置，支持字符串或对象，支持深浅色模式和裁剪。详情查看 [ImageType](#ImageType)                                                     | <Badge text="可选" /> |
| `size`   | `SizeType`   | 控制图片或者图标的`width`和`height` 默认值为 `32`                                                                                      | <Badge text="可选" /> |
| `info1`  | `string`     | 附加信息 1，例如：`"新用户立减 5 元"`。                                                                                                | <Badge text="可选" /> |
| `info2`  | `string`     | 附加信息 2，例如：`"优惠截止至 6 月 30 日"`。                                                                                          | <Badge text="可选" /> |

### Normal

| 字段     | 类型         | 描述                                                                                                                                   | 是否必填              |
| -------- | ------------ | -------------------------------------------------------------------------------------------------------------------------------------- | --------------------- |
| `name`   | `string`     | 显示名称，例如：`"哔哩哔哩"`。                                                                                                         | <Badge text="必填" /> |
| `link`   | `LinkType`   | 跳转链接，支持外部或内部地址。                                                                                                         | <Badge text="可选" /> |
| `rel`    | `RelType`    | 链接的 `rel` 属性，建议设置为 `noopener noreferrer` 以增强安全性。                                                                     | <Badge text="可选" /> |
| `target` | `TargetType` | 链接的目标窗口。默认根据链接地址判断：外部链接默认在新标签页打开（`_blank`），内部链接无默认值（`即当前页打开`）。可自定义覆盖该行为。 | <Badge text="可选" /> |
| `icon`   | `IconType`   | 图标配置，支持字符串或对象，支持深浅色模式和颜色配置。详情查看 [IconType](#IconType)                                                   | <Badge text="可选" /> |
| `image`  | `ImageType`  | 图片配置，支持字符串或对象，支持深浅色模式和裁剪。详情查看 [ImageType](#ImageType)                                                     | <Badge text="可选" /> |
| `size`   | `SizeType`   | 控制图片或者图标的`width`和`height` 默认值为 `32`                                                                                      | <Badge text="可选" /> |
| `hide1`  | `string`     | 隐藏信息 1，悬停时显示。例如：`"仅限中国大陆用户"`。                                                                                   | <Badge text="可选" /> |
| `hide2`  | `string`     | 隐藏信息 2，用于补充额外提示。例如：`"每日限量 500 名"`。                                                                              | <Badge text="可选" /> |

### AsidePromo

`AsidePromo` 继承 `Promo`，并支持按语言覆盖单项字段。

| 字段   | 类型                                                | 描述                                                                  | 是否必填              |
| ------ | --------------------------------------------------- | --------------------------------------------------------------------- | --------------------- |
| ...    | 同 `Promo` 接口                                     | 同上，字段不再赘述。                                                  | -                     |
| `i18n` | `Partial<Record<string, Omit<AsidePromo, 'i18n'>>>` | 以语言代码为键；翻译项需要 `promo`，其余字段仅在需要覆盖时填写。      | <Badge text="可选" /> |

### AsideNormal

`AsideNormal` 继承 `Normal`，并支持按语言覆盖单项字段。

| 字段   | 类型                                                 | 描述                                                                | 是否必填              |
| ------ | ---------------------------------------------------- | ------------------------------------------------------------------- | --------------------- |
| ...    | 同 `Normal` 接口                                     | 同上，字段不再赘述。                                                | -                     |
| `i18n` | `Partial<Record<string, Omit<AsideNormal, 'i18n'>>>` | 以语言代码为键；翻译项需要 `name`，其余字段仅在需要覆盖时填写。     | <Badge text="可选" /> |

### AsideAll

| 类型          | 描述                                                     |
| ------------- | -------------------------------------------------------- |
| `AsidePromo`  | 表示带有推广性质的活动类型，含 `promo`、`info1` 等字段。 |
| `AsideNormal` | 表示普通展示项，仅有 `name`、`link` 等基本信息字段。     |

### AsideItem

| 结构形式   | 类型                                   | 描述                                                                                |
| ---------- | -------------------------------------- | ----------------------------------------------------------------------------------- |
| 单语言结构 | `AsideAll[]`                           | 直接使用 `AsidePromo` 或 `AsideNormal` 组成的数组。                                 |
| 多语言结构 | `{ i18n: Record<string, AsideAll[]> }` | 使用 `i18n` 包裹的对象，不同语言对应不同数组，如 `{ i18n: { root: [], en: [] } }`。 |

::: tip
顶层与单项 `i18n` 可以同时使用。组件会先选择当前语言对应的顶层数组，再浅层合并每一项当前语言的字段覆盖；未覆盖字段继承该项基础配置，嵌套对象则由翻译值整体替换。顶层缺少当前语言时不展示条目，单项缺少当前语言时保持原数据。
:::

## IconType

```ts
export type IconMode = string | { light: string; dark: string }

export type IconType =
  | string
  | { icon: string; color?: IconMode }
  | { light: string; dark: string; color?: IconMode }
  | { svg: IconMode }
```

## ImageType

```ts
export type ImageType =
  | string
  | { src: string; crop?: boolean; [prop: string]: any }
  | { light: string; dark: string; crop?: boolean; [prop: string]: any }
```

## 其他公共类型

```ts
export type SizeType = null | string | number
export type LinkType = string | undefined
export type RelType = string | undefined
export type TargetType = string | undefined
```
