diff --git a/ai b/ai index eb7800f5f..4bfb2b6ac 160000 --- a/ai +++ b/ai @@ -1 +1 @@ -Subproject commit eb7800f5f7f0481769c2a946078c05d23b609ef5 +Subproject commit 4bfb2b6ace3de7ae9db9ec1840da2d91e06f44da diff --git a/bun.lock b/bun.lock index 6caefd47d..1846c3ae7 100644 --- a/bun.lock +++ b/bun.lock @@ -1,5 +1,6 @@ { "lockfileVersion": 1, + "configVersion": 0, "workspaces": { "": { "name": "autumn", @@ -481,26 +482,12 @@ "dependencies": { "@ai-sdk/react": "^3.0.25", "@autumn/shared": "workspace:*", + "@base-ui/react": "^1.4.1", "@better-auth/dash": "catalog:", "@fortawesome/free-brands-svg-icons": "^6.7.2", "@fortawesome/react-fontawesome": "^0.2.2", "@monaco-editor/react": "^4.7.0", "@phosphor-icons/react": "^2.1.10", - "@radix-ui/react-accordion": "^1.2.11", - "@radix-ui/react-checkbox": "^1.1.4", - "@radix-ui/react-dialog": "^1.1.15", - "@radix-ui/react-dropdown-menu": "^2.1.16", - "@radix-ui/react-hover-card": "^1.1.15", - "@radix-ui/react-label": "^2.1.8", - "@radix-ui/react-popover": "^1.1.14", - "@radix-ui/react-radio-group": "^1.3.8", - "@radix-ui/react-scroll-area": "^1.2.10", - "@radix-ui/react-select": "^2.2.6", - "@radix-ui/react-separator": "^1.1.8", - "@radix-ui/react-slot": "^1.2.4", - "@radix-ui/react-switch": "^1.2.5", - "@radix-ui/react-tabs": "^1.1.3", - "@radix-ui/react-tooltip": "^1.2.8", "@sentry/react": "^10.25.0", "@sentry/vite-plugin": "^4.6.0", "@squircle/core": "^1.0.6", @@ -536,6 +523,7 @@ "react": "^18.2.0", "react-day-picker": "^8.10.1", "react-dom": "^18.2.0", + "react-grab": "^0.1.29", "react-hotkeys-hook": "^4.6.1", "react-router": "^7.3.0", "react-router-dom": "^7.6.2", @@ -1679,7 +1667,7 @@ "@radix-ui/react-id": ["@radix-ui/react-id@1.1.1", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg=="], - "@radix-ui/react-label": ["@radix-ui/react-label@2.1.8", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-FmXs37I6hSBVDlO4y764TNz1rLgKwjJMQ0EGte6F3Cb3f4bIuHB/iLa/8I9VKkmOy+gNHq8rql3j686ACVV21A=="], + "@radix-ui/react-label": ["@radix-ui/react-label@2.1.7", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-YT1GqPSL8kJn20djelMX7/cTRp/Y9w5IZHvfxQTVHrOqa2yMl7i/UfMqKRU5V7mEyKTrUVgJXhNQPVCG8PBLoQ=="], "@radix-ui/react-menu": ["@radix-ui/react-menu@2.1.16", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-focus-guards": "1.1.3", "@radix-ui/react-focus-scope": "1.1.7", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-popper": "1.2.8", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-roving-focus": "1.1.11", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-callback-ref": "1.1.1", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg=="], @@ -1699,7 +1687,7 @@ "@radix-ui/react-presence": ["@radix-ui/react-presence@1.1.5", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ=="], - "@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], + "@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.4", "", { "dependencies": { "@radix-ui/react-slot": "1.2.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg=="], "@radix-ui/react-progress": ["@radix-ui/react-progress@1.1.7", "", { "dependencies": { "@radix-ui/react-context": "1.1.2", "@radix-ui/react-primitive": "2.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-vPdg/tF6YC/ynuBIJlk1mm7Le0VgW6ub6J2UWnTQ7/D23KXcPI1qy+0vBkgKgd38RCMJavBXpB83HPNFMTb0Fg=="], @@ -1711,11 +1699,11 @@ "@radix-ui/react-select": ["@radix-ui/react-select@2.2.6", "", { "dependencies": { "@radix-ui/number": "1.1.1", "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-focus-guards": "1.1.3", "@radix-ui/react-focus-scope": "1.1.7", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-popper": "1.2.8", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-use-previous": "1.1.1", "@radix-ui/react-visually-hidden": "1.2.3", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ=="], - "@radix-ui/react-separator": ["@radix-ui/react-separator@1.1.8", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-sDvqVY4itsKwwSMEe0jtKgfTh+72Sy3gPmQpjqcQneqQ4PFmr/1I0YA+2/puilhggCe2gJcx5EBAYFkWkdpa5g=="], + "@radix-ui/react-separator": ["@radix-ui/react-separator@1.1.7", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-0HEb8R9E8A+jZjvmFCy/J4xhbXy3TV+9XSnGJ3KvTtjlIUy/YQ/p6UYZvi7YbeoeXdyU9+Y3scizK6hkY37baA=="], "@radix-ui/react-slider": ["@radix-ui/react-slider@1.3.6", "", { "dependencies": { "@radix-ui/number": "1.1.1", "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-use-previous": "1.1.1", "@radix-ui/react-use-size": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-JPYb1GuM1bxfjMRlNLE+BcmBC8onfCi60Blk7OBqi2MLTFdS+8401U4uFjnwkOr49BLmXxLC6JHkvAsx5OJvHw=="], - "@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.4", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA=="], + "@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], "@radix-ui/react-switch": ["@radix-ui/react-switch@1.2.6", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-previous": "1.1.1", "@radix-ui/react-use-size": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-bByzr1+ep1zk4VubeEVViV592vu2lHE2BZY5OnzehZqOOgogN80+mNtCqPkhn2gklJqOpxWgPoYTSnhBCqpOXQ=="], @@ -1795,6 +1783,8 @@ "@react-email/text": ["@react-email/text@0.1.5", "", { "peerDependencies": { "react": "^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-o5PNHFSE085VMXayxH+SJ1LSOtGsTv+RpNKnTiJDrJUwoBu77G3PlKOsZZQHCNyD28WsQpl9v2WcJLbQudqwPg=="], + "@react-grab/cli": ["@react-grab/cli@0.1.33", "", { "dependencies": { "@antfu/ni": "^30.1.0", "commander": "^14.0.3", "ignore": "^7.0.5", "jsonc-parser": "^3.3.1", "ora": "^9.4.0", "picocolors": "^1.1.1", "prompts": "^2.4.2", "smol-toml": "^1.6.1" }, "bin": { "react-grab": "bin/cli.js" } }, "sha512-UOc3PwN11Osw0NzaxRLK8trP4X+5iW1Dst3gvHRCafe3wXHyadzHYH8H1hdkcXdlIx3gsoD9ASJ+G/JH+A/jqA=="], + "@reduxjs/toolkit": ["@reduxjs/toolkit@2.11.2", "", { "dependencies": { "@standard-schema/spec": "^1.0.0", "@standard-schema/utils": "^0.3.0", "immer": "^11.0.0", "redux": "^5.0.1", "redux-thunk": "^3.1.0", "reselect": "^5.1.0" }, "peerDependencies": { "react": "^16.9.0 || ^17.0.0 || ^18 || ^19", "react-redux": "^7.2.1 || ^8.1.3 || ^9.0.0" }, "optionalPeers": ["react", "react-redux"] }, "sha512-Kd6kAHTA6/nUpp8mySPqj3en3dm0tdMIgbttnQ1xFMVpufoj+ADi8pXLBsd4xzTRHQa7t/Jv8W5UnCuW4kuWMQ=="], "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-rc.3", "", {}, "sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q=="], @@ -2759,6 +2749,8 @@ "bintrees": ["bintrees@1.0.2", "", {}, "sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw=="], + "bippy": ["bippy@0.5.39", "", { "peerDependencies": { "react": ">=17.0.1" } }, "sha512-8hE8rKSl8JWyeaY+JjpnmceWAZPpLEyzOZQpWXM5Rc7861c5WotMJHy2aRZKZrGA8nMpvLNF01t4yQQ+HcZG3w=="], + "bl": ["bl@4.1.0", "", { "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", "readable-stream": "^3.4.0" } }, "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w=="], "blueimp-md5": ["blueimp-md5@2.19.0", "", {}, "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w=="], @@ -4055,7 +4047,7 @@ "json5": ["json5@2.2.3", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="], - "jsonc-parser": ["jsonc-parser@2.2.1", "", {}, "sha512-o6/yDBYccGvTz1+QFevz6l6OBZ2+fMVu2JZ9CIhzsYRX4mjaK5IyX9eldUdCmga16zlgQxyrj5pt9kzuj2C02w=="], + "jsonc-parser": ["jsonc-parser@3.3.1", "", {}, "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ=="], "jsonc-simple-parser": ["jsonc-simple-parser@3.0.0", "", { "dependencies": { "reghex": "^3.0.2" } }, "sha512-0qi9Kuj4JPar4/3b9wZteuPZrTeFzXsQyOZj7hksnReCZN3Vr17Doz7w/i3E9XH7vRkVTHhHES+r1h97I+hfww=="], @@ -4861,6 +4853,8 @@ "react-email": ["react-email@4.0.16", "", { "dependencies": { "@babel/parser": "^7.27.0", "@babel/traverse": "^7.27.0", "chalk": "^5.0.0", "chokidar": "^4.0.3", "commander": "^13.0.0", "debounce": "^2.0.0", "esbuild": "^0.25.0", "glob": "^11.0.0", "log-symbols": "^7.0.0", "mime-types": "^3.0.0", "next": "^15.3.1", "normalize-path": "^3.0.0", "ora": "^8.0.0", "socket.io": "^4.8.1" }, "bin": { "email": "dist/cli/index.mjs" } }, "sha512-auhFU+nQxAkKkP6lQhPyGsa9exwfUEzp2BwZnjHokCwphZlg30tu4t1LgdKRwGPYsi7XNGy6asbVLAUhOVpzzg=="], + "react-grab": ["react-grab@0.1.33", "", { "dependencies": { "@react-grab/cli": "0.1.33", "bippy": "^0.5.39" }, "peerDependencies": { "react": ">=17.0.0" }, "optionalPeers": ["react"], "bin": { "react-grab": "bin/cli.js" } }, "sha512-ER919JMsE4TTrb2CpEivqsIjNMSycD4HtS8v7mS3pq67U7WL1K3+C8m9AYOwW4dpuYh+EanC2eJBmfuczHJZ0A=="], + "react-hotkeys-hook": ["react-hotkeys-hook@4.6.2", "", { "peerDependencies": { "react": ">=16.8.1", "react-dom": ">=16.8.1" } }, "sha512-FmP+ZriY3EG59Ug/lxNfrObCnW9xQShgk7Nb83+CkpfkcCpfS95ydv+E9JuXA5cp8KtskU7LGlIARpkc92X22Q=="], "react-is": ["react-is@16.13.1", "", {}, "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="], @@ -6341,29 +6335,91 @@ "@prisma/instrumentation/@opentelemetry/instrumentation": ["@opentelemetry/instrumentation@0.207.0", "", { "dependencies": { "@opentelemetry/api-logs": "0.207.0", "import-in-the-middle": "^2.0.0", "require-in-the-middle": "^8.0.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-y6eeli9+TLKnznrR8AZlQMSJT7wILpXH+6EYq5Vf/4Ao+huI7EedxQHwRgVUOMLFbe7VFDvHJrX9/f4lcwnJsA=="], - "@radix-ui/react-alert-dialog/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], + "@radix-ui/react-accordion/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], - "@radix-ui/react-collection/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], + "@radix-ui/react-alert-dialog/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], - "@radix-ui/react-dialog/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], + "@radix-ui/react-arrow/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], - "@radix-ui/react-form/@radix-ui/react-label": ["@radix-ui/react-label@2.1.7", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-YT1GqPSL8kJn20djelMX7/cTRp/Y9w5IZHvfxQTVHrOqa2yMl7i/UfMqKRU5V7mEyKTrUVgJXhNQPVCG8PBLoQ=="], + "@radix-ui/react-aspect-ratio/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], - "@radix-ui/react-label/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.4", "", { "dependencies": { "@radix-ui/react-slot": "1.2.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg=="], + "@radix-ui/react-avatar/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], - "@radix-ui/react-menu/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], + "@radix-ui/react-checkbox/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], - "@radix-ui/react-popover/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], + "@radix-ui/react-collapsible/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], - "@radix-ui/react-primitive/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], + "@radix-ui/react-collection/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], - "@radix-ui/react-select/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], + "@radix-ui/react-context-menu/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], - "@radix-ui/react-separator/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.4", "", { "dependencies": { "@radix-ui/react-slot": "1.2.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg=="], + "@radix-ui/react-dialog/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], - "@radix-ui/react-toolbar/@radix-ui/react-separator": ["@radix-ui/react-separator@1.1.7", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-0HEb8R9E8A+jZjvmFCy/J4xhbXy3TV+9XSnGJ3KvTtjlIUy/YQ/p6UYZvi7YbeoeXdyU9+Y3scizK6hkY37baA=="], + "@radix-ui/react-dismissable-layer/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], - "@radix-ui/react-tooltip/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], + "@radix-ui/react-dropdown-menu/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], + + "@radix-ui/react-focus-scope/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], + + "@radix-ui/react-form/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], + + "@radix-ui/react-hover-card/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], + + "@radix-ui/react-label/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], + + "@radix-ui/react-menu/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], + + "@radix-ui/react-menubar/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], + + "@radix-ui/react-navigation-menu/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], + + "@radix-ui/react-one-time-password-field/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], + + "@radix-ui/react-password-toggle-field/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], + + "@radix-ui/react-popover/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], + + "@radix-ui/react-popper/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], + + "@radix-ui/react-portal/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], + + "@radix-ui/react-primitive/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.4", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA=="], + + "@radix-ui/react-progress/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], + + "@radix-ui/react-radio-group/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], + + "@radix-ui/react-roving-focus/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], + + "@radix-ui/react-scroll-area/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], + + "@radix-ui/react-select/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], + + "@radix-ui/react-separator/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], + + "@radix-ui/react-slider/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], + + "@radix-ui/react-switch/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], + + "@radix-ui/react-tabs/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], + + "@radix-ui/react-toast/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], + + "@radix-ui/react-toggle/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], + + "@radix-ui/react-toggle-group/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], + + "@radix-ui/react-toolbar/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], + + "@radix-ui/react-tooltip/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], + + "@radix-ui/react-visually-hidden/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], + + "@react-grab/cli/@antfu/ni": ["@antfu/ni@30.1.0", "", { "dependencies": { "fzf": "^0.5.2", "package-manager-detector": "^1.6.0", "tinyexec": "^1.0.4", "tinyglobby": "^0.2.15" }, "bin": { "ni": "bin/ni.mjs", "nci": "bin/nci.mjs", "nr": "bin/nr.mjs", "nup": "bin/nup.mjs", "nd": "bin/nd.mjs", "nlx": "bin/nlx.mjs", "na": "bin/na.mjs", "nun": "bin/nun.mjs" } }, "sha512-3VuAbPjgY52rQNn4wABaXMhBU2Oq91uy6L8nX49eJ35OLI68CyckGU+HZxcaHix4ymuGM2nFL1D6sLpgODK5xw=="], + + "@react-grab/cli/ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="], + + "@react-grab/cli/ora": ["ora@9.4.0", "", { "dependencies": { "chalk": "^5.6.2", "cli-cursor": "^5.0.0", "cli-spinners": "^3.2.0", "is-interactive": "^2.0.0", "is-unicode-supported": "^2.1.0", "log-symbols": "^7.0.1", "stdin-discarder": "^0.3.2", "string-width": "^8.1.0" } }, "sha512-84cglkRILFxdtA8hAvLNdMrtBpPNBTrQ9/ulg0FA7xLMnD6mifv+enAIeRmvtv+WgdCE+LPGOfQmtJRrVaIVhQ=="], "@reduxjs/toolkit/immer": ["immer@11.1.4", "", {}, "sha512-XREFCPo6ksxVzP4E0ekD5aMdf8WMwmdNaz6vuvxgI40UaEiu6q3p8X52aU6GdyvLY3XXX/8R7JOTXStz/nBbRw=="], @@ -6407,6 +6463,8 @@ "@stoplight/better-ajv-errors/leven": ["leven@3.1.0", "", {}, "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A=="], + "@stoplight/json/jsonc-parser": ["jsonc-parser@2.2.1", "", {}, "sha512-o6/yDBYccGvTz1+QFevz6l6OBZ2+fMVu2JZ9CIhzsYRX4mjaK5IyX9eldUdCmga16zlgQxyrj5pt9kzuj2C02w=="], + "@stoplight/json/safe-stable-stringify": ["safe-stable-stringify@1.1.1", "", {}, "sha512-ERq4hUjKDbJfE4+XtZLFPCDi8Vb1JqaxAPTxWFLBx8XcAlf9Bda/ZJdVezs/NAfsMQScyIlUMx+Yeu7P7rx5jw=="], "@stoplight/json-ref-readers/tslib": ["tslib@1.14.1", "", {}, "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="], @@ -6669,8 +6727,6 @@ "clone-response/mimic-response": ["mimic-response@1.0.1", "", {}, "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ=="], - "cmdk/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.4", "", { "dependencies": { "@radix-ui/react-slot": "1.2.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg=="], - "concurrently/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], "conf/ajv": ["ajv@8.20.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA=="], @@ -7037,11 +7093,7 @@ "puppeteer/puppeteer-core": ["puppeteer-core@22.14.0", "", { "dependencies": { "@puppeteer/browsers": "2.3.0", "chromium-bidi": "0.6.2", "debug": "^4.3.5", "devtools-protocol": "0.0.1312386", "ws": "^8.18.0" } }, "sha512-rl4tOY5LcA3e374GAlsGGHc05HL3eGNf5rZ+uxkl6id9zVZKcwcp1Z+Nd6byb6WPiPeecT/dwz8f/iUm+AZQSw=="], - "radix-ui/@radix-ui/react-label": ["@radix-ui/react-label@2.1.7", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-YT1GqPSL8kJn20djelMX7/cTRp/Y9w5IZHvfxQTVHrOqa2yMl7i/UfMqKRU5V7mEyKTrUVgJXhNQPVCG8PBLoQ=="], - - "radix-ui/@radix-ui/react-separator": ["@radix-ui/react-separator@1.1.7", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-0HEb8R9E8A+jZjvmFCy/J4xhbXy3TV+9XSnGJ3KvTtjlIUy/YQ/p6UYZvi7YbeoeXdyU9+Y3scizK6hkY37baA=="], - - "radix-ui/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], + "radix-ui/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], "rc/strip-json-comments": ["strip-json-comments@2.0.1", "", {}, "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ=="], @@ -7965,6 +8017,22 @@ "@prisma/instrumentation/@opentelemetry/instrumentation/require-in-the-middle": ["require-in-the-middle@8.0.1", "", { "dependencies": { "debug": "^4.3.5", "module-details-from-path": "^1.0.3" } }, "sha512-QT7FVMXfWOYFbeRBF6nu+I6tr2Tf3u0q8RIEjNob/heKY/nh7drD/k7eeMFmSQgnTtCzLDcCu/XEnpW2wk4xCQ=="], + "@react-grab/cli/@antfu/ni/tinyexec": ["tinyexec@1.1.1", "", {}, "sha512-VKS/ZaQhhkKFMANmAOhhXVoIfBXblQxGX1myCQ2faQrfmobMftXeJPcZGp0gS07ocvGJWDLZGyOZDadDBqYIJg=="], + + "@react-grab/cli/ora/cli-cursor": ["cli-cursor@5.0.0", "", { "dependencies": { "restore-cursor": "^5.0.0" } }, "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw=="], + + "@react-grab/cli/ora/cli-spinners": ["cli-spinners@3.4.0", "", {}, "sha512-bXfOC4QcT1tKXGorxL3wbJm6XJPDqEnij2gQ2m7ESQuE+/z9YFIWnl/5RpTiKWbMq3EVKR4fRLJGn6DVfu0mpw=="], + + "@react-grab/cli/ora/is-interactive": ["is-interactive@2.0.0", "", {}, "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ=="], + + "@react-grab/cli/ora/is-unicode-supported": ["is-unicode-supported@2.1.0", "", {}, "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ=="], + + "@react-grab/cli/ora/log-symbols": ["log-symbols@7.0.1", "", { "dependencies": { "is-unicode-supported": "^2.0.0", "yoctocolors": "^2.1.1" } }, "sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg=="], + + "@react-grab/cli/ora/stdin-discarder": ["stdin-discarder@0.3.2", "", {}, "sha512-eCPu1qRxPVkl5605OTWF8Wz40b4Mf45NY5LQmVPQ599knfs5QhASUm9GbJ5BDMDOXgrnh0wyEdvzmL//YMlw0A=="], + + "@react-grab/cli/ora/string-width": ["string-width@8.2.1", "", { "dependencies": { "get-east-asian-width": "^1.5.0", "strip-ansi": "^7.1.2" } }, "sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA=="], + "@sentry/cli/https-proxy-agent/agent-base": ["agent-base@6.0.2", "", { "dependencies": { "debug": "4" } }, "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ=="], "@sentry/node-core/import-in-the-middle/cjs-module-lexer": ["cjs-module-lexer@2.2.0", "", {}, "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ=="], @@ -9157,6 +9225,8 @@ "@prisma/instrumentation/@opentelemetry/instrumentation/import-in-the-middle/cjs-module-lexer": ["cjs-module-lexer@2.2.0", "", {}, "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ=="], + "@react-grab/cli/ora/cli-cursor/restore-cursor": ["restore-cursor@5.1.0", "", { "dependencies": { "onetime": "^7.0.0", "signal-exit": "^4.1.0" } }, "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA=="], + "@tailwindcss/postcss/@tailwindcss/node/lightningcss/lightningcss-android-arm64": ["lightningcss-android-arm64@1.32.0", "", { "os": "android", "cpu": "arm64" }, "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg=="], "@tailwindcss/postcss/@tailwindcss/node/lightningcss/lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.32.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ=="], @@ -9585,6 +9655,10 @@ "@mintlify/scraping/yargs/string-width/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + "@react-grab/cli/ora/cli-cursor/restore-cursor/onetime": ["onetime@7.0.0", "", { "dependencies": { "mimic-function": "^5.0.0" } }, "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ=="], + + "@react-grab/cli/ora/cli-cursor/restore-cursor/signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], + "artillery-plugin-ensure/chalk/ansi-styles/color-convert/color-name": ["color-name@1.1.3", "", {}, "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="], "artillery-plugin-publish-metrics/@opentelemetry/exporter-metrics-otlp-grpc/@opentelemetry/otlp-transformer/protobufjs/@types/node": ["@types/node@25.6.0", "", { "dependencies": { "undici-types": "~7.19.0" } }, "sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ=="], diff --git a/knip.json b/knip.json index c23fe5b83..1371dbcf1 100644 --- a/knip.json +++ b/knip.json @@ -25,6 +25,7 @@ "server": { "entry": [ "src/internal/customers/cusUtils/createNewCustomer.ts", + "src/internal/rewards/RewardRedemptionService.ts", "src/utils/importUtils/addProductFromSubs.ts", "src/utils/scriptUtils/readOnlyStripe.ts", "src/utils/scriptUtils/scriptUtils.ts", @@ -43,7 +44,7 @@ "vite": { "entry": ["tests/**/*.{ts,tsx}"], "project": ["src/**/*.{ts,tsx}", "tests/**/*.{ts,tsx}"], - "ignore": ["src/components/ai-elements/**"], + "ignore": ["src/components/ai-elements/**", "src/hooks/useControllableState.ts"], "ignoreDependencies": [ "tailwindcss", "tailwind-scrollbar-hide", diff --git a/vite/components.json b/vite/components.json index 5599e04e3..4d2990c87 100644 --- a/vite/components.json +++ b/vite/components.json @@ -1,6 +1,6 @@ { "$schema": "https://ui.shadcn.com/schema.json", - "style": "new-york", + "style": "base-nova", "rsc": false, "tsx": true, "tailwind": { diff --git a/vite/package.json b/vite/package.json index de56c2a2d..e9237ef39 100644 --- a/vite/package.json +++ b/vite/package.json @@ -21,26 +21,12 @@ "dependencies": { "@ai-sdk/react": "^3.0.25", "@autumn/shared": "workspace:*", + "@base-ui/react": "^1.4.1", "@better-auth/dash": "catalog:", "@fortawesome/free-brands-svg-icons": "^6.7.2", "@fortawesome/react-fontawesome": "^0.2.2", "@monaco-editor/react": "^4.7.0", "@phosphor-icons/react": "^2.1.10", - "@radix-ui/react-accordion": "^1.2.11", - "@radix-ui/react-checkbox": "^1.1.4", - "@radix-ui/react-dialog": "^1.1.15", - "@radix-ui/react-dropdown-menu": "^2.1.16", - "@radix-ui/react-hover-card": "^1.1.15", - "@radix-ui/react-label": "^2.1.8", - "@radix-ui/react-popover": "^1.1.14", - "@radix-ui/react-radio-group": "^1.3.8", - "@radix-ui/react-scroll-area": "^1.2.10", - "@radix-ui/react-select": "^2.2.6", - "@radix-ui/react-separator": "^1.1.8", - "@radix-ui/react-slot": "^1.2.4", - "@radix-ui/react-switch": "^1.2.5", - "@radix-ui/react-tabs": "^1.1.3", - "@radix-ui/react-tooltip": "^1.2.8", "@sentry/react": "^10.25.0", "@sentry/vite-plugin": "^4.6.0", "@squircle/core": "^1.0.6", diff --git a/vite/src/components/ai-elements/chain-of-thought.tsx b/vite/src/components/ai-elements/chain-of-thought.tsx index f2d1dca4a..091ac73ce 100644 --- a/vite/src/components/ai-elements/chain-of-thought.tsx +++ b/vite/src/components/ai-elements/chain-of-thought.tsx @@ -1,6 +1,6 @@ "use client"; -import { useControllableState } from "@radix-ui/react-use-controllable-state"; +import { useControllableState } from "@/hooks/useControllableState"; import { BrainIcon, ChevronDownIcon, @@ -58,7 +58,7 @@ export const ChainOfThought = memo( }); const chainOfThoughtContext = useMemo( - () => ({ isOpen, setIsOpen }), + () => ({ isOpen: isOpen ?? false, setIsOpen }), [isOpen, setIsOpen], ); diff --git a/vite/src/components/ai-elements/inline-citation.tsx b/vite/src/components/ai-elements/inline-citation.tsx index 8ea52296e..57f5b212c 100644 --- a/vite/src/components/ai-elements/inline-citation.tsx +++ b/vite/src/components/ai-elements/inline-citation.tsx @@ -80,7 +80,7 @@ export const InlineCitationCardTrigger = ({ ); -export type InlineCitationCardBodyProps = ComponentProps<"div">; +export type InlineCitationCardBodyProps = ComponentProps; export const InlineCitationCardBody = ({ className, diff --git a/vite/src/components/ai-elements/reasoning.tsx b/vite/src/components/ai-elements/reasoning.tsx index 55b5ebedd..55b916c42 100644 --- a/vite/src/components/ai-elements/reasoning.tsx +++ b/vite/src/components/ai-elements/reasoning.tsx @@ -1,6 +1,6 @@ "use client"; -import { useControllableState } from "@radix-ui/react-use-controllable-state"; +import { useControllableState } from "@/hooks/useControllableState"; import { BrainIcon, ChevronDownIcon } from "lucide-react"; import type { ComponentProps, ReactNode } from "react"; import { createContext, memo, useContext, useEffect, useState } from "react"; diff --git a/vite/src/components/forms/attach-v2/components/AttachFooter.tsx b/vite/src/components/forms/attach-v2/components/AttachFooter.tsx index 5676d60c2..ad7285f71 100644 --- a/vite/src/components/forms/attach-v2/components/AttachFooter.tsx +++ b/vite/src/components/forms/attach-v2/components/AttachFooter.tsx @@ -99,7 +99,7 @@ export function AttachFooter() { {!invoiceDisabledReason && ( - +
- + No currency found. diff --git a/vite/src/components/v2/selects/RoleSelect.tsx b/vite/src/components/v2/selects/RoleSelect.tsx index cef9a1456..d8503614a 100644 --- a/vite/src/components/v2/selects/RoleSelect.tsx +++ b/vite/src/components/v2/selects/RoleSelect.tsx @@ -105,7 +105,6 @@ export function RoleSelect({
diff --git a/vite/src/components/v2/selects/SearchableSelect.tsx b/vite/src/components/v2/selects/SearchableSelect.tsx index 9acd09a52..582daf4c4 100644 --- a/vite/src/components/v2/selects/SearchableSelect.tsx +++ b/vite/src/components/v2/selects/SearchableSelect.tsx @@ -116,10 +116,9 @@ export function SearchableSelect({ {open && ( ; -} | null>(null); - function Select({ onValueChange, onOpenChange, + value, + defaultValue, + items, ...props -}: React.ComponentProps) { - const triggerRef = React.useRef(null); - - const handleValueChange = (value: string) => { - onValueChange?.(value); - }; - - const handleOpenChange = (open: boolean) => { - // When dropdown closes, blur the trigger to remove focus ring - if (!open) { - setTimeout(() => { - if (triggerRef.current) { - triggerRef.current.blur(); - } else { - // Fallback: blur the active element if ref isn't set - (document.activeElement as HTMLElement)?.blur(); - } - }, 0); - } - onOpenChange?.(open); - }; - +}: Omit, "onValueChange" | "onOpenChange"> & { + onValueChange?: (value: string) => void; + onOpenChange?: (open: boolean) => void; + value?: string; + defaultValue?: string; + items?: Record | ReadonlyArray<{ label: string; value: string }>; +}) { + const Root = SelectPrimitive.Root; return ( - - - + onValueChange(val as string) : undefined} + onOpenChange={onOpenChange ? (open) => onOpenChange(open) : undefined} + {...props} + /> ); } function SelectGroup({ ...props -}: React.ComponentProps) { +}: SelectPrimitive.Group.Props) { return ; } function SelectValue({ ...props -}: React.ComponentProps) { +}: SelectPrimitive.Value.Props) { return ; } @@ -65,28 +51,22 @@ function SelectTrigger({ size = "default", children, ...props -}: React.ComponentProps & { +}: SelectPrimitive.Trigger.Props & { size?: "sm" | "default"; }) { - const context = React.useContext(SelectContext); - return ( {children} - + @@ -96,43 +76,36 @@ function SelectTrigger({ function SelectContent({ className, children, - position = "popper", - onEscapeKeyDown, + align = "start", + sideOffset = 4, + side = "bottom", ...props -}: React.ComponentProps) { +}: SelectPrimitive.Popup.Props & { + align?: "start" | "center" | "end"; + sideOffset?: number; + side?: "top" | "bottom" | "left" | "right"; +}) { return ( - { - // Stop propagation to prevent parent dialogs/sheets from closing - e.stopPropagation(); - onEscapeKeyDown?.(e); - }} - className={cn( - // z-[200] to appear above sheets (z-[150]) - "bg-interactive-secondary text-popover-foreground relative z-[200] max-h-(--radix-select-content-available-height) min-w-[8rem] overflow-x-hidden overflow-y-auto rounded-md border shadow-md", - - position === "popper" && - "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1", - - className, - )} - position={position} - {...props} + - - {children} - - - + + ); } @@ -140,9 +113,9 @@ function SelectContent({ function SelectLabel({ className, ...props -}: React.ComponentProps) { +}: SelectPrimitive.GroupLabel.Props) { return ( - ) { +}: SelectPrimitive.Item.Props) { return ( - {children} + {children} ); } @@ -177,52 +150,19 @@ function SelectItem({ function SelectSeparator({ className, ...props -}: React.ComponentProps) { +}: React.ComponentProps<"div">) { return ( - ); } -function SelectScrollUpButton({ - className, - ...props -}: React.ComponentProps) { - return ( - - - - ); -} - -function SelectScrollDownButton({ - className, - ...props -}: React.ComponentProps) { - return ( - - - - ); -} - export { Select, SelectContent, diff --git a/vite/src/components/v2/selects/TagSelect.tsx b/vite/src/components/v2/selects/TagSelect.tsx index 309ef615f..8c28f6bfe 100644 --- a/vite/src/components/v2/selects/TagSelect.tsx +++ b/vite/src/components/v2/selects/TagSelect.tsx @@ -97,7 +97,9 @@ export function TagSelect({ )}
- {renderContent?.(setOpen)} + + {renderContent?.(setOpen)} + ); } diff --git a/vite/src/components/v2/separator.tsx b/vite/src/components/v2/separator.tsx index 37eeeacdd..61a89e10c 100644 --- a/vite/src/components/v2/separator.tsx +++ b/vite/src/components/v2/separator.tsx @@ -1,6 +1,6 @@ "use client"; -import * as SeparatorPrimitive from "@radix-ui/react-separator"; +import { Separator as SeparatorPrimitive } from "@base-ui/react/separator"; import type * as React from "react"; import { cn } from "@/lib/utils"; @@ -10,12 +10,15 @@ function Separator({ orientation = "horizontal", decorative = true, ...props -}: React.ComponentProps) { +}: SeparatorPrimitive.Props & { + orientation?: "horizontal" | "vertical"; + decorative?: boolean; +}) { return ( - ) { +function Sheet({ ...props }: SheetPrimitive.Root.Props) { return ; } function SheetTrigger({ + asChild, + children, ...props -}: React.ComponentProps) { - return ; +}: SheetPrimitive.Trigger.Props & { asChild?: boolean }) { + if (asChild && React.isValidElement(children)) { + return ( + + ); + } + return ( + + {children} + + ); } function SheetClose({ + asChild, + children, ...props -}: React.ComponentProps) { - return ; +}: SheetPrimitive.Close.Props & { asChild?: boolean }) { + if (asChild && React.isValidElement(children)) { + return ( + + ); + } + return ( + + {children} + + ); } function SheetPortal({ container, ...props -}: React.ComponentProps & { +}: SheetPrimitive.Portal.Props & { container?: HTMLElement | null; }) { const resolvedContainer = @@ -33,7 +63,7 @@ function SheetPortal({ return ( ); @@ -42,12 +72,12 @@ function SheetPortal({ function SheetOverlay({ className, ...props -}: React.ComponentProps) { +}: SheetPrimitive.Backdrop.Props) { return ( - & { +}: SheetPrimitive.Popup.Props & { side?: "top" | "right" | "bottom" | "left"; hideCloseButton?: boolean; portalContainer?: HTMLElement | null; @@ -70,30 +107,23 @@ function SheetContent({ return ( - {children} {!hideCloseButton && ( - + Close )} - + ); } @@ -121,7 +151,7 @@ function SheetFooter({ className, ...props }: React.ComponentProps<"div">) { function SheetTitle({ className, ...props -}: React.ComponentProps) { +}: SheetPrimitive.Title.Props) { return ( ) { +}: SheetPrimitive.Description.Props) { return ( , "type">) { + Omit) { return ( <> @@ -61,7 +60,7 @@ function SheetAccordionItem({ return ( - +

{title}

{description && ( @@ -71,9 +70,9 @@ function SheetAccordionItem({ - +
{children}
-
+ ); } diff --git a/vite/src/components/v2/tooltips/Tooltip.tsx b/vite/src/components/v2/tooltips/Tooltip.tsx index ba23739fa..65a270b21 100644 --- a/vite/src/components/v2/tooltips/Tooltip.tsx +++ b/vite/src/components/v2/tooltips/Tooltip.tsx @@ -1,56 +1,84 @@ "use client"; -import * as TooltipPrimitive from "@radix-ui/react-tooltip"; -import type * as React from "react"; +import { Tooltip as TooltipPrimitive } from "@base-ui/react/tooltip"; +import * as React from "react"; import { cn } from "@/lib/utils"; function TooltipProvider({ - delayDuration = 0, + delay = 0, ...props -}: React.ComponentProps) { +}: TooltipPrimitive.Provider.Props) { return ( ); } function Tooltip({ + delayDuration, ...props -}: React.ComponentProps) { +}: TooltipPrimitive.Root.Props & { delayDuration?: number }) { return ( - + ); } function TooltipTrigger({ + asChild, + children, ...props -}: React.ComponentProps) { - return ; +}: TooltipPrimitive.Trigger.Props & { asChild?: boolean }) { + if (asChild && React.isValidElement(children)) { + return ( + + ); + } + return ( + + {children} + + ); } function TooltipContent({ className, sideOffset = 6, + side = "top", + align = "center", children, ...props -}: React.ComponentProps) { +}: TooltipPrimitive.Popup.Props & + Pick< + TooltipPrimitive.Positioner.Props, + "align" | "side" | "sideOffset" + >) { return ( - + - {children} - + className, + )} + {...props} + > + {children} + + ); } diff --git a/vite/src/hooks/useControllableState.ts b/vite/src/hooks/useControllableState.ts new file mode 100644 index 000000000..e53b7a328 --- /dev/null +++ b/vite/src/hooks/useControllableState.ts @@ -0,0 +1,37 @@ +import { useCallback, useRef, useState } from "react"; + +type UseControllableStateParams = { + prop?: T; + defaultProp?: T; + onChange?: (value: T) => void; +}; + +/** + * Manages state that can be either controlled or uncontrolled. + * Replacement for @radix-ui/react-use-controllable-state. + */ +function useControllableState({ + prop, + defaultProp, + onChange, +}: UseControllableStateParams): [T | undefined, (value: T) => void] { + const [uncontrolled, setUncontrolled] = useState(defaultProp); + const isControlled = prop !== undefined; + const value = isControlled ? prop : uncontrolled; + const onChangeRef = useRef(onChange); + onChangeRef.current = onChange; + + const setValue = useCallback( + (nextValue: T) => { + if (!isControlled) { + setUncontrolled(nextValue); + } + onChangeRef.current?.(nextValue); + }, + [isControlled], + ); + + return [value, setValue]; +} + +export { useControllableState }; diff --git a/vite/src/index.css b/vite/src/index.css index e3dd41fc2..5a051babf 100644 --- a/vite/src/index.css +++ b/vite/src/index.css @@ -368,13 +368,13 @@ html { height: 0; } to { - height: var(--radix-accordion-content-height); + height: var(--accordion-panel-height); } } @keyframes accordion-up { from { - height: var(--radix-accordion-content-height); + height: var(--accordion-panel-height); } to { height: 0; @@ -412,6 +412,7 @@ input[type="number"]::-webkit-inner-spin-button { * { @apply border-border outline-ring/50; } + body { @apply bg-background text-foreground; letter-spacing: -0.033px; diff --git a/vite/src/views/admin/components/RedisV2CacheDialog.tsx b/vite/src/views/admin/components/RedisV2CacheDialog.tsx index ddf6a6cf3..b14d3466e 100644 --- a/vite/src/views/admin/components/RedisV2CacheDialog.tsx +++ b/vite/src/views/admin/components/RedisV2CacheDialog.tsx @@ -136,10 +136,11 @@ export function RedisV2CacheDialog({
Active Instance
- setSelected(value as InstanceName)} + items={Object.fromEntries(INSTANCE_OPTIONS.map((option) => [option.value, option.label]))} + > diff --git a/vite/src/views/customers2/components/sheets/BalanceCreateSheet.tsx b/vite/src/views/customers2/components/sheets/BalanceCreateSheet.tsx index 3ed6a43e9..3f3788230 100644 --- a/vite/src/views/customers2/components/sheets/BalanceCreateSheet.tsx +++ b/vite/src/views/customers2/components/sheets/BalanceCreateSheet.tsx @@ -225,11 +225,12 @@ export function BalanceCreateSheet() {
Interval
- diff --git a/vite/src/views/customers2/components/sheets/BillingAutoTopupSheet.tsx b/vite/src/views/customers2/components/sheets/BillingAutoTopupSheet.tsx index 4838e974c..b82ae291c 100644 --- a/vite/src/views/customers2/components/sheets/BillingAutoTopupSheet.tsx +++ b/vite/src/views/customers2/components/sheets/BillingAutoTopupSheet.tsx @@ -365,10 +365,14 @@ export function BillingAutoTopupSheet() {
Interval - { + const count = Number.parseInt(purchaseLimitIntervalCount, 10); + return [value, count > 1 ? `Every ${count} ${label.toLowerCase()}s` : label]; + }))} + > diff --git a/vite/src/views/customers2/components/sheets/BillingUsageAlertSheet.tsx b/vite/src/views/customers2/components/sheets/BillingUsageAlertSheet.tsx index f11079adc..d673475b9 100644 --- a/vite/src/views/customers2/components/sheets/BillingUsageAlertSheet.tsx +++ b/vite/src/views/customers2/components/sheets/BillingUsageAlertSheet.tsx @@ -270,7 +270,7 @@ export function BillingUsageAlertSheet() {
Threshold type - diff --git a/vite/src/views/customers2/components/sheets/InvoiceDetailSheet.tsx b/vite/src/views/customers2/components/sheets/InvoiceDetailSheet.tsx index 1b4c5bd65..683e9caa8 100644 --- a/vite/src/views/customers2/components/sheets/InvoiceDetailSheet.tsx +++ b/vite/src/views/customers2/components/sheets/InvoiceDetailSheet.tsx @@ -484,7 +484,7 @@ function LineItemGroupRow({ const paidAmount = firstItem.amount_after_discounts ?? firstItem.amount; return ( - +
@@ -563,7 +563,7 @@ function TierRow({ const isRefund = item.direction === "refund"; return ( - +
{item.description} }) => { return (
- + {row.original.productNames} diff --git a/vite/src/views/customers2/components/table/customer-list/CustomerListFilterButton.tsx b/vite/src/views/customers2/components/table/customer-list/CustomerListFilterButton.tsx index c7c598215..2926ecad8 100644 --- a/vite/src/views/customers2/components/table/customer-list/CustomerListFilterButton.tsx +++ b/vite/src/views/customers2/components/table/customer-list/CustomerListFilterButton.tsx @@ -43,19 +43,17 @@ export function CustomerListFilterButton() { return ( - -
- } - > - Filter - - {hasActiveFilters && ( - - )} -
+ } nativeButton={false}> + } + > + Filter + + {hasActiveFilters && ( + + )} [size.toString(), size.toString()]))} > diff --git a/vite/src/views/customers2/components/table/customer-products/TransferProductDialog.tsx b/vite/src/views/customers2/components/table/customer-products/TransferProductDialog.tsx index 4968a421a..d3a876d54 100644 --- a/vite/src/views/customers2/components/table/customer-products/TransferProductDialog.tsx +++ b/vite/src/views/customers2/components/table/customer-products/TransferProductDialog.tsx @@ -104,7 +104,14 @@ export const TransferProductDialog = ({ : "Transfer this plan to an entity."}

- [entity.id, entity.name || entity.id || entity.internal_id])), + }} + > diff --git a/vite/src/views/customers2/customer/components/AddCouponDialog.tsx b/vite/src/views/customers2/customer/components/AddCouponDialog.tsx index c9413636c..6a22de134 100644 --- a/vite/src/views/customers2/customer/components/AddCouponDialog.tsx +++ b/vite/src/views/customers2/customer/components/AddCouponDialog.tsx @@ -113,19 +113,20 @@ export const AddCouponDialog = ({ )}
- { + const coupon = rewards.find( + (c: Reward) => c.internal_id === value, + ); - if (!coupon) return; + if (!coupon) return; - setCouponSelected(coupon); - setPromoCodeSelected(null); - }} - > + setCouponSelected(coupon); + setPromoCodeSelected(null); + }} + items={Object.fromEntries(rewards.filter((c: Reward) => c.type !== RewardType.FreeProduct).map((c: Reward) => [c.internal_id, c.name]))} + > @@ -151,10 +152,11 @@ export const AddCouponDialog = ({ {couponSelected?.type === RewardType.FeatureGrant && ( - [promoCode.code, promoCode.code]))} + > diff --git a/vite/src/views/customers2/customer/components/CreateEntity.tsx b/vite/src/views/customers2/customer/components/CreateEntity.tsx index 6d9fa2c9c..80718fd8b 100644 --- a/vite/src/views/customers2/customer/components/CreateEntity.tsx +++ b/vite/src/views/customers2/customer/components/CreateEntity.tsx @@ -131,12 +131,13 @@ export const CreateEntity = ({
Feature ID
- + setEntity({ ...entity, feature_id: value }) + } + items={Object.fromEntries(continuousFeatures.map((feature: Feature) => [feature.id, feature.name]))} + > diff --git a/vite/src/views/developer/configure-revenuecat/components/RevenueCatMappingSheet.tsx b/vite/src/views/developer/configure-revenuecat/components/RevenueCatMappingSheet.tsx index 00bb205c2..62e2f733d 100644 --- a/vite/src/views/developer/configure-revenuecat/components/RevenueCatMappingSheet.tsx +++ b/vite/src/views/developer/configure-revenuecat/components/RevenueCatMappingSheet.tsx @@ -106,14 +106,15 @@ const MappingRow = memo(function MappingRow({ an existing mapping to change assignments.
) : ( - { + if (value) { + onAddProduct(mapping.autumnProductId, value); + } + }} + items={Object.fromEntries(availableProducts.map((product) => [product.id, product.name]))} + > diff --git a/vite/src/views/developer/configure-vercel/ConfigureVercel.tsx b/vite/src/views/developer/configure-vercel/ConfigureVercel.tsx index eac3f5502..1724a2f89 100644 --- a/vite/src/views/developer/configure-vercel/ConfigureVercel.tsx +++ b/vite/src/views/developer/configure-vercel/ConfigureVercel.tsx @@ -333,7 +333,7 @@ export const ConfigureVercel = () => { }} >
- {option.label} + {option.label}
); diff --git a/vite/src/views/main-sidebar/CollapsibleNavGroup.tsx b/vite/src/views/main-sidebar/CollapsibleNavGroup.tsx index 45ebb192b..a1dffad1d 100644 --- a/vite/src/views/main-sidebar/CollapsibleNavGroup.tsx +++ b/vite/src/views/main-sidebar/CollapsibleNavGroup.tsx @@ -45,16 +45,14 @@ export const CollapsibleNavGroup = ({ if (!expanded) { return ( - -
- -
+ } nativeButton={false}> + - -
- } - title="Need help?" - onClick={() => {}} - /> -
+ } nativeButton={false}> + } + title="Need help?" + onClick={() => {}} + /> diff --git a/vite/src/views/main-sidebar/components/CreateNewOrg.tsx b/vite/src/views/main-sidebar/components/CreateNewOrg.tsx index 0648ff689..b7d613eb0 100644 --- a/vite/src/views/main-sidebar/components/CreateNewOrg.tsx +++ b/vite/src/views/main-sidebar/components/CreateNewOrg.tsx @@ -9,7 +9,6 @@ import { DialogFooter, DialogHeader, DialogTitle, - DialogTrigger, } from "@/components/v2/dialogs/Dialog"; import { Input } from "@/components/v2/inputs/Input"; import { useOrg } from "@/hooks/common/useOrg"; @@ -64,7 +63,6 @@ export const CreateNewOrg = ({ if (!open) setDialogType(null); }} > -
diff --git a/vite/src/views/main-sidebar/components/ManageOrg.tsx b/vite/src/views/main-sidebar/components/ManageOrg.tsx index 3109a3ba4..650463378 100644 --- a/vite/src/views/main-sidebar/components/ManageOrg.tsx +++ b/vite/src/views/main-sidebar/components/ManageOrg.tsx @@ -5,7 +5,6 @@ import { DialogContent, DialogHeader, DialogTitle, - DialogTrigger, } from "@/components/v2/dialogs/Dialog"; import { InvitePopover } from "../org-dropdown/manage-org/InvitePopover"; import { OrgInvitesList } from "../org-dropdown/manage-org/OrgInvitesList"; @@ -29,7 +28,6 @@ export const ManageOrg = ({ return ( -
diff --git a/vite/src/views/main-sidebar/components/OrgDropdown.tsx b/vite/src/views/main-sidebar/components/OrgDropdown.tsx index 76226f1cf..afd0360e2 100644 --- a/vite/src/views/main-sidebar/components/OrgDropdown.tsx +++ b/vite/src/views/main-sidebar/components/OrgDropdown.tsx @@ -1,4 +1,4 @@ -import { DropdownMenuGroup } from "@radix-ui/react-dropdown-menu"; +import { DropdownMenuGroup } from "@/components/v2/dropdowns/DropdownMenu"; import { useQueryClient } from "@tanstack/react-query"; import { ChevronDown, @@ -49,10 +49,10 @@ export const OrgDropdown = () => { const { expanded, setExpanded } = useSidebarContext(); const { theme, setTheme } = useTheme(); - let { data: orgs } = useListOrganizations(); + const { data: orgsData } = useListOrganizations(); + let orgs = Array.isArray(orgsData) ? orgsData : undefined; const { data: activeOrganization } = authClient.useActiveOrganization(); - // Exclude the active organization from the orgs list (this makes it easier for users to understand which org is active) if (activeOrganization && orgs) { orgs = orgs.filter((o) => o.id !== activeOrganization.id); } diff --git a/vite/src/views/products/features/credit-systems/components/FeatureSelectDropdown.tsx b/vite/src/views/products/features/credit-systems/components/FeatureSelectDropdown.tsx index 72ea5a920..ba43677c0 100644 --- a/vite/src/views/products/features/credit-systems/components/FeatureSelectDropdown.tsx +++ b/vite/src/views/products/features/credit-systems/components/FeatureSelectDropdown.tsx @@ -50,24 +50,21 @@ export function FeatureSelectDropdown({ } }} > - - + + {selectedFeature ? ( + {selectedFeature.name} + ) : ( + Select feature + )} + e.preventDefault()} > {showCreateForm ? ( diff --git a/vite/src/views/products/plan/components/DeletePlanDialog.tsx b/vite/src/views/products/plan/components/DeletePlanDialog.tsx index e51207afc..f16bb99c6 100644 --- a/vite/src/views/products/plan/components/DeletePlanDialog.tsx +++ b/vite/src/views/products/plan/components/DeletePlanDialog.tsx @@ -228,10 +228,11 @@ export const DeletePlanDialog = ({ {productInfo.numVersion > 1 && !product.archived && !productInfo.hasCusProductsLatest && ( - setDeleteAllVersions(value === "all")} + items={{ latest: "Delete latest version", all: "Archive plan" }} + > diff --git a/vite/src/views/products/plan/components/EditPlanHeader.tsx b/vite/src/views/products/plan/components/EditPlanHeader.tsx index 0d1c2f486..b7133026d 100644 --- a/vite/src/views/products/plan/components/EditPlanHeader.tsx +++ b/vite/src/views/products/plan/components/EditPlanHeader.tsx @@ -241,10 +241,11 @@ export const EditPlanHeader = () => { )} {numVersions && numVersions > 1 && ( - [version.toString(), `Version ${version}`]))} + > diff --git a/vite/src/views/products/plan/components/EditPlanPriceSheet.tsx b/vite/src/views/products/plan/components/EditPlanPriceSheet.tsx index 48fe662a5..e1a27c47e 100644 --- a/vite/src/views/products/plan/components/EditPlanPriceSheet.tsx +++ b/vite/src/views/products/plan/components/EditPlanPriceSheet.tsx @@ -13,7 +13,7 @@ export function EditPlanPriceSheet({ if (!product) return null; return ( -
+
{!isOnboarding && ( +
{!isOnboarding && ( { placeholder="eg. 7" /> {/* Duration */} - { + setProduct({ + ...product, + free_trial: product.free_trial + ? { + ...product.free_trial, + duration: value as FreeTrialDuration, + } + : null, + }); + }} + items={Object.fromEntries(Object.values(FreeTrialDuration).map((duration) => [duration, `${duration}s`]))} + > {" "} diff --git a/vite/src/views/products/plan/components/edit-plan-details/SelectBillingCycle.tsx b/vite/src/views/products/plan/components/edit-plan-details/SelectBillingCycle.tsx index 4bac14fca..b31d4fd5a 100644 --- a/vite/src/views/products/plan/components/edit-plan-details/SelectBillingCycle.tsx +++ b/vite/src/views/products/plan/components/edit-plan-details/SelectBillingCycle.tsx @@ -30,20 +30,25 @@ export const SelectBillingCycle = ({ return (
Billing Interval - { + if (!item) return; + setItem({ + ...item, + interval: billingToItemInterval({ + billingInterval: value as BillingInterval, + }), + }); + }} + items={Object.fromEntries( + Object.values(BillingInterval) + .filter((interval) => !filterOneOff || interval !== BillingInterval.OneOff) + .map((interval) => [interval, formatIntervalText({ billingInterval: interval, intervalCount: item?.interval_count || 1, isBillingInterval: true })]) + )} + > diff --git a/vite/src/views/products/plan/components/edit-plan-feature/EditPlanFeatureSheet.tsx b/vite/src/views/products/plan/components/edit-plan-feature/EditPlanFeatureSheet.tsx index 7b5a9173a..df685ed8a 100644 --- a/vite/src/views/products/plan/components/edit-plan-feature/EditPlanFeatureSheet.tsx +++ b/vite/src/views/products/plan/components/edit-plan-feature/EditPlanFeatureSheet.tsx @@ -129,7 +129,7 @@ export function EditPlanFeatureSheet({ return (
{/* Scrollable content area */} -
+
{!isOnboarding && (
)} - {tierBehavior === TierBehavior.VolumeBased ? ( diff --git a/vite/src/views/products/plan/components/edit-plan-feature/UsageReset.tsx b/vite/src/views/products/plan/components/edit-plan-feature/UsageReset.tsx index d49519af9..946f63140 100644 --- a/vite/src/views/products/plan/components/edit-plan-feature/UsageReset.tsx +++ b/vite/src/views/products/plan/components/edit-plan-feature/UsageReset.tsx @@ -95,11 +95,12 @@ export function UsageReset({ showBillingLabel = false }: UsageResetProps) {
Interval
- [interval, formatIntervalText({ billingInterval: interval, intervalCount: item.interval_count || undefined, isBillingInterval: true })]))} + > diff --git a/vite/src/views/products/plan/components/edit-plan-feature/advanced-settings/EntityFeatureConfig.tsx b/vite/src/views/products/plan/components/edit-plan-feature/advanced-settings/EntityFeatureConfig.tsx index 04740a1b2..6c354afda 100644 --- a/vite/src/views/products/plan/components/edit-plan-feature/advanced-settings/EntityFeatureConfig.tsx +++ b/vite/src/views/products/plan/components/edit-plan-feature/advanced-settings/EntityFeatureConfig.tsx @@ -43,15 +43,16 @@ export function EntityFeatureConfig() { Link this item to a specific feature entity in your app - { + setItem({ + ...item, + entity_feature_id: value, + }); + }} + items={Object.fromEntries(continuousUseFeatures.map((feature) => [feature.id, feature.name]))} + > e.stopPropagation()} diff --git a/vite/src/views/products/plan/components/edit-plan-feature/advanced-settings/ProrationConfig.tsx b/vite/src/views/products/plan/components/edit-plan-feature/advanced-settings/ProrationConfig.tsx index f103d37c0..8928dd3fd 100644 --- a/vite/src/views/products/plan/components/edit-plan-feature/advanced-settings/ProrationConfig.tsx +++ b/vite/src/views/products/plan/components/edit-plan-feature/advanced-settings/ProrationConfig.tsx @@ -101,15 +101,16 @@ export function ProrationConfig() {
{increaseText} - { + setItem({ + ...item, + config: { ...item.config, on_increase: value as OnIncrease }, + }); + }} + items={Object.fromEntries(onIncreaseOptions.map((option) => [option, getOnIncreaseText(option)]))} + > e.stopPropagation()} @@ -128,15 +129,16 @@ export function ProrationConfig() {
{decreaseText} - { + setItem({ + ...item, + config: { ...item.config, on_decrease: value as OnDecrease }, + }); + }} + items={Object.fromEntries([OnDecrease.Prorate, OnDecrease.None].map((option) => [option, getOnDecreaseText({ option, usageModel: item.usage_model ?? UsageModel.Prepaid })]))} + > e.stopPropagation()} diff --git a/vite/src/views/products/plan/components/edit-plan-feature/advanced-settings/RolloverConfigForm.tsx b/vite/src/views/products/plan/components/edit-plan-feature/advanced-settings/RolloverConfigForm.tsx index a3d9d5f56..cb5cc3783 100644 --- a/vite/src/views/products/plan/components/edit-plan-feature/advanced-settings/RolloverConfigForm.tsx +++ b/vite/src/views/products/plan/components/edit-plan-feature/advanced-settings/RolloverConfigForm.tsx @@ -95,10 +95,11 @@ export function RolloverConfigForm({
Maximum rollover
- handleMaxModeChange(v as MaxMode)} + items={{ unlimited: "Unlimited", absolute: "Absolute", percentage: "Percentage" }} + > e.stopPropagation()} @@ -170,15 +171,16 @@ export function RolloverConfigForm({ onClick={(e) => e.stopPropagation()} /> )} - { + setRolloverConfigKey( + "duration", + v as RolloverExpiryDurationType, + ); + }} + items={Object.fromEntries(Object.values(RolloverExpiryDurationType).map((duration) => [duration, duration]))} + > e.stopPropagation()} diff --git a/vite/src/views/products/plan/versioning/ConfirmNewVersionDialog.tsx b/vite/src/views/products/plan/versioning/ConfirmNewVersionDialog.tsx index 51692dd16..5c8a8a034 100644 --- a/vite/src/views/products/plan/versioning/ConfirmNewVersionDialog.tsx +++ b/vite/src/views/products/plan/versioning/ConfirmNewVersionDialog.tsx @@ -8,7 +8,6 @@ import { DialogFooter, DialogHeader, DialogTitle, - DialogTrigger, } from "@/components/v2/dialogs/Dialog"; import { Input } from "@/components/v2/inputs/Input"; import { useProductsQuery } from "@/hooks/queries/useProductsQuery"; @@ -58,7 +57,6 @@ export default function ConfirmNewVersionDialog({ return ( - Create new version? diff --git a/vite/src/views/products/products/components/CopyProductDialog.tsx b/vite/src/views/products/products/components/CopyProductDialog.tsx index a61e219e0..249a456e8 100644 --- a/vite/src/views/products/products/components/CopyProductDialog.tsx +++ b/vite/src/views/products/products/components/CopyProductDialog.tsx @@ -128,10 +128,11 @@ export const CopyProductDialog = ({ {!targetEnv && (
Copy to environment - setToEnv(value as AppEnv)} + items={{ [AppEnv.Live]: "Production", [AppEnv.Sandbox]: "Sandbox" }} + > diff --git a/vite/src/views/products/rewards/reward-config/components/DiscountRewardConfig.tsx b/vite/src/views/products/rewards/reward-config/components/DiscountRewardConfig.tsx index ee65af7fa..9fdd11919 100644 --- a/vite/src/views/products/rewards/reward-config/components/DiscountRewardConfig.tsx +++ b/vite/src/views/products/rewards/reward-config/components/DiscountRewardConfig.tsx @@ -51,6 +51,11 @@ export function DiscountRewardConfig({ onValueChange={(value) => setReward({ ...reward, discountType: value as any }) } + items={{ + percentage: "Percentage", + fixed: "Fixed", + ...(reward.discountType === "invoice_credits" && { invoice_credits: "Invoice Credits" }), + }} > @@ -134,6 +139,11 @@ export function DiscountRewardConfig({ onValueChange={(value) => setConfig("duration_type", value as CouponDurationType) } + items={{ + [CouponDurationType.OneOff]: "One-off", + [CouponDurationType.Months]: "Months", + [CouponDurationType.Forever]: "Forever", + }} > diff --git a/vite/src/views/products/rewards/reward-config/components/FeatureGrantRewardConfig.tsx b/vite/src/views/products/rewards/reward-config/components/FeatureGrantRewardConfig.tsx index d789b8a21..d609bdcc5 100644 --- a/vite/src/views/products/rewards/reward-config/components/FeatureGrantRewardConfig.tsx +++ b/vite/src/views/products/rewards/reward-config/components/FeatureGrantRewardConfig.tsx @@ -323,20 +323,21 @@ export function FeatureGrantRewardConfig({ placeholder="30" className="w-20" /> - + updateEntitlement({ + index, + updates: { + expiry: { + duration: value as EntitlementDuration, + length: ent.expiry?.length ?? 1, }, - }) - } - > + }, + }) + } + items={{ [EntitlementDuration.Day]: "Day(s)", [EntitlementDuration.Week]: "Week(s)", [EntitlementDuration.Month]: "Month(s)", [EntitlementDuration.Year]: "Year(s)" }} + > diff --git a/vite/src/views/products/rewards/reward-config/components/FreeProductRewardConfig.tsx b/vite/src/views/products/rewards/reward-config/components/FreeProductRewardConfig.tsx index ad25711ac..aba21acda 100644 --- a/vite/src/views/products/rewards/reward-config/components/FreeProductRewardConfig.tsx +++ b/vite/src/views/products/rewards/reward-config/components/FreeProductRewardConfig.tsx @@ -34,13 +34,14 @@ export function FreeProductRewardConfig({ {/* Product Selection */}
Plan - + setReward({ ...reward, free_product_id: value }) + } + disabled={isEmpty} + items={Object.fromEntries(freeAddOns.map((product: ProductV2) => [product.id, product.name]))} + >
Reward - + setRewardProgram({ ...rewardProgram, internal_reward_id: value }) + } + items={Object.fromEntries(rewards.map((reward: Reward) => [reward.internal_id, reward.name]))} + > @@ -84,16 +85,17 @@ export const RewardProgramConfig = ({
Redeem On - + setRewardProgram({ + ...rewardProgram, + when: value as RewardTriggerEvent, + }) + } + items={Object.fromEntries(Object.values(RewardTriggerEvent).map((event) => [event, keyToTitle(event, { exclusionMap: { [RewardTriggerEvent.CustomerCreation]: "Customer Redemption" } })]))} + > @@ -127,15 +129,16 @@ export const RewardProgramConfig = ({
Received by - + setRewardProgram({ + ...rewardProgram, + received_by: value as RewardReceivedBy, + }) + } + items={Object.fromEntries(Object.values(RewardReceivedBy).map((receivedBy) => [receivedBy, receivedBy === RewardReceivedBy.All ? "Referrer & Redeemer" : keyToTitle(receivedBy)]))} + > diff --git a/vite/vite.config.ts b/vite/vite.config.ts index 359b91aa5..bd211d3cb 100644 --- a/vite/vite.config.ts +++ b/vite/vite.config.ts @@ -43,20 +43,6 @@ export default defineConfig({ "../packages/atmn/src/prompts/skills/index.ts", ), - // Hide Radix UI imports with cleaner aliases - "@radix/accordion": "@radix-ui/react-accordion", - "@radix/checkbox": "@radix-ui/react-checkbox", - "@radix/context-menu": "@radix-ui/react-context-menu", - "@radix/dialog": "@radix-ui/react-dialog", - "@radix/dropdown-menu": "@radix-ui/react-dropdown-menu", - "@radix/popover": "@radix-ui/react-popover", - "@radix/scroll-area": "@radix-ui/react-scroll-area", - "@radix/select": "@radix-ui/react-select", - "@radix/separator": "@radix-ui/react-separator", - "@radix/slot": "@radix-ui/react-slot", - "@radix/switch": "@radix-ui/react-switch", - "@radix/tabs": "@radix-ui/react-tabs", - "@radix/tooltip": "@radix-ui/react-tooltip", }, },