バッジ
状態などの短いラベルを表示するバッジです。
実行結果
badge.rs
use hypersig::html::div;
use hypersig::style::pattern::{stack, wrap};
use hypersig::style::value::rem;
use hypersig::{Page, Signals};
use hypersig_ui::{BadgeVariant, ButtonSize, ButtonVariant, badge, button};
use serde::{Deserialize, Serialize};
#[derive(Signals, Serialize, Deserialize)]
pub struct Build {
failed: bool,
}
pub fn page() -> Page<Build> {
let failed = Build::failed();
Page::new(
"ビルド",
Build { failed: false },
)
.child(
div()
.css(stack(rem(1)))
.child(
div()
.css(wrap(rem(0.5)))
.child(badge(BadgeVariant::Default).text("Default"))
.child(badge(BadgeVariant::Secondary).text("Secondary"))
.child(badge(BadgeVariant::Outline).text("Outline"))
.child(
badge(BadgeVariant::Destructive)
.show(failed)
.text("失敗"),
)
.child(badge(BadgeVariant::Secondary).show(!failed).text("成功")),
)
.child(
div().child(
button(ButtonVariant::Outline, ButtonSize::Sm)
.on_click(failed.toggle())
.text("ビルドの結果を切り替える"),
),
),
)
}アクセシビリティ
バッジは <span> でロールを持たないので、スクリーンリーダーは置かれた位置でそのまま読み上げます。色だけで意味を伝えている場合は、赤い点だけで済ませずに、「失敗」のように意味をテキストにも書いてください。
API
| 項目 | 概要 |
|---|---|
badge | 状態のような短いラベルをバッジとして表示する <span> |
BadgeVariant | バッジの見た目 |