[package]
name = "plushie-iced"
description = "Vendored fork of iced for Plushie UI -- a cross-platform GUI library inspired by Elm"
version.workspace = true
edition.workspace = true
authors.workspace = true
license.workspace = true
repository.workspace = true
homepage.workspace = true
categories.workspace = true
keywords.workspace = true
rust-version.workspace = true
readme = "README.md"

[lib]
name = "iced"

[lints]
workspace = true

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

[badges]
maintenance = { status = "actively-developed" }

[features]
default = ["wgpu", "tiny-skia", "crisp", "hinting", "web-colors", "thread-pool", "linux-theme-detection", "x11", "wayland"]
# Enables the `wgpu` GPU-accelerated renderer with all its default features (Vulkan, Metal, DX12, OpenGL, and WebGPU)
wgpu = ["wgpu-bare", "iced_renderer/wgpu"]
# Enables the `wgpu` GPU-accelerated renderer with the minimum required features (no backends!)
wgpu-bare = ["iced_renderer/wgpu-bare", "iced_widget/wgpu"]
# Enables the `tiny-skia` software renderer
tiny-skia = ["iced_renderer/tiny-skia"]
# Enables the `image` widget and image clipboard support
image = ["image-without-codecs", "image/default", "iced_winit/image"]
# Enables the `image` widget, without any built-in codecs of the `image` crate
image-without-codecs = ["iced_widget/image", "dep:image"]
# Enables the `svg` widget
svg = ["iced_widget/svg"]
# Enables the `canvas` widget
canvas = ["iced_widget/canvas"]
# Enables the `qr_code` widget
qr_code = ["iced_widget/qr_code"]
# Enables the `markdown` widget
markdown = ["iced_widget/markdown"]
# Enables lazy widgets
lazy = ["iced_widget/lazy"]
# Enables debug metrics in native platforms (press F12)
debug = ["iced_winit/debug", "dep:iced_devtools"]
# Enables time-travel debugging (very experimental!)
time-travel = ["debug", "iced_devtools/time-travel"]
# Enables hot reloading (very experimental!)
hot = ["debug", "iced_debug/hot"]
# Enables the tester developer tool for recording and playing tests (press F12)
tester = ["dep:iced_tester"]
# Enables the `thread-pool` futures executor as the `executor::Default` on native platforms
thread-pool = ["iced_futures/thread-pool"]
# Enables `tokio` as the `executor::Default` on native platforms
tokio = ["iced_futures/tokio"]
# Enables `smol` as the `executor::Default` on native platforms
smol = ["iced_futures/smol"]
# Enables querying system information
sysinfo = ["iced_winit/sysinfo"]
# Enables broken "sRGB linear" blending to reproduce color management of the Web
web-colors = ["iced_renderer/web-colors"]
# Enables pixel snapping for crisp edges by default (can cause jitter!)
crisp = ["iced_core/crisp"]
# Enables the WebGL backend
webgl = ["iced_renderer/webgl"]
# Enables syntax highlighting
highlighter = ["iced_highlighter", "iced_widget/highlighter"]
# Enables the `widget::selector` module
selector = ["iced_runtime/selector"]
# Enables the advanced module
advanced = ["iced_core/advanced", "iced_widget/advanced"]
# Embeds Fira Sans into the final application; useful for testing and Wasm builds
fira-sans = ["iced_renderer/fira-sans"]
# Enables basic text shaping by default
basic-shaping = ["iced_core/basic-shaping"]
# Enables advanced text shaping by default
advanced-shaping = ["iced_core/advanced-shaping"]
# Enables rendering hints (e.g. metrics hinting)
hinting = ["iced_winit/hinting"]
# Enables strict assertions for debugging purposes at the expense of performance
strict-assertions = ["iced_renderer/strict-assertions"]
# Enables accessibility support via accesskit
a11y = ["iced_winit/a11y"]
# Redraws on every runtime event, and not only when a widget requests it
unconditional-rendering = ["iced_winit/unconditional-rendering"]
# Enables support for the `sipper` library
sipper = ["iced_runtime/sipper"]
# Enables Linux system theme detection
linux-theme-detection = ["iced_winit/linux-theme-detection"]
# Enables the Unix X11 backend
x11 = ["iced_renderer/x11", "iced_winit/x11"]
# Enables the Unix Wayland backend
wayland = ["iced_renderer/wayland", "iced_winit/wayland"]

[dependencies]
iced_debug.workspace = true
iced_core.workspace = true
iced_futures.workspace = true
iced_renderer.workspace = true
iced_runtime.workspace = true
iced_widget.workspace = true
iced_winit.workspace = true

iced_devtools.workspace = true
iced_devtools.optional = true

iced_tester.workspace = true
iced_tester.optional = true

iced_highlighter.workspace = true
iced_highlighter.optional = true

thiserror.workspace = true

image.workspace = true
image.optional = true

[dev-dependencies]
criterion = "0.5"
iced_wgpu.workspace = true

[[bench]]
name = "wgpu"
harness = false
required-features = ["canvas"]

[profile.release-opt]
inherits = "release"
codegen-units = 1
debug = false
lto = true
incremental = false
opt-level = 3
overflow-checks = false
strip = "debuginfo"

[workspace]
members = [
    "beacon",
    "core",
    "cryoglyph",
    "debug",
    "devtools",
    "futures",
    "graphics",
    "highlighter",
    "program",
    "renderer",
    "runtime",
    "selector",
    "test",
    "tester",
    "tiny_skia",
    "wgpu",
    "widget",
    "winit",
    "examples/*",
]

[workspace.package]
version = "0.8.3"
authors = ["Héctor Ramón Jiménez <hector@hecrj.dev>", "Daniel Hedlund <daniel@digitree.org>"]
edition = "2024"
license = "MIT"
repository = "https://github.com/plushie-ui/plushie-iced"
homepage = "https://github.com/plushie-ui/plushie-iced"
categories = ["gui"]
keywords = ["gui", "ui", "graphics", "interface", "accessibility"]
rust-version = "1.92"

[workspace.dependencies]
iced = { version = "0.8.3", path = ".", package = "plushie-iced" }
iced_beacon = { version = "0.8.3", path = "beacon", package = "plushie-iced-beacon" }
iced_core = { version = "0.8.3", path = "core", package = "plushie-iced-core" }
iced_debug = { version = "0.8.3", path = "debug", package = "plushie-iced-debug" }
iced_devtools = { version = "0.8.3", path = "devtools", package = "plushie-iced-devtools" }
iced_futures = { version = "0.8.3", path = "futures", package = "plushie-iced-futures" }
iced_graphics = { version = "0.8.3", path = "graphics", package = "plushie-iced-graphics" }
iced_highlighter = { version = "0.8.3", path = "highlighter", package = "plushie-iced-highlighter" }
iced_program = { version = "0.8.3", path = "program", package = "plushie-iced-program" }
iced_renderer = { version = "0.8.3", path = "renderer", package = "plushie-iced-renderer" }
iced_runtime = { version = "0.8.3", path = "runtime", package = "plushie-iced-runtime" }
iced_selector = { version = "0.8.3", path = "selector", package = "plushie-iced-selector" }
iced_test = { version = "0.8.3", path = "test", package = "plushie-iced-test" }
iced_tester = { version = "0.8.3", path = "tester", package = "plushie-iced-tester" }
iced_tiny_skia = { version = "0.8.3", path = "tiny_skia", default-features = false, package = "plushie-iced-tiny-skia" }
iced_wgpu = { version = "0.8.3", path = "wgpu", default-features = false, package = "plushie-iced-wgpu" }
iced_widget = { version = "0.8.3", path = "widget", package = "plushie-iced-widget" }
iced_winit = { version = "0.8.3", path = "winit", default-features = false, package = "plushie-iced-winit" }

accesskit = "0.24"
accesskit_winit = "0.32.2"
arboard = { version = "3.6", default-features = false }
bincode = "1.3"
bitflags = "2.0"
bytemuck = { version = "1.0", features = ["derive"] }
bytes = "1.6"
cargo-hot = { version = "0.1", package = "cargo-hot-protocol" }
cosmic-text = "0.18"
cryoglyph = { version = "0.8.3", path = "cryoglyph", package = "plushie-iced-cryoglyph" }
futures = { version = "0.3", default-features = false, features = ["std", "async-await"] }
glam = "0.25"
guillotiere = "0.6"
half = "2.2"
image = { version = "0.25", default-features = false }
kamadak-exif = "0.6"
kurbo = "0.10"
lilt = "0.8"
log = "0.4"
lyon = "1.0"
lyon_path = "1.0"
mundy = { version = "0.2", default-features = false }
nom = "8"
num-traits = "0.2"
ouroboros = "0.18"
png = "0.18"
pulldown-cmark = "0.12"
qrcode = { version = "0.13", default-features = false }
raw-window-handle = "0.6"
resvg = "0.45"
rfd = "0.16"
rustc-hash = "2.0"
semver = "1.0"
serde = "1.0"
sha2 = "0.10"
sipper = "0.1"
smol = "2"
smol_str = "0.2"
softbuffer = { version = "0.4", default-features = false }
sysinfo = "0.33"
thiserror = "2"
tiny-skia = { version = "0.11", default-features = false, features = ["std", "simd"] }
tokio = "1.0"
tracing = "0.1"
two-face = { version = "0.4", default-features = false, features = ["syntect-default-fancy"] }
unicode-segmentation = "1.0"
url = "2.5"
wasm-bindgen-futures = "0.4"
wasmtimer = "0.4.2"
web-sys = "=0.3.85"
web-time = "1.1"
wgpu = { version = "28.0", default-features = false, features = ["std", "wgsl"] }
winit = { version = "0.30", default-features = false, features = ["rwh_06"] }

[workspace.lints.rust]
rust_2018_idioms = { level = "deny", priority = -1 }
missing_docs = "deny"
unsafe_code = "deny"
unused_results = "deny"

[workspace.lints.clippy]
type-complexity = "allow"
map-entry = "allow"
large-enum-variant = "allow"
result_large_err = "allow"
semicolon_if_nothing_returned = "deny"
trivially-copy-pass-by-ref = "deny"
default_trait_access = "deny"
match-wildcard-for-single-variants = "deny"
redundant-closure-for-method-calls = "deny"
filter_map_next = "deny"
manual_let_else = "deny"
unused_async = "deny"
from_over_into = "deny"
needless_borrow = "deny"
new_without_default = "deny"
useless_conversion = "deny"

[workspace.lints.rustdoc]
broken_intra_doc_links = "forbid"
