//! Scrollbar element characters. //! //! Provides character sets for drawing scrollbars with different styles. const std = @import("std"); const line = @import("line.zig"); const block = @import("block.zig"); // ============================================================================ // Scrollbar Set // ============================================================================ /// A set of characters for drawing a scrollbar. /// ``` /// <--▮-------> /// ^ ^ ^ ^ /// │ │ │ └ end /// │ │ └──── track /// │ └──────── thumb /// └─────────── begin /// ``` pub const Set = struct { track: []const u8, thumb: []const u8, begin: []const u8, end: []const u8, pub const default: Set = VERTICAL; }; /// Vertical scrollbar with arrows. /// ``` /// ↑ /// │ /// █ /// │ /// ↓ /// ``` pub const VERTICAL: Set = .{ .track = line.VERTICAL, .thumb = block.FULL, .begin = "↑", .end = "↓", }; /// Horizontal scrollbar with arrows. /// ``` /// ←───█───→ /// ``` pub const HORIZONTAL: Set = .{ .track = line.HORIZONTAL, .thumb = block.FULL, .begin = "←", .end = "→", }; /// Vertical scrollbar with double line track. pub const DOUBLE_VERTICAL: Set = .{ .track = line.DOUBLE_VERTICAL, .thumb = block.FULL, .begin = "▲", .end = "▼", }; /// Horizontal scrollbar with double line track. pub const DOUBLE_HORIZONTAL: Set = .{ .track = line.DOUBLE_HORIZONTAL, .thumb = block.FULL, .begin = "◄", .end = "►", }; // ============================================================================ // Tests // ============================================================================ test "scrollbar set default" { try std.testing.expectEqualStrings(line.VERTICAL, Set.default.track); try std.testing.expectEqualStrings(block.FULL, Set.default.thumb); }