add file browser component and widget

This commit is contained in:
Timur Gordon
2025-08-05 15:02:23 +02:00
parent 4e43c21b72
commit ba43a82db0
95 changed files with 17840 additions and 423 deletions

View File

@@ -1,52 +1,78 @@
[workspace]
members = [
"components",
"widgets/file_browser_widget",
]
resolver = "2"
[package]
name = "framework"
version = "0.1.0"
edition = "2021"
[lib]
[[bin]]
name = "framework"
path = "src/lib.rs"
path = "cmd/main.rs"
[dependencies]
# WebSocket client dependency with conditional crypto features
circle_client_ws = { path = "../circles/src/client_ws", default-features = false, features = [] }
# Core dependencies
[workspace.dependencies]
# Shared dependencies across workspace
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
log = "0.4"
thiserror = "1.0"
uuid = { version = "1.0", features = ["v4"] }
# Async dependencies
uuid = { version = "1.0", features = ["v4", "js"] }
futures-util = "0.3"
futures-channel = "0.3"
# WASM-specific dependencies
[target.'cfg(target_arch = "wasm32")'.dependencies]
wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4"
yew = { version = "0.21", features = ["csr"] }
gloo = "0.11"
gloo-timers = { version = "0.3", features = ["futures"] }
web-sys = { version = "0.3", features = ["Storage", "Window", "FormData", "HtmlFormElement", "HtmlInputElement", "HtmlSelectElement"] }
web-sys = { version = "0.3", features = [
"Storage", "Window", "FormData", "HtmlFormElement", "HtmlInputElement", "HtmlSelectElement",
"Request", "RequestInit", "RequestMode", "Response", "Headers", "Blob", "Url",
"HtmlAnchorElement", "Document", "Element", "CssStyleDeclaration", "Location",
"UrlSearchParams", "HtmlTextAreaElement", "HtmlButtonElement", "HtmlDivElement",
"Event", "EventTarget", "MouseEvent", "KeyboardEvent", "InputEvent",
"File", "FileList", "AbortController", "AbortSignal", "console", "History",
"HtmlImageElement", "HtmlCanvasElement", "Navigator", "Notification",
"WebSocket", "MessageEvent", "CloseEvent", "ErrorEvent",
"DomException", "Performance", "HtmlMetaElement", "HtmlLinkElement",
"Node", "NodeList", "HtmlCollection", "DomTokenList",
"CustomEvent", "FocusEvent", "WheelEvent", "TouchEvent", "Touch", "TouchList",
"DragEvent", "DataTransfer", "ClipboardEvent",
"HtmlIFrameElement", "MessagePort"
] }
js-sys = "0.3"
hex = "0.4"
k256 = { version = "0.13", features = ["ecdsa", "sha256"] }
getrandom = { version = "0.2", features = ["js"] }
wasm-bindgen-test = "0.3"
# Native-specific dependencies
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
tokio = { version = "1.0", features = ["rt", "macros", "time"] }
# HTTP client
reqwest = { version = "0.11", features = ["json"] }
[dev-dependencies]
tokio-test = "0.4"
# Tokio for async runtime
tokio = { version = "1.0", features = ["full"] }
# Axum for web server
axum = "0.7"
tower = "0.4"
tower-http = { version = "0.5", features = ["fs", "cors"] }
# Internal workspace dependencies
components = { path = "components" }
[dependencies]
# Use workspace dependencies for the binary
components = { workspace = true }
tokio = { workspace = true }
axum = { workspace = true }
tower = { workspace = true }
tower-http = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
log = { workspace = true }
thiserror = { workspace = true }
env_logger = "0.11"
# Features
[features]
default = []
crypto = ["circle_client_ws/crypto"]
wasm-compatible = [] # For WASM builds without crypto to avoid wasm-opt issues
[workspace]
members = ["examples/website"]