1#![doc = include_str!("../README.md")]
2#![doc(html_logo_url = "https://avatars.githubusercontent.com/u/79236386")]
3#![doc(html_favicon_url = "https://avatars.githubusercontent.com/u/79236386")]
4#![deny(missing_docs)]
6#![allow(non_snake_case)]
7
8pub mod navigation;
9pub mod routable;
10
11pub mod components {
13 #[cfg(feature = "html")]
14 mod default_errors;
15 #[cfg(feature = "html")]
16 pub use default_errors::*;
17
18 #[cfg(feature = "html")]
19 mod history_buttons;
20 #[cfg(feature = "html")]
21 pub use history_buttons::*;
22
23 #[cfg(feature = "html")]
24 mod link;
25 #[cfg(feature = "html")]
26 pub use link::*;
27
28 mod outlet;
29 pub use outlet::*;
30
31 mod router;
32 pub use router::*;
33
34 mod history_provider;
35 pub use history_provider::*;
36
37 #[doc(hidden)]
38 pub mod child_router;
39}
40
41mod contexts {
42 pub(crate) mod navigator;
43 pub(crate) mod outlet;
44 pub use outlet::{use_outlet_context, OutletContext};
45 pub(crate) mod router;
46 pub use navigator::*;
47 pub(crate) use router::*;
48 pub use router::{root_router, GenericRouterContext, ParseRouteError, RouterContext};
49}
50
51mod router_cfg;
52
53pub mod hooks {
55 mod use_router;
56 pub use use_router::*;
57
58 mod use_route;
59
60 pub use use_route::*;
61
62 mod use_navigator;
63 pub use use_navigator::*;
64}
65
66pub use hooks::router;
67
68#[cfg(feature = "html")]
69pub use crate::components::{GoBackButton, GoForwardButton, HistoryButtonProps, Link, LinkProps};
70pub use crate::components::{Outlet, Router, RouterProps};
71pub use crate::contexts::*;
72pub use crate::hooks::*;
73pub use crate::navigation::*;
74pub use crate::routable::*;
75pub use crate::router_cfg::RouterConfig;
76pub use dioxus_router_macro::Routable;
77
78#[doc(hidden)]
79pub trait HasProps {
81 type Props;
83}
84
85impl<P> HasProps for dioxus_core::Component<P> {
86 type Props = P;
87}
88
89mod utils {
90 pub(crate) mod use_router_internal;
91}
92
93#[doc(hidden)]
94pub mod exports {
95 pub use crate::query_sets::*;
96 pub use percent_encoding;
97}
98
99pub(crate) mod query_sets {
100 use percent_encoding::AsciiSet;
103
104 pub const QUERY_ASCII_SET: &AsciiSet = &percent_encoding::CONTROLS
106 .add(b' ')
107 .add(b'"')
108 .add(b'#')
109 .add(b'<')
110 .add(b'>');
111
112 pub const PATH_ASCII_SET: &AsciiSet = &QUERY_ASCII_SET
114 .add(b'?')
115 .add(b'^')
116 .add(b'`')
117 .add(b'{')
118 .add(b'}');
119
120 pub const FRAGMENT_ASCII_SET: &AsciiSet = &percent_encoding::CONTROLS
122 .add(b' ')
123 .add(b'"')
124 .add(b'<')
125 .add(b'>')
126 .add(b'`');
127}