From 321f27a26e6c648674df1c659f612ac3e24e15d7 Mon Sep 17 00:00:00 2001 From: wkennedy Date: Thu, 14 Nov 2024 13:02:19 -0500 Subject: [PATCH 01/14] Add compute unit extraction to log context Introduced fields to store consumed and max compute units in LogContext. Implemented regex-based extraction and integrated it into the log parsing logic. Also added unit tests for various log formats and updated dependency paths to use local modules. --- config/local/sologger-config.json | 4 +- .../src/sologger_log_context.rs | 110 +++++++++++++++++- sologger-log-transformer/Cargo.toml | 2 +- sologger/Cargo.toml | 6 +- sologger/src/log_processor.rs | 4 +- 5 files changed, 115 insertions(+), 11 deletions(-) diff --git a/config/local/sologger-config.json b/config/local/sologger-config.json index daa4ae6..1ad31b8 100644 --- a/config/local/sologger-config.json +++ b/config/local/sologger-config.json @@ -1,7 +1,7 @@ { "log4rsConfigLocation": "./config/local/log4rs-config.yml", - "rpcUrl": "wss://api.devnet.solana.com", + "rpcUrl": "wss://api.mainnet-beta.solana.com", "programsSelector" : { - "programs" : ["11111111111111111111111111111111", "Config1111111111111111111111111111111111111", "Stake11111111111111111111111111111111111111", "Vote111111111111111111111111111111111111111", "BPFLoaderUpgradeab1e11111111111111111111111", "Ed25519SigVerify111111111111111111111111111", "KeccakSecp256k11111111111111111111111111111"] + "programs" : ["*"] } } \ No newline at end of file diff --git a/sologger-log-context/src/sologger_log_context.rs b/sologger-log-context/src/sologger_log_context.rs index b6a6de5..3585812 100644 --- a/sologger-log-context/src/sologger_log_context.rs +++ b/sologger-log-context/src/sologger_log_context.rs @@ -1,15 +1,17 @@ use crate::programs_selector::ProgramsSelector; use crate::rpc_response::RpcResponse; use lazy_static::lazy_static; -use log::{debug, trace, warn}; +use log::{debug, info, trace, warn}; use regex::{Captures, Regex}; use serde::{Deserialize, Serialize}; //TODO add Transfer and Allocate? const LOG_REGEX: &str = r"(?^Program (?[1-9A-HJ-NP-Za-km-z]{32,}) invoke \[(?\d+)\]$)|(?^Program (?[1-9A-HJ-NP-Za-km-z]{32,}) success$)|(?^Program (?[1-9A-HJ-NP-Za-km-z]{32,}) failed: (?.*)$)|(?^Program failed to complete: (?.*)$)|(?^^Program log: (?.*)$)|(?^Program data: (?.*)$)|(?^Program (?[1-9A-HJ-NP-Za-km-z]{32,}) consumed (?\d*) of (?\d*) compute units$)|(?^^Program consumption: (?.*)$)|(?^Log truncated$)|(?^Program return: (?[1-9A-HJ-NP-Za-km-z]{32,}) (?.*)$)"; +const CONSUMED_COMPUTE_REGEX: &str = r"consumed (\d+) of (\d+) compute units"; lazy_static! { static ref LOG_CONTEXT_PARSER: Regex = Regex::new(LOG_REGEX).unwrap(); + static ref CONSUMED_COMPUTER_PARSER: Regex = Regex::new(CONSUMED_COMPUTE_REGEX).unwrap(); } /// A LogContext is a structured log format that represents the logs of a single program invocation, per processed slot, transaction or block. @@ -41,6 +43,8 @@ pub struct LogContext { pub slot: usize, ///The signature of the transaction that invoked the program that produced the logs pub signature: String, + pub consumed_cu: u64, + pub max_cu: u64 } impl LogContext { @@ -67,6 +71,8 @@ impl LogContext { invoke_result: "".to_string(), slot, signature, + consumed_cu: 0, + max_cu: 0, } } @@ -257,7 +263,9 @@ impl LogContext { match capture { None => { - debug!("Log not matched, adding to raw_logs: {}", &log_trimmed); + info!("Log not matched, adding to raw_logs: {}", &log_trimmed); + info!("raw_logs: {:?}", &logs); + result[call_ids[call_ids.len() - 1]] .raw_logs .push(log_trimmed) @@ -284,6 +292,7 @@ impl LogContext { let program_return = capture.name("programReturn"); let return_message = capture.name("returnMessage"); let return_program_id = capture.name("returnProgramId"); + let allocate = capture.name("allocate"); match log_truncated { Some(_x) => { @@ -420,6 +429,16 @@ impl LogContext { result[call_ids[call_ids.len() - 1]] .raw_logs .push(log.clone()); + let computer_numbers = extract_compute_numbers(&log); + match computer_numbers { + None => {} + Some((consumed_cu, max_cu)) => { + result[call_ids[call_ids.len() - 1]] + .max_cu = max_cu; + result[call_ids[call_ids.len() - 1]] + .consumed_cu = consumed_cu; + } + } } None => {} } @@ -433,6 +452,17 @@ impl LogContext { None => {} } + match allocate { + Some(_x) => { + println!("ALLOCATE:::"); + println!("{:?}", &logs); + // result[call_ids[call_ids.len() - 1]] + // .raw_logs + // .push(log.clone()); + } + None => {} + } + match program_return { Some(_x) => { if return_program_id @@ -471,10 +501,21 @@ fn trim_whitespace(s: &str) -> String { trimmed } +fn extract_compute_numbers(log_str: &str) -> Option<(u64, u64)> { + // Try to capture the numbers + let captures = CONSUMED_COMPUTER_PARSER.captures(log_str)?; + + // Parse the captured numbers + let first_num = captures.get(1)?.as_str().parse::().ok()?; + let second_num = captures.get(2)?.as_str().parse::().ok()?; + + Some((first_num, second_num)) +} + #[cfg(test)] mod tests { use crate::programs_selector::ProgramsSelector; - use crate::sologger_log_context::LogContext; + use crate::sologger_log_context::{extract_compute_numbers, LogContext}; use std::time::SystemTime; //TODO fix test for ID @@ -532,6 +573,8 @@ mod tests { // assert_eq!(log_contexts[0].id, 0); assert_eq!(log_contexts[0].invoke_result, ""); assert_eq!(log_contexts[0].instruction_index, 0); + assert_eq!(log_contexts[0].max_cu, 200000); + assert_eq!(log_contexts[0].consumed_cu, 59783); assert_eq!( log_contexts[1].program_id, @@ -569,6 +612,8 @@ mod tests { // assert_eq!(log_contexts[2].id, 2); assert_eq!(log_contexts[2].invoke_result, ""); assert_eq!(log_contexts[2].instruction_index, 1); + assert_eq!(log_contexts[2].max_cu, 200000); + assert_eq!(log_contexts[2].consumed_cu, 5475); } #[test] @@ -1310,4 +1355,63 @@ mod tests { assert_eq!(log_contexts[0].errors.len(), 1); assert_eq!(log_contexts[0].errors[0], "custom program error: 0x1"); } + + #[test] + fn test_valid_log_format() { + let log = "Program AbcdefGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL consumed 5475 of 200000 compute units"; + assert_eq!(extract_compute_numbers(log), Some((5475, 200000))); + } + + #[test] + fn test_different_numbers() { + let log = "Program XYZ consumed 1234 of 999999 compute units"; + assert_eq!(extract_compute_numbers(log), Some((1234, 999999))); + } + + #[test] + fn test_no_program_prefix() { + let log = "consumed 100 of 500 compute units"; + assert_eq!(extract_compute_numbers(log), Some((100, 500))); + } + + #[test] + fn test_extra_whitespace() { + let log = "Program Test consumed 42 of 1000 compute units"; + assert_eq!(extract_compute_numbers(log), None); + } + + #[test] + fn test_invalid_format() { + let log = "This is not a valid compute units log"; + assert_eq!(extract_compute_numbers(log), None); + } + + #[test] + fn test_missing_numbers() { + let log = "Program Test consumed of compute units"; + assert_eq!(extract_compute_numbers(log), None); + } + + #[test] + fn test_invalid_numbers() { + let log = "Program Test consumed abc of xyz compute units"; + assert_eq!(extract_compute_numbers(log), None); + } + + #[test] + fn test_empty_string() { + assert_eq!(extract_compute_numbers(""), None); + } + + #[test] + fn test_very_large_numbers() { + let log = "Program Test consumed 18446744073709551615 of 18446744073709551615 compute units"; + assert_eq!(extract_compute_numbers(log), Some((18446744073709551615, 18446744073709551615))); + } + + #[test] + fn test_partial_format() { + let log = "consumed 100 of"; + assert_eq!(extract_compute_numbers(log), None); + } } diff --git a/sologger-log-transformer/Cargo.toml b/sologger-log-transformer/Cargo.toml index 398b456..812354c 100644 --- a/sologger-log-transformer/Cargo.toml +++ b/sologger-log-transformer/Cargo.toml @@ -20,7 +20,7 @@ solana-rpc-client = "2.0.13" solana-rpc-client-api = "2.0.13" solana-transaction-status = "2.0.13" solana-sdk = "2.0.13" -sologger_log_context = "0.2.1" +sologger_log_context = {path = "../sologger-log-context"} [dev-dependencies] criterion = "0.5.1" diff --git a/sologger/Cargo.toml b/sologger/Cargo.toml index b6d0287..12256cd 100644 --- a/sologger/Cargo.toml +++ b/sologger/Cargo.toml @@ -27,9 +27,9 @@ regex = "1.11.0" solana-pubsub-client = { version = "2.0.13", optional = true } solana-rpc-client-api = { version = "2.0.13", optional = true } solana-sdk = { version = "2.0.13", optional = true } -sologger_log_context = "0.2.1" -sologger_log_transformer = "0.2.1" -sologger_log_transport = "0.2.0" +sologger_log_context = {path = "../sologger-log-context"} +sologger_log_transformer = {path = "../sologger-log-transformer"} +sologger_log_transport = {path = "../sologger-log-transport"} tokio = { version = "1.40.0", features = ["full"] } tokio-metrics = { version = "0.3.1", optional = true} tokio-rustls = "0.24.1" diff --git a/sologger/src/log_processor.rs b/sologger/src/log_processor.rs index ea83502..99d5f19 100644 --- a/sologger/src/log_processor.rs +++ b/sologger/src/log_processor.rs @@ -6,9 +6,9 @@ use sologger_log_context::sologger_log_context::LogContext; pub async fn log_contexts_from_logs(log_contexts: &Vec) -> Result<()> { for log_context in log_contexts { if log_context.has_errors() { - error!("{}", &log_context.to_json()); + // error!("{}", &log_context.to_json()); } else { - info!("{}", &log_context.to_json()); + // info!("{}", &log_context.to_json()); } } Ok(()) From c38158785f415cb8abc268aa3151620859e65520 Mon Sep 17 00:00:00 2001 From: Will Kennedy Date: Tue, 19 Nov 2024 23:05:50 -0500 Subject: [PATCH 02/14] Add PrimeVue assets and new public resources Added various PrimeVue CSS assets for components like ripple, select, slider, menubar, and more. Also, included new public resources such as `sologger_log_transformer_wasm_bg.wasm`, `sologger_header.png`, and `sologger_logo_big.png`. This commit enhances the UI appearance and adds new project resources. --- sologger-ui/.gitignore | 25 + sologger-ui/README.md | 5 + sologger-ui/error.html | 145 + sologger-ui/index.html | 13 + sologger-ui/package-lock.json | 2907 +++++++++++++++++ sologger-ui/package.json | 28 + sologger-ui/postcss.config.js | 7 + .../pkg/package.json | 30 + .../pkg/sologger_log_transformer_wasm.d.ts | 81 + .../pkg/sologger_log_transformer_wasm.js | 660 ++++ .../pkg/sologger_log_transformer_wasm_bg.js | 608 ++++ .../pkg/sologger_log_transformer_wasm_bg.wasm | Bin 0 -> 1302837 bytes ...sologger_log_transformer_wasm_bg.wasm.d.ts | 16 + sologger-ui/public/sologger_header.png | Bin 0 -> 5172 bytes sologger-ui/public/sologger_logo.svg | 3 + sologger-ui/public/sologger_logo_big.png | Bin 0 -> 5157 bytes sologger-ui/public/sologger_logo_sm.svg | 1 + sologger-ui/public/vite.svg | 1 + sologger-ui/src/App.vue | 82 + sologger-ui/src/assets/primevue/accordion.css | 58 + .../src/assets/primevue/autocomplete.css | 143 + sologger-ui/src/assets/primevue/avatar.css | 50 + sologger-ui/src/assets/primevue/badge.css | 49 + sologger-ui/src/assets/primevue/blockui.css | 15 + .../src/assets/primevue/breadcrumb.css | 41 + sologger-ui/src/assets/primevue/button.css | 333 ++ .../src/assets/primevue/buttongroup.css | 19 + sologger-ui/src/assets/primevue/card.css | 22 + sologger-ui/src/assets/primevue/carousel.css | 64 + .../src/assets/primevue/cascadeselect.css | 169 + sologger-ui/src/assets/primevue/checkbox.css | 84 + sologger-ui/src/assets/primevue/chip.css | 27 + .../src/assets/primevue/colorpicker.css | 47 + sologger-ui/src/assets/primevue/common.css | 81 + .../src/assets/primevue/confirmdialog.css | 10 + .../src/assets/primevue/confirmpopup.css | 66 + .../src/assets/primevue/contextmenu.css | 101 + sologger-ui/src/assets/primevue/datatable.css | 408 +++ sologger-ui/src/assets/primevue/dataview.css | 29 + .../src/assets/primevue/datepicker.css | 211 ++ sologger-ui/src/assets/primevue/dialog.css | 125 + sologger-ui/src/assets/primevue/divider.css | 52 + sologger-ui/src/assets/primevue/dock.css | 84 + sologger-ui/src/assets/primevue/drawer.css | 94 + sologger-ui/src/assets/primevue/fieldset.css | 45 + .../src/assets/primevue/fileupload.css | 57 + .../src/assets/primevue/floatlabel.css | 73 + sologger-ui/src/assets/primevue/galleria.css | 244 ++ sologger-ui/src/assets/primevue/iconfield.css | 23 + sologger-ui/src/assets/primevue/iftalabel.css | 32 + sologger-ui/src/assets/primevue/image.css | 56 + .../src/assets/primevue/imagecompare.css | 38 + sologger-ui/src/assets/primevue/inplace.css | 13 + .../src/assets/primevue/inputgroup.css | 67 + .../src/assets/primevue/inputnumber.css | 84 + sologger-ui/src/assets/primevue/inputotp.css | 9 + sologger-ui/src/assets/primevue/inputtext.css | 34 + sologger-ui/src/assets/primevue/knob.css | 37 + sologger-ui/src/assets/primevue/listbox.css | 79 + sologger-ui/src/assets/primevue/megamenu.css | 207 ++ sologger-ui/src/assets/primevue/menu.css | 51 + sologger-ui/src/assets/primevue/menubar.css | 169 + sologger-ui/src/assets/primevue/message.css | 212 ++ .../src/assets/primevue/metergroup.css | 67 + .../src/assets/primevue/multiselect.css | 139 + sologger-ui/src/assets/primevue/orderlist.css | 10 + .../src/assets/primevue/organizationchart.css | 71 + .../src/assets/primevue/overlaybadge.css | 13 + sologger-ui/src/assets/primevue/paginator.css | 58 + sologger-ui/src/assets/primevue/panel.css | 27 + sologger-ui/src/assets/primevue/panelmenu.css | 94 + sologger-ui/src/assets/primevue/password.css | 61 + sologger-ui/src/assets/primevue/picklist.css | 18 + sologger-ui/src/assets/primevue/popover.css | 46 + .../src/assets/primevue/progressbar.css | 67 + .../src/assets/primevue/progressspinner.css | 58 + .../src/assets/primevue/radiobutton.css | 93 + sologger-ui/src/assets/primevue/rating.css | 23 + sologger-ui/src/assets/primevue/ripple.css | 7 + .../src/assets/primevue/scrollpanel.css | 41 + sologger-ui/src/assets/primevue/scrolltop.css | 25 + sologger-ui/src/assets/primevue/select.css | 144 + .../src/assets/primevue/selectbutton.css | 25 + sologger-ui/src/assets/primevue/skeleton.css | 11 + sologger-ui/src/assets/primevue/slider.css | 42 + sologger-ui/src/assets/primevue/speeddial.css | 48 + .../src/assets/primevue/splitbutton.css | 34 + sologger-ui/src/assets/primevue/splitter.css | 56 + sologger-ui/src/assets/primevue/stepper.css | 102 + sologger-ui/src/assets/primevue/tabs.css | 84 + sologger-ui/src/assets/primevue/tag.css | 38 + sologger-ui/src/assets/primevue/tailwind.css | 104 + sologger-ui/src/assets/primevue/terminal.css | 22 + sologger-ui/src/assets/primevue/textarea.css | 38 + .../src/assets/primevue/tieredmenu.css | 105 + sologger-ui/src/assets/primevue/timeline.css | 113 + sologger-ui/src/assets/primevue/toast.css | 172 + .../src/assets/primevue/togglebutton.css | 63 + .../src/assets/primevue/toggleswitch.css | 66 + sologger-ui/src/assets/primevue/toolbar.css | 12 + sologger-ui/src/assets/primevue/tooltip.css | 38 + sologger-ui/src/assets/primevue/tree.css | 103 + .../src/assets/primevue/treeselect.css | 112 + sologger-ui/src/assets/primevue/treetable.css | 300 ++ sologger-ui/src/assets/tailwind.css | 4 + sologger-ui/src/assets/vue.svg | 1 + sologger-ui/src/components/LogsTable.vue | 212 ++ sologger-ui/src/components/ProgramIdForm.vue | 36 + sologger-ui/src/components/ProgramList.vue | 32 + sologger-ui/src/components/StatsGrid.vue | 22 + sologger-ui/src/main.js | 16 + sologger-ui/src/router/index.js | 30 + sologger-ui/src/style.css | 230 ++ sologger-ui/src/views/AboutView.vue | 53 + sologger-ui/src/views/ConvertView.vue | 18 + sologger-ui/src/views/HomeView.vue | 542 +++ sologger-ui/tailwind.config.js | 6 + sologger-ui/vite.config.js | 27 + 118 files changed, 12503 insertions(+) create mode 100644 sologger-ui/.gitignore create mode 100644 sologger-ui/README.md create mode 100644 sologger-ui/error.html create mode 100644 sologger-ui/index.html create mode 100644 sologger-ui/package-lock.json create mode 100644 sologger-ui/package.json create mode 100644 sologger-ui/postcss.config.js create mode 100644 sologger-ui/public/sologger-log-transformer-wasm/pkg/package.json create mode 100644 sologger-ui/public/sologger-log-transformer-wasm/pkg/sologger_log_transformer_wasm.d.ts create mode 100644 sologger-ui/public/sologger-log-transformer-wasm/pkg/sologger_log_transformer_wasm.js create mode 100644 sologger-ui/public/sologger-log-transformer-wasm/pkg/sologger_log_transformer_wasm_bg.js create mode 100644 sologger-ui/public/sologger-log-transformer-wasm/pkg/sologger_log_transformer_wasm_bg.wasm create mode 100644 sologger-ui/public/sologger-log-transformer-wasm/pkg/sologger_log_transformer_wasm_bg.wasm.d.ts create mode 100644 sologger-ui/public/sologger_header.png create mode 100644 sologger-ui/public/sologger_logo.svg create mode 100644 sologger-ui/public/sologger_logo_big.png create mode 100644 sologger-ui/public/sologger_logo_sm.svg create mode 100644 sologger-ui/public/vite.svg create mode 100644 sologger-ui/src/App.vue create mode 100644 sologger-ui/src/assets/primevue/accordion.css create mode 100644 sologger-ui/src/assets/primevue/autocomplete.css create mode 100644 sologger-ui/src/assets/primevue/avatar.css create mode 100644 sologger-ui/src/assets/primevue/badge.css create mode 100644 sologger-ui/src/assets/primevue/blockui.css create mode 100644 sologger-ui/src/assets/primevue/breadcrumb.css create mode 100644 sologger-ui/src/assets/primevue/button.css create mode 100644 sologger-ui/src/assets/primevue/buttongroup.css create mode 100644 sologger-ui/src/assets/primevue/card.css create mode 100644 sologger-ui/src/assets/primevue/carousel.css create mode 100644 sologger-ui/src/assets/primevue/cascadeselect.css create mode 100644 sologger-ui/src/assets/primevue/checkbox.css create mode 100644 sologger-ui/src/assets/primevue/chip.css create mode 100644 sologger-ui/src/assets/primevue/colorpicker.css create mode 100644 sologger-ui/src/assets/primevue/common.css create mode 100644 sologger-ui/src/assets/primevue/confirmdialog.css create mode 100644 sologger-ui/src/assets/primevue/confirmpopup.css create mode 100644 sologger-ui/src/assets/primevue/contextmenu.css create mode 100644 sologger-ui/src/assets/primevue/datatable.css create mode 100644 sologger-ui/src/assets/primevue/dataview.css create mode 100644 sologger-ui/src/assets/primevue/datepicker.css create mode 100644 sologger-ui/src/assets/primevue/dialog.css create mode 100644 sologger-ui/src/assets/primevue/divider.css create mode 100644 sologger-ui/src/assets/primevue/dock.css create mode 100644 sologger-ui/src/assets/primevue/drawer.css create mode 100644 sologger-ui/src/assets/primevue/fieldset.css create mode 100644 sologger-ui/src/assets/primevue/fileupload.css create mode 100644 sologger-ui/src/assets/primevue/floatlabel.css create mode 100644 sologger-ui/src/assets/primevue/galleria.css create mode 100644 sologger-ui/src/assets/primevue/iconfield.css create mode 100644 sologger-ui/src/assets/primevue/iftalabel.css create mode 100644 sologger-ui/src/assets/primevue/image.css create mode 100644 sologger-ui/src/assets/primevue/imagecompare.css create mode 100644 sologger-ui/src/assets/primevue/inplace.css create mode 100644 sologger-ui/src/assets/primevue/inputgroup.css create mode 100644 sologger-ui/src/assets/primevue/inputnumber.css create mode 100644 sologger-ui/src/assets/primevue/inputotp.css create mode 100644 sologger-ui/src/assets/primevue/inputtext.css create mode 100644 sologger-ui/src/assets/primevue/knob.css create mode 100644 sologger-ui/src/assets/primevue/listbox.css create mode 100644 sologger-ui/src/assets/primevue/megamenu.css create mode 100644 sologger-ui/src/assets/primevue/menu.css create mode 100644 sologger-ui/src/assets/primevue/menubar.css create mode 100644 sologger-ui/src/assets/primevue/message.css create mode 100644 sologger-ui/src/assets/primevue/metergroup.css create mode 100644 sologger-ui/src/assets/primevue/multiselect.css create mode 100644 sologger-ui/src/assets/primevue/orderlist.css create mode 100644 sologger-ui/src/assets/primevue/organizationchart.css create mode 100644 sologger-ui/src/assets/primevue/overlaybadge.css create mode 100644 sologger-ui/src/assets/primevue/paginator.css create mode 100644 sologger-ui/src/assets/primevue/panel.css create mode 100644 sologger-ui/src/assets/primevue/panelmenu.css create mode 100644 sologger-ui/src/assets/primevue/password.css create mode 100644 sologger-ui/src/assets/primevue/picklist.css create mode 100644 sologger-ui/src/assets/primevue/popover.css create mode 100644 sologger-ui/src/assets/primevue/progressbar.css create mode 100644 sologger-ui/src/assets/primevue/progressspinner.css create mode 100644 sologger-ui/src/assets/primevue/radiobutton.css create mode 100644 sologger-ui/src/assets/primevue/rating.css create mode 100644 sologger-ui/src/assets/primevue/ripple.css create mode 100644 sologger-ui/src/assets/primevue/scrollpanel.css create mode 100644 sologger-ui/src/assets/primevue/scrolltop.css create mode 100644 sologger-ui/src/assets/primevue/select.css create mode 100644 sologger-ui/src/assets/primevue/selectbutton.css create mode 100644 sologger-ui/src/assets/primevue/skeleton.css create mode 100644 sologger-ui/src/assets/primevue/slider.css create mode 100644 sologger-ui/src/assets/primevue/speeddial.css create mode 100644 sologger-ui/src/assets/primevue/splitbutton.css create mode 100644 sologger-ui/src/assets/primevue/splitter.css create mode 100644 sologger-ui/src/assets/primevue/stepper.css create mode 100644 sologger-ui/src/assets/primevue/tabs.css create mode 100644 sologger-ui/src/assets/primevue/tag.css create mode 100644 sologger-ui/src/assets/primevue/tailwind.css create mode 100644 sologger-ui/src/assets/primevue/terminal.css create mode 100644 sologger-ui/src/assets/primevue/textarea.css create mode 100644 sologger-ui/src/assets/primevue/tieredmenu.css create mode 100644 sologger-ui/src/assets/primevue/timeline.css create mode 100644 sologger-ui/src/assets/primevue/toast.css create mode 100644 sologger-ui/src/assets/primevue/togglebutton.css create mode 100644 sologger-ui/src/assets/primevue/toggleswitch.css create mode 100644 sologger-ui/src/assets/primevue/toolbar.css create mode 100644 sologger-ui/src/assets/primevue/tooltip.css create mode 100644 sologger-ui/src/assets/primevue/tree.css create mode 100644 sologger-ui/src/assets/primevue/treeselect.css create mode 100644 sologger-ui/src/assets/primevue/treetable.css create mode 100644 sologger-ui/src/assets/tailwind.css create mode 100644 sologger-ui/src/assets/vue.svg create mode 100644 sologger-ui/src/components/LogsTable.vue create mode 100644 sologger-ui/src/components/ProgramIdForm.vue create mode 100644 sologger-ui/src/components/ProgramList.vue create mode 100644 sologger-ui/src/components/StatsGrid.vue create mode 100644 sologger-ui/src/main.js create mode 100644 sologger-ui/src/router/index.js create mode 100644 sologger-ui/src/style.css create mode 100644 sologger-ui/src/views/AboutView.vue create mode 100644 sologger-ui/src/views/ConvertView.vue create mode 100644 sologger-ui/src/views/HomeView.vue create mode 100644 sologger-ui/tailwind.config.js create mode 100644 sologger-ui/vite.config.js diff --git a/sologger-ui/.gitignore b/sologger-ui/.gitignore new file mode 100644 index 0000000..0c8e412 --- /dev/null +++ b/sologger-ui/.gitignore @@ -0,0 +1,25 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? +/.vscode/extensions.json diff --git a/sologger-ui/README.md b/sologger-ui/README.md new file mode 100644 index 0000000..1511959 --- /dev/null +++ b/sologger-ui/README.md @@ -0,0 +1,5 @@ +# Vue 3 + Vite + +This template should help get you started developing with Vue 3 in Vite. The template uses Vue 3 ` + + \ No newline at end of file diff --git a/sologger-ui/index.html b/sologger-ui/index.html new file mode 100644 index 0000000..50f4fec --- /dev/null +++ b/sologger-ui/index.html @@ -0,0 +1,13 @@ + + + + + + + Sologger + + +
+ + + diff --git a/sologger-ui/package-lock.json b/sologger-ui/package-lock.json new file mode 100644 index 0000000..0df599f --- /dev/null +++ b/sologger-ui/package-lock.json @@ -0,0 +1,2907 @@ +{ + "name": "sologger-ui", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "sologger-ui", + "version": "0.0.0", + "dependencies": { + "@handsontable/vue3": "^14.6.1", + "handsontable": "^14.6.1", + "primevue": "^4.2.1", + "tailwindcss-primeui": "^0.3.4", + "vue": "^3.5.12", + "vue-router": "^4.4.5" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^5.1.4", + "autoprefixer": "^10.4.20", + "postcss": "^8.4.49", + "postcss-import": "^16.1.0", + "tailwindcss": "^3.4.14", + "vite": "^5.4.10", + "vite-plugin-wasm-pack": "^0.1.12" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz", + "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.26.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", + "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@handsontable/pikaday": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@handsontable/pikaday/-/pikaday-1.0.0.tgz", + "integrity": "sha512-1VN6N38t5/DcjJ7y7XUYrDx1LuzvvzlrFdBdMG90Qo1xc8+LXHqbWbsTEm5Ec5gXTEbDEO53vUT35R+2COmOyg==" + }, + "node_modules/@handsontable/vue3": { + "version": "14.6.1", + "resolved": "https://registry.npmjs.org/@handsontable/vue3/-/vue3-14.6.1.tgz", + "integrity": "sha512-Mxt7eM4Q3aGK2qidf3oBLVrdBWtdYgO1+3p+bdt2Pf9TFN8HiS/nv7m8eHYpBBQ9xfaYsCKv0wRI6nCN0vFEHw==", + "peerDependencies": { + "handsontable": ">=14.0.0", + "vue": "^3.2.22" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@primeuix/styled": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@primeuix/styled/-/styled-0.3.1.tgz", + "integrity": "sha512-MIPtektNrFwEKJU0qXrguoultADtxMC39ghwXIGP3DR3zsB7vWk6VhJ1Mo7TxgWsVi3kHnh6g5v9X50eMFcBHw==", + "dependencies": { + "@primeuix/utils": "^0.3.1" + }, + "engines": { + "node": ">=12.11.0" + } + }, + "node_modules/@primeuix/utils": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@primeuix/utils/-/utils-0.3.1.tgz", + "integrity": "sha512-KFJ8FylTX2j3AN6AvkF8JGSUNb7Dtqz1T5mlZnINDb6bwW+/V/d5wISiMEdhzdso69mmOX7IlYUDsj0w0pvxvA==", + "engines": { + "node": ">=12.11.0" + } + }, + "node_modules/@primevue/core": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@primevue/core/-/core-4.2.2.tgz", + "integrity": "sha512-ZxlbPBKTSpKN2mht2noiFQV689HH2KiM5yDxHyY0NJafxbB16SLgWWwRDcPulNrbLmu5e3joutTv5tB/52kvAQ==", + "dependencies": { + "@primeuix/styled": "^0.3.1", + "@primeuix/utils": "^0.3.1" + }, + "engines": { + "node": ">=12.11.0" + }, + "peerDependencies": { + "vue": "^3.3.0" + } + }, + "node_modules/@primevue/icons": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@primevue/icons/-/icons-4.2.2.tgz", + "integrity": "sha512-x0AwfjB94MoLsmNyQtSGgrEWhZ52SzRQ3X5hEUA30L7tdob66qYmiMKCnjfq2gvJIB477DwB7cxJZhaTxspsDw==", + "dependencies": { + "@primeuix/utils": "^0.3.1", + "@primevue/core": "4.2.2" + }, + "engines": { + "node": ">=12.11.0" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.26.0.tgz", + "integrity": "sha512-gJNwtPDGEaOEgejbaseY6xMFu+CPltsc8/T+diUTTbOQLqD+bnrJq9ulH6WD69TqwqWmrfRAtUv30cCFZlbGTQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.26.0.tgz", + "integrity": "sha512-YJa5Gy8mEZgz5JquFruhJODMq3lTHWLm1fOy+HIANquLzfIOzE9RA5ie3JjCdVb9r46qfAQY/l947V0zfGJ0OQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.26.0.tgz", + "integrity": "sha512-ErTASs8YKbqTBoPLp/kA1B1Um5YSom8QAc4rKhg7b9tyyVqDBlQxy7Bf2wW7yIlPGPg2UODDQcbkTlruPzDosw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.26.0.tgz", + "integrity": "sha512-wbgkYDHcdWW+NqP2mnf2NOuEbOLzDblalrOWcPyY6+BRbVhliavon15UploG7PpBRQ2bZJnbmh8o3yLoBvDIHA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.26.0.tgz", + "integrity": "sha512-Y9vpjfp9CDkAG4q/uwuhZk96LP11fBz/bYdyg9oaHYhtGZp7NrbkQrj/66DYMMP2Yo/QPAsVHkV891KyO52fhg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.26.0.tgz", + "integrity": "sha512-A/jvfCZ55EYPsqeaAt/yDAG4q5tt1ZboWMHEvKAH9Zl92DWvMIbnZe/f/eOXze65aJaaKbL+YeM0Hz4kLQvdwg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.26.0.tgz", + "integrity": "sha512-paHF1bMXKDuizaMODm2bBTjRiHxESWiIyIdMugKeLnjuS1TCS54MF5+Y5Dx8Ui/1RBPVRE09i5OUlaLnv8OGnA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.26.0.tgz", + "integrity": "sha512-cwxiHZU1GAs+TMxvgPfUDtVZjdBdTsQwVnNlzRXC5QzIJ6nhfB4I1ahKoe9yPmoaA/Vhf7m9dB1chGPpDRdGXg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.26.0.tgz", + "integrity": "sha512-4daeEUQutGRCW/9zEo8JtdAgtJ1q2g5oHaoQaZbMSKaIWKDQwQ3Yx0/3jJNmpzrsScIPtx/V+1AfibLisb3AMQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.26.0.tgz", + "integrity": "sha512-eGkX7zzkNxvvS05ROzJ/cO/AKqNvR/7t1jA3VZDi2vRniLKwAWxUr85fH3NsvtxU5vnUUKFHKh8flIBdlo2b3Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.26.0.tgz", + "integrity": "sha512-Odp/lgHbW/mAqw/pU21goo5ruWsytP7/HCC/liOt0zcGG0llYWKrd10k9Fj0pdj3prQ63N5yQLCLiE7HTX+MYw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.26.0.tgz", + "integrity": "sha512-MBR2ZhCTzUgVD0OJdTzNeF4+zsVogIR1U/FsyuFerwcqjZGvg2nYe24SAHp8O5sN8ZkRVbHwlYeHqcSQ8tcYew==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.26.0.tgz", + "integrity": "sha512-YYcg8MkbN17fMbRMZuxwmxWqsmQufh3ZJFxFGoHjrE7bv0X+T6l3glcdzd7IKLiwhT+PZOJCblpnNlz1/C3kGQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.26.0.tgz", + "integrity": "sha512-ZuwpfjCwjPkAOxpjAEjabg6LRSfL7cAJb6gSQGZYjGhadlzKKywDkCUnJ+KEfrNY1jH5EEoSIKLCb572jSiglA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.26.0.tgz", + "integrity": "sha512-+HJD2lFS86qkeF8kNu0kALtifMpPCZU80HvwztIKnYwym3KnA1os6nsX4BGSTLtS2QVAGG1P3guRgsYyMA0Yhg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.26.0.tgz", + "integrity": "sha512-WUQzVFWPSw2uJzX4j6YEbMAiLbs0BUysgysh8s817doAYhR5ybqTI1wtKARQKo6cGop3pHnrUJPFCsXdoFaimQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.26.0.tgz", + "integrity": "sha512-D4CxkazFKBfN1akAIY6ieyOqzoOoBV1OICxgUblWxff/pSjCA2khXlASUx7mK6W1oP4McqhgcCsu6QaLj3WMWg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.26.0.tgz", + "integrity": "sha512-2x8MO1rm4PGEP0xWbubJW5RtbNLk3puzAMaLQd3B3JHVw4KcHlmXcO+Wewx9zCoo7EUFiMlu/aZbCJ7VjMzAag==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/pikaday": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/@types/pikaday/-/pikaday-1.7.4.tgz", + "integrity": "sha512-0KsHVyw5pTG829nqG4IRu7m+BFQlFEBdbE/1i3S5182HeKUKv1uEW0gyEmkJVp5i4IV+9pyh23O83+KpRkSQbw==", + "dependencies": { + "moment": ">=2.14.0" + } + }, + "node_modules/@vitejs/plugin-vue": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.0.tgz", + "integrity": "sha512-7n7KdUEtx/7Yl7I/WVAMZ1bEb0eVvXF3ummWTeLcs/9gvo9pJhuLdouSXGjdZ/MKD1acf1I272+X0RMua4/R3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.12.tgz", + "integrity": "sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/shared": "3.5.12", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.12.tgz", + "integrity": "sha512-9G6PbJ03uwxLHKQ3P42cMTi85lDRvGLB2rSGOiQqtXELat6uI4n8cNz9yjfVHRPIu+MsK6TE418Giruvgptckg==", + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.12", + "@vue/shared": "3.5.12" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.12.tgz", + "integrity": "sha512-2k973OGo2JuAa5+ZlekuQJtitI5CgLMOwgl94BzMCsKZCX/xiqzJYzapl4opFogKHqwJk34vfsaKpfEhd1k5nw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/compiler-core": "3.5.12", + "@vue/compiler-dom": "3.5.12", + "@vue/compiler-ssr": "3.5.12", + "@vue/shared": "3.5.12", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.11", + "postcss": "^8.4.47", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.12.tgz", + "integrity": "sha512-eLwc7v6bfGBSM7wZOGPmRavSWzNFF6+PdRhE+VFJhNCgHiF8AM7ccoqcv5kBXA2eWUfigD7byekvf/JsOfKvPA==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.12", + "@vue/shared": "3.5.12" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.6.4", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz", + "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==", + "license": "MIT" + }, + "node_modules/@vue/reactivity": { + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.12.tgz", + "integrity": "sha512-UzaN3Da7xnJXdz4Okb/BGbAaomRHc3RdoWqTzlvd9+WBR5m3J39J1fGcHes7U3za0ruYn/iYy/a1euhMEHvTAg==", + "license": "MIT", + "dependencies": { + "@vue/shared": "3.5.12" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.12.tgz", + "integrity": "sha512-hrMUYV6tpocr3TL3Ad8DqxOdpDe4zuQY4HPY3X/VRh+L2myQO8MFXPAMarIOSGNu0bFAjh1yBkMPXZBqCk62Uw==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.12", + "@vue/shared": "3.5.12" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.12.tgz", + "integrity": "sha512-q8VFxR9A2MRfBr6/55Q3umyoN7ya836FzRXajPB6/Vvuv0zOPL+qltd9rIMzG/DbRLAIlREmnLsplEF/kotXKA==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.12", + "@vue/runtime-core": "3.5.12", + "@vue/shared": "3.5.12", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.12.tgz", + "integrity": "sha512-I3QoeDDeEPZm8yR28JtY+rk880Oqmj43hreIBVTicisFTx/Dl7JpG72g/X7YF8hnQD3IFhkky5i2bPonwrTVPg==", + "license": "MIT", + "dependencies": { + "@vue/compiler-ssr": "3.5.12", + "@vue/shared": "3.5.12" + }, + "peerDependencies": { + "vue": "3.5.12" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.12.tgz", + "integrity": "sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==", + "license": "MIT" + }, + "node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "license": "MIT" + }, + "node_modules/autoprefixer": { + "version": "10.4.20", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", + "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.3", + "caniuse-lite": "^1.0.30001646", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/bignumber.js": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-8.1.1.tgz", + "integrity": "sha512-QD46ppGintwPGuL1KqmwhR0O+N2cZUg8JG/VzwI2e28sM9TqHjQB10lI4QAaMHVbLzwVLLAwEglpKPViWX+5NQ==", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", + "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001669", + "electron-to-chromium": "^1.5.41", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.1" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001680", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001680.tgz", + "integrity": "sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/chevrotain": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-6.5.0.tgz", + "integrity": "sha512-BwqQ/AgmKJ8jcMEjaSnfMybnKMgGTrtDKowfTP3pX4jwVy0kNjRsT/AP6h+wC3+3NC+X8X15VWBnTCQlX+wQFg==", + "optional": true, + "dependencies": { + "regexp-to-ast": "0.4.0" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/core-js": { + "version": "3.39.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.39.0.tgz", + "integrity": "sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.5.tgz", + "integrity": "sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "license": "Apache-2.0" + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "license": "MIT" + }, + "node_modules/dompurify": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.5.7.tgz", + "integrity": "sha512-2q4bEI+coQM8f5ez7kt2xclg1XsecaV9ASJk/54vwlfRRNQfDqJz2pzQ8t0Ix/ToBpXlVjrRIx7pFC/o8itG2Q==" + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.58", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.58.tgz", + "integrity": "sha512-al2l4r+24ZFL7WzyPTlyD0fC33LLzvxqLCwurtBibVPghRGO9hSTl+tis8t1kD7biPiH/en4U0I7o/nQbYeoVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/handsontable": { + "version": "14.6.1", + "resolved": "https://registry.npmjs.org/handsontable/-/handsontable-14.6.1.tgz", + "integrity": "sha512-uPvGTkV9dgndwRhSjlJpBzSLW7o7LX18GE70HbaBlcaNKUCEEXhzJ7WGlaw6X8rQZqShIB1HAC+h/t98odqVQQ==", + "dependencies": { + "@handsontable/pikaday": "^1.0.0", + "@types/pikaday": "1.7.4", + "core-js": "^3.37.0", + "dompurify": "^2.1.1", + "moment": "2.30.1", + "numbro": "2.1.2", + "pikaday": "1.8.2" + }, + "optionalDependencies": { + "hyperformula": "^2.6.2" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hyperformula": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hyperformula/-/hyperformula-2.7.1.tgz", + "integrity": "sha512-mpVF5zOyNpksZzgTaCQyRAzdC/X43+taz5x1n7zNbs/PUUv0AuLmsy2yfihCr+vihUzN/pk+gXBbOfNpXKOpgA==", + "optional": true, + "dependencies": { + "chevrotain": "^6.5.0", + "tiny-emitter": "^2.1.0" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jiti": { + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/magic-string": { + "version": "0.30.12", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.12.tgz", + "integrity": "sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "engines": { + "node": "*" + } + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/narrowing": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/narrowing/-/narrowing-1.5.0.tgz", + "integrity": "sha512-DUu4XdKgkfAPTAL28k79pdnshDE2W5T24QAnidSPo2F/W1TX6CjNzmEeXQfE5O1lxQvC0GYI6ZRDsLcyzugEYA==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "dev": true, + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/numbro": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/numbro/-/numbro-2.1.2.tgz", + "integrity": "sha512-7w833BxZmKGLE9HI0aREtNVRVH6WTYUUlWf4qgA5gKNhPQ4F/MRZ14sc0v8eoLORprk9ZTVwYaLwj8N3Zgxwiw==", + "dependencies": { + "bignumber.js": "^8.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "license": "BlueOak-1.0.0" + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pikaday": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/pikaday/-/pikaday-1.8.2.tgz", + "integrity": "sha512-TNtsE+34BIax3WtkB/qqu5uepV1McKYEgvL3kWzU7aqPCpMEN6rBF3AOwu4WCwAealWlBGobXny/9kJb49C1ew==" + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss": { + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-16.1.0.tgz", + "integrity": "sha512-7hsAZ4xGXl4MW+OKEWCnF6T5jqBw80/EE9aXg1r2yyn1RsVEU8EtKXbijEODa+rg7iih4bKf7vlvTGYR4CnPNg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "license": "MIT", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "license": "MIT" + }, + "node_modules/primevue": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/primevue/-/primevue-4.2.2.tgz", + "integrity": "sha512-L+WWWdSbyTCwJDLMKoFQpTr2C/VFQHoArPzw8xFwADOB7I5OsDCd5ZQaD+WEn3iFG/25EkFFt59sxGb69zf3eQ==", + "dependencies": { + "@primeuix/styled": "^0.3.1", + "@primeuix/utils": "^0.3.1", + "@primevue/core": "4.2.2", + "@primevue/icons": "4.2.2" + }, + "engines": { + "node": ">=12.11.0" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regexp-to-ast": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/regexp-to-ast/-/regexp-to-ast-0.4.0.tgz", + "integrity": "sha512-4qf/7IsIKfSNHQXSwial1IFmfM1Cc/whNBQqRwe0V2stPe7KmN1U0tWQiIx6JiirgSrisjE0eECdNf7Tav1Ntw==", + "optional": true + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.26.0.tgz", + "integrity": "sha512-ilcl12hnWonG8f+NxU6BlgysVA0gvY2l8N0R84S1HcINbW20bvwuCngJkkInV6LXhwRpucsW5k1ovDwEdBVrNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.6" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.26.0", + "@rollup/rollup-android-arm64": "4.26.0", + "@rollup/rollup-darwin-arm64": "4.26.0", + "@rollup/rollup-darwin-x64": "4.26.0", + "@rollup/rollup-freebsd-arm64": "4.26.0", + "@rollup/rollup-freebsd-x64": "4.26.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.26.0", + "@rollup/rollup-linux-arm-musleabihf": "4.26.0", + "@rollup/rollup-linux-arm64-gnu": "4.26.0", + "@rollup/rollup-linux-arm64-musl": "4.26.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.26.0", + "@rollup/rollup-linux-riscv64-gnu": "4.26.0", + "@rollup/rollup-linux-s390x-gnu": "4.26.0", + "@rollup/rollup-linux-x64-gnu": "4.26.0", + "@rollup/rollup-linux-x64-musl": "4.26.0", + "@rollup/rollup-win32-arm64-msvc": "4.26.0", + "@rollup/rollup-win32-ia32-msvc": "4.26.0", + "@rollup/rollup-win32-x64-msvc": "4.26.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.14", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.14.tgz", + "integrity": "sha512-IcSvOcTRcUtQQ7ILQL5quRDg7Xs93PdJEk1ZLbhhvJc7uj/OAhYOnruEiwnGgBvUtaUAJ8/mhSw1o8L2jCiENA==", + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.0", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss-primeui": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/tailwindcss-primeui/-/tailwindcss-primeui-0.3.4.tgz", + "integrity": "sha512-5+Qfoe5Kpq2Iwrd6umBUb3rQH6b7+pL4jxJUId0Su5agUM6TwCyH5Pyl9R0y3QQB3IRuTxBNmeS11B41f+30zw==", + "peerDependencies": { + "tailwindcss": ">=3.1.0" + } + }, + "node_modules/tailwindcss/node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==", + "optional": true + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "license": "Apache-2.0" + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/vite": { + "version": "5.4.11", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.11.tgz", + "integrity": "sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-plugin-wasm-pack": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/vite-plugin-wasm-pack/-/vite-plugin-wasm-pack-0.1.12.tgz", + "integrity": "sha512-WliYvQp9HXluir4OKGbngkcKxtYtifU11cqLurRRJGsl770Sjr1iIkp5RuvU3IC1poT4A57Z2/YgAKI2Skm7ZA==", + "dev": true, + "dependencies": { + "chalk": "^4.1.2", + "fs-extra": "^10.0.0", + "narrowing": "^1.4.0" + } + }, + "node_modules/vue": { + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.12.tgz", + "integrity": "sha512-CLVZtXtn2ItBIi/zHZ0Sg1Xkb7+PU32bJJ8Bmy7ts3jxXTcbfsEfBivFYYWz1Hur+lalqGAh65Coin0r+HRUfg==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.12", + "@vue/compiler-sfc": "3.5.12", + "@vue/runtime-dom": "3.5.12", + "@vue/server-renderer": "3.5.12", + "@vue/shared": "3.5.12" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-router": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.4.5.tgz", + "integrity": "sha512-4fKZygS8cH1yCyuabAXGUAsyi1b2/o/OKgu/RUb+znIYOxPRxdkytJEx+0wGcpBE1pX6vUgh5jwWOKRGvuA/7Q==", + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^6.6.4" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yaml": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.0.tgz", + "integrity": "sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==", + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + } + } +} diff --git a/sologger-ui/package.json b/sologger-ui/package.json new file mode 100644 index 0000000..44405b5 --- /dev/null +++ b/sologger-ui/package.json @@ -0,0 +1,28 @@ +{ + "name": "sologger-ui", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite build & vite preview" + }, + "dependencies": { + "@handsontable/vue3": "^14.6.1", + "handsontable": "^14.6.1", + "primevue": "^4.2.1", + "tailwindcss-primeui": "^0.3.4", + "vue": "^3.5.12", + "vue-router": "^4.4.5" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^5.1.4", + "autoprefixer": "^10.4.20", + "postcss": "^8.4.49", + "postcss-import": "^16.1.0", + "tailwindcss": "^3.4.14", + "vite": "^5.4.10", + "vite-plugin-wasm-pack": "^0.1.12" + } +} diff --git a/sologger-ui/postcss.config.js b/sologger-ui/postcss.config.js new file mode 100644 index 0000000..235deed --- /dev/null +++ b/sologger-ui/postcss.config.js @@ -0,0 +1,7 @@ +export default { + plugins: { + tailwindcss: {}, + 'postcss-import': {}, + autoprefixer: {}, + }, +} \ No newline at end of file diff --git a/sologger-ui/public/sologger-log-transformer-wasm/pkg/package.json b/sologger-ui/public/sologger-log-transformer-wasm/pkg/package.json new file mode 100644 index 0000000..31ee769 --- /dev/null +++ b/sologger-ui/public/sologger-log-transformer-wasm/pkg/package.json @@ -0,0 +1,30 @@ +{ + "name": "sologger_log_transformer_wasm", + "type": "module", + "collaborators": [ + "Will Kennedy" + ], + "description": "This library provides utility to extract and structure logs from Solana API logSubscribe responses and provides WASM support.", + "version": "0.2.1", + "license": "Apache-2.0", + "repository": { + "type": "git", + "url": "https://github.com/brytelands/sologger" + }, + "files": [ + "sologger_log_transformer_wasm_bg.wasm", + "sologger_log_transformer_wasm.js", + "sologger_log_transformer_wasm.d.ts" + ], + "main": "sologger_log_transformer_wasm.js", + "types": "sologger_log_transformer_wasm.d.ts", + "sideEffects": [ + "./snippets/*" + ], + "keywords": [ + "solana", + "logging", + "json", + "parsing" + ] +} \ No newline at end of file diff --git a/sologger-ui/public/sologger-log-transformer-wasm/pkg/sologger_log_transformer_wasm.d.ts b/sologger-ui/public/sologger-log-transformer-wasm/pkg/sologger_log_transformer_wasm.d.ts new file mode 100644 index 0000000..93b3d2e --- /dev/null +++ b/sologger-ui/public/sologger-log-transformer-wasm/pkg/sologger_log_transformer_wasm.d.ts @@ -0,0 +1,81 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * @param {(string)[]} logs + * @param {(string)[]} program_ids + * @returns {any} + */ +export function parse_logs_basic(logs: (string)[], program_ids: (string)[]): any; +export class WasmLogContextTransformer { + free(): void; + /** + * @param {(string)[]} program_ids + */ + constructor(program_ids: (string)[]); + /** + * @param {any} response + * @returns {any} + */ + from_rpc_response(response: any): any; + /** + * @param {any} rpc_logs_response + * @param {bigint} slot + * @returns {any} + */ + from_rpc_logs_response(rpc_logs_response: any, slot: bigint): any; +} +export class WasmLogParser { + free(): void; + /** + * @param {(string)[]} program_ids + */ + constructor(program_ids: (string)[]); + /** + * @param {(string)[]} logs + * @param {string} transaction_error + * @param {bigint} slot + * @param {string} signature + * @returns {any} + */ + parse_logs(logs: (string)[], transaction_error: string, slot: bigint, signature: string): any; +} + +export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module; + +export interface InitOutput { + readonly memory: WebAssembly.Memory; + readonly __wbg_wasmlogcontexttransformer_free: (a: number, b: number) => void; + readonly wasmlogcontexttransformer_new: (a: number, b: number) => number; + readonly wasmlogcontexttransformer_from_rpc_response: (a: number, b: number, c: number) => void; + readonly wasmlogcontexttransformer_from_rpc_logs_response: (a: number, b: number, c: number, d: number) => void; + readonly __wbg_wasmlogparser_free: (a: number, b: number) => void; + readonly wasmlogparser_new: (a: number, b: number) => number; + readonly wasmlogparser_parse_logs: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => number; + readonly parse_logs_basic: (a: number, b: number, c: number, d: number) => number; + readonly __wbindgen_malloc: (a: number, b: number) => number; + readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number; + readonly __wbindgen_add_to_stack_pointer: (a: number) => number; + readonly __wbindgen_exn_store: (a: number) => void; + readonly __wbindgen_free: (a: number, b: number, c: number) => void; +} + +export type SyncInitInput = BufferSource | WebAssembly.Module; +/** +* Instantiates the given `module`, which can either be bytes or +* a precompiled `WebAssembly.Module`. +* +* @param {{ module: SyncInitInput }} module - Passing `SyncInitInput` directly is deprecated. +* +* @returns {InitOutput} +*/ +export function initSync(module: { module: SyncInitInput } | SyncInitInput): InitOutput; + +/** +* If `module_or_path` is {RequestInfo} or {URL}, makes a request and +* for everything else, calls `WebAssembly.instantiate` directly. +* +* @param {{ module_or_path: InitInput | Promise }} module_or_path - Passing `InitInput` directly is deprecated. +* +* @returns {Promise} +*/ +export default function __wbg_init (module_or_path?: { module_or_path: InitInput | Promise } | InitInput | Promise): Promise; diff --git a/sologger-ui/public/sologger-log-transformer-wasm/pkg/sologger_log_transformer_wasm.js b/sologger-ui/public/sologger-log-transformer-wasm/pkg/sologger_log_transformer_wasm.js new file mode 100644 index 0000000..27e972a --- /dev/null +++ b/sologger-ui/public/sologger-log-transformer-wasm/pkg/sologger_log_transformer_wasm.js @@ -0,0 +1,660 @@ +let wasm; + +const heap = new Array(128).fill(undefined); + +heap.push(undefined, null, true, false); + +function getObject(idx) { return heap[idx]; } + +let WASM_VECTOR_LEN = 0; + +let cachedUint8ArrayMemory0 = null; + +function getUint8ArrayMemory0() { + if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) { + cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer); + } + return cachedUint8ArrayMemory0; +} + +const cachedTextEncoder = (typeof TextEncoder !== 'undefined' ? new TextEncoder('utf-8') : { encode: () => { throw Error('TextEncoder not available') } } ); + +const encodeString = (typeof cachedTextEncoder.encodeInto === 'function' + ? function (arg, view) { + return cachedTextEncoder.encodeInto(arg, view); +} + : function (arg, view) { + const buf = cachedTextEncoder.encode(arg); + view.set(buf); + return { + read: arg.length, + written: buf.length + }; +}); + +function passStringToWasm0(arg, malloc, realloc) { + + if (realloc === undefined) { + const buf = cachedTextEncoder.encode(arg); + const ptr = malloc(buf.length, 1) >>> 0; + getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf); + WASM_VECTOR_LEN = buf.length; + return ptr; + } + + let len = arg.length; + let ptr = malloc(len, 1) >>> 0; + + const mem = getUint8ArrayMemory0(); + + let offset = 0; + + for (; offset < len; offset++) { + const code = arg.charCodeAt(offset); + if (code > 0x7F) break; + mem[ptr + offset] = code; + } + + if (offset !== len) { + if (offset !== 0) { + arg = arg.slice(offset); + } + ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0; + const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len); + const ret = encodeString(arg, view); + + offset += ret.written; + ptr = realloc(ptr, len, offset, 1) >>> 0; + } + + WASM_VECTOR_LEN = offset; + return ptr; +} + +function isLikeNone(x) { + return x === undefined || x === null; +} + +let cachedDataViewMemory0 = null; + +function getDataViewMemory0() { + if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) { + cachedDataViewMemory0 = new DataView(wasm.memory.buffer); + } + return cachedDataViewMemory0; +} + +let heap_next = heap.length; + +function dropObject(idx) { + if (idx < 132) return; + heap[idx] = heap_next; + heap_next = idx; +} + +function takeObject(idx) { + const ret = getObject(idx); + dropObject(idx); + return ret; +} + +const cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } ); + +if (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); }; + +function getStringFromWasm0(ptr, len) { + ptr = ptr >>> 0; + return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len)); +} + +function addHeapObject(obj) { + if (heap_next === heap.length) heap.push(heap.length + 1); + const idx = heap_next; + heap_next = heap[idx]; + + heap[idx] = obj; + return idx; +} + +function debugString(val) { + // primitive types + const type = typeof val; + if (type == 'number' || type == 'boolean' || val == null) { + return `${val}`; + } + if (type == 'string') { + return `"${val}"`; + } + if (type == 'symbol') { + const description = val.description; + if (description == null) { + return 'Symbol'; + } else { + return `Symbol(${description})`; + } + } + if (type == 'function') { + const name = val.name; + if (typeof name == 'string' && name.length > 0) { + return `Function(${name})`; + } else { + return 'Function'; + } + } + // objects + if (Array.isArray(val)) { + const length = val.length; + let debug = '['; + if (length > 0) { + debug += debugString(val[0]); + } + for(let i = 1; i < length; i++) { + debug += ', ' + debugString(val[i]); + } + debug += ']'; + return debug; + } + // Test for built-in + const builtInMatches = /\[object ([^\]]+)\]/.exec(toString.call(val)); + let className; + if (builtInMatches.length > 1) { + className = builtInMatches[1]; + } else { + // Failed to match the standard '[object ClassName]' + return toString.call(val); + } + if (className == 'Object') { + // we're a user defined class or Object + // JSON.stringify avoids problems with cycles, and is generally much + // easier than looping through ownProperties of `val`. + try { + return 'Object(' + JSON.stringify(val) + ')'; + } catch (_) { + return 'Object'; + } + } + // errors + if (val instanceof Error) { + return `${val.name}: ${val.message}\n${val.stack}`; + } + // TODO we could test for more things here, like `Set`s and `Map`s. + return className; +} + +function passArrayJsValueToWasm0(array, malloc) { + const ptr = malloc(array.length * 4, 4) >>> 0; + const mem = getDataViewMemory0(); + for (let i = 0; i < array.length; i++) { + mem.setUint32(ptr + 4 * i, addHeapObject(array[i]), true); + } + WASM_VECTOR_LEN = array.length; + return ptr; +} +/** + * @param {(string)[]} logs + * @param {(string)[]} program_ids + * @returns {any} + */ +export function parse_logs_basic(logs, program_ids) { + const ptr0 = passArrayJsValueToWasm0(logs, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + const ptr1 = passArrayJsValueToWasm0(program_ids, wasm.__wbindgen_malloc); + const len1 = WASM_VECTOR_LEN; + const ret = wasm.parse_logs_basic(ptr0, len0, ptr1, len1); + return takeObject(ret); +} + +function handleError(f, args) { + try { + return f.apply(this, args); + } catch (e) { + wasm.__wbindgen_exn_store(addHeapObject(e)); + } +} + +const WasmLogContextTransformerFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_wasmlogcontexttransformer_free(ptr >>> 0, 1)); + +export class WasmLogContextTransformer { + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + WasmLogContextTransformerFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_wasmlogcontexttransformer_free(ptr, 0); + } + /** + * @param {(string)[]} program_ids + */ + constructor(program_ids) { + const ptr0 = passArrayJsValueToWasm0(program_ids, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.wasmlogcontexttransformer_new(ptr0, len0); + this.__wbg_ptr = ret >>> 0; + WasmLogContextTransformerFinalization.register(this, this.__wbg_ptr, this); + return this; + } + /** + * @param {any} response + * @returns {any} + */ + from_rpc_response(response) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.wasmlogcontexttransformer_from_rpc_response(retptr, this.__wbg_ptr, addHeapObject(response)); + var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true); + var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true); + var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true); + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {any} rpc_logs_response + * @param {bigint} slot + * @returns {any} + */ + from_rpc_logs_response(rpc_logs_response, slot) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.wasmlogcontexttransformer_from_rpc_logs_response(retptr, this.__wbg_ptr, addHeapObject(rpc_logs_response), slot); + var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true); + var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true); + var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true); + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } +} + +const WasmLogParserFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_wasmlogparser_free(ptr >>> 0, 1)); + +export class WasmLogParser { + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + WasmLogParserFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_wasmlogparser_free(ptr, 0); + } + /** + * @param {(string)[]} program_ids + */ + constructor(program_ids) { + const ptr0 = passArrayJsValueToWasm0(program_ids, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.wasmlogparser_new(ptr0, len0); + this.__wbg_ptr = ret >>> 0; + WasmLogParserFinalization.register(this, this.__wbg_ptr, this); + return this; + } + /** + * @param {(string)[]} logs + * @param {string} transaction_error + * @param {bigint} slot + * @param {string} signature + * @returns {any} + */ + parse_logs(logs, transaction_error, slot, signature) { + const ptr0 = passArrayJsValueToWasm0(logs, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + const ptr1 = passStringToWasm0(transaction_error, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + const ptr2 = passStringToWasm0(signature, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len2 = WASM_VECTOR_LEN; + const ret = wasm.wasmlogparser_parse_logs(this.__wbg_ptr, ptr0, len0, ptr1, len1, slot, ptr2, len2); + return takeObject(ret); + } +} + +async function __wbg_load(module, imports) { + if (typeof Response === 'function' && module instanceof Response) { + if (typeof WebAssembly.instantiateStreaming === 'function') { + try { + return await WebAssembly.instantiateStreaming(module, imports); + + } catch (e) { + if (module.headers.get('Content-Type') != 'application/wasm') { + console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); + + } else { + throw e; + } + } + } + + const bytes = await module.arrayBuffer(); + return await WebAssembly.instantiate(bytes, imports); + + } else { + const instance = await WebAssembly.instantiate(module, imports); + + if (instance instanceof WebAssembly.Instance) { + return { instance, module }; + + } else { + return instance; + } + } +} + +function __wbg_get_imports() { + const imports = {}; + imports.wbg = {}; + imports.wbg.__wbindgen_string_get = function(arg0, arg1) { + const obj = getObject(arg1); + const ret = typeof(obj) === 'string' ? obj : undefined; + var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); + }; + imports.wbg.__wbindgen_object_drop_ref = function(arg0) { + takeObject(arg0); + }; + imports.wbg.__wbindgen_error_new = function(arg0, arg1) { + const ret = new Error(getStringFromWasm0(arg0, arg1)); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_is_string = function(arg0) { + const ret = typeof(getObject(arg0)) === 'string'; + return ret; + }; + imports.wbg.__wbindgen_is_object = function(arg0) { + const val = getObject(arg0); + const ret = typeof(val) === 'object' && val !== null; + return ret; + }; + imports.wbg.__wbindgen_is_undefined = function(arg0) { + const ret = getObject(arg0) === undefined; + return ret; + }; + imports.wbg.__wbindgen_in = function(arg0, arg1) { + const ret = getObject(arg0) in getObject(arg1); + return ret; + }; + imports.wbg.__wbindgen_is_bigint = function(arg0) { + const ret = typeof(getObject(arg0)) === 'bigint'; + return ret; + }; + imports.wbg.__wbindgen_bigint_from_u64 = function(arg0) { + const ret = BigInt.asUintN(64, arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_jsval_eq = function(arg0, arg1) { + const ret = getObject(arg0) === getObject(arg1); + return ret; + }; + imports.wbg.__wbindgen_string_new = function(arg0, arg1) { + const ret = getStringFromWasm0(arg0, arg1); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_jsval_loose_eq = function(arg0, arg1) { + const ret = getObject(arg0) == getObject(arg1); + return ret; + }; + imports.wbg.__wbindgen_boolean_get = function(arg0) { + const v = getObject(arg0); + const ret = typeof(v) === 'boolean' ? (v ? 1 : 0) : 2; + return ret; + }; + imports.wbg.__wbindgen_number_get = function(arg0, arg1) { + const obj = getObject(arg1); + const ret = typeof(obj) === 'number' ? obj : undefined; + getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true); + }; + imports.wbg.__wbindgen_as_number = function(arg0) { + const ret = +getObject(arg0); + return ret; + }; + imports.wbg.__wbindgen_number_new = function(arg0) { + const ret = arg0; + return addHeapObject(ret); + }; + imports.wbg.__wbg_getwithrefkey_edc2c8960f0f1191 = function(arg0, arg1) { + const ret = getObject(arg0)[getObject(arg1)]; + return addHeapObject(ret); + }; + imports.wbg.__wbg_set_f975102236d3c502 = function(arg0, arg1, arg2) { + getObject(arg0)[takeObject(arg1)] = takeObject(arg2); + }; + imports.wbg.__wbindgen_object_clone_ref = function(arg0) { + const ret = getObject(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_get_5419cf6b954aa11d = function(arg0, arg1) { + const ret = getObject(arg0)[arg1 >>> 0]; + return addHeapObject(ret); + }; + imports.wbg.__wbg_length_f217bbbf7e8e4df4 = function(arg0) { + const ret = getObject(arg0).length; + return ret; + }; + imports.wbg.__wbg_new_034f913e7636e987 = function() { + const ret = new Array(); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_is_function = function(arg0) { + const ret = typeof(getObject(arg0)) === 'function'; + return ret; + }; + imports.wbg.__wbg_next_13b477da1eaa3897 = function(arg0) { + const ret = getObject(arg0).next; + return addHeapObject(ret); + }; + imports.wbg.__wbg_next_b06e115d1b01e10b = function() { return handleError(function (arg0) { + const ret = getObject(arg0).next(); + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_done_983b5ffcaec8c583 = function(arg0) { + const ret = getObject(arg0).done; + return ret; + }; + imports.wbg.__wbg_value_2ab8a198c834c26a = function(arg0) { + const ret = getObject(arg0).value; + return addHeapObject(ret); + }; + imports.wbg.__wbg_iterator_695d699a44d6234c = function() { + const ret = Symbol.iterator; + return addHeapObject(ret); + }; + imports.wbg.__wbg_get_ef828680c64da212 = function() { return handleError(function (arg0, arg1) { + const ret = Reflect.get(getObject(arg0), getObject(arg1)); + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_call_a9ef466721e824f2 = function() { return handleError(function (arg0, arg1) { + const ret = getObject(arg0).call(getObject(arg1)); + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_new_e69b5f66fda8f13c = function() { + const ret = new Object(); + return addHeapObject(ret); + }; + imports.wbg.__wbg_set_425e70f7c64ac962 = function(arg0, arg1, arg2) { + getObject(arg0)[arg1 >>> 0] = takeObject(arg2); + }; + imports.wbg.__wbg_isArray_6f3b47f09adb61b5 = function(arg0) { + const ret = Array.isArray(getObject(arg0)); + return ret; + }; + imports.wbg.__wbg_instanceof_ArrayBuffer_74945570b4a62ec7 = function(arg0) { + let result; + try { + result = getObject(arg0) instanceof ArrayBuffer; + } catch (_) { + result = false; + } + const ret = result; + return ret; + }; + imports.wbg.__wbg_isSafeInteger_b9dff570f01a9100 = function(arg0) { + const ret = Number.isSafeInteger(getObject(arg0)); + return ret; + }; + imports.wbg.__wbg_entries_c02034de337d3ee2 = function(arg0) { + const ret = Object.entries(getObject(arg0)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_buffer_ccaed51a635d8a2d = function(arg0) { + const ret = getObject(arg0).buffer; + return addHeapObject(ret); + }; + imports.wbg.__wbg_new_fec2611eb9180f95 = function(arg0) { + const ret = new Uint8Array(getObject(arg0)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_set_ec2fcf81bc573fd9 = function(arg0, arg1, arg2) { + getObject(arg0).set(getObject(arg1), arg2 >>> 0); + }; + imports.wbg.__wbg_length_9254c4bd3b9f23c4 = function(arg0) { + const ret = getObject(arg0).length; + return ret; + }; + imports.wbg.__wbg_instanceof_Uint8Array_df0761410414ef36 = function(arg0) { + let result; + try { + result = getObject(arg0) instanceof Uint8Array; + } catch (_) { + result = false; + } + const ret = result; + return ret; + }; + imports.wbg.__wbg_new_abda76e883ba8a5f = function() { + const ret = new Error(); + return addHeapObject(ret); + }; + imports.wbg.__wbg_stack_658279fe44541cf6 = function(arg0, arg1) { + const ret = getObject(arg1).stack; + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); + }; + imports.wbg.__wbg_error_f851667af71bcfc6 = function(arg0, arg1) { + let deferred0_0; + let deferred0_1; + try { + deferred0_0 = arg0; + deferred0_1 = arg1; + console.error(getStringFromWasm0(arg0, arg1)); + } finally { + wasm.__wbindgen_free(deferred0_0, deferred0_1, 1); + } + }; + imports.wbg.__wbindgen_bigint_get_as_i64 = function(arg0, arg1) { + const v = getObject(arg1); + const ret = typeof(v) === 'bigint' ? v : undefined; + getDataViewMemory0().setBigInt64(arg0 + 8 * 1, isLikeNone(ret) ? BigInt(0) : ret, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true); + }; + imports.wbg.__wbindgen_debug_string = function(arg0, arg1) { + const ret = debugString(getObject(arg1)); + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); + }; + imports.wbg.__wbindgen_throw = function(arg0, arg1) { + throw new Error(getStringFromWasm0(arg0, arg1)); + }; + imports.wbg.__wbindgen_memory = function() { + const ret = wasm.memory; + return addHeapObject(ret); + }; + + return imports; +} + +function __wbg_init_memory(imports, memory) { + +} + +function __wbg_finalize_init(instance, module) { + wasm = instance.exports; + __wbg_init.__wbindgen_wasm_module = module; + cachedDataViewMemory0 = null; + cachedUint8ArrayMemory0 = null; + + + + return wasm; +} + +function initSync(module) { + if (wasm !== undefined) return wasm; + + + if (typeof module !== 'undefined') { + if (Object.getPrototypeOf(module) === Object.prototype) { + ({module} = module) + } else { + console.warn('using deprecated parameters for `initSync()`; pass a single object instead') + } + } + + const imports = __wbg_get_imports(); + + __wbg_init_memory(imports); + + if (!(module instanceof WebAssembly.Module)) { + module = new WebAssembly.Module(module); + } + + const instance = new WebAssembly.Instance(module, imports); + + return __wbg_finalize_init(instance, module); +} + +async function __wbg_init(module_or_path) { + if (wasm !== undefined) return wasm; + + + if (typeof module_or_path !== 'undefined') { + if (Object.getPrototypeOf(module_or_path) === Object.prototype) { + ({module_or_path} = module_or_path) + } else { + console.warn('using deprecated parameters for the initialization function; pass a single object instead') + } + } + + if (typeof module_or_path === 'undefined') { + module_or_path = new URL('sologger_log_transformer_wasm_bg.wasm', import.meta.url); + } + const imports = __wbg_get_imports(); + + if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) { + module_or_path = fetch(module_or_path); + } + + __wbg_init_memory(imports); + + const { instance, module } = await __wbg_load(await module_or_path, imports); + + return __wbg_finalize_init(instance, module); +} + +export { initSync }; +export default __wbg_init; diff --git a/sologger-ui/public/sologger-log-transformer-wasm/pkg/sologger_log_transformer_wasm_bg.js b/sologger-ui/public/sologger-log-transformer-wasm/pkg/sologger_log_transformer_wasm_bg.js new file mode 100644 index 0000000..112c95b --- /dev/null +++ b/sologger-ui/public/sologger-log-transformer-wasm/pkg/sologger_log_transformer_wasm_bg.js @@ -0,0 +1,608 @@ +let wasm; +export function __wbg_set_wasm(val) { + wasm = val; +} + + +const heap = new Array(128).fill(undefined); + +heap.push(undefined, null, true, false); + +function getObject(idx) { return heap[idx]; } + +let WASM_VECTOR_LEN = 0; + +let cachedUint8ArrayMemory0 = null; + +function getUint8ArrayMemory0() { + if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) { + cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer); + } + return cachedUint8ArrayMemory0; +} + +const lTextEncoder = typeof TextEncoder === 'undefined' ? (0, module.require)('util').TextEncoder : TextEncoder; + +let cachedTextEncoder = new lTextEncoder('utf-8'); + +const encodeString = (typeof cachedTextEncoder.encodeInto === 'function' + ? function (arg, view) { + return cachedTextEncoder.encodeInto(arg, view); +} + : function (arg, view) { + const buf = cachedTextEncoder.encode(arg); + view.set(buf); + return { + read: arg.length, + written: buf.length + }; +}); + +function passStringToWasm0(arg, malloc, realloc) { + + if (realloc === undefined) { + const buf = cachedTextEncoder.encode(arg); + const ptr = malloc(buf.length, 1) >>> 0; + getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf); + WASM_VECTOR_LEN = buf.length; + return ptr; + } + + let len = arg.length; + let ptr = malloc(len, 1) >>> 0; + + const mem = getUint8ArrayMemory0(); + + let offset = 0; + + for (; offset < len; offset++) { + const code = arg.charCodeAt(offset); + if (code > 0x7F) break; + mem[ptr + offset] = code; + } + + if (offset !== len) { + if (offset !== 0) { + arg = arg.slice(offset); + } + ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0; + const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len); + const ret = encodeString(arg, view); + + offset += ret.written; + ptr = realloc(ptr, len, offset, 1) >>> 0; + } + + WASM_VECTOR_LEN = offset; + return ptr; +} + +function isLikeNone(x) { + return x === undefined || x === null; +} + +let cachedDataViewMemory0 = null; + +function getDataViewMemory0() { + if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) { + cachedDataViewMemory0 = new DataView(wasm.memory.buffer); + } + return cachedDataViewMemory0; +} + +let heap_next = heap.length; + +function dropObject(idx) { + if (idx < 132) return; + heap[idx] = heap_next; + heap_next = idx; +} + +function takeObject(idx) { + const ret = getObject(idx); + dropObject(idx); + return ret; +} + +const lTextDecoder = typeof TextDecoder === 'undefined' ? (0, module.require)('util').TextDecoder : TextDecoder; + +let cachedTextDecoder = new lTextDecoder('utf-8', { ignoreBOM: true, fatal: true }); + +cachedTextDecoder.decode(); + +function getStringFromWasm0(ptr, len) { + ptr = ptr >>> 0; + return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len)); +} + +function addHeapObject(obj) { + if (heap_next === heap.length) heap.push(heap.length + 1); + const idx = heap_next; + heap_next = heap[idx]; + + heap[idx] = obj; + return idx; +} + +function debugString(val) { + // primitive types + const type = typeof val; + if (type == 'number' || type == 'boolean' || val == null) { + return `${val}`; + } + if (type == 'string') { + return `"${val}"`; + } + if (type == 'symbol') { + const description = val.description; + if (description == null) { + return 'Symbol'; + } else { + return `Symbol(${description})`; + } + } + if (type == 'function') { + const name = val.name; + if (typeof name == 'string' && name.length > 0) { + return `Function(${name})`; + } else { + return 'Function'; + } + } + // objects + if (Array.isArray(val)) { + const length = val.length; + let debug = '['; + if (length > 0) { + debug += debugString(val[0]); + } + for(let i = 1; i < length; i++) { + debug += ', ' + debugString(val[i]); + } + debug += ']'; + return debug; + } + // Test for built-in + const builtInMatches = /\[object ([^\]]+)\]/.exec(toString.call(val)); + let className; + if (builtInMatches.length > 1) { + className = builtInMatches[1]; + } else { + // Failed to match the standard '[object ClassName]' + return toString.call(val); + } + if (className == 'Object') { + // we're a user defined class or Object + // JSON.stringify avoids problems with cycles, and is generally much + // easier than looping through ownProperties of `val`. + try { + return 'Object(' + JSON.stringify(val) + ')'; + } catch (_) { + return 'Object'; + } + } + // errors + if (val instanceof Error) { + return `${val.name}: ${val.message}\n${val.stack}`; + } + // TODO we could test for more things here, like `Set`s and `Map`s. + return className; +} + +function passArrayJsValueToWasm0(array, malloc) { + const ptr = malloc(array.length * 4, 4) >>> 0; + const mem = getDataViewMemory0(); + for (let i = 0; i < array.length; i++) { + mem.setUint32(ptr + 4 * i, addHeapObject(array[i]), true); + } + WASM_VECTOR_LEN = array.length; + return ptr; +} +/** + * @param {(string)[]} logs + * @param {(string)[]} program_ids + * @returns {any} + */ +export function parse_logs_basic(logs, program_ids) { + const ptr0 = passArrayJsValueToWasm0(logs, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + const ptr1 = passArrayJsValueToWasm0(program_ids, wasm.__wbindgen_malloc); + const len1 = WASM_VECTOR_LEN; + const ret = wasm.parse_logs_basic(ptr0, len0, ptr1, len1); + return takeObject(ret); +} + +function handleError(f, args) { + try { + return f.apply(this, args); + } catch (e) { + wasm.__wbindgen_exn_store(addHeapObject(e)); + } +} + +const WasmLogContextTransformerFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_wasmlogcontexttransformer_free(ptr >>> 0, 1)); + +export class WasmLogContextTransformer { + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + WasmLogContextTransformerFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_wasmlogcontexttransformer_free(ptr, 0); + } + /** + * @param {(string)[]} program_ids + */ + constructor(program_ids) { + const ptr0 = passArrayJsValueToWasm0(program_ids, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.wasmlogcontexttransformer_new(ptr0, len0); + this.__wbg_ptr = ret >>> 0; + WasmLogContextTransformerFinalization.register(this, this.__wbg_ptr, this); + return this; + } + /** + * @param {any} response + * @returns {any} + */ + from_rpc_response(response) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.wasmlogcontexttransformer_from_rpc_response(retptr, this.__wbg_ptr, addHeapObject(response)); + var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true); + var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true); + var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true); + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * @param {any} rpc_logs_response + * @param {bigint} slot + * @returns {any} + */ + from_rpc_logs_response(rpc_logs_response, slot) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.wasmlogcontexttransformer_from_rpc_logs_response(retptr, this.__wbg_ptr, addHeapObject(rpc_logs_response), slot); + var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true); + var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true); + var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true); + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } +} + +const WasmLogParserFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_wasmlogparser_free(ptr >>> 0, 1)); + +export class WasmLogParser { + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + WasmLogParserFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_wasmlogparser_free(ptr, 0); + } + /** + * @param {(string)[]} program_ids + */ + constructor(program_ids) { + const ptr0 = passArrayJsValueToWasm0(program_ids, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.wasmlogparser_new(ptr0, len0); + this.__wbg_ptr = ret >>> 0; + WasmLogParserFinalization.register(this, this.__wbg_ptr, this); + return this; + } + /** + * @param {(string)[]} logs + * @param {string} transaction_error + * @param {bigint} slot + * @param {string} signature + * @returns {any} + */ + parse_logs(logs, transaction_error, slot, signature) { + const ptr0 = passArrayJsValueToWasm0(logs, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + const ptr1 = passStringToWasm0(transaction_error, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + const ptr2 = passStringToWasm0(signature, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len2 = WASM_VECTOR_LEN; + const ret = wasm.wasmlogparser_parse_logs(this.__wbg_ptr, ptr0, len0, ptr1, len1, slot, ptr2, len2); + return takeObject(ret); + } +} + +export function __wbindgen_string_get(arg0, arg1) { + const obj = getObject(arg1); + const ret = typeof(obj) === 'string' ? obj : undefined; + var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); +}; + +export function __wbindgen_object_drop_ref(arg0) { + takeObject(arg0); +}; + +export function __wbindgen_error_new(arg0, arg1) { + const ret = new Error(getStringFromWasm0(arg0, arg1)); + return addHeapObject(ret); +}; + +export function __wbindgen_is_string(arg0) { + const ret = typeof(getObject(arg0)) === 'string'; + return ret; +}; + +export function __wbindgen_is_object(arg0) { + const val = getObject(arg0); + const ret = typeof(val) === 'object' && val !== null; + return ret; +}; + +export function __wbindgen_is_undefined(arg0) { + const ret = getObject(arg0) === undefined; + return ret; +}; + +export function __wbindgen_in(arg0, arg1) { + const ret = getObject(arg0) in getObject(arg1); + return ret; +}; + +export function __wbindgen_is_bigint(arg0) { + const ret = typeof(getObject(arg0)) === 'bigint'; + return ret; +}; + +export function __wbindgen_bigint_from_u64(arg0) { + const ret = BigInt.asUintN(64, arg0); + return addHeapObject(ret); +}; + +export function __wbindgen_jsval_eq(arg0, arg1) { + const ret = getObject(arg0) === getObject(arg1); + return ret; +}; + +export function __wbindgen_string_new(arg0, arg1) { + const ret = getStringFromWasm0(arg0, arg1); + return addHeapObject(ret); +}; + +export function __wbindgen_jsval_loose_eq(arg0, arg1) { + const ret = getObject(arg0) == getObject(arg1); + return ret; +}; + +export function __wbindgen_boolean_get(arg0) { + const v = getObject(arg0); + const ret = typeof(v) === 'boolean' ? (v ? 1 : 0) : 2; + return ret; +}; + +export function __wbindgen_number_get(arg0, arg1) { + const obj = getObject(arg1); + const ret = typeof(obj) === 'number' ? obj : undefined; + getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true); +}; + +export function __wbindgen_as_number(arg0) { + const ret = +getObject(arg0); + return ret; +}; + +export function __wbindgen_number_new(arg0) { + const ret = arg0; + return addHeapObject(ret); +}; + +export function __wbg_getwithrefkey_edc2c8960f0f1191(arg0, arg1) { + const ret = getObject(arg0)[getObject(arg1)]; + return addHeapObject(ret); +}; + +export function __wbg_set_f975102236d3c502(arg0, arg1, arg2) { + getObject(arg0)[takeObject(arg1)] = takeObject(arg2); +}; + +export function __wbindgen_object_clone_ref(arg0) { + const ret = getObject(arg0); + return addHeapObject(ret); +}; + +export function __wbg_get_5419cf6b954aa11d(arg0, arg1) { + const ret = getObject(arg0)[arg1 >>> 0]; + return addHeapObject(ret); +}; + +export function __wbg_length_f217bbbf7e8e4df4(arg0) { + const ret = getObject(arg0).length; + return ret; +}; + +export function __wbg_new_034f913e7636e987() { + const ret = new Array(); + return addHeapObject(ret); +}; + +export function __wbindgen_is_function(arg0) { + const ret = typeof(getObject(arg0)) === 'function'; + return ret; +}; + +export function __wbg_next_13b477da1eaa3897(arg0) { + const ret = getObject(arg0).next; + return addHeapObject(ret); +}; + +export function __wbg_next_b06e115d1b01e10b() { return handleError(function (arg0) { + const ret = getObject(arg0).next(); + return addHeapObject(ret); +}, arguments) }; + +export function __wbg_done_983b5ffcaec8c583(arg0) { + const ret = getObject(arg0).done; + return ret; +}; + +export function __wbg_value_2ab8a198c834c26a(arg0) { + const ret = getObject(arg0).value; + return addHeapObject(ret); +}; + +export function __wbg_iterator_695d699a44d6234c() { + const ret = Symbol.iterator; + return addHeapObject(ret); +}; + +export function __wbg_get_ef828680c64da212() { return handleError(function (arg0, arg1) { + const ret = Reflect.get(getObject(arg0), getObject(arg1)); + return addHeapObject(ret); +}, arguments) }; + +export function __wbg_call_a9ef466721e824f2() { return handleError(function (arg0, arg1) { + const ret = getObject(arg0).call(getObject(arg1)); + return addHeapObject(ret); +}, arguments) }; + +export function __wbg_new_e69b5f66fda8f13c() { + const ret = new Object(); + return addHeapObject(ret); +}; + +export function __wbg_set_425e70f7c64ac962(arg0, arg1, arg2) { + getObject(arg0)[arg1 >>> 0] = takeObject(arg2); +}; + +export function __wbg_isArray_6f3b47f09adb61b5(arg0) { + const ret = Array.isArray(getObject(arg0)); + return ret; +}; + +export function __wbg_instanceof_ArrayBuffer_74945570b4a62ec7(arg0) { + let result; + try { + result = getObject(arg0) instanceof ArrayBuffer; + } catch (_) { + result = false; + } + const ret = result; + return ret; +}; + +export function __wbg_isSafeInteger_b9dff570f01a9100(arg0) { + const ret = Number.isSafeInteger(getObject(arg0)); + return ret; +}; + +export function __wbg_entries_c02034de337d3ee2(arg0) { + const ret = Object.entries(getObject(arg0)); + return addHeapObject(ret); +}; + +export function __wbg_buffer_ccaed51a635d8a2d(arg0) { + const ret = getObject(arg0).buffer; + return addHeapObject(ret); +}; + +export function __wbg_new_fec2611eb9180f95(arg0) { + const ret = new Uint8Array(getObject(arg0)); + return addHeapObject(ret); +}; + +export function __wbg_set_ec2fcf81bc573fd9(arg0, arg1, arg2) { + getObject(arg0).set(getObject(arg1), arg2 >>> 0); +}; + +export function __wbg_length_9254c4bd3b9f23c4(arg0) { + const ret = getObject(arg0).length; + return ret; +}; + +export function __wbg_instanceof_Uint8Array_df0761410414ef36(arg0) { + let result; + try { + result = getObject(arg0) instanceof Uint8Array; + } catch (_) { + result = false; + } + const ret = result; + return ret; +}; + +export function __wbg_new_abda76e883ba8a5f() { + const ret = new Error(); + return addHeapObject(ret); +}; + +export function __wbg_stack_658279fe44541cf6(arg0, arg1) { + const ret = getObject(arg1).stack; + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); +}; + +export function __wbg_error_f851667af71bcfc6(arg0, arg1) { + let deferred0_0; + let deferred0_1; + try { + deferred0_0 = arg0; + deferred0_1 = arg1; + console.error(getStringFromWasm0(arg0, arg1)); + } finally { + wasm.__wbindgen_free(deferred0_0, deferred0_1, 1); + } +}; + +export function __wbindgen_bigint_get_as_i64(arg0, arg1) { + const v = getObject(arg1); + const ret = typeof(v) === 'bigint' ? v : undefined; + getDataViewMemory0().setBigInt64(arg0 + 8 * 1, isLikeNone(ret) ? BigInt(0) : ret, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true); +}; + +export function __wbindgen_debug_string(arg0, arg1) { + const ret = debugString(getObject(arg1)); + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); +}; + +export function __wbindgen_throw(arg0, arg1) { + throw new Error(getStringFromWasm0(arg0, arg1)); +}; + +export function __wbindgen_memory() { + const ret = wasm.memory; + return addHeapObject(ret); +}; + diff --git a/sologger-ui/public/sologger-log-transformer-wasm/pkg/sologger_log_transformer_wasm_bg.wasm b/sologger-ui/public/sologger-log-transformer-wasm/pkg/sologger_log_transformer_wasm_bg.wasm new file mode 100644 index 0000000000000000000000000000000000000000..2528d48295b3be452ff55b689ac20b783ba5bf11 GIT binary patch literal 1302837 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

(N`^g1{{*#770^ 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

t1l&Dj2 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 literal 0 HcmV?d00001 diff --git a/sologger-ui/public/sologger_logo.svg b/sologger-ui/public/sologger_logo.svg new file mode 100644 index 0000000..5f39a8f --- /dev/null +++ b/sologger-ui/public/sologger_logo.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/sologger-ui/public/sologger_logo_big.png b/sologger-ui/public/sologger_logo_big.png new file mode 100644 index 0000000000000000000000000000000000000000..29dfef4cc5fccef5146512eed2affbacd9e8196e GIT binary patch literal 5157 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 dv$4L(_MDkj;Y9mzcm literal 0 HcmV?d00001 diff --git a/sologger-ui/public/sologger_logo_sm.svg b/sologger-ui/public/sologger_logo_sm.svg new file mode 100644 index 0000000..4e2fdf7 --- /dev/null +++ b/sologger-ui/public/sologger_logo_sm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sologger-ui/public/vite.svg b/sologger-ui/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/sologger-ui/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sologger-ui/src/App.vue b/sologger-ui/src/App.vue new file mode 100644 index 0000000..1ceab13 --- /dev/null +++ b/sologger-ui/src/App.vue @@ -0,0 +1,82 @@ +// src/App.vue + + + + + + \ No newline at end of file diff --git a/sologger-ui/src/assets/primevue/accordion.css b/sologger-ui/src/assets/primevue/accordion.css new file mode 100644 index 0000000..11a13db --- /dev/null +++ b/sologger-ui/src/assets/primevue/accordion.css @@ -0,0 +1,58 @@ +.p-accordionpanel { + @apply flex flex-col border-b border-surface-200 dark:border-surface-700 +} + +.p-accordionheader { + @apply cursor-pointer disabled:cursor-auto flex items-center justify-between p-[1.125rem] font-semibold + bg-surface-0 dark:bg-surface-900 + text-surface-500 dark:text-surface-400 + transition-colors duration-200 +} + +.p-accordionpanel:first-child > .p-accordionheader { + @apply rounded-ss-md rounded-se-md +} + +.p-accordionpanel:last-child > .p-accordionheader { + @apply rounded-ee-md rounded-es-md +} + +.p-accordionpanel:last-child.p-accordionpanel-active > .p-accordionheader { + @apply rounded-ee-md rounded-es-md +} + +.p-accordionheader-toggle-icon { + @apply text-surface-500 dark:text-surface-400 +} + +.p-accordionpanel:not(.p-disabled) .p-accordionheader:focus-visible { + @apply outline outline-1 outline-offset-[-1px] outline-primary +} + +.p-accordionpanel:not(.p-accordionpanel-active):not(.p-disabled) > .p-accordionheader:hover { + @apply bg-surface-0 dark:bg-surface-900 text-surface-700 dark:text-surface-0 +} + +.p-accordionpanel:not(.p-accordionpanel-active):not(.p-disabled) .p-accordionheader:hover .p-accordionheader-toggle-icon { + @apply text-surface-700 dark:text-surface-0 +} + +.p-accordionpanel:not(.p-disabled).p-accordionpanel-active > .p-accordionheader { + @apply bg-surface-0 dark:bg-surface-900 text-surface-700 dark:text-surface-0 +} + +.p-accordionpanel:not(.p-disabled).p-accordionpanel-active > .p-accordionheader .p-accordionheader-toggle-icon { + @apply text-surface-700 dark:text-surface-0; +} + +.p-accordionpanel:not(.p-disabled).p-accordionpanel-active > .p-accordionheader:hover { + @apply bg-surface-0 dark:bg-surface-900 text-surface-700 dark:text-surface-0 +} + +.p-accordionpanel:not(.p-disabled).p-accordionpanel-active > .p-accordionheader:hover .p-accordionheader-toggle-icon { + @apply text-surface-700 dark:text-surface-0; +} + +.p-accordioncontent-content { + @apply bg-surface-0 dark:bg-surface-900 text-surface-700 dark:text-surface-0 pt-0 px-[1.125rem] pb-[1.125rem] +} diff --git a/sologger-ui/src/assets/primevue/autocomplete.css b/sologger-ui/src/assets/primevue/autocomplete.css new file mode 100644 index 0000000..cb64d98 --- /dev/null +++ b/sologger-ui/src/assets/primevue/autocomplete.css @@ -0,0 +1,143 @@ +@import './inputtext'; +@import './chip'; + +.p-autocomplete { + @apply inline-flex +} + +.p-autocomplete.p-disabled { + @apply opacity-100 +} + +.p-autocomplete-loader { + @apply absolute top-1/2 -mt-2 end-3 +} + +.p-autocomplete:has(.p-autocomplete-dropdown) .p-autocomplete-loader { + @apply end-[3.25rem] +} + +.p-autocomplete:has(.p-autocomplete-dropdown) .p-autocomplete-input { + @apply flex-auto w-[1%] +} + +.p-autocomplete:has(.p-autocomplete-dropdown) .p-autocomplete-input, +.p-autocomplete:has(.p-autocomplete-dropdown) .p-autocomplete-input-multiple { + @apply rounded-e-none +} + +.p-autocomplete-dropdown { + @apply cursor-pointer inline-flex items-center justify-center select-none overflow-hidden relative w-10 rounded-e-md + bg-surface-100 enabled:hover:bg-surface-200 enabled:active:bg-surface-300 + text-surface-600 enabled:hover:text-surface-700 enabled:hover:active:text-surface-800 + dark:bg-surface-800 dark:enabled:hover:bg-surface-700 dark:enabled:active:bg-surface-600 + dark:text-surface-300 dark:enabled:hover:text-surface-200 dark:enabled:active:text-surface-100 + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-primary + transition-colors duration-200 +} + +.p-autocomplete .p-autocomplete-overlay { + @apply min-w-full +} + +.p-autocomplete-overlay { + @apply absolute top-0 left-0 rounded-md + bg-surface-0 dark:bg-surface-900 + border border-surface-200 dark:border-surface-700 + text-surface-700 dark:text-surface-0 + shadow-[0_4px_6px_-1px_rgba(0,0,0,0.1),0_2px_4px_-2px_rgba(0,0,0,0.1)] +} + +.p-autocomplete-list-container { + @apply overflow-auto +} + +.p-autocomplete-list { + @apply m-0 p-1 list-none flex flex-col gap-[2px] +} + +.p-autocomplete-option { + @apply cursor-pointer whitespace-nowrap relative overflow-hidden flex items-center px-3 py-2 rounded-sm + text-surface-700 dark:text-surface-0 bg-transparent border-none + transition-colors duration-200 +} + +.p-autocomplete-option:not(.p-autocomplete-option-selected):not(.p-disabled).p-focus { + @apply bg-surface-100 dark:bg-surface-800 text-surface-700 dark:text-surface-0 +} + +.p-autocomplete-option-selected { + @apply bg-highlight +} + +.p-autocomplete-option-selected.p-focus { + @apply bg-highlight-emphasis +} + +.p-autocomplete-option-group { + @apply m-0 px-3 py-2 text-surface-500 dark:text-surface-400 font-semibold bg-transparent +} + +.p-autocomplete-input-multiple { + @apply m-0 list-none cursor-text overflow-hidden flex items-center flex-wrap + px-3 py-1 gap-1 text-surface-700 dark:text-surface-0 bg-surface-0 dark:bg-surface-950 + border border-surface-300 dark:border-surface-700 rounded-md w-full + shadow-[0_1px_2px_0_rgba(18,18,23,0.05)] + transition-colors duration-200 outline-none +} + +.p-autocomplete:not(.p-disabled):hover .p-autocomplete-input-multiple { + @apply border-surface-400 dark:border-surface-600 +} + +.p-autocomplete:not(.p-disabled).p-focus .p-autocomplete-input-multiple { + @apply border-primary +} + +.p-autocomplete.p-invalid .p-autocomplete-input-multiple { + @apply border-red-400 dark:border-red-300 +} + +.p-variant-filled.p-autocomplete-input-multiple { + @apply bg-surface-50 dark:bg-surface-800 +} + +.p-autocomplete.p-disabled .p-autocomplete-input-multiple { + @apply opacity-100 cursor-default bg-surface-200 text-surface-500 dark:bg-surface-700 dark:text-surface-400 +} + +.p-autocomplete-chip.p-chip { + @apply py-1 rounded-sm +} + +.p-autocomplete-input-multiple:has(.p-autocomplete-chip) { + @apply px-1 +} + +.p-autocomplete-chip-item.p-focus .p-autocomplete-chip { + @apply bg-surface-200 text-surface-800 dark:bg-surface-700 dark:text-surface-0 +} + +.p-autocomplete-input-chip { + @apply flex-auto inline-flex py-1 +} + +.p-autocomplete-input-chip input { + @apply border-none outline-none bg-transparent m-0 p-0 shadow-none rounded-none w-full text-inherit +} + +.p-autocomplete-input-chip input::placeholder { + @apply text-surface-500 dark:text-surface-400 +} + +.p-autocomplete-empty-message { + @apply px-3 py-2 +} + +.p-autocomplete-fluid { + @apply flex +} + +.p-autocomplete-fluid:has(.p-autocomplete-dropdown) .p-autocomplete-input { + @apply w-[1%] +} diff --git a/sologger-ui/src/assets/primevue/avatar.css b/sologger-ui/src/assets/primevue/avatar.css new file mode 100644 index 0000000..fde16bb --- /dev/null +++ b/sologger-ui/src/assets/primevue/avatar.css @@ -0,0 +1,50 @@ +.p-avatar { + @apply inline-flex items-center justify-center + w-8 h-8 text-base rounded-md + bg-surface-200 dark:bg-surface-700 +} + +.p-avatar-image { + @apply bg-transparent +} + +.p-avatar-circle, +.p-avatar-circle img { + @apply rounded-full +} + +.p-avatar-icon { + @apply text-base +} + +.p-avatar img { + @apply w-full h-full +} + +.p-avatar-lg { + @apply w-12 h-12 text-2xl +} + +.p-avatar-lg .p-avatar-icon { + @apply text-2xl +} + +.p-avatar-xl { + @apply w-16 h-16 text-[2rem] +} + +.p-avatar-xl .p-avatar-icon { + @apply text-[2rem] +} + +.p-avatar-group { + @apply flex items-center +} + +.p-avatar-group .p-avatar + .p-avatar { + @apply -ms-4 +} + +.p-avatar-group .p-avatar { + @apply border-2 border-surface-200 dark:border-surface-700 +} diff --git a/sologger-ui/src/assets/primevue/badge.css b/sologger-ui/src/assets/primevue/badge.css new file mode 100644 index 0000000..34a6e0c --- /dev/null +++ b/sologger-ui/src/assets/primevue/badge.css @@ -0,0 +1,49 @@ +.p-badge { + @apply inline-flex items-center justify-center rounded-md + py-0 px-2 text-xs font-bold min-w-6 h-6 + bg-primary text-primary-contrast +} + +.p-badge-dot { + @apply min-w-2 h-2 rounded-full p-0 +} + +.p-badge-circle { + @apply p-0 rounded-full +} + +.p-badge-secondary { + @apply bg-surface-100 dark:bg-surface-800 text-surface-600 dark:text-surface-300 +} + +.p-badge-success { + @apply bg-green-500 dark:bg-green-400 text-white dark:text-green-950 +} + +.p-badge-info { + @apply bg-sky-500 dark:bg-sky-400 text-white dark:text-sky-950 +} + +.p-badge-warn { + @apply bg-orange-500 dark:bg-orange-400 text-white dark:text-orange-950 +} + +.p-badge-danger { + @apply bg-red-500 dark:bg-red-400 text-white dark:text-red-950 +} + +.p-badge-contrast { + @apply bg-surface-950 dark:bg-white text-white dark:text-surface-950 +} + +.p-badge-sm { + @apply text-[0.625rem] min-w-5 h-5 +} + +.p-badge-lg { + @apply text-sm min-w-7 h-7 +} + +.p-badge-xl { + @apply text-base min-w-8 h-8 +} \ No newline at end of file diff --git a/sologger-ui/src/assets/primevue/blockui.css b/sologger-ui/src/assets/primevue/blockui.css new file mode 100644 index 0000000..f4f01f3 --- /dev/null +++ b/sologger-ui/src/assets/primevue/blockui.css @@ -0,0 +1,15 @@ +.p-blockui { + @apply relative +} + +.p-blockui-mask { + @apply rounded-md +} + +.p-blockui-mask.p-overlay-mask { + @apply absolute +} + +.p-blockui-mask-document.p-overlay-mask { + @apply fixed +} \ No newline at end of file diff --git a/sologger-ui/src/assets/primevue/breadcrumb.css b/sologger-ui/src/assets/primevue/breadcrumb.css new file mode 100644 index 0000000..69beddf --- /dev/null +++ b/sologger-ui/src/assets/primevue/breadcrumb.css @@ -0,0 +1,41 @@ +.p-breadcrumb { + @apply bg-surface-0 dark:bg-surface-900 p-4 overflow-x-auto +} + +.p-breadcrumb-list { + @apply m-0 p-0 list-none flex items-center flex-nowrap gap-2 +} + +.p-breadcrumb-separator { + @apply flex items-center text-surface-400 dark:text-surface-500 +} + +.p-breadcrumb-separator-icon:dir(rtl) { + @apply rotate-180 +} + +.p-breadcrumb::-webkit-scrollbar { + @apply hidden +} + +.p-breadcrumb-item-link { + @apply no-underline flex items-center gap-2 transition-colors duration-200 rounded-md + text-surface-500 dark:text-surface-400 + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-primary +} + +.p-breadcrumb-item-link:hover .p-breadcrumb-item-label { + @apply text-surface-700 dark:text-surface-0 +} + +.p-breadcrumb-item-label { + @apply transition-colors duration-200 +} + +.p-breadcrumb-item-icon { + @apply text-surface-400 dark:text-surface-500 transition-colors duration-200 +} + +.p-breadcrumb-item-link:hover .p-breadcrumb-item-icon { + @apply text-surface-500 dark:text-surface-400 +} diff --git a/sologger-ui/src/assets/primevue/button.css b/sologger-ui/src/assets/primevue/button.css new file mode 100644 index 0000000..102a0d2 --- /dev/null +++ b/sologger-ui/src/assets/primevue/button.css @@ -0,0 +1,333 @@ +@import './badge'; + +.p-button { + @apply inline-flex cursor-pointer select-none items-center justify-center overflow-hidden relative + bg-primary enabled:hover:bg-primary-emphasis enabled:active:bg-primary-emphasis-alt text-primary-contrast + border border-primary enabled:hover:border-primary-emphasis enabled:active:border-primary-emphasis-alt + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-primary + px-3 py-2 transition-colors duration-200 gap-2 rounded-md + disabled:cursor-default +} + +.p-button-icon-right { + @apply order-1 +} + +.p-button-icon-right:dir(rtl) { + @apply order-[-1] +} + +.p-button:not(.p-button-vertical) .p-button-icon:not(.p-button-icon-right):dir(rtl) { + @apply order-1 +} + +.p-button-icon-bottom { + @apply order-2 +} + +.p-button-icon-only { + @apply w-10 px-0 gap-0 +} + +.p-button-icon-only.p-button-rounded { + @apply rounded-full h-10 +} + +.p-button-icon-only .p-button-label { + @apply invisible w-0 +} + +.p-button-sm { + @apply text-sm px-[0.625rem] py-[0.375rem] +} + +.p-button-sm .p-button-icon { + @apply text-sm +} + +.p-button-lg { + @apply text-[1.125rem] px-[0.875rem] py-[0.625rem] +} + +.p-button-lg .p-button-icon { + @apply text-[1.125rem] +} + +.p-button-vertical { + @apply flex-col +} + +.p-button-label { + @apply font-medium +} + +.p-button-fluid { + @apply w-full +} + +.p-button-fluid.p-button-icon-only { + @apply w-10 +} + +.p-button .p-badge { + @apply min-w-4 h-4 leading-4 +} + +.p-button-raised { + @apply shadow-[0_3px_1px_-2px_rgba(0,0,0,0.2),0_2px_2px_0_rgba(0,0,0,0.14),0_1px_5px_0_rgba(0,0,0,0.12)] +} + +.p-button-rounded { + @apply rounded-[2rem] +} + +.p-button-secondary { + @apply bg-surface-100 enabled:hover:bg-surface-200 enabled:active:bg-surface-300 + border-surface-100 enabled:hover:border-surface-200 enabled:active:border-surface-300 + text-surface-600 enabled:hover:text-surface-700 enabled:active:text-surface-800 + dark:bg-surface-800 dark:enabled:hover:bg-surface-700 dark:enabled:active:bg-surface-600 + dark:border-surface-800 dark:enabled:hover:border-surface-700 dark:enabled:active:border-surface-600 + dark:text-surface-300 dark:enabled:hover:text-surface-200 dark:enabled:active:text-surface-100 + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 + focus-visible:outline-surface-600 dark:focus-visible:outline-surface-300 +} + +.p-button-success { + @apply bg-green-500 enabled:hover:bg-green-600 enabled:active:bg-green-700 + border-green-500 enabled:hover:border-green-600 enabled:active:border-green-700 + text-white enabled:hover:text-white enabled:active:text-white + dark:bg-green-400 dark:enabled:hover:bg-green-300 dark:enabled:active:bg-green-200 + dark:border-green-400 dark:enabled:hover:border-green-300 dark:enabled:active:border-green-200 + dark:text-green-950 dark:enabled:hover:text-green-950 dark:enabled:active:text-green-950 + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 + focus-visible:outline-green-500 dark:focus-visible:outline-green-400 +} + +.p-button-info { + @apply bg-sky-500 enabled:hover:bg-sky-600 enabled:active:bg-sky-700 + border-sky-500 enabled:hover:border-sky-600 enabled:active:border-sky-700 + text-white enabled:hover:text-white enabled:active:text-white + dark:bg-sky-400 dark:enabled:hover:bg-sky-300 dark:enabled:active:bg-sky-200 + dark:border-sky-400 dark:enabled:hover:border-sky-300 dark:enabled:active:border-sky-200 + dark:text-sky-950 dark:enabled:hover:text-sky-950 dark:enabled:active:text-sky-950 + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 + focus-visible:outline-sky-500 dark:focus-visible:outline-sky-400 +} + +.p-button-warn { + @apply bg-orange-500 enabled:hover:bg-orange-600 enabled:active:bg-orange-700 + border-orange-500 enabled:hover:border-orange-600 enabled:active:border-orange-700 + text-white enabled:hover:text-white enabled:active:text-white + dark:bg-orange-400 dark:enabled:hover:bg-orange-300 dark:enabled:active:bg-orange-200 + dark:border-orange-400 dark:enabled:hover:border-orange-300 dark:enabled:active:border-orange-200 + dark:text-orange-950 dark:enabled:hover:text-orange-950 dark:enabled:active:text-orange-950 + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 + focus-visible:outline-orange-500 dark:focus-visible:outline-orange-400 +} + +.p-button-help { + @apply bg-purple-500 enabled:hover:bg-purple-600 enabled:active:bg-purple-700 + border-purple-500 enabled:hover:border-purple-600 enabled:active:border-purple-700 + text-white enabled:hover:text-white enabled:active:text-white + dark:bg-purple-400 dark:enabled:hover:bg-purple-300 dark:enabled:active:bg-purple-200 + dark:border-purple-400 dark:enabled:hover:border-purple-300 dark:enabled:active:border-purple-200 + dark:text-purple-950 dark:enabled:hover:text-purple-950 dark:enabled:active:text-purple-950 + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 + focus-visible:outline-purple-500 dark:focus-visible:outline-purple-400 +} + +.p-button-help { + @apply bg-purple-500 enabled:hover:bg-purple-600 enabled:active:bg-purple-700 + border-purple-500 enabled:hover:border-purple-600 enabled:active:border-purple-700 + text-white enabled:hover:text-white enabled:active:text-white + dark:bg-purple-400 dark:enabled:hover:bg-purple-300 dark:enabled:active:bg-purple-200 + dark:border-purple-400 dark:enabled:hover:border-purple-300 dark:enabled:active:border-purple-200 + dark:text-purple-950 dark:enabled:hover:text-purple-950 dark:enabled:active:text-purple-950 + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 + focus-visible:outline-purple-500 dark:focus-visible:outline-purple-400 +} + +.p-button-danger { + @apply bg-red-500 enabled:hover:bg-red-600 enabled:active:bg-red-700 + border-red-500 enabled:hover:border-red-600 enabled:active:border-red-700 + text-white enabled:hover:text-white enabled:active:text-white + dark:bg-red-400 dark:enabled:hover:bg-red-300 dark:enabled:active:bg-red-200 + dark:border-red-400 dark:enabled:hover:border-red-300 dark:enabled:active:border-red-200 + dark:text-red-950 dark:enabled:hover:text-red-950 dark:enabled:active:text-red-950 + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 + focus-visible:outline-red-500 dark:focus-visible:outline-red-400 +} + +.p-button-contrast { + @apply bg-surface-950 enabled:hover:bg-surface-900 enabled:active:bg-surface-800 + border-surface-950 enabled:hover:border-surface-900 enabled:active:border-surface-800 + text-white enabled:hover:text-white enabled:active:text-white + dark:bg-surface-0 dark:enabled:hover:bg-surface-100 dark:enabled:active:bg-surface-200 + dark:border-surface-100 dark:enabled:hover:border-surface-200 dark:enabled:active:border-surface-300 + dark:text-surface-950 dark:enabled:hover:text-surface-950 dark:enabled:active:text-surface-950 + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 + focus-visible:outline-surface-950 dark:focus-visible:outline-surface-0 +} + +.p-button-outlined { + @apply bg-transparent enabled:hover:bg-primary-50 enabled:active:bg-primary-100 + border-primary-200 enabled:hover:border-primary-200 enabled:active:border-primary-200 + text-primary enabled:hover:text-primary enabled:active:text-primary + dark:bg-transparent dark:enabled:hover:bg-primary/5 dark:enabled:active:bg-primary/15 + dark:border-primary-700 dark:enabled:hover:border-primary-700 dark:enabled:active:border-primary-700 + dark:text-primary dark:enabled:hover:text-primary dark:enabled:active:text-primary +} + +.p-button-outlined.p-button-secondary { + @apply bg-transparent enabled:hover:bg-surface-50 enabled:active:bg-surface-100 + border-surface-200 enabled:hover:border-surface-200 enabled:active:border-surface-200 + text-surface-500 enabled:hover:text-surface-500 enabled:active:text-surface-500 + dark:bg-transparent dark:enabled:hover:bg-white/5 dark:enabled:active:bg-white/15 + dark:border-surface-700 dark:enabled:hover:border-surface-700 dark:enabled:active:border-surface-700 + dark:text-surface-400 dark:enabled:hover:text-surface-400 dark:enabled:active:text-surface-400 +} + +.p-button-outlined.p-button-success { + @apply bg-transparent enabled:hover:bg-green-50 enabled:active:bg-green-100 + border-green-200 enabled:hover:border-green-200 enabled:active:border-green-200 + text-green-500 enabled:hover:text-green-500 enabled:active:text-green-500 + dark:bg-transparent dark:enabled:hover:bg-green-400/5 dark:enabled:active:bg-green-400/15 + dark:border-green-700 dark:enabled:hover:border-green-700 dark:enabled:active:border-green-700 + dark:text-green-400 dark:enabled:hover:text-green-400 dark:enabled:active:text-green-400 +} + +.p-button-outlined.p-button-info { + @apply bg-transparent enabled:hover:bg-sky-50 enabled:active:bg-sky-100 + border-sky-200 enabled:hover:border-sky-200 enabled:active:border-sky-200 + text-sky-500 enabled:hover:text-sky-500 enabled:active:text-sky-500 + dark:bg-transparent dark:enabled:hover:bg-sky-400/5 dark:enabled:active:bg-sky-400/15 + dark:border-sky-700 dark:enabled:hover:border-sky-700 dark:enabled:active:border-sky-700 + dark:text-sky-400 dark:enabled:hover:text-sky-400 dark:enabled:active:text-sky-400 +} + +.p-button-outlined.p-button-warn { + @apply bg-transparent enabled:hover:bg-orange-50 enabled:active:bg-orange-100 + border-orange-200 enabled:hover:border-orange-200 enabled:active:border-orange-200 + text-orange-500 enabled:hover:text-orange-500 enabled:active:text-orange-500 + dark:bg-transparent dark:enabled:hover:bg-orange-400/5 dark:enabled:active:bg-orange-400/15 + dark:border-orange-700 dark:enabled:hover:border-orange-700 dark:enabled:active:border-orange-700 + dark:text-orange-400 dark:enabled:hover:text-orange-400 dark:enabled:active:text-orange-400 +} + +.p-button-outlined.p-button-help { + @apply bg-transparent enabled:hover:bg-purple-50 enabled:active:bg-purple-100 + border-purple-200 enabled:hover:border-purple-200 enabled:active:border-purple-200 + text-purple-500 enabled:hover:text-purple-500 enabled:active:text-purple-500 + dark:bg-transparent dark:enabled:hover:bg-purple-400/5 dark:enabled:active:bg-purple-400/15 + dark:border-purple-700 dark:enabled:hover:border-purple-700 dark:enabled:active:border-purple-700 + dark:text-purple-400 dark:enabled:hover:text-purple-400 dark:enabled:active:text-purple-400 +} + +.p-button-outlined.p-button-danger { + @apply bg-transparent enabled:hover:bg-red-50 enabled:active:bg-red-100 + border-red-200 enabled:hover:border-red-200 enabled:active:border-red-200 + text-red-500 enabled:hover:text-red-500 enabled:active:text-red-500 + dark:bg-transparent dark:enabled:hover:bg-red-400/5 dark:enabled:active:bg-red-400/15 + dark:border-red-700 dark:enabled:hover:border-red-700 dark:enabled:active:border-red-700 + dark:text-red-400 dark:enabled:hover:text-red-400 dark:enabled:active:text-red-400 +} + +.p-button-outlined.p-button-contrast { + @apply bg-transparent enabled:hover:bg-surface-50 enabled:active:bg-surface-100 + border-surface-700 enabled:hover:border-surface-700 enabled:active:border-surface-700 + text-surface-950 enabled:hover:text-surface-950 enabled:active:text-surface-950 + dark:bg-transparent dark:enabled:hover:bg-surface-800 dark:enabled:active:bg-surface-700 + dark:border-surface-500 dark:enabled:hover:border-surface-500 dark:enabled:active:border-surface-500 + dark:text-surface-0 dark:enabled:hover:text-surface-0 dark:enabled:active:text-surface-0 +} + +.p-button-outlined.p-button-plain { + @apply bg-transparent enabled:hover:bg-surface-50 enabled:active:bg-surface-100 + border-surface-200 enabled:hover:border-surface-200 enabled:active:border-surface-200 + text-surface-700 enabled:hover:text-surface-700 enabled:active:text-surface-700 + dark:bg-transparent dark:enabled:hover:bg-surface-800 dark:enabled:active:bg-surface-700 + dark:border-surface-600 dark:enabled:hover:border-surface-600 dark:enabled:active:border-surface-600 + dark:text-surface-0 dark:enabled:hover:text-surface-0 dark:enabled:active:text-surface-0 +} + +.p-button-text { + @apply bg-transparent enabled:hover:bg-primary-50 enabled:active:bg-primary-100 + border-transparent enabled:hover:border-transparent enabled:active:border-transparent + text-primary enabled:hover:text-primary enabled:active:text-primary + dark:bg-transparent dark:enabled:hover:bg-primary/5 dark:enabled:active:bg-primary/15 + dark:border-transparent dark:enabled:hover:border-transparent dark:enabled:active:border-transparent + dark:text-primary dark:enabled:hover:text-primary dark:enabled:active:text-primary +} + +.p-button-text.p-button-secondary { + @apply bg-transparent enabled:hover:bg-surface-50 enabled:active:bg-surface-100 + border-transparent enabled:hover:border-transparent enabled:active:border-transparent + text-surface-500 enabled:hover:text-surface-500 enabled:active:text-surface-500 + dark:bg-transparent dark:enabled:hover:bg-surface-800 dark:enabled:active:bg-surface-700 + dark:border-transparent dark:enabled:hover:border-transparent dark:enabled:active:border-transparent + dark:text-surface-400 dark:enabled:hover:text-surface-400 dark:enabled:active:text-surface-400 +} + +.p-button-text.p-button-success { + @apply bg-transparent enabled:hover:bg-green-50 enabled:active:bg-green-100 + border-transparent enabled:hover:border-transparent enabled:active:border-transparent + text-green-500 enabled:hover:text-green-500 enabled:active:text-green-500 + dark:bg-transparent dark:enabled:hover:bg-green-400/5 dark:enabled:active:bg-green-400/15 + dark:border-transparent dark:enabled:hover:border-transparent dark:enabled:active:border-transparent + dark:text-green-400 dark:enabled:hover:text-green-400 dark:enabled:active:text-green-400 +} + +.p-button-text.p-button-info { + @apply bg-transparent enabled:hover:bg-sky-50 enabled:active:bg-sky-100 + border-transparent enabled:hover:border-transparent enabled:active:border-transparent + text-sky-500 enabled:hover:text-sky-500 enabled:active:text-sky-500 + dark:bg-transparent dark:enabled:hover:bg-sky-400/5 dark:enabled:active:bg-sky-400/15 + dark:border-transparent dark:enabled:hover:border-transparent dark:enabled:active:border-transparent + dark:text-sky-400 dark:enabled:hover:text-sky-400 dark:enabled:active:text-sky-400 +} + +.p-button-text.p-button-warn { + @apply bg-transparent enabled:hover:bg-orange-50 enabled:active:bg-orange-100 + border-transparent enabled:hover:border-transparent enabled:active:border-transparent + text-orange-500 enabled:hover:text-orange-500 enabled:active:text-orange-500 + dark:bg-transparent dark:enabled:hover:bg-orange-400/5 dark:enabled:active:bg-orange-400/15 + dark:border-transparent dark:enabled:hover:border-transparent dark:enabled:active:border-transparent + dark:text-orange-400 dark:enabled:hover:text-orange-400 dark:enabled:active:text-orange-400 +} + +.p-button-text.p-button-help { + @apply bg-transparent enabled:hover:bg-purple-50 enabled:active:bg-purple-100 + border-transparent enabled:hover:border-transparent enabled:active:border-transparent + text-purple-500 enabled:hover:text-purple-500 enabled:active:text-purple-500 + dark:bg-transparent dark:enabled:hover:bg-purple-400/5 dark:enabled:active:bg-purple-400/15 + dark:border-transparent dark:enabled:hover:border-transparent dark:enabled:active:border-transparent + dark:text-purple-400 dark:enabled:hover:text-purple-400 dark:enabled:active:text-purple-400 +} + +.p-button-text.p-button-danger { + @apply bg-transparent enabled:hover:bg-red-50 enabled:active:bg-red-100 + border-transparent enabled:hover:border-transparent enabled:active:border-transparent + text-red-500 enabled:hover:text-red-500 enabled:active:text-red-500 + dark:bg-transparent dark:enabled:hover:bg-red-400/5 dark:enabled:active:bg-red-400/15 + dark:border-transparent dark:enabled:hover:border-transparent dark:enabled:active:border-transparent + dark:text-red-400 dark:enabled:hover:text-red-400 dark:enabled:active:text-red-400 +} + +.p-button-text.p-button-plain { + @apply bg-transparent enabled:hover:bg-surface-50 enabled:active:bg-surface-100 + border-transparent enabled:hover:border-transparent enabled:active:border-transparent + text-surface-700 enabled:hover:text-surface-700 enabled:active:text-surface-700 + dark:bg-transparent dark:enabled:hover:bg-surface-800 dark:enabled:active:bg-surface-700 + dark:border-transparent dark:enabled:hover:border-transparent dark:enabled:active:border-transparent + dark:text-surface-0 dark:enabled:hover:text-surface-0 dark:enabled:active:text-surface-0 +} + +.p-button-link { + @apply bg-transparent enabled:hover:bg-transparent enabled:active:bg-transparent + border-transparent enabled:hover:border-transparent enabled:active:border-transparent + text-primary enabled:hover:text-primary enabled:active:text-primary +} + +.p-button-link:not(:disabled):hover .p-button-label { + @apply underline +} diff --git a/sologger-ui/src/assets/primevue/buttongroup.css b/sologger-ui/src/assets/primevue/buttongroup.css new file mode 100644 index 0000000..b5c888e --- /dev/null +++ b/sologger-ui/src/assets/primevue/buttongroup.css @@ -0,0 +1,19 @@ +.p-buttongroup .p-button { + @apply m-0 focus-visible:relative focus-visible:z-10 +} + +.p-buttongroup .p-button:not(:last-child) { + @apply border-r-0 +} + +.p-buttongroup .p-button:not(:first-of-type):not(:last-of-type) { + @apply rounded-none +} + +.p-buttongroup .p-button:first-of-type:not(:only-of-type) { + @apply rounded-e-none +} + +.p-buttongroup .p-button:last-of-type:not(:only-of-type) { + @apply rounded-s-none +} diff --git a/sologger-ui/src/assets/primevue/card.css b/sologger-ui/src/assets/primevue/card.css new file mode 100644 index 0000000..5c4a9a3 --- /dev/null +++ b/sologger-ui/src/assets/primevue/card.css @@ -0,0 +1,22 @@ +.p-card { + @apply flex flex-col rounded-xl + bg-surface-0 dark:bg-surface-900 + text-surface-700 dark:text-surface-0 + shadow-[0_1px_3px_0_rgba(0,0,0,0.1),0_1px_2px_-1px_rgba(0,0,0,0.1)] +} + +.p-card-caption { + @apply flex flex-col gap-2 +} + +.p-card-body { + @apply p-5 flex flex-col gap-2 +} + +.p-card-title { + @apply font-medium text-xl +} + +.p-card-subtitle { + @apply text-surface-500 dark:text-surface-400 +} \ No newline at end of file diff --git a/sologger-ui/src/assets/primevue/carousel.css b/sologger-ui/src/assets/primevue/carousel.css new file mode 100644 index 0000000..606a8b7 --- /dev/null +++ b/sologger-ui/src/assets/primevue/carousel.css @@ -0,0 +1,64 @@ +@import './button'; + +.p-carousel { + @apply flex flex-col +} + +.p-carousel-content-container { + @apply flex flex-col overflow-auto +} + +.p-carousel-content { + @apply flex flex-row gap-1 +} + +.p-carousel-content:dir(rtl) { + @apply flex-row-reverse +} + +.p-carousel-viewport { + @apply overflow-hidden w-full +} + +.p-carousel-item-list { + @apply flex flex-row +} + +.p-carousel-prev-button, +.p-carousel-next-button { + @apply self-center flex-shrink-0 +} + +.p-carousel-indicator-list { + @apply flex flex-row justify-center flex-wrap p-4 gap-2 m-0 list-none +} + +.p-carousel-indicator-list:dir(rtl) { + @apply rtl:flex-row-reverse +} + +.p-carousel-indicator-button { + @apply flex items-center justify-center w-8 h-2 border-none rounded-md p-0 m-0 select-none cursor-pointer transition-colors duration-200 + bg-surface-200 hover:bg-surface-300 dark:bg-surface-700 dark:hover:bg-surface-600 + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-primary +} + +.p-carousel-indicator-active .p-carousel-indicator-button { + @apply bg-primary +} + +.p-carousel-vertical .p-carousel-content { + @apply flex-col +} + +.p-carousel-vertical .p-carousel-item-list { + @apply flex-col h-full +} + +.p-items-hidden .p-carousel-item { + @apply invisible +} + +.p-items-hidden .p-carousel-item.p-carousel-item-active { + @apply visible +} diff --git a/sologger-ui/src/assets/primevue/cascadeselect.css b/sologger-ui/src/assets/primevue/cascadeselect.css new file mode 100644 index 0000000..bcc29a5 --- /dev/null +++ b/sologger-ui/src/assets/primevue/cascadeselect.css @@ -0,0 +1,169 @@ +.p-cascadeselect { + @apply inline-flex cursor-pointer relative select-none rounded-md + bg-surface-0 dark:bg-surface-950 + border border-surface-300 dark:border-surface-700 + shadow-[0_1px_2px_0_rgba(18,18,23,0.05)] + transition-colors duration-200 +} + +.p-cascadeselect:not(.p-disabled):hover { + @apply border-surface-400 dark:border-surface-600 +} + +.p-cascadeselect:not(.p-disabled).p-focus { + @apply border-primary +} + +.p-cascadeselect.p-variant-filled { + @apply bg-surface-50 dark:bg-surface-800 +} + +.p-cascadeselect.p-invalid { + @apply border-red-400 dark:border-red-300 +} + +.p-cascadeselect.p-disabled { + @apply bg-surface-200 text-surface-500 dark:bg-surface-700 dark:text-surface-400 opacity-100 cursor-default +} + +.p-cascadeselect-dropdown { + @apply flex items-center justify-center shrink-0 bg-transparent + text-surface-500 dark:text-surface-400 w-10 rounded-e-md +} + +.p-cascadeselect-label { + @apply block whitespace-nowrap overflow-hidden flex-auto w-[1%] + py-2 px-3 overflow-ellipsis + text-surface-700 dark:text-surface-0 bg-transparent border-none outline-none +} + +.p-cascadeselect-label.p-placeholder { + @apply text-surface-500 dark:text-surface-400 +} + +.p-cascadeselect-clearable .p-cascadeselect-label { + @apply pe-7 +} + +.p-cascadeselect.p-disabled .p-cascadeselect-label { + @apply text-surface-500 dark:text-surface-400 +} + +.p-cascadeselect-label-empty { + @apply overflow-hidden opacity-0 +} + +.p-cascadeselect-fluid { + @apply flex +} + +.p-cascadeselect-fluid .p-cascadeselect-label { + @apply w-[1%] +} + +.p-cascadeselect-overlay { + @apply absolute top-0 left-0 rounded-md + bg-surface-0 dark:bg-surface-900 + border border-surface-200 dark:border-surface-700 + text-surface-700 dark:text-surface-0 + shadow-[0_4px_6px_-1px_rgba(0,0,0,0.1),0_2px_4px_-2px_rgba(0,0,0,0.1)] +} + +.p-cascadeselect .p-cascadeselect-overlay { + @apply min-w-full +} + +.p-cascadeselect-option-list { + @apply hidden min-w-full absolute z-10 +} + +.p-cascadeselect-list { + @apply min-w-full m-0 list-none p-1 flex flex-col gap-[2px] +} + +.p-cascadeselect-option { + @apply cursor-pointer font-normal whitespace-nowrap + text-surface-700 dark:text-surface-0 bg-transparent border-none + transition-colors duration-200 rounded-sm +} + +.p-cascadeselect-option-active { + @apply overflow-visible +} + +.p-cascadeselect-option-active > .p-cascadeselect-option-content { + @apply bg-surface-100 dark:bg-surface-800 text-surface-800 dark:text-surface-0 +} + +.p-cascadeselect-option:not(.p-cascadeselect-option-selected):not(.p-disabled).p-focus > .p-cascadeselect-option-content { + @apply bg-surface-100 dark:bg-surface-800 text-surface-800 dark:text-surface-0 +} + +.p-cascadeselect-option:not(.p-cascadeselect-option-selected):not(.p-disabled).p-focus .p-cascadeselect-group-icon { + @apply text-surface-500 dark:text-surface-400 +} + +.p-cascadeselect-option-selected .p-cascadeselect-option-content { + @apply bg-highlight +} + +.p-cascadeselect-option-selected.p-focus { + @apply bg-highlight-emphasis +} + +.p-cascadeselect-option-active > .p-cascadeselect-option-list { + @apply block start-full top-0 +} + +.p-cascadeselect-option-content { + @apply flex items-center justify-between overflow-hidden relative px-3 py-2 +} + +.p-cascadeselect-group-icon { + @apply text-sm w-[0.875rem] h-[0.875rem] text-surface-400 dark:text-surface-500 +} + +.p-cascadeselect-group-icon:dir(rtl) { + @apply rotate-180 +} + + +.p-cascadeselect-mobile-active .p-cascadeselect-option-content { + @apply rounded-sm +} + +.p-cascadeselect-mobile-active-active .p-cascadeselect-list { + @apply flex flex-col top-full start-0 z-10 +} + +.p-cascadeselect-mobile-active .p-cascadeselect-list > .p-cascadeselect-option > .p-cascadeselect-option-content .p-cascadeselect-group-icon { + @apply ms-auto transition-transform duration-200 +} + +.p-cascadeselect-mobile-active .p-cascadeselect-list .p-cascadeselect-group-icon { + @apply transition-transform duration-200 rotate-90 +} + +.p-cascadeselect-mobile-active .p-cascadeselect-option-active > .p-cascadeselect-option-content .p-cascadeselect-group-icon { + @apply -rotate-90 +} + +.p-cascadeselect-mobile-active .p-cascadeselect-option-list { + @apply static shadow-none border-none ps-4 +} + +.p-cascadeselect-sm .p-cascadeselect-label { + @apply text-sm px-[0.625rem] py-[0.375rem] +} + +.p-cascadeselect-sm .p-cascadeselect-dropdown .p-icon { + @apply text-sm w-[0.875rem] h-[0.875rem] +} + +.p-cascadeselect-lg .p-cascadeselect-label { + @apply text-lg px-[0.875rem] py-[0.625rem] +} + +.p-cascadeselect-lg .p-cascadeselect-dropdown .p-icon { + @apply text-lg w-[1.125rem] h-[1.125rem] +} diff --git a/sologger-ui/src/assets/primevue/checkbox.css b/sologger-ui/src/assets/primevue/checkbox.css new file mode 100644 index 0000000..431fbbd --- /dev/null +++ b/sologger-ui/src/assets/primevue/checkbox.css @@ -0,0 +1,84 @@ +.p-checkbox { + @apply relative inline-flex select-none w-5 h-5 align-bottom +} + +.p-checkbox-input { + @apply cursor-pointer disabled:cursor-default appearance-none absolute start-0 top-0 w-full h-full m-0 p-0 opacity-0 z-10 + border border-transparent rounded-sm +} + +.p-checkbox-box { + @apply flex justify-center items-center rounded-sm w-5 h-5 + border border-surface-300 dark:border-surface-700 + bg-surface-0 dark:bg-surface-950 + transition-colors duration-200 + shadow-[0_1px_2px_0_rgba(18,18,23,0.05)] +} + +.p-checkbox-icon { + @apply text-surface-700 dark:text-surface-0 + text-sm w-[0.875rem] h-[0.875rem] + transition-colors duration-200 +} + +.p-checkbox:not(.p-disabled):has(.p-checkbox-input:hover) .p-checkbox-box { + @apply border-surface-400 dark:border-surface-600 +} + +.p-checkbox-checked .p-checkbox-box { + @apply border-primary bg-primary +} + +.p-checkbox-checked .p-checkbox-icon { + @apply text-primary-contrast +} + +.p-checkbox-checked:not(.p-disabled):has(.p-checkbox-input:hover) .p-checkbox-box { + @apply bg-primary-emphasis border-primary-emphasis +} + +.p-checkbox-checked:not(.p-disabled):has(.p-checkbox-input:hover) .p-checkbox-icon { + @apply text-primary-contrast +} + +.p-checkbox:not(.p-disabled):has(.p-checkbox-input:focus-visible) .p-checkbox-box { + @apply outline outline-1 outline-offset-2 outline-primary +} + +.p-checkbox.p-invalid > .p-checkbox-box { + @apply border-red-400 dark:border-red-300 +} + +.p-checkbox.p-variant-filled .p-checkbox-box { + @apply bg-surface-50 dark:bg-surface-800 +} + +.p-checkbox.p-disabled { + @apply opacity-100 +} + +.p-checkbox.p-disabled .p-checkbox-box { + @apply bg-surface-200 dark:bg-surface-400 border-surface-300 dark:border-surface-700 +} + +.p-checkbox.p-disabled .p-checkbox-box .p-checkbox-icon { + @apply text-surface-700 dark:text-surface-400 +} + +.p-checkbox-sm, +.p-checkbox-sm .p-checkbox-box { + @apply w-4 h-4 +} + +.p-checkbox-sm .p-checkbox-icon { + @apply w-3 h-3 +} + +.p-checkbox-lg, +.p-checkbox-lg .p-checkbox-box { + @apply w-6 h-6 +} + +.p-checkbox-lg .p-checkbox-icon { + @apply w-4 h-4 +} diff --git a/sologger-ui/src/assets/primevue/chip.css b/sologger-ui/src/assets/primevue/chip.css new file mode 100644 index 0000000..7f10d74 --- /dev/null +++ b/sologger-ui/src/assets/primevue/chip.css @@ -0,0 +1,27 @@ +.p-chip { + @apply inline-flex items-center rounded-2xl gap-2 px-3 py-2 + bg-surface-100 dark:bg-surface-800 + text-surface-800 dark:text-surface-0 +} + +.p-chip-icon { + @apply text-surface-800 dark:bg-surface-0 text-base w-4 h-4 +} + +.p-chip-image { + @apply rounded-full w-8 h-8 -ms-2 +} + +.p-chip:has(.p-chip-remove-icon) { + @apply pe-2 +} + +.p-chip:has(.p-chip-image) { + @apply pt-1 pb-1 +} + +.p-chip-remove-icon { + @apply cursor-pointer text-base w-4 h-4 rounded-full + text-surface-800 dark:text-surface-0 + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-primary +} diff --git a/sologger-ui/src/assets/primevue/colorpicker.css b/sologger-ui/src/assets/primevue/colorpicker.css new file mode 100644 index 0000000..71c4335 --- /dev/null +++ b/sologger-ui/src/assets/primevue/colorpicker.css @@ -0,0 +1,47 @@ +.p-colorpicker { + @apply inline-block relative; +} + +.p-colorpicker-dragging { + @apply cursor-pointer +} + +.p-colorpicker-preview { + @apply w-6 h-6 p-0 border-none rounded-md transition-colors duration-200 cursor-pointer disabled:cursor-auto + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-primary +} + +.p-colorpicker-panel { + @apply bg-surface-800 dark:bg-surface-900 + border border-surface-900 dark:border-surface-700 + rounded-md shadow-[0_4px_6px_-1px_rgba(0,0,0,0.1),0_2px_4px_-2px_rgba(0,0,0,0.1)] + w-[193px] h-[166px] absolute top-0 start-0 +} + +.p-colorpicker-panel-inline { + @apply static shadow-none +} + +.p-colorpicker-content { + @apply relative; +} + +.p-colorpicker-color-selector { + @apply w-[150px] h-[150px] top-[8px] start-[8px] absolute +} + +.p-colorpicker-color-background { + @apply w-full h-full bg-[linear-gradient(to_top,#000_0%,rgba(0,0,0,0)_100%),linear-gradient(to_right,#fff_0%,rgba(255,255,255,0)_100%)]; +} + +.p-colorpicker-color-handle { + @apply absolute top-0 start-[150px] rounded-full w-[10px] h-[10px] border border-surface-0 -mt-[5px] me-0 mb-0 -ms-[5px] cursor-pointer opacity-85 +} + +.p-colorpicker-hue { + @apply w-[17px] h-[150px] top-[8px] start-[167px] absolute opacity-85 bg-[linear-gradient(0deg,red_0,#ff0_17%,#0f0_33%,#0ff_50%,#00f_67%,#f0f_83%,red)]; +} + +.p-colorpicker-hue-handle { + @apply absolute top-[150px] start-0 w-[21px] -ms-[2px] -mt-[5px] h-[10px] border-2 opacity-85 border-surface-0 cursor-pointer +} diff --git a/sologger-ui/src/assets/primevue/common.css b/sologger-ui/src/assets/primevue/common.css new file mode 100644 index 0000000..0c4e67f --- /dev/null +++ b/sologger-ui/src/assets/primevue/common.css @@ -0,0 +1,81 @@ +.p-connected-overlay-enter-from { + @apply opacity-0 scale-y-75 +} + +.p-connected-overlay-leave-to { + @apply opacity-0 +} + +.p-connected-overlay-enter-active { + @apply transition-[opacity,transform] duration-150 ease-[cubic-bezier(0,0,0.2,1)] +} + +.p-connected-overlay-leave-active { + @apply transition-opacity duration-100 ease-linear +} + +.p-toggleable-content-enter-from, +.p-toggleable-content-leave-to { + @apply max-h-0 +} + +.p-toggleable-content-enter-to, +.p-toggleable-content-leave-from { + @apply max-h-[1000px] +} + +.p-toggleable-content-leave-active { + @apply overflow-hidden transition-[max-height] animate-duration-[450ms] ease-[cubic-bezier(0,1,0,1)]; +} + +.p-toggleable-content-enter-active { + @apply overflow-hidden transition-[max-height] duration-1000 ease-in-out +} + +.p-disabled, +.p-disabled * { + @apply cursor-default pointer-events-none select-none +} + +.p-disabled, +.p-component:disabled { + @apply opacity-60 +} + +.pi { + @apply text-base +} + +.p-icon { + @apply w-4 h-4 +} + +.p-overlay-mask { + @apply bg-black/50 text-surface-200 transition-colors duration-150 fixed top-0 start-0 w-full h-full +} + +.p-overlay-mask-enter { + animation: p-overlay-mask-enter-animation 150ms forwards; +} + +.p-overlay-mask-leave { + animation: p-overlay-mask-leave-animation 150ms forwards; +} + +@keyframes p-overlay-mask-enter-animation { + from { + background: transparent; + } + to { + background: rgba(0,0,0,0.5); + } +} + +@keyframes p-overlay-mask-leave-animation { + from { + background: rgba(0,0,0,0.5); + } + to { + background: transparent; + } +} diff --git a/sologger-ui/src/assets/primevue/confirmdialog.css b/sologger-ui/src/assets/primevue/confirmdialog.css new file mode 100644 index 0000000..2c82241 --- /dev/null +++ b/sologger-ui/src/assets/primevue/confirmdialog.css @@ -0,0 +1,10 @@ +@import './dialog'; +@import './button'; + +.p-confirmdialog .p-dialog-content { + @apply flex items-center gap-4 +} + +.p-confirmdialog-icon { + @apply text-surface-700 dark:text-surface-0 text-[2rem] h-8 w-8 +} \ No newline at end of file diff --git a/sologger-ui/src/assets/primevue/confirmpopup.css b/sologger-ui/src/assets/primevue/confirmpopup.css new file mode 100644 index 0000000..861a294 --- /dev/null +++ b/sologger-ui/src/assets/primevue/confirmpopup.css @@ -0,0 +1,66 @@ +@import './button'; + +.p-confirmpopup { + @apply absolute mt-[10px] top-0 left-0 + border border-surface-200 dark:border-surface-700 rounded-md + bg-surface-0 dark:bg-surface-900 + text-surface-700 dark:text-surface-0 + shadow-[0_4px_6px_-1px_rgba(0,0,0,0.1),0_2px_4px_-2px_rgba(0,0,0,0.1)] + before:bottom-full before:left-5 before:h-0 before:w-0 before:absolute before:pointer-events-none + before:border-[10px] before:-ms-[10px] before:border-transparent before:border-b-surface-200 dark:before:border-b-surface-700 + after:bottom-full after:left-5 after:h-0 after:w-0 after:absolute after:pointer-events-none + after:border-[8px] after:-ms-[8px] after:border-transparent after:border-b-surface-0 dark:after:border-b-surface-900 +} + +.p-confirmpopup-content { + @apply flex items-center p-3 gap-4 +} + +.p-confirmpopup-icon { + @apply text-2xl w-6 h-6 text-surface-700 dark:text-surface-0 +} + +.p-confirmpopup-footer { + @apply flex justify-end gap-2 pt-0 px-3 pb-3 +} + +.p-confirmpopup-footer button { + @apply w-auto +} + +.p-confirmpopup-footer button:last-child { + @apply m-0 +} + +.p-confirmpopup-flipped { + @apply -mt-[10px] mb-[10px] +} + +.p-confirmpopup-enter-from { + @apply opacity-0 scale-y-75 +} + +.p-confirmpopup-leave-to { + @apply opacity-0 +} + +.p-confirmpopup-enter-active { + @apply [transition:transform_120ms_cubic-bezier(0,0,0.2,1),opacity_120ms_cubic-bezier(0,0,0.2,1)] +} + +.p-confirmpopup-leave-active { + @apply transition-opacity duration-100 ease-linear +} + +.p-confirmpopup-flipped:after, +.p-confirmpopup-flipped:before { + @apply bottom-auto top-full +} + +.p-confirmpopup-flipped:after { + @apply border-b-transparent border-t-surface-0 dark:border-t-surface-900 +} + +.p-confirmpopup-flipped:before { + @apply border-b-transparent border-t-surface-200 dark:border-t-surface-700 +} diff --git a/sologger-ui/src/assets/primevue/contextmenu.css b/sologger-ui/src/assets/primevue/contextmenu.css new file mode 100644 index 0000000..d9af290 --- /dev/null +++ b/sologger-ui/src/assets/primevue/contextmenu.css @@ -0,0 +1,101 @@ +.p-contextmenu { + @apply bg-surface-0 dark:bg-surface-900 + text-surface-700 dark:text-surface-0 + border border-surface-200 dark:border-surface-700 + rounded-md min-w-52 shadow-[0_4px_6px_-1px_rgba(0,0,0,0.1),0_2px_4px_-2px_rgba(0,0,0,0.1)] +} + +.p-contextmenu-root-list, +.p-contextmenu-submenu { + @apply m-0 p-1 list-none outline-none flex flex-col gap-[2px] +} + +.p-contextmenu-submenu { + @apply absolute min-w-full z-10 rounded-md + bg-surface-0 dark:bg-surface-900 + text-surface-700 dark:text-surface-0 + border border-surface-200 dark:border-surface-700 + shadow-[0_4px_6px_-1px_rgba(0,0,0,0.1),0_2px_4px_-2px_rgba(0,0,0,0.1)] +} + +.p-contextmenu-item { + @apply relative +} + +.p-contextmenu-item-content { + @apply transition-colors duration-200 rounded-sm text-surface-700 dark:text-surface-0 +} + +.p-contextmenu-item-link { + @apply cursor-pointer flex items-center no-underline overflow-hidden relative text-inherit + px-3 py-2 gap-2 select-none outline-none +} + +.p-contextmenu-item-icon { + @apply text-surface-400 dark:text-surface-500 +} + +.p-contextmenu-submenu-icon { + @apply text-surface-400 dark:text-surface-500 ms-auto text-sm w-[0.875rem] h-[0.875rem] +} + +.p-contextmenu-item.p-focus > .p-contextmenu-item-content { + @apply bg-surface-100 dark:bg-surface-800 text-surface-800 dark:text-surface-0 +} + +.p-contextmenu-item.p-focus > .p-contextmenu-item-content .p-contextmenu-item-icon { + @apply text-surface-500 dark:text-surface-400 +} + +.p-contextmenu-item.p-focus > .p-contextmenu-item-content .p-contextmenu-submenu-icon { + @apply text-surface-500 dark:text-surface-400 +} + +.p-contextmenu-item:not(.p-disabled) > .p-contextmenu-item-content:hover { + @apply bg-surface-100 dark:bg-surface-800 text-surface-800 dark:text-surface-0 +} + +.p-contextmenu-item:not(.p-disabled) > .p-contextmenu-item-content:hover .p-contextmenu-item-icon { + @apply text-surface-500 dark:text-surface-400 +} + +.p-contextmenu-item:not(.p-disabled) > .p-contextmenu-item-content:hover .p-contextmenu-submenu-icon { + @apply text-surface-500 dark:text-surface-400 +} + +.p-contextmenu-item-active > .p-contextmenu-item-content { + @apply bg-surface-100 dark:bg-surface-800 text-surface-800 dark:text-surface-0 +} + +.p-contextmenu-item-active > .p-contextmenu-item-content .p-contextmenu-item-icon { + @apply text-surface-500 dark:text-surface-400 +} + +.p-contextmenu-item-active > .p-contextmenu-item-content .p-contextmenu-submenu-icon { + @apply text-surface-500 dark:text-surface-400 +} + +.p-contextmenu-separator { + @apply border-t border-surface-200 dark:border-surface-700 +} + +.p-contextmenu-enter-from, +.p-contextmenu-leave-active { + @apply opacity-0 +} + +.p-contextmenu-enter-active { + @apply transition-opacity duration-[250ms] +} + +.p-contextmenu-mobile .p-contextmenu-submenu { + @apply static shadow-none border-none ps-4 pe-0 +} + +.p-contextmenu-mobile .p-contextmenu-submenu-icon { + @apply transition-transform duration-200 rotate-90 +} + +.p-contextmenu-mobile .p-contextmenu-item-active > .p-contextmenu-item-content .p-contextmenu-submenu-icon { + @apply -rotate-90 +} diff --git a/sologger-ui/src/assets/primevue/datatable.css b/sologger-ui/src/assets/primevue/datatable.css new file mode 100644 index 0000000..b77d71d --- /dev/null +++ b/sologger-ui/src/assets/primevue/datatable.css @@ -0,0 +1,408 @@ +@import './paginator'; + +.p-datatable { + @apply relative +} + +.p-datatable-table { + @apply border-spacing-0 w-full +} + +.p-datatable-scrollable > .p-datatable-table-container { + @apply relative +} + +.p-datatable-scrollable-table > .p-datatable-thead { + @apply top-0 z-10 +} + +.p-datatable-scrollable-table > .p-datatable-frozen-tbody { + @apply sticky z-10 +} + +.p-datatable-scrollable-table > .p-datatable-tfoot { + @apply bottom-0 z-10 +} + +.p-datatable-scrollable .p-datatable-frozen-column { + @apply sticky bg-surface-0 dark:bg-surface-900 +} + +.p-datatable-scrollable th.p-datatable-frozen-column { + @apply z-10 +} + +.p-datatable-scrollable > .p-datatable-table-container > .p-datatable-table > .p-datatable-thead, +.p-datatable-scrollable > .p-datatable-table-container > .p-virtualscroller > .p-datatable-table > .p-datatable-thead { + @apply bg-surface-0 dark:bg-surface-900 +} + +.p-datatable-scrollable > .p-datatable-table-container > .p-datatable-table > .p-datatable-tfoot, +.p-datatable-scrollable > .p-datatable-table-container > .p-virtualscroller > .p-datatable-table > .p-datatable-tfoot { + @apply bg-surface-0 dark:bg-surface-900 +} + +.p-datatable-flex-scrollable { + @apply flex flex-col h-full +} + +.p-datatable-flex-scrollable > .p-datatable-table-container { + @apply flex flex-col flex-1 h-full +} + +.p-datatable-scrollable-table > .p-datatable-tbody > .p-datatable-row-group-header { + @apply sticky z-10 +} + +.p-datatable-resizable-table > .p-datatable-thead > tr > th, +.p-datatable-resizable-table > .p-datatable-tfoot > tr > td, +.p-datatable-resizable-table > .p-datatable-tbody > tr > td { + @apply overflow-hidden whitespace-nowrap +} + +.p-datatable-resizable-table > .p-datatable-thead > tr > th.p-datatable-resizable-column:not(.p-datatable-frozen-column) { + @apply bg-clip-padding relative +} + +.p-datatable-resizable-table-fit > .p-datatable-thead > tr > th.p-datatable-resizable-column:last-child .p-datatable-column-resizer { + @apply hidden +} + +.p-datatable-column-resizer { + @apply block absolute top-0 end-0 m-0 w-2 h-full p-0 cursor-col-resize border border-transparent +} + +.p-datatable-column-header-content { + @apply flex items-center gap-2 +} + +.p-datatable-column-resize-indicator { + @apply w-px absolute z-10 hidden bg-primary +} + +.p-datatable-row-reorder-indicator-up, +.p-datatable-row-reorder-indicator-down { + @apply absolute hidden +} + +.p-datatable-reorderable-column, +.p-datatable-reorderable-row-handle { + @apply cursor-move +} + +.p-datatable-mask { + @apply absolute flex items-center justify-center z-20 +} + +.p-datatable-inline-filter { + @apply flex items-center w-full gap-2 +} + +.p-datatable-inline-filter .p-datatable-filter-element-container { + @apply flex-auto w-[1%] +} + +.p-datatable-filter-overlay { + @apply bg-surface-0 dark:bg-surface-900 rounded-md min-w-52 + border border-surface-200 dark:border-surface-700 + text-surface-700 dark:text-surface-0 + shadow-[0_4px_6px_-1px_rgba(0,0,0,0.1),0_2px_4px_-2px_rgba(0,0,0,0.1)] +} + +.p-datatable-filter-constraint-list { + @apply m-0 list-none flex flex-col p-1 gap-[2px] +} + +.p-datatable-filter-constraint { + @apply px-3 py-2 rounded-sm cursor-pointer transition-colors duration-200 text-surface-700 dark:text-surface-0 +} + +.p-datatable-filter-constraint-selected { + @apply bg-highlight +} + +.p-datatable-filter-constraint:not(.p-datatable-filter-constraint-selected):not(.p-disabled):hover +{ + @apply bg-surface-100 dark:bg-surface-800 text-surface-800 dark:text-surface-0 +} + +.p-datatable-filter-constraint:focus-visible { + @apply outline-none bg-surface-100 dark:bg-surface-800 text-surface-800 dark:text-surface-0 +} + +.p-datatable-filter-constraint-selected:focus-visible { + @apply bg-highlight-emphasis +} + +.p-datatable-filter-constraint-separator { + @apply border-t border-surface-200 dark:border-surface-700 +} + +.p-datatable-popover-filter { + @apply inline-flex ms-auto +} + +.p-datatable-filter-overlay-popover { + @apply flex flex-col gap-2 + bg-surface-0 dark:bg-surface-900 text-surface-700 dark:text-surface-0 + border border-surface-200 dark:border-surface-700 rounded-md p-3 min-w-52 + shadow-[0_4px_6px_-1px_rgba(0,0,0,0.1),0_2px_4px_-2px_rgba(0,0,0,0.1)] +} + +.p-datatable-filter-operator-dropdown { + @apply w-full +} + +.p-datatable-filter-rule-list, +.p-datatable-filter-rule { + @apply flex flex-col gap-2 +} + +.p-datatable-filter-rule { + @apply border-b border-surface-200 dark:border-surface-700 last:border-b-0 pb-2 last:pb-0 +} + +.p-datatable-filter-add-rule-button { + @apply w-full +} + +.p-datatable-filter-remove-rule-button { + @apply w-full +} + +.p-datatable-filter-buttonbar { + @apply p-0 flex items-center justify-between +} + +.p-datatable-virtualscroller-spacer { + @apply flex +} + +.p-datatable .p-virtualscroller .p-virtualscroller-loading { + @apply transform-none min-h-0 sticky top-0 start-0 +} + +.p-datatable-paginator-top { + @apply border-b border-surface-200 dark:border-surface-700 +} + +.p-datatable-paginator-bottom { + @apply border-t border-surface-200 dark:border-surface-700 +} + +.p-datatable-header { + @apply py-3 px-4 border-b border-surface-200 dark:border-surface-700 + bg-surface-0 dark:bg-surface-900 + text-surface-700 dark:text-surface-0 +} + +.p-datatable-footer { + @apply py-3 px-4 border-b border-surface-200 dark:border-surface-700 + bg-surface-0 dark:bg-surface-900 + text-surface-700 dark:text-surface-0 +} + +.p-datatable-header-cell { + @apply py-3 px-4 font-normal text-start transition-colors duration-200 + border-b border-surface-200 dark:border-surface-700 + bg-surface-0 dark:bg-surface-900 + text-surface-700 dark:text-surface-0 +} + +.p-datatable-column-title { + @apply font-semibold +} + +.p-datatable-tbody > tr { + @apply bg-surface-0 dark:bg-surface-900 text-surface-700 dark:text-surface-0 transition-colors duration-200 +} + +.p-datatable-tbody > tr > td { + @apply text-start py-3 px-4 border-b border-surface-200 dark:border-surface-800 +} + +.p-datatable-hoverable .p-datatable-tbody > tr:not(.p-datatable-row-selected):hover { + @apply bg-surface-100 text-surface-800 dark:bg-surface-800 dark:text-surface-0 +} + +.p-datatable-tbody > tr.p-datatable-row-selected { + @apply bg-highlight +} + +.p-datatable-tbody > tr:has(+ .p-datatable-row-selected) > td { + @apply border-b-primary-100 dark:border-b-primary-900 +} + +.p-datatable-tbody > tr.p-datatable-row-selected > td { + @apply border-b-primary-100 dark:border-b-primary-900 +} + +.p-datatable-tbody > tr:focus-visible, +.p-datatable-tbody > tr.p-datatable-contextmenu-row-selected { + @apply outline outline-1 -outline-offset-1 outline-primary +} + +.p-datatable-tfoot > tr > td { + @apply text-start py-3 px-4 border-b border-surface-200 dark:border-surface-800 + bg-surface-0 dark:bg-surface-900 + text-surface-700 dark:text-surface-0 +} + +.p-datatable-column-footer { + @apply font-semibold +} + +.p-datatable-sortable-column { + @apply cursor-pointer select-none focus-visible:outline focus-visible:outline-1 focus-visible:-outline-offset-1 focus-visible:outline-primary +} + +.p-datatable-column-title, +.p-datatable-sort-icon, +.p-datatable-sort-badge { + @apply align-middle +} + +.p-datatable-sort-icon { + @apply text-surface-500 dark:text-surface-400 transition-colors duration-200 +} + +.p-datatable-sortable-column:not(.p-datatable-column-sorted):hover { + @apply bg-surface-100 text-surface-800 dark:bg-surface-800 dark:text-surface-0 +} + +.p-datatable-sortable-column:not(.p-datatable-column-sorted):hover .p-datatable-sort-icon { + @apply text-surface-600 dark:text-surface-300 +} + +.p-datatable-column-sorted { + @apply bg-highlight +} + +.p-datatable-column-sorted .p-datatable-sort-icon { + @apply bg-highlight +} + +.p-datatable-hoverable .p-datatable-selectable-row { + @apply cursor-pointer +} + +.p-datatable-tbody > tr.p-datatable-dragpoint-top > td { + @apply shadow-[inset_0_2px_0_0_theme(colors.primary)] +} + +.p-datatable-tbody > tr.p-datatable-dragpoint-bottom > td { + @apply shadow-[inset_0_-2px_0_0_theme(colors.primary)] +} + +.p-datatable-loading-icon { + @apply text-[2rem] w-8 h-8 +} + +.p-datatable-gridlines .p-datatable-header { + @apply border-t border-x +} + +.p-datatable-gridlines .p-datatable-footer { + @apply border-b border-x +} + +.p-datatable-gridlines .p-datatable-paginator-top { + @apply border-t border-x +} + +.p-datatable-gridlines .p-datatable-paginator-bottom { + @apply border-b border-x +} + +.p-datatable-gridlines .p-datatable-thead > tr > th { + @apply border-t border-x last:border +} + +.p-datatable-gridlines .p-datatable-tbody > tr > td { + @apply border-t border-s last:border-r +} + +.p-datatable-gridlines .p-datatable-tbody > tr:last-child > td { + @apply border-y border-s last:border +} + +.p-datatable-gridlines .p-datatable-tfoot > tr > td { + @apply border-y border-s last:border +} + +.p-datatable.p-datatable-gridlines .p-datatable-thead + .p-datatable-tfoot > tr > td { + @apply border-b border-s last:border-r +} + +.p-datatable.p-datatable-gridlines:has(.p-datatable-thead):has(.p-datatable-tbody) .p-datatable-tbody > tr > td { + @apply border-b border-s last:border-r +} + +.p-datatable.p-datatable-gridlines:has(.p-datatable-tbody):has(.p-datatable-tfoot) .p-datatable-tbody > tr:last-child > td { + @apply border-s last:border-r +} + +.p-datatable.p-datatable-striped .p-datatable-tbody > tr.p-row-odd { + @apply bg-surface-50 dark:bg-surface-950 +} + +.p-datatable.p-datatable-striped .p-datatable-tbody > tr.p-row-odd.p-datatable-row-selected { + @apply bg-highlight +} + +.p-datatable.p-datatable-sm .p-datatable-header { + @apply py-1 px-2 +} + +.p-datatable.p-datatable-sm .p-datatable-thead > tr > th { + @apply py-1 px-2 +} + +.p-datatable.p-datatable-sm .p-datatable-tbody > tr > td { + @apply py-1 px-2 +} + +.p-datatable.p-datatable-sm .p-datatable-tfoot > tr > td { + @apply py-1 px-2 +} + +.p-datatable.p-datatable-sm .p-datatable-footer { + @apply py-1 px-2 +} + +.p-datatable.p-datatable-lg .p-datatable-header { + @apply py-4 px-5 +} + +.p-datatable.p-datatable-lg .p-datatable-thead > tr > th { + @apply py-4 px-5 +} + +.p-datatable.p-datatable-lg .p-datatable-tbody>tr>td { + @apply py-4 px-5 +} + +.p-datatable.p-datatable-lg .p-datatable-tfoot>tr>td { + @apply py-4 px-5 +} + +.p-datatable.p-datatable-lg .p-datatable-footer { + @apply py-4 px-5 +} + +.p-datatable-row-toggle-button { + @apply inline-flex items-center justify-center overflow-hidden relative w-7 h-7 cursor-pointer select-none + transition-colors duration-200 rounded-full border-none bg-transparent + text-surface-500 enabled:hover:bg-surface-100 enabled:hover:text-surface-700 + dark:text-surface-400 dark:enabled:hover:bg-surface-800 dark:enabled:hover:text-surface-0 + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-primary + +} + +.p-datatable-tbody > tr.p-datatable-row-selected .p-datatable-row-toggle-button:hover { + @apply bg-surface-0 dark:bg-surface-900 text-primary +} + +.p-datatable-row-toggle-icon:dir(rtl) { + @apply rotate-180 +} diff --git a/sologger-ui/src/assets/primevue/dataview.css b/sologger-ui/src/assets/primevue/dataview.css new file mode 100644 index 0000000..dc413ef --- /dev/null +++ b/sologger-ui/src/assets/primevue/dataview.css @@ -0,0 +1,29 @@ +@import './paginator'; + +.p-dataview { + @apply border-none +} + +.p-dataview-header { + @apply py-3 px-4 border-b border-surface-200 dark:border-surface-700 + bg-surface-0 dark:bg-surface-900 + text-surface-700 dark:text-surface-0 +} + +.p-dataview-content { + @apply bg-surface-0 dark:bg-surface-900 text-surface-700 dark:text-surface-0 +} + +.p-dataview-footer { + @apply py-3 px-4 border-t border-surface-200 dark:border-surface-700 + bg-surface-0 dark:bg-surface-900 + text-surface-700 dark:text-surface-0 +} + +.p-dataview-paginator-top { + @apply border-b border-surface-200 dark:border-surface-700 +} + +.p-dataview-paginator-bottom { + @apply border-t border-surface-200 dark:border-surface-700 +} \ No newline at end of file diff --git a/sologger-ui/src/assets/primevue/datepicker.css b/sologger-ui/src/assets/primevue/datepicker.css new file mode 100644 index 0000000..1227598 --- /dev/null +++ b/sologger-ui/src/assets/primevue/datepicker.css @@ -0,0 +1,211 @@ +@import './button'; +@import './inputtext'; + +.p-datepicker { + @apply inline-flex max-w-full +} + +.p-datepicker-input { + @apply flex-auto w-[1%] +} + +.p-datepicker:has(.p-datepicker-dropdown) .p-datepicker-input { + @apply rounded-e-none +} + +.p-datepicker-dropdown { + @apply inline-flex items-center justify-center overflow-hidden relative cursor-pointer select-none + w-10 rounded-e-md border border-s-0 border-surface-300 dark:border-surface-700 + bg-surface-100 enabled:hover:bg-surface-200 enabled:active:bg-surface-300 + text-surface-600 enabled:hover:text-surface-700 enabled:active:text-surface-800 + dark:bg-surface-800 dark:enabled:hover:bg-surface-700 dark:enabled:active:bg-surface-600 + dark:text-surface-300 dark:enabled:hover:text-surface-200 dark:enabled:active:text-surface-100 + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-primary + transition-colors duration-200 +} + +.p-datepicker:has(.p-datepicker-input-icon-container) { + @apply relative +} + +.p-datepicker:has(.p-datepicker-input-icon-container) .p-datepicker-input { + @apply pe-10 +} + +.p-datepicker-input-icon-container { + @apply cursor-pointer absolute top-1/2 end-3 -mt-2 text-surface-400 +} + +.p-datepicker-fluid { + @apply flex +} + +.p-datepicker-fluid .p-datepicker-input { + @apply w-[1%] +} + +.p-datepicker .p-datepicker-panel { + @apply min-w-full +} + +.p-datepicker-panel { + @apply w-auto p-3 rounded-md + border border-surface-200 dark:border-surface-700 + bg-surface-0 dark:bg-surface-900 + text-surface-700 dark:text-surface-0 + shadow-[0_4px_6px_-1px_rgba(0,0,0,0.1),0_2px_4px_-2px_rgba(0,0,0,0.1)] +} + +.p-datepicker-panel-inline { + @apply inline-block overflow-x-auto shadow-none +} + +.p-datepicker-header { + @apply flex items-center justify-between pt-0 px-0 pb-2 font-medium gap-2 + bg-surface-0 dark:bg-surface-900 + text-surface-700 dark:text-surface-0 + border-b border-surface-200 dark:border-surface-700 +} + +.p-datepicker-next-button:dir(rtl) { + @apply order-[-1] +} +.p-datepicker-prev-button:dir(rtl) { + @apply order-1 +} + +.p-datepicker-title { + @apply flex items-center justify-between gap-2 font-medium +} + +.p-datepicker-select-year, +.p-datepicker-select-month { + @apply border-none bg-transparent m-0 cursor-pointer font-medium transition-colors duration-200 + py-1 px-2 rounded-md text-surface-700 dark:text-surface-0 + enabled:hover:bg-surface-100 enabled:hover:text-surface-800 + dark:enabled:hover:bg-surface-800 dark:enabled:hover:text-surface-0 + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-primary +} + +.p-datepicker-calendar-container { + @apply flex +} + +.p-datepicker-calendar-container .p-datepicker-calendar { + @apply flex-auto border-s border-surface-200 dark:border-surface-700 gap-3 + first:ps-0 first:border-s-0 last:pe-0 +} + +.p-datepicker-day-view { + @apply w-full border-collapse text-base mt-2 mx-0 mb-0 +} + +.p-datepicker-weekday-cell { + @apply p-1 +} + +.p-datepicker-weekday { + @apply font-medium text-surface-700 dark:text-surface-0 +} + +.p-datepicker-day-cell { + @apply p-1 +} + +.p-datepicker-day { + @apply flex items-center justify-center cursor-pointer my-0 mx-auto overflow-hidden relative w-8 h-8 + rounded-full p-1 transition-colors duration-200 border border-transparent text-surface-700 dark:text-surface-0 + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-primary +} + +.p-datepicker-day:not(.p-datepicker-day-selected):not(.p-disabled):hover { + @apply bg-surface-100 text-surface-800 dark:bg-surface-800 dark:text-surface-0 +} + +.p-datepicker-day-selected { + @apply bg-primary text-primary-contrast +} + +.p-datepicker-day-selected-range { + @apply bg-highlight +} + +.p-datepicker-today > .p-datepicker-day { + @apply bg-surface-200 text-surface-900 dark:bg-surface-700 dark:text-surface-0 +} + +.p-datepicker-today > .p-datepicker-day-selected { + @apply bg-primary text-primary-contrast +} + +.p-datepicker-today > .p-datepicker-day-selected-range { + @apply bg-highlight +} + +.p-datepicker-weeknumber { + @apply text-center +} + +.p-datepicker-month-view { + @apply mt-2 mb-0 mx-0 +} + +.p-datepicker-month { + @apply w-1/3 inline-flex items-center justify-center cursor-pointer overflow-hidden relative + p-[0.375rem] transition-colors duration-200 rounded-md text-surface-700 dark:text-surface-0 + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-primary +} + +.p-datepicker-month:not(.p-disabled):not(.p-datepicker-month-selected):hover { + @apply bg-surface-100 text-surface-800 dark:bg-surface-800 dark:text-surface-0 +} + +.p-datepicker-month-selected { + @apply bg-primary text-primary-contrast +} + +.p-datepicker-year-view { + @apply mt-2 mb-0 mx-0 +} + +.p-datepicker-year { + @apply w-1/2 inline-flex items-center justify-center cursor-pointer overflow-hidden relative + p-[0.375rem] transition-colors duration-200 rounded-md text-surface-700 dark:text-surface-0 + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-primary +} + +.p-datepicker-year:not(.p-disabled):not(.p-datepicker-year-selected):hover { + @apply bg-surface-100 text-surface-800 dark:bg-surface-800 dark:text-surface-0 +} + +.p-datepicker-year-selected { + @apply bg-primary text-primary-contrast +} + +.p-datepicker-buttonbar { + @apply flex justify-between items-center pt-2 pb-0 px-0 border-t border-surface-200 dark:border-surface-700 +} + +.p-datepicker-buttonbar .p-button { + @apply w-auto +} + +.p-datepicker-time-picker { + @apply flex items-center justify-center border-t border-surface-200 dark:border-surface-700 p-0 gap-2 +} + +.p-datepicker-calendar-container + .p-datepicker-time-picker { + @apply pt-2 pb-0 px-0 +} + +.p-datepicker-time-picker > div { + @apply flex items-center flex-col gap-1 +} + +.p-datepicker-time-picker span { + @apply text-base +} + +.p-datepicker-timeonly .p-datepicker-time-picker { + @apply border-t-0 +} diff --git a/sologger-ui/src/assets/primevue/dialog.css b/sologger-ui/src/assets/primevue/dialog.css new file mode 100644 index 0000000..8c9ddf8 --- /dev/null +++ b/sologger-ui/src/assets/primevue/dialog.css @@ -0,0 +1,125 @@ +@import './button'; + +.p-dialog { + @apply max-h-[90%] scale-100 rounded-xl + border border-surface-200 dark:border-surface-700 + bg-surface-0 dark:bg-surface-900 + text-surface-700 dark:text-surface-0 + shadow-[0_20px_25px_-5px_rgba(0,0,0,0.1),0_8px_10px_-6px_rgba(0,0,0,0.1)] +} + +.p-dialog-content { + @apply overflow-y-auto pt-0 px-5 pb-5 +} + +.p-dialog-header { + @apply flex items-center justify-between shrink-0 p-5 +} + +.p-dialog-title { + @apply font-semibold text-xl +} + +.p-dialog-footer { + @apply shrink-0 pt-0 px-5 pb-5 flex justify-end gap-2 +} + +.p-dialog-header-actions { + @apply flex items-center gap-2 +} + +.p-dialog-enter-active { + @apply transition-all duration-150 ease-[cubic-bezier(0,0,0.2,1)] +} + +.p-dialog-leave-active { + @apply transition-all duration-150 ease-[cubic-bezier(0.4,0,0.2,1)] +} + +.p-dialog-enter-from, +.p-dialog-leave-to { + @apply opacity-0 scale-75 +} + +.p-dialog-top .p-dialog, +.p-dialog-bottom .p-dialog, +.p-dialog-left .p-dialog, +.p-dialog-right .p-dialog, +.p-dialog-topleft .p-dialog, +.p-dialog-topright .p-dialog, +.p-dialog-bottomleft .p-dialog, +.p-dialog-bottomright .p-dialog { + @apply m-3 [transform:translate3d(0,0,0)] +} + +.p-dialog-top .p-dialog-enter-active, +.p-dialog-top .p-dialog-leave-active, +.p-dialog-bottom .p-dialog-enter-active, +.p-dialog-bottom .p-dialog-leave-active, +.p-dialog-left .p-dialog-enter-active, +.p-dialog-left .p-dialog-leave-active, +.p-dialog-right .p-dialog-enter-active, +.p-dialog-right .p-dialog-leave-active, +.p-dialog-topleft .p-dialog-enter-active, +.p-dialog-topleft .p-dialog-leave-active, +.p-dialog-topright .p-dialog-enter-active, +.p-dialog-topright .p-dialog-leave-active, +.p-dialog-bottomleft .p-dialog-enter-active, +.p-dialog-bottomleft .p-dialog-leave-active, +.p-dialog-bottomright .p-dialog-enter-active, +.p-dialog-bottomright .p-dialog-leave-active { + @apply transition-all duration-300 ease-out +} + +.p-dialog-top .p-dialog-enter-from, +.p-dialog-top .p-dialog-leave-to { + @apply [transform:translate3d(0,-100%,0)] +} + +.p-dialog-bottom .p-dialog-enter-from, +.p-dialog-bottom .p-dialog-leave-to { + @apply [transform:translate3d(0,100%,0)] +} + +.p-dialog-left .p-dialog-enter-from, +.p-dialog-left .p-dialog-leave-to, +.p-dialog-topleft .p-dialog-enter-from, +.p-dialog-topleft .p-dialog-leave-to, +.p-dialog-bottomleft .p-dialog-enter-from, +.p-dialog-bottomleft .p-dialog-leave-to { + @apply [transform:translate3d(-100%,0,0)] +} + +.p-dialog-right .p-dialog-enter-from, +.p-dialog-right .p-dialog-leave-to, +.p-dialog-topright .p-dialog-enter-from, +.p-dialog-topright .p-dialog-leave-to, +.p-dialog-bottomright .p-dialog-enter-from, +.p-dialog-bottomright .p-dialog-leave-to { + @apply [transform:translate3d(100%,0,0)] +} + +.p-dialog-left:dir(rtl) .p-dialog-enter-from, +.p-dialog-left:dir(rtl) .p-dialog-leave-to, +.p-dialog-topleft:dir(rtl) .p-dialog-enter-from, +.p-dialog-topleft:dir(rtl) .p-dialog-leave-to, +.p-dialog-bottomleft:dir(rtl) .p-dialog-enter-from, +.p-dialog-bottomleft:dir(rtl) .p-dialog-leave-to { + @apply [transform:translate3d(100%,0,0)] +} +.p-dialog-right:dir(rtl) .p-dialog-enter-from, +.p-dialog-right:dir(rtl) .p-dialog-leave-to, +.p-dialog-topright:dir(rtl) .p-dialog-enter-from, +.p-dialog-topright:dir(rtl) .p-dialog-leave-to, +.p-dialog-bottomright:dir(rtl) .p-dialog-enter-from, +.p-dialog-bottomright:dir(rtl) .p-dialog-leave-to { + @apply [transform:translate3d(-100%,0,0)] +} + +.p-dialog-maximized { + @apply !w-screen !h-screen top-0 start-0 max-h-full rounded-none +} + +.p-dialog-maximized .p-dialog-content { + @apply flex-grow +} diff --git a/sologger-ui/src/assets/primevue/divider.css b/sologger-ui/src/assets/primevue/divider.css new file mode 100644 index 0000000..1bb448b --- /dev/null +++ b/sologger-ui/src/assets/primevue/divider.css @@ -0,0 +1,52 @@ +.p-divider-horizontal { + @apply flex w-full relative items-center my-4 mx-0 py-0 px-4 + before:absolute before:block before:top-1/2 before:start-0 before:w-full + before:border-t before:border-surface-200 dark:before:border-surface-700 +} + +.p-divider-horizontal .p-divider-content { + @apply py-0 px-2 +} + +.p-divider-vertical { + @apply min-h-full flex relative justify-center my-0 mx-4 py-2 px-0 + before:absolute before:block before:top-0 before:start-1/2 before:h-full + before:border-s before:border-surface-200 before:dark:border-surface-700 +} + +.p-divider.p-divider-vertical .p-divider-content { + @apply py-2 px-0 +} + +.p-divider-content { + @apply z-10 bg-surface-0 dark:bg-surface-900 text-surface-700 dark:text-surface-0 +} + +.p-divider-solid.p-divider-horizontal:before { + @apply border-solid +} + +.p-divider-solid.p-divider-vertical:before { + @apply border-solid +} + +.p-divider-dashed.p-divider-horizontal:before { + @apply border-dashed +} + +.p-divider-dashed.p-divider-vertical:before { + @apply border-dashed +} + +.p-divider-dotted.p-divider-horizontal:before { + @apply border-dotted +} + +.p-divider-dotted.p-divider-vertical:before { + @apply border-dotted +} + +.p-divider-left:dir(rtl), +.p-divider-right:dir(rtl) { + @apply flex-row-reverse +} diff --git a/sologger-ui/src/assets/primevue/dock.css b/sologger-ui/src/assets/primevue/dock.css new file mode 100644 index 0000000..54d5f9c --- /dev/null +++ b/sologger-ui/src/assets/primevue/dock.css @@ -0,0 +1,84 @@ +.p-dock { + @apply absolute z-10 flex justify-center items-center pointer-events-none +} + +.p-dock-list-container { + @apply flex pointer-events-auto bg-white/10 border border-white/10 p-2 rounded-xl +} + +.p-dock-list { + @apply m-0 p-0 list-none flex items-center justify-center outline-none +} + +.p-dock-item { + @apply transition-all duration-200 ease-[cubic-bezier(0.4,0,0.2,1)] will-change-transform p-2 rounded-md + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-primary +} + +.p-dock-item-link { + @apply flex flex-col items-center justify-center relative cursor-default w-12 h-12 +} + +.p-dock-top { + @apply start-0 top-0 w-full +} + +.p-dock-top .p-dock-item { + @apply origin-[center_top] +} + +.p-dock-bottom { + @apply start-0 bottom-0 w-full +} + +.p-dock-bottom .p-dock-item { + @apply origin-[center_bottom] +} + +.p-dock-right { + @apply end-0 top-0 h-full +} + +.p-dock-right .p-dock-item { + @apply origin-[center_right] +} + +.p-dock-right .p-dock-list { + @apply flex-col +} + +.p-dock-left { + @apply start-0 top-0 h-full +} + +.p-dock-left .p-dock-item { + @apply origin-[center_left] +} + +.p-dock-left .p-dock-list { + @apply flex-col +} + +.p-dock-mobile.p-dock-top .p-dock-list-container, +.p-dock-mobile.p-dock-bottom .p-dock-list-container { + @apply overflow-x-auto w-full +} + +.p-dock-mobile.p-dock-top .p-dock-list-container .p-dock-list, +.p-dock-mobile.p-dock-bottom .p-dock-list-container .p-dock-list { + @apply mt-0 mx-auto +} + +.p-dock-mobile.p-dock-left .p-dock-list-container, +.p-dock-mobile.p-dock-right .p-dock-list-container { + @apply overflow-y-auto h-full +} + +.p-dock-mobile.p-dock-left .p-dock-list-container .p-dock-list, +.p-dock-mobile.p-dock-right .p-dock-list-container .p-dock-list { + @apply mt-auto mx-0 +} + +.p-dock-mobile .p-dock-list .p-dock-item { + @apply transform-none m-0 +} diff --git a/sologger-ui/src/assets/primevue/drawer.css b/sologger-ui/src/assets/primevue/drawer.css new file mode 100644 index 0000000..fe5aa85 --- /dev/null +++ b/sologger-ui/src/assets/primevue/drawer.css @@ -0,0 +1,94 @@ +@import './button'; + +.p-drawer { + @apply flex flex-col pointer-events-auto relative transition-transform duration-300 + border border-surface-200 dark:border-surface-700 + bg-surface-0 dark:bg-surface-900 + text-surface-700 dark:text-surface-0 + shadow-[0_20px_25px_-5px_rgba(0,0,0,0.1),0_8px_10px_-6px_rgba(0,0,0,0.1)] +} + +.p-drawer { + @apply [transform:translate3d(0,0,0)] +} + +.p-drawer-content { + @apply overflow-y-auto flex-grow pt-0 pb-5 px-5 +} + +.p-drawer-header { + @apply flex items-center justify-between flex-shrink-0 p-5 +} + +.p-drawer-footer { + @apply px-5 +} + +.p-drawer-title { + @apply font-semibold text-2xl +} + +.p-drawer-full .p-drawer { + @apply transition-none transform-none w-screen h-screen max-h-full top-0 left-0 +} + +.p-drawer-left .p-drawer-enter-from, +.p-drawer-left .p-drawer-leave-to { + @apply -translate-x-full +} + +.p-drawer-right .p-drawer-enter-from, +.p-drawer-right .p-drawer-leave-to { + @apply translate-x-full +} + +.p-drawer-top .p-drawer-enter-from, +.p-drawer-top .p-drawer-leave-to { + @apply -translate-y-full +} + +.p-drawer-bottom .p-drawer-enter-from, +.p-drawer-bottom .p-drawer-leave-to { + @apply translate-y-full +} + +.p-drawer-full .p-drawer-enter-from, +.p-drawer-full .p-drawer-leave-to { + @apply opacity-0 +} + +.p-drawer-full .p-drawer-enter-active, +.p-drawer-full .p-drawer-leave-active { + @apply transition-opacity animate-duration-400 ease-[cubic-bezier(0.25,0.8,0.25,1)] +} + +.p-drawer-left .p-drawer { + @apply w-80 h-full border-r +} + +.p-drawer-right .p-drawer { + @apply w-80 h-full border-s +} + +.p-drawer-top .p-drawer { + @apply h-40 w-full border-b +} + +.p-drawer-bottom .p-drawer { + @apply h-40 w-full border-t +} + +.p-drawer-left .p-drawer-content, +.p-drawer-right .p-drawer-content, +.p-drawer-top .p-drawer-content, +.p-drawer-bottom .p-drawer-content { + @apply w-full h-full +} + +.p-drawer-open { + @apply flex +} + +.p-overlay-mask:dir(rtl) { + @apply flex-row-reverse; +} diff --git a/sologger-ui/src/assets/primevue/fieldset.css b/sologger-ui/src/assets/primevue/fieldset.css new file mode 100644 index 0000000..7faed4e --- /dev/null +++ b/sologger-ui/src/assets/primevue/fieldset.css @@ -0,0 +1,45 @@ +.p-fieldset { + @apply border border-surface-200 dark:border-surface-700 rounded-md + bg-surface-0 dark:bg-surface-900 + text-surface-700 dark:text-surface-0 + px-[1.125rem] pt-0 pb-[1.125rem] +} + +.p-fieldset-legend { + @apply border border-transparent rounded-md px-3 py-2 + transition-colors duration-200 +} + +.p-fieldset-toggleable > .p-fieldset-legend { + @apply p-0 +} + +.p-fieldset-toggle-button { + @apply select-none overflow-hidden relative + flex items-center justify-center gap-2 + px-3 py-2 + border-none rounded-md + bg-surface-0 dark:bg-surface-900 + hover:bg-surface-100 dark:hover:bg-surface-800 + text-surface-700 dark:text-surface-0 + hover:text-surface-800 dark:hover:text-surface-0 + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-primary + transition-colors duration-200 +} + +.p-fieldset-legend-label { + @apply font-semibold; +} + +.p-fieldset-toggle-icon { + @apply text-surface-500 dark:text-surface-400 + transition-colors duration-200 +} + +.p-fieldset-toggle-button:hover .p-fieldset-toggle-icon { + @apply text-surface-600 dark:text-surface-300 +} + +.p-fieldset .p-fieldset-content { + @apply p-0 +} \ No newline at end of file diff --git a/sologger-ui/src/assets/primevue/fileupload.css b/sologger-ui/src/assets/primevue/fileupload.css new file mode 100644 index 0000000..74ce46d --- /dev/null +++ b/sologger-ui/src/assets/primevue/fileupload.css @@ -0,0 +1,57 @@ +@import './button'; +@import './message'; +@import './progressbar'; + +.p-fileupload input[type="file"] { + @apply hidden +} + +.p-fileupload-advanced { + @apply border border-surface-200 dark:border-surface-700 rounded-md + bg-surface-0 dark:bg-surface-900 + text-surface-700 dark:text-surface-0 +} + +.p-fileupload-header { + @apply flex items-center p-[1.125rem] gap-2 text-surface-700 dark:text-surface-0 +} + +.p-fileupload-content { + @apply border border-transparent relative transition-colors duration-200 pt-0 px-[1.125rem] pb-[1.125rem] +} + +.p-fileupload-content .p-progressbar { + @apply w-full absolute top-0 start-0 h-1 +} + +.p-fileupload-file-list { + @apply flex flex-col gap-2 mt-[1.125rem] +} + +.p-fileupload-file { + @apply flex flex-wrap items-center p-4 border-b border-surface-200 dark:border-surface-700 gap-2 last:border-b-0 +} + +.p-fileupload-file-info { + @apply flex flex-col gap-2 +} + +.p-fileupload-file-thumbnail { + @apply flex-shrink-0 +} + +.p-fileupload-file-actions { + @apply ms-auto +} + +.p-fileupload-highlight { + @apply border border-dashed border-primary +} + +.p-fileupload-advanced .p-message { + @apply mt-0 +} + +.p-fileupload-basic { + @apply flex flex-wrap items-center justify-center gap-2 +} diff --git a/sologger-ui/src/assets/primevue/floatlabel.css b/sologger-ui/src/assets/primevue/floatlabel.css new file mode 100644 index 0000000..f2544ee --- /dev/null +++ b/sologger-ui/src/assets/primevue/floatlabel.css @@ -0,0 +1,73 @@ +.p-floatlabel { + @apply block relative +} + +.p-floatlabel label { + @apply absolute pointer-events-none top-1/2 -translate-y-1/2 transition-all duration-200 ease-out leading-none font-medium + start-3 text-surface-500 dark:text-surface-400 +} + +.p-floatlabel:has(.p-textarea) label { + @apply top-2 translate-y-0 +} + +.p-floatlabel:has(.p-inputicon:first-child) label { + @apply start-10 +} + +.p-floatlabel:has(.p-invalid) label { + @apply text-red-400 dark:text-red-300 +} + +.p-floatlabel:has(input:focus) label, +.p-floatlabel:has(input.p-filled) label, +.p-floatlabel:has(input:-webkit-autofill) label, +.p-floatlabel:has(textarea:focus) label, +.p-floatlabel:has(textarea.p-filled) label, +.p-floatlabel:has(.p-inputwrapper-focus) label, +.p-floatlabel:has(.p-inputwrapper-filled) label { + @apply -top-5 translate-y-0 text-xs font-normal +} + +.p-floatlabel:has(input.p-filled) label, +.p-floatlabel:has(textarea.p-filled) label, +.p-floatlabel:has(.p-inputwrapper-filled) label { + @apply text-surface-500 dark:text-surface-400 +} + +.p-floatlabel:has(input:focus) label, +.p-floatlabel:has(input:-webkit-autofill) label, +.p-floatlabel:has(textarea:focus) label , +.p-floatlabel:has(.p-inputwrapper-focus) label { + @apply text-primary +} + +.p-floatlabel-in .p-inputtext, +.p-floatlabel-in .p-textarea, +.p-floatlabel-in .p-select-label, +.p-floatlabel-in .p-multiselect-label, +.p-floatlabel-in .p-autocomplete-input-multiple, +.p-floatlabel-in .p-cascadeselect-label, +.p-floatlabel-in .p-treeselect-label { + @apply pt-6 pb-2 +} + +.p-floatlabel-in:has(input:focus) label, +.p-floatlabel-in:has(input.p-filled) label, +.p-floatlabel-in:has(input:-webkit-autofill) label, +.p-floatlabel-in:has(textarea:focus) label, +.p-floatlabel-in:has(textarea.p-filled) label, +.p-floatlabel-in:has(.p-inputwrapper-focus) label, +.p-floatlabel-in:has(.p-inputwrapper-filled) label { + @apply top-2 +} + +.p-floatlabel-on:has(input:focus) label, +.p-floatlabel-on:has(input.p-filled) label, +.p-floatlabel-on:has(input:-webkit-autofill) label, +.p-floatlabel-on:has(textarea:focus) label, +.p-floatlabel-on:has(textarea.p-filled) label, +.p-floatlabel-on:has(.p-inputwrapper-focus) label, +.p-floatlabel-on:has(.p-inputwrapper-filled) label { + @apply top-0 -translate-y-1/2 rounded-sm bg-surface-0 dark:bg-surface-950 py-0 px-[0.125rem] +} diff --git a/sologger-ui/src/assets/primevue/galleria.css b/sologger-ui/src/assets/primevue/galleria.css new file mode 100644 index 0000000..e4edff9 --- /dev/null +++ b/sologger-ui/src/assets/primevue/galleria.css @@ -0,0 +1,244 @@ +.p-galleria { + @apply overflow-hidden border border-surface-200 dark:border-surface-700 rounded-md +} + +.p-galleria-content { + @apply flex flex-col +} + +.p-galleria-items-container { + @apply flex flex-col relative +} + +.p-galleria-items { + @apply relative flex h-full +} + +.p-galleria-nav-button { + @apply absolute top-1/2 inline-flex justify-center items-center overflow-hidden select-none border-none cursor-pointer + w-12 h-12 transition-colors duration-200 p-0 -mt-12 mx-2 mb-0 rounded-full + bg-white/10 text-surface-100 enabled:hover:bg-white/20 enabled:hover:text-surface-0 + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-primary +} + +.p-galleria-next-icon, +.p-galleria-prev-icon { + @apply text-2xl w-6 h-6 +} + +.p-galleria-prev-button { + @apply start-0 +} + +.p-galleria-next-button { + @apply end-0 +} + +.p-galleria-prev-button:dir(rtl) { + @apply start-auto end-0 +} +.p-galleria-next-button:dir(rtl) { + @apply end-auto start-0 +} + +.p-galleria-item { + @apply flex justify-center items-center h-full w-full +} + +.p-galleria-hover-navigators .p-galleria-nav-button { + @apply pointer-events-none opacity-0 transition-opacity duration-200 ease-in-out +} + +.p-galleria-hover-navigators .p-galleria-items-container:hover .p-galleria-nav-button { + @apply pointer-events-auto opacity-100 +} + +.p-galleria-hover-navigators .p-galleria-items-container:hover .p-galleria-nav-button.p-disabled { + @apply pointer-events-none +} + +.p-galleria-caption { + @apply absolute bottom-0 left-0 w-full bg-black/5 text-surface-100 p-4 +} + +.p-galleria-thumbnails { + @apply flex flex-col overflow-auto flex-shrink-0 +} + +.p-galleria-thumbnail-nav-button { + @apply self-center flex-grow-0 flex-shrink-0 basis-auto justify-center items-center overflow-hidden relative + my-0 mx-2 p-0 border-none select-none cursor-pointer w-8 h-8 rounded-md transition-colors duration-200 bg-transparent + text-surface-600 hover:bg-surface-100 hover:text-surface-700 + dark:text-surface-400 dark:hover:bg-surface-800 dark:hover:text-surface-0 + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-primary +} + +.p-galleria-thumbnail-nav-button .p-galleria-thumbnail-next-icon, +.p-galleria-thumbnail-nav-button .p-galleria-thumbnail-prev-icon { + @apply text-base w-4 h-4 +} + +.p-galleria-thumbnails-content { + @apply flex flex-row bg-surface-0 dark:bg-surface-900 py-4 px-1 +} + +.p-galleria-thumbnails-viewport { + @apply overflow-hidden w-full +} + +.p-galleria:not(.p-galleria-thumbnails-right):not(.p-galleria-thumbnails-left) .p-galleria-thumbnail-prev-button:dir(rtl), +.p-galleria:not(.p-galleria-thumbnails-right):not(.p-galleria-thumbnails-left) .p-galleria-thumbnail-next-button:dir(rtl) { + @apply rotate-180 +} + +.p-galleria-thumbnail-items { + @apply flex +} + +.p-galleria-thumbnail-item { + @apply overflow-auto flex items-center justify-center cursor-pointer opacity-50 +} + +.p-galleria-thumbnail { + @apply outline-transparent transition-opacity duration-300 hover:opacity-100 +} + +.p-galleria-thumbnail-item-current { + @apply opacity-100 +} + +.p-galleria-thumbnails-left .p-galleria-content, +.p-galleria-thumbnails-right .p-galleria-content { + @apply flex-row +} + +.p-galleria-thumbnails-left .p-galleria-items-container, +.p-galleria-thumbnails-right .p-galleria-items-container { + @apply flex-row +} + +.p-galleria-thumbnails-left .p-galleria-items-container, +.p-galleria-thumbnails-top .p-galleria-items-container { + @apply order-2 +} + +.p-galleria-thumbnails-left .p-galleria-thumbnails, +.p-galleria-thumbnails-top .p-galleria-thumbnails { + @apply order-1 +} + +.p-galleria-thumbnails-left .p-galleria-thumbnails-content, +.p-galleria-thumbnails-right .p-galleria-thumbnails-content { + @apply flex-col flex-grow +} + +.p-galleria-thumbnails-left .p-galleria-thumbnail-items, +.p-galleria-thumbnails-right .p-galleria-thumbnail-items { + @apply flex-col h-full +} + +.p-galleria-indicator-list { + @apply flex items-center justify-center p-4 gap-2 m-0 list-none +} + +.p-galleria-indicator-button { + @apply inline-flex items-center w-4 h-4 rounded-full m-0 p-0 border-none select-none cursor-pointer transition-colors duration-200 + bg-surface-200 hover:bg-surface-300 dark:bg-surface-700 dark:hover:bg-surface-600 + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-primary +} + +.p-galleria-indicator-active .p-galleria-indicator-button { + @apply bg-primary +} + +.p-galleria-indicators-left .p-galleria-items-container, +.p-galleria-indicators-right .p-galleria-items-container { + @apply flex-row items-center +} + +.p-galleria-indicators-left .p-galleria-items, +.p-galleria-indicators-top .p-galleria-items { + @apply order-2 +} + +.p-galleria-indicators-left .p-galleria-indicator-list, +.p-galleria-indicators-top .p-galleria-indicator-list { + @apply order-1 +} + +.p-galleria-indicators-left .p-galleria-indicator-list, +.p-galleria-indicators-right .p-galleria-indicator-list { + @apply flex-col +} + +.p-galleria-inset-indicators .p-galleria-indicator-list { + @apply absolute flex z-10 bg-black/50 +} + +.p-galleria-inset-indicators .p-galleria-indicator-button { + @apply bg-white/40 hover:bg-white/60 +} + +.p-galleria-inset-indicators .p-galleria-indicator-active .p-galleria-indicator-button { + @apply bg-white/90 +} + +.p-galleria-inset-indicators.p-galleria-indicators-top .p-galleria-indicator-list { + @apply top-0 left-0 w-full items-start +} + +.p-galleria-inset-indicators.p-galleria-indicators-right .p-galleria-indicator-list { + @apply right-0 top-0 h-full items-end +} + +.p-galleria-inset-indicators.p-galleria-indicators-bottom .p-galleria-indicator-list { + @apply bottom-0 left-0 w-full items-end +} + +.p-galleria-inset-indicators.p-galleria-indicators-left .p-galleria-indicator-list { + @apply left-0 top-0 h-full items-start +} + +.p-galleria-mask { + @apply fixed top-0 left-0 w-full h-full flex items-center justify-center +} + +.p-galleria-close-button { + @apply absolute top-0 right-0 flex items-center justify-center overflow-hidden m-2 rounded-full + transition-colors duration-200 select-none cursor-pointer w-12 h-12 p-0 border-none + bg-white/10 text-surface-50 hover:bg-white/20 hover:text-surface-0 + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-primary +} + +.p-galleria-close-icon { + @apply text-2xl w-6 h-6 +} + +.p-galleria-mask .p-galleria-nav-button { + @apply fixed top-1/2 +} + +.p-galleria-enter-active { + @apply transition-all duration-150 ease-[cubic-bezier(0,0,0.2,1)] +} + +.p-galleria-leave-active { + @apply transition-all duration-150 ease-[cubic-bezier(0.4,0,0.2,1)] +} + +.p-galleria-enter-from, +.p-galleria-leave-to { + @apply opacity-0 scale-75 +} + +.p-galleria-enter-active .p-galleria-nav-button { + @apply opacity-0 +} + +.p-items-hidden .p-galleria-thumbnail-item { + @apply invisible +} + +.p-items-hidden .p-galleria-thumbnail-item.p-galleria-thumbnail-item-active { + @apply visible +} diff --git a/sologger-ui/src/assets/primevue/iconfield.css b/sologger-ui/src/assets/primevue/iconfield.css new file mode 100644 index 0000000..d7aaf11 --- /dev/null +++ b/sologger-ui/src/assets/primevue/iconfield.css @@ -0,0 +1,23 @@ +.p-iconfield { + @apply relative +} + +.p-inputicon { + @apply absolute top-1/2 -mt-2 text-surface-400 leading-none +} + +.p-iconfield .p-inputicon:first-child { + @apply start-3 +} + +.p-iconfield .p-inputicon:last-child { + @apply end-3 +} + +.p-iconfield .p-inputtext:not(:first-child) { + @apply ps-10 +} + +.p-iconfield .p-inputtext:not(:last-child) { + @apply pe-10 +} diff --git a/sologger-ui/src/assets/primevue/iftalabel.css b/sologger-ui/src/assets/primevue/iftalabel.css new file mode 100644 index 0000000..dc323f9 --- /dev/null +++ b/sologger-ui/src/assets/primevue/iftalabel.css @@ -0,0 +1,32 @@ +.p-iftalabel { + @apply block relative +} + +.p-iftalabel label { + @apply absolute pointer-events-none top-2 transition-all ease-out duration-200 leading-none text-xs font-medium start-3 text-surface-500 dark:text-surface-400 +} + +.p-iftalabel .p-inputtext, +.p-iftalabel .p-textarea, +.p-iftalabel .p-select-label, +.p-iftalabel .p-multiselect-label, +.p-iftalabel .p-autocomplete-input-multiple, +.p-iftalabel .p-cascadeselect-label, +.p-iftalabel .p-treeselect-label { + @apply pt-6 pb-2 +} + +.p-iftalabel:has(.p-invalid) label { + @apply text-red-400 dark:text-red-300 +} + +.p-iftalabel:has(input:focus) label , +.p-iftalabel:has(input:-webkit-autofill) label, +.p-iftalabel:has(textarea:focus) label , +.p-iftalabel:has(.p-inputwrapper-focus) label { + @apply text-primary +} + +.p-iftalabel .p-inputicon { + @apply top-6 translate-y-1/4 mt-0 +} diff --git a/sologger-ui/src/assets/primevue/image.css b/sologger-ui/src/assets/primevue/image.css new file mode 100644 index 0000000..7cb3e46 --- /dev/null +++ b/sologger-ui/src/assets/primevue/image.css @@ -0,0 +1,56 @@ +.p-image-mask { + @apply flex items-center justify-center +} + +.p-image-preview { + @apply relative inline-flex leading-none +} + +.p-image-preview-mask { + @apply absolute start-0 top-0 w-full h-full flex items-center justify-center opacity-0 + border-none p-0 cursor-pointer bg-transparent text-surface-200 transition-all duration-200 +} + +.p-image-preview:hover > .p-image-preview-mask { + @apply opacity-100 cursor-pointer bg-black/40 dark:bg-black/60 +} + +.p-image-preview-icon { + @apply text-2xl w-6 h-6 +} + +.p-image-toolbar { + @apply absolute top-4 end-4 start-auto bottom-auto flex z-10 p-2 bg-white/10 border border-white/20 rounded-3xl gap-2; +} + +.p-image-action { + @apply inline-flex justify-center items-center text-surface-50 bg-transparent w-12 h-12 m-0 p-0 + border-none cursor-pointer select-none rounded-full transition-colors duration-200 + hover:text-surface-0 hover:bg-white/10 + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-primary +} + +.p-image-action .p-icon { + @apply text-2xl h-6 w-6 +} + +.p-image-action.p-disabled { + @apply pointer-events-auto +} + +.p-image-original { + @apply transition-transform duration-150 max-w-[100vw] max-h-[100vh] +} + +.p-image-original-enter-active { + @apply transition-all duration-150 ease-[cubic-bezier(0,0,0.2,1)] +} + +.p-image-original-leave-active { + @apply transition-all duration-150 ease-[cubic-bezier(0.4,0,0.2,1)] +} + +.p-image-original-enter-from, +.p-image-original-leave-to { + @apply opacity-0 scale-75 +} diff --git a/sologger-ui/src/assets/primevue/imagecompare.css b/sologger-ui/src/assets/primevue/imagecompare.css new file mode 100644 index 0000000..64151b4 --- /dev/null +++ b/sologger-ui/src/assets/primevue/imagecompare.css @@ -0,0 +1,38 @@ +.p-imagecompare { + @apply relative overflow-hidden w-full aspect-video +} + +.p-imagecompare img { + @apply w-full h-full absolute +} + +.p-imagecompare img + img { + @apply [clip-path:polygon(0_0,50%_0,50%_100%,0_100%)] +} + +.p-imagecompare:dir(rtl) img + img { + @apply [clip-path:polygon(50%_0,100%_0,100%_100%,50%_100%)] +} + +.p-imagecompare-slider { + @apply relative appearance-none w-[calc(100%+1rem)] h-full -ms-2 bg-transparent outline-none transition-all duration-200 + hover:w-[calc(100%+2rem)] hover:-ms-4 +} + +.p-imagecompare-slider::-webkit-slider-thumb { + @apply appearance-none h-4 w-4 bg-white/30 rounded-full bg-contain cursor-ew-resize transition-all duration-200 + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-primary +} + +.p-imagecompare-slider::-moz-range-thumb { + @apply appearance-none h-4 w-4 bg-white/30 rounded-full bg-contain cursor-ew-resize transition-all duration-200 + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-primary +} + +.p-imagecompare-slider:hover::-webkit-slider-thumb { + @apply bg-white/40 h-8 w-8 +} + +.p-imagecompare-slider:hover::-moz-range-thumb { + @apply bg-white/40 h-8 w-8 +} diff --git a/sologger-ui/src/assets/primevue/inplace.css b/sologger-ui/src/assets/primevue/inplace.css new file mode 100644 index 0000000..ec4805d --- /dev/null +++ b/sologger-ui/src/assets/primevue/inplace.css @@ -0,0 +1,13 @@ +.p-inplace-display { + @apply inline cursor-pointer border border-transparent px-3 py-2 rounded-md + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-primary + transition-colors duration-200 +} + +.p-inplace-display:not(.p-disabled):hover { + @apply bg-surface-100 dark:bg-surface-800 text-surface-800 dark:text-surface-0 +} + +.p-inplace-content { + @apply block +} \ No newline at end of file diff --git a/sologger-ui/src/assets/primevue/inputgroup.css b/sologger-ui/src/assets/primevue/inputgroup.css new file mode 100644 index 0000000..99db685 --- /dev/null +++ b/sologger-ui/src/assets/primevue/inputgroup.css @@ -0,0 +1,67 @@ +.p-inputgroup, +.p-inputgroup .p-floatlabel, +.p-inputgroup .p-iftalabel { + @apply flex items-stretch w-full +} + +.p-inputgroup .p-inputtext, +.p-inputgroup .p-inputwrapper { + @apply flex-auto w-[1%] +} + +.p-inputgroupaddon { + @apply flex items-center justify-center p-2 min-w-10 + border-y border-surface-300 dark:border-surface-700 + bg-surface-0 dark:bg-surface-950 text-surface-400 +} + +.p-inputgroupaddon:first-child, +.p-inputgroupaddon + .p-inputgroupaddon { + @apply border-s +} + +.p-inputgroupaddon:last-child { + @apply border-e +} + +.p-inputgroup > .p-component, +.p-inputgroup > .p-inputwrapper > .p-component, +.p-inputgroup > .p-floatlabel > .p-component, +.p-inputgroup > .p-floatlabel > .p-inputwrapper > .p-component, +.p-inputgroup > .p-iftalabel > .p-component, +.p-inputgroup > .p-iftalabel > .p-inputwrapper > .p-component { + @apply rounded-none m-0 +} + +.p-inputgroupaddon:first-child, +.p-inputgroup > .p-component:first-child, +.p-inputgroup > .p-inputwrapper:first-child > .p-component, +.p-inputgroup > .p-floatlabel:first-child > .p-component, +.p-inputgroup > .p-floatlabel:first-child > .p-inputwrapper > .p-component, +.p-inputgroup > .p-iftalabel:first-child > .p-component, +.p-inputgroup > .p-iftalabel:first-child > .p-inputwrapper > .p-component { + @apply rounded-s-md +} + +.p-inputgroupaddon:last-child, +.p-inputgroup > .p-component:last-child, +.p-inputgroup > .p-inputwrapper:last-child > .p-component, +.p-inputgroup > .p-floatlabel:last-child > .p-component, +.p-inputgroup > .p-floatlabel:last-child > .p-inputwrapper > .p-component, +.p-inputgroup > .p-iftalabel:last-child > .p-component, +.p-inputgroup > .p-iftalabel:last-child > .p-inputwrapper > .p-component { + @apply rounded-e-md +} + +.p-inputgroup .p-component:focus, +.p-inputgroup .p-component.p-focus, +.p-inputgroup .p-inputwrapper-focus, +.p-inputgroup .p-component:focus ~ label, +.p-inputgroup .p-component.p-focus ~ label, +.p-inputgroup .p-inputwrapper-focus ~ label { + @apply z-10 +} + +.p-inputgroup > .p-button:not(.p-button-icon-only) { + @apply w-auto +} diff --git a/sologger-ui/src/assets/primevue/inputnumber.css b/sologger-ui/src/assets/primevue/inputnumber.css new file mode 100644 index 0000000..bdef172 --- /dev/null +++ b/sologger-ui/src/assets/primevue/inputnumber.css @@ -0,0 +1,84 @@ +@import './inputtext'; + +.p-inputnumber { + @apply inline-flex relative +} + +.p-inputnumber-button { + @apply flex items-center justify-center flex-grow-0 flex-shrink-0 basis-auto cursor-pointer w-10 + bg-transparent enabled:hover:bg-surface-100 enabled:active:bg-surface-200 + border border-surface-300 enabled:hover:border-surface-300 enabled:active:border-surface-300 + text-surface-400 enabled:hover:text-surface-500 enabled:active:text-surface-600 + dark:bg-transparent dark:enabled:hover:bg-surface-800 dark:enabled:active:bg-surface-700 + dark:border-surface-700 dark:enabled:hover:border-surface-700 dark:enabled:active:border-surface-700 + dark:text-surface-400 dark:enabled:hover:text-surface-300 dark:enabled:active:text-surface-200 + transition-colors duration-200 +} + +.p-inputnumber-stacked .p-inputnumber-button { + @apply relative flex-auto border-none +} + +.p-inputnumber-stacked .p-inputnumber-button-group { + @apply flex flex-col absolute top-px end-px h-[calc(100%-2px)] z-10 +} + +.p-inputnumber-stacked .p-inputnumber-increment-button { + @apply p-0 rounded-tr-[5px] +} + +.p-inputnumber-stacked .p-inputnumber-decrement-button { + @apply p-0 rounded-br-[5px] +} + +.p-inputnumber-horizontal .p-inputnumber-increment-button { + @apply order-3 rounded-e-md border-s-0 +} + +.p-inputnumber-horizontal .p-inputnumber-input { + @apply order-2 rounded-none +} + +.p-inputnumber-horizontal .p-inputnumber-decrement-button { + @apply order-1 rounded-s-md border-r-0 +} + +.p-floatlabel:has(.p-inputnumber-horizontal) label { + @apply ms-10 +} + +.p-inputnumber-vertical { + @apply flex-col +} + +.p-inputnumber-vertical .p-inputnumber-button { + @apply py-2 +} + +.p-inputnumber-vertical .p-inputnumber-increment-button { + @apply order-1 rounded-ss-md rounded-se-md w-full border-b-0 +} + +.p-inputnumber-vertical .p-inputnumber-input { + @apply order-2 rounded-none text-center +} + +.p-inputnumber-vertical .p-inputnumber-decrement-button { + @apply order-3 rounded-ee-md rounded-es-md w-full border-t-0 +} + +.p-inputnumber-input { + @apply flex-auto +} + +.p-inputnumber-fluid { + @apply w-full +} + +.p-inputnumber-fluid .p-inputnumber-input { + @apply w-[1%] +} + +.p-inputnumber-fluid.p-inputnumber-vertical .p-inputnumber-input { + @apply w-full +} diff --git a/sologger-ui/src/assets/primevue/inputotp.css b/sologger-ui/src/assets/primevue/inputotp.css new file mode 100644 index 0000000..a0b9b67 --- /dev/null +++ b/sologger-ui/src/assets/primevue/inputotp.css @@ -0,0 +1,9 @@ +@import './inputtext'; + +.p-inputotp { + @apply flex items-center gap-2 +} + +.p-inputotp-input { + @apply text-center w-10 +} \ No newline at end of file diff --git a/sologger-ui/src/assets/primevue/inputtext.css b/sologger-ui/src/assets/primevue/inputtext.css new file mode 100644 index 0000000..0272576 --- /dev/null +++ b/sologger-ui/src/assets/primevue/inputtext.css @@ -0,0 +1,34 @@ +.p-inputtext { + @apply appearance-none rounded-md + border border-surface-300 dark:border-surface-700 + enabled:hover:border-surface-400 dark:enabled:hover:border-surface-600 + enabled:focus:border-primary + bg-surface-0 dark:bg-surface-950 + text-surface-700 dark:text-surface-0 + disabled:bg-surface-200 disabled:text-surface-500 dark:disabled:bg-surface-700 dark:disabled:text-surface-400 disabled:opacity-100 + placeholder:text-surface-500 dark:placeholder:text-surface-400 + px-3 py-2 + transition-colors duration-200 + shadow-[0_1px_2px_0_rgba(18,18,23,0.05)] + outline-none +} + +.p-inputtext.p-invalid { + @apply border-red-400 dark:border-red-300 +} + +.p-inputtext.p-variant-filled { + @apply bg-surface-50 dark:bg-surface-800 +} + +.p-inputtext-sm { + @apply text-sm px-[0.625rem] py-[0.375rem] +} + +.p-inputtext-lg { + @apply text-lg px-[0.875rem] py-[0.625rem] +} + +.p-inputtext-fluid { + @apply w-full +} \ No newline at end of file diff --git a/sologger-ui/src/assets/primevue/knob.css b/sologger-ui/src/assets/primevue/knob.css new file mode 100644 index 0000000..5304c9e --- /dev/null +++ b/sologger-ui/src/assets/primevue/knob.css @@ -0,0 +1,37 @@ +.p-knob-range { + @apply fill-none transition-[stroke] duration-100 ease-in +} + +.p-knob-text { + @apply text-xl text-center +} + +.p-knob svg { + @apply rounded-full + transition-colors duration-200 + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-primary +} + +.p-knob svg path:first-child { + @apply stroke-surface-200 dark:stroke-surface-700 +} + +.p-knob svg path + path { + @apply stroke-primary +} + +.p-knob svg text { + @apply fill-surface-500 dark:fill-surface-400 +} + +.p-knob-value { + animation-name: p-knob-dash-frame; + animation-fill-mode: forwards; + fill: none; +} + +@keyframes p-knob-dash-frame { + 100% { + stroke-dashoffset: 0; + } +} \ No newline at end of file diff --git a/sologger-ui/src/assets/primevue/listbox.css b/sologger-ui/src/assets/primevue/listbox.css new file mode 100644 index 0000000..30b0235 --- /dev/null +++ b/sologger-ui/src/assets/primevue/listbox.css @@ -0,0 +1,79 @@ +@import './inputtext'; +@import './iconfield'; + +.p-listbox { + @apply bg-surface-0 dark:bg-surface-950 text-surface-700 dark:text-surface-0 + border border-surface-300 dark:border-surface-700 rounded-md + shadow-[0_1px_2px_0_rgba(18,18,23,0.05)] + transition-colors duration-200 +} + +.p-listbox.p-focus { + @apply border-primary +} + +.p-listbox.p-disabled { + @apply bg-surface-200 text-surface-500 dark:bg-surface-700 dark:text-surface-400 opacity-100 cursor-default +} + +.p-listbox.p-disabled .p-listbox-option { + @apply text-surface-500 dark:text-surface-400 cursor-default +} + +.p-listbox.p-invalid { + @apply border-red-400 dark:border-red-300 +} + +.p-listbox-header { + @apply pt-2 pb-1 px-4 +} + +.p-listbox-filter { + @apply w-full +} + +.p-listbox-list-container { + @apply overflow-auto +} + +.p-listbox-list { + @apply list-none m-0 p-1 outline-none flex flex-col gap-[2px] +} + +.p-listbox-option { + @apply flex items-center cursor-pointer relative overflow-hidden px-3 py-2 border-none rounded-sm + text-surface-700 dark:text-surface-0 + transition-colors duration-200 +} + +.p-listbox-striped li:nth-child(even of .p-listbox-option) { + @apply bg-surface-50 dark:bg-surface-900 +} + +.p-listbox .p-listbox-list .p-listbox-option.p-listbox-option-selected { + @apply bg-highlight +} + +.p-listbox:not(.p-disabled) .p-listbox-option.p-listbox-option-selected.p-focus { + @apply bg-highlight-emphasis +} + +.p-listbox:not(.p-disabled) .p-listbox-option:not(.p-listbox-option-selected):not(.p-disabled).p-focus { + @apply bg-surface-100 dark:bg-surface-800 text-surface-800 dark:text-surface-0 +} + +.p-listbox:not(.p-disabled) .p-listbox-option:not(.p-listbox-option-selected):not(.p-disabled):hover { + @apply bg-surface-100 dark:bg-surface-800 text-surface-800 dark:text-surface-0 +} + +.p-listbox-option-check-icon { + @apply relative -ms-[0.375rem] me-[0.375rem] text-surface-700 dark:text-surface-0 +} + +.p-listbox-option-group { + @apply m-0 px-3 py-2 text-surface-500 dark:text-surface-400 font-semibold +} + +.p-listbox-empty-message { + @apply px-3 py-2 +} \ No newline at end of file diff --git a/sologger-ui/src/assets/primevue/megamenu.css b/sologger-ui/src/assets/primevue/megamenu.css new file mode 100644 index 0000000..08a232b --- /dev/null +++ b/sologger-ui/src/assets/primevue/megamenu.css @@ -0,0 +1,207 @@ +.p-megamenu { + @apply relative flex items-center rounded-md gap-2 + bg-surface-0 dark:bg-surface-900 + text-surface-700 dark:text-surface-0 + border border-surface-200 dark:border-surface-700 +} + +.p-megamenu-start, +.p-megamenu-end { + @apply flex items-center +} + +.p-megamenu-root-list { + @apply m-0 p-0 list-none outline-none flex items-center flex-wrap gap-2 +} + +.p-megamenu-root-list > .p-megamenu-item > .p-menumegamenubar-item-content { + @apply rounded-md +} + +.p-megamenu-root-list > .p-megamenu-item > .p-megamenu-item-content > .p-megamenu-item-link { + @apply px-3 py-2 +} + +.p-megamenu-item-content { + @apply transition-colors duration-200 rounded-sm text-surface-700 dark:text-surface-0 +} + +.p-megamenu-item-link { + @apply cursor-pointer flex items-center no-underline overflow-hidden relative text-inherit + px-3 py-2 gap-2 select-none outline-none +} + +.p-megamenu-item-icon { + @apply text-surface-400 dark:text-surface-500 +} + +.p-megamenu-submenu-icon { + @apply text-surface-400 dark:text-surface-500 ms-auto text-sm w-[0.875rem] h-[0.875rem] +} + +.p-megamenu-item.p-focus > .p-megamenu-item-content { + @apply bg-surface-100 dark:bg-surface-800 text-surface-800 dark:text-surface-0 +} + +.p-megamenu-item.p-focus > .p-megamenu-item-content .p-megamenu-item-icon { + @apply text-surface-500 dark:text-surface-400 +} + +.p-megamenu-item.p-focus > .p-megamenu-item-content .p-megamenu-submenu-icon { + @apply text-surface-500 dark:text-surface-400 +} + +.p-megamenu-item:not(.p-disabled) > .p-megamenu-item-content:hover { + @apply bg-surface-100 dark:bg-surface-800 text-surface-800 dark:text-surface-0 +} + +.p-megamenu-item:not(.p-disabled) > .p-megamenu-item-content:hover .p-megamenu-item-icon { + @apply text-surface-500 dark:text-surface-400 +} + +.p-megamenu-item:not(.p-disabled) > .p-megamenu-item-content:hover .p-megamenu-submenu-icon { + @apply text-surface-500 dark:text-surface-400 +} + +.p-megamenu-item-active > .p-megamenu-item-content { + @apply bg-surface-100 dark:bg-surface-800 text-surface-800 dark:text-surface-0 +} + +.p-megamenu-item-active > .p-megamenu-item-content .p-megamenu-item-icon { + @apply text-surface-500 dark:text-surface-400 +} + +.p-megamenu-item-active > .p-megamenu-item-content .p-megamenu-submenu-icon { + @apply text-surface-500 dark:text-surface-400 +} + +.p-megamenu-overlay { + @apply hidden absolute w-auto z-10 start-0 min-w-full rounded-md + bg-surface-0 dark:bg-surface-900 + border border-surface-200 dark:border-surface-700 + text-surface-700 dark:text-surface-0 + shadow-[0_4px_6px_-1px_rgba(0,0,0,0.1),0_2px_4px_-2px_rgba(0,0,0,0.1)] +} + +.p-megamenu-root-list > .p-megamenu-item-active > .p-megamenu-overlay { + @apply block +} + +.p-megamenu-submenu { + @apply m-0 p-1 list-none min-w-52 flex flex-col gap-[2px] +} + +.p-megamenu-submenu-label { + @apply px-3 py-2 text-surface-500 dark:text-surface-400 font-semibold bg-transparent +} + +.p-megamenu-separator { + @apply border-t border-surface-200 dark:border-surface-700 +} + +.p-megamenu-horizontal { + @apply items-center px-3 py-2 +} + +.p-megamenu-horizontal .p-megamenu-root-list { + @apply flex items-center flex-wrap gap-2 +} + +.p-megamenu-horizontal .p-megamenu-end { + @apply ms-auto self-center +} + +.p-megamenu-vertical { + @apply inline-flex min-w-52 flex-col items-stretch p-1 +} + +.p-megamenu-vertical .p-megamenu-root-list { + @apply items-stretch flex-col gap-[2px] +} + +.p-megamenu-vertical .p-megamenu-root-list > .p-megamenu-item-active > .p-megamenu-overlay { + @apply start-full top-0 +} + +.p-megamenu-vertical .p-megamenu-root-list > .p-megamenu-item > .p-megamenu-item-content .p-megamenu-submenu-icon { + @apply ms-auto +} + +.p-megamenu-grid { + @apply flex +} + +.p-megamenu-col-2, +.p-megamenu-col-3, +.p-megamenu-col-4, +.p-megamenu-col-6, +.p-megamenu-col-12 { + @apply flex-grow-0 flex-shrink-0 basis-auto p-2 +} + +.p-megamenu-col-2 { + @apply w-1/6; +} + +.p-megamenu-col-3 { + @apply w-1/4 +} + +.p-megamenu-col-4 { + @apply w-1/3 +} + +.p-megamenu-col-6 { + @apply w-1/2 +} + +.p-megamenu-col-12 { + @apply w-full +} + +.p-megamenu-button { + @apply hidden justify-center items-center cursor-pointer w-7 h-7 relative border-none rounded-full + text-surface-500 dark:text-surface-400 hover:text-surface-600 dark:hover:text-surface-300 + bg-transparent hover:bg-surface-100 dark:hover:bg-surface-800 + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-primary + transition-colors duration-200 +} + +.p-megamenu-mobile { + @apply flex +} + +.p-megamenu-mobile .p-megamenu-button { + @apply flex +} + +.p-megamenu-mobile .p-megamenu-root-list { + @apply absolute hidden flex-col top-full start-0 z-10 w-full p-1 gap-[2px] + bg-surface-0 dark:bg-surface-900 + border border-surface-200 dark:border-surface-700 + shadow-[0_4px_6px_-1px_rgba(0,0,0,0.1),0_2px_4px_-2px_rgba(0,0,0,0.1)] +} + +.p-megamenu-mobile-active .p-megamenu-root-list { + @apply flex +} + +.p-megamenu-mobile .p-megamenu-root-list .p-megamenu-item { + @apply w-full static +} + +.p-megamenu-mobile .p-megamenu-overlay { + @apply static border-none rounded-none shadow-none +} + +.p-megamenu-mobile .p-megamenu-grid { + @apply flex-wrap overflow-auto max-h-[90%] +} + +.p-megamenu-mobile .p-megamenu-root-list > .p-megamenu-item > .p-megamenu-item-content .p-megamenu-submenu-icon { + @apply ms-auto transition-transform duration-[200ms] +} + +.p-megamenu-mobile .p-megamenu-root-list > .p-megamenu-item-active > .p-megamenu-item-content .p-megamenu-submenu-icon { + @apply -rotate-180 +} diff --git a/sologger-ui/src/assets/primevue/menu.css b/sologger-ui/src/assets/primevue/menu.css new file mode 100644 index 0000000..8bb3708 --- /dev/null +++ b/sologger-ui/src/assets/primevue/menu.css @@ -0,0 +1,51 @@ +.p-menu { + @apply bg-surface-0 dark:bg-surface-900 + text-surface-700 dark:text-surface-0 + border border-surface-200 dark:border-surface-700 + rounded-md min-w-52 +} + +.p-menu-list { + @apply m-0 p-1 list-none outline-none flex flex-col gap-[2px] +} + +.p-menu-item-content { + @apply transition-colors duration-200 rounded-sm text-surface-700 dark:text-surface-0 +} + +.p-menu-item-link { + @apply cursor-pointer flex items-center no-underline overflow-hidden relative text-inherit + px-3 py-2 gap-2 select-none outline-none +} + +.p-menu-item-icon { + @apply text-surface-400 dark:text-surface-500 +} + +.p-menu-item.p-focus .p-menu-item-content { + @apply bg-surface-100 dark:bg-surface-800 text-surface-800 dark:text-surface-0 +} + +.p-menu-item.p-focus .p-menu-item-icon { + @apply text-surface-500 dark:text-surface-400 +} + +.p-menu-item:not(.p-disabled) .p-menu-item-content:hover { + @apply bg-surface-100 dark:bg-surface-800 text-surface-800 dark:text-surface-0 +} + +.p-menu-item:not(.p-disabled) .p-menu-item-content:hover .p-menu-item-icon { + @apply text-surface-500 dark:text-surface-400 +} + +.p-menu-overlay { + @apply shadow-[0_4px_6px_-1px_rgba(0,0,0,0.1),0_2px_4px_-2px_rgba(0,0,0,0.1)] +} + +.p-menu-submenu-label { + @apply bg-transparent px-3 py-2 text-surface-500 dark:text-surface-400 font-semibold +} + +.p-menu-separator { + @apply border-t border-surface-200 dark:border-surface-700 +} \ No newline at end of file diff --git a/sologger-ui/src/assets/primevue/menubar.css b/sologger-ui/src/assets/primevue/menubar.css new file mode 100644 index 0000000..c989af6 --- /dev/null +++ b/sologger-ui/src/assets/primevue/menubar.css @@ -0,0 +1,169 @@ +.p-menubar { + @apply flex items-center rounded-md px-3 py-2 gap-2 + bg-surface-0 dark:bg-surface-900 + text-surface-700 dark:text-surface-0 + border border-surface-200 dark:border-surface-700 +} + +.p-menubar-start, +.p-megamenu-end { + @apply flex items-center +} + +.p-menubar-root-list, +.p-menubar-submenu { + @apply flex m-0 p-0 list-none outline-none +} + +.p-menubar-root-list { + @apply items-center flex-wrap gap-2 +} + +.p-menubar-root-list > .p-menubar-item > .p-menubar-item-content { + @apply rounded-md +} + +.p-menubar-root-list > .p-menubar-item > .p-menubar-item-content > .p-menubar-item-link { + @apply px-3 py-2 +} + +.p-menubar-item-content { + @apply transition-colors duration-200 rounded-sm text-surface-700 dark:text-surface-0 +} + +.p-menubar-item-link { + @apply cursor-pointer flex items-center no-underline overflow-hidden relative text-inherit + px-3 py-2 gap-2 select-none outline-none +} + +.p-menubar-item-icon { + @apply text-surface-400 dark:text-surface-500 +} + +.p-menubar-submenu-icon { + @apply text-surface-400 dark:text-surface-500 ms-auto text-sm w-[0.875rem] h-[0.875rem] +} + +.p-menubar-submenu-icon:dir(rtl) { + @apply rotate-180 +} + +.p-menubar-item.p-focus > .p-menubar-item-content { + @apply bg-surface-100 dark:bg-surface-800 text-surface-800 dark:text-surface-0 +} + +.p-menubar-item.p-focus > .p-menubar-item-content .p-menubar-item-icon { + @apply text-surface-500 dark:text-surface-400 +} + +.p-menubar-item.p-focus > .p-menubar-item-content .p-menubar-submenu-icon { + @apply text-surface-500 dark:text-surface-400 +} + +.p-menubar-item:not(.p-disabled) > .p-menubar-item-content:hover { + @apply bg-surface-100 dark:bg-surface-800 text-surface-800 dark:text-surface-0 +} + +.p-menubar-item:not(.p-disabled) > .p-menubar-item-content:hover .p-menubar-item-icon { + @apply text-surface-500 dark:text-surface-400 +} + +.p-menubar-item:not(.p-disabled) > .p-menubar-item-content:hover .p-menubar-submenu-icon { + @apply text-surface-500 dark:text-surface-400 +} + +.p-menubar-item-active > .p-menubar-item-content { + @apply bg-surface-100 dark:bg-surface-800 text-surface-800 dark:text-surface-0 +} + +.p-menubar-item-active > .p-menubar-item-content .p-menubar-item-icon { + @apply text-surface-500 dark:text-surface-400 +} + +.p-menubar-item-active > .p-menubar-item-content .p-menubar-submenu-icon { + @apply text-surface-500 dark:text-surface-400 +} + +.p-menubar-submenu { + @apply hidden absolute min-w-52 z-10 + bg-surface-0 dark:bg-surface-900 + border border-surface-200 dark:border-surface-700 + text-surface-700 dark:text-surface-0 + flex-col p-1 gap-[2px] rounded-md + shadow-[0_4px_6px_-1px_rgba(0,0,0,0.1),0_2px_4px_-2px_rgba(0,0,0,0.1)] +} + +.p-menubar-submenu .p-menubar-separator { + @apply border-t border-surface-200 dark:border-surface-700 +} + +.p-menubar-submenu .p-menubar-item { + @apply relative +} + + .p-menubar-submenu > .p-menubar-item-active > .p-menubar-submenu { + @apply block start-full top-0 +} + +.p-menubar-end { + @apply ms-auto self-center +} + +.p-menubar-button { + @apply hidden justify-center items-center cursor-pointer w-7 h-7 relative border-none rounded-full + text-surface-500 dark:text-surface-400 hover:text-surface-600 dark:hover:text-surface-300 + bg-transparent hover:bg-surface-100 dark:hover:bg-surface-800 + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-primary + transition-colors duration-200 +} + +.p-menubar-mobile { + @apply relative +} + +.p-menubar-mobile .p-menubar-button { + @apply flex +} + +.p-menubar-mobile .p-menubar-root-list { + @apply absolute hidden w-full flex-col top-full start-0 z-10 p-1 gap-[2px] rounded-md + border border-surface-200 dark:border-surface-700 + bg-surface-0 dark:bg-surface-900 + shadow-[0_4px_6px_-1px_rgba(0,0,0,0.1),0_2px_4px_-2px_rgba(0,0,0,0.1)] +} + +.p-menubar-mobile .p-menubar-root-list > .p-menubar-item > .p-menubar-item-content > .p-menubar-item-link { + @apply px-3 py-3 +} + +.p-menubar-mobile-active .p-menubar-root-list { + @apply flex +} + +.p-menubar-mobile .p-menubar-root-list .p-menubar-item { + @apply w-full static +} + +.p-menubar-mobile .p-menubar-root-list .p-menubar-separator { + @apply border-t border-surface-200 dark:border-surface-700 +} + +.p-menubar-mobile .p-menubar-root-list > .p-menubar-item > .p-menubar-item-content .p-menubar-submenu-icon { + @apply ms-auto transition-transform duration-[200ms] +} + +.p-menubar-mobile .p-menubar-root-list > .p-menubar-item-active > .p-menubar-item-content .p-menubar-submenu-icon { + @apply -rotate-180 +} + +.p-menubar-mobile .p-menubar-submenu .p-menubar-submenu-icon { + @apply transition-transform duration-200 rotate-90 +} + +.p-menubar-mobile .p-menubar-item-active > .p-menubar-item-content .p-menubar-submenu-icon { + @apply -rotate-90 +} + +.p-menubar-mobile .p-menubar-submenu { + @apply w-full static shadow-none border-none ps-4 pe-0 +} diff --git a/sologger-ui/src/assets/primevue/message.css b/sologger-ui/src/assets/primevue/message.css new file mode 100644 index 0000000..7ba9711 --- /dev/null +++ b/sologger-ui/src/assets/primevue/message.css @@ -0,0 +1,212 @@ +.p-message { + @apply rounded-md outline outline-1 +} + +.p-message-content { + @apply flex items-center px-3 py-2 gap-2 h-full +} + +.p-message-icon { + @apply flex-shrink-0 +} + +.p-message-close-button { + @apply flex items-center justify-center flex-shrink-0 ms-auto overflow-hidden relative cursor-pointer select-none + w-7 h-7 rounded-full bg-transparent transition-colors duration-200 text-inherit p-0 border-none + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 +} + +.p-message-info { + @apply bg-blue-50/95 outline-blue-200 text-blue-600 + dark:bg-blue-500/15 dark:outline-blue-700/35 dark:text-blue-500 + shadow-[0px_4px_8px_0px_theme(colors.blue.500/0.04)] +} + +.p-message-info .p-message-close-button { + @apply hover:bg-blue-100 focus-visible:outline-blue-600 + dark:hover:bg-white/5 dark:focus-visible:outline-blue-500 +} + +.p-message-info.p-message-outlined { + @apply text-blue-500 outline-blue-500 dark:text-blue-600 dark:outline-blue-600 +} + +.p-message-info.p-message-simple { + @apply text-blue-500 dark:text-blue-600 +} + +.p-message-success { + @apply bg-green-50/95 outline-green-200 text-green-600 + dark:bg-green-500/15 dark:outline-green-700/35 dark:text-green-500 + shadow-[0px_4px_8px_0px_theme(colors.green.500/0.04)] +} + +.p-message-success .p-message-close-button { + @apply hover:bg-green-100 focus-visible:outline-green-600 + dark:hover:bg-white/5 dark:focus-visible:outline-green-500 +} + +.p-message-success.p-message-outlined { + @apply text-green-500 outline-green-500 dark:text-green-600 dark:outline-green-600 +} + +.p-message-success.p-message-simple { + @apply text-green-500 dark:text-green-600 +} + +.p-message-warn { + @apply bg-yellow-50/95 outline-yellow-200 text-yellow-600 + dark:bg-yellow-500/15 dark:outline-yellow-700/35 dark:text-yellow-500 + shadow-[0px_4px_8px_0px_theme(colors.yellow.500/0.04)] +} + +.p-message-warn .p-message-close-button { + @apply hover:bg-yellow-100 focus-visible:outline-yellow-600 + dark:hover:bg-white/5 dark:focus-visible:outline-yellow-500 +} + +.p-message-warn.p-message-outlined { + @apply text-yellow-500 outline-yellow-500 dark:text-yellow-600 dark:outline-yellow-600 +} + +.p-message-warn.p-message-simple { + @apply text-yellow-500 dark:text-yellow-600 +} + +.p-message-error { + @apply bg-red-50/95 outline-red-200 text-red-600 + dark:bg-red-500/15 dark:outline-red-700/35 dark:text-red-500 + shadow-[0px_4px_8px_0px_theme(colors.red.500/0.04)] +} + +.p-message-error .p-message-close-button { + @apply hover:bg-red-100 focus-visible:outline-red-600 + dark:hover:bg-white/5 dark:focus-visible:outline-red-500 +} + +.p-message-error.p-message-outlined { + @apply text-red-500 outline-red-500 dark:text-red-600 dark:outline-red-600 +} + +.p-message-error.p-message-simple { + @apply text-red-500 dark:text-red-600 +} + +.p-message-secondary { + @apply bg-surface-100 outline-surface-200 text-surface-600 + dark:bg-surface-800 dark:outline-surface-700 dark:text-surface-300 + shadow-[0px_4px_8px_0px_rgba(0,0,0,0.04)] +} + +.p-message-secondary .p-message-close-button { + @apply hover:bg-surface-200 focus-visible:outline-surface-600 + dark:hover:bg-surface-700 dark:focus-visible:outline-surface-300 +} + +.p-message-secondary.p-message-outlined { + @apply text-surface-500 outline-surface-500 dark:text-surface-600 dark:outline-surface-600 +} + +.p-message-secondary.p-message-simple { + @apply text-surface-500 dark:text-surface-600 +} + +.p-message-contrast { + @apply bg-surface-900 outline-surface-950 text-surface-50 + dark:bg-surface-0 dark:outline-surface-100 dark:text-surface-950 + shadow-[0px_4px_8px_0px_rgba(0,0,0,0.04)] +} + +.p-message-contrast .p-message-close-button { + @apply hover:bg-surface-800 focus-visible:outline-surface-50 + dark:hover:bg-surface-100 dark:focus-visible:outline-surface-950 +} + +.p-message-contrast.p-message-outlined { + @apply text-surface-950 outline-surface-950 dark:text-surface-0 dark:outline-surface-0 +} + +.p-message-contrast.p-message-simple { + @apply text-surface-950 dark:text-surface-0 +} + +.p-message-text { + @apply text-base font-medium +} + +.p-message-icon { + @apply text-lg w-[1.125rem] h-[1.125rem] +} + +.p-message-enter-from { + @apply opacity-0 +} + +.p-message-enter-active { + @apply transition-opacity duration-300 +} + +.p-message.p-message-leave-from { + @apply max-h-[1000px] +} + +.p-message.p-message-leave-to { + @apply max-h-0 opacity-0 m-0 +} + +.p-message-leave-active { + @apply overflow-hidden [transition:max-height_0.45s_cubic-bezier(0,1,0,1),opacity_0.3s,margin0.3s] +} + +.p-message-leave-active .p-message-close-button { + @apply opacity-0 +} + +.p-message-sm .p-message-content { + @apply px-2.5 py-[0.375rem] +} + +.p-message-sm .p-message-text { + @apply text-sm +} + +.p-message-sm .p-message-icon { + @apply w-4 h-4 text-sm +} + +.p-message-sm .p-message-close-icon { + @apply w-3.5 h-3.5 text-sm +} + +.p-message-lg .p-message-content { + @apply px-3.5 py-2.5 +} + +.p-message-lg .p-message-text { + @apply text-xl +} + +.p-message-lg .p-message-icon { + @apply w-5 h-5 text-xl +} + +.p-message-lg .p-message-close-icon { + @apply w-[1.125rem] h-[1.125rem] text-xl +} + +.p-message-outlined { + @apply bg-transparent outline outline-1 +} + +.p-message-simple { + @apply bg-transparent outline-none shadow-none +} + +.p-message-simple .p-message-content { + @apply p-0 +} + +.p-message-outlined .p-message-close-button:hover, +.p-message-simple .p-message-close-button:hover { + @apply bg-transparent +} diff --git a/sologger-ui/src/assets/primevue/metergroup.css b/sologger-ui/src/assets/primevue/metergroup.css new file mode 100644 index 0000000..74227a1 --- /dev/null +++ b/sologger-ui/src/assets/primevue/metergroup.css @@ -0,0 +1,67 @@ +.p-metergroup { + @apply flex gap-4 +} + +.p-metergroup-meters { + @apply flex bg-surface-200 dark:bg-surface-700 rounded-md +} + +.p-metergroup-label-list { + @apply flex flex-wrap m-0 p-0 list-none +} + +.p-metergroup-label { + @apply inline-flex items-center gap-2 +} + +.p-metergroup-label-marker { + @apply inline-flex w-2 h-2 rounded-full +} + +.p-metergroup-label-icon { + @apply text-base w-4 h-4 +} + +.p-metergroup-horizontal { + @apply flex-col +} + +.p-metergroup-label-list-horizontal { + @apply gap-4 +} + +.p-metergroup-horizontal .p-metergroup-meters { + @apply h-2 +} + +.p-metergroup-horizontal .p-metergroup-meter:first-of-type { + @apply rounded-s-md +} + +.p-metergroup-horizontal .p-metergroup-meter:last-of-type { + @apply rounded-e-md +} + +.p-metergroup-vertical { + @apply flex-row +} + +.p-metergroup-label-list-vertical { + @apply flex-col gap-2 +} + +.p-metergroup-vertical .p-metergroup-meters { + @apply flex-col w-2 h-full +} + +.p-metergroup-vertical .p-metergroup-label-list { + @apply items-start +} + +.p-metergroup-vertical .p-metergroup-meter:first-of-type { + @apply rounded-ss-md rounded-se-md +} + +.p-metergroup-vertical .p-metergroup-meter:last-of-type { + @apply rounded-ee-md rounded-es-md +} diff --git a/sologger-ui/src/assets/primevue/multiselect.css b/sologger-ui/src/assets/primevue/multiselect.css new file mode 100644 index 0000000..a6d7e59 --- /dev/null +++ b/sologger-ui/src/assets/primevue/multiselect.css @@ -0,0 +1,139 @@ +@import './checkbox'; +@import './chip'; +@import './inputtext'; +@import './iconfield'; + +.p-multiselect { + @apply inline-flex cursor-pointer relative select-none rounded-md + bg-surface-0 dark:bg-surface-950 + border border-surface-300 dark:border-surface-700 + shadow-[0_1px_2px_0_rgba(18,18,23,0.05)] + transition-colors duration-200 +} + +.p-multiselect:not(.p-disabled):hover { + @apply border-surface-400 dark:border-surface-600 +} + +.p-multiselect:not(.p-disabled).p-focus { + @apply border-primary +} + +.p-multiselect.p-variant-filled { + @apply bg-surface-50 dark:bg-surface-800 +} + +.p-multiselect.p-invalid { + @apply border-red-400 dark:border-red-300 +} + +.p-multiselect.p-disabled { + @apply bg-surface-200 text-surface-500 dark:bg-surface-700 dark:text-surface-400 opacity-100 cursor-default +} + +.p-multiselect-dropdown { + @apply flex items-center justify-center shrink-0 bg-transparent + text-surface-500 dark:text-surface-400 w-10 rounded-e-md +} + +.p-multiselect-label-container { + @apply overflow-hidden flex-auto +} + +.p-multiselect-label { + @apply flex items-center gap-1 whitespace-nowrap overflow-hidden text-ellipsis px-3 py-2 text-surface-700 dark:text-surface-0 +} + +.p-multiselect-label.p-placeholder { + @apply text-surface-500 dark:text-surface-400 +} + +.p-multiselect.p-disabled .p-multiselect-label { + @apply text-surface-500 dark:text-surface-400 +} + +.p-multiselect-label-empty { + @apply overflow-hidden opacity-0 +} + +.p-multiselect .p-multiselect-overlay { + @apply min-w-full +} + +.p-multiselect-overlay { + @apply absolute top-0 left-0 rounded-md + bg-surface-0 dark:bg-surface-900 + border border-surface-200 dark:border-surface-700 + text-surface-700 dark:text-surface-0 + shadow-[0_4px_6px_-1px_rgba(0,0,0,0.1),0_2px_4px_-2px_rgba(0,0,0,0.1)] +} + +.p-multiselect-header { + @apply flex items-center pt-2 pb-1 px-4 +} + +.p-multiselect-header .p-checkbox { + @apply me-2 +} + +.p-multiselect-filter-container { + @apply flex-auto +} + +.p-multiselect-filter { + @apply w-full +} + +.p-multiselect-list-container { + @apply overflow-auto +} + +.p-multiselect-list { + @apply m-0 p-1 list-none gap-[2px] flex flex-col +} + +.p-multiselect-option { + @apply cursor-pointer font-normal whitespace-nowrap relative overflow-hidden flex items-center gap-2 px-3 py-2 + rounded-sm text-surface-700 dark:text-surface-0 bg-transparent border-none + transition-colors duration-200 +} + +.p-multiselect-option:not(.p-disabled).p-focus { + @apply bg-surface-100 dark:bg-surface-800 text-surface-600 dark:text-surface-0 +} + +.p-multiselect-option-group { + @apply m-0 px-3 py-2 bg-transparent text-surface-500 dark:text-surface-400 font-semibold +} + +.p-multiselect-empty-message { + @apply px-3 py-2 +} + +.p-multiselect-label .p-chip { + @apply py-1 rounded-sm +} + +.p-multiselect-label:has(.p-chip) { + @apply py-1 px-[0.375rem] +} + +.p-multiselect-fluid { + @apply flex +} + +.p-multiselect-sm .p-multiselect-label { + @apply text-sm px-[0.625rem] py-[0.375rem] +} + +.p-multiselect-sm .p-multiselect-dropdown .p-icon { + @apply text-sm w-[0.875rem] h-[0.875rem] +} + +.p-multiselect-lg .p-multiselect-label { + @apply text-lg px-[0.875rem] py-[0.625rem] +} + +.p-multiselect-lg .p-multiselect-dropdown .p-icon { + @apply text-lg w-[1.125rem] h-[1.125rem] +} diff --git a/sologger-ui/src/assets/primevue/orderlist.css b/sologger-ui/src/assets/primevue/orderlist.css new file mode 100644 index 0000000..5a5b790 --- /dev/null +++ b/sologger-ui/src/assets/primevue/orderlist.css @@ -0,0 +1,10 @@ +@import './button'; +@import './listbox'; + +.p-orderlist { + @apply flex gap-[1.125rem] +} + +.p-orderlist-controls { + @apply flex flex-col justify-center gap-2 +} \ No newline at end of file diff --git a/sologger-ui/src/assets/primevue/organizationchart.css b/sologger-ui/src/assets/primevue/organizationchart.css new file mode 100644 index 0000000..69bbb49 --- /dev/null +++ b/sologger-ui/src/assets/primevue/organizationchart.css @@ -0,0 +1,71 @@ +.p-organizationchart-table { + @apply border-spacing-0 border-separate my-0 mx-auto +} + +.p-organizationchart-table > tbody > tr > td { + @apply text-center align-top py-0 px-3 +} + +.p-organizationchart-node { + @apply inline-block relative py-3 px-4 rounded-md + border border-surface-200 dark:border-surface-700 + bg-surface-0 dark:bg-surface-900 + text-surface-700 dark:text-surface-0 + transition-colors duration-200 +} + +.p-organizationchart-node:has(.p-organizationchart-node-toggle-button) { + @apply pt-3 px-4 pb-5 +} + +.p-organizationchart-node.p-organizationchart-node-selectable:not(.p-organizationchart-node-selected):hover { + @apply bg-surface-100 text-surface-800 dark:bg-surface-800 dark:text-surface-0 +} + +.p-organizationchart-node-selected { + @apply bg-highlight +} + +.p-organizationchart-node-toggle-button { + @apply absolute -bottom-3 -ms-3 z-20 start-1/2 select-none cursor-pointer w-6 h-6 no-underline rounded-full + inline-flex items-center justify-center transition-colors duration-200 + border border-surface-200 dark:border-surface-700 + bg-surface-0 text-surface-500 hover:bg-surface-100 hover:text-surface-700 + dark:bg-surface-900 dark:text-surface-400 dark:hover:bg-surface-800 dark:hover:text-surface-0 + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-primary +} +.p-organizationchart-node-toggle-button-icon { + @apply relative top-px +} + +.p-organizationchart-connector-down { + @apply my-0 mx-auto h-6 w-px bg-surface-200 dark:bg-surface-700 +} + +.p-organizationchart-connector-right { + @apply rounded-none +} + +.p-organizationchart-connector-left { + @apply rounded-none border-e border-surface-200 dark:border-surface-700 +} + +.p-organizationchart-connector-top { + @apply border-t border-surface-200 dark:border-surface-700 +} + +.p-organizationchart-node-selectable { + @apply cursor-pointer +} + +.p-organizationchart-connectors :nth-child(1 of .p-organizationchart-connector-left) { + @apply border-e-0 +} + +.p-organizationchart-connectors :nth-last-child(1 of .p-organizationchart-connector-left) { + @apply rounded-se-md +} + +.p-organizationchart-connectors :nth-child(1 of .p-organizationchart-connector-right) { + @apply border-s border-surface-200 dark:border-surface-700 rounded-ss-md +} diff --git a/sologger-ui/src/assets/primevue/overlaybadge.css b/sologger-ui/src/assets/primevue/overlaybadge.css new file mode 100644 index 0000000..c0193ea --- /dev/null +++ b/sologger-ui/src/assets/primevue/overlaybadge.css @@ -0,0 +1,13 @@ +@import './badge'; + +.p-overlaybadge { + @apply relative +} + +.p-overlaybadge .p-badge { + @apply absolute top-0 end-0 translate-x-[50%] translate-y-[-50%] origin-[100%_0] m-0 outline outline-2 outline-surface-0 dark:outline-surface-900 +} + +.p-overlaybadge .p-badge:dir(rtl) { + @apply -translate-x-1/2 -translate-y-1/2 +} diff --git a/sologger-ui/src/assets/primevue/paginator.css b/sologger-ui/src/assets/primevue/paginator.css new file mode 100644 index 0000000..25d6943 --- /dev/null +++ b/sologger-ui/src/assets/primevue/paginator.css @@ -0,0 +1,58 @@ +.p-paginator { + @apply flex items-center justify-center flex-wrap py-2 px-4 rounded-md gap-1 + bg-surface-0 dark:bg-surface-900 text-surface-700 dark:text-surface-0 +} + +.p-paginator-content { + @apply flex items-center justify-center flex-wrap gap-1 +} + +.p-paginator-content-start { + @apply ms-auto +} + +.p-paginator-content-end { + @apply me-auto +} + +.p-paginator-page, +.p-paginator-next, +.p-paginator-last, +.p-paginator-first, +.p-paginator-prev { + @apply cursor-pointer inline-flex items-center justify-center leading-none overflow-hidden relative + bg-transparent border-none min-w-10 h-10 transition-colors duration-200 rounded-full p-0 m-0 + text-surface-500 dark:text-surface-400 + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-primary +} + +.p-paginator-page:not(.p-disabled):not(.p-paginator-page-selected):hover, +.p-paginator-first:not(.p-disabled):hover, +.p-paginator-prev:not(.p-disabled):hover, +.p-paginator-next:not(.p-disabled):hover, +.p-paginator-last:not(.p-disabled):hover { + @apply bg-surface-100 text-surface-600 dark:bg-surface-800 dark:text-surface-300 +} + +.p-paginator-page.p-paginator-page-selected { + @apply bg-highlight +} + +.p-paginator-current { + @apply text-surface-500 dark:text-surface-400 +} + +.p-paginator-pages { + @apply flex items-center gap-1 +} + +.p-paginator-jtp-input .p-inputtext { + @apply max-w-10 +} + +.p-paginator-first:dir(rtl), +.p-paginator-prev:dir(rtl), +.p-paginator-next:dir(rtl), +.p-paginator-last:dir(rtl) { + @apply rotate-180 +} diff --git a/sologger-ui/src/assets/primevue/panel.css b/sologger-ui/src/assets/primevue/panel.css new file mode 100644 index 0000000..cb5d53e --- /dev/null +++ b/sologger-ui/src/assets/primevue/panel.css @@ -0,0 +1,27 @@ +@import './button'; + +.p-panel { + @apply border border-surface-200 dark:border-surface-700 rounded-md + bg-surface-0 dark:bg-surface-900 + text-surface-700 dark:text-surface-0 +} + +.p-panel-header { + @apply flex justify-between items-center p-[1.125rem] +} + +.p-panel-toggleable .p-panel-header { + @apply py-[0.375rem] px-[1.125rem] +} + +.p-panel-title { + @apply leading-none font-semibold +} + +.p-panel-content { + @apply pt-0 pb-[1.125rem] px-[1.125rem] +} + +.p-panel-footer { + @apply pt-0 pb-[1.125rem] px-[1.125rem] +} \ No newline at end of file diff --git a/sologger-ui/src/assets/primevue/panelmenu.css b/sologger-ui/src/assets/primevue/panelmenu.css new file mode 100644 index 0000000..77f2850 --- /dev/null +++ b/sologger-ui/src/assets/primevue/panelmenu.css @@ -0,0 +1,94 @@ +.p-panelmenu { + @apply flex flex-col gap-2 +} + +.p-panelmenu-panel { + @apply bg-surface-0 dark:bg-surface-900 rounded-md p-1 + border border-surface-200 dark:border-surface-700 + text-surface-700 dark:text-surface-0 +} + +.p-panelmenu-header { + @apply outline-none +} + +.p-panelmenu-header-content { + @apply rounded-md transition-colors duration-200 text-surface-700 dark:text-surface-0 +} + +.p-panelmenu-header-link { + @apply flex items-center gap-2 px-3 py-2 select-none cursor-pointer relative no-underline text-inherit +} + +.p-panelmenu-header-icon, +.p-panelmenu-item-icon { + @apply text-surface-400 dark:text-surface-500 +} + +.p-panelmenu-submenu-icon { + @apply text-surface-400 dark:text-surface-500 +} + +.p-panelmenu-header:not(.p-disabled):focus-visible .p-panelmenu-header-content { + @apply bg-surface-100 dark:bg-surface-800 text-surface-800 dark:text-surface-0 +} + +.p-panelmenu-header:not(.p-disabled):focus-visible .p-panelmenu-header-content .p-panelmenu-header-icon { + @apply text-surface-500 dark:text-surface-400 +} + +.p-panelmenu-header:not(.p-disabled):focus-visible .p-panelmenu-header-content .p-panelmenu-submenu-icon { + @apply text-surface-500 dark:text-surface-400 +} + +.p-panelmenu-header:not(.p-panelmenu-header-active) .p-panelmenu-submenu-icon:dir(rtl) { + @apply rotate-180; +} + +.p-panelmenu-header:not(.p-disabled) .p-panelmenu-header-content:hover { + @apply bg-surface-100 dark:bg-surface-800 text-surface-800 dark:text-surface-0 +} + +.p-panelmenu-header:not(.p-disabled) .p-panelmenu-header-content:hover .p-panelmenu-header-icon { + @apply text-surface-500 dark:text-surface-400 +} + +.p-panelmenu-header:not(.p-disabled) .p-panelmenu-header-content:hover .p-panelmenu-submenu-icon { + @apply text-surface-500 dark:text-surface-400 +} + +.p-panelmenu-submenu { + @apply m-0 py-0 ps-4 outline-none list-none +} + +.p-panelmenu-item-link { + @apply flex items-center gap-2 px-3 py-2 select-none cursor-pointer no-underline text-inherit relative overflow-hidden +} + +.p-panelmenu-item-content { + @apply rounded-md transition-colors duration-200 text-surface-700 dark:text-surface-0 +} + +.p-panelmenu-item.p-focus > .p-panelmenu-item-content { + @apply bg-surface-100 dark:bg-surface-800 text-surface-800 dark:text-surface-0 +} + +.p-panelmenu-item.p-focus > .p-panelmenu-item-content .p-panelmenu-item-icon { + @apply text-surface-500 dark:text-surface-400 +} + +.p-panelmenu-item.p-focus > .p-panelmenu-item-content .p-panelmenu-submenu-icon { + @apply text-surface-500 dark:text-surface-400 +} + +.p-panelmenu-item:not(.p-disabled) > .p-panelmenu-item-content:hover { + @apply bg-surface-100 dark:bg-surface-800 text-surface-800 dark:text-surface-0 +} + +.p-panelmenu-item:not(.p-disabled) > .p-panelmenu-item-content:hover .p-panelmenu-item-icon { + @apply text-surface-500 dark:text-surface-400 +} + +.p-panelmenu-item:not(.p-disabled) > .p-panelmenu-item-content:hover .p-panelmenu-submenu-icon { + @apply text-surface-500 dark:text-surface-400 +} diff --git a/sologger-ui/src/assets/primevue/password.css b/sologger-ui/src/assets/primevue/password.css new file mode 100644 index 0000000..e350fcb --- /dev/null +++ b/sologger-ui/src/assets/primevue/password.css @@ -0,0 +1,61 @@ +@import './inputtext'; + +.p-password { + @apply inline-flex relative +} + +.p-password .p-password-overlay { + @apply min-w-full +} + +.p-password-meter { + @apply h-3 bg-surface-200 dark:bg-surface-700 rounded-md +} + +.p-password-meter-label { + @apply h-full w-0 transition-[width] duration-1000 ease-in-out rounded-md +} + +.p-password-meter-weak { + @apply bg-red-500 dark:bg-red-400 +} + +.p-password-meter-medium { + @apply bg-amber-500 dark:bg-amber-400 +} + +.p-password-meter-strong { + @apply bg-green-500 dark:bg-green-400 +} + +.p-password-fluid { + @apply flex +} + +.p-password-fluid .p-password-input { + @apply w-full +} + +.p-password-input::-ms-reveal, +.p-password-input::-ms-clear { + @apply hidden +} + +.p-password-overlay { + @apply p-3 rounded-md bg-surface-0 dark:bg-surface-900 + border border-surface-200 dark:border-surface-700 + text-surface-700 dark:text-surface-0 + shadow-[0_4px_6px_-1px_rgba(0,0,0,0.1),0_2px_4px_-2px_rgba(0,0,0,0.1)] +} + +.p-password-content { + @apply flex flex-col gap-2 +} + +.p-password-toggle-mask-icon { + @apply end-3 text-surface-500 dark:text-surface-400 absolute top-1/2 -mt-2 w-4 h-4 +} + +.p-password:has(.p-password-toggle-mask-icon) .p-password-input { + @apply pe-10 +} diff --git a/sologger-ui/src/assets/primevue/picklist.css b/sologger-ui/src/assets/primevue/picklist.css new file mode 100644 index 0000000..97aa65f --- /dev/null +++ b/sologger-ui/src/assets/primevue/picklist.css @@ -0,0 +1,18 @@ +@import './button'; +@import './listbox'; + +.p-picklist { + @apply flex gap-[1.125rem] +} + +.p-picklist-controls { + @apply flex flex-col justify-center gap-2 +} + +.p-picklist-list-container { + @apply flex-grow flex-shrink basis-1/2 +} + +.p-picklist .p-listbox { + @apply h-full +} \ No newline at end of file diff --git a/sologger-ui/src/assets/primevue/popover.css b/sologger-ui/src/assets/primevue/popover.css new file mode 100644 index 0000000..964d2d9 --- /dev/null +++ b/sologger-ui/src/assets/primevue/popover.css @@ -0,0 +1,46 @@ +.p-popover { + @apply mt-[10px] bg-surface-0 dark:bg-surface-900 text-surface-700 dark:text-surface-0 + border border-surface-200 dark:border-surface-700 + rounded-md shadow-[0_4px_6px_-1px_rgba(0,0,0,0.1),0_2px_4px_-2px_rgba(0,0,0,0.1)] + before:bottom-full before:left-5 before:h-0 before:w-0 before:absolute before:pointer-events-none + before:border-[10px] before:-ms-[10px] before:border-transparent before:border-b-surface-200 dark:before:border-b-surface-700 + after:bottom-full after:left-5 after:h-0 after:w-0 after:absolute after:pointer-events-none + after:border-[8px] after:-ms-[8px] after:border-transparent after:border-b-surface-0 dark:after:border-b-surface-900 +} + +.p-popover-content { + @apply p-3 +} + +.p-popover-flipped { + @apply -mt-[10px] mb-[10px] +} + +.p-popover-enter-from { + @apply opacity-0 scale-y-75 +} + +.p-popover-leave-to { + @apply opacity-0 +} + +.p-popover-enter-active { + @apply [transition:transform_120ms_cubic-bezier(0,0,0.2,1),opacity_120ms_cubic-bezier(0,0,0.2,1)] +} + +.p-popover-leave-active { + @apply transition-opacity duration-100 ease-linear +} + +.p-popover-flipped:after, +.p-popover-flipped:before { + @apply bottom-auto top-full +} + +.p-popover.p-popover-flipped:after { + @apply border-b-transparent border-t-surface-0 dark:border-t-surface-900 +} + +.p-popover.p-popover-flipped:before { + @apply border-b-transparent border-t-surface-200 dark:border-t-surface-700 +} diff --git a/sologger-ui/src/assets/primevue/progressbar.css b/sologger-ui/src/assets/primevue/progressbar.css new file mode 100644 index 0000000..3788b23 --- /dev/null +++ b/sologger-ui/src/assets/primevue/progressbar.css @@ -0,0 +1,67 @@ +.p-progressbar { + @apply relative overflow-hidden h-5 bg-surface-200 dark:bg-surface-700 rounded-md +} + +.p-progressbar-value { + @apply m-0 bg-primary +} + +.p-progressbar-label { + @apply text-primary-contrast text-xs font-semibold +} + +.p-progressbar-determinate .p-progressbar-value { + @apply h-full w-0 absolute flex items-center justify-center overflow-hidden transition-[width] duration-1000 ease-in-out +} + +.p-progressbar-determinate .p-progressbar-label { + @apply inline-flex +} + +.p-progressbar-indeterminate .p-progressbar-value::before { + @apply content-[''] absolute bg-inherit top-0 start-0 bottom-0 will-change-[inset-inline-start,inset-inline-end]; +} + +.p-progressbar-indeterminate .p-progressbar-value::before { + animation: p-progressbar-indeterminate-anim 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; +} + +.p-progressbar-indeterminate .p-progressbar-value::after { + @apply content-[''] absolute bg-inherit top-0 start-0 bottom-0 will-change-[inset-inline-start,inset-inline-end]; + +} + +.p-progressbar-indeterminate .p-progressbar-value::after { + animation: p-progressbar-indeterminate-anim-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; + animation-delay: 1.15s; +} + +@keyframes p-progressbar-indeterminate-anim { + 0% { + inset-inline-start: -35%; + inset-inline-end: 100%; + } + 60% { + inset-inline-start: 100%; + inset-inline-end: -90%; + } + 100% { + inset-inline-start: 100%; + inset-inline-end: -90%; + } +} + +@keyframes p-progressbar-indeterminate-anim-short { + 0% { + inset-inline-start: -200%; + inset-inline-end: 100%; + } + 60% { + inset-inline-start: 107%; + inset-inline-end: -8%; + } + 100% { + inset-inline-start: 107%; + inset-inline-end: -8%; + } +} diff --git a/sologger-ui/src/assets/primevue/progressspinner.css b/sologger-ui/src/assets/primevue/progressspinner.css new file mode 100644 index 0000000..335abd1 --- /dev/null +++ b/sologger-ui/src/assets/primevue/progressspinner.css @@ -0,0 +1,58 @@ +.p-progressspinner { + @apply relative my-0 mx-auto w-[100px] h-[100px] inline-block + before:block before:pt-[100%] +} + +.p-progressspinner-spin { + @apply h-full origin-center w-full absolute top-0 bottom-0 start-0 end-0 m-auto; +} + +.p-progressspinner-spin { + animation: p-progressspinner-rotate 2s linear infinite; +} + +.p-progressspinner-circle { + stroke-dasharray: 89, 200; + stroke-dashoffset: 0; + stroke: theme(colors.red.500); + stroke-linecap: round; + animation: p-progressspinner-dash 1.5s ease-in-out infinite, p-progressspinner-color 6s ease-in-out infinite; +} + +@keyframes p-progressspinner-rotate { + 100% { + transform: rotate(360deg); + } +} + +@keyframes p-progressspinner-dash { + 0% { + stroke-dasharray: 1, 200; + stroke-dashoffset: 0; + } + 50% { + stroke-dasharray: 89, 200; + stroke-dashoffset: -35px; + } + 100% { + stroke-dasharray: 89, 200; + stroke-dashoffset: -124px; + } +} + +@keyframes p-progressspinner-color { + 100%, + 0% { + stroke: theme(colors.red.500); + } + 40% { + stroke: theme(colors.blue.500); + } + 66% { + stroke: theme(colors.green.500); + } + 80%, + 90% { + stroke: theme(colors.yellow.500); + } +} diff --git a/sologger-ui/src/assets/primevue/radiobutton.css b/sologger-ui/src/assets/primevue/radiobutton.css new file mode 100644 index 0000000..bd88f93 --- /dev/null +++ b/sologger-ui/src/assets/primevue/radiobutton.css @@ -0,0 +1,93 @@ +.p-radiobutton { + @apply relative inline-flex select-none w-5 h-5 +} + +.p-radiobutton-input { + @apply cursor-pointer disabled:cursor-default appearance-none absolute start-0 top-0 w-full h-full m-0 p-0 opacity-0 z-10 + border border-transparent rounded-full +} + +.p-radiobutton-box { + @apply flex justify-center items-center rounded-full + border border-surface-300 dark:border-surface-700 + bg-surface-0 dark:bg-surface-950 + w-5 h-5 + transition-colors duration-200 + shadow-[0_1px_2px_0_rgba(18,18,23,0.05)] +} + +.p-radiobutton-icon { + @apply bg-transparent text-xs w-3 h-3 rounded-full + transition-all duration-200 backface-hidden +} + +.p-radiobutton-icon { + @apply scale-[0.1] +} + +.p-radiobutton:not(.p-disabled):has(.p-radiobutton-input:hover) .p-radiobutton-box { + @apply border-surface-400 dark:border-surface-600 +} + +.p-radiobutton-checked .p-radiobutton-box { + @apply border-primary bg-primary +} + +.p-radiobutton-checked .p-radiobutton-box .p-radiobutton-icon { + @apply bg-primary-contrast visible +} + +.p-radiobutton-checked .p-radiobutton-box .p-radiobutton-icon { + @apply scale-100 +} + +.p-radiobutton-checked:not(.p-disabled):has(.p-radiobutton-input:hover) .p-radiobutton-box { + @apply border-primary-emphasis bg-primary-emphasis +} + +.p-radiobutton:not(.p-disabled):has(.p-radiobutton-input:hover).p-radiobutton-checked .p-radiobutton-box .p-radiobutton-icon { + @apply bg-primary-contrast +} + +.p-radiobutton:not(.p-disabled):has(.p-radiobutton-input:focus-visible) .p-radiobutton-box { + @apply outline outline-1 outline-offset-2 outline-primary +} + +.p-radiobutton.p-invalid > .p-radiobutton-box { + @apply border-red-400 dark:border-red-300 +} + +.p-radiobutton.p-variant-filled .p-radiobutton-box { + @apply bg-surface-50 dark:bg-surface-800 +} + +.p-radiobutton.p-disabled { + @apply opacity-100 +} + +.p-radiobutton.p-disabled .p-radiobutton-box { + @apply bg-surface-200 dark:bg-surface-400 + border-surface-300 dark:border-surface-700 +} + +.p-radiobutton-checked.p-disabled .p-radiobutton-box .p-radiobutton-icon { + @apply bg-surface-700 dark:bg-surface-400 +} + +.p-radiobutton-sm, +.p-radiobutton-sm .p-radiobutton-box { + @apply w-4 h-4 +} + +.p-radiobutton-sm .p-radiobutton-icon { + @apply w-2 h-2 +} + +.p-radiobutton-lg, +.p-radiobutton-lg .p-radiobutton-box { + @apply w-6 h-6 +} + +.p-radiobutton-lg .p-radiobutton-icon { + @apply w-4 h-4 +} diff --git a/sologger-ui/src/assets/primevue/rating.css b/sologger-ui/src/assets/primevue/rating.css new file mode 100644 index 0000000..79b57fe --- /dev/null +++ b/sologger-ui/src/assets/primevue/rating.css @@ -0,0 +1,23 @@ +.p-rating { + @apply relative flex items-center gap-1 +} + +.p-rating-option { + @apply inline-flex items-center cursor-pointer rounded-full +} + +.p-rating-option.p-focus-visible { + @apply outline outline-1 outline-offset-2 outline-primary +} + +.p-rating-icon { + @apply text-surface-500 dark:text-surface-400 text-base w-4 h-4 transition-colors duration-200 +} + +.p-rating:not(.p-disabled):not(.p-readonly) .p-rating-option:hover .p-rating-icon { + @apply text-primary +} + +.p-rating-option-active .p-rating-icon { + @apply text-primary +} \ No newline at end of file diff --git a/sologger-ui/src/assets/primevue/ripple.css b/sologger-ui/src/assets/primevue/ripple.css new file mode 100644 index 0000000..5e3cd2f --- /dev/null +++ b/sologger-ui/src/assets/primevue/ripple.css @@ -0,0 +1,7 @@ +.p-ink { + @apply block absolute bg-black/10 dark:bg-white/30 scale-0 rounded-[100%] pointer-events-none +} + +.p-ink-active { + @apply transition-[opacity,transform] duration-500 scale-[2.5] opacity-0 ease-linear +} \ No newline at end of file diff --git a/sologger-ui/src/assets/primevue/scrollpanel.css b/sologger-ui/src/assets/primevue/scrollpanel.css new file mode 100644 index 0000000..8bf7fd5 --- /dev/null +++ b/sologger-ui/src/assets/primevue/scrollpanel.css @@ -0,0 +1,41 @@ +.p-scrollpanel-content-container { + @apply overflow-hidden w-full h-full relative z-10 float-left +} + +.p-scrollpanel-content { + @apply relative overflow-auto + h-[calc(100%+18px)] w-[calc(100%+18px)] + pt-0 ps-0 pr-[18px] pb-[18px] [scrollbar-width:none] +} + +.p-scrollpanel-content::-webkit-scrollbar { + @apply hidden +} + +.p-scrollpanel-bar { + @apply relative rounded-sm z-20 cursor-pointer opacity-0 + bg-surface-100 dark:bg-surface-800 + transition-opacity duration-200 border-none + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-primary +} + +.p-scrollpanel-bar-y { + @apply w-[9px] top-0 +} + +.p-scrollpanel-bar-x { + @apply h-[9px] bottom-0 +} + +.p-scrollpanel-hidden { + @apply invisible +} + +.p-scrollpanel:hover .p-scrollpanel-bar, +.p-scrollpanel:active .p-scrollpanel-bar { + @apply opacity-100 +} + +.p-scrollpanel-grabbed { + @apply select-none +} diff --git a/sologger-ui/src/assets/primevue/scrolltop.css b/sologger-ui/src/assets/primevue/scrolltop.css new file mode 100644 index 0000000..40e5381 --- /dev/null +++ b/sologger-ui/src/assets/primevue/scrolltop.css @@ -0,0 +1,25 @@ +@import './button'; + +.p-scrolltop.p-button { + @apply fixed bottom-5 end-5 +} + +.p-scrolltop-sticky.p-button { + @apply sticky flex ms-auto +} + +.p-scrolltop-enter-from { + @apply opacity-0 +} + +.p-scrolltop-enter-active { + @apply transition-opacity duration-150 +} + +.p-scrolltop.p-scrolltop-leave-to { + @apply opacity-0 +} + +.p-scrolltop-leave-active { + @apply transition-opacity duration-150 +} diff --git a/sologger-ui/src/assets/primevue/select.css b/sologger-ui/src/assets/primevue/select.css new file mode 100644 index 0000000..85b108e --- /dev/null +++ b/sologger-ui/src/assets/primevue/select.css @@ -0,0 +1,144 @@ +@import './button'; +@import './inputtext'; +@import './iconfield'; + +.p-select { + @apply inline-flex cursor-pointer relative select-none rounded-md + bg-surface-0 dark:bg-surface-950 + border border-surface-300 dark:border-surface-700 + shadow-[0_1px_2px_0_rgba(18,18,23,0.05)] + transition-colors duration-200 +} + +.p-select:not(.p-disabled):hover { + @apply border-surface-400 dark:border-surface-600 +} + +.p-select:not(.p-disabled).p-focus { + @apply border-primary +} + +.p-select.p-variant-filled { + @apply bg-surface-50 dark:bg-surface-800 +} + +.p-select.p-invalid { + @apply border-red-400 dark:border-red-300 +} + +.p-select.p-disabled { + @apply bg-surface-200 text-surface-500 dark:bg-surface-700 dark:text-surface-400 opacity-100 cursor-default +} + +.p-select-clear-icon { + @apply absolute top-1/2 -mt-2 text-surface-500 dark:text-surface-400 end-10 +} + +.p-select-dropdown { + @apply flex items-center justify-center shrink-0 bg-transparent + text-surface-500 dark:text-surface-400 w-10 rounded-e-md +} + +.p-select-label { + @apply block whitespace-nowrap overflow-hidden flex-auto w-[1%] + py-2 px-3 overflow-ellipsis + text-surface-700 dark:text-surface-0 bg-transparent border-none outline-none +} + +.p-select-label.p-placeholder { + @apply text-surface-500 dark:text-surface-400 +} + +.p-select:has(.p-select-clear-icon) .p-select-label { + @apply pe-7 +} + +.p-select.p-disabled .p-select-label { + @apply text-surface-500 dark:text-surface-400 +} + +.p-select-label-empty { + @apply overflow-hidden opacity-0 +} + +input.p-select-label { + @apply cursor-default +} + +.p-select .p-select-overlay { + @apply min-w-full +} + +.p-select-overlay { + @apply absolute top-0 left-0 rounded-md + bg-surface-0 dark:bg-surface-900 + border border-surface-200 dark:border-surface-700 + text-surface-700 dark:text-surface-0 + shadow-[0_4px_6px_-1px_rgba(0,0,0,0.1),0_2px_4px_-2px_rgba(0,0,0,0.1)] +} + +.p-select-header { + @apply pt-2 pb-1 px-4 +} + +.p-select-filter { + @apply w-full +} + +.p-select-list-container { + @apply overflow-auto +} + +.p-select-option-group { + @apply m-0 px-3 py-2 bg-transparent text-surface-500 dark:text-surface-400 font-semibold +} + +.p-select-list { + @apply m-0 p-1 list-none gap-[2px] flex flex-col +} + +.p-select-option { + @apply cursor-pointer font-normal whitespace-nowrap relative overflow-hidden flex items-center + px-3 py-2 border-none text-surface-700 dark:text-surface-0 bg-transparent rounded-sm + transition-colors duration-200 +} + +.p-select-option:not(.p-select-option-selected):not(.p-disabled).p-focus { + @apply bg-surface-100 dark:bg-surface-800 text-surface-800 dark:text-surface-0 +} + +.p-select-option.p-select-option-selected { + @apply bg-highlight +} + +.p-select-option.p-select-option-selected.p-focus { + @apply bg-highlight-emphasis +} + +.p-select-option-check-icon { + @apply relative -ms-[0.375rem] me-[0.375rem] text-surface-700 dark:text-surface-0 +} + +.p-select-empty-message { + @apply px-3 py-2 +} + +.p-select-fluid { + @apply flex +} + +.p-select-sm .p-select-label { + @apply text-sm px-[0.625rem] py-[0.375rem] +} + +.p-select-sm .p-select-dropdown .p-icon { + @apply text-sm w-[0.875rem] h-[0.875rem] +} + +.p-select-lg .p-select-label { + @apply text-lg px-[0.875rem] py-[0.625rem] +} + +.p-select-lg .p-select-dropdown .p-icon { + @apply text-lg w-[1.125rem] h-[1.125rem] +} diff --git a/sologger-ui/src/assets/primevue/selectbutton.css b/sologger-ui/src/assets/primevue/selectbutton.css new file mode 100644 index 0000000..5350fde --- /dev/null +++ b/sologger-ui/src/assets/primevue/selectbutton.css @@ -0,0 +1,25 @@ +@import './togglebutton'; + +.p-selectbutton { + @apply inline-flex select-none rounded-md +} + +.p-selectbutton .p-togglebutton { + @apply rounded-none border-y border-r border-s-0 +} + +.p-selectbutton .p-togglebutton:focus-visible { + @apply relative z-10 +} + +.p-selectbutton .p-togglebutton:first-child { + @apply border-s rounded-s-md +} + +.p-selectbutton .p-togglebutton:last-child { + @apply rounded-e-md +} + +.p-selectbutton.p-invalid { + @apply outline outline-offset-0 outline-red-400 dark:outline-red-300 +} diff --git a/sologger-ui/src/assets/primevue/skeleton.css b/sologger-ui/src/assets/primevue/skeleton.css new file mode 100644 index 0000000..e2393cd --- /dev/null +++ b/sologger-ui/src/assets/primevue/skeleton.css @@ -0,0 +1,11 @@ +.p-skeleton { + @apply overflow-hidden bg-surface-200 dark:bg-surface-700 animate-pulse rounded-md +} + +.p-skeleton-circle { + @apply rounded-full +} + +.p-skeleton-animation-none::after { + @apply animate-none +} diff --git a/sologger-ui/src/assets/primevue/slider.css b/sologger-ui/src/assets/primevue/slider.css new file mode 100644 index 0000000..ae3b971 --- /dev/null +++ b/sologger-ui/src/assets/primevue/slider.css @@ -0,0 +1,42 @@ +.p-slider { + @apply relative bg-surface-200 dark:bg-surface-700 rounded-sm +} + +.p-slider-handle { + @apply cursor-grab touch-none flex items-center justify-center h-[20px] w-[20px] + bg-surface-200 dark:bg-surface-700 rounded-full + transition-colors duration-200 + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-primary + before:w-[16px] before:h-[16px] before:block before:rounded-full + before:bg-surface-0 dark:before:bg-surface-950 + before:shadow-[0px_0.5px_0px_0px_rgba(0,0,0,0.08),0px_1px_1px_0px_rgba(0,0,0,0.14)] + before:transition-colors before:duration-200 +} + +.p-slider-range { + @apply block bg-primary rounded-sm +} + +.p-slider.p-slider-horizontal { + @apply h-[3px] +} + +.p-slider-horizontal .p-slider-range { + @apply top-0 start-0 h-full +} + +.p-slider-horizontal .p-slider-handle { + @apply top-1/2 -mt-[10px] -ms-[10px] +} + +.p-slider-vertical { + @apply min-h-[100px] w-[3px] +} + +.p-slider-vertical .p-slider-handle { + @apply start-1/2 -mb-[10px] -ms-[10px] +} + +.p-slider-vertical .p-slider-range { + @apply bottom-0 start-0 w-full +} diff --git a/sologger-ui/src/assets/primevue/speeddial.css b/sologger-ui/src/assets/primevue/speeddial.css new file mode 100644 index 0000000..a9f3c46 --- /dev/null +++ b/sologger-ui/src/assets/primevue/speeddial.css @@ -0,0 +1,48 @@ +@import './button'; + +.p-speeddial { + @apply static flex gap-2 +} + +.p-speeddial-button { + @apply z-10 +} + +.p-speeddial-button.p-speeddial-rotate { + @apply [transition:transform_250ms_cubic-bezier(0.4,0,0.2,1)_0ms,background_200ms,color_200ms,border-color_200ms] will-change-transform +} + +.p-speeddial-list { + @apply m-0 p-0 list-none flex items-center justify-center pointer-events-none outline-none z-20 gap-2 + transition-[top] ease-linear duration-200 +} + +.p-speeddial-item { + @apply scale-0 opacity-0 [transition:transform_200ms_cubic-bezier(0.4,0,0.2,1)_0ms,opacity_0.8s] will-change-transform +} + +.p-speeddial-circle .p-speeddial-item, +.p-speeddial-semi-circle .p-speeddial-item, +.p-speeddial-quarter-circle .p-speeddial-item { + @apply absolute +} + +.p-speeddial-mask { + @apply absolute start-0 top-0 w-full h-full opacity-0 bg-white/40 dark:bg-white/60 rounded-md transition-opacity duration-150 +} + +.p-speeddial-mask-visible { + @apply pointer-events-none opacity-100 transition-opacity duration-150 +} + +.p-speeddial-open .p-speeddial-list { + @apply pointer-events-auto +} + +.p-speeddial-open .p-speeddial-item { + @apply scale-100 opacity-100 +} + +.p-speeddial-open .p-speeddial-rotate { + @apply rotate-45 +} diff --git a/sologger-ui/src/assets/primevue/splitbutton.css b/sologger-ui/src/assets/primevue/splitbutton.css new file mode 100644 index 0000000..cf0cd0a --- /dev/null +++ b/sologger-ui/src/assets/primevue/splitbutton.css @@ -0,0 +1,34 @@ +@import './button'; +@import './tieredmenu'; + +.p-splitbutton { + @apply inline-flex relative rounded-md +} + +.p-splitbutton-button { + @apply rounded-e-none border-r-0 enabled:hover:border-r-0 enabled:active:border-r-0 focus-visible:z-10 +} + +.p-splitbutton-dropdown { + @apply rounded-s-none focus-visible:z-10 +} + +.p-splitbutton .p-menu { + @apply min-w-full +} + +.p-splitbutton-fluid { + @apply w-full +} + +.p-splitbutton-rounded .p-splitbutton-dropdown { + @apply rounded-e-[2rem] +} + +.p-splitbutton-rounded .p-splitbutton-button { + @apply rounded-s-[2rem] +} + +.p-splitbutton-raised { + @apply shadow-[0_3px_1px_-2px_rgba(0,0,0,0.2),0_2px_2px_0_rgba(0,0,0,0.14),0_1px_5px_0_rgba(0,0,0,0.12)] +} diff --git a/sologger-ui/src/assets/primevue/splitter.css b/sologger-ui/src/assets/primevue/splitter.css new file mode 100644 index 0000000..e2f9f6f --- /dev/null +++ b/sologger-ui/src/assets/primevue/splitter.css @@ -0,0 +1,56 @@ +.p-splitter { + @apply flex flex-wrap + border border-surface-200 dark:border-surface-700 rounded-md + bg-surface-0 dark:bg-surface-900 + text-surface-700 dark:text-surface-0 +} + +.p-splitter-vertical { + @apply flex-col +} + +.p-splitter-gutter { + @apply flex-grow-0 flex-shrink-0 flex items-center justify-center z-10 bg-surface-200 dark:bg-surface-700 +} + +.p-splitter-gutter-handle { + @apply rounded-md bg-transparent + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-primary + transition-colors duration-200 +} + +.p-splitter-horizontal.p-splitter-resizing { + @apply cursor-col-resize select-none +} + +.p-splitter-vertical.p-splitter-resizing { + @apply cursor-row-resize select-none +} + +.p-splitter-horizontal > .p-splitter-gutter > .p-splitter-gutter-handle { + @apply h-[24px] w-full +} + +.p-splitter-vertical > .p-splitter-gutter > .p-splitter-gutter-handle { + @apply w-[24px] h-full +} + +.p-splitter-horizontal > .p-splitter-gutter { + @apply cursor-col-resize +} + +.p-splitter-vertical > .p-splitter-gutter { + @apply cursor-row-resize +} + +.p-splitterpanel { + @apply flex-grow overflow-hidden +} + +.p-splitterpanel-nested { + @apply flex +} + +.p-splitterpanel .p-splitter { + @apply flex-grow border-none +} \ No newline at end of file diff --git a/sologger-ui/src/assets/primevue/stepper.css b/sologger-ui/src/assets/primevue/stepper.css new file mode 100644 index 0000000..43f44e7 --- /dev/null +++ b/sologger-ui/src/assets/primevue/stepper.css @@ -0,0 +1,102 @@ +.p-steplist { + @apply relative flex justify-between items-center m-0 p-0 list-none overflow-x-auto +} + +.p-step { + @apply relative flex flex-auto items-center gap-4 p-2 last-of-type:flex-initial +} + +.p-step-header { + @apply border-none inline-flex items-center no-underline cursor-pointer + transition-colors duration-200 rounded-md bg-transparent p-0 gap-2 + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-primary +} + +.p-step.p-disabled .p-step-header { + @apply cursor-default +} + + +.p-stepper.p-stepper-readonly .p-step { + @apply cursor-auto +} + +.p-step-title { + @apply block whitespace-nowrap overflow-hidden text-ellipsis max-w-full + text-surface-500 dark:text-surface-400 font-medium transition-colors duration-200 +} + +.p-step-number { + @apply flex items-center justify-center text-surface-500 dark:text-surface-400 + bg-surface-0 dark:bg-surface-900 border-2 border-surface-200 dark:border-surface-700 + min-w-8 h-8 leading-8 text-lg font-medium rounded-full z-10 relative + after:absolute after:w-full after:h-full after:rounded-full after:shadow-[0px_0.5px_0px_0px_rgba(0,0,0,0.06),0px_1px_1px_0px_rgba(0,0,0,0.12)] +} + +.p-step-active .p-step-header { + @apply cursor-default +} + +.p-step-active .p-step-number { + @apply bg-surface-0 dark:bg-surface-900 text-primary border-surface-200 dark:border-surface-700 +} + +.p-step-active .p-step-title { + @apply text-primary +} + +.p-step:not(.p-disabled):focus-visible { + @apply outline outline-1 outline-offset-2 outline-primary +} + +.p-step:has(~ .p-step-active) .p-stepper-separator { + @apply bg-primary +} + +.p-stepper-separator { + @apply flex-1 bg-surface-200 dark:bg-surface-700 w-full h-[2px] transition-colors duration-200 +} + +.p-steppanels { + @apply pt-[0.875rem] pb-[1.125rem] px-2 +} + +.p-steppanel { + @apply bg-surface-0 dark:bg-surface-900 text-surface-700 dark:text-surface-0 +} + +.p-stepper:has(.p-stepitem) { + @apply flex flex-col +} + +.p-stepitem { + @apply flex flex-col flex-initial +} + +.p-stepitem.p-stepitem-active { + @apply flex-auto +} + +.p-stepitem .p-step { + @apply flex-initial +} + +.p-stepitem .p-steppanel-content { + @apply w-full ps-4 +} + +.p-stepitem .p-steppanel { + @apply flex flex-auto +} + +.p-stepitem .p-stepper-separator { + @apply flex-grow-0 flex-shrink-0 basis-auto w-[2px] h-auto ms-[1.625rem] relative start-[-2.5px] +} + +.p-stepitem:has(~ .p-stepitem-active) .p-stepper-separator { + @apply bg-primary +} + +.p-stepitem:last-of-type .p-steppanel { + @apply ps-8 +} diff --git a/sologger-ui/src/assets/primevue/tabs.css b/sologger-ui/src/assets/primevue/tabs.css new file mode 100644 index 0000000..0ac004b --- /dev/null +++ b/sologger-ui/src/assets/primevue/tabs.css @@ -0,0 +1,84 @@ +.p-tabs { + @apply flex flex-col +} + +.p-tablist { + @apply flex relative +} + +.p-tabs-scrollable > .p-tablist { + @apply overflow-hidden +} + +.p-tablist-viewport { + @apply overflow-x-auto overflow-y-hidden overscroll-y-contain overscroll-x-auto +} + +.p-tablist-viewport::-webkit-scrollbar { + @apply hidden +} + +.p-tablist-tab-list { + @apply relative flex bg-surface-0 dark:bg-surface-900 border-b border-surface-200 dark:border-surface-700 +} + +.p-tablist-content { + @apply flex-grow +} + +.p-tablist-nav-button { + @apply !absolute flex-shrink-0 top-0 z-20 h-full flex items-center justify-center cursor-pointer + bg-surface-0 dark:bg-surface-900 text-surface-500 dark:text-surface-400 hover:text-surface-700 dark:hover:text-surface-0 w-10 + shadow-[0px_0px_10px_50px_rgba(255,255,255,0.6)] dark:shadow-[0px_0px_10px_50px] dark:shadow-surface-900/50 + focus-visible:z-10 focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-[-1px] focus-visible:outline-primary + transition-colors duration-200 +} + +.p-tablist-prev-button { + @apply start-0 +} + +.p-tablist-next-button { + @apply end-0 +} + +.p-tablist-prev-button:dir(rtl), +.p-tablist-next-button:dir(rtl) { + @apply rotate-180 +} + +.p-tab { + @apply flex-shrink-0 cursor-pointer select-none relative whitespace-nowrap py-4 px-[1.125rem] + border-b border-surface-200 dark:border-surface-700 font-semibold + text-surface-500 dark:text-surface-400 + transition-colors duration-200 -mb-px +} + +.p-tab.p-disabled { + @apply cursor-default +} + +.p-tab:not(.p-disabled):focus-visible { + @apply z-10 outline outline-1 outline-offset-[-1px] outline-primary +} + +.p-tab:not(.p-tab-active):not(.p-disabled):hover { + @apply text-surface-700 dark:text-surface-0 +} + +.p-tab-active { + @apply border-primary text-primary +} + +.p-tabpanels { + @apply bg-surface-0 dark:bg-surface-900 text-surface-700 dark:text-surface-0 + pt-[0.875rem] pb-[1.125rem] px-[1.125rem] outline-none +} + +.p-tablist-active-bar { + @apply z-10 block absolute -bottom-px h-px bg-primary transition-[left] duration-200 ease-[cubic-bezier(0.35,0,0.25,1)] +} + +.p-tablist-viewport { + @apply [scrollbar-behavior:smooth] [scrollbar-width:none] +} diff --git a/sologger-ui/src/assets/primevue/tag.css b/sologger-ui/src/assets/primevue/tag.css new file mode 100644 index 0000000..24e4286 --- /dev/null +++ b/sologger-ui/src/assets/primevue/tag.css @@ -0,0 +1,38 @@ +.p-tag { + @apply inline-flex items-center justify-center + bg-primary-100 dark:bg-primary-500/15 + text-primary-700 dark:text-primary-300 + text-sm font-bold py-1 px-2 rounded-md gap-1 +} + +.p-tag-icon { + @apply text-xs w-3 h-3 +} + +.p-tag-rounded { + @apply rounded-2xl +} + +.p-tag-success { + @apply bg-green-100 dark:bg-green-500/15 text-green-700 dark:text-green-300 +} + +.p-tag-info { + @apply bg-sky-100 dark:bg-sky-500/15 text-sky-700 dark:text-sky-300 +} + +.p-tag-warn { + @apply bg-orange-100 dark:bg-orange-500/15 text-orange-700 dark:text-orange-300 +} + +.p-tag-danger { + @apply bg-red-100 dark:bg-red-500/15 text-red-700 dark:text-red-300 +} + +.p-tag-secondary { + @apply bg-surface-100 dark:bg-surface-800 text-surface-600 dark:text-surface-300 +} + +.p-tag-contrast { + @apply bg-surface-950 dark:bg-surface-0 text-surface-0 dark:text-surface-950 +} \ No newline at end of file diff --git a/sologger-ui/src/assets/primevue/tailwind.css b/sologger-ui/src/assets/primevue/tailwind.css new file mode 100644 index 0000000..7aec513 --- /dev/null +++ b/sologger-ui/src/assets/primevue/tailwind.css @@ -0,0 +1,104 @@ +@import './common'; + +/* Form */ +@import './autocomplete'; +@import './cascadeselect'; +@import './checkbox'; +@import './colorpicker'; +@import './datepicker'; +@import './iconfield'; +@import './iftalabel'; +@import './inputgroup'; +@import './inputnumber'; +@import './inputotp'; +@import './inputtext'; +@import './floatlabel'; +@import './knob'; +@import './listbox'; +@import './multiselect'; +@import './password'; +@import './radiobutton'; +@import './rating'; +@import './select'; +@import './selectbutton'; +@import './slider'; +@import './textarea'; +@import './togglebutton'; +@import './toggleswitch'; +@import './treeselect'; + +/* Button */ +@import './button'; +@import './buttongroup'; +@import './speeddial'; +@import './splitbutton'; + +/* Data */ +@import './datatable'; +@import './dataview'; +@import './paginator'; +@import './picklist'; +@import './orderlist'; +@import './organizationchart'; +@import './timeline'; +@import './tree'; +@import './treetable'; + +/* Overlay */ +@import './confirmdialog'; +@import './confirmpopup'; +@import './dialog'; +@import './drawer'; +@import './popover'; +@import './tooltip'; + +/* Menu */ +@import './breadcrumb'; +@import './contextmenu'; +@import './dock'; +@import './menu'; +@import './menubar'; +@import './megamenu'; +@import './panelmenu'; +@import './tieredmenu'; + +/* Panel */ +@import './accordion'; +@import './card'; +@import './divider'; +@import './fieldset'; +@import './panel'; +@import './scrollpanel'; +@import './splitter'; +@import './stepper'; +@import './tabs'; +@import './toolbar'; + +/* File */ +@import './fileupload'; + +/* Message */ +@import './message'; +@import './toast'; + +/* Media */ +@import './carousel'; +@import './galleria'; +@import './image'; +@import './imagecompare'; + +/* Misc */ +@import './avatar'; +@import './badge'; +@import './blockui'; +@import './chip'; +@import './inplace'; +@import './metergroup'; +@import './overlaybadge'; +@import './progressbar'; +@import './progressspinner'; +@import './ripple'; +@import './scrolltop'; +@import './skeleton'; +@import './tag'; +@import './terminal'; diff --git a/sologger-ui/src/assets/primevue/terminal.css b/sologger-ui/src/assets/primevue/terminal.css new file mode 100644 index 0000000..71d107d --- /dev/null +++ b/sologger-ui/src/assets/primevue/terminal.css @@ -0,0 +1,22 @@ +.p-terminal { + @apply h-72 overflow-auto px-3 py-2 rounded-md + border border-surface-300 dark:border-surface-700 + bg-surface-0 dark:bg-surface-950 + text-surface-700 dark:text-surface-0 +} + +.p-terminal-prompt { + @apply flex items-center +} + +.p-terminal-prompt-value { + @apply flex-auto border-none bg-transparent text-inherit p-0 outline-none text-base +} + +.p-terminal-prompt-label { + @apply me-1 +} + +.p-terminal-input::-ms-clear { + @apply hidden +} diff --git a/sologger-ui/src/assets/primevue/textarea.css b/sologger-ui/src/assets/primevue/textarea.css new file mode 100644 index 0000000..c5bb8fa --- /dev/null +++ b/sologger-ui/src/assets/primevue/textarea.css @@ -0,0 +1,38 @@ +.p-textarea { + @apply appearance-none rounded-md + border border-surface-300 dark:border-surface-700 + enabled:hover:border-surface-400 dark:enabled:hover:border-surface-600 + enabled:focus:border-primary + bg-surface-0 dark:bg-surface-950 + text-surface-700 dark:text-surface-0 + disabled:bg-surface-200 disabled:text-surface-500 disabled:opacity-100 dark:disabled:bg-surface-700 dark:disabled:text-surface-400 + placeholder:text-surface-500 dark:placeholder:text-surface-400 + px-3 py-2 + transition-colors duration-200 + shadow-[0_1px_2px_0_rgba(18,18,23,0.05)] + outline-none +} + +.p-textarea.p-invalid { + @apply border-red-400 dark:border-red-300 +} + +.p-textarea.p-variant-filled { + @apply bg-surface-50 dark:bg-surface-800 +} + +.p-textarea-fluid { + @apply w-full +} + +.p-textarea-resizable { + @apply overflow-hidden resize-none +} + +.p-textarea-sm { + @apply text-sm px-[0.625rem] py-[0.375rem] +} + +.p-textarea-lg { + @apply text-lg px-[0.875rem] py-[0.625rem] +} diff --git a/sologger-ui/src/assets/primevue/tieredmenu.css b/sologger-ui/src/assets/primevue/tieredmenu.css new file mode 100644 index 0000000..900dea1 --- /dev/null +++ b/sologger-ui/src/assets/primevue/tieredmenu.css @@ -0,0 +1,105 @@ +.p-tieredmenu { + @apply bg-surface-0 dark:bg-surface-900 + text-surface-700 dark:text-surface-0 + border border-surface-200 dark:border-surface-700 + rounded-md min-w-52 +} + +.p-tieredmenu-root-list, +.p-tieredmenu-submenu { + @apply m-0 p-1 list-none outline-none flex flex-col gap-[2px] +} + +.p-tieredmenu-submenu { + @apply absolute min-w-full z-10 rounded-md + bg-surface-0 dark:bg-surface-900 + text-surface-700 dark:text-surface-0 + border border-surface-200 dark:border-surface-700 + shadow-[0_4px_6px_-1px_rgba(0,0,0,0.1),0_2px_4px_-2px_rgba(0,0,0,0.1)] +} + +.p-tieredmenu-item { + @apply relative +} + +.p-tieredmenu-item-content { + @apply transition-colors duration-200 rounded-sm text-surface-700 dark:text-surface-0 +} + +.p-tieredmenu-item-link { + @apply cursor-pointer flex items-center no-underline overflow-hidden relative text-inherit + px-3 py-2 gap-2 select-none outline-none +} + +.p-tieredmenu-item-icon { + @apply text-surface-400 dark:text-surface-500 +} + +.p-tieredmenu-submenu-icon { + @apply text-surface-400 dark:text-surface-500 ms-auto text-sm w-[0.875rem] h-[0.875rem] +} + +.p-tieredmenu-item.p-focus > .p-tieredmenu-item-content { + @apply bg-surface-100 dark:bg-surface-800 text-surface-800 dark:text-surface-0 +} + +.p-tieredmenu-item.p-focus > .p-tieredmenu-item-content .p-tieredmenu-item-icon { + @apply text-surface-500 dark:text-surface-400 +} + +.p-tieredmenu-item.p-focus > .p-tieredmenu-item-content .p-tieredmenu-submenu-icon { + @apply text-surface-500 dark:text-surface-400 +} + +.p-tieredmenu-item:not(.p-disabled) > .p-tieredmenu-item-content:hover { + @apply bg-surface-100 dark:bg-surface-800 text-surface-800 dark:text-surface-0 +} + +.p-tieredmenu-item:not(.p-disabled) > .p-tieredmenu-item-content:hover .p-tieredmenu-item-icon { + @apply text-surface-500 dark:text-surface-400 +} + +.p-tieredmenu-item:not(.p-disabled) > .p-tieredmenu-item-content:hover .p-tieredmenu-submenu-icon { + @apply text-surface-500 dark:text-surface-400 +} + +.p-tieredmenu-item-active > .p-tieredmenu-item-content { + @apply bg-surface-100 dark:bg-surface-800 text-surface-800 dark:text-surface-0 +} + +.p-tieredmenu-item-active > .p-tieredmenu-item-content .p-tieredmenu-item-icon { + @apply text-surface-500 dark:text-surface-400 +} + +.p-tieredmenu-item-active > .p-tieredmenu-item-content .p-tieredmenu-submenu-icon { + @apply text-surface-500 dark:text-surface-400 +} + +.p-tieredmenu-separator { + @apply border-t border-surface-200 dark:border-surface-700 +} + +.p-tieredmenu-overlay { + @apply shadow-[0_4px_6px_-1px_rgba(0,0,0,0.1),0_2px_4px_-2px_rgba(0,0,0,0.1)] +} + +.p-tieredmenu-enter-from, +.p-tieredmenu-leave-active { + @apply opacity-0 +} + +.p-tieredmenu-enter-active { + @apply transition-opacity duration-[250ms] +} + +.p-tieredmenu-mobile .p-tieredmenu-submenu { + @apply static shadow-none border-none ps-4 pe-0 +} + +.p-tieredmenu-mobile .p-tieredmenu-submenu-icon { + @apply transition-transform duration-200 rotate-90 +} + +.p-tieredmenu-mobile .p-tieredmenu-item-active > .p-tieredmenu-item-content .p-tieredmenu-submenu-icon { + @apply -rotate-90 +} diff --git a/sologger-ui/src/assets/primevue/timeline.css b/sologger-ui/src/assets/primevue/timeline.css new file mode 100644 index 0000000..4d00cd4 --- /dev/null +++ b/sologger-ui/src/assets/primevue/timeline.css @@ -0,0 +1,113 @@ +.p-timeline { + @apply flex flex-col flex-grow +} + +.p-timeline-left .p-timeline-event-opposite { + @apply text-end +} + +.p-timeline-left .p-timeline-event-content { + @apply text-start +} + +.p-timeline-right .p-timeline-event { + @apply flex-row-reverse +} + +.p-timeline-right .p-timeline-event-opposite { + @apply text-start +} + +.p-timeline-right .p-timeline-event-content { + @apply text-end +} + +.p-timeline-vertical.p-timeline-alternate .p-timeline-event:nth-child(even) { + @apply flex-row-reverse +} + +.p-timeline-vertical.p-timeline-alternate .p-timeline-event:nth-child(odd) .p-timeline-event-opposite { + @apply text-end +} + +.p-timeline-vertical.p-timeline-alternate .p-timeline-event:nth-child(odd) .p-timeline-event-content { + @apply text-start +} + +.p-timeline-vertical.p-timeline-alternate .p-timeline-event:nth-child(even) .p-timeline-event-opposite { + @apply text-start +} + +.p-timeline-vertical.p-timeline-alternate .p-timeline-event:nth-child(even) .p-timeline-event-content { + @apply text-end +} + +.p-timeline-vertical .p-timeline-event-opposite, +.p-timeline-vertical .p-timeline-event-content { + @apply py-0 px-4 leading-none +} + +.p-timeline-vertical .p-timeline-event-connector { + @apply w-[2px] +} + +.p-timeline-event { + @apply flex relative min-h-20 last:min-h-0 +} + +.p-timeline-event-opposite { + @apply flex-1 +} + +.p-timeline-event-content { + @apply flex-1 +} + +.p-timeline-event-separator { + @apply flex-none flex flex-col items-center +} + +.p-timeline-event-marker { + @apply inline-flex items-center justify-center relative self-baseline + border-2 rounded-full border-surface-200 dark:border-surface-700 w-[1.125rem] h-[1.125rem] + bg-surface-0 dark:bg-surface-900 + before:rounded-full before:w-[0.375rem] before:h-[0.375rem] before:bg-primary + after:absolute after:w-full after:h-full after:rounded-full after:shadow-[0px_0.5px_0px_0px_rgba(0,0,0,0.06),0px_1px_1px_0px_rgba(0,0,0,0.12)] +} + +.p-timeline-event-connector { + @apply flex-grow bg-surface-200 dark:bg-surface-700 +} + +.p-timeline-horizontal { + @apply flex-row +} + +.p-timeline-horizontal .p-timeline-event { + @apply flex-col flex-1 +} + +.p-timeline-horizontal .p-timeline-event:last-child { + @apply flex-none +} + +.p-timeline-horizontal .p-timeline-event-separator { + @apply flex-row +} + +.p-timeline-horizontal .p-timeline-event-connector { + @apply w-full h-[2px] +} + +.p-timeline-horizontal .p-timeline-event-opposite, +.p-timeline-horizontal .p-timeline-event-content { + @apply py-4 px-0 +} + +.p-timeline-horizontal.p-timeline-alternate .p-timeline-event:nth-child(even) { + @apply flex-col-reverse +} + +.p-timeline-bottom .p-timeline-event { + @apply flex-col-reverse +} diff --git a/sologger-ui/src/assets/primevue/toast.css b/sologger-ui/src/assets/primevue/toast.css new file mode 100644 index 0000000..c2b013f --- /dev/null +++ b/sologger-ui/src/assets/primevue/toast.css @@ -0,0 +1,172 @@ +.p-toast { + @apply w-96 rounded-md whitespace-pre-line break-words +} + +.p-toast-message { + @apply mb-4 +} + +.p-toast-message-icon { + @apply flex-shrink-0 text-lg w-[1.125rem] h-[1.125rem] +} + +.p-toast-message-content { + @apply flex items-start p-3 gap-2 +} + +.p-toast-message-text { + @apply flex-auto flex flex-col gap-2 +} + +.p-toast-summary { + @apply font-medium text-base +} + +.p-toast-detail { + @apply font-medium text-sm +} + +.p-toast-close-button { + @apply flex items-center justify-center overflow-hidden relative cursor-pointer bg-transparent select-none + transition-colors duration-200 text-inherit w-7 h-7 rounded-full -mt-[25%] -end-1/4 p-0 border-none + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 +} + +.p-toast-close-button:dir(rtl) { + @apply ms-auto end-auto +} + +.p-toast-message-info, +.p-toast-message-success, +.p-toast-message-warn, +.p-toast-message-error, +.p-toast-message-secondary, +.p-toast-message-contrast { + @apply border backdrop-blur-sm dark:backdrop-blur-md rounded-md +} + +.p-toast-close-icon { + @apply text-base w-4 h-4 +} + +.p-toast-message-info { + @apply bg-blue-50/95 border-blue-200 text-blue-600 + dark:bg-blue-500/15 dark:border-blue-700/35 dark:text-blue-500 + shadow-[0px_4px_8px_0px_theme(colors.blue.500/0.04)] +} + +.p-toast-message-info .p-toast-detail { + @apply text-surface-700 dark:text-surface-0 +} + +.p-toast-message-info .p-toast-close-button { + @apply hover:bg-blue-100 focus-visible:outline-blue-600 + dark:hover:bg-white/5 dark:focus-visible:outline-blue-500 +} + +.p-toast-message-success { + @apply bg-green-50/95 border-green-200 text-green-600 + dark:bg-green-500/15 dark:border-green-700/35 dark:text-green-500 + shadow-[0px_4px_8px_0px_theme(colors.green.500/0.04)] +} + +.p-toast-message-success .p-toast-detail { + @apply text-surface-700 dark:text-surface-0 +} + +.p-toast-message-success .p-toast-close-button { + @apply hover:bg-green-100 focus-visible:outline-green-600 + dark:hover:bg-white/5 dark:focus-visible:outline-green-500 +} + +.p-toast-message-warn { + @apply bg-yellow-50/95 border-yellow-200 text-yellow-600 + dark:bg-yellow-500/15 dark:border-yellow-700/35 dark:text-yellow-500 + shadow-[0px_4px_8px_0px_theme(colors.yellow.500/0.04)] +} + +.p-toast-message-warn .p-toast-detail { + @apply text-surface-700 dark:text-surface-0 +} + +.p-toast-message-warn .p-toast-close-button { + @apply hover:bg-yellow-100 focus-visible:outline-yellow-600 + dark:hover:bg-white/5 dark:focus-visible:outline-yellow-500 +} + +.p-toast-message-error { + @apply bg-red-50/95 border-red-200 text-red-600 + dark:bg-red-500/15 dark:border-red-700/35 dark:text-red-500 + shadow-[0px_4px_8px_0px_theme(colors.blue.500/0.04)] +} + +.p-toast-message-error .p-toast-detail { + @apply text-surface-700 dark:text-surface-0 +} + +.p-toast-message-error .p-toast-close-button { + @apply hover:bg-red-100 focus-visible:outline-red-600 + dark:hover:bg-white/5 dark:focus-visible:outline-red-500 +} + +.p-toast-message-secondary { + @apply bg-surface-100 border-surface-200 text-surface-600 + dark:bg-surface-800 dark:border-surface-700 dark:text-surface-300 + shadow-[0px_4px_8px_0px_rgba(0,0,0,0.04)] +} + +.p-toast-message-secondary .p-toast-detail { + @apply text-surface-700 dark:text-surface-0 +} + +.p-toast-message-secondary .p-toast-close-button { + @apply hover:bg-surface-200 focus-visible:outline-surface-600 + dark:hover:bg-surface-700 dark:focus-visible:outline-surface-300 +} + +.p-toast-message-contrast { + @apply bg-surface-900 border-surface-950 text-surface-50 + dark:bg-surface-0 dark:border-surface-100 dark:text-surface-950 + shadow-[0px_4px_8px_0px_rgba(0,0,0,0.04)] +} + +.p-toast-message-contrast .p-toast-detail { + @apply text-surface-0 dark:text-surface-950 +} + +.p-toast-message-contrast .p-toast-close-button { + @apply hover:bg-surface-800 focus-visible:outline-surface-50 + dark:hover:bg-surface-100 dark:focus-visible:outline-surface-950 +} + +.p-toast-top-center { + @apply -translate-x-1/2; +} + +.p-toast-bottom-center { + @apply -translate-x-1/2; +} + +.p-toast-center { + @apply min-w-[20vw] -translate-x-1/2 -translate-y-1/2 +} + +.p-toast-message-enter-from { + @apply opacity-0 translate-y-1/2 +} + +.p-toast-message-leave-from { + @apply max-h-[1000px] +} + +.p-toast .p-toast-message.p-toast-message-leave-to { + @apply max-h-0 opacity-0 mb-0 overflow-hidden +} + +.p-toast-message-enter-active { + @apply [transition:transform_0.3s,opacity_0.3s] +} + +.p-toast-message-leave-active { + @apply [transition:max-height_0.45s_cubic-bezier(0,1,0,1),opacity_0.3s,margin-bottom_0.3s] +} diff --git a/sologger-ui/src/assets/primevue/togglebutton.css b/sologger-ui/src/assets/primevue/togglebutton.css new file mode 100644 index 0000000..0961add --- /dev/null +++ b/sologger-ui/src/assets/primevue/togglebutton.css @@ -0,0 +1,63 @@ +.p-togglebutton { + @apply inline-flex items-center justify-center overflow-hidden relative cursor-pointer select-none + border border-surface-100 dark:border-surface-950 rounded-md + bg-surface-100 dark:bg-surface-950 + text-surface-500 dark:text-surface-400 text-base font-medium + px-4 py-2 + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-primary + disabled:opacity-100 disabled:cursor-default + disabled:bg-surface-200 disabled:border-surface-200 disabled:text-surface-500 + disabled:dark:bg-surface-700 disabled:dark:border-surface-700 disabled:dark:text-surface-400 + transition-colors duration-300 + before:bg-transparent before:absolute before:start-1 before:top-1 before:rounded-md before:w-[calc(100%-0.5rem)] before:h-[calc(100%-0.5rem)] + before:transition-colors before:duration-200 +} + +.p-togglebutton-content { + @apply relative inline-flex items-center justify-center gap-2 +} + +.p-togglebutton-label, +.p-togglebutton-icon { + @apply relative transition-none +} + +.p-togglebutton.p-togglebutton-checked::before { + @apply bg-surface-0 dark:bg-surface-800 shadow-[0px_1px_2px_0px_rgba(0,0,0,0.02),0px_1px_2px_0px_rgba(0,0,0,0.04)] +} + +.p-togglebutton:not(:disabled):not(.p-togglebutton-checked):hover { + @apply bg-surface-100 dark:bg-surface-950 text-surface-700 dark:text-surface-300 +} + +.p-togglebutton.p-togglebutton-checked { + @apply bg-surface-100 dark:bg-surface-950 border-surface-100 dark:border-surface-950 text-surface-900 dark:text-surface-0 +} + +.p-togglebutton.p-invalid { + @apply border-red-400 dark:border-red-300 +} + +.p-togglebutton-icon { + @apply text-surface-500 dark:text-surface-400 +} + +.p-togglebutton:not(:disabled):not(.p-togglebutton-checked):hover .p-togglebutton-icon { + @apply text-surface-700 dark:text-surface-300 +} + +.p-togglebutton.p-togglebutton-checked .p-togglebutton-icon { + @apply text-surface-900 dark:text-surface-0 +} + +.p-togglebutton:disabled .p-togglebutton-icon { + @apply text-surface-500 dark:text-surface-400 +} + +.p-togglebutton-sm { + @apply text-sm px-[0.75rem] py-[0.375rem] +} + +.p-togglebutton-lg { + @apply text-lg px-[1.25rem] py-[0.625rem] +} diff --git a/sologger-ui/src/assets/primevue/toggleswitch.css b/sologger-ui/src/assets/primevue/toggleswitch.css new file mode 100644 index 0000000..ea4a9dc --- /dev/null +++ b/sologger-ui/src/assets/primevue/toggleswitch.css @@ -0,0 +1,66 @@ +.p-toggleswitch { + @apply inline-block w-10 h-6 +} + +.p-toggleswitch-input { + @apply cursor-pointer disabled:cursor-default appearance-none absolute top-0 start-0 w-full h-full m-0 p-0 opacity-0 z-10 rounded-[30px] +} + +.p-toggleswitch-slider { + @apply inline-block w-full h-full rounded-[30px] shadow-[0_1px_2px_0_rgba(18,18,23,0.05)] + bg-surface-300 dark:bg-surface-700 + border border-transparent + transition-colors duration-200 +} + +.p-toggleswitch-handle { + @apply absolute top-1/2 flex justify-center items-center + bg-surface-0 dark:bg-surface-400 + text-surface-500 dark:text-surface-900 + w-4 h-4 start-1 -mt-2 rounded-full + transition-[background,color,left] duration-200 +} + +.p-toggleswitch.p-toggleswitch-checked .p-toggleswitch-slider { + @apply bg-primary +} + +.p-toggleswitch.p-toggleswitch-checked .p-toggleswitch-handle { + @apply bg-surface-0 dark:bg-surface-900 text-primary start-5 +} + +.p-toggleswitch:not(.p-disabled):has(.p-toggleswitch-input:hover) .p-toggleswitch-slider { + @apply bg-surface-400 dark:bg-surface-600 +} + +.p-toggleswitch:not(.p-disabled):has(.p-toggleswitch-input:hover) .p-toggleswitch-handle { + @apply bg-surface-0 dark:bg-surface-300 text-surface-700 dark:text-surface-800 +} + +.p-toggleswitch:not(.p-disabled):has(.p-toggleswitch-input:hover).p-toggleswitch-checked .p-toggleswitch-slider { + @apply bg-primary-emphasis +} + +.p-toggleswitch:not(.p-disabled):has(.p-toggleswitch-input:hover).p-toggleswitch-checked .p-toggleswitch-handle { + @apply bg-surface-0 dark:bg-surface-900 text-primary-emphasis +} + +.p-toggleswitch:not(.p-disabled):has(.p-toggleswitch-input:focus-visible) .p-toggleswitch-slider { + @apply outline outline-1 outline-offset-2 outline-primary +} + +.p-toggleswitch.p-invalid > .p-toggleswitch-slider { + @apply border-red-400 dark:border-red-300 +} + +.p-toggleswitch.p-disabled { + @apply opacity-100 +} + +.p-toggleswitch.p-disabled .p-toggleswitch-slider { + @apply bg-surface-200 dark:bg-surface-600 +} + +.p-toggleswitch.p-disabled .p-toggleswitch-handle { + @apply bg-surface-700 dark:bg-surface-900 +} diff --git a/sologger-ui/src/assets/primevue/toolbar.css b/sologger-ui/src/assets/primevue/toolbar.css new file mode 100644 index 0000000..b5c1238 --- /dev/null +++ b/sologger-ui/src/assets/primevue/toolbar.css @@ -0,0 +1,12 @@ +.p-toolbar { + @apply flex items-center justify-between flex-wrap p-3 gap-2 + bg-surface-0 dark:bg-surface-900 + text-surface-700 dark:text-surface-0 + border border-surface-200 dark:border-surface-700 rounded-md +} + +.p-toolbar-start, +.p-toolbar-center, +.p-toolbar-end { + @apply flex items-center +} \ No newline at end of file diff --git a/sologger-ui/src/assets/primevue/tooltip.css b/sologger-ui/src/assets/primevue/tooltip.css new file mode 100644 index 0000000..a7aac72 --- /dev/null +++ b/sologger-ui/src/assets/primevue/tooltip.css @@ -0,0 +1,38 @@ +.p-tooltip { + @apply absolute hidden max-w-48 +} + +.p-tooltip-right, +.p-tooltip-left { + @apply py-0 px-1 +} + +.p-tooltip-top, +.p-tooltip-bottom { + @apply py-1 px-0 +} + +.p-tooltip-text { + @apply whitespace-pre-line break-words bg-surface-700 text-surface-0 py-2 px-3 + rounded-md shadow-[0_4px_6px_-1px_rgba(0,0,0,0.1),0_2px_4px_-2px_rgba(0,0,0,0.1)] +} + +.p-tooltip-arrow { + @apply absolute w-0 h-0 border-solid border-transparent +} + +.p-tooltip-right .p-tooltip-arrow { + @apply -mt-1 border-[.25rem] border-s-0 border-e-surface-700 rtl:rotate-180 +} + +.p-tooltip-left .p-tooltip-arrow { + @apply -mt-1 border-[.25rem] border-e-0 border-s-surface-700 rtl:rotate-180 +} + +.p-tooltip-top .p-tooltip-arrow { + @apply -ms-1 border-[.25rem] border-b-0 border-t-surface-700 +} + +.p-tooltip-bottom .p-tooltip-arrow { + @apply -ms-1 border-[.25rem] border-t-0 border-b-surface-700 +} diff --git a/sologger-ui/src/assets/primevue/tree.css b/sologger-ui/src/assets/primevue/tree.css new file mode 100644 index 0000000..933f1e1 --- /dev/null +++ b/sologger-ui/src/assets/primevue/tree.css @@ -0,0 +1,103 @@ +.p-tree { + @apply bg-surface-0 dark:bg-surface-900 text-surface-700 dark:text-surface-0 p-4 +} + +.p-tree-root-children, +.p-tree-node-children { + @apply flex flex-col list-none m-0 gap-[2px] +} + +.p-tree-root-children { + @apply pt-[2px] pb-0 px-0 +} + +.p-tree-node-children { + @apply pt-[2px] pe-0 pb-0 ps-4 +} + +.p-tree-node { + @apply p-0 outline-none +} + +.p-tree-node-content { + @apply rounded-md px-2 py-1 flex items-center text-surface-700 dark:text-surface-0 gap-1 transition-colors duration-200 +} + +.p-tree-node:focus-visible > .p-tree-node-content { + @apply outline outline-1 outline-offset-2 outline-primary +} + +.p-tree-node-content.p-tree-node-selectable:not(.p-tree-node-selected):hover { + @apply bg-surface-100 text-surface-700 dark:bg-surface-800 dark:text-surface-0 +} + +.p-tree-node-content.p-tree-node-selectable:not(.p-tree-node-selected):hover .p-tree-node-icon { + @apply text-surface-600 dark:text-surface-300 +} + +.p-tree-node-content.p-tree-node-selected { + @apply bg-highlight +} + +.p-tree-node-content.p-tree-node-selected .p-tree-node-toggle-button { + @apply text-inherit +} + +.p-tree-node-toggle-button { + @apply cursor-pointer select-none inline-flex justify-center rounded-full items-center overflow-hidden relative flex-shrink-0 + w-7 h-7 p-0 transition-colors duration-200 border-none + bg-transparent enabled:hover:bg-surface-100 dark:enabled:hover:bg-surface-800 + text-surface-500 dark:text-surface-400 enabled:hover:text-surface-600 dark:enabled:hover:text-surface-300 +} + +.p-tree-node-content.p-tree-node-selected .p-tree-node-toggle-button:hover { + @apply bg-surface-0 dark:bg-surface-900 text-primary +} + +.p-tree-root { + @apply overflow-auto +} + +.p-tree-node-selectable { + @apply cursor-pointer select-none +} + +.p-tree-node-leaf > .p-tree-node-content .p-tree-node-toggle-button { + @apply invisible +} + +.p-tree-node-icon { + @apply text-surface-500 dark:text-surface-400 transition-colors duration-200 +} + +.p-tree-node-content.p-tree-node-selected .p-tree-node-icon { + @apply text-primary +} + +.p-tree-filter { + @apply mb-2 +} + +.p-tree-filter-input { + @apply w-full +} + +.p-tree-loading { + @apply relative h-full +} + +.p-tree-loading-icon { + @apply text-[2rem] h-8 w-8 +} + +.p-tree .p-tree-mask { + @apply absolute z-10 flex items-center justify-center +} + +.p-tree-flex-scrollable { + @apply flex flex-1 h-full flex-col +} + +.p-tree-flex-scrollable .p-tree-root { + @apply flex-1 +} diff --git a/sologger-ui/src/assets/primevue/treeselect.css b/sologger-ui/src/assets/primevue/treeselect.css new file mode 100644 index 0000000..1fd4876 --- /dev/null +++ b/sologger-ui/src/assets/primevue/treeselect.css @@ -0,0 +1,112 @@ +@import './chip'; +@import './tree'; + +.p-treeselect { + @apply inline-flex cursor-pointer relative select-none rounded-md + bg-surface-0 dark:bg-surface-950 + border border-surface-300 dark:border-surface-700 + shadow-[0_1px_2px_0_rgba(18,18,23,0.05)] + transition-colors duration-200 +} + +.p-treeselect:not(.p-disabled):hover { + @apply border-surface-400 dark:border-surface-600 +} + +.p-treeselect:not(.p-disabled).p-focus { + @apply border-primary +} + +.p-treeselect.p-variant-filled { + @apply bg-surface-50 dark:bg-surface-800 +} + +.p-treeselect.p-invalid { + @apply border-red-400 dark:border-red-300 +} + +.p-treeselect.p-disabled { + @apply bg-surface-200 text-surface-500 dark:bg-surface-700 dark:text-surface-400 opacity-100 cursor-default +} + +.p-treeselect-dropdown { + @apply flex items-center justify-center shrink-0 bg-transparent + text-surface-500 dark:text-surface-400 w-10 rounded-e-md +} + +.p-treeselect-label-container { + @apply overflow-hidden flex-auto +} + +.p-treeselect-label { + @apply flex items-center gap-1 whitespace-nowrap text-ellipsis px-3 py-2 text-surface-700 dark:text-surface-0 +} + +.p-treeselect-label.p-placeholder { + @apply text-surface-500 dark:text-surface-400 +} + +.p-treeselect.p-disabled .p-treeselect-label { + @apply text-surface-500 dark:text-surface-400 +} + +.p-treeselect-label-empty { + @apply overflow-hidden invisible +} + +.p-treeselect .p-treeselect-overlay { + @apply min-w-full +} + +.p-treeselect-overlay { + @apply absolute top-0 left-0 rounded-md + bg-surface-0 dark:bg-surface-900 + border border-surface-200 dark:border-surface-700 + text-surface-700 dark:text-surface-0 + shadow-[0_4px_6px_-1px_rgba(0,0,0,0.1),0_2px_4px_-2px_rgba(0,0,0,0.1)] +} + + +.p-treeselect-tree-container { + @apply overflow-auto +} + +.p-treeselect-empty-message { + @apply px-3 py-2 +} + +.p-treeselect-fluid { + @apply flex +} + +.p-treeselect-overlay .p-tree { + @apply p-1 +} + +.p-treeselect-overlay .p-tree-loading { + @apply min-h-12 +} + +.p-treeselect-label .p-chip { + @apply pt-1 pb-1 rounded-sm +} + +.p-treeselect-label:has(.p-chip) { + @apply py-1 px-1 +} + +.p-treeselect-sm .p-treeselect-label { + @apply text-sm px-[0.625rem] py-[0.375rem] +} + +.p-treeselect-sm .p-treeselect-dropdown .p-icon { + @apply text-sm w-[0.875rem] h-[0.875rem] +} + +.p-treeselect-lg .p-treeselect-label { + @apply text-lg px-[0.875rem] py-[0.625rem] +} + +.p-treeselect-lg .p-treeselect-dropdown .p-icon { + @apply text-lg w-[1.125rem] h-[1.125rem] +} diff --git a/sologger-ui/src/assets/primevue/treetable.css b/sologger-ui/src/assets/primevue/treetable.css new file mode 100644 index 0000000..a9c0142 --- /dev/null +++ b/sologger-ui/src/assets/primevue/treetable.css @@ -0,0 +1,300 @@ +@import './paginator'; + +.p-treetable { + @apply relative +} + +.p-treetable-table { + @apply border-spacing-0 w-full +} + +.p-treetable-scrollable > .p-treetable-table-container { + @apply relative +} + +.p-treetable-scrollable-table > .p-treetable-thead { + @apply top-0 z-10 +} + +.p-treetable-scrollable-table > .p-treetable-frozen-tbody { + @apply sticky z-10 +} + +.p-treetable-scrollable-table>.p-treetable-tfoot { + @apply bottom-0 z-10 +} + +.p-treetable-scrollable .p-treetable-frozen-column { + @apply sticky bg-surface-0 dark:bg-surface-900 +} + +.p-treetable-scrollable th.p-treetable-frozen-column { + @apply z-10 +} + +.p-treetable-scrollable > .p-treetable-table-container > .p-treetable-table > .p-treetable-thead { + @apply bg-surface-0 dark:bg-surface-900 +} + +.p-treetable-scrollable > .p-treetable-table-container > .p-treetable-table > .p-treetable-tfoot { + @apply bg-surface-0 dark:bg-surface-900 +} + +.p-treetable-flex-scrollable { + @apply flex flex-col h-full +} + +.p-treetable-flex-scrollable > .p-treetable-table-container { + @apply flex flex-col flex-1 h-full +} + +.p-treetable-scrollable-table > .p-treetable-tbody > .p-treetable-row-group-header { + @apply sticky z-10 +} + +.p-treetable-resizable-table > .p-treetable-thead > tr > th, +.p-treetable-resizable-table > .p-treetable-tfoot > tr > td, +.p-treetable-resizable-table > .p-treetable-tbody > tr > td { + @apply overflow-hidden whitespace-nowrap +} + +.p-treetable-resizable-table > .p-treetable-thead > tr > th.p-treetable-resizable-column:not(.p-treetable-frozen-column) { + @apply bg-clip-padding relative +} + +.p-treetable-resizable-table-fit > .p-treetable-thead > tr > th.p-treetable-resizable-column:last-child .p-treetable-column-resizer { + @apply hidden +} + +.p-treetable-column-resizer { + @apply block absolute top-0 end-0 m-0 w-2 h-full p-0 cursor-col-resize border border-transparent +} + +.p-treetable-column-header-content { + @apply flex items-center gap-2 +} + +.p-treetable-column-resize-indicator { + @apply w-px absolute z-10 hidden bg-primary +} + +.p-treetable-mask { + @apply absolute flex items-center justify-center z-20 +} + +.p-treetable-paginator-top { + @apply border-b border-surface-200 dark:border-surface-700 +} + +.p-treetable-paginator-bottom { + @apply border-t border-surface-200 dark:border-surface-700 +} + +.p-treetable-header { + @apply py-3 px-4 border-b border-surface-200 dark:border-surface-700 + bg-surface-0 dark:bg-surface-900 + text-surface-700 dark:text-surface-0 +} + +.p-treetable-footer { + @apply py-3 px-4 border-b border-surface-200 dark:border-surface-700 + bg-surface-0 dark:bg-surface-900 + text-surface-700 dark:text-surface-0 +} + +.p-treetable-header-cell { + @apply py-3 px-4 font-normal text-start transition-colors duration-200 + border-b border-surface-200 dark:border-surface-700 + bg-surface-0 dark:bg-surface-900 + text-surface-700 dark:text-surface-0 +} + +.p-treetable-column-title { + @apply font-semibold +} + +.p-treetable-tbody > tr { + @apply bg-surface-0 dark:bg-surface-900 text-surface-700 dark:text-surface-0 transition-colors duration-200 +} + +.p-treetable-tbody > tr > td { + @apply text-start py-3 px-4 border-b border-surface-200 dark:border-surface-800 +} + +.p-treetable-hoverable .p-treetable-tbody > tr:not(.p-treetable-row-selected):hover { + @apply bg-surface-100 text-surface-800 dark:bg-surface-800 dark:text-surface-0 +} + +.p-treetable-tbody > tr.p-treetable-row-selected { + @apply bg-highlight +} + +.p-treetable-tbody > tr:has(+ .p-treetable-row-selected) > td { + @apply border-b-primary-100 dark:border-b-primary-900 +} + +.p-treetable-tbody > tr.p-treetable-row-selected > td { + @apply border-b-primary-100 dark:border-b-primary-900 +} + +.p-treetable-tbody > tr:focus-visible, +.p-treetable-tbody > tr.p-treetable-contextmenu-row-selected { + @apply outline outline-1 -outline-offset-1 outline-primary +} + +.p-treetable-tfoot > tr > td { + @apply text-start py-3 px-4 border-b border-surface-200 dark:border-surface-800 + bg-surface-0 dark:bg-surface-900 + text-surface-700 dark:text-surface-0 +} + +.p-treetable-column-footer { + @apply font-semibold +} + +.p-treetable-sortable-column { + @apply cursor-pointer select-none focus-visible:outline focus-visible:outline-1 focus-visible:-outline-offset-1 focus-visible:outline-primary +} + +.p-treetable-column-title, +.p-treetable-sort-icon, +.p-treetable-sort-badge { + @apply align-middle +} + +.p-treetable-sort-icon { + @apply text-surface-500 dark:text-surface-400 transition-colors duration-200 +} + +.p-treetable-sortable-column:not(.p-treetable-column-sorted):hover { + @apply bg-surface-100 text-surface-800 dark:bg-surface-800 dark:text-surface-0 +} + +.p-treetable-sortable-column:not(.p-treetable-column-sorted):hover .p-treetable-sort-icon { + @apply text-surface-600 dark:text-surface-300 +} + +.p-treetable-column-sorted { + @apply bg-highlight +} + +.p-treetable-column-sorted .p-treetable-sort-icon { + @apply bg-highlight +} + +.p-treetable-hoverable .p-treetable-selectable-row { + @apply cursor-pointer +} + +.p-treetable-loading-icon { + @apply text-[2rem] w-8 h-8 +} + +.p-treetable-gridlines .p-treetable-header { + @apply border-t border-x +} + +.p-treetable-gridlines .p-treetable-footer { + @apply border-b border-x +} + +.p-treetable-gridlines .p-treetable-paginator-top { + @apply border-t border-x +} + +.p-treetable-gridlines .p-treetable-paginator-bottom { + @apply border-b border-x +} + +.p-treetable-gridlines .p-treetable-thead > tr > th { + @apply border-t border-x last:border +} + +.p-treetable-gridlines .p-treetable-tbody > tr > td { + @apply border-t border-s last:border-r +} + +.p-treetable-gridlines .p-treetable-tbody > tr:last-child > td { + @apply border-y border-s last:border +} + +.p-treetable-gridlines .p-treetable-tfoot > tr > td { + @apply border-y border-s last:border +} + +.p-treetable.p-treetable-gridlines .p-treetable-thead + .p-treetable-tfoot > tr > td { + @apply border-b border-s last:border-r +} + +.p-treetable.p-treetable-gridlines:has(.p-treetable-thead):has(.p-treetable-tbody) .p-treetable-tbody > tr > td { + @apply border-b border-s last:border-r +} + +.p-treetable.p-treetable-gridlines:has(.p-treetable-tbody):has(.p-treetable-tfoot) .p-treetable-tbody > tr:last-child > td { + @apply border-x +} + +.p-treetable.p-treetable-sm .p-treetable-header { + @apply py-1 px-2 +} + +.p-treetable.p-treetable-sm .p-treetable-thead > tr > th { + @apply py-1 px-2 +} + +.p-treetable.p-treetable-sm .p-treetable-tbody > tr > td { + @apply py-1 px-2 +} + +.p-treetable.p-treetable-sm .p-treetable-tfoot > tr > td { + @apply py-1 px-2 +} + +.p-treetable.p-treetable-sm .p-treetable-footer { + @apply py-1 px-2 +} + +.p-treetable.p-treetable-lg .p-treetable-header { + @apply py-4 px-5 +} + +.p-treetable.p-treetable-lg .p-treetable-thead > tr > th { + @apply py-4 px-5 +} + +.p-treetable.p-treetable-lg .p-treetable-tbody>tr>td { + @apply py-4 px-5 +} + +.p-treetable.p-treetable-lg .p-treetable-tfoot>tr>td { + @apply py-4 px-5 +} + +.p-treetable.p-treetable-lg .p-treetable-footer { + @apply py-4 px-5 +} + +.p-treetable-body-cell-content { + @apply flex items-center gap-2 +} + +.p-treetable-tbody > tr.p-treetable-row-selected .p-treetable-node-toggle-button { + @apply text-inherit +} + +.p-treetable-node-toggle-button { + @apply inline-flex items-center justify-center overflow-hidden relative select-none + transition-colors duration-200 w-7 h-7 rounded-full border-none bg-transparent cursor-pointer + enabled:hover:bg-surface-100 dark:enabled:hover:bg-surface-900 + text-surface-500 dark:text-surface-400 enabled:hover:text-surface-700 dark:enabled:hover:text-surface-0 + focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-primary + +} + +.p-treetable-tbody > tr.p-treetable-row-selected .p-treetable-node-toggle-button:hover { + @apply bg-surface-0 dark:bg-surface-900 text-primary +} + +.p-treetable-node-toggle-icon:dir(rtl) { + @apply rotate-180 +} diff --git a/sologger-ui/src/assets/tailwind.css b/sologger-ui/src/assets/tailwind.css new file mode 100644 index 0000000..57c6c2a --- /dev/null +++ b/sologger-ui/src/assets/tailwind.css @@ -0,0 +1,4 @@ +@import "tailwindcss/base"; +@import "tailwindcss/components"; +@import "./primevue/tailwind.css"; +@import "tailwindcss/utilities"; \ No newline at end of file diff --git a/sologger-ui/src/assets/vue.svg b/sologger-ui/src/assets/vue.svg new file mode 100644 index 0000000..770e9d3 --- /dev/null +++ b/sologger-ui/src/assets/vue.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sologger-ui/src/components/LogsTable.vue b/sologger-ui/src/components/LogsTable.vue new file mode 100644 index 0000000..df3e314 --- /dev/null +++ b/sologger-ui/src/components/LogsTable.vue @@ -0,0 +1,212 @@ + + + + + \ No newline at end of file diff --git a/sologger-ui/src/components/ProgramIdForm.vue b/sologger-ui/src/components/ProgramIdForm.vue new file mode 100644 index 0000000..04c0f6f --- /dev/null +++ b/sologger-ui/src/components/ProgramIdForm.vue @@ -0,0 +1,36 @@ + + + \ No newline at end of file diff --git a/sologger-ui/src/components/ProgramList.vue b/sologger-ui/src/components/ProgramList.vue new file mode 100644 index 0000000..ad362c8 --- /dev/null +++ b/sologger-ui/src/components/ProgramList.vue @@ -0,0 +1,32 @@ + + + \ No newline at end of file diff --git a/sologger-ui/src/components/StatsGrid.vue b/sologger-ui/src/components/StatsGrid.vue new file mode 100644 index 0000000..e771ada --- /dev/null +++ b/sologger-ui/src/components/StatsGrid.vue @@ -0,0 +1,22 @@ + + + \ No newline at end of file diff --git a/sologger-ui/src/main.js b/sologger-ui/src/main.js new file mode 100644 index 0000000..9a8cf55 --- /dev/null +++ b/sologger-ui/src/main.js @@ -0,0 +1,16 @@ +import Button from "primevue/button"; +import PrimeVue from "primevue/config"; +import InputText from "primevue/inputtext"; +import { createApp } from "vue"; +import App from "./App.vue"; +import "./assets/tailwind.css"; +import "./style.css"; +import router from "./router"; + +const app = createApp(App); +app.use(router); +app.component("InputText", InputText); +app.component("Button", Button); +app.use(PrimeVue, { theme: "none" }); +app.mount("#app"); + diff --git a/sologger-ui/src/router/index.js b/sologger-ui/src/router/index.js new file mode 100644 index 0000000..8621b01 --- /dev/null +++ b/sologger-ui/src/router/index.js @@ -0,0 +1,30 @@ +// src/router/index.js +import { createRouter, createWebHistory } from 'vue-router'; +import HomeView from '../views/HomeView.vue'; +import ConvertView from '../views/ConvertView.vue'; +import AboutView from '../views/AboutView.vue'; + +const routes = [ + { + path: '/', + name: 'home', + component: HomeView + }, + { + path: '/convert', + name: 'convert', + component: ConvertView + }, + { + path: '/about', + name: 'about', + component: AboutView + } +]; + +const router = createRouter({ + history: createWebHistory(), + routes +}); + +export default router; \ No newline at end of file diff --git a/sologger-ui/src/style.css b/sologger-ui/src/style.css new file mode 100644 index 0000000..849681e --- /dev/null +++ b/sologger-ui/src/style.css @@ -0,0 +1,230 @@ +:root { + --p-primary-50: #ecfdf5; + --p-primary-100: #d1fae5; + --p-primary-200: #a7f3d0; + --p-primary-300: #6ee7b7; + --p-primary-400: #34d399; + --p-primary-500: #10b981; + --p-primary-600: #059669; + --p-primary-700: #047857; + --p-primary-800: #065f46; + --p-primary-900: #064e3b; + --p-primary-950: #022c22; + --p-surface-0: #ffffff; + --p-surface-50: #fafafa; + --p-surface-100: #f4f4f5; + --p-surface-200: #e4e4e7; + --p-surface-300: #d4d4d8; + --p-surface-400: #a1a1aa; + --p-surface-500: #71717a; + --p-surface-600: #52525b; + --p-surface-700: #3f3f46; + --p-surface-800: #27272a; + --p-surface-900: #18181b; + --p-surface-950: #09090b; + --p-content-border-radius: 6px; +} + +/* Light */ +:root { + --p-primary-color: var(--p-primary-500); + --p-primary-contrast-color: var(--p-surface-0); + --p-primary-hover-color: var(--p-primary-600); + --p-primary-active-color: var(--p-primary-700); + --p-content-border-color: var(--p-surface-200); + --p-content-hover-background: var(--p-surface-100); + --p-content-hover-color: var(--p-surface-800); + --p-highlight-background: var(--p-primary-50); + --p-highlight-color: var(--p-primary-700); + --p-highlight-focus-background: var(--p-primary-100); + --p-highlight-focus-color: var(--p-primary-800); + --p-text-color: var(--p-surface-700); + --p-text-hover-color: var(--p-surface-800); + --p-text-muted-color: var(--p-surface-500); + --p-text-hover-muted-color: var(--p-surface-600); +} + +/* Dark */ +@media (prefers-color-scheme: dark) { + :root { + --p-primary-color: var(--p-primary-400); + --p-primary-contrast-color: var(--p-surface-900); + --p-primary-hover-color: var(--p-primary-300); + --p-primary-active-color: var(--p-primary-200); + --p-content-border-color: var(--p-surface-700); + --p-content-hover-background: var(--p-surface-800); + --p-content-hover-color: var(--p-surface-0); + --p-highlight-background: color-mix(in srgb, var(--p-primary-400), transparent 84%); + --p-highlight-color: rgba(255, 255, 255, 0.87); + --p-highlight-focus-background: color-mix(in srgb, var(--p-primary-400), transparent 76%); + --p-highlight-focus-color: rgba(255, 255, 255, 0.87); + --p-text-color: var(--p-surface-0); + --p-text-hover-color: var(--p-surface-0); + --p-text-muted-color: var(--p-surface-400); + --p-text-hover-muted-color: var(--p-surface-300); + } +} + + +.hot { + height: calc(100vh - 300px); + overflow: hidden; +} + +.hot .handsontable { + font-size: 12px; +} + +.hot .handsontable th { + color: var(--p-text-color); + font-weight: 600; +} + +.hot .handsontable td { + color: var(--p-text-color); + border-color: var(--p-content-border-color); +} + +.truncate-cell { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: 100%; +} + +.scrollable-cell { + white-space: pre-wrap; + overflow-y: auto; + max-height: 45px; + padding: 2px; +} + +.scrollable-cell::-webkit-scrollbar { + width: 4px; +} + +.scrollable-cell::-webkit-scrollbar-track { + background: var(--p-surface-100); +} + +.scrollable-cell::-webkit-scrollbar-thumb { + background: var(--p-surface-400); + border-radius: 2px; +} + +.hot { + height: calc(100vh - 300px); + overflow: hidden; +} + +.hot .handsontable { + font-size: 12px; + background-color: var(--p-surface-50); +} + +.hot .handsontable th { + background-color: var(--p-surface-100); + color: var(--p-surface-800) !important; + font-weight: 600; +} + +.hot .handsontable td { + background-color: var(--p-surface-0); + color: var(--p-surface-800) !important; + border-color: var(--p-content-border-color); +} + +@media (prefers-color-scheme: dark) { + .hot .handsontable th { + background-color: var(--p-surface-800); + color: var(--p-surface-100) !important; + } + + .hot .handsontable td { + background-color: var(--p-surface-900); + color: var(--p-surface-100) !important; + } +} + +.truncate-cell { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: 100%; +} + +.scrollable-cell { + white-space: pre-wrap; + overflow-y: auto; + max-height: 45px; + padding: 2px; +} + +.scrollable-cell::-webkit-scrollbar { + width: 4px; +} + +.scrollable-cell::-webkit-scrollbar-track { + background: var(--p-surface-100); +} + +.scrollable-cell::-webkit-scrollbar-thumb { + background: var(--p-surface-400); + border-radius: 2px; +} + +.pagination { + background-color: var(--p-surface-50); + color: var(--p-surface-800); +} + +.pagination button { + background-color: var(--p-surface-0); + color: var(--p-surface-800); +} + +.pagination button:hover:not(:disabled) { + background-color: var(--p-surface-100); +} + +@media (prefers-color-scheme: dark) { + .pagination { + background-color: var(--p-surface-800); + color: var(--p-surface-100); + } + + .pagination button { + background-color: var(--p-surface-700); + color: var(--p-surface-100); + border-color: var(--p-surface-600); + } + + .pagination button:hover:not(:disabled) { + background-color: var(--p-surface-600); + } +} + +.animate-spin { + animation: spin 1s linear infinite; +} + +@keyframes spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +button:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +/* Dark mode adjustments */ +@media (prefers-color-scheme: dark) { + button:disabled { + opacity: 0.3; + } +} \ No newline at end of file diff --git a/sologger-ui/src/views/AboutView.vue b/sologger-ui/src/views/AboutView.vue new file mode 100644 index 0000000..6dc5eec --- /dev/null +++ b/sologger-ui/src/views/AboutView.vue @@ -0,0 +1,53 @@ +// src/views/AboutView.vue + + + \ No newline at end of file diff --git a/sologger-ui/src/views/ConvertView.vue b/sologger-ui/src/views/ConvertView.vue new file mode 100644 index 0000000..b8139be --- /dev/null +++ b/sologger-ui/src/views/ConvertView.vue @@ -0,0 +1,18 @@ +// src/views/ConvertView.vue + + + \ No newline at end of file diff --git a/sologger-ui/src/views/HomeView.vue b/sologger-ui/src/views/HomeView.vue new file mode 100644 index 0000000..dd4ea6c --- /dev/null +++ b/sologger-ui/src/views/HomeView.vue @@ -0,0 +1,542 @@ +// src/views/HomeView.vue + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sologger-ui/tailwind.config.js b/sologger-ui/tailwind.config.js new file mode 100644 index 0000000..0a8e495 --- /dev/null +++ b/sologger-ui/tailwind.config.js @@ -0,0 +1,6 @@ +const primeui = require('tailwindcss-primeui'); + +export default { + content: ["./index.html", "./src/**/*.{vue,js,ts,jsx,tsx}"], + plugins: [primeui] +}; \ No newline at end of file diff --git a/sologger-ui/vite.config.js b/sologger-ui/vite.config.js new file mode 100644 index 0000000..b91ef76 --- /dev/null +++ b/sologger-ui/vite.config.js @@ -0,0 +1,27 @@ +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' +// import vitePluginWasmPack from "vite-plugin-wasm-pack"; + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [ + vue(), + // vitePluginWasmPack('./public/sologger-log-transformer-wasm') + ], + optimizeDeps: { + include: ['@handsontable/vue3'] + }, + // Add this for error page handling + // publicDir: 'public', + // build: { + // outDir: 'dist', + // assetsDir: 'assets', + // rollupOptions: { + // input: { + // main: './index.html', + // error: './error.html' + // } + // } + // } +}) + From 3009e72920b6dec1859291a4ee88ae0daade0e39 Mon Sep 17 00:00:00 2001 From: Will Kennedy Date: Wed, 20 Nov 2024 11:19:02 -0500 Subject: [PATCH 03/14] Add chart.js and vue-chartjs integration Updated StatsGrid.vue to include chart.js for error logs visualization. Enhanced theming and accessibility across several components, fixed the error page styling, and updated `vite.config.js` for better build configuration. --- sologger-ui/error.html | 63 ++++---- sologger-ui/package-lock.json | 30 ++++ sologger-ui/package.json | 2 + sologger-ui/src/App.vue | 12 +- sologger-ui/src/components/LogsTable.vue | 3 +- sologger-ui/src/components/StatsGrid.vue | 107 +++++++++++-- sologger-ui/src/style.css | 108 +++++-------- sologger-ui/src/views/AboutView.vue | 25 ++- sologger-ui/src/views/ConvertView.vue | 188 ++++++++++++++++++++++- sologger-ui/src/views/HomeView.vue | 49 +++--- sologger-ui/vite.config.js | 26 ++-- 11 files changed, 439 insertions(+), 174 deletions(-) diff --git a/sologger-ui/error.html b/sologger-ui/error.html index 60704bb..be599fc 100644 --- a/sologger-ui/error.html +++ b/sologger-ui/error.html @@ -6,21 +6,17 @@ Error - Sologger +

@@ -116,7 +127,7 @@

Page Not Found

Return to Homepage

If you believe this is a mistake, please - diff --git a/sologger-ui/package-lock.json b/sologger-ui/package-lock.json index 0df599f..b2e321c 100644 --- a/sologger-ui/package-lock.json +++ b/sologger-ui/package-lock.json @@ -9,10 +9,12 @@ "version": "0.0.0", "dependencies": { "@handsontable/vue3": "^14.6.1", + "chart.js": "^4.4.6", "handsontable": "^14.6.1", "primevue": "^4.2.1", "tailwindcss-primeui": "^0.3.4", "vue": "^3.5.12", + "vue-chartjs": "^5.3.2", "vue-router": "^4.4.5" }, "devDependencies": { @@ -553,6 +555,12 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@kurkle/color": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.4.tgz", + "integrity": "sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==", + "license": "MIT" + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -1259,6 +1267,18 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/chart.js": { + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.6.tgz", + "integrity": "sha512-8Y406zevUPbbIBA/HRk33khEmQPk5+cxeflWE/2rx1NJsjVWMPw/9mSP9rxHP5eqi6LNoPBVMfZHxbwLSgldYA==", + "license": "MIT", + "dependencies": { + "@kurkle/color": "^0.3.0" + }, + "engines": { + "pnpm": ">=8" + } + }, "node_modules/chevrotain": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-6.5.0.tgz", @@ -2770,6 +2790,16 @@ } } }, + "node_modules/vue-chartjs": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/vue-chartjs/-/vue-chartjs-5.3.2.tgz", + "integrity": "sha512-NrkbRRoYshbXbWqJkTN6InoDVwVb90C0R7eAVgMWcB9dPikbruaOoTFjFYHE/+tNPdIe6qdLCDjfjPHQ0fw4jw==", + "license": "MIT", + "peerDependencies": { + "chart.js": "^4.1.1", + "vue": "^3.0.0-0 || ^2.7.0" + } + }, "node_modules/vue-router": { "version": "4.4.5", "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.4.5.tgz", diff --git a/sologger-ui/package.json b/sologger-ui/package.json index 44405b5..2c35e0b 100644 --- a/sologger-ui/package.json +++ b/sologger-ui/package.json @@ -10,10 +10,12 @@ }, "dependencies": { "@handsontable/vue3": "^14.6.1", + "chart.js": "^4.4.6", "handsontable": "^14.6.1", "primevue": "^4.2.1", "tailwindcss-primeui": "^0.3.4", "vue": "^3.5.12", + "vue-chartjs": "^5.3.2", "vue-router": "^4.4.5" }, "devDependencies": { diff --git a/sologger-ui/src/App.vue b/sologger-ui/src/App.vue index 1ceab13..ac6dd31 100644 --- a/sologger-ui/src/App.vue +++ b/sologger-ui/src/App.vue @@ -5,34 +5,34 @@

- Sologger + Sologger