# Empty workspace to make this template standalone
[workspace]

[package]
name = "core-lib-template"
version = "0.1.0"
edition = "2021"
authors = ["Rustelo Contributors"]
license = "MIT OR Apache-2.0"
description = "Core runtime template for Rustelo - trait-based dependency injection"
documentation = "https://docs.rs/rustelo"
repository = "https://github.com/rustelo/rustelo"
homepage = "https://rustelo.dev"
readme = "README.md"
keywords = [
    "rust",
    "web",
    "leptos",
    "template",
    "traits",
]
categories = ["web-programming", "template-engine"]

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

[lib]
crate-type = [
    "cdylib",
    "rlib",
]

[dependencies]
# Pure trait dependencies from Layer 1
rustelo-routing-traits = {  path = "../../traits/routing-traits" }
rustelo-component-traits = {  path = "../../traits/component-traits" }
rustelo-core-types = { path = "../../traits/core-types" }

# Essential Leptos dependencies
leptos  = { workspace = true, features = [ "hydrate", "ssr" ] }

leptos_meta = { workspace = true }

# Serialization
serde = { workspace = true, features = ["derive"] }

serde_json = { workspace = true }

# Error handling
thiserror = { workspace = true }

# Utilities
cfg-if = { workspace = true }

once_cell = { workspace = true }

# WASM support
wasm-bindgen = { workspace = true, optional = true }

wasm-bindgen-futures = { workspace = true, optional = true }

web-sys = { workspace = true, optional = true }

js-sys = { workspace = true, optional = true }

reqwasm = { workspace = true, optional = true }

# Content processing (optional)
pulldown-cmark = { workspace = true,  optional = true }

toml = { workspace = true, optional = true }

# i18n (optional)
fluent = { workspace = true, optional = true }

fluent-bundle = { workspace = true,  optional = true }

unic-langid = { workspace = true,  optional = true }

# Time handling (optional)
chrono = { workspace = true,  optional = true,  features = ["serde"] }

# IDs (optional)
uuid = { workspace = true,  optional = true,  features = ["v4", "serde"] }

# URL handling
urlencoding = { workspace = true }

[features]
default = ["wasm"]
# Essential features
wasm = [
    "wasm-bindgen",
    "wasm-bindgen-futures",
    "web-sys",
    "js-sys",
    "reqwasm"
]
ssr = []
# Optional feature modules
content = ["pulldown-cmark", "toml"]
i18n = ["fluent", "fluent-bundle", "unic-langid"]
time = ["chrono"]
ids = ["uuid"]

# NOTE: NO build-dependencies - this template uses dependency injection
# Implementations will provide concrete types via traits
