From 0b3700a701e840d84cc8d5989b0d9356ad2ffbcf Mon Sep 17 00:00:00 2001 From: Peter Hanssens Date: Tue, 2 Sep 2025 23:32:09 +1000 Subject: [PATCH] Restructure as single main package: leptos-shadcn-ui with all 25 components --- Cargo.lock | 579 ++++++++++++++++++++++----- Cargo.toml | 1 + README.md | 53 ++- packages/leptos-shadcn-ui/Cargo.toml | 87 ++++ packages/leptos-shadcn-ui/src/lib.rs | 187 +++++++++ scripts/publish_main.sh | 58 +++ scripts/publish_release.sh | 21 + 7 files changed, 873 insertions(+), 113 deletions(-) create mode 100644 packages/leptos-shadcn-ui/Cargo.toml create mode 100644 packages/leptos-shadcn-ui/src/lib.rs create mode 100755 scripts/publish_main.sh diff --git a/Cargo.lock b/Cargo.lock index 45e3aa6..3fed550 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -91,6 +91,17 @@ dependencies = [ "windows-sys 0.60.2", ] +[[package]] +name = "any_spawner" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41058deaa38c9d9dd933d6d238d825227cffa668e2839b52879f6619c63eee3b" +dependencies = [ + "futures", + "thiserror 2.0.16", + "wasm-bindgen-futures", +] + [[package]] name = "any_spawner" version = "0.3.0" @@ -407,6 +418,15 @@ dependencies = [ "unicode-segmentation", ] +[[package]] +name = "convert_case" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb402b8d4c85569410425650ce3eddc7d698ed96d39a73f941b08fb63082f1e7" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "convert_case" version = "0.8.0" @@ -605,7 +625,7 @@ dependencies = [ "console_log", "gloo-timers", "js-sys", - "leptos", + "leptos 0.8.8", "leptos-shadcn-accordion", "leptos-shadcn-alert", "leptos-shadcn-badge", @@ -631,7 +651,7 @@ dependencies = [ "leptos-shadcn-tooltip", "leptos_router", "log", - "lucide-leptos", + "lucide-leptos 2.32.0", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -964,6 +984,20 @@ dependencies = [ "itoa", ] +[[package]] +name = "hydration_context" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d35485b3dcbf7e044b8f28c73f04f13e7b509c2466fd10cb2a8a447e38f8a93a" +dependencies = [ + "futures", + "once_cell", + "or_poisoned", + "pin-project-lite", + "serde", + "throw_error 0.2.0", +] + [[package]] name = "hydration_context" version = "0.3.0" @@ -976,7 +1010,7 @@ dependencies = [ "or_poisoned", "pin-project-lite", "serde", - "throw_error", + "throw_error 0.3.0", "wasm-bindgen", ] @@ -1226,40 +1260,75 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +[[package]] +name = "leptos" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b8731cb00f3f0894058155410b95c8955b17273181d2bc72600ab84edd24f1" +dependencies = [ + "any_spawner 0.2.0", + "cfg-if", + "either_of", + "futures", + "hydration_context 0.2.1", + "leptos_config 0.7.8", + "leptos_dom 0.7.8", + "leptos_hot_reload 0.7.8", + "leptos_macro 0.7.9", + "leptos_server 0.7.8", + "oco_ref", + "or_poisoned", + "paste", + "reactive_graph 0.1.8", + "rustc-hash", + "send_wrapper", + "serde", + "serde_qs 0.13.0", + "server_fn 0.7.8", + "slotmap", + "tachys 0.1.9", + "thiserror 2.0.16", + "throw_error 0.2.0", + "typed-builder 0.20.1", + "typed-builder-macro 0.20.1", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "leptos" version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7a8710b4908a0e7b693113b906e4cf1bc87123b685404d090cdcd3e220bcab4" dependencies = [ - "any_spawner", + "any_spawner 0.3.0", "cfg-if", "either_of", "futures", "getrandom", - "hydration_context", - "leptos_config", - "leptos_dom", - "leptos_hot_reload", - "leptos_macro", - "leptos_server", + "hydration_context 0.3.0", + "leptos_config 0.8.7", + "leptos_dom 0.8.6", + "leptos_hot_reload 0.8.5", + "leptos_macro 0.8.8", + "leptos_server 0.8.5", "oco_ref", "or_poisoned", "paste", - "reactive_graph", + "reactive_graph 0.2.6", "rustc-hash", "rustc_version", "send_wrapper", "serde", "serde_json", - "serde_qs", - "server_fn", + "serde_qs 0.15.0", + "server_fn 0.8.6", "slotmap", - "tachys", + "tachys 0.2.7", "thiserror 2.0.16", - "throw_error", - "typed-builder", - "typed-builder-macro", + "throw_error 0.3.0", + "typed-builder 0.21.2", + "typed-builder-macro 0.21.2", "wasm-bindgen", "wasm-bindgen-futures", "wasm_split_helpers", @@ -1272,7 +1341,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4f57b1ebc451fe9e7b6c7eba680fa8bc7313b410cc6c0f18481cb55a60ff3ac6" dependencies = [ - "leptos", + "leptos 0.8.8", "send_wrapper", ] @@ -1280,7 +1349,7 @@ dependencies = [ name = "leptos-shadcn-accordion" version = "0.1.0" dependencies = [ - "leptos", + "leptos 0.8.8", "leptos-node-ref", "leptos-struct-component", "leptos-style", @@ -1294,7 +1363,7 @@ dependencies = [ name = "leptos-shadcn-alert" version = "0.1.0" dependencies = [ - "leptos", + "leptos 0.8.8", "leptos-node-ref", "leptos-struct-component", "leptos-style", @@ -1308,7 +1377,7 @@ dependencies = [ name = "leptos-shadcn-alert-dialog" version = "0.1.0" dependencies = [ - "leptos", + "leptos 0.8.8", "leptos-node-ref", "leptos-struct-component", "leptos-style", @@ -1323,7 +1392,7 @@ dependencies = [ name = "leptos-shadcn-aspect-ratio" version = "0.1.0" dependencies = [ - "leptos", + "leptos 0.8.8", "leptos-node-ref", "leptos-struct-component", "leptos-style", @@ -1336,7 +1405,7 @@ dependencies = [ name = "leptos-shadcn-badge" version = "0.1.0" dependencies = [ - "leptos", + "leptos 0.8.8", "leptos-node-ref", "leptos-struct-component", "leptos-style", @@ -1350,7 +1419,7 @@ dependencies = [ name = "leptos-shadcn-breadcrumb" version = "0.0.0" dependencies = [ - "leptos", + "leptos 0.8.8", "serde", "shadcn-ui-test-utils", "tailwind_fuse 0.3.2", @@ -1361,7 +1430,7 @@ dependencies = [ name = "leptos-shadcn-button" version = "0.1.0" dependencies = [ - "leptos", + "leptos 0.8.8", "leptos-node-ref", "leptos-struct-component", "leptos-style", @@ -1376,11 +1445,11 @@ name = "leptos-shadcn-calendar" version = "0.1.0" dependencies = [ "js-sys", - "leptos", + "leptos 0.8.8", "leptos-node-ref", "leptos-struct-component", "leptos-style", - "lucide-leptos", + "lucide-leptos 2.32.0", "shadcn-ui-test-utils", "tailwind_fuse 0.3.2", "wasm-bindgen-test", @@ -1391,7 +1460,7 @@ dependencies = [ name = "leptos-shadcn-card" version = "0.1.0" dependencies = [ - "leptos", + "leptos 0.8.8", "leptos-node-ref", "leptos-struct-component", "leptos-style", @@ -1405,7 +1474,7 @@ dependencies = [ name = "leptos-shadcn-carousel" version = "0.1.0" dependencies = [ - "leptos", + "leptos 0.8.8", "leptos-node-ref", "leptos-struct-component", "leptos-style", @@ -1419,7 +1488,7 @@ dependencies = [ name = "leptos-shadcn-checkbox" version = "0.1.0" dependencies = [ - "leptos", + "leptos 0.8.8", "leptos-node-ref", "leptos-struct-component", "leptos-style", @@ -1433,7 +1502,7 @@ dependencies = [ name = "leptos-shadcn-collapsible" version = "0.1.0" dependencies = [ - "leptos", + "leptos 0.8.8", "leptos-node-ref", "leptos-struct-component", "leptos-style", @@ -1448,7 +1517,7 @@ name = "leptos-shadcn-combobox" version = "0.0.0" dependencies = [ "gloo-timers", - "leptos", + "leptos 0.8.8", "leptos-struct-component", "leptos-style", "shadcn-ui-test-utils", @@ -1462,7 +1531,7 @@ dependencies = [ name = "leptos-shadcn-command" version = "0.0.0" dependencies = [ - "leptos", + "leptos 0.8.8", "serde", "shadcn-ui-test-utils", "tailwind_fuse 0.3.2", @@ -1474,7 +1543,7 @@ dependencies = [ name = "leptos-shadcn-context-menu" version = "0.1.0" dependencies = [ - "leptos", + "leptos 0.8.8", "leptos-node-ref", "leptos-struct-component", "leptos-style", @@ -1490,14 +1559,14 @@ name = "leptos-shadcn-date-picker" version = "0.1.0" dependencies = [ "js-sys", - "leptos", + "leptos 0.8.8", "leptos-node-ref", "leptos-shadcn-button", "leptos-shadcn-calendar", "leptos-shadcn-popover", "leptos-struct-component", "leptos-style", - "lucide-leptos", + "lucide-leptos 2.32.0", "shadcn-ui-test-utils", "tailwind_fuse 0.3.2", "wasm-bindgen-test", @@ -1508,7 +1577,7 @@ dependencies = [ name = "leptos-shadcn-dialog" version = "0.1.0" dependencies = [ - "leptos", + "leptos 0.8.8", "leptos-node-ref", "leptos-struct-component", "leptos-style", @@ -1522,7 +1591,7 @@ dependencies = [ name = "leptos-shadcn-drawer" version = "0.1.0" dependencies = [ - "leptos", + "leptos 0.8.8", "leptos-node-ref", "leptos-struct-component", "leptos-style", @@ -1537,7 +1606,7 @@ dependencies = [ name = "leptos-shadcn-dropdown-menu" version = "0.1.0" dependencies = [ - "leptos", + "leptos 0.8.8", "leptos-node-ref", "leptos-struct-component", "leptos-style", @@ -1551,7 +1620,7 @@ dependencies = [ name = "leptos-shadcn-error-boundary" version = "0.0.0" dependencies = [ - "leptos", + "leptos 0.8.8", "log", "shadcn-ui-test-utils", "wasm-bindgen-test", @@ -1563,7 +1632,7 @@ name = "leptos-shadcn-form" version = "0.0.0" dependencies = [ "gloo-timers", - "leptos", + "leptos 0.8.8", "leptos-shadcn-button", "leptos-shadcn-input", "leptos-struct-component", @@ -1579,7 +1648,7 @@ dependencies = [ name = "leptos-shadcn-hover-card" version = "0.1.0" dependencies = [ - "leptos", + "leptos 0.8.8", "leptos-node-ref", "leptos-struct-component", "leptos-style", @@ -1593,7 +1662,7 @@ dependencies = [ name = "leptos-shadcn-input" version = "0.1.0" dependencies = [ - "leptos", + "leptos 0.8.8", "leptos-node-ref", "leptos-struct-component", "leptos-style", @@ -1607,7 +1676,7 @@ dependencies = [ name = "leptos-shadcn-input-otp" version = "0.0.0" dependencies = [ - "leptos", + "leptos 0.8.8", "serde", "shadcn-ui-test-utils", "tailwind_fuse 0.3.2", @@ -1620,7 +1689,7 @@ dependencies = [ name = "leptos-shadcn-label" version = "0.1.0" dependencies = [ - "leptos", + "leptos 0.8.8", "leptos-node-ref", "leptos-struct-component", "leptos-style", @@ -1634,14 +1703,14 @@ dependencies = [ name = "leptos-shadcn-lazy-loading" version = "0.0.0" dependencies = [ - "leptos", + "leptos 0.8.8", ] [[package]] name = "leptos-shadcn-menubar" version = "0.1.0" dependencies = [ - "leptos", + "leptos 0.8.8", "leptos-node-ref", "leptos-struct-component", "leptos-style", @@ -1655,7 +1724,7 @@ dependencies = [ name = "leptos-shadcn-navigation-menu" version = "0.1.0" dependencies = [ - "leptos", + "leptos 0.8.8", "leptos-node-ref", "leptos-struct-component", "leptos-style", @@ -1669,12 +1738,12 @@ dependencies = [ name = "leptos-shadcn-pagination" version = "0.1.0" dependencies = [ - "leptos", + "leptos 0.8.8", "leptos-node-ref", "leptos-shadcn-button", "leptos-struct-component", "leptos-style", - "lucide-leptos", + "lucide-leptos 2.32.0", "shadcn-ui-test-utils", "tailwind_fuse 0.3.2", "wasm-bindgen-test", @@ -1685,7 +1754,7 @@ dependencies = [ name = "leptos-shadcn-popover" version = "0.1.0" dependencies = [ - "leptos", + "leptos 0.8.8", "leptos-node-ref", "leptos-struct-component", "leptos-style", @@ -1699,7 +1768,7 @@ dependencies = [ name = "leptos-shadcn-progress" version = "0.1.0" dependencies = [ - "leptos", + "leptos 0.8.8", "leptos-node-ref", "leptos-struct-component", "leptos-style", @@ -1713,7 +1782,7 @@ dependencies = [ name = "leptos-shadcn-radio-group" version = "0.1.0" dependencies = [ - "leptos", + "leptos 0.8.8", "leptos-node-ref", "leptos-struct-component", "leptos-style", @@ -1726,14 +1795,14 @@ dependencies = [ name = "leptos-shadcn-registry" version = "0.0.0" dependencies = [ - "leptos", + "leptos 0.8.8", ] [[package]] name = "leptos-shadcn-scroll-area" version = "0.1.0" dependencies = [ - "leptos", + "leptos 0.8.8", "leptos-node-ref", "leptos-struct-component", "leptos-style", @@ -1747,7 +1816,7 @@ dependencies = [ name = "leptos-shadcn-select" version = "0.1.0" dependencies = [ - "leptos", + "leptos 0.8.8", "leptos-node-ref", "leptos-struct-component", "leptos-style", @@ -1761,7 +1830,7 @@ dependencies = [ name = "leptos-shadcn-separator" version = "0.1.0" dependencies = [ - "leptos", + "leptos 0.8.8", "leptos-node-ref", "leptos-struct-component", "leptos-style", @@ -1775,7 +1844,7 @@ dependencies = [ name = "leptos-shadcn-sheet" version = "0.1.0" dependencies = [ - "leptos", + "leptos 0.8.8", "leptos-node-ref", "leptos-struct-component", "leptos-style", @@ -1789,7 +1858,7 @@ dependencies = [ name = "leptos-shadcn-skeleton" version = "0.1.0" dependencies = [ - "leptos", + "leptos 0.8.8", "leptos-node-ref", "leptos-struct-component", "leptos-style", @@ -1803,7 +1872,7 @@ dependencies = [ name = "leptos-shadcn-slider" version = "0.1.0" dependencies = [ - "leptos", + "leptos 0.8.8", "leptos-node-ref", "leptos-struct-component", "leptos-style", @@ -1817,7 +1886,7 @@ dependencies = [ name = "leptos-shadcn-switch" version = "0.1.0" dependencies = [ - "leptos", + "leptos 0.8.8", "leptos-node-ref", "leptos-struct-component", "leptos-style", @@ -1831,7 +1900,7 @@ dependencies = [ name = "leptos-shadcn-table" version = "0.1.0" dependencies = [ - "leptos", + "leptos 0.8.8", "leptos-node-ref", "leptos-struct-component", "leptos-style", @@ -1845,7 +1914,7 @@ dependencies = [ name = "leptos-shadcn-tabs" version = "0.1.0" dependencies = [ - "leptos", + "leptos 0.8.8", "leptos-node-ref", "leptos-struct-component", "leptos-style", @@ -1859,7 +1928,7 @@ dependencies = [ name = "leptos-shadcn-textarea" version = "0.1.0" dependencies = [ - "leptos", + "leptos 0.8.8", "leptos-node-ref", "leptos-struct-component", "leptos-style", @@ -1873,7 +1942,7 @@ dependencies = [ name = "leptos-shadcn-toast" version = "0.1.0" dependencies = [ - "leptos", + "leptos 0.8.8", "leptos-node-ref", "leptos-struct-component", "leptos-style", @@ -1887,7 +1956,7 @@ dependencies = [ name = "leptos-shadcn-toggle" version = "0.1.0" dependencies = [ - "leptos", + "leptos 0.8.8", "leptos-node-ref", "leptos-struct-component", "leptos-style", @@ -1901,7 +1970,7 @@ dependencies = [ name = "leptos-shadcn-tooltip" version = "0.1.0" dependencies = [ - "leptos", + "leptos 0.8.8", "leptos-node-ref", "leptos-struct-component", "leptos-style", @@ -1911,6 +1980,46 @@ dependencies = [ "web-sys", ] +[[package]] +name = "leptos-shadcn-ui" +version = "0.1.0" +dependencies = [ + "gloo-timers", + "leptos 0.8.8", + "leptos-node-ref", + "leptos-shadcn-accordion", + "leptos-shadcn-alert", + "leptos-shadcn-badge", + "leptos-shadcn-button", + "leptos-shadcn-calendar", + "leptos-shadcn-card", + "leptos-shadcn-checkbox", + "leptos-shadcn-date-picker", + "leptos-shadcn-dialog", + "leptos-shadcn-input", + "leptos-shadcn-label", + "leptos-shadcn-pagination", + "leptos-shadcn-popover", + "leptos-shadcn-progress", + "leptos-shadcn-radio-group", + "leptos-shadcn-select", + "leptos-shadcn-separator", + "leptos-shadcn-skeleton", + "leptos-shadcn-slider", + "leptos-shadcn-switch", + "leptos-shadcn-table", + "leptos-shadcn-tabs", + "leptos-shadcn-textarea", + "leptos-shadcn-toast", + "leptos-shadcn-toggle", + "leptos-shadcn-tooltip", + "leptos-struct-component", + "leptos-style", + "leptos_router", + "lucide-leptos 0.1.3", + "tailwind_fuse 0.3.2", +] + [[package]] name = "leptos-shadcn-utils" version = "0.1.0" @@ -1926,7 +2035,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c32085b37b67e61e69e0949d94e36c40e4fde83867681cbb884f9cd40a43881e" dependencies = [ - "leptos", + "leptos 0.8.8", "leptos-struct-component-macro", ] @@ -1948,7 +2057,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c65408961a0bd8e70f317de8973d532a0cb9ffbac910c488d97f9c5a2e4411e2" dependencies = [ "indexmap 2.11.0", - "leptos", + "leptos 0.8.8", +] + +[[package]] +name = "leptos_config" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bae3e0ead5a7a814c8340eef7cb8b6cba364125bd8174b15dc9fe1b3cab7e03" +dependencies = [ + "config", + "regex", + "serde", + "thiserror 2.0.16", + "typed-builder 0.20.1", ] [[package]] @@ -1961,7 +2083,22 @@ dependencies = [ "regex", "serde", "thiserror 2.0.16", - "typed-builder", + "typed-builder 0.21.2", +] + +[[package]] +name = "leptos_dom" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f89d4eb263bd5a9e7c49f780f17063f15aca56fd638c90b9dfd5f4739152e87d" +dependencies = [ + "js-sys", + "or_poisoned", + "reactive_graph 0.1.8", + "send_wrapper", + "tachys 0.1.9", + "wasm-bindgen", + "web-sys", ] [[package]] @@ -1972,13 +2109,31 @@ checksum = "4e920c8b2fd202b25786b0c72a00c745a6962fa923e600df6f3ec352d844be91" dependencies = [ "js-sys", "or_poisoned", - "reactive_graph", + "reactive_graph 0.2.6", "send_wrapper", - "tachys", + "tachys 0.2.7", "wasm-bindgen", "web-sys", ] +[[package]] +name = "leptos_hot_reload" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e80219388501d99b246f43b6e7d08a28f327cdd34ba630a35654d917f3e1788e" +dependencies = [ + "anyhow", + "camino", + "indexmap 2.11.0", + "parking_lot", + "proc-macro2", + "quote", + "rstml", + "serde", + "syn 2.0.106", + "walkdir", +] + [[package]] name = "leptos_hot_reload" version = "0.8.5" @@ -1997,6 +2152,28 @@ dependencies = [ "walkdir", ] +[[package]] +name = "leptos_macro" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e621f8f5342b9bdc93bb263b839cee7405027a74560425a2dabea9de7952b1fd" +dependencies = [ + "attribute-derive", + "cfg-if", + "convert_case 0.7.1", + "html-escape", + "itertools", + "leptos_hot_reload 0.7.8", + "prettyplease", + "proc-macro-error2", + "proc-macro2", + "quote", + "rstml", + "server_fn_macro 0.7.8", + "syn 2.0.106", + "uuid", +] + [[package]] name = "leptos_macro" version = "0.8.8" @@ -2008,14 +2185,14 @@ dependencies = [ "convert_case 0.8.0", "html-escape", "itertools", - "leptos_hot_reload", + "leptos_hot_reload 0.8.5", "prettyplease", "proc-macro-error2", "proc-macro2", "quote", "rstml", "rustc_version", - "server_fn_macro", + "server_fn_macro 0.8.7", "syn 2.0.106", "uuid", ] @@ -2026,18 +2203,18 @@ version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f13e0e0a70f40e4717da84415f6f1002091146ef247246b6a447d76947ab2e30" dependencies = [ - "any_spawner", + "any_spawner 0.3.0", "either_of", "futures", "gloo-net", "js-sys", - "leptos", + "leptos 0.8.8", "leptos_router_macro", "or_poisoned", - "reactive_graph", + "reactive_graph 0.2.6", "rustc_version", "send_wrapper", - "tachys", + "tachys 0.2.7", "thiserror 2.0.16", "url", "wasm-bindgen", @@ -2056,24 +2233,44 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "leptos_server" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66985242812ec95e224fb48effe651ba02728beca92c461a9464c811a71aab11" +dependencies = [ + "any_spawner 0.2.0", + "base64", + "codee", + "futures", + "hydration_context 0.2.1", + "or_poisoned", + "reactive_graph 0.1.8", + "send_wrapper", + "serde", + "serde_json", + "server_fn 0.7.8", + "tachys 0.1.9", +] + [[package]] name = "leptos_server" version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38acbf32649a4b127c8d4ccaed8fb388e19a746430a0ea8f8160e51e28c36e2d" dependencies = [ - "any_spawner", + "any_spawner 0.3.0", "base64", "codee", "futures", - "hydration_context", + "hydration_context 0.3.0", "or_poisoned", - "reactive_graph", + "reactive_graph 0.2.6", "send_wrapper", "serde", "serde_json", - "server_fn", - "tachys", + "server_fn 0.8.6", + "tachys 0.2.7", ] [[package]] @@ -2110,13 +2307,22 @@ version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +[[package]] +name = "lucide-leptos" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e65119bce4da1124aefda9d0d4d08603ead0a226252f66cf6a4f65d607e86e75" +dependencies = [ + "leptos 0.7.8", +] + [[package]] name = "lucide-leptos" version = "2.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c735ef463d6c3c04ae13004b810d0fd63241dfd3a982f63508b5cfeb4bfb02ff" dependencies = [ - "leptos", + "leptos 0.8.8", ] [[package]] @@ -2538,17 +2744,38 @@ version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" +[[package]] +name = "reactive_graph" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a0ccddbc11a648bd09761801dac9e3f246ef7641130987d6120fced22515e6" +dependencies = [ + "any_spawner 0.2.0", + "async-lock", + "futures", + "guardian", + "hydration_context 0.2.1", + "or_poisoned", + "pin-project-lite", + "rustc-hash", + "send_wrapper", + "serde", + "slotmap", + "thiserror 2.0.16", + "web-sys", +] + [[package]] name = "reactive_graph" version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "27e4f808d01701256dc220e398d518684781bcd1b3b1a6c1c107fd41374f0624" dependencies = [ - "any_spawner", + "any_spawner 0.3.0", "async-lock", "futures", "guardian", - "hydration_context", + "hydration_context 0.3.0", "indexmap 2.11.0", "or_poisoned", "pin-project-lite", @@ -2561,6 +2788,21 @@ dependencies = [ "web-sys", ] +[[package]] +name = "reactive_stores" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aadc7c19e3a360bf19cd595d2dc8b58ce67b9240b95a103fbc1317a8ff194237" +dependencies = [ + "guardian", + "itertools", + "or_poisoned", + "paste", + "reactive_graph 0.1.8", + "reactive_stores_macro 0.1.8", + "rustc-hash", +] + [[package]] name = "reactive_stores" version = "0.2.5" @@ -2572,12 +2814,25 @@ dependencies = [ "itertools", "or_poisoned", "paste", - "reactive_graph", - "reactive_stores_macro", + "reactive_graph 0.2.6", + "reactive_stores_macro 0.2.6", "rustc-hash", "send_wrapper", ] +[[package]] +name = "reactive_stores_macro" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "221095cb028dc51fbc2833743ea8b1a585da1a2af19b440b3528027495bf1f2d" +dependencies = [ + "convert_case 0.7.1", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "reactive_stores_macro" version = "0.2.6" @@ -2798,6 +3053,17 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_qs" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd34f36fe4c5ba9654417139a9b3a20d2e1de6012ee678ad14d240c22c78d8d6" +dependencies = [ + "percent-encoding", + "serde", + "thiserror 1.0.69", +] + [[package]] name = "serde_qs" version = "0.15.0" @@ -2850,6 +3116,36 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "server_fn" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d05a9e3fd8d7404985418db38c6617cc793a1a27f398d4fbc9dfe8e41b804e6" +dependencies = [ + "bytes", + "const_format", + "dashmap", + "futures", + "gloo-net", + "http", + "js-sys", + "once_cell", + "pin-project-lite", + "send_wrapper", + "serde", + "serde_json", + "serde_qs 0.13.0", + "server_fn_macro_default 0.7.8", + "thiserror 2.0.16", + "throw_error 0.2.0", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + "xxhash-rust", +] + [[package]] name = "server_fn" version = "0.8.6" @@ -2872,10 +3168,10 @@ dependencies = [ "send_wrapper", "serde", "serde_json", - "serde_qs", - "server_fn_macro_default", + "serde_qs 0.15.0", + "server_fn_macro_default 0.8.5", "thiserror 2.0.16", - "throw_error", + "throw_error 0.3.0", "url", "wasm-bindgen", "wasm-bindgen-futures", @@ -2884,6 +3180,20 @@ dependencies = [ "xxhash-rust", ] +[[package]] +name = "server_fn_macro" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "504b35e883267b3206317b46d02952ed7b8bf0e11b2e209e2eb453b609a5e052" +dependencies = [ + "const_format", + "convert_case 0.6.0", + "proc-macro2", + "quote", + "syn 2.0.106", + "xxhash-rust", +] + [[package]] name = "server_fn_macro" version = "0.8.7" @@ -2899,13 +3209,23 @@ dependencies = [ "xxhash-rust", ] +[[package]] +name = "server_fn_macro_default" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb8b274f568c94226a8045668554aace8142a59b8bca5414ac5a79627c825568" +dependencies = [ + "server_fn_macro 0.7.8", + "syn 2.0.106", +] + [[package]] name = "server_fn_macro_default" version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63eb08f80db903d3c42f64e60ebb3875e0305be502bdc064ec0a0eab42207f00" dependencies = [ - "server_fn_macro", + "server_fn_macro 0.8.7", "syn 2.0.106", ] @@ -2960,7 +3280,7 @@ version = "0.1.0" dependencies = [ "console_error_panic_hook", "js-sys", - "leptos", + "leptos 0.8.8", "serde", "serde_json", "wasm-bindgen-test", @@ -3103,13 +3423,47 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "tachys" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f66c3b70c32844a6f1e2943c72a33ebb777ad6acbeb20d1329d62e3a7806d6ec" +dependencies = [ + "any_spawner 0.2.0", + "async-trait", + "const_str_slice_concat", + "drain_filter_polyfill", + "dyn-clone", + "either_of", + "futures", + "html-escape", + "indexmap 2.11.0", + "itertools", + "js-sys", + "linear-map", + "next_tuple", + "oco_ref", + "once_cell", + "or_poisoned", + "parking_lot", + "paste", + "reactive_graph 0.1.8", + "reactive_stores 0.1.8", + "rustc-hash", + "send_wrapper", + "slotmap", + "throw_error 0.2.0", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "tachys" version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dacbb26ffb2bbe6743702ee27c3e994c0caae86c92137278de9a9d92d383765c" dependencies = [ - "any_spawner", + "any_spawner 0.3.0", "async-trait", "const_str_slice_concat", "drain_filter_polyfill", @@ -3126,13 +3480,13 @@ dependencies = [ "or_poisoned", "parking_lot", "paste", - "reactive_graph", - "reactive_stores", + "reactive_graph 0.2.6", + "reactive_stores 0.2.5", "rustc-hash", "rustc_version", "send_wrapper", "slotmap", - "throw_error", + "throw_error 0.3.0", "wasm-bindgen", "web-sys", ] @@ -3208,6 +3562,15 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "throw_error" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4ef8bf264c6ae02a065a4a16553283f0656bd6266fc1fcb09fd2e6b5e91427b" +dependencies = [ + "pin-project-lite", +] + [[package]] name = "throw_error" version = "0.3.0" @@ -3319,13 +3682,33 @@ dependencies = [ "winnow", ] +[[package]] +name = "typed-builder" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd9d30e3a08026c78f246b173243cf07b3696d274debd26680773b6773c2afc7" +dependencies = [ + "typed-builder-macro 0.20.1", +] + [[package]] name = "typed-builder" version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fef81aec2ca29576f9f6ae8755108640d0a86dd3161b2e8bca6cfa554e98f77d" dependencies = [ - "typed-builder-macro", + "typed-builder-macro 0.21.2", +] + +[[package]] +name = "typed-builder-macro" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c36781cc0e46a83726d9879608e4cf6c2505237e263a8eb8c24502989cfdb28" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index df1c54a..eba8d80 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,6 +12,7 @@ [workspace] resolver = "2" members = [ + "packages/leptos-shadcn-ui", "packages/leptos/accordion", "packages/leptos/alert", "packages/leptos/alert-dialog", diff --git a/README.md b/README.md index f6f516b..0bb82ed 100644 --- a/README.md +++ b/README.md @@ -28,8 +28,8 @@ A comprehensive collection of beautiful, accessible UI components built for [Lep ## 📦 Available Components -### ✅ **Ready for Release (25 Components)** -These components are fully tested and ready for production use: +### ✅ **All 25 Components Ready for Release!** +The main `leptos-shadcn-ui` package contains all these components and is ready for production use: #### **Form Components** - **Button** - Multiple variants (default, destructive, outline, secondary, ghost, link) and sizes @@ -65,11 +65,11 @@ These components are fully tested and ready for production use: - **Slider** - Range slider input - **Toggle** - Toggle button component -### 🚧 **In Development (27 Components)** -These components are being updated for Leptos 0.8 compatibility: +### 🚧 **Future Components (27 More)** +Advanced components are being updated for Leptos 0.8 compatibility and will be added to future releases: - Form, Combobox, Command, Input OTP, Breadcrumb, Navigation Menu, Context Menu, Dropdown Menu, Menubar, Scroll Area, Aspect Ratio, Collapsible, Sheet, Drawer, Hover Card, Alert Dialog, Carousel, and more... -**Note**: We're releasing the stable components first to get them into users' hands immediately, while continuing development on the advanced components. +**Note**: All 25 current components are fully tested and working with Leptos v0.8.8! ## 🙏 Acknowledgments @@ -95,25 +95,48 @@ leptos = "0.8.0" # Must be 0.8.0 or higher leptos_router = "0.8.0" # Must be 0.8.0 or higher ``` -### 2. Add Components to your `Cargo.toml` +### 2. Add the Main Package to your `Cargo.toml` ```toml [dependencies] -leptos-shadcn-button = { path = "path/to/leptos-shadcn-ui/packages/leptos/button" } -leptos-shadcn-input = { path = "path/to/leptos-shadcn-ui/packages/leptos/input" } -leptos-shadcn-card = { path = "path/to/leptos-shadcn-ui/packages/leptos/card" } -leptos-shadcn-alert = { path = "path/to/leptos-shadcn-ui/packages/leptos/alert" } -leptos-shadcn-label = { path = "path/to/leptos-shadcn-ui/packages/leptos/label" } -leptos-shadcn-separator = { path = "path/to/leptos-shadcn-ui/packages/leptos/separator" } +leptos-shadcn-ui = { path = "path/to/leptos-shadcn-ui/packages/leptos-shadcn-ui" } ``` +**Or from crates.io (after release):** +```toml +[dependencies] +leptos-shadcn-ui = "0.1.0" +``` + +### 3. Choose Your Components + +**All Components (Default):** +```toml +leptos-shadcn-ui = "0.1.0" +# or +leptos-shadcn-ui = { version = "0.1.0", features = ["all-components"] } +``` + +**Specific Components Only:** +```toml +leptos-shadcn-ui = { version = "0.1.0", features = ["button", "input", "card"] } +``` + +**Available Features:** +- `button`, `input`, `label`, `checkbox`, `switch`, `radio-group`, `select`, `textarea` +- `card`, `separator`, `tabs`, `accordion`, `dialog`, `popover`, `tooltip` +- `alert`, `badge`, `skeleton`, `progress`, `toast`, `table`, `calendar`, `date-picker`, `pagination` +- `slider`, `toggle` + ### 2. Import and use in your Leptos components ```rust use leptos::*; -use leptos_shadcn_button::{Button, ButtonVariant, ButtonSize}; -use leptos_shadcn_input::Input; -use leptos_shadcn_card::{Card, CardHeader, CardTitle, CardContent}; +use leptos_shadcn_ui::{Button, ButtonVariant, ButtonSize, Input, Card, CardHeader, CardTitle, CardContent}; + +// Or use the prelude for common components: +// use leptos_shadcn_ui::prelude::*; +``` #[component] pub fn MyComponent() -> impl IntoView { diff --git a/packages/leptos-shadcn-ui/Cargo.toml b/packages/leptos-shadcn-ui/Cargo.toml new file mode 100644 index 0000000..8fe7c55 --- /dev/null +++ b/packages/leptos-shadcn-ui/Cargo.toml @@ -0,0 +1,87 @@ +[package] +name = "leptos-shadcn-ui" +version = "0.1.0" +edition = "2021" +description = "A comprehensive collection of beautiful, accessible UI components built for Leptos v0.8+, inspired by shadcn/ui" +homepage = "https://github.com/cloud-shuttle/leptos-shadcn-ui" +repository = "https://github.com/cloud-shuttle/leptos-shadcn-ui" +license = "MIT" +authors = ["CloudShuttle "] +keywords = ["leptos", "ui", "components", "shadcn", "web", "wasm", "rust"] +categories = ["wasm", "gui", "web-programming"] +readme = "README.md" + +[dependencies] +# Core Leptos dependencies +leptos = "0.8" +leptos_router = "0.8" +leptos-node-ref = "0.2" +leptos-struct-component = "0.2" +leptos-style = "0.2" + +# Individual component packages (internal workspace dependencies) +leptos-shadcn-button = { path = "../leptos/button", optional = true } +leptos-shadcn-input = { path = "../leptos/input", optional = true } +leptos-shadcn-label = { path = "../leptos/label", optional = true } +leptos-shadcn-checkbox = { path = "../leptos/checkbox", optional = true } +leptos-shadcn-switch = { path = "../leptos/switch", optional = true } +leptos-shadcn-radio-group = { path = "../leptos/radio-group", optional = true } +leptos-shadcn-select = { path = "../leptos/select", optional = true } +leptos-shadcn-textarea = { path = "../leptos/textarea", optional = true } +leptos-shadcn-card = { path = "../leptos/card", optional = true } +leptos-shadcn-separator = { path = "../leptos/separator", optional = true } +leptos-shadcn-tabs = { path = "../leptos/tabs", optional = true } +leptos-shadcn-accordion = { path = "../leptos/accordion", optional = true } +leptos-shadcn-dialog = { path = "../leptos/dialog", optional = true } +leptos-shadcn-popover = { path = "../leptos/popover", optional = true } +leptos-shadcn-tooltip = { path = "../leptos/tooltip", optional = true } +leptos-shadcn-alert = { path = "../leptos/alert", optional = true } +leptos-shadcn-badge = { path = "../leptos/badge", optional = true } +leptos-shadcn-skeleton = { path = "../leptos/skeleton", optional = true } +leptos-shadcn-progress = { path = "../leptos/progress", optional = true } +leptos-shadcn-toast = { path = "../leptos/toast", optional = true } +leptos-shadcn-table = { path = "../leptos/table", optional = true } +leptos-shadcn-calendar = { path = "../leptos/calendar", optional = true } +leptos-shadcn-date-picker = { path = "../leptos/date-picker", optional = true } +leptos-shadcn-pagination = { path = "../leptos/pagination", optional = true } +leptos-shadcn-slider = { path = "../leptos/slider", optional = true } +leptos-shadcn-toggle = { path = "../leptos/toggle", optional = true } + +# Additional dependencies +tailwind_fuse = "0.3" +lucide-leptos = "0.1" +gloo-timers = "0.3" + +[features] +default = ["all-components"] +all-components = [] +button = ["leptos-shadcn-button"] +input = ["leptos-shadcn-input"] +label = ["leptos-shadcn-label"] +checkbox = ["leptos-shadcn-checkbox"] +switch = ["leptos-shadcn-switch"] +radio-group = ["leptos-shadcn-radio-group"] +select = ["leptos-shadcn-select"] +textarea = ["leptos-shadcn-textarea"] +card = ["leptos-shadcn-card"] +separator = ["leptos-shadcn-separator"] +tabs = ["leptos-shadcn-tabs"] +accordion = ["leptos-shadcn-accordion"] +dialog = ["leptos-shadcn-dialog"] +popover = ["leptos-shadcn-popover"] +tooltip = ["leptos-shadcn-tooltip"] +alert = ["leptos-shadcn-alert"] +badge = ["leptos-shadcn-badge"] +skeleton = ["leptos-shadcn-skeleton"] +progress = ["leptos-shadcn-progress"] +toast = ["leptos-shadcn-toast"] +table = ["leptos-shadcn-table"] +calendar = ["leptos-shadcn-calendar"] +date-picker = ["leptos-shadcn-date-picker"] +pagination = ["leptos-shadcn-pagination"] +slider = ["leptos-shadcn-slider"] +toggle = ["leptos-shadcn-toggle"] + +[lib] +name = "leptos_shadcn_ui" +path = "src/lib.rs" diff --git a/packages/leptos-shadcn-ui/src/lib.rs b/packages/leptos-shadcn-ui/src/lib.rs new file mode 100644 index 0000000..a0a461b --- /dev/null +++ b/packages/leptos-shadcn-ui/src/lib.rs @@ -0,0 +1,187 @@ +//! # Leptos ShadCN UI +//! +//! A comprehensive collection of beautiful, accessible UI components built for [Leptos](https://leptos.dev/) v0.8+, +//! inspired by [shadcn/ui](https://ui.shadcn.com/). +//! +//! ## Features +//! +//! - **25+ Components**: Button, Input, Card, Alert, and many more +//! - **Leptos 0.8+**: Built specifically for Leptos v0.8+ compatibility +//! - **Accessibility First**: All components follow accessibility best practices +//! - **Tailwind CSS**: Seamless integration with Tailwind CSS +//! - **Type Safety**: Full Rust type safety with proper error handling +//! +//! ## Usage +//! +//! ```rust +//! use leptos::*; +//! use leptos_shadcn_ui::{Button, Input, Card, Alert}; +//! +//! #[component] +//! pub fn MyComponent() -> impl IntoView { +//! view! { +//! +//! +//! "Welcome" +//! +//! +//!
+//! +//! +//!
+//!
+//!
+//! } +//! } +//! ``` +//! +//! ## Components +//! +//! ### Form Components +//! - Button, Input, Label, Checkbox, Switch, Radio Group, Select, Textarea +//! +//! ### Layout Components +//! - Card, Separator, Tabs, Accordion, Dialog, Popover, Tooltip +//! +//! ### Feedback & Status +//! - Alert, Badge, Skeleton, Progress, Toast, Table, Calendar, Date Picker, Pagination +//! +//! ### Interactive Components +//! - Slider, Toggle +//! +//! ## License +//! +//! MIT License - see the [LICENSE](../LICENSE) file for details. + +// Re-export all components (conditionally based on features) +#[cfg(feature = "button")] +pub use leptos_shadcn_button::default::*; +#[cfg(feature = "input")] +pub use leptos_shadcn_input::default::*; +#[cfg(feature = "label")] +pub use leptos_shadcn_label::default::*; +#[cfg(feature = "checkbox")] +pub use leptos_shadcn_checkbox::default::*; +#[cfg(feature = "switch")] +pub use leptos_shadcn_switch::default::*; +#[cfg(feature = "radio-group")] +pub use leptos_shadcn_radio_group::default::*; +#[cfg(feature = "select")] +pub use leptos_shadcn_select::default::*; +#[cfg(feature = "textarea")] +pub use leptos_shadcn_textarea::default::*; +#[cfg(feature = "card")] +pub use leptos_shadcn_card::default::*; +#[cfg(feature = "separator")] +pub use leptos_shadcn_separator::default::*; +#[cfg(feature = "tabs")] +pub use leptos_shadcn_tabs::default::*; +#[cfg(feature = "accordion")] +pub use leptos_shadcn_accordion::default::*; +#[cfg(feature = "dialog")] +pub use leptos_shadcn_dialog::default::*; +#[cfg(feature = "popover")] +pub use leptos_shadcn_popover::default::*; +#[cfg(feature = "tooltip")] +pub use leptos_shadcn_tooltip::default::*; +#[cfg(feature = "alert")] +pub use leptos_shadcn_alert::default::*; +#[cfg(feature = "badge")] +pub use leptos_shadcn_badge::default::*; +#[cfg(feature = "skeleton")] +pub use leptos_shadcn_skeleton::default::*; +#[cfg(feature = "progress")] +pub use leptos_shadcn_progress::default::*; +#[cfg(feature = "toast")] +pub use leptos_shadcn_toast::default::*; +#[cfg(feature = "table")] +pub use leptos_shadcn_table::default::*; +#[cfg(feature = "calendar")] +pub use leptos_shadcn_calendar::default::*; +#[cfg(feature = "date-picker")] +pub use leptos_shadcn_date_picker::default::*; +#[cfg(feature = "pagination")] +pub use leptos_shadcn_pagination::default::*; +#[cfg(feature = "slider")] +pub use leptos_shadcn_slider::default::*; +#[cfg(feature = "toggle")] +pub use leptos_shadcn_toggle::default::*; + +// Re-export common types and utilities +pub use tailwind_fuse::tw_merge; +pub use lucide_leptos::*; + +// Module documentation +#[cfg(feature = "all-components")] +pub mod prelude { + //! # Leptos ShadCN UI Prelude + //! + //! This module re-exports the most commonly used components and types. + //! + //! ```rust + //! use leptos_shadcn_ui::prelude::*; + //! ``` + + // Form components + #[cfg(feature = "button")] + pub use super::{Button, ButtonVariant, ButtonSize}; + #[cfg(feature = "input")] + pub use super::{Input, InputProps}; + #[cfg(feature = "label")] + pub use super::{Label, LabelProps}; + #[cfg(feature = "checkbox")] + pub use super::{Checkbox, CheckboxProps}; + #[cfg(feature = "switch")] + pub use super::{Switch, SwitchProps}; + #[cfg(feature = "radio-group")] + pub use super::{RadioGroup, RadioGroupProps}; + #[cfg(feature = "select")] + pub use super::{Select, SelectProps}; + #[cfg(feature = "textarea")] + pub use super::{Textarea, TextareaProps}; + + // Layout components + #[cfg(feature = "card")] + pub use super::{Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter}; + #[cfg(feature = "separator")] + pub use super::{Separator, SeparatorProps}; + #[cfg(feature = "tabs")] + pub use super::{Tabs, TabsList, TabsTrigger, TabsContent}; + #[cfg(feature = "accordion")] + pub use super::{Accordion, AccordionItem, AccordionTrigger, AccordionContent}; + #[cfg(feature = "dialog")] + pub use super::{Dialog, DialogTrigger, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter}; + #[cfg(feature = "popover")] + pub use super::{Popover, PopoverTrigger, PopoverContent}; + #[cfg(feature = "tooltip")] + pub use super::{Tooltip, TooltipContent, TooltipTrigger, TooltipProvider}; + + // Feedback components + #[cfg(feature = "alert")] + pub use super::{Alert, AlertTitle, AlertDescription, AlertVariant}; + #[cfg(feature = "badge")] + pub use super::{Badge, BadgeProps, BadgeVariant}; + #[cfg(feature = "skeleton")] + pub use super::{Skeleton, SkeletonProps}; + #[cfg(feature = "progress")] + pub use super::{Progress, ProgressProps}; + #[cfg(feature = "toast")] + pub use super::{Toast, ToastProps}; + #[cfg(feature = "table")] + pub use super::{Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell}; + #[cfg(feature = "calendar")] + pub use super::{Calendar, CalendarProps}; + #[cfg(feature = "date-picker")] + pub use super::{DatePicker, DatePickerProps}; + #[cfg(feature = "pagination")] + pub use super::{Pagination, PaginationProps}; + + // Interactive components + #[cfg(feature = "slider")] + pub use super::{Slider, SliderProps}; + #[cfg(feature = "toggle")] + pub use super::{Toggle, ToggleProps}; + + // Utilities + pub use super::tw_merge; +} diff --git a/scripts/publish_main.sh b/scripts/publish_main.sh new file mode 100755 index 0000000..adb861c --- /dev/null +++ b/scripts/publish_main.sh @@ -0,0 +1,58 @@ +#!/bin/bash + +# Leptos ShadCN UI Main Package Publishing Script +# This script publishes the main package that contains all components + +set -e + +echo "🚀 Publishing Leptos ShadCN UI Main Package" +echo "==============================================" + +# Navigate to the main package directory +cd packages/leptos-shadcn-ui + +echo "📦 Package: leptos-shadcn-ui" +echo "📋 Version: 0.1.0" +echo "" + +# Check if component compiles +echo "🔍 Checking compilation..." +if cargo check --quiet; then + echo " ✅ Package compiles successfully" + + # Check with all features + echo " 🔍 Checking with all components enabled..." + if cargo check --features all-components --quiet; then + echo " ✅ All components compile successfully" + + # Publish to crates.io + echo " 🚀 Publishing to crates.io..." + if cargo publish --quiet; then + echo " ✅ leptos-shadcn-ui published successfully!" + echo "" + echo "🎉 Main package published successfully!" + echo "" + echo "📋 Users can now install with:" + echo " [dependencies]" + echo " leptos-shadcn-ui = \"0.1.0\"" + echo "" + echo "🔧 And use with:" + echo " use leptos_shadcn_ui::{Button, Input, Card};" + echo "" + echo "✨ Or enable specific components:" + echo " leptos-shadcn-ui = { version = \"0.1.0\", features = [\"button\", \"input\"] }" + else + echo " ❌ Failed to publish leptos-shadcn-ui" + exit 1 + fi + else + echo " ❌ Components compilation failed" + exit 1 + fi +else + echo " ❌ Package compilation failed" + exit 1 +fi + +echo "" +echo "✅ Main package release complete!" diff --git a/scripts/publish_release.sh b/scripts/publish_release.sh index 47f20fc..1189e9e 100755 --- a/scripts/publish_release.sh +++ b/scripts/publish_release.sh @@ -41,6 +41,21 @@ COMPONENTS=( echo "📦 Components to publish: ${#COMPONENTS[@]}" echo "" +# Function to check if a crate is already published +check_if_published() { + local package_name=$1 + local version="0.1.0" + + # Check if the crate exists on crates.io + if cargo search "$package_name" --limit 1 | grep -q "^$package_name"; then + # Check if our specific version is already published + if cargo search "$package_name" --limit 10 | grep -q "$package_name = \"$version\""; then + return 0 # Already published + fi + fi + return 1 # Not published +} + # Function to publish a component publish_component() { local component=$1 @@ -48,6 +63,12 @@ publish_component() { echo "📤 Publishing ${package_name}..." + # Check if already published + if check_if_published "$package_name"; then + echo " ✅ ${package_name} is already published on crates.io - skipping" + return 0 + fi + # Navigate to component directory cd "packages/leptos/${component}"