this repo has no description
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix: mobile and desktop scrollArea design

+463 -848
+145 -701
mast-react-vite/package-lock.json
··· 10 10 "dependencies": { 11 11 "@radix-ui/react-checkbox": "^1.1.2", 12 12 "@radix-ui/react-icons": "^1.3.0", 13 + "@radix-ui/react-scroll-area": "^1.2.3", 14 + "@radix-ui/react-separator": "^1.1.2", 13 15 "@radix-ui/react-slot": "^1.1.2", 14 16 "@radix-ui/react-toggle": "^1.1.2", 15 17 "@radix-ui/react-toggle-group": "^1.1.2", ··· 54 56 "url": "https://github.com/sponsors/sindresorhus" 55 57 } 56 58 }, 57 - "node_modules/@esbuild/aix-ppc64": { 58 - "version": "0.21.5", 59 - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", 60 - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", 61 - "cpu": [ 62 - "ppc64" 63 - ], 64 - "dev": true, 65 - "optional": true, 66 - "os": [ 67 - "aix" 68 - ], 69 - "engines": { 70 - "node": ">=12" 71 - } 72 - }, 73 - "node_modules/@esbuild/android-arm": { 74 - "version": "0.21.5", 75 - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", 76 - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", 77 - "cpu": [ 78 - "arm" 79 - ], 80 - "dev": true, 81 - "optional": true, 82 - "os": [ 83 - "android" 84 - ], 85 - "engines": { 86 - "node": ">=12" 87 - } 88 - }, 89 - "node_modules/@esbuild/android-arm64": { 90 - "version": "0.21.5", 91 - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", 92 - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", 93 - "cpu": [ 94 - "arm64" 95 - ], 96 - "dev": true, 97 - "optional": true, 98 - "os": [ 99 - "android" 100 - ], 101 - "engines": { 102 - "node": ">=12" 103 - } 104 - }, 105 - "node_modules/@esbuild/android-x64": { 106 - "version": "0.21.5", 107 - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", 108 - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", 109 - "cpu": [ 110 - "x64" 111 - ], 112 - "dev": true, 113 - "optional": true, 114 - "os": [ 115 - "android" 116 - ], 117 - "engines": { 118 - "node": ">=12" 119 - } 120 - }, 121 - "node_modules/@esbuild/darwin-arm64": { 122 - "version": "0.21.5", 123 - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", 124 - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", 125 - "cpu": [ 126 - "arm64" 127 - ], 128 - "dev": true, 129 - "optional": true, 130 - "os": [ 131 - "darwin" 132 - ], 133 - "engines": { 134 - "node": ">=12" 135 - } 136 - }, 137 - "node_modules/@esbuild/darwin-x64": { 138 - "version": "0.21.5", 139 - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", 140 - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", 141 - "cpu": [ 142 - "x64" 143 - ], 144 - "dev": true, 145 - "optional": true, 146 - "os": [ 147 - "darwin" 148 - ], 149 - "engines": { 150 - "node": ">=12" 151 - } 152 - }, 153 - "node_modules/@esbuild/freebsd-arm64": { 154 - "version": "0.21.5", 155 - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", 156 - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", 157 - "cpu": [ 158 - "arm64" 159 - ], 160 - "dev": true, 161 - "optional": true, 162 - "os": [ 163 - "freebsd" 164 - ], 165 - "engines": { 166 - "node": ">=12" 167 - } 168 - }, 169 - "node_modules/@esbuild/freebsd-x64": { 170 - "version": "0.21.5", 171 - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", 172 - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", 173 - "cpu": [ 174 - "x64" 175 - ], 176 - "dev": true, 177 - "optional": true, 178 - "os": [ 179 - "freebsd" 180 - ], 181 - "engines": { 182 - "node": ">=12" 183 - } 184 - }, 185 - "node_modules/@esbuild/linux-arm": { 186 - "version": "0.21.5", 187 - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", 188 - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", 189 - "cpu": [ 190 - "arm" 191 - ], 192 - "dev": true, 193 - "optional": true, 194 - "os": [ 195 - "linux" 196 - ], 197 - "engines": { 198 - "node": ">=12" 199 - } 200 - }, 201 - "node_modules/@esbuild/linux-arm64": { 202 - "version": "0.21.5", 203 - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", 204 - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", 205 - "cpu": [ 206 - "arm64" 207 - ], 208 - "dev": true, 209 - "optional": true, 210 - "os": [ 211 - "linux" 212 - ], 213 - "engines": { 214 - "node": ">=12" 215 - } 216 - }, 217 - "node_modules/@esbuild/linux-ia32": { 218 - "version": "0.21.5", 219 - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", 220 - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", 221 - "cpu": [ 222 - "ia32" 223 - ], 224 - "dev": true, 225 - "optional": true, 226 - "os": [ 227 - "linux" 228 - ], 229 - "engines": { 230 - "node": ">=12" 231 - } 232 - }, 233 - "node_modules/@esbuild/linux-loong64": { 234 - "version": "0.21.5", 235 - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", 236 - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", 237 - "cpu": [ 238 - "loong64" 239 - ], 240 - "dev": true, 241 - "optional": true, 242 - "os": [ 243 - "linux" 244 - ], 245 - "engines": { 246 - "node": ">=12" 247 - } 248 - }, 249 - "node_modules/@esbuild/linux-mips64el": { 250 - "version": "0.21.5", 251 - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", 252 - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", 253 - "cpu": [ 254 - "mips64el" 255 - ], 256 - "dev": true, 257 - "optional": true, 258 - "os": [ 259 - "linux" 260 - ], 261 - "engines": { 262 - "node": ">=12" 263 - } 264 - }, 265 - "node_modules/@esbuild/linux-ppc64": { 266 - "version": "0.21.5", 267 - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", 268 - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", 269 - "cpu": [ 270 - "ppc64" 271 - ], 272 - "dev": true, 273 - "optional": true, 274 - "os": [ 275 - "linux" 276 - ], 277 - "engines": { 278 - "node": ">=12" 279 - } 280 - }, 281 - "node_modules/@esbuild/linux-riscv64": { 282 - "version": "0.21.5", 283 - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", 284 - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", 285 - "cpu": [ 286 - "riscv64" 287 - ], 288 - "dev": true, 289 - "optional": true, 290 - "os": [ 291 - "linux" 292 - ], 293 - "engines": { 294 - "node": ">=12" 295 - } 296 - }, 297 - "node_modules/@esbuild/linux-s390x": { 298 - "version": "0.21.5", 299 - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", 300 - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", 301 - "cpu": [ 302 - "s390x" 303 - ], 304 - "dev": true, 305 - "optional": true, 306 - "os": [ 307 - "linux" 308 - ], 309 - "engines": { 310 - "node": ">=12" 311 - } 312 - }, 313 59 "node_modules/@esbuild/linux-x64": { 314 60 "version": "0.21.5", 315 61 "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", ··· 326 72 "node": ">=12" 327 73 } 328 74 }, 329 - "node_modules/@esbuild/netbsd-x64": { 330 - "version": "0.21.5", 331 - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", 332 - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", 333 - "cpu": [ 334 - "x64" 335 - ], 336 - "dev": true, 337 - "optional": true, 338 - "os": [ 339 - "netbsd" 340 - ], 341 - "engines": { 342 - "node": ">=12" 343 - } 344 - }, 345 - "node_modules/@esbuild/openbsd-x64": { 346 - "version": "0.21.5", 347 - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", 348 - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", 349 - "cpu": [ 350 - "x64" 351 - ], 352 - "dev": true, 353 - "optional": true, 354 - "os": [ 355 - "openbsd" 356 - ], 357 - "engines": { 358 - "node": ">=12" 359 - } 360 - }, 361 - "node_modules/@esbuild/sunos-x64": { 362 - "version": "0.21.5", 363 - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", 364 - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", 365 - "cpu": [ 366 - "x64" 367 - ], 368 - "dev": true, 369 - "optional": true, 370 - "os": [ 371 - "sunos" 372 - ], 373 - "engines": { 374 - "node": ">=12" 375 - } 376 - }, 377 - "node_modules/@esbuild/win32-arm64": { 378 - "version": "0.21.5", 379 - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", 380 - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", 381 - "cpu": [ 382 - "arm64" 383 - ], 384 - "dev": true, 385 - "optional": true, 386 - "os": [ 387 - "win32" 388 - ], 389 - "engines": { 390 - "node": ">=12" 391 - } 392 - }, 393 - "node_modules/@esbuild/win32-ia32": { 394 - "version": "0.21.5", 395 - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", 396 - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", 397 - "cpu": [ 398 - "ia32" 399 - ], 400 - "dev": true, 401 - "optional": true, 402 - "os": [ 403 - "win32" 404 - ], 405 - "engines": { 406 - "node": ">=12" 407 - } 408 - }, 409 - "node_modules/@esbuild/win32-x64": { 410 - "version": "0.21.5", 411 - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", 412 - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", 413 - "cpu": [ 414 - "x64" 415 - ], 416 - "dev": true, 417 - "optional": true, 418 - "os": [ 419 - "win32" 420 - ], 421 - "engines": { 422 - "node": ">=12" 423 - } 424 - }, 425 75 "node_modules/@eslint-community/eslint-utils": { 426 76 "version": "4.4.1", 427 77 "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", ··· 696 346 "engines": { 697 347 "node": ">=14" 698 348 } 349 + }, 350 + "node_modules/@radix-ui/number": { 351 + "version": "1.1.0", 352 + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.0.tgz", 353 + "integrity": "sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==" 699 354 }, 700 355 "node_modules/@radix-ui/primitive": { 701 356 "version": "1.1.0", ··· 992 647 } 993 648 } 994 649 }, 650 + "node_modules/@radix-ui/react-scroll-area": { 651 + "version": "1.2.3", 652 + "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.3.tgz", 653 + "integrity": "sha512-l7+NNBfBYYJa9tNqVcP2AGvxdE3lmE6kFTBXdvHgUaZuy+4wGCL1Cl2AfaR7RKyimj7lZURGLwFO59k4eBnDJQ==", 654 + "dependencies": { 655 + "@radix-ui/number": "1.1.0", 656 + "@radix-ui/primitive": "1.1.1", 657 + "@radix-ui/react-compose-refs": "1.1.1", 658 + "@radix-ui/react-context": "1.1.1", 659 + "@radix-ui/react-direction": "1.1.0", 660 + "@radix-ui/react-presence": "1.1.2", 661 + "@radix-ui/react-primitive": "2.0.2", 662 + "@radix-ui/react-use-callback-ref": "1.1.0", 663 + "@radix-ui/react-use-layout-effect": "1.1.0" 664 + }, 665 + "peerDependencies": { 666 + "@types/react": "*", 667 + "@types/react-dom": "*", 668 + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", 669 + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" 670 + }, 671 + "peerDependenciesMeta": { 672 + "@types/react": { 673 + "optional": true 674 + }, 675 + "@types/react-dom": { 676 + "optional": true 677 + } 678 + } 679 + }, 680 + "node_modules/@radix-ui/react-scroll-area/node_modules/@radix-ui/primitive": { 681 + "version": "1.1.1", 682 + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.1.tgz", 683 + "integrity": "sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA==" 684 + }, 685 + "node_modules/@radix-ui/react-scroll-area/node_modules/@radix-ui/react-compose-refs": { 686 + "version": "1.1.1", 687 + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.1.tgz", 688 + "integrity": "sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==", 689 + "peerDependencies": { 690 + "@types/react": "*", 691 + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" 692 + }, 693 + "peerDependenciesMeta": { 694 + "@types/react": { 695 + "optional": true 696 + } 697 + } 698 + }, 699 + "node_modules/@radix-ui/react-scroll-area/node_modules/@radix-ui/react-presence": { 700 + "version": "1.1.2", 701 + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.2.tgz", 702 + "integrity": "sha512-18TFr80t5EVgL9x1SwF/YGtfG+l0BS0PRAlCWBDoBEiDQjeKgnNZRVJp/oVBl24sr3Gbfwc/Qpj4OcWTQMsAEg==", 703 + "dependencies": { 704 + "@radix-ui/react-compose-refs": "1.1.1", 705 + "@radix-ui/react-use-layout-effect": "1.1.0" 706 + }, 707 + "peerDependencies": { 708 + "@types/react": "*", 709 + "@types/react-dom": "*", 710 + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", 711 + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" 712 + }, 713 + "peerDependenciesMeta": { 714 + "@types/react": { 715 + "optional": true 716 + }, 717 + "@types/react-dom": { 718 + "optional": true 719 + } 720 + } 721 + }, 722 + "node_modules/@radix-ui/react-scroll-area/node_modules/@radix-ui/react-primitive": { 723 + "version": "2.0.2", 724 + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.2.tgz", 725 + "integrity": "sha512-Ec/0d38EIuvDF+GZjcMU/Ze6MxntVJYO/fRlCPhCaVUyPY9WTalHJw54tp9sXeJo3tlShWpy41vQRgLRGOuz+w==", 726 + "dependencies": { 727 + "@radix-ui/react-slot": "1.1.2" 728 + }, 729 + "peerDependencies": { 730 + "@types/react": "*", 731 + "@types/react-dom": "*", 732 + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", 733 + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" 734 + }, 735 + "peerDependenciesMeta": { 736 + "@types/react": { 737 + "optional": true 738 + }, 739 + "@types/react-dom": { 740 + "optional": true 741 + } 742 + } 743 + }, 744 + "node_modules/@radix-ui/react-separator": { 745 + "version": "1.1.2", 746 + "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.1.2.tgz", 747 + "integrity": "sha512-oZfHcaAp2Y6KFBX6I5P1u7CQoy4lheCGiYj+pGFrHy8E/VNRb5E39TkTr3JrV520csPBTZjkuKFdEsjS5EUNKQ==", 748 + "dependencies": { 749 + "@radix-ui/react-primitive": "2.0.2" 750 + }, 751 + "peerDependencies": { 752 + "@types/react": "*", 753 + "@types/react-dom": "*", 754 + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", 755 + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" 756 + }, 757 + "peerDependenciesMeta": { 758 + "@types/react": { 759 + "optional": true 760 + }, 761 + "@types/react-dom": { 762 + "optional": true 763 + } 764 + } 765 + }, 766 + "node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-primitive": { 767 + "version": "2.0.2", 768 + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.2.tgz", 769 + "integrity": "sha512-Ec/0d38EIuvDF+GZjcMU/Ze6MxntVJYO/fRlCPhCaVUyPY9WTalHJw54tp9sXeJo3tlShWpy41vQRgLRGOuz+w==", 770 + "dependencies": { 771 + "@radix-ui/react-slot": "1.1.2" 772 + }, 773 + "peerDependencies": { 774 + "@types/react": "*", 775 + "@types/react-dom": "*", 776 + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", 777 + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" 778 + }, 779 + "peerDependenciesMeta": { 780 + "@types/react": { 781 + "optional": true 782 + }, 783 + "@types/react-dom": { 784 + "optional": true 785 + } 786 + } 787 + }, 995 788 "node_modules/@radix-ui/react-slot": { 996 789 "version": "1.1.2", 997 790 "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.2.tgz", ··· 1205 998 } 1206 999 } 1207 1000 }, 1208 - "node_modules/@rollup/rollup-android-arm-eabi": { 1209 - "version": "4.24.2", 1210 - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.2.tgz", 1211 - "integrity": "sha512-ufoveNTKDg9t/b7nqI3lwbCG/9IJMhADBNjjz/Jn6LxIZxD7T5L8l2uO/wD99945F1Oo8FvgbbZJRguyk/BdzA==", 1212 - "cpu": [ 1213 - "arm" 1214 - ], 1215 - "dev": true, 1216 - "optional": true, 1217 - "os": [ 1218 - "android" 1219 - ] 1220 - }, 1221 - "node_modules/@rollup/rollup-android-arm64": { 1222 - "version": "4.24.2", 1223 - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.2.tgz", 1224 - "integrity": "sha512-iZoYCiJz3Uek4NI0J06/ZxUgwAfNzqltK0MptPDO4OR0a88R4h0DSELMsflS6ibMCJ4PnLvq8f7O1d7WexUvIA==", 1225 - "cpu": [ 1226 - "arm64" 1227 - ], 1228 - "dev": true, 1229 - "optional": true, 1230 - "os": [ 1231 - "android" 1232 - ] 1233 - }, 1234 - "node_modules/@rollup/rollup-darwin-arm64": { 1235 - "version": "4.24.2", 1236 - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.2.tgz", 1237 - "integrity": "sha512-/UhrIxobHYCBfhi5paTkUDQ0w+jckjRZDZ1kcBL132WeHZQ6+S5v9jQPVGLVrLbNUebdIRpIt00lQ+4Z7ys4Rg==", 1238 - "cpu": [ 1239 - "arm64" 1240 - ], 1241 - "dev": true, 1242 - "optional": true, 1243 - "os": [ 1244 - "darwin" 1245 - ] 1246 - }, 1247 - "node_modules/@rollup/rollup-darwin-x64": { 1248 - "version": "4.24.2", 1249 - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.2.tgz", 1250 - "integrity": "sha512-1F/jrfhxJtWILusgx63WeTvGTwE4vmsT9+e/z7cZLKU8sBMddwqw3UV5ERfOV+H1FuRK3YREZ46J4Gy0aP3qDA==", 1251 - "cpu": [ 1252 - "x64" 1253 - ], 1254 - "dev": true, 1255 - "optional": true, 1256 - "os": [ 1257 - "darwin" 1258 - ] 1259 - }, 1260 - "node_modules/@rollup/rollup-freebsd-arm64": { 1261 - "version": "4.24.2", 1262 - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.24.2.tgz", 1263 - "integrity": "sha512-1YWOpFcGuC6iGAS4EI+o3BV2/6S0H+m9kFOIlyFtp4xIX5rjSnL3AwbTBxROX0c8yWtiWM7ZI6mEPTI7VkSpZw==", 1264 - "cpu": [ 1265 - "arm64" 1266 - ], 1267 - "dev": true, 1268 - "optional": true, 1269 - "os": [ 1270 - "freebsd" 1271 - ] 1272 - }, 1273 - "node_modules/@rollup/rollup-freebsd-x64": { 1274 - "version": "4.24.2", 1275 - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.24.2.tgz", 1276 - "integrity": "sha512-3qAqTewYrCdnOD9Gl9yvPoAoFAVmPJsBvleabvx4bnu1Kt6DrB2OALeRVag7BdWGWLhP1yooeMLEi6r2nYSOjg==", 1277 - "cpu": [ 1278 - "x64" 1279 - ], 1280 - "dev": true, 1281 - "optional": true, 1282 - "os": [ 1283 - "freebsd" 1284 - ] 1285 - }, 1286 - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { 1287 - "version": "4.24.2", 1288 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.2.tgz", 1289 - "integrity": "sha512-ArdGtPHjLqWkqQuoVQ6a5UC5ebdX8INPuJuJNWRe0RGa/YNhVvxeWmCTFQ7LdmNCSUzVZzxAvUznKaYx645Rig==", 1290 - "cpu": [ 1291 - "arm" 1292 - ], 1293 - "dev": true, 1294 - "optional": true, 1295 - "os": [ 1296 - "linux" 1297 - ] 1298 - }, 1299 - "node_modules/@rollup/rollup-linux-arm-musleabihf": { 1300 - "version": "4.24.2", 1301 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.2.tgz", 1302 - "integrity": "sha512-B6UHHeNnnih8xH6wRKB0mOcJGvjZTww1FV59HqJoTJ5da9LCG6R4SEBt6uPqzlawv1LoEXSS0d4fBlHNWl6iYw==", 1303 - "cpu": [ 1304 - "arm" 1305 - ], 1306 - "dev": true, 1307 - "optional": true, 1308 - "os": [ 1309 - "linux" 1310 - ] 1311 - }, 1312 - "node_modules/@rollup/rollup-linux-arm64-gnu": { 1313 - "version": "4.24.2", 1314 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.2.tgz", 1315 - "integrity": "sha512-kr3gqzczJjSAncwOS6i7fpb4dlqcvLidqrX5hpGBIM1wtt0QEVtf4wFaAwVv8QygFU8iWUMYEoJZWuWxyua4GQ==", 1316 - "cpu": [ 1317 - "arm64" 1318 - ], 1319 - "dev": true, 1320 - "optional": true, 1321 - "os": [ 1322 - "linux" 1323 - ] 1324 - }, 1325 - "node_modules/@rollup/rollup-linux-arm64-musl": { 1326 - "version": "4.24.2", 1327 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.2.tgz", 1328 - "integrity": "sha512-TDdHLKCWgPuq9vQcmyLrhg/bgbOvIQ8rtWQK7MRxJ9nvaxKx38NvY7/Lo6cYuEnNHqf6rMqnivOIPIQt6H2AoA==", 1329 - "cpu": [ 1330 - "arm64" 1331 - ], 1332 - "dev": true, 1333 - "optional": true, 1334 - "os": [ 1335 - "linux" 1336 - ] 1337 - }, 1338 - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { 1339 - "version": "4.24.2", 1340 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.2.tgz", 1341 - "integrity": "sha512-xv9vS648T3X4AxFFZGWeB5Dou8ilsv4VVqJ0+loOIgDO20zIhYfDLkk5xoQiej2RiSQkld9ijF/fhLeonrz2mw==", 1342 - "cpu": [ 1343 - "ppc64" 1344 - ], 1345 - "dev": true, 1346 - "optional": true, 1347 - "os": [ 1348 - "linux" 1349 - ] 1350 - }, 1351 - "node_modules/@rollup/rollup-linux-riscv64-gnu": { 1352 - "version": "4.24.2", 1353 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.2.tgz", 1354 - "integrity": "sha512-tbtXwnofRoTt223WUZYiUnbxhGAOVul/3StZ947U4A5NNjnQJV5irKMm76G0LGItWs6y+SCjUn/Q0WaMLkEskg==", 1355 - "cpu": [ 1356 - "riscv64" 1357 - ], 1358 - "dev": true, 1359 - "optional": true, 1360 - "os": [ 1361 - "linux" 1362 - ] 1363 - }, 1364 - "node_modules/@rollup/rollup-linux-s390x-gnu": { 1365 - "version": "4.24.2", 1366 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.2.tgz", 1367 - "integrity": "sha512-gc97UebApwdsSNT3q79glOSPdfwgwj5ELuiyuiMY3pEWMxeVqLGKfpDFoum4ujivzxn6veUPzkGuSYoh5deQ2Q==", 1368 - "cpu": [ 1369 - "s390x" 1370 - ], 1371 - "dev": true, 1372 - "optional": true, 1373 - "os": [ 1374 - "linux" 1375 - ] 1376 - }, 1377 1001 "node_modules/@rollup/rollup-linux-x64-gnu": { 1378 1002 "version": "4.24.2", 1379 1003 "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.2.tgz", ··· 1400 1024 "linux" 1401 1025 ] 1402 1026 }, 1403 - "node_modules/@rollup/rollup-win32-arm64-msvc": { 1404 - "version": "4.24.2", 1405 - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.2.tgz", 1406 - "integrity": "sha512-A+JAs4+EhsTjnPQvo9XY/DC0ztaws3vfqzrMNMKlwQXuniBKOIIvAAI8M0fBYiTCxQnElYu7mLk7JrhlQ+HeOw==", 1407 - "cpu": [ 1408 - "arm64" 1409 - ], 1410 - "dev": true, 1411 - "optional": true, 1412 - "os": [ 1413 - "win32" 1414 - ] 1415 - }, 1416 - "node_modules/@rollup/rollup-win32-ia32-msvc": { 1417 - "version": "4.24.2", 1418 - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.2.tgz", 1419 - "integrity": "sha512-ZhcrakbqA1SCiJRMKSU64AZcYzlZ/9M5LaYil9QWxx9vLnkQ9Vnkve17Qn4SjlipqIIBFKjBES6Zxhnvh0EAEw==", 1420 - "cpu": [ 1421 - "ia32" 1422 - ], 1423 - "dev": true, 1424 - "optional": true, 1425 - "os": [ 1426 - "win32" 1427 - ] 1428 - }, 1429 - "node_modules/@rollup/rollup-win32-x64-msvc": { 1430 - "version": "4.24.2", 1431 - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.2.tgz", 1432 - "integrity": "sha512-2mLH46K1u3r6uwc95hU+OR9q/ggYMpnS7pSp83Ece1HUQgF9Nh/QwTK5rcgbFnV9j+08yBrU5sA/P0RK2MSBNA==", 1433 - "cpu": [ 1434 - "x64" 1435 - ], 1436 - "dev": true, 1437 - "optional": true, 1438 - "os": [ 1439 - "win32" 1440 - ] 1441 - }, 1442 1027 "node_modules/@swc/core": { 1443 1028 "version": "1.7.40", 1444 1029 "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.7.40.tgz", ··· 1477 1062 } 1478 1063 } 1479 1064 }, 1480 - "node_modules/@swc/core-darwin-arm64": { 1481 - "version": "1.7.40", 1482 - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.40.tgz", 1483 - "integrity": "sha512-LRRrCiRJLb1kpQtxMNNsr5W82Inr0dy5Imho+4HQzVx/Ismi0qX4hQBgzJAnyOBNLK1+OBVb/912UVhKXppdfQ==", 1484 - "cpu": [ 1485 - "arm64" 1486 - ], 1487 - "dev": true, 1488 - "optional": true, 1489 - "os": [ 1490 - "darwin" 1491 - ], 1492 - "engines": { 1493 - "node": ">=10" 1494 - } 1495 - }, 1496 - "node_modules/@swc/core-darwin-x64": { 1497 - "version": "1.7.40", 1498 - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.7.40.tgz", 1499 - "integrity": "sha512-Lpl0XK/4fLzS5jsK48opUuGXrqJXwqJckYYPwyGbCfCXm4MsBe+7dX2hq/Kc4YMY25+NeTmzAXhla8TT4WYD/g==", 1500 - "cpu": [ 1501 - "x64" 1502 - ], 1503 - "dev": true, 1504 - "optional": true, 1505 - "os": [ 1506 - "darwin" 1507 - ], 1508 - "engines": { 1509 - "node": ">=10" 1510 - } 1511 - }, 1512 - "node_modules/@swc/core-linux-arm-gnueabihf": { 1513 - "version": "1.7.40", 1514 - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.7.40.tgz", 1515 - "integrity": "sha512-4bEvvjptpoc5BRPr/R419h6fXTEuub+frpxxlxBOEKxgXjAF/S3xdxyPijUAakmW/xXBF0u7OC4KYI+38yQp6g==", 1516 - "cpu": [ 1517 - "arm" 1518 - ], 1519 - "dev": true, 1520 - "optional": true, 1521 - "os": [ 1522 - "linux" 1523 - ], 1524 - "engines": { 1525 - "node": ">=10" 1526 - } 1527 - }, 1528 - "node_modules/@swc/core-linux-arm64-gnu": { 1529 - "version": "1.7.40", 1530 - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.7.40.tgz", 1531 - "integrity": "sha512-v2fBlHJ/6Ovz0L2xFAI9TRiKyl9DTdx139PuAHD9gyzp16Utl/W0MPd4t2cYdkI6hPXE9PsJCSzMOrduh+YoDg==", 1532 - "cpu": [ 1533 - "arm64" 1534 - ], 1535 - "dev": true, 1536 - "optional": true, 1537 - "os": [ 1538 - "linux" 1539 - ], 1540 - "engines": { 1541 - "node": ">=10" 1542 - } 1543 - }, 1544 - "node_modules/@swc/core-linux-arm64-musl": { 1545 - "version": "1.7.40", 1546 - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.7.40.tgz", 1547 - "integrity": "sha512-uMkduQuU4LFVkW6txv8AVArT8GjJVJ5IHoWloXaUBMT447iE8NALmpePdZWhMyj6KV7j0y23CM5rzV/I2eNGLg==", 1548 - "cpu": [ 1549 - "arm64" 1550 - ], 1551 - "dev": true, 1552 - "optional": true, 1553 - "os": [ 1554 - "linux" 1555 - ], 1556 - "engines": { 1557 - "node": ">=10" 1558 - } 1559 - }, 1560 1065 "node_modules/@swc/core-linux-x64-gnu": { 1561 1066 "version": "1.7.40", 1562 1067 "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.40.tgz", ··· 1584 1089 "optional": true, 1585 1090 "os": [ 1586 1091 "linux" 1587 - ], 1588 - "engines": { 1589 - "node": ">=10" 1590 - } 1591 - }, 1592 - "node_modules/@swc/core-win32-arm64-msvc": { 1593 - "version": "1.7.40", 1594 - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.7.40.tgz", 1595 - "integrity": "sha512-//ovXdD9GsTmhPmXJlXnIbRQkeuL6PSrYSr7uCMNcclrUdJG0YkO0GMM2afUKYbdJcunylDDWsSS8PFWn0QxmA==", 1596 - "cpu": [ 1597 - "arm64" 1598 - ], 1599 - "dev": true, 1600 - "optional": true, 1601 - "os": [ 1602 - "win32" 1603 - ], 1604 - "engines": { 1605 - "node": ">=10" 1606 - } 1607 - }, 1608 - "node_modules/@swc/core-win32-ia32-msvc": { 1609 - "version": "1.7.40", 1610 - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.7.40.tgz", 1611 - "integrity": "sha512-iD/1auVhHGlhWAPrWmfRWL3w4AvXIWGVXZiSA109/xnRIPiHKb/HqqTp/qB94E/ZHMPRgLKkLTNwamlkueUs8g==", 1612 - "cpu": [ 1613 - "ia32" 1614 - ], 1615 - "dev": true, 1616 - "optional": true, 1617 - "os": [ 1618 - "win32" 1619 - ], 1620 - "engines": { 1621 - "node": ">=10" 1622 - } 1623 - }, 1624 - "node_modules/@swc/core-win32-x64-msvc": { 1625 - "version": "1.7.40", 1626 - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.7.40.tgz", 1627 - "integrity": "sha512-ZlFAV1WFPhhWQ/8esiygmetkb905XIcMMtHRRG0FBGCllO+HVL5nikUaLDgTClz1onmEY9sMXUFQeoPtvliV+w==", 1628 - "cpu": [ 1629 - "x64" 1630 - ], 1631 - "dev": true, 1632 - "optional": true, 1633 - "os": [ 1634 - "win32" 1635 1092 ], 1636 1093 "engines": { 1637 1094 "node": ">=10" ··· 2841 2298 "funding": { 2842 2299 "type": "patreon", 2843 2300 "url": "https://github.com/sponsors/rawify" 2844 - } 2845 - }, 2846 - "node_modules/fsevents": { 2847 - "version": "2.3.3", 2848 - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 2849 - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 2850 - "hasInstallScript": true, 2851 - "optional": true, 2852 - "os": [ 2853 - "darwin" 2854 - ], 2855 - "engines": { 2856 - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 2857 2301 } 2858 2302 }, 2859 2303 "node_modules/function-bind": {
+2
mast-react-vite/package.json
··· 12 12 "dependencies": { 13 13 "@radix-ui/react-checkbox": "^1.1.2", 14 14 "@radix-ui/react-icons": "^1.3.0", 15 + "@radix-ui/react-scroll-area": "^1.2.3", 16 + "@radix-ui/react-separator": "^1.1.2", 15 17 "@radix-ui/react-slot": "^1.1.2", 16 18 "@radix-ui/react-toggle": "^1.1.2", 17 19 "@radix-ui/react-toggle-group": "^1.1.2",
+31 -4
mast-react-vite/src/App.tsx
··· 194 194 } 195 195 196 196 return ( 197 - <> 198 - <section className="pt-8 container"> 197 + <> 198 + <div className="hidden md:flex flex-col w-full"> 199 + <section className="flex-1 container"> 199 200 <Input type="text" 200 201 className="bg-background" 201 202 value={newText} ··· 204 205 onChange={(e) => setNewText(e.target.value)} 205 206 onSubmit={executeCommand} 206 207 /> 207 - <div className="p-2" /> 208 + <div className="h-2" /> 209 + <div className="flex-1 w-full"> 208 210 <DataTable 209 211 columns={columns} 210 212 data={todos} ··· 213 215 setNewText={setNewText} 214 216 newText={newText} 215 217 /> 218 + </div> 216 219 </section> 217 - </> 220 + </div> 221 + 222 + {/* Mobile view layout - shown only on mobile */} 223 + <div className="md:hidden flex left-0 w-full h-full flex flex-col items-center pb-2"> 224 + <Input type="text" 225 + className="bg-background" 226 + value={newText} 227 + onKeyUp={parseTodos} 228 + onActionChange={handleActionChange} 229 + onChange={(e) => setNewText(e.target.value)} 230 + onSubmit={executeCommand} 231 + /> 232 + <div className="h-2" /> 233 + <div className="flex-1 w-full h-full"> 234 + <DataTable 235 + columns={columns} 236 + data={todos} 237 + rowSelection={rowSelection} 238 + setRowSelection={setRowSelection} 239 + setNewText={setNewText} 240 + newText={newText} 241 + /> 242 + </div> 243 + </div> 244 + </> 218 245 ) 219 246 } 220 247
+43 -52
mast-react-vite/src/components/ui/data-table.tsx
··· 1 1 "use client" 2 2 3 3 import { useState } from "react" 4 + import { ScrollArea } from "@/components/ui/scroll-area" 5 + import { Task } from "@/components/ui/task" 4 6 5 7 import { 6 8 ColumnDef, ··· 55 57 }) 56 58 57 59 return ( 58 - <div className="w-full overflow-x-auto"> 59 - <Table className="min-w-full table-fixed md:table-auto"> 60 - <TableHeader className="bg-accent flex flex-row md:table-header-group"> 61 - {table.getHeaderGroups().map((headerGroup) => ( 62 - <TableRow key={headerGroup.id} className="flex flex-row flex-wrap md:table-row"> 63 - {headerGroup.headers.map((header) => ( 64 - <TableHead 65 - key={header.id} 66 - className="relative text-foreground flex-1 min-w-[20px] flex items-center px-4 py-2 md:table-cell" 67 - style={{ 68 - width: header.getSize(), 69 - }} 70 - > 71 - {header.isPlaceholder 72 - ? null 73 - : flexRender( 74 - header.column.columnDef.header, 75 - header.getContext() 76 - )} 77 - </TableHead> 78 - ))} 79 - </TableRow> 80 - ))} 81 - </TableHeader> 82 - <TableBody className="flex flex-col md:table-row-group"> 83 - {table.getRowModel().rows?.length ? ( 84 - table.getRowModel().rows.map((row) => ( 85 - <TableRow 86 - key={row.id} 87 - data-state={row.getIsSelected() && "selected"} 88 - className="flex flex-row flex-wrap md:table-row" 89 - > 90 - {row.getVisibleCells().map((cell) => ( 91 - <TableCell 92 - key={cell.id} 93 - className="flex-1 min-w-[20px] flex items-center px-4 py-2 md:table-cell" 94 - > 95 - {flexRender(cell.column.columnDef.cell, cell.getContext())} 96 - </TableCell> 97 - ))} 98 - </TableRow> 99 - )) 100 - ) : ( 101 - <TableRow> 102 - <TableCell colSpan={columns.length} className="h-24 text-center"> 103 - No results. 104 - </TableCell> 105 - </TableRow> 106 - )} 107 - </TableBody> 108 - </Table> 109 - </div> 60 + 61 + <> 62 + <div className="hidden md:flex flex-col w-full"> 63 + <ScrollArea className="h-[calc(100vh-12rem)] rounded-md border"> 64 + {table.getRowModel().rows?.length ? ( 65 + table.getRowModel().rows.map((row) => ( 66 + <Task 67 + key={row.id} 68 + selected={row.getIsSelected()} 69 + onSelect={() => row.toggleSelected()} 70 + data={row.original} 71 + /> 72 + )) 73 + ) : ( 74 + <div className="text-center py-4 text-muted-foreground"> 75 + No results. 76 + </div> 77 + )} 78 + </ScrollArea> 79 + </div> 80 + 81 + {/* Mobile view layout - shown only on mobile */} 82 + <div className="md:hidden"> 83 + <ScrollArea className="h-[calc(100vh)] rounded-md border"> 84 + {table.getRowModel().rows?.length ? ( 85 + table.getRowModel().rows.map((row) => ( 86 + <Task 87 + key={row.id} 88 + selected={row.getIsSelected()} 89 + onSelect={() => row.toggleSelected()} 90 + data={row.original} 91 + /> 92 + )) 93 + ) : ( 94 + <div className="text-center py-4 text-muted-foreground"> 95 + No results. 96 + </div> 97 + )} 98 + </ScrollArea> 99 + </div> 100 + </> 110 101 ) 111 102 112 103 }
+1 -1
mast-react-vite/src/components/ui/input.tsx
··· 111 111 onValueChange={handleToggleChange} 112 112 defaultValue="add" 113 113 className={cn( 114 - "h-11 border rounded-t-md border-b-0 bg-transparent text-sm cursor-default pt-1/2 pl-1 pr-1 pb-1/2", 114 + "h-11 border rounded-t-md border-b-0 bg-background text-sm cursor-default pt-1/2 pl-1 pr-1 pb-1/2", 115 115 "shadow-sm transition-colors duration-0 text-center appearance-none group-focus-within:border-ring", 116 116 "rounded-t-md rounded-b-none", 117 117 "focus:border-ring"
+46
mast-react-vite/src/components/ui/scroll-area.tsx
··· 1 + import * as React from "react" 2 + import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area" 3 + 4 + import { cn } from "@/lib/utils" 5 + 6 + const ScrollArea = React.forwardRef< 7 + React.ElementRef<typeof ScrollAreaPrimitive.Root>, 8 + React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root> 9 + >(({ className, children, ...props }, ref) => ( 10 + <ScrollAreaPrimitive.Root 11 + ref={ref} 12 + className={cn("relative overflow-hidden", className)} 13 + {...props} 14 + > 15 + <ScrollAreaPrimitive.Viewport className="h-full w-full rounded-[inherit]"> 16 + {children} 17 + </ScrollAreaPrimitive.Viewport> 18 + <ScrollBar /> 19 + <ScrollAreaPrimitive.Corner /> 20 + </ScrollAreaPrimitive.Root> 21 + )) 22 + ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName 23 + 24 + const ScrollBar = React.forwardRef< 25 + React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>, 26 + React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar> 27 + >(({ className, orientation = "vertical", ...props }, ref) => ( 28 + <ScrollAreaPrimitive.ScrollAreaScrollbar 29 + ref={ref} 30 + orientation={orientation} 31 + className={cn( 32 + "flex touch-none select-none transition-colors", 33 + orientation === "vertical" && 34 + "h-full w-2.5 border-l border-l-transparent p-[1px]", 35 + orientation === "horizontal" && 36 + "h-2.5 flex-col border-t border-t-transparent p-[1px]", 37 + className 38 + )} 39 + {...props} 40 + > 41 + <ScrollAreaPrimitive.ScrollAreaThumb className="relative flex-1 rounded-full bg-border" /> 42 + </ScrollAreaPrimitive.ScrollAreaScrollbar> 43 + )) 44 + ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName 45 + 46 + export { ScrollArea, ScrollBar }
+29
mast-react-vite/src/components/ui/separator.tsx
··· 1 + import * as React from "react" 2 + import * as SeparatorPrimitive from "@radix-ui/react-separator" 3 + 4 + import { cn } from "@/lib/utils" 5 + 6 + const Separator = React.forwardRef< 7 + React.ElementRef<typeof SeparatorPrimitive.Root>, 8 + React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root> 9 + >( 10 + ( 11 + { className, orientation = "horizontal", decorative = true, ...props }, 12 + ref 13 + ) => ( 14 + <SeparatorPrimitive.Root 15 + ref={ref} 16 + decorative={decorative} 17 + orientation={orientation} 18 + className={cn( 19 + "shrink-0 bg-border", 20 + orientation === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]", 21 + className 22 + )} 23 + {...props} 24 + /> 25 + ) 26 + ) 27 + Separator.displayName = SeparatorPrimitive.Root.displayName 28 + 29 + export { Separator }
+52
mast-react-vite/src/components/ui/task.tsx
··· 1 + import { Separator } from "@/components/ui/separator" 2 + 3 + interface TaskProps { 4 + selected?: boolean 5 + onSelect?: () => void 6 + data: any 7 + } 8 + 9 + export function Task({ selected, onSelect, data }: TaskProps) { 10 + const tagList = JSON.parse(data.tags).join(", ") 11 + 12 + return ( 13 + <> 14 + <div 15 + className={`p-4 rounded-lg ${ 16 + selected ? 'bg-muted border-primary' : 'bg-card' 17 + } hover:bg-muted/50 transition-colors`} 18 + onClick={onSelect} 19 + > 20 + <div className="flex items-start gap-4"> 21 + {/* Description - always shown */} 22 + <div className="flex-1 min-w-0"> 23 + <p className="text-sm font-medium leading-none truncate min-h-6"> 24 + {data.description} 25 + </p> 26 + 27 + {/* Optional fields */} 28 + <div className="mt-1 flex flex-wrap gap-2"> 29 + {data.project && ( 30 + <span className="text-xs text-muted-foreground"> 31 + Project: {data.project} 32 + </span> 33 + )} 34 + {tagList.length > 0 && ( 35 + <span className="text-xs text-muted-foreground"> 36 + tags: {tagList} 37 + </span> 38 + )} 39 + {data.dueDate && ( 40 + <span className="text-xs text-muted-foreground"> 41 + Due: {data.dueDate} 42 + </span> 43 + )} 44 + </div> 45 + </div> 46 + </div> 47 + </div> 48 + <Separator/> 49 + </> 50 + ) 51 + } 52 +
+59
mast-react-vite/src/components/ui/toggle-group.tsx
··· 1 + import * as React from "react" 2 + import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group" 3 + import { type VariantProps } from "class-variance-authority" 4 + 5 + import { cn } from "@/lib/utils" 6 + import { toggleVariants } from "@/components/ui/toggle" 7 + 8 + const ToggleGroupContext = React.createContext< 9 + VariantProps<typeof toggleVariants> 10 + >({ 11 + size: "default", 12 + variant: "default", 13 + }) 14 + 15 + const ToggleGroup = React.forwardRef< 16 + React.ElementRef<typeof ToggleGroupPrimitive.Root>, 17 + React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root> & 18 + VariantProps<typeof toggleVariants> 19 + >(({ className, variant, size, children, ...props }, ref) => ( 20 + <ToggleGroupPrimitive.Root 21 + ref={ref} 22 + className={cn("flex items-center justify-center gap-1", className)} 23 + {...props} 24 + > 25 + <ToggleGroupContext.Provider value={{ variant, size }}> 26 + {children} 27 + </ToggleGroupContext.Provider> 28 + </ToggleGroupPrimitive.Root> 29 + )) 30 + 31 + ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName 32 + 33 + const ToggleGroupItem = React.forwardRef< 34 + React.ElementRef<typeof ToggleGroupPrimitive.Item>, 35 + React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item> & 36 + VariantProps<typeof toggleVariants> 37 + >(({ className, children, variant, size, ...props }, ref) => { 38 + const context = React.useContext(ToggleGroupContext) 39 + 40 + return ( 41 + <ToggleGroupPrimitive.Item 42 + ref={ref} 43 + className={cn( 44 + toggleVariants({ 45 + variant: context.variant || variant, 46 + size: context.size || size, 47 + }), 48 + className 49 + )} 50 + {...props} 51 + > 52 + {children} 53 + </ToggleGroupPrimitive.Item> 54 + ) 55 + }) 56 + 57 + ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName 58 + 59 + export { ToggleGroup, ToggleGroupItem }
+45
mast-react-vite/src/components/ui/toggle.tsx
··· 1 + "use client" 2 + 3 + import * as React from "react" 4 + import * as TogglePrimitive from "@radix-ui/react-toggle" 5 + import { cva, type VariantProps } from "class-variance-authority" 6 + 7 + import { cn } from "@/lib/utils" 8 + 9 + const toggleVariants = cva( 10 + "inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", 11 + { 12 + variants: { 13 + variant: { 14 + default: "bg-transparent", 15 + outline: 16 + "border border-input bg-transparent shadow-sm hover:bg-accent hover:text-accent-foreground", 17 + }, 18 + size: { 19 + default: "h-9 px-2 min-w-9", 20 + sm: "h-8 px-1.5 min-w-8", 21 + lg: "h-10 px-2.5 min-w-10", 22 + }, 23 + }, 24 + defaultVariants: { 25 + variant: "default", 26 + size: "default", 27 + }, 28 + } 29 + ) 30 + 31 + const Toggle = React.forwardRef< 32 + React.ElementRef<typeof TogglePrimitive.Root>, 33 + React.ComponentPropsWithoutRef<typeof TogglePrimitive.Root> & 34 + VariantProps<typeof toggleVariants> 35 + >(({ className, variant, size, ...props }, ref) => ( 36 + <TogglePrimitive.Root 37 + ref={ref} 38 + className={cn(toggleVariants({ variant, size, className }))} 39 + {...props} 40 + /> 41 + )) 42 + 43 + Toggle.displayName = TogglePrimitive.Root.displayName 44 + 45 + export { Toggle, toggleVariants }
-85
package-lock.json
··· 1 - { 2 - "name": "mast", 3 - "lockfileVersion": 3, 4 - "requires": true, 5 - "packages": { 6 - "": { 7 - "dependencies": { 8 - "peggy": "^4.0.3" 9 - } 10 - }, 11 - "node_modules/@peggyjs/from-mem": { 12 - "version": "1.3.0", 13 - "resolved": "https://registry.npmjs.org/@peggyjs/from-mem/-/from-mem-1.3.0.tgz", 14 - "integrity": "sha512-kzGoIRJjkg3KuGI4bopz9UvF3KguzfxalHRDEIdqEZUe45xezsQ6cx30e0RKuxPUexojQRBfu89Okn7f4/QXsw==", 15 - "dependencies": { 16 - "semver": "7.6.0" 17 - }, 18 - "engines": { 19 - "node": ">=18" 20 - } 21 - }, 22 - "node_modules/commander": { 23 - "version": "12.1.0", 24 - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", 25 - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", 26 - "engines": { 27 - "node": ">=18" 28 - } 29 - }, 30 - "node_modules/lru-cache": { 31 - "version": "6.0.0", 32 - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 33 - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 34 - "dependencies": { 35 - "yallist": "^4.0.0" 36 - }, 37 - "engines": { 38 - "node": ">=10" 39 - } 40 - }, 41 - "node_modules/peggy": { 42 - "version": "4.0.3", 43 - "resolved": "https://registry.npmjs.org/peggy/-/peggy-4.0.3.tgz", 44 - "integrity": "sha512-v7/Pt6kGYsfXsCrfb52q7/yg5jaAwiVaUMAPLPvy4DJJU6Wwr72t6nDIqIDkGfzd1B4zeVuTnQT0RGeOhe/uSA==", 45 - "dependencies": { 46 - "@peggyjs/from-mem": "1.3.0", 47 - "commander": "^12.1.0", 48 - "source-map-generator": "0.8.0" 49 - }, 50 - "bin": { 51 - "peggy": "bin/peggy.js" 52 - }, 53 - "engines": { 54 - "node": ">=18" 55 - } 56 - }, 57 - "node_modules/semver": { 58 - "version": "7.6.0", 59 - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", 60 - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", 61 - "dependencies": { 62 - "lru-cache": "^6.0.0" 63 - }, 64 - "bin": { 65 - "semver": "bin/semver.js" 66 - }, 67 - "engines": { 68 - "node": ">=10" 69 - } 70 - }, 71 - "node_modules/source-map-generator": { 72 - "version": "0.8.0", 73 - "resolved": "https://registry.npmjs.org/source-map-generator/-/source-map-generator-0.8.0.tgz", 74 - "integrity": "sha512-psgxdGMwl5MZM9S3FWee4EgsEaIjahYV5AzGnwUvPhWeITz/j6rKpysQHlQ4USdxvINlb8lKfWGIXwfkrgtqkA==", 75 - "engines": { 76 - "node": ">= 10" 77 - } 78 - }, 79 - "node_modules/yallist": { 80 - "version": "4.0.0", 81 - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 82 - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 83 - } 84 - } 85 - }
+10 -5
scripts/deploy.sh
··· 1 1 #!/usr/bin/env bash 2 2 3 - PROJECT_NAME=mast-react-vite 4 - nix build .#react-server 5 - skopeo --insecure-policy --debug copy docker-archive:"./result" "docker://registry.fly.io/$PROJECT_NAME:latest" --dest-creds x:"$(flyctl auth token)" --format v2s2 6 - flyctl deploy -i "registry.fly.io/$PROJECT_NAME:latest" --remote-only 7 - 3 + # nix build 4 + # (doesne't work) 5 + # PROJECT_NAME=mast-react-vite 6 + # nix build .#react-server 7 + # skopeo --insecure-policy --debug copy docker-archive:"./result" "docker://registry.fly.io/$PROJECT_NAME:latest" --dest-creds x:"$(flyctl auth token)" --format v2s2 8 + # flyctl deploy -i "registry.fly.io/$PROJECT_NAME:latest" --remote-only 9 + 10 + # Dockerfile build 11 + # call from root directory 12 + fly deploy