Files
geo/apps/desktop-client/src/renderer/components/StatusBadge.vue
T
root b16e9f0bd1 feat(desktop): implement workspace foundation + desktop-client skeleton
Plan 0 (workspaces): add workspaces + workspace_memberships schema, extend
JWT/Actor/claims with primary_workspace_id, seed default workspace per tenant,
thread workspace_id through tenant monitoring quota.

Plan A (desktop skeleton): new Electron app (apps/desktop-client) with main/
preload/renderer, shared Vue component package (packages/ui-shared), and server
surface — desktop client registration + token rotation + heartbeat, SSE task
event stream, desktop accounts/tasks/content handlers, publish job endpoint,
and supporting repositories, services, sqlc queries, and migrations.

Hard cutover per plan: remove browser-extension monitoring callback endpoints,
stub legacy media API in admin-web, and delete monitoring_callback_handler.go.
2026-04-19 14:18:20 +08:00

69 lines
1.4 KiB
Vue

<script setup lang="ts">
const props = defineProps<{
tone?: "neutral" | "brand" | "success" | "warn" | "danger" | "info";
label: string;
subtle?: boolean;
}>();
</script>
<template>
<span class="badge" :class="[props.tone ?? 'neutral', { subtle: props.subtle }]">
{{ props.label }}
</span>
</template>
<style scoped>
.badge {
display: inline-flex;
align-items: center;
justify-content: center;
min-height: 26px;
padding: 0 10px;
border-radius: 999px;
border: 1px solid var(--geo-color-border);
background: rgba(255, 255, 255, 0.42);
color: var(--geo-color-text-secondary);
font-size: 12px;
font-weight: 600;
letter-spacing: 0.02em;
}
.subtle {
background: transparent;
}
.brand {
color: var(--geo-color-brand-strong);
background: var(--geo-color-brand-soft);
border-color: rgba(15, 118, 110, 0.24);
}
.success {
color: var(--geo-color-success);
background: var(--geo-color-success-soft);
border-color: rgba(21, 128, 61, 0.22);
}
.warn {
color: var(--geo-color-warn);
background: var(--geo-color-warn-soft);
border-color: rgba(180, 83, 9, 0.22);
}
.danger {
color: var(--geo-color-danger);
background: var(--geo-color-danger-soft);
border-color: rgba(185, 28, 28, 0.22);
}
.info {
color: var(--geo-color-info);
background: var(--geo-color-info-soft);
border-color: rgba(37, 99, 235, 0.22);
}
html[data-theme="dark"] .badge {
background: rgba(255, 255, 255, 0.04);
}
</style>