T12d Data Display: QrCode, Barcode, Meter, Gauge, UsageBar, Stars, Comparison (review pending: codex 401)

This commit is contained in:
ZacharyZhang-NY committed 2026-09-25 19:18:10 -04:00
1 parent 8798d95d7a
commit f41faf5684
18 files changed
+1161 -46

No files matched your search

+2
View File
@@ -20,9 +20,11 @@ pub use effects::{Blink, Flash, Glow, Marquee, Pulse, Shake};
pub use list::{AnimatePresence, Flip};
pub use overlay::{LazyLoad, LoadingOverlay, Refresh, RefreshIndicator, TypingIndicator};
pub use particles::{AnimatedGradient, Confetti, ParticleBackground, Ripple};
pub(crate) use progress::follow;
pub use progress::{ProgressBar, ProgressRing};
pub use reorder::Reorder;
pub use skeleton::{Shimmer, Skeleton, SkeletonAvatar, SkeletonCard, SkeletonTable, SkeletonText};
pub(crate) use slide::{Axis, Marker, glide, measure_item, measure_origin, slide};
pub(crate) use spinner::arc;
pub use spinner::{Spinner, SpinnerStyle};
pub use transition::{Entrance, Stagger, Transition};
+8 -3
View File
@@ -19,7 +19,12 @@ struct Glide {
}
/// Keeps `value`'s last change; returns where to glide from, and the change's number.
fn glide(id: &ElementId, value: f32, window: &mut Window, cx: &mut App) -> (f32, usize) {
pub(crate) fn follow(
id: &ElementId,
value: f32,
window: &mut Window,
cx: &mut App,
) -> (f32, usize) {
let state = window.use_keyed_state((id.clone(), "glide"), cx, |_, _| Glide {
from: value,
to: value,
@@ -136,7 +141,7 @@ impl RenderOnce for ProgressBar {
)
.into_any_element();
};
let (from, turn) = glide(&self.id, value, window, cx);
let (from, turn) = follow(&self.id, value, window, cx);
let (buffer, segments) = (self.buffer, self.segments);
let lanes = move |at: f32| {
(0..segments).map(move |ix| {
@@ -196,7 +201,7 @@ impl ProgressRing {
impl RenderOnce for ProgressRing {
fn render(self, window: &mut Window, cx: &mut App) -> impl IntoElement {
let (value, percent) = (self.value, self.percent);
let (from, turn) = glide(&self.id, value, window, cx);
let (from, turn) = follow(&self.id, value, window, cx);
let theme = cx.theme();
let (fill, track) = (theme.colors.fg, theme.colors.border);
let text = theme.text_size(TextSize::Xs);
+1 -1
View File
@@ -92,7 +92,7 @@ fn dot(center: Point<Pixels>, radius: Pixels, color: Hsla, window: &mut Window)
window.paint_quad(fill(Bounds::new(corner, size(side, side)), color).corner_radii(radius));
}
pub(super) fn arc(
pub(crate) fn arc(
center: Point<Pixels>,
radius: Pixels,
from: f32,