基础

Marker 内容标注

用于内容标注场景的 MoriUI 组件。

资源

导入

import { Marker, MarkerContent, MarkerIcon } from 'moriui'

组合方式

Marker 组合 MarkerIcon 与 MarkerContent,在时间线或内容流中提供轻量标注。

特性

当前公开能力包含 default、border、separator 三种变体;不登记 MoriUI 未实现的 shimmer。

状态与进度

动态状态使用 role=status/aria-live,进度需要明确文本或专用 Progress。

有标签的分隔线

separator 变体用作结构分隔时提供 role=separator 与可访问名称。

带边框标记

border 是视觉变化;状态含义仍需由文本或 aria-label 提供。

装饰图标

重复文字含义的图标应 aria-hidden,独立图标需要可访问名称。

交互标记

需要点击的 Marker 使用 as 渲染为 a/button,或把明确的 Button 放在标记中。

示例

概览

在内容流中标记时间。

今天
<script setup lang="ts">
  import { Marker, MarkerContent } from 'moriui'
</script>

<template>
  <Marker><MarkerContent>今天</MarkerContent></Marker>
</template>

变体

对比三种公开变体。

默认标记
描边标记
分隔标记
<script setup lang="ts">
  import { Marker, MarkerContent } from 'moriui'
</script>

<template>
  <div class="grid w-full max-w-md gap-3">
    <Marker><MarkerContent>默认标记</MarkerContent></Marker><Marker variant="border">
      <MarkerContent>描边标记</MarkerContent>
    </Marker><Marker variant="separator">
      <MarkerContent>分隔标记</MarkerContent>
    </Marker>
  </div>
</template>

状态

用文字与实时区域表达保存状态。

所有更改已保存
<script setup lang="ts">
  import { CheckCircle } from '@lucide/vue'
  import { Marker, MarkerContent, MarkerIcon } from 'moriui'
</script>

<template>
  <Marker role="status" aria-live="polite">
    <MarkerIcon><CheckCircle class="size-4" /></MarkerIcon><MarkerContent>所有更改已保存</MarkerContent>
  </Marker>
</template>

分隔线

在分隔线上放置可读标签。

<script setup lang="ts">
  import { Marker, MarkerContent } from 'moriui'
</script>

<template>
  <Marker variant="separator" role="separator" aria-label="未读消息">
    <MarkerContent>3 条未读消息</MarkerContent>
  </Marker>
</template>

描边

描边标记同时提供状态名称。

正在同步
<script setup lang="ts">
  import { Circle } from '@lucide/vue'
  import { Marker, MarkerContent, MarkerIcon } from 'moriui'
</script>

<template>
  <Marker variant="border" aria-label="同步状态">
    <MarkerIcon><Circle class="size-3 fill-current" /></MarkerIcon><MarkerContent>正在同步</MarkerContent>
  </Marker>
</template>

带图标

装饰图标与文本组合。

部署完成
<script setup lang="ts">
  import { CheckCircle } from '@lucide/vue'
  import { Marker, MarkerContent, MarkerIcon } from 'moriui'
</script>

<template>
  <Marker><MarkerIcon><CheckCircle class="size-4" aria-hidden="true" /></MarkerIcon><MarkerContent>部署完成</MarkerContent></Marker>
</template>

链接与按钮

在标记中放置明确操作。

查看完整活动记录 打开
<script setup lang="ts">
  import { Button, Marker, MarkerContent } from 'moriui'
</script>

<template>
  <Marker>
    <MarkerContent>查看完整活动记录</MarkerContent><Button
      as="a"
      href="#marker-api"
      size="xs"
      variant="link"
    >
      打开
    </Button>
  </Marker>
</template>

API

属性 类型 默认值 说明
Marker variant'default' | 'border' | 'separator''default'标记的视觉结构。
Marker asstring | Component'div'Marker 根元素。
Marker asChildbooleanfalse将样式合并到唯一子元素。
MarkerIcon classHTMLAttributes["class"]undefined合并到标记图标区域的调用方类。
MarkerContent classHTMLAttributes["class"]undefined合并到标记内容区域的调用方类。

无障碍说明

状态与进度使用合适的实时区域;分隔用途提供 separator 语义;图标不能成为唯一含义来源;交互标记使用 a 或 button。

关联组件