atproto blogging
1//! Editor view - wraps the MarkdownEditor component for the /editor route.
2
3use crate::components::editor::MarkdownEditor;
4use dioxus::prelude::*;
5
6/// Editor page view.
7///
8/// Displays the markdown editor at the /editor route.
9/// Optionally loads an existing entry for editing via `?entry={at-uri}`.
10#[component]
11pub fn Editor(entry: Option<String>) -> Element {
12 rsx! {
13 EditorCss {}
14 div { class: "editor-page",
15 MarkdownEditor { entry_uri: entry, target_notebook: None }
16 }
17 }
18}
19
20#[component]
21pub fn EditorCss() -> Element {
22 use weaver_renderer::css::{generate_base_css, generate_syntax_css};
23 use weaver_renderer::theme::default_resolved_theme;
24
25 let css_content = use_resource(move || async move {
26 let resolved_theme = default_resolved_theme();
27 let mut css = generate_base_css(&resolved_theme);
28 css.push_str(
29 &generate_syntax_css(&resolved_theme)
30 .await
31 .unwrap_or_default(),
32 );
33
34 Some(css)
35 });
36
37 match css_content() {
38 Some(Some(css)) => rsx! { document::Style { {css} } },
39 _ => rsx! {},
40 }
41}