diff --git a/crates/app/src/assets.rs b/crates/app/src/assets.rs index a556acc..08a328d 100644 --- a/crates/app/src/assets.rs +++ b/crates/app/src/assets.rs @@ -155,7 +155,7 @@ pub(crate) async fn pull_icon(icon: &str, icons_dir: &str) { "https://raw.githubusercontent.com/lucide-icons/lucide/refs/heads/main/icons/{icon}.svg" ); - let file_path = PathBufD::current().extend(&[icons_dir, icon]); + let file_path = PathBufD::current().extend(&[icons_dir, &format!("{icon}.svg")]); if exists(&file_path).unwrap() { writer.insert(icon.to_string(), read_to_string(&file_path).unwrap()); diff --git a/crates/app/src/public/css/style.css b/crates/app/src/public/css/style.css index 5e2094b..e41edac 100644 --- a/crates/app/src/public/css/style.css +++ b/crates/app/src/public/css/style.css @@ -413,6 +413,43 @@ select:focus { overflow-wrap: anywhere; } +input[type="checkbox"] { + --color: #c9b1bc; + appearance: none; + border-radius: var(--radius); + transition: + box-shadow 0.15s, + background 0.15s; + background-color: var(--color-super-raised); + background-position: center; + background-origin: padding-box; + background-size: 14px; + background-repeat: no-repeat; + width: 1em !important; + height: 1em; + outline: none; + border: solid 1px var(--color-super-lowered); + padding: 0; + cursor: pointer; + color: var(--color-text-primary); +} + +input[type="checkbox"]:hover { + box-shadow: var(--shadow-x-offset) var(--shadow-y-offset) var(--shadow-size) + var(--color-shadow); +} + +input[type="checkbox"]:focus { + outline: solid 2px var(--color); + outline-offset: 2px; +} + +input[type="checkbox"]:checked { + border-color: var(--color); + background-color: var(--color); + background-image: url("/icons/check.svg"); +} + /* pillmenu */ .pillmenu { display: flex; diff --git a/crates/app/src/public/js/atto.js b/crates/app/src/public/js/atto.js index 56ac698..56b85f8 100644 --- a/crates/app/src/public/js/atto.js +++ b/crates/app/src/public/js/atto.js @@ -919,7 +919,7 @@ media_theme_pref(); } if (option.input_element_type === "checkbox") { - into_element.innerHTML += `
+ into_element.innerHTML += `
Router { "/public", get_service(tower_http::services::ServeDir::new(&config.dirs.assets)), ) + .nest_service( + "/icons", + get_service(tower_http::services::ServeDir::new(&config.dirs.icons)), + ) .nest_service( "/reference", get_service(tower_http::services::ServeDir::new(&config.dirs.rustdoc)), diff --git a/sql_changes/users_secondary_permissions.sql b/sql_changes/users_secondary_permissions.sql new file mode 100644 index 0000000..7172889 --- /dev/null +++ b/sql_changes/users_secondary_permissions.sql @@ -0,0 +1,2 @@ +ALTER TABLE users +ADD COLUMN secondary_permissions INT NOT NULL DEFAULT 1;