[package]
name = "plushie-widget-sdk"
description = "Widget SDK for Plushie"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
authors.workspace = true
keywords.workspace = true
categories.workspace = true
readme = "README.md"

[lib]
name = "plushie_widget_sdk"
path = "src/lib.rs"

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]

[features]
tokio = ["iced/tokio"]

[lints]
workspace = true

[dependencies]
plushie-core = { workspace = true }
plushie-core-macros = { workspace = true }
iced = { workspace = true, features = ["advanced", "image-without-codecs", "svg", "canvas", "markdown", "highlighter", "a11y"] }
serde = { workspace = true }
serde_json = { workspace = true }
rmp-serde = { workspace = true }
rmpv = { workspace = true }
image = { workspace = true }
log = { workspace = true }
parking_lot = { workspace = true }
lru = { workspace = true }
base64 = { workspace = true }
qrcode = { version = "0.14", default-features = false }
# Keep a direct dep on usvg so the workspace-level pin actually
# participates in version resolution. iced pulls usvg transitively;
# this declaration pins the exact version locally and surfaces
# RustSec advisories against the parser at this obvious anchor point.
# Used by the SVG pre-parse guard in widget/svg_widget.rs to bound
# decode work before iced rasterises.
usvg = { workspace = true }

[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
iced = { workspace = true, features = ["thread-pool", "tiny-skia", "x11", "wayland"] }

[dev-dependencies]
proptest = { workspace = true }
