Adopt shared WebUI layout primitives

This commit is contained in:
2026-08-18 10:42:55 +02:00
parent 5608022b3f
commit e3c0db76c9
3 changed files with 6 additions and 13 deletions
+3 -3
View File
@@ -1,6 +1,6 @@
import { CheckCircle2, Pencil, Plus, RefreshCw, ShieldCheck, XCircle } from "lucide-react";
import { useCallback, useEffect, useMemo, useState } from "react";
import {
import { ActionToolbar,
ActionBlockerHint,
Button,
ConfirmDialog,
@@ -146,11 +146,11 @@ export default function VotingPage({ settings, auth }: PlatformRouteContext) {
<main className="voting-page">
<div className="voting-shell">
<aside className="voting-catalogue">
<div className="voting-toolbar">
<ActionToolbar className="voting-toolbar">
<IconButton label="Refresh ballots" icon={<RefreshCw size={16} />} disabled={loading || busy} disabledReason={loading ? VOTING_I18N.loading : busy ? VOTING_I18N.busy : undefined} onClick={() => void loadList()} />
<Button variant="primary" disabled={!canManage} disabledReason={!canManage ? VOTING_I18N.manageReason : undefined} onClick={() => setEditing("new")}><Plus size={16} aria-hidden="true" />New ballot</Button>
<DocumentationHelpLink reference={VOTING_DOCUMENTATION} />
</div>
</ActionToolbar>
<PageScrollViewport className="voting-list-viewport">
{loading && <LoadingIndicator label="Loading ballots" />}
{!loading && items.length === 0 && <div className="voting-empty">No ballots.</div>}