feat: leptonic 0.2.0 / leptos 0.4.10 setup based on leptonic docs

This commit is contained in:
Michael Mandl 2023-10-04 16:44:29 +02:00
commit b1ffebb011
Signed by: mandlm
GPG key ID: 4AA25D647AA54CC7
12 changed files with 2647 additions and 0 deletions

3
.cargo/config.toml Normal file
View file

@ -0,0 +1,3 @@
[build]
# `leptonic` depends on some `leptos-use` functions requiring this opt-in. This may change in the future.
rustflags = ["--cfg=web_sys_unstable_apis"]

9
.envrc Normal file
View file

@ -0,0 +1,9 @@
use flake .nix
dotenv_if_exists
if on_git_branch; then
echo
git status --short --branch
echo
git fetch
fi

3
.gitignore vendored Normal file
View file

@ -0,0 +1,3 @@
/target
/generated
/dist

61
.nix/flake.lock Normal file
View file

@ -0,0 +1,61 @@
{
"nodes": {
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1689068808,
"narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1690441914,
"narHash": "sha256-Ac+kJQ5z9MDAMyzSc0i0zJDx2i3qi9NjlW5Lz285G/I=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "db8672b8d0a2593c2405aed0c1dfa64b2a2f428f",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

37
.nix/flake.nix Normal file
View file

@ -0,0 +1,37 @@
{
description = "A basic flake with a shell";
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
inputs.flake-utils.url = "github:numtide/flake-utils";
outputs = { self, nixpkgs, flake-utils }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = nixpkgs.legacyPackages.${system};
RUST_VERSION = "1.70.0";
in
{
devShell = pkgs.mkShell {
nativeBuildInputs = [ pkgs.bashInteractive ];
buildInputs = with pkgs; [
rustup
sccache
trunk
dart-sass
nodePackages.vscode-html-languageserver-bin
];
RUSTC_WRAPPER = "${pkgs.sccache}/bin/sccache";
shellHook = ''
pre-commit install --allow-missing-config --hook-type pre-commit --hook-type commit-msg
rustup default ${RUST_VERSION}
rustup target add --toolchain ${RUST_VERSION} wasm32-unknown-unknown
rustup component add --toolchain ${RUST_VERSION} cargo clippy rust-analyzer rust-docs rust-src rustfmt
cargo install leptosfmt
'';
};
}
);
}

2440
Cargo.lock generated Normal file

File diff suppressed because it is too large Load diff

14
Cargo.toml Normal file
View file

@ -0,0 +1,14 @@
[package]
name = "leptonic-template"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
leptonic = "0.2.0"
leptos = { version = "0.4.10", features = ["csr"] }
[build-dependencies]
leptonic-theme = "0.2.0"
leptos-tiptap-build = "0.2.3"

13
Trunk.toml Normal file
View file

@ -0,0 +1,13 @@
[watch]
# Paths to watch. The `build.target`'s parent folder is watched by default.
ignore = [
# These files are generated from our build.rs script, not excluding them would result in an endless restart-cycle!
# Keep this list in sync with what the build script generates.
"./generated",
]
[serve]
address = "127.0.0.1"
port = 4001
open = false

28
build.rs Normal file
View file

@ -0,0 +1,28 @@
use std::io::Write;
pub fn main() {
println!("cargo:rerun-if-changed=build.rs");
println!("cargo:rerun-if-changed=Cargo.lock");
let root_dir: std::path::PathBuf = std::env::var("CARGO_MANIFEST_DIR").unwrap().into();
let generated_dir = root_dir.join("generated");
let js_dir = generated_dir.join("js");
leptonic_theme::generate(generated_dir.join("leptonic"));
println!("cargo:warning=theme written");
std::fs::create_dir_all(js_dir.clone()).unwrap();
println!("cargo:warning=js dir created");
std::fs::File::create(js_dir.join("tiptap-bundle.min.js"))
.unwrap()
.write_all(leptos_tiptap_build::TIPTAP_BUNDLE_MIN_JS.as_bytes())
.unwrap();
println!("cargo:warning=tiptap-bundle.min.js written");
std::fs::File::create(js_dir.join("tiptap.js"))
.unwrap()
.write_all(leptos_tiptap_build::TIPTAP_JS.as_bytes())
.unwrap();
println!("cargo:warning=tiptap.js written");
}

27
index.html Normal file
View file

@ -0,0 +1,27 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="description" content="Leptonic" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="theme-color" content="#e66956" />
<title>Leptonic</title>
<script type="module" src="/js/tiptap-bundle.min.js"></script>
<script type="module" src="/js/tiptap.js"></script>
<!-- <link rel="icon" href="/res/icon/leptonic_x64.png" /> -->
<link data-trunk rel="rust" data-wasm-opt="z" />
<link data-trunk rel="scss" href="scss/style.scss" />
<link data-trunk rel="copy-dir" href="generated/js/" />
<link
rel="stylesheet"
href="https://fonts.googleapis.com/css?family=Roboto&display=swap"
/>
</head>
<body></body>
</html>

1
scss/style.scss Normal file
View file

@ -0,0 +1 @@
@import "../generated/leptonic/leptonic-themes";

11
src/main.rs Normal file
View file

@ -0,0 +1,11 @@
use leptonic::prelude::*;
use leptos::*;
#[component]
pub fn App(cx: Scope) -> impl IntoView {
view! { cx, <Root default_theme=LeptonicTheme::default()>"Content goes here :)"</Root> }
}
fn main() {
mount_to_body(App)
}