Skip to content

CardWindowHeader 窗口标题栏 ​

模拟复古操作系统的窗口标题栏:左侧三色状态指示灯、居中等宽大写标题、右侧 ASCII 风格窗口控制符。支持多模自适应架构:既可在展示面板中作为纯静态装饰层,也可开箱即用地作为具备键盘聚焦与无障碍支持的实体控制按钮组。

预览 ​

Preview

交互控制模式(工控实体按钮)

Control_Terminal_v3.0

> LAST_EVENT: 等待操作...

> 点击右侧 [ _ ] [ □ ] [ X ] 或左侧红黄绿指示灯可直接触发动作并支持 Tab 聚焦。

默认静态装饰模式

System Monitor v2.0

> CPU ██████████░░░░ 68%

> MEM ███████░░░░░░░ 47%

> STATUS: ALL SYSTEMS NOMINAL (静态展示,无 a11y 负担)

隐藏控制符(纯标题栏)

Read Only Panel
showControls 为 false 时右侧不渲染 ASCII 控制符,适合静态展示面板。

自定义操作区插槽

Config Editor
> actions 插槽优先级最高,可放置任意操作按钮。

安装 ​

pnpm dlx brutx-vue@latest add card-window-header

用法 ​

基础用法(静态装饰) ​

vue
<script setup>
import { CardWindowHeader } from 'brutx-ui-vue'
</script>

<template>
    <div class="border-3 border-brutal shadow-brutal">
        <CardWindowHeader title="System Monitor v2.0" />
        <div class="p-4">窗口内容区…</div>
    </div>
</template>

交互控制模式 ​

通过声明 closable、minimizable、maximizable 开启对应动作按钮,支持键盘 Tab 导航、Enter / Space 触发与 @close / @minimize / @maximize 事件监听。

vue
<script setup>
import { ref } from 'vue'
import { CardWindowHeader } from 'brutx-ui-vue'

const isCollapsed = ref(false)

function onClose() {
    console.log('窗口关闭')
}
function onMinimize() {
    isCollapsed.value = !isCollapsed.value
}
</script>

<template>
    <div class="border-3 border-brutal shadow-brutal">
        <CardWindowHeader
            title="Terminal_Shell"
            closable
            minimizable
            maximizable
            interactive-lamps
            @close="onClose"
            @minimize="onMinimize"
        />
        <div v-show="!isCollapsed" class="p-4">可折叠的控制台内容…</div>
    </div>
</template>

自定义操作区插槽 ​

actions 插槽优先级最高,可放置任意自定义操作按钮。

vue
<template>
    <CardWindowHeader title="Config Editor">
        <template #actions>
            <Button size="sm" variant="accent">SAVE</Button>
        </template>
    </CardWindowHeader>
</template>

API 参考 ​

CardWindowHeader — 属性
名称类型默认值说明
title
必填
string
—
居中显示的窗口标题,采用等宽字体和大写样式,超长内容截断。
详情

声明类型

string

默认值详情

未声明默认值
—

来源

CardWindowHeader.vue:13

packages/ui/src/components/card-window-header/CardWindowHeader.vue

showControls
boolean | undefined
true
在没有 actions 插槽且三个交互按钮均未开启时,显示右侧静态 ASCII 控制符。
详情

声明类型

boolean | undefined

字面量

  • false
  • true

默认值详情

解析值
true

来源

CardWindowHeader.vue:15

packages/ui/src/components/card-window-header/CardWindowHeader.vue

closable
boolean | undefined
false
启用右侧关闭按钮;actions 插槽存在时该按钮由插槽替代。
详情

声明类型

boolean | undefined

字面量

  • false
  • true

默认值详情

解析值
false

来源

CardWindowHeader.vue:17

packages/ui/src/components/card-window-header/CardWindowHeader.vue

minimizable
boolean | undefined
false
启用右侧最小化按钮;actions 插槽存在时该按钮由插槽替代。
详情

声明类型

boolean | undefined

字面量

  • false
  • true

默认值详情

解析值
false

来源

CardWindowHeader.vue:19

packages/ui/src/components/card-window-header/CardWindowHeader.vue

maximizable
boolean | undefined
false
启用右侧最大化按钮;actions 插槽存在时该按钮由插槽替代。
详情

声明类型

boolean | undefined

字面量

  • false
  • true

默认值详情

解析值
false

来源

CardWindowHeader.vue:21

packages/ui/src/components/card-window-header/CardWindowHeader.vue

interactiveLamps
boolean | undefined
false
让左侧指示灯可触发对应操作:红色关闭、黄色最小化、绿色最大化。
  • 三个交互按钮均未开启时,三盏灯均可交互;启用任一按钮后,仅对应已启用操作的灯可交互。actions 插槽不替换左侧指示灯。
详情

声明类型

boolean | undefined

字面量

  • false
  • true

默认值详情

解析值
false

来源

CardWindowHeader.vue:23

packages/ui/src/components/card-window-header/CardWindowHeader.vue

closeAriaLabel
string | undefined
undefined

运行时回退:去除首尾空白后为空或未提供时,使用 cardWindowHeader.close 语言文案。

右侧关闭按钮的无障碍名称。
详情

声明类型

string | undefined

默认值详情

解析值
undefined
运行时回退
去除首尾空白后为空或未提供时,使用 cardWindowHeader.close 语言文案。

组件在说明的运行条件下采用此回退值。

来源

CardWindowHeader.vue:25

packages/ui/src/components/card-window-header/CardWindowHeader.vue

minimizeAriaLabel
string | undefined
undefined

运行时回退:去除首尾空白后为空或未提供时,使用 cardWindowHeader.minimize 语言文案。

右侧最小化按钮的无障碍名称。
详情

声明类型

string | undefined

默认值详情

解析值
undefined
运行时回退
去除首尾空白后为空或未提供时,使用 cardWindowHeader.minimize 语言文案。

组件在说明的运行条件下采用此回退值。

来源

CardWindowHeader.vue:27

packages/ui/src/components/card-window-header/CardWindowHeader.vue

maximizeAriaLabel
string | undefined
undefined

运行时回退:去除首尾空白后为空或未提供时,使用 cardWindowHeader.maximize 语言文案。

右侧最大化按钮的无障碍名称。
详情

声明类型

string | undefined

默认值详情

解析值
undefined
运行时回退
去除首尾空白后为空或未提供时,使用 cardWindowHeader.maximize 语言文案。

组件在说明的运行条件下采用此回退值。

来源

CardWindowHeader.vue:29

packages/ui/src/components/card-window-header/CardWindowHeader.vue

class
string | undefined
undefined
合并到窗口标题栏根容器的自定义 CSS 类。
详情

声明类型

string | undefined

默认值详情

解析值
undefined

来源

CardWindowHeader.vue:31

packages/ui/src/components/card-window-header/CardWindowHeader.vue

CardWindowHeader — 事件
名称签名或类型说明
@close
[event: MouseEvent | KeyboardEvent]
激活关闭按钮或可交互的红色指示灯时发出;由使用方执行实际关闭。
详情

声明类型

[event: MouseEvent | KeyboardEvent]

来源

CardWindowHeader.vue

packages/ui/src/components/card-window-header/CardWindowHeader.vue

@minimize
[event: MouseEvent | KeyboardEvent]
激活最小化按钮或可交互的黄色指示灯时发出;由使用方执行实际折叠或最小化。
详情

声明类型

[event: MouseEvent | KeyboardEvent]

来源

CardWindowHeader.vue

packages/ui/src/components/card-window-header/CardWindowHeader.vue

@maximize
[event: MouseEvent | KeyboardEvent]
激活最大化按钮或可交互的绿色指示灯时发出;由使用方执行实际展开或最大化。
详情

声明类型

[event: MouseEvent | KeyboardEvent]

来源

CardWindowHeader.vue

packages/ui/src/components/card-window-header/CardWindowHeader.vue

CardWindowHeader — 插槽
名称签名或类型说明
#actions
{}
替换整个右侧操作区,优先于内置交互按钮和静态 ASCII 控制符。
详情

声明类型

{}

来源

CardWindowHeader.vue

packages/ui/src/components/card-window-header/CardWindowHeader.vue

可访问性 ​

  • 模式自适应:未声明交互 props 时,控制符与指示灯自动打上 aria-hidden="true",对屏幕阅读器零噪音;开启交互 props 时,自动升级为语义化 <button> 并绑定精准的 aria-label。
  • 键盘导航:交互按钮内置 FOCUS_RING_CLASSES 粗野主义高对比焦点环,支持 Tab 键聚焦与 Enter / Space 键激活。

蛮力铸就。