From 1b448e363c88c23e74ddf2940ce6da9b28313166 Mon Sep 17 00:00:00 2001 From: Twyco Date: Thu, 15 Oct 2026 09:46:19 +0200 Subject: [PATCH 1/2] fix: restore iOS navigation with unsaved forms --- native/package.json | 4 +- native/src-tauri/Cargo.lock | 2 +- native/src-tauri/Cargo.toml | 2 +- .../WorkspaceViewController.swift | 38 ++++++++ .../en.lproj/Localizable.strings | 1 + .../gen/apple/Tests/WorkspaceTests.swift | 88 +++++++++++++++++++ .../project.pbxproj | 29 ++++-- native/src-tauri/gen/apple/project.yml | 8 +- native/src-tauri/tauri.conf.json | 2 +- native/src-tauri/tauri.ios.conf.json | 2 +- 10 files changed, 161 insertions(+), 15 deletions(-) diff --git a/native/package.json b/native/package.json index a28d172..d69df45 100644 --- a/native/package.json +++ b/native/package.json @@ -1,6 +1,6 @@ { "name": "kanbangit-native", - "version": "0.2.7", + "version": "0.2.8", "private": true, "type": "module", "scripts": { @@ -25,5 +25,5 @@ "devDependencies": { "@tauri-apps/cli": "2.11.4" }, - "releaseNotes": "Fix blocked navigation after changing project creation options or other forms on macOS by displaying native confirmations for unsaved changes." + "releaseNotes": "Fix blocked navigation after changing project creation options or other forms on iOS by displaying native confirmations for unsaved changes. Pending confirmations close safely when changing workspaces." } diff --git a/native/src-tauri/Cargo.lock b/native/src-tauri/Cargo.lock index 933aaef..ffd802a 100644 --- a/native/src-tauri/Cargo.lock +++ b/native/src-tauri/Cargo.lock @@ -1770,7 +1770,7 @@ dependencies = [ [[package]] name = "kanbangit-native" -version = "0.2.7" +version = "0.2.8" dependencies = [ "semver", "serde", diff --git a/native/src-tauri/Cargo.toml b/native/src-tauri/Cargo.toml index 9a70304..b3f4642 100644 --- a/native/src-tauri/Cargo.toml +++ b/native/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "kanbangit-native" -version = "0.2.7" +version = "0.2.8" description = "KanbanGit native application" edition = "2021" publish = false diff --git a/native/src-tauri/gen/apple/Sources/kanbangit-native/WorkspaceViewController.swift b/native/src-tauri/gen/apple/Sources/kanbangit-native/WorkspaceViewController.swift index 2935edb..a1708e7 100644 --- a/native/src-tauri/gen/apple/Sources/kanbangit-native/WorkspaceViewController.swift +++ b/native/src-tauri/gen/apple/Sources/kanbangit-native/WorkspaceViewController.swift @@ -43,6 +43,7 @@ final class WorkspaceViewController: UIViewController, WKNavigationDelegate, WKU private var settingsAvailable = false private var toolbarHeight: NSLayoutConstraint! private var appearance: UISegmentedControl! + private var javaScriptConfirmation: (alert: UIAlertController, completion: (Bool) -> Void)? init(defaults: UserDefaults = .standard) { self.defaults = defaults @@ -51,6 +52,8 @@ final class WorkspaceViewController: UIViewController, WKNavigationDelegate, WKU required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } + deinit { javaScriptConfirmation?.completion(false) } + private func text(_ key: String) -> String { NSLocalizedString(key, comment: "KanbanGit iOS workspace") } @@ -199,6 +202,7 @@ final class WorkspaceViewController: UIViewController, WKNavigationDelegate, WKU func open(_ url: URL) { if server?.url == url, connection.ready { showWorkspace(); return } + completeJavaScriptConfirmation(false) let selected = WorkspaceServer.selecting(url, current: server) guard let data = try? JSONEncoder().encode(selected) else { status.text = text("storageError"); return } defaults.set(data, forKey: serverKey) @@ -265,6 +269,7 @@ final class WorkspaceViewController: UIViewController, WKNavigationDelegate, WKU } @objc private func showSettings() { + completeJavaScriptConfirmation(false) loading.stopAnimating() view.endEditing(true) launcher.isHidden = false @@ -320,6 +325,39 @@ final class WorkspaceViewController: UIViewController, WKNavigationDelegate, WKU } } + func webView(_ webView: WKWebView, runJavaScriptConfirmPanelWithMessage message: String, + initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping (Bool) -> Void) { + guard webView === workspace, viewIfLoaded?.window != nil, + presentedViewController == nil, javaScriptConfirmation == nil else { + completionHandler(false) + return + } + let alert = UIAlertController(title: frame.request.url?.host ?? text("appName"), + message: message, preferredStyle: .alert) + let cancel = UIAlertAction(title: text("cancel"), style: .cancel) { [weak self] _ in + self?.completeJavaScriptConfirmation(false) + } + alert.addAction(cancel) + alert.addAction(UIAlertAction(title: text("ok"), style: .default) { [weak self] _ in + self?.completeJavaScriptConfirmation(true) + }) + alert.preferredAction = cancel + javaScriptConfirmation = (alert, completionHandler) + present(alert, animated: true) + } + + func completeJavaScriptConfirmation(_ accepted: Bool) { + guard let confirmation = javaScriptConfirmation else { return } + javaScriptConfirmation = nil + if confirmation.alert.presentingViewController == nil { + confirmation.completion(accepted) + } else { + confirmation.alert.dismiss(animated: false) { + confirmation.completion(accepted) + } + } + } + func webView(_ webView: WKWebView, decidePolicyFor action: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { guard webView === workspace, let url = action.request.url else { decisionHandler(.cancel); return } guard server?.allows(url) == true else { diff --git a/native/src-tauri/gen/apple/Sources/kanbangit-native/en.lproj/Localizable.strings b/native/src-tauri/gen/apple/Sources/kanbangit-native/en.lproj/Localizable.strings index ddac212..fe5c9b3 100644 --- a/native/src-tauri/gen/apple/Sources/kanbangit-native/en.lproj/Localizable.strings +++ b/native/src-tauri/gen/apple/Sources/kanbangit-native/en.lproj/Localizable.strings @@ -9,6 +9,7 @@ "switchWarning" = "Switching servers closes the current workspace and discards unsaved inputs. You will sign in separately on the new server."; "confirmSwitch" = "Switch server"; "cancel" = "Cancel"; +"ok" = "OK"; "connecting" = "Connecting to your server…"; "connected" = "Your workspace is open. Use Server settings to change servers."; "connectionError" = "The server did not finish loading. Check your connection, server address and HTTPS certificate, then try again. An already open workspace and its inputs are kept."; diff --git a/native/src-tauri/gen/apple/Tests/WorkspaceTests.swift b/native/src-tauri/gen/apple/Tests/WorkspaceTests.swift index 9a00c82..79babca 100644 --- a/native/src-tauri/gen/apple/Tests/WorkspaceTests.swift +++ b/native/src-tauri/gen/apple/Tests/WorkspaceTests.swift @@ -135,6 +135,94 @@ final class WorkspaceTests: XCTestCase { "Changing workspaces must retain native gesture navigation") } + @MainActor + func testDirtyFormNavigationPresentsNativeConfirmation() async throws { + let animationsEnabled = UIView.areAnimationsEnabled + UIView.setAnimationsEnabled(false) + defer { UIView.setAnimationsEnabled(animationsEnabled) } + let name = "ios-confirmation-\(UUID())" + let defaults = try XCTUnwrap(UserDefaults(suiteName: name)) + defer { defaults.removePersistentDomain(forName: name) } + let controller = WorkspaceViewController(defaults: defaults) + let window = UIWindow(frame: UIScreen.main.bounds) + window.rootViewController = controller + window.makeKeyAndVisible() + defer { window.isHidden = true; window.rootViewController = nil } + let url = URL(string: "https://example.invalid/")! + controller.open(url) + let webview = try XCTUnwrap(controller.workspace) + webview.stopLoading() + webview.loadSimulatedRequest(URLRequest(url: url.appendingPathComponent("projects/create")), responseHTML: """ + + Back + """) + try await waitFor(webview, "document.readyState === 'complete' && typeof window.visits === 'number'") + _ = try await webview.evaluateJavaScript("document.querySelector('#back').click(); true") + let pristineVisits = try await webview.evaluateJavaScript("window.visits") + XCTAssertEqual(pristineVisits as? Int, 1) + XCTAssertNil(controller.presentedViewController) + _ = try await webview.evaluateJavaScript("document.querySelector('#duplicate').click(); true") + var expectedVisits = 1 + for (index, accepted) in [false, true, false, true].enumerated() { + let click = Task { try await webview.evaluateJavaScript("document.querySelector('#back').click(); true") } + let alert = try await waitForConfirmation(controller) + XCTAssertEqual(alert.title, "example.invalid") + XCTAssertEqual(alert.message, "Discard unsaved changes?") + XCTAssertEqual(alert.actions.map(\.style), [.cancel, .default]) + XCTAssertTrue(alert.preferredAction === alert.actions.first, "The default action must preserve the draft") + if index == 3 { + await withCheckedContinuation { continuation in + alert.dismiss(animated: false) { continuation.resume() } + } + } + controller.completeJavaScriptConfirmation(accepted) + controller.completeJavaScriptConfirmation(!accepted) + _ = try await click.value + if accepted { expectedVisits += 1 } + let visits = try await webview.evaluateJavaScript("window.visits") + XCTAssertEqual(visits as? Int, expectedVisits, "Only accepted visits may run, exactly once each") + let draft = try await webview.evaluateJavaScript("document.querySelector('#draft').value") + XCTAssertEqual(draft as? String, "Unsaved project") + XCTAssertNil(controller.presentedViewController) + } + + let otherAlert = UIAlertController(title: "Already open", message: nil, preferredStyle: .alert) + controller.present(otherAlert, animated: false) + let blocked = try await webview.evaluateJavaScript("confirm('Another dialog')") + XCTAssertEqual(blocked as? Bool, false, "A blocked presentation must release JavaScript") + XCTAssertTrue(controller.presentedViewController === otherAlert) + await withCheckedContinuation { continuation in + otherAlert.dismiss(animated: false) { continuation.resume() } + } + + let pendingClick = Task { try await webview.evaluateJavaScript("document.querySelector('#back').click(); true") } + _ = try await waitForConfirmation(controller) + controller.open(URL(string: "https://other.invalid/")!) + _ = try await pendingClick.value + XCTAssertNil(controller.presentedViewController, "Replacing a workspace must dismiss its confirmation") + let oldVisits = try await webview.evaluateJavaScript("window.visits") + XCTAssertEqual(oldVisits as? Int, expectedVisits) + let stale = try await webview.evaluateJavaScript("confirm('Previous workspace')") + XCTAssertEqual(stale as? Bool, false, "A previous workspace must not present new confirmations") + XCTAssertNil(controller.presentedViewController) + } + + @MainActor + private func waitForConfirmation(_ controller: WorkspaceViewController) async throws -> UIAlertController { + for _ in 0..<100 { + if let alert = controller.presentedViewController as? UIAlertController, !alert.isBeingPresented { return alert } + try await Task.sleep(for: .milliseconds(50)) + } + return try XCTUnwrap(controller.presentedViewController as? UIAlertController, + "Dirty forms must offer a visible confirmation instead of silently cancelling navigation") + } + func testSettingsProtocolRejectsUnsupportedActionsAndInvalidPayloads() throws { for body in [ #"{"version":2,"id":1,"action":"getState","payload":{}}"#, diff --git a/native/src-tauri/gen/apple/kanbangit-native.xcodeproj/project.pbxproj b/native/src-tauri/gen/apple/kanbangit-native.xcodeproj/project.pbxproj index 89a28cf..1b6db75 100644 --- a/native/src-tauri/gen/apple/kanbangit-native.xcodeproj/project.pbxproj +++ b/native/src-tauri/gen/apple/kanbangit-native.xcodeproj/project.pbxproj @@ -33,6 +33,13 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + 1C790E40E71919331C1C4F34 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = AA6AD2A91A9E86D319D86D59 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 721CF221CEDDC28FF2C5EBD5; + remoteInfo = "kanbangit-native_iOS"; + }; 8665A25D07C5F1A295164797 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = AA6AD2A91A9E86D319D86D59 /* Project object */; @@ -48,7 +55,6 @@ 08DF9B2F499E1EB89EB39BC5 /* WorkspaceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkspaceTests.swift; sourceTree = ""; }; 0CF713E7BFE3F6B5BAA3550E /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 1CDE5C303A96423E2E6A194D /* settings.rs */ = {isa = PBXFileReference; path = settings.rs; sourceTree = ""; }; - 23960010246A2A72E9940D3F /* kanbangit-native_iOS.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "kanbangit-native_iOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 2B96972F58CC158AB3DFF94A /* lib.rs */ = {isa = PBXFileReference; path = lib.rs; sourceTree = ""; }; 31630170C358EA8657E34854 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 47C531812A31207F97A89C5F /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; @@ -67,6 +73,7 @@ 946BA5CC3FD90AD90D101A36 /* kanbangit-native_iOS.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "kanbangit-native_iOS.entitlements"; sourceTree = ""; }; 9C56BE6890F0452F69D64795 /* android.rs */ = {isa = PBXFileReference; path = android.rs; sourceTree = ""; }; 9CAD0AE17A7966154CA29001 /* WorkspaceUITests.xctest */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.cfbundle; path = WorkspaceUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 9E29B2FA90E1D53F604961F6 /* KanbanGit.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = KanbanGit.app; sourceTree = BUILT_PRODUCTS_DIR; }; A372EBDD353022BDB3E78972 /* WorkspaceTests.xctest */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.cfbundle; path = WorkspaceTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; AEBAD9ABE758897C50BC1F2E /* locale.rs */ = {isa = PBXFileReference; path = locale.rs; sourceTree = ""; }; BD66652CEDB88ADBAD0A87BA /* workspace-settings.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = "workspace-settings.js"; sourceTree = ""; }; @@ -189,7 +196,7 @@ 59D2DE9FD94E6D2D64CB0117 /* Products */ = { isa = PBXGroup; children = ( - 23960010246A2A72E9940D3F /* kanbangit-native_iOS.app */, + 9E29B2FA90E1D53F604961F6 /* KanbanGit.app */, A372EBDD353022BDB3E78972 /* WorkspaceTests.xctest */, 9CAD0AE17A7966154CA29001 /* WorkspaceUITests.xctest */, ); @@ -248,7 +255,7 @@ packageProductDependencies = ( ); productName = "kanbangit-native_iOS"; - productReference = 23960010246A2A72E9940D3F /* kanbangit-native_iOS.app */; + productReference = 9E29B2FA90E1D53F604961F6 /* KanbanGit.app */; productType = "com.apple.product-type.application"; }; 988CFF304CB81C8F3A4D6612 /* WorkspaceUITests */ = { @@ -279,6 +286,7 @@ buildRules = ( ); dependencies = ( + DEBBEA8683567208E49E40A5 /* PBXTargetDependency */, ); name = WorkspaceTests; packageProductDependencies = ( @@ -418,6 +426,11 @@ target = 721CF221CEDDC28FF2C5EBD5 /* kanbangit-native_iOS */; targetProxy = 8665A25D07C5F1A295164797 /* PBXContainerItemProxy */; }; + DEBBEA8683567208E49E40A5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 721CF221CEDDC28FF2C5EBD5 /* kanbangit-native_iOS */; + targetProxy = 1C790E40E71919331C1C4F34 /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ @@ -451,7 +464,7 @@ CODE_SIGN_ENTITLEMENTS = "kanbangit-native_iOS/kanbangit-native_iOS.entitlements"; CODE_SIGN_IDENTITY = "Apple Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 6; + CURRENT_PROJECT_VERSION = 7; DEVELOPMENT_TEAM = ZZX2KZGTHU; ENABLE_BITCODE = NO; ENABLE_USER_SCRIPT_SANDBOXING = NO; @@ -467,7 +480,7 @@ ); "LIBRARY_SEARCH_PATHS[arch=arm64]" = "$(inherited) $(PROJECT_DIR)/Externals/arm64/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(DEVELOPER_DIR)/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/$(PLATFORM_NAME) $(DEVELOPER_DIR)/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift-5.0/$(PLATFORM_NAME)"; "LIBRARY_SEARCH_PATHS[arch=x86_64]" = "$(inherited) $(PROJECT_DIR)/Externals/x86_64/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(DEVELOPER_DIR)/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/$(PLATFORM_NAME) $(DEVELOPER_DIR)/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift-5.0/$(PLATFORM_NAME)"; - MARKETING_VERSION = 0.2.7; + MARKETING_VERSION = 0.2.8; PRODUCT_BUNDLE_IDENTIFIER = de.kanbangit.ios; PRODUCT_MODULE_NAME = KanbanGitNative; PRODUCT_NAME = KanbanGit; @@ -628,7 +641,7 @@ CODE_SIGN_ENTITLEMENTS = "kanbangit-native_iOS/kanbangit-native_iOS.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 6; + CURRENT_PROJECT_VERSION = 7; DEVELOPMENT_TEAM = ZZX2KZGTHU; ENABLE_BITCODE = NO; ENABLE_USER_SCRIPT_SANDBOXING = NO; @@ -644,7 +657,7 @@ ); "LIBRARY_SEARCH_PATHS[arch=arm64]" = "$(inherited) $(PROJECT_DIR)/Externals/arm64/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(DEVELOPER_DIR)/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/$(PLATFORM_NAME) $(DEVELOPER_DIR)/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift-5.0/$(PLATFORM_NAME)"; "LIBRARY_SEARCH_PATHS[arch=x86_64]" = "$(inherited) $(PROJECT_DIR)/Externals/x86_64/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(DEVELOPER_DIR)/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/$(PLATFORM_NAME) $(DEVELOPER_DIR)/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift-5.0/$(PLATFORM_NAME)"; - MARKETING_VERSION = 0.2.7; + MARKETING_VERSION = 0.2.8; PRODUCT_BUNDLE_IDENTIFIER = de.kanbangit.ios; PRODUCT_MODULE_NAME = KanbanGitNative; PRODUCT_NAME = KanbanGit; @@ -691,6 +704,7 @@ SDKROOT = iphoneos; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/KanbanGit.app/KanbanGit"; }; name = debug; }; @@ -710,6 +724,7 @@ SDKROOT = iphoneos; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/KanbanGit.app/KanbanGit"; }; name = release; }; diff --git a/native/src-tauri/gen/apple/project.yml b/native/src-tauri/gen/apple/project.yml index 2a040fe..e38ed64 100644 --- a/native/src-tauri/gen/apple/project.yml +++ b/native/src-tauri/gen/apple/project.yml @@ -18,8 +18,8 @@ settingGroups: DEVELOPMENT_TEAM: ZZX2KZGTHU ENABLE_USER_SCRIPT_SANDBOXING: false PRODUCT_BUNDLE_IDENTIFIER: de.kanbangit.ios - MARKETING_VERSION: "0.2.7" - CURRENT_PROJECT_VERSION: "6" + MARKETING_VERSION: "0.2.8" + CURRENT_PROJECT_VERSION: "7" configs: debug: CODE_SIGN_IDENTITY: Apple Development @@ -40,6 +40,7 @@ targets: kanbangit-native_iOS: type: application platform: iOS + productName: KanbanGit sources: - path: Sources - path: ../../../ui/workspace-navigation.js @@ -115,6 +116,8 @@ targets: WorkspaceTests: type: bundle.unit-test platform: iOS + dependencies: + - target: kanbangit-native_iOS sources: - path: ../../../ui/workspace-navigation.js - path: ../../../ui/workspace-settings.js @@ -126,6 +129,7 @@ targets: base: GENERATE_INFOPLIST_FILE: YES PRODUCT_BUNDLE_IDENTIFIER: de.kanbangit.ios.tests + TEST_HOST: $(BUILT_PRODUCTS_DIR)/KanbanGit.app/KanbanGit DEVELOPMENT_TEAM: ZZX2KZGTHU CODE_SIGN_STYLE: Manual SWIFT_VERSION: "5.0" diff --git a/native/src-tauri/tauri.conf.json b/native/src-tauri/tauri.conf.json index 132686f..6123337 100644 --- a/native/src-tauri/tauri.conf.json +++ b/native/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "KanbanGit", - "version": "0.2.7", + "version": "0.2.8", "identifier": "de.kanbangit.desktop", "build": { "frontendDist": "../ui" diff --git a/native/src-tauri/tauri.ios.conf.json b/native/src-tauri/tauri.ios.conf.json index fa75dd3..43052cb 100644 --- a/native/src-tauri/tauri.ios.conf.json +++ b/native/src-tauri/tauri.ios.conf.json @@ -5,7 +5,7 @@ "iOS": { "minimumSystemVersion": "17.0", "developmentTeam": "ZZX2KZGTHU", - "bundleVersion": "6" + "bundleVersion": "7" } } } -- 2.54.0 From 99264c7bc832e0257b6e3319654844db973abe5d Mon Sep 17 00:00:00 2001 From: Twyco Date: Thu, 15 Oct 2026 09:50:04 +0200 Subject: [PATCH 2/2] fix: pnpm packages --- package.json | 2 +- pnpm-lock.yaml | 216 +++++++++++++++++-------------------------------- 2 files changed, 74 insertions(+), 144 deletions(-) diff --git a/package.json b/package.json index 4d4a5d2..317f420 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,7 @@ "tailwind-merge": "^3.2.0", "tailwindcss": "^4.1.1", "tw-animate-css": "^1.2.5", - "vue": "^3.5.13", + "vue": "^3.5.43", "vue-input-otp": "^0.3.2" }, "optionalDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 644d7ba..45426b7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -223,7 +223,7 @@ importers: version: 2.3.18(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1) '@inertiajs/vue3': specifier: ^2.3.7 - version: 2.3.18(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(vue@3.5.30(typescript@5.9.3)) + version: 2.3.18(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(vue@3.5.43(typescript@5.9.3)) '@tiptap/core': specifier: ^3.31.3 version: 3.31.3(@tiptap/pm@3.31.3) @@ -238,7 +238,7 @@ importers: version: 3.31.3 '@tiptap/vue-3': specifier: ^3.31.3 - version: 3.31.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.31.3(@tiptap/pm@3.31.3))(@tiptap/pm@3.31.3)(vue@3.5.30(typescript@5.9.3)) + version: 3.31.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.31.3(@tiptap/pm@3.31.3))(@tiptap/pm@3.31.3)(vue@3.5.43(typescript@5.9.3)) '@vueuse/core': specifier: ^12.8.2 version: 12.8.2(typescript@5.9.3) @@ -253,10 +253,10 @@ importers: version: 3.0.0(vite@8.2.2(@types/node@22.19.15)(jiti@2.6.1)) lucide-vue-next: specifier: ^0.468.0 - version: 0.468.0(vue@3.5.30(typescript@5.9.3)) + version: 0.468.0(vue@3.5.43(typescript@5.9.3)) reka-ui: specifier: ^2.6.1 - version: 2.9.2(vue@3.5.30(typescript@5.9.3)) + version: 2.9.2(vue@3.5.43(typescript@5.9.3)) tailwind-merge: specifier: ^3.2.0 version: 3.5.0 @@ -267,11 +267,11 @@ importers: specifier: ^1.2.5 version: 1.4.0 vue: - specifier: ^3.5.13 - version: 3.5.30(typescript@5.9.3) + specifier: ^3.5.43 + version: 3.5.43(typescript@5.9.3) vue-input-otp: specifier: ^0.3.2 - version: 0.3.2(typescript@5.9.3)(vue@3.5.30(typescript@5.9.3)) + version: 0.3.2(typescript@5.9.3)(vue@3.5.43(typescript@5.9.3)) devDependencies: '@eslint/js': specifier: ^9.39.4 @@ -296,7 +296,7 @@ importers: version: 8.58.1(eslint@9.39.4(jiti@2.6.1)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3) '@vitejs/plugin-vue': specifier: ^6.0.0 - version: 6.0.5(vite@8.2.2(@types/node@22.19.15)(jiti@2.6.1))(vue@3.5.30(typescript@5.9.3)) + version: 6.0.5(vite@8.2.2(@types/node@22.19.15)(jiti@2.6.1))(vue@3.5.43(typescript@5.9.3)) '@vue/eslint-config-typescript': specifier: ^14.3.0 version: 14.7.0(eslint-plugin-vue@9.33.0(eslint@9.39.4(jiti@2.6.1)(supports-color@8.1.1))(supports-color@8.1.1))(eslint@9.39.4(jiti@2.6.1)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3) @@ -373,36 +373,19 @@ importers: packages: - '@babel/helper-string-parser@7.27.1': - resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} - engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.29.7': resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.28.5': - resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} - engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.29.7': resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} engines: {node: '>=6.9.0'} - '@babel/parser@7.29.2': - resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==} - engines: {node: '>=6.0.0'} - hasBin: true - '@babel/parser@7.29.9': resolution: {integrity: sha512-CjXrNHTnvqBVqHgdBysY3vk2T8tpJHb5/RMeHJBTyVa9xgugCB0CJTx/3oO8RV2QRQP391RWpB7D6hLjm8V9uA==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/types@7.29.0': - resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} - engines: {node: '>=6.9.0'} - '@babel/types@7.29.8': resolution: {integrity: sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==} engines: {node: '>=6.9.0'} @@ -1129,23 +1112,14 @@ packages: typescript: optional: true - '@vue/compiler-core@3.5.30': - resolution: {integrity: sha512-s3DfdZkcu/qExZ+td75015ljzHc6vE+30cFMGRPROYjqkroYI5NV2X1yAMX9UeyBNWB9MxCfPcsjpLS11nzkkw==} - '@vue/compiler-core@3.5.43': resolution: {integrity: sha512-zdiLhnbe1QQqgDT8xZMpNmyqZ3qlI+/Q/FHQco57Kwl/b05HhCzN6eVGN9QU9rbga4CrS0H5SYY8VGHZCt/1Hg==} - '@vue/compiler-dom@3.5.30': - resolution: {integrity: sha512-eCFYESUEVYHhiMuK4SQTldO3RYxyMR/UQL4KdGD1Yrkfdx4m/HYuZ9jSfPdA+nWJY34VWndiYdW/wZXyiPEB9g==} - '@vue/compiler-dom@3.5.43': resolution: {integrity: sha512-PEZoAk3NQmsn/ejMzSOCyTYqwGqczrWm70PuhBKjjv1+TCoQAaO/zOqNwjV+honlNstT5ILxtc+8r8UUfj+iEQ==} - '@vue/compiler-sfc@3.5.30': - resolution: {integrity: sha512-LqmFPDn89dtU9vI3wHJnwaV6GfTRD87AjWpTWpyrdVOObVtjIuSeZr181z5C4PmVx/V3j2p+0f7edFKGRMpQ5A==} - - '@vue/compiler-ssr@3.5.30': - resolution: {integrity: sha512-NsYK6OMTnx109PSL2IAyf62JP6EUdk4Dmj6AkWcJGBvN0dQoMYtVekAmdqgTtWQgEJo+Okstbf/1p7qZr5H+bA==} + '@vue/compiler-sfc@3.5.43': + resolution: {integrity: sha512-FCbrG3XNCRl+js3huuKx4IVHBLTvMkJhVepjbxSPu1gn4yWLaYtGNQdjJGZaMytXB6qb76qQDDmDSLy/vkmleQ==} '@vue/compiler-ssr@3.5.43': resolution: {integrity: sha512-GF62orf7KiJX9RqrHNGrYBudsQGD0OhJ5nDs90O8UiDuS40+YMYomiXu6w6EuvtXuRDc3MSNis3EaaSKAVSWpg==} @@ -1172,30 +1146,18 @@ packages: typescript: optional: true - '@vue/reactivity@3.5.30': - resolution: {integrity: sha512-179YNgKATuwj9gB+66snskRDOitDiuOZqkYia7mHKJaidOMo/WJxHKF8DuGc4V4XbYTJANlfEKb0yxTQotnx4Q==} - '@vue/reactivity@3.5.43': resolution: {integrity: sha512-G/c9GyOZNI2jVaaS6OX1EF1SSFSv7H0ERqNTl4+DTFMlZmB5eVAB53aLQNam/7NL2NPtaDD7RdVrzf8uJzMuOA==} - '@vue/runtime-core@3.5.30': - resolution: {integrity: sha512-e0Z+8PQsUTdwV8TtEsLzUM7SzC7lQwYKePydb7K2ZnmS6jjND+WJXkmmfh/swYzRyfP1EY3fpdesyYoymCzYfg==} - '@vue/runtime-core@3.5.43': resolution: {integrity: sha512-hU6U6VnVhBGQDpvlnnDlIB8ZGJBiOcgk2lh/0InltHiz3D8oSkluvuvY+do1G2H3+udeKFsmaBlgVYP7gXQzEw==} - '@vue/runtime-dom@3.5.30': - resolution: {integrity: sha512-2UIGakjU4WSQ0T4iwDEW0W7vQj6n7AFn7taqZ9Cvm0Q/RA2FFOziLESrDL4GmtI1wV3jXg5nMoJSYO66egDUBw==} - '@vue/runtime-dom@3.5.43': resolution: {integrity: sha512-Bb2Jc0YjjJdMt1SJmb9b2L/IWd3I8lIT9x9eS/xvvP9CiVgna0ffua74xKRmt4/uSJ+0r4iN8ex1jrqkhQGWQw==} '@vue/server-renderer@3.5.43': resolution: {integrity: sha512-l2Ygjv9NehV94PSBxNWsAHC0j/eIIKbn92mBuWXAPGLnn6HfJ6MH5ubsd+Nk0YoZ5FRuxWI1P2VSoh+dbPQhCQ==} - '@vue/shared@3.5.30': - resolution: {integrity: sha512-YXgQ7JjaO18NeK2K9VTbDHaFy62WrObMa6XERNfNOkAhD1F1oDSf3ZJ7K6GqabZ0BvSDHajp8qfS5Sa2I9n8uQ==} - '@vue/shared@3.5.43': resolution: {integrity: sha512-uksS7YGMR5NZyr4JNq0Rp+QyLns0ueaz20KwzIPW9R0LH1Vnt4E+XUM29PNseEbf1www2gOuhuDi5AKOIXag9Q==} @@ -2205,6 +2167,11 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + nanoid@3.3.20: + resolution: {integrity: sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + napi-postinstall@0.3.4: resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} @@ -2303,6 +2270,10 @@ packages: resolution: {integrity: sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==} engines: {node: ^10 || ^12 || >=14} + postcss@8.5.29: + resolution: {integrity: sha512-49cGhUbXj8Qenv0iTMxA1cFBzxXoctpC9Ujd77t1WcbJIr6nF/eI7g/8MgxrYldFRuAXvja7xQRwavoW7kgrxQ==} + engines: {node: ^10 || ^12 || >=14} + prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -2767,8 +2738,8 @@ packages: peerDependencies: typescript: '>=5.0.0' - vue@3.5.30: - resolution: {integrity: sha512-hTHLc6VNZyzzEH/l7PFGjpcTvUgiaPK5mdLkbjrTeWSRcEfxFrv56g/XckIYlE9ckuobsdwqd5mk2g1sBkMewg==} + vue@3.5.43: + resolution: {integrity: sha512-o5qZoksdnjIKvW1srZ3ab7pcDNYAerBjRe54D0LBLfRdCYFrSgBHVXokMas35czQc0//lmx4/tuY4ZNQ+Rf2Ng==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -2829,27 +2800,14 @@ packages: snapshots: - '@babel/helper-string-parser@7.27.1': {} - '@babel/helper-string-parser@7.29.7': {} - '@babel/helper-validator-identifier@7.28.5': {} - '@babel/helper-validator-identifier@7.29.7': {} - '@babel/parser@7.29.2': - dependencies: - '@babel/types': 7.29.0 - '@babel/parser@7.29.9': dependencies: '@babel/types': 7.29.8 - '@babel/types@7.29.0': - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.28.5 - '@babel/types@7.29.8': dependencies: '@babel/helper-string-parser': 7.29.7 @@ -2928,11 +2886,11 @@ snapshots: '@floating-ui/utils@0.2.11': {} - '@floating-ui/vue@1.1.11(vue@3.5.30(typescript@5.9.3))': + '@floating-ui/vue@1.1.11(vue@3.5.43(typescript@5.9.3))': dependencies: '@floating-ui/dom': 1.7.6 '@floating-ui/utils': 0.2.11 - vue-demi: 0.14.10(vue@3.5.30(typescript@5.9.3)) + vue-demi: 0.14.10(vue@3.5.43(typescript@5.9.3)) transitivePeerDependencies: - '@vue/composition-api' - vue @@ -2964,13 +2922,13 @@ snapshots: - debug - supports-color - '@inertiajs/vue3@2.3.18(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(vue@3.5.30(typescript@5.9.3))': + '@inertiajs/vue3@2.3.18(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(vue@3.5.43(typescript@5.9.3))': dependencies: '@inertiajs/core': 2.3.18(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1) '@types/lodash-es': 4.17.12 laravel-precognition: 1.0.2(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1) lodash-es: 4.18.1 - vue: 3.5.30(typescript@5.9.3) + vue: 3.5.43(typescript@5.9.3) transitivePeerDependencies: - debug - supports-color @@ -3168,10 +3126,10 @@ snapshots: '@tanstack/virtual-core@3.13.23': {} - '@tanstack/vue-virtual@3.13.23(vue@3.5.30(typescript@5.9.3))': + '@tanstack/vue-virtual@3.13.23(vue@3.5.43(typescript@5.9.3))': dependencies: '@tanstack/virtual-core': 3.13.23 - vue: 3.5.30(typescript@5.9.3) + vue: 3.5.43(typescript@5.9.3) '@tiptap/core@3.31.3(@tiptap/pm@3.31.3)': dependencies: @@ -3335,12 +3293,12 @@ snapshots: '@tiptap/extensions': 3.31.3(@tiptap/core@3.31.3(@tiptap/pm@3.31.3))(@tiptap/pm@3.31.3) '@tiptap/pm': 3.31.3 - '@tiptap/vue-3@3.31.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.31.3(@tiptap/pm@3.31.3))(@tiptap/pm@3.31.3)(vue@3.5.30(typescript@5.9.3))': + '@tiptap/vue-3@3.31.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.31.3(@tiptap/pm@3.31.3))(@tiptap/pm@3.31.3)(vue@3.5.43(typescript@5.9.3))': dependencies: '@floating-ui/dom': 1.7.6 '@tiptap/core': 3.31.3(@tiptap/pm@3.31.3) '@tiptap/pm': 3.31.3 - vue: 3.5.30(typescript@5.9.3) + vue: 3.5.43(typescript@5.9.3) optionalDependencies: '@tiptap/extension-bubble-menu': 3.31.3(@tiptap/core@3.31.3(@tiptap/pm@3.31.3))(@tiptap/pm@3.31.3) '@tiptap/extension-floating-menu': 3.31.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.31.3(@tiptap/pm@3.31.3))(@tiptap/pm@3.31.3) @@ -3518,11 +3476,11 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.11.1': optional: true - '@vitejs/plugin-vue@6.0.5(vite@8.2.2(@types/node@22.19.15)(jiti@2.6.1))(vue@3.5.30(typescript@5.9.3))': + '@vitejs/plugin-vue@6.0.5(vite@8.2.2(@types/node@22.19.15)(jiti@2.6.1))(vue@3.5.43(typescript@5.9.3))': dependencies: '@rolldown/pluginutils': 1.0.0-rc.2 vite: 8.2.2(@types/node@22.19.15)(jiti@2.6.1) - vue: 3.5.30(typescript@5.9.3) + vue: 3.5.43(typescript@5.9.3) '@volar/language-core@2.4.15': dependencies: @@ -3538,14 +3496,6 @@ snapshots: optionalDependencies: typescript: 5.9.3 - '@vue/compiler-core@3.5.30': - dependencies: - '@babel/parser': 7.29.2 - '@vue/shared': 3.5.30 - entities: 7.0.1 - estree-walker: 2.0.2 - source-map-js: 1.2.2 - '@vue/compiler-core@3.5.43': dependencies: '@babel/parser': 7.29.9 @@ -3554,33 +3504,23 @@ snapshots: estree-walker: 2.0.2 source-map-js: 1.2.2 - '@vue/compiler-dom@3.5.30': - dependencies: - '@vue/compiler-core': 3.5.30 - '@vue/shared': 3.5.30 - '@vue/compiler-dom@3.5.43': dependencies: '@vue/compiler-core': 3.5.43 '@vue/shared': 3.5.43 - '@vue/compiler-sfc@3.5.30': + '@vue/compiler-sfc@3.5.43': dependencies: - '@babel/parser': 7.29.2 - '@vue/compiler-core': 3.5.30 - '@vue/compiler-dom': 3.5.30 - '@vue/compiler-ssr': 3.5.30 - '@vue/shared': 3.5.30 + '@babel/parser': 7.29.9 + '@vue/compiler-core': 3.5.43 + '@vue/compiler-dom': 3.5.43 + '@vue/compiler-ssr': 3.5.43 + '@vue/shared': 3.5.43 estree-walker: 2.0.2 magic-string: 0.30.21 - postcss: 8.5.26 + postcss: 8.5.29 source-map-js: 1.2.2 - '@vue/compiler-ssr@3.5.30': - dependencies: - '@vue/compiler-dom': 3.5.30 - '@vue/shared': 3.5.30 - '@vue/compiler-ssr@3.5.43': dependencies: '@vue/compiler-dom': 3.5.43 @@ -3607,9 +3547,9 @@ snapshots: '@vue/language-core@2.2.12(typescript@5.9.3)': dependencies: '@volar/language-core': 2.4.15 - '@vue/compiler-dom': 3.5.30 + '@vue/compiler-dom': 3.5.43 '@vue/compiler-vue2': 2.7.16 - '@vue/shared': 3.5.30 + '@vue/shared': 3.5.43 alien-signals: 1.0.13 minimatch: 9.0.9 muggle-string: 0.4.1 @@ -3617,31 +3557,15 @@ snapshots: optionalDependencies: typescript: 5.9.3 - '@vue/reactivity@3.5.30': - dependencies: - '@vue/shared': 3.5.30 - '@vue/reactivity@3.5.43': dependencies: '@vue/shared': 3.5.43 - '@vue/runtime-core@3.5.30': - dependencies: - '@vue/reactivity': 3.5.30 - '@vue/shared': 3.5.30 - '@vue/runtime-core@3.5.43': dependencies: '@vue/reactivity': 3.5.43 '@vue/shared': 3.5.43 - '@vue/runtime-dom@3.5.30': - dependencies: - '@vue/reactivity': 3.5.30 - '@vue/runtime-core': 3.5.30 - '@vue/shared': 3.5.30 - csstype: 3.2.3 - '@vue/runtime-dom@3.5.43': dependencies: '@vue/reactivity': 3.5.43 @@ -3655,8 +3579,6 @@ snapshots: '@vue/runtime-dom': 3.5.43 '@vue/shared': 3.5.43 - '@vue/shared@3.5.30': {} - '@vue/shared@3.5.43': {} '@vueuse/core@12.8.2(typescript@5.9.3)': @@ -3664,16 +3586,16 @@ snapshots: '@types/web-bluetooth': 0.0.21 '@vueuse/metadata': 12.8.2 '@vueuse/shared': 12.8.2(typescript@5.9.3) - vue: 3.5.30(typescript@5.9.3) + vue: 3.5.43(typescript@5.9.3) transitivePeerDependencies: - typescript - '@vueuse/core@14.2.1(vue@3.5.30(typescript@5.9.3))': + '@vueuse/core@14.2.1(vue@3.5.43(typescript@5.9.3))': dependencies: '@types/web-bluetooth': 0.0.21 '@vueuse/metadata': 14.2.1 - '@vueuse/shared': 14.2.1(vue@3.5.30(typescript@5.9.3)) - vue: 3.5.30(typescript@5.9.3) + '@vueuse/shared': 14.2.1(vue@3.5.43(typescript@5.9.3)) + vue: 3.5.43(typescript@5.9.3) '@vueuse/metadata@12.8.2': {} @@ -3681,13 +3603,13 @@ snapshots: '@vueuse/shared@12.8.2(typescript@5.9.3)': dependencies: - vue: 3.5.30(typescript@5.9.3) + vue: 3.5.43(typescript@5.9.3) transitivePeerDependencies: - typescript - '@vueuse/shared@14.2.1(vue@3.5.30(typescript@5.9.3))': + '@vueuse/shared@14.2.1(vue@3.5.43(typescript@5.9.3))': dependencies: - vue: 3.5.30(typescript@5.9.3) + vue: 3.5.43(typescript@5.9.3) acorn-jsx@5.3.2(acorn@8.16.0): dependencies: @@ -4676,9 +4598,9 @@ snapshots: lodash@4.18.1: {} - lucide-vue-next@0.468.0(vue@3.5.30(typescript@5.9.3)): + lucide-vue-next@0.468.0(vue@3.5.43(typescript@5.9.3)): dependencies: - vue: 3.5.30(typescript@5.9.3) + vue: 3.5.43(typescript@5.9.3) magic-string@0.30.21: dependencies: @@ -4721,6 +4643,8 @@ snapshots: nanoid@3.3.18: {} + nanoid@3.3.20: {} + napi-postinstall@0.3.4: {} natural-compare@1.4.0: {} @@ -4820,6 +4744,12 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.2 + postcss@8.5.29: + dependencies: + nanoid: 3.3.20 + picocolors: 1.1.1 + source-map-js: 1.2.2 + prelude-ls@1.2.1: {} prettier-linter-helpers@1.0.1: @@ -4937,19 +4867,19 @@ snapshots: gopd: 1.2.0 set-function-name: 2.0.2 - reka-ui@2.9.2(vue@3.5.30(typescript@5.9.3)): + reka-ui@2.9.2(vue@3.5.43(typescript@5.9.3)): dependencies: '@floating-ui/dom': 1.7.6 - '@floating-ui/vue': 1.1.11(vue@3.5.30(typescript@5.9.3)) + '@floating-ui/vue': 1.1.11(vue@3.5.43(typescript@5.9.3)) '@internationalized/date': 3.12.0 '@internationalized/number': 3.6.5 - '@tanstack/vue-virtual': 3.13.23(vue@3.5.30(typescript@5.9.3)) - '@vueuse/core': 14.2.1(vue@3.5.30(typescript@5.9.3)) - '@vueuse/shared': 14.2.1(vue@3.5.30(typescript@5.9.3)) + '@tanstack/vue-virtual': 3.13.23(vue@3.5.43(typescript@5.9.3)) + '@vueuse/core': 14.2.1(vue@3.5.43(typescript@5.9.3)) + '@vueuse/shared': 14.2.1(vue@3.5.43(typescript@5.9.3)) aria-hidden: 1.2.6 defu: 6.1.7 ohash: 2.0.11 - vue: 3.5.30(typescript@5.9.3) + vue: 3.5.43(typescript@5.9.3) transitivePeerDependencies: - '@vue/composition-api' @@ -5281,9 +5211,9 @@ snapshots: vscode-uri@3.1.0: {} - vue-demi@0.14.10(vue@3.5.30(typescript@5.9.3)): + vue-demi@0.14.10(vue@3.5.43(typescript@5.9.3)): dependencies: - vue: 3.5.30(typescript@5.9.3) + vue: 3.5.43(typescript@5.9.3) vue-eslint-parser@10.4.0(eslint@9.39.4(jiti@2.6.1)(supports-color@8.1.1))(supports-color@8.1.1): dependencies: @@ -5310,11 +5240,11 @@ snapshots: transitivePeerDependencies: - supports-color - vue-input-otp@0.3.2(typescript@5.9.3)(vue@3.5.30(typescript@5.9.3)): + vue-input-otp@0.3.2(typescript@5.9.3)(vue@3.5.43(typescript@5.9.3)): dependencies: '@vueuse/core': 12.8.2(typescript@5.9.3) - reka-ui: 2.9.2(vue@3.5.30(typescript@5.9.3)) - vue: 3.5.30(typescript@5.9.3) + reka-ui: 2.9.2(vue@3.5.43(typescript@5.9.3)) + vue: 3.5.43(typescript@5.9.3) transitivePeerDependencies: - '@vue/composition-api' - typescript @@ -5325,13 +5255,13 @@ snapshots: '@vue/language-core': 2.2.12(typescript@5.9.3) typescript: 5.9.3 - vue@3.5.30(typescript@5.9.3): + vue@3.5.43(typescript@5.9.3): dependencies: - '@vue/compiler-dom': 3.5.30 - '@vue/compiler-sfc': 3.5.30 - '@vue/runtime-dom': 3.5.30 + '@vue/compiler-dom': 3.5.43 + '@vue/compiler-sfc': 3.5.43 + '@vue/runtime-dom': 3.5.43 '@vue/server-renderer': 3.5.43 - '@vue/shared': 3.5.30 + '@vue/shared': 3.5.43 optionalDependencies: typescript: 5.9.3 -- 2.54.0