Crates.io | leptos_twelements |
lib.rs | leptos_twelements |
version | 0.0.7 |
source | src |
created_at | 2023-09-04 22:27:39.0877 |
updated_at | 2023-10-04 05:00:08.062842 |
description | A UI component library for the Leptos Web Framework, based on Tailwind Elements. |
homepage | https://github.com/smessmer/leptos_twelements |
repository | https://github.com/smessmer/leptos_twelements |
max_upload_size | |
id | 963691 |
size | 41,733,896 |
A UI component library for Leptos, based on Tailwind Elements.
Use the nightly rust compiler. This crate doesn't work with stable rust yet.
Add the following to the Cargo.toml
of your Leptos project:
[dependencies]
leptos-twelements = "^0.1.0"
[build-dependencies]
leptos-twelements = "^0.1.0"
[features]
ssr = [
# ... leptos probably already has some other entries here
"leptos-twelements/ssr",
# ...
]
tailwind.config.js
:/** @type {import('tailwindcss').Config} */
module.exports = {
content: {
relative: true,
files: [
...
"./target/.leptos-twelements/rs/**/*.rs",
"./target/.leptos-twelements/js/**/*.js",
],
},
plugins: [require("./target/.leptos-twelements/plugin.cjs")]
}
Note that plugin.cjs
and the js
directory aren't there just yet,
but we'll add a build script generating them in the next step.
build.rs
to your Leptos project to generate those files:use std::path::Path;
fn main() {
let target_dir = Path::new(&env!("CARGO_MANIFEST_DIR")).join("target");
leptos_twelements::install_files_to(&target_dir);
}
.setup_twelements()
to the axum router setup: use leptos_twelements::AxumRouterExt;
let app = Router::new()
// ...
.setup_twelements()
// ...
This function call will add the necessary routes to your axum app to serve the JavaScript required by Tailwind Elements.
Note that this code, including the use
statement, should be guarded by a #[cfg(feature = "ssr")]
attribute.
The default leptos setup should already do this correctly.
<TwElementsSetup />
to your App
component:use leptos_twelements::TwElementsSetup;
#[component]
pub fn App(cx: Scope) -> impl IntoView {
// ...
view! {
cx,
// ...
<TwElementsSetup />
// ...
}
}