diff --git a/Cargo.lock b/Cargo.lock index aa3ba82..aea0edf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -145,7 +145,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -165,7 +165,7 @@ dependencies = [ "manyhow 0.10.4", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -179,7 +179,7 @@ dependencies = [ "manyhow 0.11.4", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -195,7 +195,7 @@ dependencies = [ "proc-macro2", "quote", "quote-use", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -211,7 +211,7 @@ dependencies = [ "proc-macro2", "quote", "quote-use", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -285,9 +285,9 @@ checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" [[package]] name = "cc" -version = "1.2.5" +version = "1.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31a0499c1dc64f458ad13872de75c0eb7e3fdb0e67964610c914b034fc5956e" +checksum = "8d6dbb628b8f8555f86d0323c2eb39e3ec81901f4b83e091db8a6a76d316a333" dependencies = [ "shlex", ] @@ -369,7 +369,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -555,7 +555,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -566,7 +566,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -614,7 +614,7 @@ checksum = "62d671cc41a825ebabc75757b62d3d168c577f9149b2d49ece1dad1f72119d25" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -635,7 +635,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -831,7 +831,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -1261,7 +1261,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -1646,7 +1646,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -1693,7 +1693,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9311685eb9a34808bbb0608ad2fcab9ae216266beca5848613e95553ac914e3b" dependencies = [ "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -1867,7 +1867,7 @@ checksum = "8378d425e9152e0a1a079f6efd7f46eaecf50882f08ffba31624cf1e237a1e50" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -1965,7 +1965,7 @@ dependencies = [ "quote", "rstml 0.11.2", "serde", - "syn 2.0.91", + "syn 2.0.92", "walkdir", ] @@ -1983,7 +1983,7 @@ dependencies = [ "quote", "rstml 0.12.0", "serde", - "syn 2.0.91", + "syn 2.0.92", "walkdir", ] @@ -2005,7 +2005,7 @@ dependencies = [ "quote", "rstml 0.11.2", "server_fn_macro 0.6.15", - "syn 2.0.91", + "syn 2.0.92", "tracing", "uuid", ] @@ -2028,7 +2028,7 @@ dependencies = [ "quote", "rstml 0.12.0", "server_fn_macro 0.7.2", - "syn 2.0.91", + "syn 2.0.92", "uuid", ] @@ -2194,7 +2194,7 @@ dependencies = [ "manyhow-macros 0.10.4", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -2206,7 +2206,7 @@ dependencies = [ "manyhow-macros 0.11.4", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -2406,7 +2406,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -2517,7 +2517,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -2548,7 +2548,7 @@ checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -2593,7 +2593,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" dependencies = [ "proc-macro2", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -2649,7 +2649,7 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -2691,7 +2691,7 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", "version_check", "yansi", ] @@ -2715,9 +2715,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.37" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" dependencies = [ "proc-macro2", ] @@ -2741,13 +2741,13 @@ dependencies = [ "proc-macro-utils 0.10.0", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] name = "radix-leptos-icons" version = "0.0.2" -source = "git+https://github.com/RustForWeb/radix.git#aa5167ea0c8ae4498e2dc4ef1467fa87c428aa75" +source = "git+https://github.com/RustForWeb/radix.git#872b6810f3647bc1ee4596bf6a8583b588bcd742" dependencies = [ "leptos 0.6.15", ] @@ -2755,7 +2755,7 @@ dependencies = [ [[package]] name = "radix-yew-aspect-ratio" version = "0.0.2" -source = "git+https://github.com/RustForWeb/radix.git#aa5167ea0c8ae4498e2dc4ef1467fa87c428aa75" +source = "git+https://github.com/RustForWeb/radix.git#872b6810f3647bc1ee4596bf6a8583b588bcd742" dependencies = [ "yew", "yew-struct-component", @@ -2765,7 +2765,7 @@ dependencies = [ [[package]] name = "radix-yew-avatar" version = "0.0.2" -source = "git+https://github.com/RustForWeb/radix.git#aa5167ea0c8ae4498e2dc4ef1467fa87c428aa75" +source = "git+https://github.com/RustForWeb/radix.git#872b6810f3647bc1ee4596bf6a8583b588bcd742" dependencies = [ "log", "web-sys", @@ -2786,7 +2786,7 @@ dependencies = [ [[package]] name = "radix-yew-label" version = "0.0.2" -source = "git+https://github.com/RustForWeb/radix.git#aa5167ea0c8ae4498e2dc4ef1467fa87c428aa75" +source = "git+https://github.com/RustForWeb/radix.git#872b6810f3647bc1ee4596bf6a8583b588bcd742" dependencies = [ "web-sys", "yew", @@ -2797,7 +2797,7 @@ dependencies = [ [[package]] name = "radix-yew-primitive" version = "0.0.2" -source = "git+https://github.com/RustForWeb/radix.git#aa5167ea0c8ae4498e2dc4ef1467fa87c428aa75" +source = "git+https://github.com/RustForWeb/radix.git#872b6810f3647bc1ee4596bf6a8583b588bcd742" dependencies = [ "yew", ] @@ -2805,7 +2805,7 @@ dependencies = [ [[package]] name = "radix-yew-separator" version = "0.0.2" -source = "git+https://github.com/RustForWeb/radix.git#aa5167ea0c8ae4498e2dc4ef1467fa87c428aa75" +source = "git+https://github.com/RustForWeb/radix.git#872b6810f3647bc1ee4596bf6a8583b588bcd742" dependencies = [ "yew", "yew-struct-component", @@ -2815,7 +2815,7 @@ dependencies = [ [[package]] name = "radix-yew-switch" version = "0.0.2" -source = "git+https://github.com/RustForWeb/radix.git#aa5167ea0c8ae4498e2dc4ef1467fa87c428aa75" +source = "git+https://github.com/RustForWeb/radix.git#872b6810f3647bc1ee4596bf6a8583b588bcd742" dependencies = [ "radix-yew-primitive", "radix-yew-use-controllable-state", @@ -2830,7 +2830,7 @@ dependencies = [ [[package]] name = "radix-yew-use-controllable-state" version = "0.0.2" -source = "git+https://github.com/RustForWeb/radix.git#aa5167ea0c8ae4498e2dc4ef1467fa87c428aa75" +source = "git+https://github.com/RustForWeb/radix.git#872b6810f3647bc1ee4596bf6a8583b588bcd742" dependencies = [ "yew", ] @@ -2838,7 +2838,7 @@ dependencies = [ [[package]] name = "radix-yew-use-previous" version = "0.0.2" -source = "git+https://github.com/RustForWeb/radix.git#aa5167ea0c8ae4498e2dc4ef1467fa87c428aa75" +source = "git+https://github.com/RustForWeb/radix.git#872b6810f3647bc1ee4596bf6a8583b588bcd742" dependencies = [ "yew", ] @@ -2846,7 +2846,7 @@ dependencies = [ [[package]] name = "radix-yew-use-size" version = "0.0.2" -source = "git+https://github.com/RustForWeb/radix.git#aa5167ea0c8ae4498e2dc4ef1467fa87c428aa75" +source = "git+https://github.com/RustForWeb/radix.git#872b6810f3647bc1ee4596bf6a8583b588bcd742" dependencies = [ "web-sys", "yew", @@ -2898,7 +2898,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -2941,9 +2941,9 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" -version = "0.12.9" +version = "0.12.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" +checksum = "3d3536321cfc54baa8cf3e273d5e1f63f889067829c4b410fcdbac8ca7b80994" dependencies = [ "async-compression", "base64", @@ -2976,6 +2976,7 @@ dependencies = [ "tokio", "tokio-native-tls", "tokio-util", + "tower", "tower-service", "url", "wasm-bindgen", @@ -3014,7 +3015,7 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 2.0.91", + "syn 2.0.92", "syn_derive", "thiserror 1.0.69", ] @@ -3029,7 +3030,7 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 2.0.91", + "syn 2.0.92", "syn_derive", "thiserror 1.0.69", ] @@ -3106,9 +3107,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" +checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" [[package]] name = "ryu" @@ -3233,7 +3234,7 @@ checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -3293,9 +3294,9 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.11.0" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817" +checksum = "d6b6f7f2fcb69f747921f79f3926bd1e203fce4fef62c268dd3abfb6d86029aa" dependencies = [ "base64", "chrono", @@ -3311,14 +3312,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.11.0" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d" +checksum = "8d00caa5193a3c8362ac2b73be6b9e768aa5a4b2f721d8f4b339600c3cb51f8e" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -3390,7 +3391,7 @@ dependencies = [ "convert_case", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", "xxhash-rust", ] @@ -3404,7 +3405,7 @@ dependencies = [ "convert_case", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", "xxhash-rust", ] @@ -3415,7 +3416,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f2aa8119b558a17992e0ac1fd07f080099564f24532858811ce04f742542440" dependencies = [ "server_fn_macro 0.6.15", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -3425,7 +3426,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a734ef90a83ee9517468b38a017f602a869b382c18e8e8b4118f3f1b88f2856c" dependencies = [ "server_fn_macro 0.7.2", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -3498,6 +3499,7 @@ dependencies = [ "shadcn-ui-leptos-badge", "shadcn-ui-leptos-button", "shadcn-ui-leptos-card", + "shadcn-ui-leptos-input", ] [[package]] @@ -3522,6 +3524,17 @@ dependencies = [ "tailwind_fuse", ] +[[package]] +name = "shadcn-ui-leptos-input" +version = "0.0.1" +dependencies = [ + "leptos 0.7.2", + "leptos-node-ref", + "leptos-style", + "shadcn-ui-leptos-utils", + "tailwind_fuse", +] + [[package]] name = "shadcn-ui-leptos-utils" version = "0.0.1" @@ -3823,9 +3836,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.91" +version = "2.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d53cbcb5a243bd33b7858b1d7f4aca2153490815872d86d955d6ea29f743c035" +checksum = "70ae51629bf965c5c098cc9e87908a3df5301051a9e087d6f9bef5c9771ed126" dependencies = [ "proc-macro2", "quote", @@ -3841,7 +3854,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -3861,7 +3874,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -3936,7 +3949,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -3978,7 +3991,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -3989,7 +4002,7 @@ checksum = "7b50fa271071aae2e6ee85f842e2e28ba8cd2c5fb67f11fcb1fd70b276f9e7d4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -4068,7 +4081,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -4160,6 +4173,27 @@ dependencies = [ "winnow 0.6.20", ] +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + [[package]] name = "tower-service" version = "0.3.3" @@ -4185,7 +4219,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -4229,7 +4263,7 @@ checksum = "1f718dfaf347dcb5b983bfc87608144b0bad87970aebcbea5ce44d2a30c08e63" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -4240,7 +4274,7 @@ checksum = "560b82d656506509d43abe30e0ba64c56b1953ab3d4fe7ba5902747a7a3cedd5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -4387,7 +4421,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", "wasm-bindgen-shared", ] @@ -4422,7 +4456,7 @@ checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -4618,9 +4652,9 @@ checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" [[package]] name = "xxhash-rust" -version = "0.8.13" +version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a08fd76779ae1883bbf1e46c2c46a75a0c4e37c445e68a24b01479d438f26ae6" +checksum = "d7d48f1b18be023c95e7b75f481cac649d74be7c507ff4a407c55cfb957f7934" [[package]] name = "yansi" @@ -4662,7 +4696,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -4690,7 +4724,7 @@ source = "git+https://github.com/RustForWeb/yew.git?branch=feature%2Fuse-compose dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -4711,7 +4745,7 @@ checksum = "584e0ded7475538a621bbf1ebf818cefb38665421faeb6523c110c0822f1c887" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -4744,7 +4778,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", "synstructure", ] @@ -4765,7 +4799,7 @@ checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", "synstructure", ] @@ -4794,5 +4828,5 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] diff --git a/book-examples/leptos/Cargo.toml b/book-examples/leptos/Cargo.toml index d93efac..8e4e6a1 100644 --- a/book-examples/leptos/Cargo.toml +++ b/book-examples/leptos/Cargo.toml @@ -21,6 +21,8 @@ shadcn-ui-leptos-alert = { path = "../../packages/leptos/alert" , optional = tru shadcn-ui-leptos-badge = { path = "../../packages/leptos/badge", optional = true } shadcn-ui-leptos-button = { path = "../../packages/leptos/button", optional = true } shadcn-ui-leptos-card = { path = "../../packages/leptos/card", optional = true } +shadcn-ui-leptos-input = { path = "../../packages/leptos/input", optional = true } + [features] default = [ @@ -28,6 +30,7 @@ default = [ "badge", "button", "card", + "input", ] alert = [ "dep:lucide-leptos", @@ -45,3 +48,7 @@ card = [ "dep:shadcn-ui-leptos-button", "dep:shadcn-ui-leptos-card", ] +input = [ + "dep:shadcn-ui-leptos-button", + "dep:shadcn-ui-leptos-input", +] \ No newline at end of file diff --git a/book-examples/leptos/src/default.rs b/book-examples/leptos/src/default.rs index a3148f2..41131d4 100644 --- a/book-examples/leptos/src/default.rs +++ b/book-examples/leptos/src/default.rs @@ -8,6 +8,8 @@ mod badge; mod button; #[cfg(feature = "card")] mod card; +#[cfg(feature = "input")] +mod input; use leptos::prelude::*; use leptos_router::{ @@ -34,6 +36,10 @@ pub fn Default() -> impl MatchNestedRoutes + Clone { { component_view(self::card::CardRoutes, ()) }, + #[cfg(feature = "input")] + { + component_view(self::input::InputRoutes, ()) + }, ); view! { diff --git a/book-examples/leptos/src/default/components/ui.rs b/book-examples/leptos/src/default/components/ui.rs index a95ce66..4598be8 100644 --- a/book-examples/leptos/src/default/components/ui.rs +++ b/book-examples/leptos/src/default/components/ui.rs @@ -8,3 +8,6 @@ pub use shadcn_ui_leptos_badge::default as badge; pub use shadcn_ui_leptos_button::default as button; #[cfg(feature = "card")] pub use shadcn_ui_leptos_card::default as card; + +#[cfg(feature = "input")] +pub use shadcn_ui_leptos_input::default as input; diff --git a/book-examples/leptos/src/default/input.rs b/book-examples/leptos/src/default/input.rs new file mode 100644 index 0000000..858cdbf --- /dev/null +++ b/book-examples/leptos/src/default/input.rs @@ -0,0 +1,30 @@ +#[allow(clippy::module_inception)] +mod input; +mod input_disabled; +mod input_file; +mod input_form; +mod input_with_button; +mod input_with_label; +mod input_with_text; + +use leptos::prelude::*; +use leptos_router::{ + components::{Outlet, ParentRoute, Route}, + path, MatchNestedRoutes, +}; + +#[component(transparent)] +pub fn InputRoutes() -> impl MatchNestedRoutes + Clone { + view! { + + + + + + + + + + } + .into_inner() +} diff --git a/book-examples/leptos/src/default/input/input.rs b/book-examples/leptos/src/default/input/input.rs new file mode 100644 index 0000000..2a9c842 --- /dev/null +++ b/book-examples/leptos/src/default/input/input.rs @@ -0,0 +1,10 @@ +use leptos::prelude::*; + +use crate::default::components::ui::input::{Input, InputType}; + +#[component] +pub fn InputDemo() -> impl IntoView { + view! { + + } +} diff --git a/book-examples/leptos/src/default/input/input_disabled.rs b/book-examples/leptos/src/default/input/input_disabled.rs new file mode 100644 index 0000000..f5cdbcd --- /dev/null +++ b/book-examples/leptos/src/default/input/input_disabled.rs @@ -0,0 +1,10 @@ +use leptos::prelude::*; + +use crate::default::components::ui::input::{Input, InputType}; + +#[component] +pub fn InputDisabledDemo() -> impl IntoView { + view! { + + } +} diff --git a/book-examples/leptos/src/default/input/input_file.rs b/book-examples/leptos/src/default/input/input_file.rs new file mode 100644 index 0000000..c46160a --- /dev/null +++ b/book-examples/leptos/src/default/input/input_file.rs @@ -0,0 +1,13 @@ +use leptos::prelude::*; + +use crate::default::components::ui::input::{Input, InputType}; + +#[component] +pub fn InputFileDemo() -> impl IntoView { + view! { +
+ + +
+ } +} diff --git a/book-examples/leptos/src/default/input/input_form.rs b/book-examples/leptos/src/default/input/input_form.rs new file mode 100644 index 0000000..58ee1de --- /dev/null +++ b/book-examples/leptos/src/default/input/input_form.rs @@ -0,0 +1,11 @@ +use leptos::prelude::*; + +use crate::default::components::ui::input::{Input, InputType}; + +#[component] +pub fn InputFormDemo() -> impl IntoView { + view! { +

"Input Form needs to be implemented yet"

+ + } +} diff --git a/book-examples/leptos/src/default/input/input_with_button.rs b/book-examples/leptos/src/default/input/input_with_button.rs new file mode 100644 index 0000000..ae50ecd --- /dev/null +++ b/book-examples/leptos/src/default/input/input_with_button.rs @@ -0,0 +1,13 @@ +use leptos::prelude::*; + +use crate::default::components::ui::button::{Button, ButtonVariant}; +use crate::default::components::ui::input::{Input, InputType}; +#[component] +pub fn InputWithButtonDemo() -> impl IntoView { + view! { +
+ + +
+ } +} diff --git a/book-examples/leptos/src/default/input/input_with_label.rs b/book-examples/leptos/src/default/input/input_with_label.rs new file mode 100644 index 0000000..0eacd88 --- /dev/null +++ b/book-examples/leptos/src/default/input/input_with_label.rs @@ -0,0 +1,13 @@ +use leptos::prelude::*; + +use crate::default::components::ui::input::{Input, InputType}; + +#[component] +pub fn InputWithLabelDemo() -> impl IntoView { + view! { +
+ + +
+ } +} diff --git a/book-examples/leptos/src/default/input/input_with_text.rs b/book-examples/leptos/src/default/input/input_with_text.rs new file mode 100644 index 0000000..58a96d9 --- /dev/null +++ b/book-examples/leptos/src/default/input/input_with_text.rs @@ -0,0 +1,14 @@ +use leptos::prelude::*; + +use crate::default::components::ui::input::{Input, InputType}; + +#[component] +pub fn InputWithTextDemo() -> impl IntoView { + view! { +
+ + +

"Enter your email address."

+
+ } +} diff --git a/book-examples/leptos/src/new_york.rs b/book-examples/leptos/src/new_york.rs index 90e0fac..a6fd088 100644 --- a/book-examples/leptos/src/new_york.rs +++ b/book-examples/leptos/src/new_york.rs @@ -8,6 +8,8 @@ mod badge; mod button; #[cfg(feature = "card")] mod card; +#[cfg(feature = "input")] +mod input; use leptos::prelude::*; use leptos_router::{ @@ -34,6 +36,10 @@ pub fn NewYork() -> impl MatchNestedRoutes + Clone { { component_view(self::card::CardRoutes, ()) }, + #[cfg(feature = "input")] + { + component_view(self::input::InputRoutes, ()) + }, ); view! { diff --git a/book-examples/leptos/src/new_york/components/ui.rs b/book-examples/leptos/src/new_york/components/ui.rs index 92b7a22..4ceab19 100644 --- a/book-examples/leptos/src/new_york/components/ui.rs +++ b/book-examples/leptos/src/new_york/components/ui.rs @@ -8,3 +8,6 @@ pub use shadcn_ui_leptos_badge::new_york as badge; pub use shadcn_ui_leptos_button::new_york as button; #[cfg(feature = "card")] pub use shadcn_ui_leptos_card::new_york as card; + +#[cfg(feature = "input")] +pub use shadcn_ui_leptos_input::new_york as input; diff --git a/book-examples/leptos/src/new_york/input.rs b/book-examples/leptos/src/new_york/input.rs new file mode 100644 index 0000000..858cdbf --- /dev/null +++ b/book-examples/leptos/src/new_york/input.rs @@ -0,0 +1,30 @@ +#[allow(clippy::module_inception)] +mod input; +mod input_disabled; +mod input_file; +mod input_form; +mod input_with_button; +mod input_with_label; +mod input_with_text; + +use leptos::prelude::*; +use leptos_router::{ + components::{Outlet, ParentRoute, Route}, + path, MatchNestedRoutes, +}; + +#[component(transparent)] +pub fn InputRoutes() -> impl MatchNestedRoutes + Clone { + view! { + + + + + + + + + + } + .into_inner() +} diff --git a/book-examples/leptos/src/new_york/input/input.rs b/book-examples/leptos/src/new_york/input/input.rs new file mode 100644 index 0000000..f77b8be --- /dev/null +++ b/book-examples/leptos/src/new_york/input/input.rs @@ -0,0 +1,10 @@ +use leptos::prelude::*; + +use crate::new_york::components::ui::input::{Input, InputType}; + +#[component] +pub fn InputDemo() -> impl IntoView { + view! { + + } +} diff --git a/book-examples/leptos/src/new_york/input/input_disabled.rs b/book-examples/leptos/src/new_york/input/input_disabled.rs new file mode 100644 index 0000000..e41e395 --- /dev/null +++ b/book-examples/leptos/src/new_york/input/input_disabled.rs @@ -0,0 +1,10 @@ +use leptos::prelude::*; + +use crate::new_york::components::ui::input::{Input, InputType}; + +#[component] +pub fn InputDisabledDemo() -> impl IntoView { + view! { + + } +} diff --git a/book-examples/leptos/src/new_york/input/input_file.rs b/book-examples/leptos/src/new_york/input/input_file.rs new file mode 100644 index 0000000..dce4a0e --- /dev/null +++ b/book-examples/leptos/src/new_york/input/input_file.rs @@ -0,0 +1,13 @@ +use leptos::prelude::*; + +use crate::new_york::components::ui::input::{Input, InputType}; + +#[component] +pub fn InputFileDemo() -> impl IntoView { + view! { +
+ + +
+ } +} diff --git a/book-examples/leptos/src/new_york/input/input_form.rs b/book-examples/leptos/src/new_york/input/input_form.rs new file mode 100644 index 0000000..16e2f69 --- /dev/null +++ b/book-examples/leptos/src/new_york/input/input_form.rs @@ -0,0 +1,11 @@ +use leptos::prelude::*; + +use crate::new_york::components::ui::input::{Input, InputType}; + +#[component] +pub fn InputFormDemo() -> impl IntoView { + view! { +

"Input Form needs to be implemented yet"

+ + } +} diff --git a/book-examples/leptos/src/new_york/input/input_with_button.rs b/book-examples/leptos/src/new_york/input/input_with_button.rs new file mode 100644 index 0000000..664583e --- /dev/null +++ b/book-examples/leptos/src/new_york/input/input_with_button.rs @@ -0,0 +1,13 @@ +use leptos::prelude::*; + +use crate::new_york::components::ui::button::{Button, ButtonVariant}; +use crate::new_york::components::ui::input::{Input, InputType}; +#[component] +pub fn InputWithButtonDemo() -> impl IntoView { + view! { +
+ + +
+ } +} diff --git a/book-examples/leptos/src/new_york/input/input_with_label.rs b/book-examples/leptos/src/new_york/input/input_with_label.rs new file mode 100644 index 0000000..17a26a4 --- /dev/null +++ b/book-examples/leptos/src/new_york/input/input_with_label.rs @@ -0,0 +1,13 @@ +use leptos::prelude::*; + +use crate::new_york::components::ui::input::{Input, InputType}; + +#[component] +pub fn InputWithLabelDemo() -> impl IntoView { + view! { +
+ + +
+ } +} diff --git a/book-examples/leptos/src/new_york/input/input_with_text.rs b/book-examples/leptos/src/new_york/input/input_with_text.rs new file mode 100644 index 0000000..deb3347 --- /dev/null +++ b/book-examples/leptos/src/new_york/input/input_with_text.rs @@ -0,0 +1,14 @@ +use leptos::prelude::*; + +use crate::new_york::components::ui::input::{Input, InputType}; + +#[component] +pub fn InputWithTextDemo() -> impl IntoView { + view! { +
+ + +

"Enter your email address."

+
+ } +} diff --git a/packages/leptos/input/Cargo.toml b/packages/leptos/input/Cargo.toml new file mode 100644 index 0000000..321e020 --- /dev/null +++ b/packages/leptos/input/Cargo.toml @@ -0,0 +1,18 @@ +[package] +name = "shadcn-ui-leptos-input" +description = "Leptos port of shadcn/ui Input." +homepage = "https://shadcn-ui.rustforweb.org/components/input.html" +publish = false + +authors.workspace = true +edition.workspace = true +license.workspace = true +repository.workspace = true +version.workspace = true + +[dependencies] +tailwind_fuse.workspace = true +leptos.workspace = true +leptos-node-ref.workspace = true +leptos-style.workspace = true +shadcn-ui-leptos-utils = { path = "../utils" } diff --git a/packages/leptos/input/README.md b/packages/leptos/input/README.md new file mode 100644 index 0000000..3624dc1 --- /dev/null +++ b/packages/leptos/input/README.md @@ -0,0 +1,21 @@ +

+ + Rust shadcn/ui Logo + +

+ +

shadcn-ui-leptos-input

+ +Displays a form input field or a component that looks like an input field. + +[Rust shadcn/ui](https://github.com/RustForWeb/shadcn-ui) is a Rust port of [shadcn/ui](https://ui.shadcn.com/). + +## Documentation + +See [the Rust shadcn/ui book](https://shadcn-ui.rustforweb.org/) for documentation. + +## Rust For Web + +The Rust shadcn/ui project is part of the [Rust For Web](https://github.com/RustForWeb). + +[Rust For Web](https://github.com/RustForWeb) creates and ports web UI libraries for Rust. All projects are free and open source. diff --git a/packages/leptos/input/src/default.rs b/packages/leptos/input/src/default.rs new file mode 100644 index 0000000..c11e05d --- /dev/null +++ b/packages/leptos/input/src/default.rs @@ -0,0 +1,92 @@ +use leptos::{ev::Event, ev::FocusEvent, prelude::*}; +use leptos_node_ref::AnyNodeRef; +use leptos_style::Style; +use shadcn_ui_leptos_utils::handlers::*; +use tailwind_fuse::*; + +#[derive(Default, Clone)] +pub enum InputType { + #[default] + Text, + Password, + Search, + Tel, + Url, + Email, + Time, + Date, + DatetimeLocal, + Month, + Week, + File, +} + +impl InputType { + pub fn as_str(&self) -> &'static str { + match self { + Self::Text => "text", + Self::Password => "password", + Self::Search => "search", + Self::Tel => "tel", + Self::Url => "url", + Self::Email => "email", + Self::Time => "time", + Self::Date => "date", + Self::DatetimeLocal => "datetime-local", + Self::Month => "month", + Self::Week => "week", + Self::File => "file", + } + } +} + +#[component] +pub fn Input( + // Node reference + #[prop(into, optional)] node_ref: AnyNodeRef, + + #[prop(into, optional)] class: MaybeProp, + #[prop(into, optional)] id: MaybeProp, + #[prop(into, optional)] style: Signal