├── .gitignore ├── LICENSE ├── README.md ├── demo.gif ├── index.js ├── package-lock.json ├── package.json ├── schema.json ├── scripts └── create-schema.js ├── src ├── components │ └── ui │ │ └── select.tsx ├── dynamic-prompt.tsx └── lib │ └── utils.ts └── tsconfig.json /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 mindtown 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Dynamic Prompt Component 2 | 3 | #### [Experimental - Work in Progress] 4 | 5 | This component allows you to dynamically render text fields and select inputs based on the provided data. 6 | 7 | ![demo](./demo.gif) 8 | 9 | ## Installation 10 | 11 | Currently only available with `shadcn`. 12 | 13 | ```sh 14 | npx shadcn add "https://raw.githubusercontent.com/mindtown-ai/dynamic-prompt/main/schema.json" 15 | ``` 16 | 17 | ## Usage 18 | 19 | Here's an example of how to use the `DynamicPrompt` component: 20 | 21 | ```jsx 22 | import React from "react"; 23 | import DynamicPrompt from "@/components/DynamicPrompt"; 24 | 25 | const data = { 26 | text: "Hello, {name}! Please select your favorite fruit: {fruit}.", 27 | options: { 28 | name: ["Alice", "Bob", "Charlie"], 29 | fruit: ["Apple", "Banana", "Cherry"], 30 | }, 31 | }; 32 | 33 | const App = () => { 34 | const handleChange = (text: string) => { 35 | console.log("Updated text:", text); 36 | }; 37 | 38 | return ; 39 | }; 40 | 41 | export default App; 42 | ``` 43 | 44 | ## Prop Types 45 | 46 | ```ts 47 | interface DynamicTextFieldProps { 48 | onChange: (text: string) => void; 49 | CustomSelect?: React.ComponentType; 50 | data: { text: string; options: { [key: string]: string[] } }; 51 | } 52 | ``` 53 | 54 | ### License 55 | 56 | This project is licensed under the MIT License. See the [LICENSE](./LICENSE) file for details. 57 | -------------------------------------------------------------------------------- /demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mindtown-ai/dynamic-prompt/daf30eb52d85cbbe98c088354e7f41a8b3596bfe/demo.gif -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const str = "hello world"; 2 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "dynamic-prompt", 3 | "version": "0.0.1", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "dynamic-prompt", 9 | "version": "0.0.1", 10 | "license": "ISC", 11 | "dependencies": { 12 | "@radix-ui/react-icons": "^1.3.0", 13 | "@radix-ui/react-select": "^2.1.1", 14 | "class-variance-authority": "^0.7.0", 15 | "clsx": "^2.1.1", 16 | "tailwind-merge": "^2.5.2", 17 | "tailwindcss-animate": "^1.0.7" 18 | }, 19 | "devDependencies": { 20 | "@types/react": "^18.3.5", 21 | "typescript": "^5.5.4" 22 | }, 23 | "peerDependencies": { 24 | "react": "^17.0.2", 25 | "react-dom": "^17.0.2" 26 | } 27 | }, 28 | "node_modules/@alloc/quick-lru": { 29 | "version": "5.2.0", 30 | "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", 31 | "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", 32 | "peer": true, 33 | "engines": { 34 | "node": ">=10" 35 | }, 36 | "funding": { 37 | "url": "https://github.com/sponsors/sindresorhus" 38 | } 39 | }, 40 | "node_modules/@floating-ui/core": { 41 | "version": "1.6.7", 42 | "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.7.tgz", 43 | "integrity": "sha512-yDzVT/Lm101nQ5TCVeK65LtdN7Tj4Qpr9RTXJ2vPFLqtLxwOrpoxAHAJI8J3yYWUc40J0BDBheaitK5SJmno2g==", 44 | "dependencies": { 45 | "@floating-ui/utils": "^0.2.7" 46 | } 47 | }, 48 | "node_modules/@floating-ui/dom": { 49 | "version": "1.6.10", 50 | "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.10.tgz", 51 | "integrity": "sha512-fskgCFv8J8OamCmyun8MfjB1Olfn+uZKjOKZ0vhYF3gRmEUXcGOjxWL8bBr7i4kIuPZ2KD2S3EUIOxnjC8kl2A==", 52 | "dependencies": { 53 | "@floating-ui/core": "^1.6.0", 54 | "@floating-ui/utils": "^0.2.7" 55 | } 56 | }, 57 | "node_modules/@floating-ui/react-dom": { 58 | "version": "2.1.1", 59 | "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.1.tgz", 60 | "integrity": "sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==", 61 | "dependencies": { 62 | "@floating-ui/dom": "^1.0.0" 63 | }, 64 | "peerDependencies": { 65 | "react": ">=16.8.0", 66 | "react-dom": ">=16.8.0" 67 | } 68 | }, 69 | "node_modules/@floating-ui/utils": { 70 | "version": "0.2.7", 71 | "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.7.tgz", 72 | "integrity": "sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA==" 73 | }, 74 | "node_modules/@isaacs/cliui": { 75 | "version": "8.0.2", 76 | "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", 77 | "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", 78 | "peer": true, 79 | "dependencies": { 80 | "string-width": "^5.1.2", 81 | "string-width-cjs": "npm:string-width@^4.2.0", 82 | "strip-ansi": "^7.0.1", 83 | "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", 84 | "wrap-ansi": "^8.1.0", 85 | "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" 86 | }, 87 | "engines": { 88 | "node": ">=12" 89 | } 90 | }, 91 | "node_modules/@jridgewell/gen-mapping": { 92 | "version": "0.3.5", 93 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", 94 | "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", 95 | "peer": true, 96 | "dependencies": { 97 | "@jridgewell/set-array": "^1.2.1", 98 | "@jridgewell/sourcemap-codec": "^1.4.10", 99 | "@jridgewell/trace-mapping": "^0.3.24" 100 | }, 101 | "engines": { 102 | "node": ">=6.0.0" 103 | } 104 | }, 105 | "node_modules/@jridgewell/resolve-uri": { 106 | "version": "3.1.2", 107 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", 108 | "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", 109 | "peer": true, 110 | "engines": { 111 | "node": ">=6.0.0" 112 | } 113 | }, 114 | "node_modules/@jridgewell/set-array": { 115 | "version": "1.2.1", 116 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", 117 | "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", 118 | "peer": true, 119 | "engines": { 120 | "node": ">=6.0.0" 121 | } 122 | }, 123 | "node_modules/@jridgewell/sourcemap-codec": { 124 | "version": "1.5.0", 125 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", 126 | "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", 127 | "peer": true 128 | }, 129 | "node_modules/@jridgewell/trace-mapping": { 130 | "version": "0.3.25", 131 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", 132 | "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", 133 | "peer": true, 134 | "dependencies": { 135 | "@jridgewell/resolve-uri": "^3.1.0", 136 | "@jridgewell/sourcemap-codec": "^1.4.14" 137 | } 138 | }, 139 | "node_modules/@nodelib/fs.scandir": { 140 | "version": "2.1.5", 141 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 142 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 143 | "peer": true, 144 | "dependencies": { 145 | "@nodelib/fs.stat": "2.0.5", 146 | "run-parallel": "^1.1.9" 147 | }, 148 | "engines": { 149 | "node": ">= 8" 150 | } 151 | }, 152 | "node_modules/@nodelib/fs.stat": { 153 | "version": "2.0.5", 154 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 155 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 156 | "peer": true, 157 | "engines": { 158 | "node": ">= 8" 159 | } 160 | }, 161 | "node_modules/@nodelib/fs.walk": { 162 | "version": "1.2.8", 163 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 164 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 165 | "peer": true, 166 | "dependencies": { 167 | "@nodelib/fs.scandir": "2.1.5", 168 | "fastq": "^1.6.0" 169 | }, 170 | "engines": { 171 | "node": ">= 8" 172 | } 173 | }, 174 | "node_modules/@pkgjs/parseargs": { 175 | "version": "0.11.0", 176 | "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", 177 | "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", 178 | "optional": true, 179 | "peer": true, 180 | "engines": { 181 | "node": ">=14" 182 | } 183 | }, 184 | "node_modules/@radix-ui/number": { 185 | "version": "1.1.0", 186 | "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.0.tgz", 187 | "integrity": "sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==" 188 | }, 189 | "node_modules/@radix-ui/primitive": { 190 | "version": "1.1.0", 191 | "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.0.tgz", 192 | "integrity": "sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==" 193 | }, 194 | "node_modules/@radix-ui/react-arrow": { 195 | "version": "1.1.0", 196 | "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.0.tgz", 197 | "integrity": "sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==", 198 | "dependencies": { 199 | "@radix-ui/react-primitive": "2.0.0" 200 | }, 201 | "peerDependencies": { 202 | "@types/react": "*", 203 | "@types/react-dom": "*", 204 | "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", 205 | "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" 206 | }, 207 | "peerDependenciesMeta": { 208 | "@types/react": { 209 | "optional": true 210 | }, 211 | "@types/react-dom": { 212 | "optional": true 213 | } 214 | } 215 | }, 216 | "node_modules/@radix-ui/react-collection": { 217 | "version": "1.1.0", 218 | "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.0.tgz", 219 | "integrity": "sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==", 220 | "dependencies": { 221 | "@radix-ui/react-compose-refs": "1.1.0", 222 | "@radix-ui/react-context": "1.1.0", 223 | "@radix-ui/react-primitive": "2.0.0", 224 | "@radix-ui/react-slot": "1.1.0" 225 | }, 226 | "peerDependencies": { 227 | "@types/react": "*", 228 | "@types/react-dom": "*", 229 | "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", 230 | "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" 231 | }, 232 | "peerDependenciesMeta": { 233 | "@types/react": { 234 | "optional": true 235 | }, 236 | "@types/react-dom": { 237 | "optional": true 238 | } 239 | } 240 | }, 241 | "node_modules/@radix-ui/react-compose-refs": { 242 | "version": "1.1.0", 243 | "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.0.tgz", 244 | "integrity": "sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==", 245 | "peerDependencies": { 246 | "@types/react": "*", 247 | "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" 248 | }, 249 | "peerDependenciesMeta": { 250 | "@types/react": { 251 | "optional": true 252 | } 253 | } 254 | }, 255 | "node_modules/@radix-ui/react-context": { 256 | "version": "1.1.0", 257 | "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", 258 | "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", 259 | "peerDependencies": { 260 | "@types/react": "*", 261 | "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" 262 | }, 263 | "peerDependenciesMeta": { 264 | "@types/react": { 265 | "optional": true 266 | } 267 | } 268 | }, 269 | "node_modules/@radix-ui/react-direction": { 270 | "version": "1.1.0", 271 | "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.0.tgz", 272 | "integrity": "sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==", 273 | "peerDependencies": { 274 | "@types/react": "*", 275 | "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" 276 | }, 277 | "peerDependenciesMeta": { 278 | "@types/react": { 279 | "optional": true 280 | } 281 | } 282 | }, 283 | "node_modules/@radix-ui/react-dismissable-layer": { 284 | "version": "1.1.0", 285 | "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.0.tgz", 286 | "integrity": "sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig==", 287 | "dependencies": { 288 | "@radix-ui/primitive": "1.1.0", 289 | "@radix-ui/react-compose-refs": "1.1.0", 290 | "@radix-ui/react-primitive": "2.0.0", 291 | "@radix-ui/react-use-callback-ref": "1.1.0", 292 | "@radix-ui/react-use-escape-keydown": "1.1.0" 293 | }, 294 | "peerDependencies": { 295 | "@types/react": "*", 296 | "@types/react-dom": "*", 297 | "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", 298 | "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" 299 | }, 300 | "peerDependenciesMeta": { 301 | "@types/react": { 302 | "optional": true 303 | }, 304 | "@types/react-dom": { 305 | "optional": true 306 | } 307 | } 308 | }, 309 | "node_modules/@radix-ui/react-focus-guards": { 310 | "version": "1.1.0", 311 | "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.0.tgz", 312 | "integrity": "sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw==", 313 | "peerDependencies": { 314 | "@types/react": "*", 315 | "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" 316 | }, 317 | "peerDependenciesMeta": { 318 | "@types/react": { 319 | "optional": true 320 | } 321 | } 322 | }, 323 | "node_modules/@radix-ui/react-focus-scope": { 324 | "version": "1.1.0", 325 | "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.0.tgz", 326 | "integrity": "sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==", 327 | "dependencies": { 328 | "@radix-ui/react-compose-refs": "1.1.0", 329 | "@radix-ui/react-primitive": "2.0.0", 330 | "@radix-ui/react-use-callback-ref": "1.1.0" 331 | }, 332 | "peerDependencies": { 333 | "@types/react": "*", 334 | "@types/react-dom": "*", 335 | "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", 336 | "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" 337 | }, 338 | "peerDependenciesMeta": { 339 | "@types/react": { 340 | "optional": true 341 | }, 342 | "@types/react-dom": { 343 | "optional": true 344 | } 345 | } 346 | }, 347 | "node_modules/@radix-ui/react-icons": { 348 | "version": "1.3.0", 349 | "resolved": "https://registry.npmjs.org/@radix-ui/react-icons/-/react-icons-1.3.0.tgz", 350 | "integrity": "sha512-jQxj/0LKgp+j9BiTXz3O3sgs26RNet2iLWmsPyRz2SIcR4q/4SbazXfnYwbAr+vLYKSfc7qxzyGQA1HLlYiuNw==", 351 | "peerDependencies": { 352 | "react": "^16.x || ^17.x || ^18.x" 353 | } 354 | }, 355 | "node_modules/@radix-ui/react-id": { 356 | "version": "1.1.0", 357 | "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.0.tgz", 358 | "integrity": "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==", 359 | "dependencies": { 360 | "@radix-ui/react-use-layout-effect": "1.1.0" 361 | }, 362 | "peerDependencies": { 363 | "@types/react": "*", 364 | "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" 365 | }, 366 | "peerDependenciesMeta": { 367 | "@types/react": { 368 | "optional": true 369 | } 370 | } 371 | }, 372 | "node_modules/@radix-ui/react-popper": { 373 | "version": "1.2.0", 374 | "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.0.tgz", 375 | "integrity": "sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==", 376 | "dependencies": { 377 | "@floating-ui/react-dom": "^2.0.0", 378 | "@radix-ui/react-arrow": "1.1.0", 379 | "@radix-ui/react-compose-refs": "1.1.0", 380 | "@radix-ui/react-context": "1.1.0", 381 | "@radix-ui/react-primitive": "2.0.0", 382 | "@radix-ui/react-use-callback-ref": "1.1.0", 383 | "@radix-ui/react-use-layout-effect": "1.1.0", 384 | "@radix-ui/react-use-rect": "1.1.0", 385 | "@radix-ui/react-use-size": "1.1.0", 386 | "@radix-ui/rect": "1.1.0" 387 | }, 388 | "peerDependencies": { 389 | "@types/react": "*", 390 | "@types/react-dom": "*", 391 | "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", 392 | "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" 393 | }, 394 | "peerDependenciesMeta": { 395 | "@types/react": { 396 | "optional": true 397 | }, 398 | "@types/react-dom": { 399 | "optional": true 400 | } 401 | } 402 | }, 403 | "node_modules/@radix-ui/react-portal": { 404 | "version": "1.1.1", 405 | "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.1.tgz", 406 | "integrity": "sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g==", 407 | "dependencies": { 408 | "@radix-ui/react-primitive": "2.0.0", 409 | "@radix-ui/react-use-layout-effect": "1.1.0" 410 | }, 411 | "peerDependencies": { 412 | "@types/react": "*", 413 | "@types/react-dom": "*", 414 | "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", 415 | "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" 416 | }, 417 | "peerDependenciesMeta": { 418 | "@types/react": { 419 | "optional": true 420 | }, 421 | "@types/react-dom": { 422 | "optional": true 423 | } 424 | } 425 | }, 426 | "node_modules/@radix-ui/react-primitive": { 427 | "version": "2.0.0", 428 | "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.0.tgz", 429 | "integrity": "sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==", 430 | "dependencies": { 431 | "@radix-ui/react-slot": "1.1.0" 432 | }, 433 | "peerDependencies": { 434 | "@types/react": "*", 435 | "@types/react-dom": "*", 436 | "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", 437 | "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" 438 | }, 439 | "peerDependenciesMeta": { 440 | "@types/react": { 441 | "optional": true 442 | }, 443 | "@types/react-dom": { 444 | "optional": true 445 | } 446 | } 447 | }, 448 | "node_modules/@radix-ui/react-select": { 449 | "version": "2.1.1", 450 | "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.1.1.tgz", 451 | "integrity": "sha512-8iRDfyLtzxlprOo9IicnzvpsO1wNCkuwzzCM+Z5Rb5tNOpCdMvcc2AkzX0Fz+Tz9v6NJ5B/7EEgyZveo4FBRfQ==", 452 | "dependencies": { 453 | "@radix-ui/number": "1.1.0", 454 | "@radix-ui/primitive": "1.1.0", 455 | "@radix-ui/react-collection": "1.1.0", 456 | "@radix-ui/react-compose-refs": "1.1.0", 457 | "@radix-ui/react-context": "1.1.0", 458 | "@radix-ui/react-direction": "1.1.0", 459 | "@radix-ui/react-dismissable-layer": "1.1.0", 460 | "@radix-ui/react-focus-guards": "1.1.0", 461 | "@radix-ui/react-focus-scope": "1.1.0", 462 | "@radix-ui/react-id": "1.1.0", 463 | "@radix-ui/react-popper": "1.2.0", 464 | "@radix-ui/react-portal": "1.1.1", 465 | "@radix-ui/react-primitive": "2.0.0", 466 | "@radix-ui/react-slot": "1.1.0", 467 | "@radix-ui/react-use-callback-ref": "1.1.0", 468 | "@radix-ui/react-use-controllable-state": "1.1.0", 469 | "@radix-ui/react-use-layout-effect": "1.1.0", 470 | "@radix-ui/react-use-previous": "1.1.0", 471 | "@radix-ui/react-visually-hidden": "1.1.0", 472 | "aria-hidden": "^1.1.1", 473 | "react-remove-scroll": "2.5.7" 474 | }, 475 | "peerDependencies": { 476 | "@types/react": "*", 477 | "@types/react-dom": "*", 478 | "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", 479 | "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" 480 | }, 481 | "peerDependenciesMeta": { 482 | "@types/react": { 483 | "optional": true 484 | }, 485 | "@types/react-dom": { 486 | "optional": true 487 | } 488 | } 489 | }, 490 | "node_modules/@radix-ui/react-slot": { 491 | "version": "1.1.0", 492 | "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.0.tgz", 493 | "integrity": "sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==", 494 | "dependencies": { 495 | "@radix-ui/react-compose-refs": "1.1.0" 496 | }, 497 | "peerDependencies": { 498 | "@types/react": "*", 499 | "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" 500 | }, 501 | "peerDependenciesMeta": { 502 | "@types/react": { 503 | "optional": true 504 | } 505 | } 506 | }, 507 | "node_modules/@radix-ui/react-use-callback-ref": { 508 | "version": "1.1.0", 509 | "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", 510 | "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", 511 | "peerDependencies": { 512 | "@types/react": "*", 513 | "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" 514 | }, 515 | "peerDependenciesMeta": { 516 | "@types/react": { 517 | "optional": true 518 | } 519 | } 520 | }, 521 | "node_modules/@radix-ui/react-use-controllable-state": { 522 | "version": "1.1.0", 523 | "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz", 524 | "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==", 525 | "dependencies": { 526 | "@radix-ui/react-use-callback-ref": "1.1.0" 527 | }, 528 | "peerDependencies": { 529 | "@types/react": "*", 530 | "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" 531 | }, 532 | "peerDependenciesMeta": { 533 | "@types/react": { 534 | "optional": true 535 | } 536 | } 537 | }, 538 | "node_modules/@radix-ui/react-use-escape-keydown": { 539 | "version": "1.1.0", 540 | "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz", 541 | "integrity": "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==", 542 | "dependencies": { 543 | "@radix-ui/react-use-callback-ref": "1.1.0" 544 | }, 545 | "peerDependencies": { 546 | "@types/react": "*", 547 | "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" 548 | }, 549 | "peerDependenciesMeta": { 550 | "@types/react": { 551 | "optional": true 552 | } 553 | } 554 | }, 555 | "node_modules/@radix-ui/react-use-layout-effect": { 556 | "version": "1.1.0", 557 | "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz", 558 | "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", 559 | "peerDependencies": { 560 | "@types/react": "*", 561 | "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" 562 | }, 563 | "peerDependenciesMeta": { 564 | "@types/react": { 565 | "optional": true 566 | } 567 | } 568 | }, 569 | "node_modules/@radix-ui/react-use-previous": { 570 | "version": "1.1.0", 571 | "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.0.tgz", 572 | "integrity": "sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==", 573 | "peerDependencies": { 574 | "@types/react": "*", 575 | "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" 576 | }, 577 | "peerDependenciesMeta": { 578 | "@types/react": { 579 | "optional": true 580 | } 581 | } 582 | }, 583 | "node_modules/@radix-ui/react-use-rect": { 584 | "version": "1.1.0", 585 | "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.0.tgz", 586 | "integrity": "sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==", 587 | "dependencies": { 588 | "@radix-ui/rect": "1.1.0" 589 | }, 590 | "peerDependencies": { 591 | "@types/react": "*", 592 | "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" 593 | }, 594 | "peerDependenciesMeta": { 595 | "@types/react": { 596 | "optional": true 597 | } 598 | } 599 | }, 600 | "node_modules/@radix-ui/react-use-size": { 601 | "version": "1.1.0", 602 | "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz", 603 | "integrity": "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==", 604 | "dependencies": { 605 | "@radix-ui/react-use-layout-effect": "1.1.0" 606 | }, 607 | "peerDependencies": { 608 | "@types/react": "*", 609 | "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" 610 | }, 611 | "peerDependenciesMeta": { 612 | "@types/react": { 613 | "optional": true 614 | } 615 | } 616 | }, 617 | "node_modules/@radix-ui/react-visually-hidden": { 618 | "version": "1.1.0", 619 | "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.0.tgz", 620 | "integrity": "sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==", 621 | "dependencies": { 622 | "@radix-ui/react-primitive": "2.0.0" 623 | }, 624 | "peerDependencies": { 625 | "@types/react": "*", 626 | "@types/react-dom": "*", 627 | "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", 628 | "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" 629 | }, 630 | "peerDependenciesMeta": { 631 | "@types/react": { 632 | "optional": true 633 | }, 634 | "@types/react-dom": { 635 | "optional": true 636 | } 637 | } 638 | }, 639 | "node_modules/@radix-ui/rect": { 640 | "version": "1.1.0", 641 | "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.0.tgz", 642 | "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==" 643 | }, 644 | "node_modules/@types/prop-types": { 645 | "version": "15.7.12", 646 | "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", 647 | "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==", 648 | "devOptional": true 649 | }, 650 | "node_modules/@types/react": { 651 | "version": "18.3.5", 652 | "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.5.tgz", 653 | "integrity": "sha512-WeqMfGJLGuLCqHGYRGHxnKrXcTitc6L/nBUWfWPcTarG3t9PsquqUMuVeXZeca+mglY4Vo5GZjCi0A3Or2lnxA==", 654 | "devOptional": true, 655 | "dependencies": { 656 | "@types/prop-types": "*", 657 | "csstype": "^3.0.2" 658 | } 659 | }, 660 | "node_modules/ansi-regex": { 661 | "version": "6.0.1", 662 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", 663 | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", 664 | "peer": true, 665 | "engines": { 666 | "node": ">=12" 667 | }, 668 | "funding": { 669 | "url": "https://github.com/chalk/ansi-regex?sponsor=1" 670 | } 671 | }, 672 | "node_modules/ansi-styles": { 673 | "version": "6.2.1", 674 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", 675 | "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", 676 | "peer": true, 677 | "engines": { 678 | "node": ">=12" 679 | }, 680 | "funding": { 681 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 682 | } 683 | }, 684 | "node_modules/any-promise": { 685 | "version": "1.3.0", 686 | "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", 687 | "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", 688 | "peer": true 689 | }, 690 | "node_modules/anymatch": { 691 | "version": "3.1.3", 692 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 693 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 694 | "peer": true, 695 | "dependencies": { 696 | "normalize-path": "^3.0.0", 697 | "picomatch": "^2.0.4" 698 | }, 699 | "engines": { 700 | "node": ">= 8" 701 | } 702 | }, 703 | "node_modules/arg": { 704 | "version": "5.0.2", 705 | "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", 706 | "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", 707 | "peer": true 708 | }, 709 | "node_modules/aria-hidden": { 710 | "version": "1.2.4", 711 | "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", 712 | "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", 713 | "dependencies": { 714 | "tslib": "^2.0.0" 715 | }, 716 | "engines": { 717 | "node": ">=10" 718 | } 719 | }, 720 | "node_modules/balanced-match": { 721 | "version": "1.0.2", 722 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 723 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 724 | "peer": true 725 | }, 726 | "node_modules/binary-extensions": { 727 | "version": "2.3.0", 728 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", 729 | "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", 730 | "peer": true, 731 | "engines": { 732 | "node": ">=8" 733 | }, 734 | "funding": { 735 | "url": "https://github.com/sponsors/sindresorhus" 736 | } 737 | }, 738 | "node_modules/brace-expansion": { 739 | "version": "2.0.1", 740 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 741 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 742 | "peer": true, 743 | "dependencies": { 744 | "balanced-match": "^1.0.0" 745 | } 746 | }, 747 | "node_modules/braces": { 748 | "version": "3.0.3", 749 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", 750 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 751 | "peer": true, 752 | "dependencies": { 753 | "fill-range": "^7.1.1" 754 | }, 755 | "engines": { 756 | "node": ">=8" 757 | } 758 | }, 759 | "node_modules/camelcase-css": { 760 | "version": "2.0.1", 761 | "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", 762 | "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", 763 | "peer": true, 764 | "engines": { 765 | "node": ">= 6" 766 | } 767 | }, 768 | "node_modules/chokidar": { 769 | "version": "3.6.0", 770 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", 771 | "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", 772 | "peer": true, 773 | "dependencies": { 774 | "anymatch": "~3.1.2", 775 | "braces": "~3.0.2", 776 | "glob-parent": "~5.1.2", 777 | "is-binary-path": "~2.1.0", 778 | "is-glob": "~4.0.1", 779 | "normalize-path": "~3.0.0", 780 | "readdirp": "~3.6.0" 781 | }, 782 | "engines": { 783 | "node": ">= 8.10.0" 784 | }, 785 | "funding": { 786 | "url": "https://paulmillr.com/funding/" 787 | }, 788 | "optionalDependencies": { 789 | "fsevents": "~2.3.2" 790 | } 791 | }, 792 | "node_modules/chokidar/node_modules/glob-parent": { 793 | "version": "5.1.2", 794 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 795 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 796 | "peer": true, 797 | "dependencies": { 798 | "is-glob": "^4.0.1" 799 | }, 800 | "engines": { 801 | "node": ">= 6" 802 | } 803 | }, 804 | "node_modules/class-variance-authority": { 805 | "version": "0.7.0", 806 | "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.0.tgz", 807 | "integrity": "sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==", 808 | "dependencies": { 809 | "clsx": "2.0.0" 810 | }, 811 | "funding": { 812 | "url": "https://joebell.co.uk" 813 | } 814 | }, 815 | "node_modules/class-variance-authority/node_modules/clsx": { 816 | "version": "2.0.0", 817 | "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", 818 | "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", 819 | "engines": { 820 | "node": ">=6" 821 | } 822 | }, 823 | "node_modules/clsx": { 824 | "version": "2.1.1", 825 | "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", 826 | "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", 827 | "engines": { 828 | "node": ">=6" 829 | } 830 | }, 831 | "node_modules/color-convert": { 832 | "version": "2.0.1", 833 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 834 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 835 | "peer": true, 836 | "dependencies": { 837 | "color-name": "~1.1.4" 838 | }, 839 | "engines": { 840 | "node": ">=7.0.0" 841 | } 842 | }, 843 | "node_modules/color-name": { 844 | "version": "1.1.4", 845 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 846 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 847 | "peer": true 848 | }, 849 | "node_modules/commander": { 850 | "version": "4.1.1", 851 | "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", 852 | "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", 853 | "peer": true, 854 | "engines": { 855 | "node": ">= 6" 856 | } 857 | }, 858 | "node_modules/cross-spawn": { 859 | "version": "7.0.3", 860 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 861 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 862 | "peer": true, 863 | "dependencies": { 864 | "path-key": "^3.1.0", 865 | "shebang-command": "^2.0.0", 866 | "which": "^2.0.1" 867 | }, 868 | "engines": { 869 | "node": ">= 8" 870 | } 871 | }, 872 | "node_modules/cssesc": { 873 | "version": "3.0.0", 874 | "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", 875 | "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", 876 | "peer": true, 877 | "bin": { 878 | "cssesc": "bin/cssesc" 879 | }, 880 | "engines": { 881 | "node": ">=4" 882 | } 883 | }, 884 | "node_modules/csstype": { 885 | "version": "3.1.3", 886 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", 887 | "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", 888 | "devOptional": true 889 | }, 890 | "node_modules/detect-node-es": { 891 | "version": "1.1.0", 892 | "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", 893 | "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" 894 | }, 895 | "node_modules/didyoumean": { 896 | "version": "1.2.2", 897 | "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", 898 | "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", 899 | "peer": true 900 | }, 901 | "node_modules/dlv": { 902 | "version": "1.1.3", 903 | "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", 904 | "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", 905 | "peer": true 906 | }, 907 | "node_modules/eastasianwidth": { 908 | "version": "0.2.0", 909 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", 910 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", 911 | "peer": true 912 | }, 913 | "node_modules/emoji-regex": { 914 | "version": "9.2.2", 915 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", 916 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", 917 | "peer": true 918 | }, 919 | "node_modules/fast-glob": { 920 | "version": "3.3.2", 921 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", 922 | "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", 923 | "peer": true, 924 | "dependencies": { 925 | "@nodelib/fs.stat": "^2.0.2", 926 | "@nodelib/fs.walk": "^1.2.3", 927 | "glob-parent": "^5.1.2", 928 | "merge2": "^1.3.0", 929 | "micromatch": "^4.0.4" 930 | }, 931 | "engines": { 932 | "node": ">=8.6.0" 933 | } 934 | }, 935 | "node_modules/fast-glob/node_modules/glob-parent": { 936 | "version": "5.1.2", 937 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 938 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 939 | "peer": true, 940 | "dependencies": { 941 | "is-glob": "^4.0.1" 942 | }, 943 | "engines": { 944 | "node": ">= 6" 945 | } 946 | }, 947 | "node_modules/fastq": { 948 | "version": "1.17.1", 949 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", 950 | "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", 951 | "peer": true, 952 | "dependencies": { 953 | "reusify": "^1.0.4" 954 | } 955 | }, 956 | "node_modules/fill-range": { 957 | "version": "7.1.1", 958 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", 959 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 960 | "peer": true, 961 | "dependencies": { 962 | "to-regex-range": "^5.0.1" 963 | }, 964 | "engines": { 965 | "node": ">=8" 966 | } 967 | }, 968 | "node_modules/foreground-child": { 969 | "version": "3.3.0", 970 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", 971 | "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", 972 | "peer": true, 973 | "dependencies": { 974 | "cross-spawn": "^7.0.0", 975 | "signal-exit": "^4.0.1" 976 | }, 977 | "engines": { 978 | "node": ">=14" 979 | }, 980 | "funding": { 981 | "url": "https://github.com/sponsors/isaacs" 982 | } 983 | }, 984 | "node_modules/fsevents": { 985 | "version": "2.3.3", 986 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 987 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 988 | "hasInstallScript": true, 989 | "optional": true, 990 | "os": [ 991 | "darwin" 992 | ], 993 | "peer": true, 994 | "engines": { 995 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 996 | } 997 | }, 998 | "node_modules/function-bind": { 999 | "version": "1.1.2", 1000 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", 1001 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", 1002 | "peer": true, 1003 | "funding": { 1004 | "url": "https://github.com/sponsors/ljharb" 1005 | } 1006 | }, 1007 | "node_modules/get-nonce": { 1008 | "version": "1.0.1", 1009 | "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", 1010 | "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", 1011 | "engines": { 1012 | "node": ">=6" 1013 | } 1014 | }, 1015 | "node_modules/glob": { 1016 | "version": "10.4.5", 1017 | "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", 1018 | "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", 1019 | "peer": true, 1020 | "dependencies": { 1021 | "foreground-child": "^3.1.0", 1022 | "jackspeak": "^3.1.2", 1023 | "minimatch": "^9.0.4", 1024 | "minipass": "^7.1.2", 1025 | "package-json-from-dist": "^1.0.0", 1026 | "path-scurry": "^1.11.1" 1027 | }, 1028 | "bin": { 1029 | "glob": "dist/esm/bin.mjs" 1030 | }, 1031 | "funding": { 1032 | "url": "https://github.com/sponsors/isaacs" 1033 | } 1034 | }, 1035 | "node_modules/glob-parent": { 1036 | "version": "6.0.2", 1037 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 1038 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 1039 | "peer": true, 1040 | "dependencies": { 1041 | "is-glob": "^4.0.3" 1042 | }, 1043 | "engines": { 1044 | "node": ">=10.13.0" 1045 | } 1046 | }, 1047 | "node_modules/hasown": { 1048 | "version": "2.0.2", 1049 | "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", 1050 | "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", 1051 | "peer": true, 1052 | "dependencies": { 1053 | "function-bind": "^1.1.2" 1054 | }, 1055 | "engines": { 1056 | "node": ">= 0.4" 1057 | } 1058 | }, 1059 | "node_modules/invariant": { 1060 | "version": "2.2.4", 1061 | "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", 1062 | "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", 1063 | "dependencies": { 1064 | "loose-envify": "^1.0.0" 1065 | } 1066 | }, 1067 | "node_modules/is-binary-path": { 1068 | "version": "2.1.0", 1069 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1070 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1071 | "peer": true, 1072 | "dependencies": { 1073 | "binary-extensions": "^2.0.0" 1074 | }, 1075 | "engines": { 1076 | "node": ">=8" 1077 | } 1078 | }, 1079 | "node_modules/is-core-module": { 1080 | "version": "2.15.1", 1081 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", 1082 | "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", 1083 | "peer": true, 1084 | "dependencies": { 1085 | "hasown": "^2.0.2" 1086 | }, 1087 | "engines": { 1088 | "node": ">= 0.4" 1089 | }, 1090 | "funding": { 1091 | "url": "https://github.com/sponsors/ljharb" 1092 | } 1093 | }, 1094 | "node_modules/is-extglob": { 1095 | "version": "2.1.1", 1096 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1097 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 1098 | "peer": true, 1099 | "engines": { 1100 | "node": ">=0.10.0" 1101 | } 1102 | }, 1103 | "node_modules/is-fullwidth-code-point": { 1104 | "version": "3.0.0", 1105 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1106 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1107 | "peer": true, 1108 | "engines": { 1109 | "node": ">=8" 1110 | } 1111 | }, 1112 | "node_modules/is-glob": { 1113 | "version": "4.0.3", 1114 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1115 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1116 | "peer": true, 1117 | "dependencies": { 1118 | "is-extglob": "^2.1.1" 1119 | }, 1120 | "engines": { 1121 | "node": ">=0.10.0" 1122 | } 1123 | }, 1124 | "node_modules/is-number": { 1125 | "version": "7.0.0", 1126 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1127 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1128 | "peer": true, 1129 | "engines": { 1130 | "node": ">=0.12.0" 1131 | } 1132 | }, 1133 | "node_modules/isexe": { 1134 | "version": "2.0.0", 1135 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1136 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 1137 | "peer": true 1138 | }, 1139 | "node_modules/jackspeak": { 1140 | "version": "3.4.3", 1141 | "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", 1142 | "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", 1143 | "peer": true, 1144 | "dependencies": { 1145 | "@isaacs/cliui": "^8.0.2" 1146 | }, 1147 | "funding": { 1148 | "url": "https://github.com/sponsors/isaacs" 1149 | }, 1150 | "optionalDependencies": { 1151 | "@pkgjs/parseargs": "^0.11.0" 1152 | } 1153 | }, 1154 | "node_modules/jiti": { 1155 | "version": "1.21.6", 1156 | "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", 1157 | "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", 1158 | "peer": true, 1159 | "bin": { 1160 | "jiti": "bin/jiti.js" 1161 | } 1162 | }, 1163 | "node_modules/js-tokens": { 1164 | "version": "4.0.0", 1165 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1166 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 1167 | }, 1168 | "node_modules/lilconfig": { 1169 | "version": "2.1.0", 1170 | "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", 1171 | "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", 1172 | "peer": true, 1173 | "engines": { 1174 | "node": ">=10" 1175 | } 1176 | }, 1177 | "node_modules/lines-and-columns": { 1178 | "version": "1.2.4", 1179 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", 1180 | "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", 1181 | "peer": true 1182 | }, 1183 | "node_modules/loose-envify": { 1184 | "version": "1.4.0", 1185 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 1186 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 1187 | "dependencies": { 1188 | "js-tokens": "^3.0.0 || ^4.0.0" 1189 | }, 1190 | "bin": { 1191 | "loose-envify": "cli.js" 1192 | } 1193 | }, 1194 | "node_modules/lru-cache": { 1195 | "version": "10.4.3", 1196 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", 1197 | "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", 1198 | "peer": true 1199 | }, 1200 | "node_modules/merge2": { 1201 | "version": "1.4.1", 1202 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 1203 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 1204 | "peer": true, 1205 | "engines": { 1206 | "node": ">= 8" 1207 | } 1208 | }, 1209 | "node_modules/micromatch": { 1210 | "version": "4.0.8", 1211 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", 1212 | "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", 1213 | "peer": true, 1214 | "dependencies": { 1215 | "braces": "^3.0.3", 1216 | "picomatch": "^2.3.1" 1217 | }, 1218 | "engines": { 1219 | "node": ">=8.6" 1220 | } 1221 | }, 1222 | "node_modules/minimatch": { 1223 | "version": "9.0.5", 1224 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", 1225 | "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", 1226 | "peer": true, 1227 | "dependencies": { 1228 | "brace-expansion": "^2.0.1" 1229 | }, 1230 | "engines": { 1231 | "node": ">=16 || 14 >=14.17" 1232 | }, 1233 | "funding": { 1234 | "url": "https://github.com/sponsors/isaacs" 1235 | } 1236 | }, 1237 | "node_modules/minipass": { 1238 | "version": "7.1.2", 1239 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", 1240 | "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", 1241 | "peer": true, 1242 | "engines": { 1243 | "node": ">=16 || 14 >=14.17" 1244 | } 1245 | }, 1246 | "node_modules/mz": { 1247 | "version": "2.7.0", 1248 | "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", 1249 | "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", 1250 | "peer": true, 1251 | "dependencies": { 1252 | "any-promise": "^1.0.0", 1253 | "object-assign": "^4.0.1", 1254 | "thenify-all": "^1.0.0" 1255 | } 1256 | }, 1257 | "node_modules/nanoid": { 1258 | "version": "3.3.7", 1259 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", 1260 | "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", 1261 | "funding": [ 1262 | { 1263 | "type": "github", 1264 | "url": "https://github.com/sponsors/ai" 1265 | } 1266 | ], 1267 | "peer": true, 1268 | "bin": { 1269 | "nanoid": "bin/nanoid.cjs" 1270 | }, 1271 | "engines": { 1272 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 1273 | } 1274 | }, 1275 | "node_modules/normalize-path": { 1276 | "version": "3.0.0", 1277 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1278 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 1279 | "peer": true, 1280 | "engines": { 1281 | "node": ">=0.10.0" 1282 | } 1283 | }, 1284 | "node_modules/object-assign": { 1285 | "version": "4.1.1", 1286 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1287 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", 1288 | "peer": true, 1289 | "engines": { 1290 | "node": ">=0.10.0" 1291 | } 1292 | }, 1293 | "node_modules/object-hash": { 1294 | "version": "3.0.0", 1295 | "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", 1296 | "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", 1297 | "peer": true, 1298 | "engines": { 1299 | "node": ">= 6" 1300 | } 1301 | }, 1302 | "node_modules/package-json-from-dist": { 1303 | "version": "1.0.0", 1304 | "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", 1305 | "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", 1306 | "peer": true 1307 | }, 1308 | "node_modules/path-key": { 1309 | "version": "3.1.1", 1310 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 1311 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 1312 | "peer": true, 1313 | "engines": { 1314 | "node": ">=8" 1315 | } 1316 | }, 1317 | "node_modules/path-parse": { 1318 | "version": "1.0.7", 1319 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 1320 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 1321 | "peer": true 1322 | }, 1323 | "node_modules/path-scurry": { 1324 | "version": "1.11.1", 1325 | "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", 1326 | "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", 1327 | "peer": true, 1328 | "dependencies": { 1329 | "lru-cache": "^10.2.0", 1330 | "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" 1331 | }, 1332 | "engines": { 1333 | "node": ">=16 || 14 >=14.18" 1334 | }, 1335 | "funding": { 1336 | "url": "https://github.com/sponsors/isaacs" 1337 | } 1338 | }, 1339 | "node_modules/picocolors": { 1340 | "version": "1.1.0", 1341 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", 1342 | "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", 1343 | "peer": true 1344 | }, 1345 | "node_modules/picomatch": { 1346 | "version": "2.3.1", 1347 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1348 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1349 | "peer": true, 1350 | "engines": { 1351 | "node": ">=8.6" 1352 | }, 1353 | "funding": { 1354 | "url": "https://github.com/sponsors/jonschlinkert" 1355 | } 1356 | }, 1357 | "node_modules/pify": { 1358 | "version": "2.3.0", 1359 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 1360 | "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", 1361 | "peer": true, 1362 | "engines": { 1363 | "node": ">=0.10.0" 1364 | } 1365 | }, 1366 | "node_modules/pirates": { 1367 | "version": "4.0.6", 1368 | "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", 1369 | "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", 1370 | "peer": true, 1371 | "engines": { 1372 | "node": ">= 6" 1373 | } 1374 | }, 1375 | "node_modules/postcss": { 1376 | "version": "8.4.45", 1377 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.45.tgz", 1378 | "integrity": "sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==", 1379 | "funding": [ 1380 | { 1381 | "type": "opencollective", 1382 | "url": "https://opencollective.com/postcss/" 1383 | }, 1384 | { 1385 | "type": "tidelift", 1386 | "url": "https://tidelift.com/funding/github/npm/postcss" 1387 | }, 1388 | { 1389 | "type": "github", 1390 | "url": "https://github.com/sponsors/ai" 1391 | } 1392 | ], 1393 | "peer": true, 1394 | "dependencies": { 1395 | "nanoid": "^3.3.7", 1396 | "picocolors": "^1.0.1", 1397 | "source-map-js": "^1.2.0" 1398 | }, 1399 | "engines": { 1400 | "node": "^10 || ^12 || >=14" 1401 | } 1402 | }, 1403 | "node_modules/postcss-import": { 1404 | "version": "15.1.0", 1405 | "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", 1406 | "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", 1407 | "peer": true, 1408 | "dependencies": { 1409 | "postcss-value-parser": "^4.0.0", 1410 | "read-cache": "^1.0.0", 1411 | "resolve": "^1.1.7" 1412 | }, 1413 | "engines": { 1414 | "node": ">=14.0.0" 1415 | }, 1416 | "peerDependencies": { 1417 | "postcss": "^8.0.0" 1418 | } 1419 | }, 1420 | "node_modules/postcss-js": { 1421 | "version": "4.0.1", 1422 | "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", 1423 | "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", 1424 | "peer": true, 1425 | "dependencies": { 1426 | "camelcase-css": "^2.0.1" 1427 | }, 1428 | "engines": { 1429 | "node": "^12 || ^14 || >= 16" 1430 | }, 1431 | "funding": { 1432 | "type": "opencollective", 1433 | "url": "https://opencollective.com/postcss/" 1434 | }, 1435 | "peerDependencies": { 1436 | "postcss": "^8.4.21" 1437 | } 1438 | }, 1439 | "node_modules/postcss-load-config": { 1440 | "version": "4.0.2", 1441 | "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", 1442 | "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", 1443 | "funding": [ 1444 | { 1445 | "type": "opencollective", 1446 | "url": "https://opencollective.com/postcss/" 1447 | }, 1448 | { 1449 | "type": "github", 1450 | "url": "https://github.com/sponsors/ai" 1451 | } 1452 | ], 1453 | "peer": true, 1454 | "dependencies": { 1455 | "lilconfig": "^3.0.0", 1456 | "yaml": "^2.3.4" 1457 | }, 1458 | "engines": { 1459 | "node": ">= 14" 1460 | }, 1461 | "peerDependencies": { 1462 | "postcss": ">=8.0.9", 1463 | "ts-node": ">=9.0.0" 1464 | }, 1465 | "peerDependenciesMeta": { 1466 | "postcss": { 1467 | "optional": true 1468 | }, 1469 | "ts-node": { 1470 | "optional": true 1471 | } 1472 | } 1473 | }, 1474 | "node_modules/postcss-load-config/node_modules/lilconfig": { 1475 | "version": "3.1.2", 1476 | "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", 1477 | "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", 1478 | "peer": true, 1479 | "engines": { 1480 | "node": ">=14" 1481 | }, 1482 | "funding": { 1483 | "url": "https://github.com/sponsors/antonk52" 1484 | } 1485 | }, 1486 | "node_modules/postcss-nested": { 1487 | "version": "6.2.0", 1488 | "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", 1489 | "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", 1490 | "funding": [ 1491 | { 1492 | "type": "opencollective", 1493 | "url": "https://opencollective.com/postcss/" 1494 | }, 1495 | { 1496 | "type": "github", 1497 | "url": "https://github.com/sponsors/ai" 1498 | } 1499 | ], 1500 | "peer": true, 1501 | "dependencies": { 1502 | "postcss-selector-parser": "^6.1.1" 1503 | }, 1504 | "engines": { 1505 | "node": ">=12.0" 1506 | }, 1507 | "peerDependencies": { 1508 | "postcss": "^8.2.14" 1509 | } 1510 | }, 1511 | "node_modules/postcss-selector-parser": { 1512 | "version": "6.1.2", 1513 | "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", 1514 | "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", 1515 | "peer": true, 1516 | "dependencies": { 1517 | "cssesc": "^3.0.0", 1518 | "util-deprecate": "^1.0.2" 1519 | }, 1520 | "engines": { 1521 | "node": ">=4" 1522 | } 1523 | }, 1524 | "node_modules/postcss-value-parser": { 1525 | "version": "4.2.0", 1526 | "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", 1527 | "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", 1528 | "peer": true 1529 | }, 1530 | "node_modules/queue-microtask": { 1531 | "version": "1.2.3", 1532 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 1533 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 1534 | "funding": [ 1535 | { 1536 | "type": "github", 1537 | "url": "https://github.com/sponsors/feross" 1538 | }, 1539 | { 1540 | "type": "patreon", 1541 | "url": "https://www.patreon.com/feross" 1542 | }, 1543 | { 1544 | "type": "consulting", 1545 | "url": "https://feross.org/support" 1546 | } 1547 | ], 1548 | "peer": true 1549 | }, 1550 | "node_modules/react": { 1551 | "version": "17.0.2", 1552 | "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", 1553 | "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", 1554 | "peer": true, 1555 | "dependencies": { 1556 | "loose-envify": "^1.1.0", 1557 | "object-assign": "^4.1.1" 1558 | }, 1559 | "engines": { 1560 | "node": ">=0.10.0" 1561 | } 1562 | }, 1563 | "node_modules/react-dom": { 1564 | "version": "17.0.2", 1565 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", 1566 | "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", 1567 | "peer": true, 1568 | "dependencies": { 1569 | "loose-envify": "^1.1.0", 1570 | "object-assign": "^4.1.1", 1571 | "scheduler": "^0.20.2" 1572 | }, 1573 | "peerDependencies": { 1574 | "react": "17.0.2" 1575 | } 1576 | }, 1577 | "node_modules/react-remove-scroll": { 1578 | "version": "2.5.7", 1579 | "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.7.tgz", 1580 | "integrity": "sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==", 1581 | "dependencies": { 1582 | "react-remove-scroll-bar": "^2.3.4", 1583 | "react-style-singleton": "^2.2.1", 1584 | "tslib": "^2.1.0", 1585 | "use-callback-ref": "^1.3.0", 1586 | "use-sidecar": "^1.1.2" 1587 | }, 1588 | "engines": { 1589 | "node": ">=10" 1590 | }, 1591 | "peerDependencies": { 1592 | "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", 1593 | "react": "^16.8.0 || ^17.0.0 || ^18.0.0" 1594 | }, 1595 | "peerDependenciesMeta": { 1596 | "@types/react": { 1597 | "optional": true 1598 | } 1599 | } 1600 | }, 1601 | "node_modules/react-remove-scroll-bar": { 1602 | "version": "2.3.6", 1603 | "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz", 1604 | "integrity": "sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==", 1605 | "dependencies": { 1606 | "react-style-singleton": "^2.2.1", 1607 | "tslib": "^2.0.0" 1608 | }, 1609 | "engines": { 1610 | "node": ">=10" 1611 | }, 1612 | "peerDependencies": { 1613 | "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", 1614 | "react": "^16.8.0 || ^17.0.0 || ^18.0.0" 1615 | }, 1616 | "peerDependenciesMeta": { 1617 | "@types/react": { 1618 | "optional": true 1619 | } 1620 | } 1621 | }, 1622 | "node_modules/react-style-singleton": { 1623 | "version": "2.2.1", 1624 | "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", 1625 | "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", 1626 | "dependencies": { 1627 | "get-nonce": "^1.0.0", 1628 | "invariant": "^2.2.4", 1629 | "tslib": "^2.0.0" 1630 | }, 1631 | "engines": { 1632 | "node": ">=10" 1633 | }, 1634 | "peerDependencies": { 1635 | "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", 1636 | "react": "^16.8.0 || ^17.0.0 || ^18.0.0" 1637 | }, 1638 | "peerDependenciesMeta": { 1639 | "@types/react": { 1640 | "optional": true 1641 | } 1642 | } 1643 | }, 1644 | "node_modules/read-cache": { 1645 | "version": "1.0.0", 1646 | "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", 1647 | "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", 1648 | "peer": true, 1649 | "dependencies": { 1650 | "pify": "^2.3.0" 1651 | } 1652 | }, 1653 | "node_modules/readdirp": { 1654 | "version": "3.6.0", 1655 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 1656 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 1657 | "peer": true, 1658 | "dependencies": { 1659 | "picomatch": "^2.2.1" 1660 | }, 1661 | "engines": { 1662 | "node": ">=8.10.0" 1663 | } 1664 | }, 1665 | "node_modules/resolve": { 1666 | "version": "1.22.8", 1667 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", 1668 | "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", 1669 | "peer": true, 1670 | "dependencies": { 1671 | "is-core-module": "^2.13.0", 1672 | "path-parse": "^1.0.7", 1673 | "supports-preserve-symlinks-flag": "^1.0.0" 1674 | }, 1675 | "bin": { 1676 | "resolve": "bin/resolve" 1677 | }, 1678 | "funding": { 1679 | "url": "https://github.com/sponsors/ljharb" 1680 | } 1681 | }, 1682 | "node_modules/reusify": { 1683 | "version": "1.0.4", 1684 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 1685 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 1686 | "peer": true, 1687 | "engines": { 1688 | "iojs": ">=1.0.0", 1689 | "node": ">=0.10.0" 1690 | } 1691 | }, 1692 | "node_modules/run-parallel": { 1693 | "version": "1.2.0", 1694 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 1695 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 1696 | "funding": [ 1697 | { 1698 | "type": "github", 1699 | "url": "https://github.com/sponsors/feross" 1700 | }, 1701 | { 1702 | "type": "patreon", 1703 | "url": "https://www.patreon.com/feross" 1704 | }, 1705 | { 1706 | "type": "consulting", 1707 | "url": "https://feross.org/support" 1708 | } 1709 | ], 1710 | "peer": true, 1711 | "dependencies": { 1712 | "queue-microtask": "^1.2.2" 1713 | } 1714 | }, 1715 | "node_modules/scheduler": { 1716 | "version": "0.20.2", 1717 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", 1718 | "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", 1719 | "peer": true, 1720 | "dependencies": { 1721 | "loose-envify": "^1.1.0", 1722 | "object-assign": "^4.1.1" 1723 | } 1724 | }, 1725 | "node_modules/shebang-command": { 1726 | "version": "2.0.0", 1727 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 1728 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 1729 | "peer": true, 1730 | "dependencies": { 1731 | "shebang-regex": "^3.0.0" 1732 | }, 1733 | "engines": { 1734 | "node": ">=8" 1735 | } 1736 | }, 1737 | "node_modules/shebang-regex": { 1738 | "version": "3.0.0", 1739 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 1740 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 1741 | "peer": true, 1742 | "engines": { 1743 | "node": ">=8" 1744 | } 1745 | }, 1746 | "node_modules/signal-exit": { 1747 | "version": "4.1.0", 1748 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", 1749 | "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", 1750 | "peer": true, 1751 | "engines": { 1752 | "node": ">=14" 1753 | }, 1754 | "funding": { 1755 | "url": "https://github.com/sponsors/isaacs" 1756 | } 1757 | }, 1758 | "node_modules/source-map-js": { 1759 | "version": "1.2.0", 1760 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", 1761 | "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", 1762 | "peer": true, 1763 | "engines": { 1764 | "node": ">=0.10.0" 1765 | } 1766 | }, 1767 | "node_modules/string-width": { 1768 | "version": "5.1.2", 1769 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", 1770 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", 1771 | "peer": true, 1772 | "dependencies": { 1773 | "eastasianwidth": "^0.2.0", 1774 | "emoji-regex": "^9.2.2", 1775 | "strip-ansi": "^7.0.1" 1776 | }, 1777 | "engines": { 1778 | "node": ">=12" 1779 | }, 1780 | "funding": { 1781 | "url": "https://github.com/sponsors/sindresorhus" 1782 | } 1783 | }, 1784 | "node_modules/string-width-cjs": { 1785 | "name": "string-width", 1786 | "version": "4.2.3", 1787 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 1788 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 1789 | "peer": true, 1790 | "dependencies": { 1791 | "emoji-regex": "^8.0.0", 1792 | "is-fullwidth-code-point": "^3.0.0", 1793 | "strip-ansi": "^6.0.1" 1794 | }, 1795 | "engines": { 1796 | "node": ">=8" 1797 | } 1798 | }, 1799 | "node_modules/string-width-cjs/node_modules/ansi-regex": { 1800 | "version": "5.0.1", 1801 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 1802 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 1803 | "peer": true, 1804 | "engines": { 1805 | "node": ">=8" 1806 | } 1807 | }, 1808 | "node_modules/string-width-cjs/node_modules/emoji-regex": { 1809 | "version": "8.0.0", 1810 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1811 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 1812 | "peer": true 1813 | }, 1814 | "node_modules/string-width-cjs/node_modules/strip-ansi": { 1815 | "version": "6.0.1", 1816 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1817 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1818 | "peer": true, 1819 | "dependencies": { 1820 | "ansi-regex": "^5.0.1" 1821 | }, 1822 | "engines": { 1823 | "node": ">=8" 1824 | } 1825 | }, 1826 | "node_modules/strip-ansi": { 1827 | "version": "7.1.0", 1828 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", 1829 | "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", 1830 | "peer": true, 1831 | "dependencies": { 1832 | "ansi-regex": "^6.0.1" 1833 | }, 1834 | "engines": { 1835 | "node": ">=12" 1836 | }, 1837 | "funding": { 1838 | "url": "https://github.com/chalk/strip-ansi?sponsor=1" 1839 | } 1840 | }, 1841 | "node_modules/strip-ansi-cjs": { 1842 | "name": "strip-ansi", 1843 | "version": "6.0.1", 1844 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1845 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1846 | "peer": true, 1847 | "dependencies": { 1848 | "ansi-regex": "^5.0.1" 1849 | }, 1850 | "engines": { 1851 | "node": ">=8" 1852 | } 1853 | }, 1854 | "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { 1855 | "version": "5.0.1", 1856 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 1857 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 1858 | "peer": true, 1859 | "engines": { 1860 | "node": ">=8" 1861 | } 1862 | }, 1863 | "node_modules/sucrase": { 1864 | "version": "3.35.0", 1865 | "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", 1866 | "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", 1867 | "peer": true, 1868 | "dependencies": { 1869 | "@jridgewell/gen-mapping": "^0.3.2", 1870 | "commander": "^4.0.0", 1871 | "glob": "^10.3.10", 1872 | "lines-and-columns": "^1.1.6", 1873 | "mz": "^2.7.0", 1874 | "pirates": "^4.0.1", 1875 | "ts-interface-checker": "^0.1.9" 1876 | }, 1877 | "bin": { 1878 | "sucrase": "bin/sucrase", 1879 | "sucrase-node": "bin/sucrase-node" 1880 | }, 1881 | "engines": { 1882 | "node": ">=16 || 14 >=14.17" 1883 | } 1884 | }, 1885 | "node_modules/supports-preserve-symlinks-flag": { 1886 | "version": "1.0.0", 1887 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 1888 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 1889 | "peer": true, 1890 | "engines": { 1891 | "node": ">= 0.4" 1892 | }, 1893 | "funding": { 1894 | "url": "https://github.com/sponsors/ljharb" 1895 | } 1896 | }, 1897 | "node_modules/tailwind-merge": { 1898 | "version": "2.5.2", 1899 | "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.5.2.tgz", 1900 | "integrity": "sha512-kjEBm+pvD+6eAwzJL2Bi+02/9LFLal1Gs61+QB7HvTfQQ0aXwC5LGT8PEt1gS0CWKktKe6ysPTAy3cBC5MeiIg==", 1901 | "funding": { 1902 | "type": "github", 1903 | "url": "https://github.com/sponsors/dcastil" 1904 | } 1905 | }, 1906 | "node_modules/tailwindcss": { 1907 | "version": "3.4.10", 1908 | "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.10.tgz", 1909 | "integrity": "sha512-KWZkVPm7yJRhdu4SRSl9d4AK2wM3a50UsvgHZO7xY77NQr2V+fIrEuoDGQcbvswWvFGbS2f6e+jC/6WJm1Dl0w==", 1910 | "peer": true, 1911 | "dependencies": { 1912 | "@alloc/quick-lru": "^5.2.0", 1913 | "arg": "^5.0.2", 1914 | "chokidar": "^3.5.3", 1915 | "didyoumean": "^1.2.2", 1916 | "dlv": "^1.1.3", 1917 | "fast-glob": "^3.3.0", 1918 | "glob-parent": "^6.0.2", 1919 | "is-glob": "^4.0.3", 1920 | "jiti": "^1.21.0", 1921 | "lilconfig": "^2.1.0", 1922 | "micromatch": "^4.0.5", 1923 | "normalize-path": "^3.0.0", 1924 | "object-hash": "^3.0.0", 1925 | "picocolors": "^1.0.0", 1926 | "postcss": "^8.4.23", 1927 | "postcss-import": "^15.1.0", 1928 | "postcss-js": "^4.0.1", 1929 | "postcss-load-config": "^4.0.1", 1930 | "postcss-nested": "^6.0.1", 1931 | "postcss-selector-parser": "^6.0.11", 1932 | "resolve": "^1.22.2", 1933 | "sucrase": "^3.32.0" 1934 | }, 1935 | "bin": { 1936 | "tailwind": "lib/cli.js", 1937 | "tailwindcss": "lib/cli.js" 1938 | }, 1939 | "engines": { 1940 | "node": ">=14.0.0" 1941 | } 1942 | }, 1943 | "node_modules/tailwindcss-animate": { 1944 | "version": "1.0.7", 1945 | "resolved": "https://registry.npmjs.org/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz", 1946 | "integrity": "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==", 1947 | "peerDependencies": { 1948 | "tailwindcss": ">=3.0.0 || insiders" 1949 | } 1950 | }, 1951 | "node_modules/thenify": { 1952 | "version": "3.3.1", 1953 | "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", 1954 | "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", 1955 | "peer": true, 1956 | "dependencies": { 1957 | "any-promise": "^1.0.0" 1958 | } 1959 | }, 1960 | "node_modules/thenify-all": { 1961 | "version": "1.6.0", 1962 | "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", 1963 | "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", 1964 | "peer": true, 1965 | "dependencies": { 1966 | "thenify": ">= 3.1.0 < 4" 1967 | }, 1968 | "engines": { 1969 | "node": ">=0.8" 1970 | } 1971 | }, 1972 | "node_modules/to-regex-range": { 1973 | "version": "5.0.1", 1974 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1975 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1976 | "peer": true, 1977 | "dependencies": { 1978 | "is-number": "^7.0.0" 1979 | }, 1980 | "engines": { 1981 | "node": ">=8.0" 1982 | } 1983 | }, 1984 | "node_modules/ts-interface-checker": { 1985 | "version": "0.1.13", 1986 | "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", 1987 | "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", 1988 | "peer": true 1989 | }, 1990 | "node_modules/tslib": { 1991 | "version": "2.7.0", 1992 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", 1993 | "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" 1994 | }, 1995 | "node_modules/typescript": { 1996 | "version": "5.5.4", 1997 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", 1998 | "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", 1999 | "dev": true, 2000 | "bin": { 2001 | "tsc": "bin/tsc", 2002 | "tsserver": "bin/tsserver" 2003 | }, 2004 | "engines": { 2005 | "node": ">=14.17" 2006 | } 2007 | }, 2008 | "node_modules/use-callback-ref": { 2009 | "version": "1.3.2", 2010 | "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.2.tgz", 2011 | "integrity": "sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==", 2012 | "dependencies": { 2013 | "tslib": "^2.0.0" 2014 | }, 2015 | "engines": { 2016 | "node": ">=10" 2017 | }, 2018 | "peerDependencies": { 2019 | "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", 2020 | "react": "^16.8.0 || ^17.0.0 || ^18.0.0" 2021 | }, 2022 | "peerDependenciesMeta": { 2023 | "@types/react": { 2024 | "optional": true 2025 | } 2026 | } 2027 | }, 2028 | "node_modules/use-sidecar": { 2029 | "version": "1.1.2", 2030 | "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", 2031 | "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", 2032 | "dependencies": { 2033 | "detect-node-es": "^1.1.0", 2034 | "tslib": "^2.0.0" 2035 | }, 2036 | "engines": { 2037 | "node": ">=10" 2038 | }, 2039 | "peerDependencies": { 2040 | "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", 2041 | "react": "^16.8.0 || ^17.0.0 || ^18.0.0" 2042 | }, 2043 | "peerDependenciesMeta": { 2044 | "@types/react": { 2045 | "optional": true 2046 | } 2047 | } 2048 | }, 2049 | "node_modules/util-deprecate": { 2050 | "version": "1.0.2", 2051 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2052 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", 2053 | "peer": true 2054 | }, 2055 | "node_modules/which": { 2056 | "version": "2.0.2", 2057 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 2058 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 2059 | "peer": true, 2060 | "dependencies": { 2061 | "isexe": "^2.0.0" 2062 | }, 2063 | "bin": { 2064 | "node-which": "bin/node-which" 2065 | }, 2066 | "engines": { 2067 | "node": ">= 8" 2068 | } 2069 | }, 2070 | "node_modules/wrap-ansi": { 2071 | "version": "8.1.0", 2072 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", 2073 | "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", 2074 | "peer": true, 2075 | "dependencies": { 2076 | "ansi-styles": "^6.1.0", 2077 | "string-width": "^5.0.1", 2078 | "strip-ansi": "^7.0.1" 2079 | }, 2080 | "engines": { 2081 | "node": ">=12" 2082 | }, 2083 | "funding": { 2084 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 2085 | } 2086 | }, 2087 | "node_modules/wrap-ansi-cjs": { 2088 | "name": "wrap-ansi", 2089 | "version": "7.0.0", 2090 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 2091 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 2092 | "peer": true, 2093 | "dependencies": { 2094 | "ansi-styles": "^4.0.0", 2095 | "string-width": "^4.1.0", 2096 | "strip-ansi": "^6.0.0" 2097 | }, 2098 | "engines": { 2099 | "node": ">=10" 2100 | }, 2101 | "funding": { 2102 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 2103 | } 2104 | }, 2105 | "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { 2106 | "version": "5.0.1", 2107 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 2108 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 2109 | "peer": true, 2110 | "engines": { 2111 | "node": ">=8" 2112 | } 2113 | }, 2114 | "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { 2115 | "version": "4.3.0", 2116 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 2117 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 2118 | "peer": true, 2119 | "dependencies": { 2120 | "color-convert": "^2.0.1" 2121 | }, 2122 | "engines": { 2123 | "node": ">=8" 2124 | }, 2125 | "funding": { 2126 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 2127 | } 2128 | }, 2129 | "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { 2130 | "version": "8.0.0", 2131 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 2132 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 2133 | "peer": true 2134 | }, 2135 | "node_modules/wrap-ansi-cjs/node_modules/string-width": { 2136 | "version": "4.2.3", 2137 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 2138 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 2139 | "peer": true, 2140 | "dependencies": { 2141 | "emoji-regex": "^8.0.0", 2142 | "is-fullwidth-code-point": "^3.0.0", 2143 | "strip-ansi": "^6.0.1" 2144 | }, 2145 | "engines": { 2146 | "node": ">=8" 2147 | } 2148 | }, 2149 | "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { 2150 | "version": "6.0.1", 2151 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2152 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2153 | "peer": true, 2154 | "dependencies": { 2155 | "ansi-regex": "^5.0.1" 2156 | }, 2157 | "engines": { 2158 | "node": ">=8" 2159 | } 2160 | }, 2161 | "node_modules/yaml": { 2162 | "version": "2.5.1", 2163 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", 2164 | "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", 2165 | "peer": true, 2166 | "bin": { 2167 | "yaml": "bin.mjs" 2168 | }, 2169 | "engines": { 2170 | "node": ">= 14" 2171 | } 2172 | } 2173 | } 2174 | } 2175 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "dynamic-prompt", 3 | "version": "0.0.1", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "create-schema": "node scripts/create-schema.js" 9 | }, 10 | "peerDependencies": { 11 | "react": "^17.0.2", 12 | "react-dom": "^17.0.2" 13 | }, 14 | "keywords": [], 15 | "author": "", 16 | "license": "ISC", 17 | "dependencies": { 18 | "@radix-ui/react-icons": "^1.3.0", 19 | "@radix-ui/react-select": "^2.1.1", 20 | "class-variance-authority": "^0.7.0", 21 | "clsx": "^2.1.1", 22 | "tailwind-merge": "^2.5.2", 23 | "tailwindcss-animate": "^1.0.7" 24 | }, 25 | "devDependencies": { 26 | "@types/react": "^18.3.5", 27 | "typescript": "^5.5.4" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "dynamic-prompt", 3 | "type": "registry:block", 4 | "dependencies": [], 5 | "devDependencies": [], 6 | "registryDependencies": [ 7 | "select" 8 | ], 9 | "files": [ 10 | { 11 | "path": "components/dynamic-prompt.tsx", 12 | "type": "registry:block", 13 | "content": "\"use client\";\n\nimport React, { useRef, useState, useEffect } from \"react\";\nimport {\n Select as DefaultSelect,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\";\n\ninterface TextPart {\n type: \"text\" | \"select\";\n key?: string;\n value: string;\n}\n\nfunction parseText(text: string): TextPart[] {\n const regex = /\\{([^}]+)\\}/g;\n const parts: TextPart[] = [];\n let lastIndex = 0;\n let match: RegExpExecArray | null;\n\n while ((match = regex.exec(text)) !== null) {\n if (match.index > lastIndex) {\n parts.push({ type: \"text\", value: text.slice(lastIndex, match.index) });\n }\n parts.push({ type: \"select\", key: match[1], value: \"\" });\n lastIndex = regex.lastIndex;\n }\n\n if (lastIndex < text.length) {\n parts.push({ type: \"text\", value: text.slice(lastIndex) });\n }\n\n return parts;\n}\n\nfunction reconstructText(textParts: TextPart[]): string {\n return textParts\n .map((part) => {\n if (part.type === \"text\" || part.type === \"select\") {\n return part.value;\n } else {\n return `{${part.key}}`;\n }\n })\n .join(\"\");\n}\n\ninterface DynamicTextFieldProps {\n onChange: (text: string) => void;\n CustomSelect?: React.ComponentType;\n data: { text: string; options: { [key: string]: string[] } };\n}\n\nconst DynamicTextField: React.FC = ({\n onChange,\n CustomSelect,\n data,\n}) => {\n const [textParts, setTextParts] = useState(parseText(data.text));\n const inputRefs = useRef<(HTMLInputElement | null)[]>([]);\n const spanRefs = useRef<(HTMLSpanElement | null)[]>([]);\n\n const handleChange = (index: number, value: string) => {\n const newTextParts = [...textParts];\n newTextParts[index].value = value;\n console.log(newTextParts);\n setTextParts(newTextParts);\n onChange(reconstructText(newTextParts));\n };\n\n useEffect(() => {\n textParts.forEach((part, index) => {\n if (part.type === \"text\" && spanRefs.current[index]) {\n spanRefs.current[index]!.textContent = part.value;\n inputRefs.current[index]!.style.width = `${\n spanRefs.current[index]!.offsetWidth\n }px`;\n }\n });\n }, [textParts]);\n\n const SelectComponent: React.ComponentType =\n CustomSelect || DefaultSelect;\n\n const setRef =\n (\n index: number,\n refs: (HTMLSpanElement | null)[] | (HTMLInputElement | null)[]\n ) =>\n (el: HTMLSpanElement | HTMLInputElement | null) => {\n if (!el || !refs) return;\n refs[index] = el;\n };\n\n return (\n
\n {textParts.map((part, index) =>\n part.type === \"text\" ? (\n
\n handleChange(index, e.target.value)}\n className=\"outline-none bg-transparent min-w-0\"\n style={{ width: \"fit-content\" }}\n />\n \n {part.value}\n \n
\n ) : (\n handleChange(index, value)}\n options={data.options[part.key!]}\n placeholder={`Select ${part.key}`}\n defaultValue={data.options[0]}\n >\n {CustomSelect ? null : (\n <>\n \n \n \n \n {data.options[part.key!].map((option) => (\n \n {option}\n \n ))}\n \n \n )}\n \n )\n )}\n
\n );\n};\n\nexport default DynamicTextField;\n" 14 | } 15 | ], 16 | "tailwind": {}, 17 | "cssVars": {}, 18 | "meta": { 19 | "importSpecifier": "DynamicPrompt", 20 | "moduleSpecifier": "@/components/dynamic-prompt" 21 | } 22 | } -------------------------------------------------------------------------------- /scripts/create-schema.js: -------------------------------------------------------------------------------- 1 | const fs = require("fs"); 2 | 3 | fs.readFile( 4 | __dirname + "/../src/dynamic-prompt.tsx", 5 | "utf8", 6 | (err, content) => { 7 | if (err) { 8 | console.error(err); 9 | return; 10 | } 11 | 12 | const schema = { 13 | name: "dynamic-prompt", 14 | type: "registry:block", 15 | dependencies: [], 16 | devDependencies: [], 17 | registryDependencies: ["select"], 18 | files: [ 19 | { 20 | path: "components/dynamic-prompt.tsx", 21 | type: "registry:block", 22 | content: content, 23 | }, 24 | ], 25 | tailwind: {}, 26 | cssVars: {}, 27 | meta: { 28 | importSpecifier: "DynamicPrompt", 29 | moduleSpecifier: "@/components/dynamic-prompt", 30 | }, 31 | }; 32 | 33 | fs.writeFile("./schema.json", JSON.stringify(schema, null, 2), (err) => { 34 | if (err) { 35 | console.error(err); 36 | return; 37 | } 38 | console.log("schema created!"); 39 | }); 40 | } 41 | ); 42 | -------------------------------------------------------------------------------- /src/components/ui/select.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import * as React from "react"; 4 | import { 5 | CaretSortIcon, 6 | CheckIcon, 7 | ChevronDownIcon, 8 | ChevronUpIcon, 9 | } from "@radix-ui/react-icons"; 10 | import * as SelectPrimitive from "@radix-ui/react-select"; 11 | 12 | import { cn } from "@/lib/utils"; 13 | 14 | const Select = SelectPrimitive.Root; 15 | 16 | const SelectGroup = SelectPrimitive.Group; 17 | 18 | const SelectValue = SelectPrimitive.Value; 19 | 20 | const SelectTrigger = React.forwardRef< 21 | React.ElementRef, 22 | React.ComponentPropsWithoutRef 23 | >(({ className, children, ...props }, ref) => ( 24 | span]:line-clamp-1", 28 | className 29 | )} 30 | {...props} 31 | > 32 | {children} 33 | 34 | 35 | 36 | 37 | )); 38 | SelectTrigger.displayName = SelectPrimitive.Trigger.displayName; 39 | 40 | const SelectScrollUpButton = React.forwardRef< 41 | React.ElementRef, 42 | React.ComponentPropsWithoutRef 43 | >(({ className, ...props }, ref) => ( 44 | 52 | 53 | 54 | )); 55 | SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName; 56 | 57 | const SelectScrollDownButton = React.forwardRef< 58 | React.ElementRef, 59 | React.ComponentPropsWithoutRef 60 | >(({ className, ...props }, ref) => ( 61 | 69 | 70 | 71 | )); 72 | SelectScrollDownButton.displayName = 73 | SelectPrimitive.ScrollDownButton.displayName; 74 | 75 | const SelectContent = React.forwardRef< 76 | React.ElementRef, 77 | React.ComponentPropsWithoutRef 78 | >(({ className, children, position = "popper", ...props }, ref) => ( 79 | 80 | 91 | 92 | 99 | {children} 100 | 101 | 102 | 103 | 104 | )); 105 | SelectContent.displayName = SelectPrimitive.Content.displayName; 106 | 107 | const SelectLabel = React.forwardRef< 108 | React.ElementRef, 109 | React.ComponentPropsWithoutRef 110 | >(({ className, ...props }, ref) => ( 111 | 116 | )); 117 | SelectLabel.displayName = SelectPrimitive.Label.displayName; 118 | 119 | const SelectItem = React.forwardRef< 120 | React.ElementRef, 121 | React.ComponentPropsWithoutRef 122 | >(({ className, children, ...props }, ref) => ( 123 | 131 | 132 | 133 | 134 | 135 | 136 | {children} 137 | 138 | )); 139 | SelectItem.displayName = SelectPrimitive.Item.displayName; 140 | 141 | const SelectSeparator = React.forwardRef< 142 | React.ElementRef, 143 | React.ComponentPropsWithoutRef 144 | >(({ className, ...props }, ref) => ( 145 | 150 | )); 151 | SelectSeparator.displayName = SelectPrimitive.Separator.displayName; 152 | 153 | export { 154 | Select, 155 | SelectGroup, 156 | SelectValue, 157 | SelectTrigger, 158 | SelectContent, 159 | SelectLabel, 160 | SelectItem, 161 | SelectSeparator, 162 | SelectScrollUpButton, 163 | SelectScrollDownButton, 164 | }; 165 | -------------------------------------------------------------------------------- /src/dynamic-prompt.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import React, { useRef, useState, useEffect } from "react"; 4 | import { 5 | Select as DefaultSelect, 6 | SelectContent, 7 | SelectItem, 8 | SelectTrigger, 9 | SelectValue, 10 | } from "@/components/ui/select"; 11 | 12 | interface TextPart { 13 | type: "text" | "select"; 14 | key?: string; 15 | value: string; 16 | } 17 | 18 | function parseText(text: string): TextPart[] { 19 | const regex = /\{([^}]+)\}/g; 20 | const parts: TextPart[] = []; 21 | let lastIndex = 0; 22 | let match: RegExpExecArray | null; 23 | 24 | while ((match = regex.exec(text)) !== null) { 25 | if (match.index > lastIndex) { 26 | parts.push({ type: "text", value: text.slice(lastIndex, match.index) }); 27 | } 28 | parts.push({ type: "select", key: match[1], value: "" }); 29 | lastIndex = regex.lastIndex; 30 | } 31 | 32 | if (lastIndex < text.length) { 33 | parts.push({ type: "text", value: text.slice(lastIndex) }); 34 | } 35 | 36 | return parts; 37 | } 38 | 39 | function reconstructText(textParts: TextPart[]): string { 40 | return textParts 41 | .map((part) => { 42 | if (part.type === "text" || part.type === "select") { 43 | return part.value; 44 | } else { 45 | return `{${part.key}}`; 46 | } 47 | }) 48 | .join(""); 49 | } 50 | 51 | interface DynamicTextFieldProps { 52 | onChange: (text: string) => void; 53 | CustomSelect?: React.ComponentType; 54 | data: { text: string; options: { [key: string]: string[] } }; 55 | } 56 | 57 | const DynamicTextField: React.FC = ({ 58 | onChange, 59 | CustomSelect, 60 | data, 61 | }) => { 62 | const [textParts, setTextParts] = useState(parseText(data.text)); 63 | const inputRefs = useRef<(HTMLInputElement | null)[]>([]); 64 | const spanRefs = useRef<(HTMLSpanElement | null)[]>([]); 65 | 66 | const handleChange = (index: number, value: string) => { 67 | const newTextParts = [...textParts]; 68 | newTextParts[index].value = value; 69 | console.log(newTextParts); 70 | setTextParts(newTextParts); 71 | onChange(reconstructText(newTextParts)); 72 | }; 73 | 74 | useEffect(() => { 75 | textParts.forEach((part, index) => { 76 | if (part.type === "text" && spanRefs.current[index]) { 77 | spanRefs.current[index]!.textContent = part.value; 78 | inputRefs.current[index]!.style.width = `${ 79 | spanRefs.current[index]!.offsetWidth 80 | }px`; 81 | } 82 | }); 83 | }, [textParts]); 84 | 85 | const SelectComponent: React.ComponentType = 86 | CustomSelect || DefaultSelect; 87 | 88 | const setRef = 89 | ( 90 | index: number, 91 | refs: (HTMLSpanElement | null)[] | (HTMLInputElement | null)[] 92 | ) => 93 | (el: HTMLSpanElement | HTMLInputElement | null) => { 94 | if (!el || !refs) return; 95 | refs[index] = el; 96 | }; 97 | 98 | return ( 99 |
100 | {textParts.map((part, index) => 101 | part.type === "text" ? ( 102 |
103 | handleChange(index, e.target.value)} 108 | className="outline-none bg-transparent min-w-0" 109 | style={{ width: "fit-content" }} 110 | /> 111 | 115 | {part.value} 116 | 117 |
118 | ) : ( 119 | handleChange(index, value)} 122 | options={data.options[part.key!]} 123 | placeholder={`Select ${part.key}`} 124 | defaultValue={data.options[0]} 125 | > 126 | {CustomSelect ? null : ( 127 | <> 128 | 129 | 130 | 131 | 132 | {data.options[part.key!].map((option) => ( 133 | 134 | {option} 135 | 136 | ))} 137 | 138 | 139 | )} 140 | 141 | ) 142 | )} 143 |
144 | ); 145 | }; 146 | 147 | export default DynamicTextField; 148 | -------------------------------------------------------------------------------- /src/lib/utils.ts: -------------------------------------------------------------------------------- 1 | import { clsx, type ClassValue } from "clsx"; 2 | import { twMerge } from "tailwind-merge"; 3 | 4 | export function cn(...inputs: ClassValue[]) { 5 | return twMerge(clsx(inputs)); 6 | } 7 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "jsx": "react", 4 | "baseUrl": ".", 5 | "paths": { 6 | "@/*": ["src/*"] 7 | }, 8 | /* Visit https://aka.ms/tsconfig to read more about this file */ 9 | 10 | /* Projects */ 11 | // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ 12 | // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ 13 | // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ 14 | // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ 15 | // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ 16 | // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ 17 | 18 | /* Language and Environment */ 19 | "target": "es2016" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, 20 | // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ 21 | // "jsx": "preserve", /* Specify what JSX code is generated. */ 22 | // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ 23 | // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ 24 | // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ 25 | // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ 26 | // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ 27 | // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ 28 | // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ 29 | // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ 30 | // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ 31 | 32 | /* Modules */ 33 | "module": "commonjs" /* Specify what module code is generated. */, 34 | // "rootDir": "./", /* Specify the root folder within your source files. */ 35 | // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ 36 | // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ 37 | // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ 38 | // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ 39 | // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ 40 | // "types": [], /* Specify type package names to be included without being referenced in a source file. */ 41 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ 42 | // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ 43 | // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ 44 | // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ 45 | // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ 46 | // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ 47 | // "resolveJsonModule": true, /* Enable importing .json files. */ 48 | // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ 49 | // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ 50 | 51 | /* JavaScript Support */ 52 | // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ 53 | // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ 54 | // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ 55 | 56 | /* Emit */ 57 | // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ 58 | // "declarationMap": true, /* Create sourcemaps for d.ts files. */ 59 | // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ 60 | // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ 61 | // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ 62 | // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ 63 | // "outDir": "./", /* Specify an output folder for all emitted files. */ 64 | // "removeComments": true, /* Disable emitting comments. */ 65 | // "noEmit": true, /* Disable emitting files from a compilation. */ 66 | // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ 67 | // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ 68 | // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ 69 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ 70 | // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ 71 | // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ 72 | // "newLine": "crlf", /* Set the newline character for emitting files. */ 73 | // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ 74 | // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ 75 | // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ 76 | // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ 77 | // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ 78 | 79 | /* Interop Constraints */ 80 | // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ 81 | // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ 82 | // "isolatedDeclarations": true, /* Require sufficient annotation on exports so other tools can trivially generate declaration files. */ 83 | // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ 84 | "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */, 85 | // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ 86 | "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, 87 | 88 | /* Type Checking */ 89 | "strict": true /* Enable all strict type-checking options. */, 90 | // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ 91 | // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ 92 | // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ 93 | // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ 94 | // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ 95 | // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ 96 | // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ 97 | // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ 98 | // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ 99 | // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ 100 | // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ 101 | // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ 102 | // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ 103 | // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ 104 | // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ 105 | // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ 106 | // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ 107 | // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ 108 | 109 | /* Completeness */ 110 | // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ 111 | "skipLibCheck": true /* Skip type checking all .d.ts files. */ 112 | } 113 | } 114 | --------------------------------------------------------------------------------