Skip to main content

dioxus_mdx/components/
api_examples.rs

1//! API example containers for request and response code samples.
2
3use dioxus::prelude::*;
4
5use crate::components::DocCodeGroup;
6use crate::parser::{CodeGroupNode, RequestExampleNode, ResponseExampleNode};
7
8/// Props for DocRequestExample.
9#[derive(Props, Clone, PartialEq)]
10pub struct DocRequestExampleProps {
11    /// The request example to render.
12    pub example: RequestExampleNode,
13}
14
15/// Container for API request examples with tabs.
16#[component]
17pub fn DocRequestExample(props: DocRequestExampleProps) -> Element {
18    rsx! {
19        div { class: "my-6",
20            h4 { class: "text-sm font-semibold text-base-content/70 uppercase tracking-wide mb-2",
21                "Request"
22            }
23            DocCodeGroup {
24                group: CodeGroupNode { blocks: props.example.blocks.clone() }
25            }
26        }
27    }
28}
29
30/// Props for DocResponseExample.
31#[derive(Props, Clone, PartialEq)]
32pub struct DocResponseExampleProps {
33    /// The response example to render.
34    pub example: ResponseExampleNode,
35}
36
37/// Container for API response examples with tabs.
38#[component]
39pub fn DocResponseExample(props: DocResponseExampleProps) -> Element {
40    rsx! {
41        div { class: "my-6",
42            h4 { class: "text-sm font-semibold text-base-content/70 uppercase tracking-wide mb-2",
43                "Response"
44            }
45            DocCodeGroup {
46                group: CodeGroupNode { blocks: props.example.blocks.clone() }
47            }
48        }
49    }
50}