//! Embeddable widget routes; public, no auth, iframe-friendly. //! //! All routes under `/embed/` serve self-contained HTML pages designed to be //! loaded inside iframes on external sites. They set permissive frame headers //! and cache for 5 minutes. mod item; mod project; mod user; use axum::{routing::get, Router}; use crate::AppState; pub fn embed_routes() -> Router { Router::new() // Item embeds .route("/embed/i/{item_id}/button", get(item::item_button)) .route("/embed/i/{item_id}/card", get(item::item_card)) .route("/embed/i/{item_id}/player", get(item::item_player)) // Project embeds .route("/embed/p/{project_slug}/card", get(project::project_card)) // User embeds .route("/embed/u/{username}/tip", get(user::tip_button)) }